
OK, let me cut the analogy here and try to provide some (hopefully constructive) criticism and point out some cool Liferay features this book explains. In this order ;)
As you may have already guessed, I found the book kind of hard to read. I've read almost all Liferay books out there but this one was the strangest in terms of language, chapter organization, consistency of knowledge, ...
public ClassLoaderProxy(Object obj, ClassLoader classLoader){}
// see details in ClassLoaderProxy.java
private String _className;
As shown in the preceding code, the method invoke uses a class named MethodHandler, which implements the interface Serializable.
// see details in ClassLoaderProxy.javaWhen the staging is disabled, either local live or remote live, the portal will remove all the properties from the field typeSettings of the table Group_. How come? The following code is a snippet from the method disableStaging of the class StagingImpl:
GroupLocalServiceUtil.updateGroup(liveGroup.getGroupId(), typeSettingsProperties.toString())
ServiceBuilder uses to generate files and methods (described in the first chapter) this table provides nothing but names. Even the most valuable column "description" is not able to defend the usage of tables as most of the time it contains the value of the first column having capital letters replaced by space and appropriate lowercase letter. Like this:| object name | ... other columns ... | description |
| PortalCache | ... | Portal cache |
| PortalCacheManager | ... | Portal cache manager |
| SingleVMPool | ... | Simple VM pool |
Now, I understand, all of the above may sound as petty malices. However most of them can be fixed in the next edition and that is the main reason to point them out. What is hard to fix however (at least not without rewriting the whole book) is the fact that the book, in my opinion, does not keep the promise it makes in the first chapter
This book is going to show you how to develop portal systems via a real example – knowledge base management.
This statement empowered by (page and a half long) list of requirements made me think, I was going to be walked through the process of building my own knowledge base solution. I mean starting from scratch and then adding features step by step by employing different APIs, tools, concepts, etc.
Unfortunately the approach turned out to be a completely different. The chapters and sections are merely informing the reader that there is something in the portal that can be used (one can guess how it's supposed to help fulfill a particular requirement). For example let me show you how scheduling is described in "Scheduling and messaging" chapter :
scheduler.enabled and scheduler.job.name.max.length propertiesThat's it. Not a single word of how to use it or build your own schedulers. Not a single usage example. Not even an information about how this relates to the knowledge base management system we are building. Unfortunately many sections follow this pattern and some (like "Mobile device detectors" or "Securing users' information" for example) contain even less information.
Despite of the criticism above, one can still learn a lot from this book. I've been working with Liferay for a several years and still was able to learn a few new things. Assuming you're a big boy/girl who does not need to be hand-holded and you don't mind digging into 3rd parties source codes to explore things by yourself - you may find this book a pretty good reference. In fact you may discover Liferay has some features you never thought you'll find in a portal. So let me point out some of the things that may make this book worth buying :
Of course this is by far not the complete list. It's just an attempt to extract the topics which can draw the attention of an average Liferay developer. But the truth is, unless you are a "Liferay Legend" (if you use Liferay forums you know what I mean) you'll probably learn something new from this book. And for those of you who started working with Liferay not so long ago, there may be even some big surprises waiting around the corner.
As usual, whether the book is good or bad you'll have to decide by yourself. I was just trying to get you prepared for what is inside. Hopefully you can adjust your expectations to avoid disappointments. Also, please note, this review is subjective and influenced by what I already know about Liferay and what is my vision of how a book should look like. So before you make any decision, please read the sample chapter and look for other opinions.