Instead of using SAX directly, Jetspeed uses Castor to parse out our XML. This
has the benefit of not having to updated Java source code evertime we change our
XML specification. This isn't a perfect situation. The Castor generated code is
not standardized and allows developers to have access to information that
isn't necessary (IE APIs for serializing an object to XML).
As of Jetspeed 1.2, all Castor APIs are in dedicated packages off of
org.apache.jetspeed.xml.api. This code should never be updated. There are two
packages dedicated to having peer classes. org.apache.jetspeed.registry.peer and
org.apache.jetspeed.psml.peer. Each of these packages was generated from XJay
(http://xjay.sourceforge.net/) and are very simple Java classes (the prototypes
for these objects are generated with XML Schema).
Due to the fact that the jetspeed-config and psml XML Schemas share similar
structure, some object within Jetspeed have duplicate name. Ex:
org.apache.jetspeed.registry.peer.PortletEntry and
org.apache.jetspeed.psml.peer.PortletEntry. It is crucial that you don't
accidentally import from both packages at the same time. This is a necessary
evil due to the fact that each object/xml element shares a similar structure.
It is important to note that each is necessary to constrain the data. If anyone
has an alternative recommendation on how to avoid this duplication a PROPOSAL
would be welcome.