A little more than an year ago I started to work on a project that had as a goal the building of a portal. The client is/was a Canadian mutual fund company that needed a consistent way of accessing the information. Being an occasional Avalon committer and a Cocoon lurker I have "obviously" chosen these technologies to help me build this portal. The client ( http://www.twcgroup.ca/ ) was aware of the fact that all of the libraries, frameworks, and tools were coming from the open source community, so it expressed it's willingness to release to code back to the open source community. You can find the source code of the entire project at http://sourceforge.net/projects/webtop/ . I put the source code there with the intention of making it public first, but to move out the libraries (located in sub-projects) back to Cocoon and Avalon projects as components. Some of the features that the portal implements are: - RSS 2.0, 1.0, 0.9x, XHTML 1.0, OCS 0.5 aggregation formats - LDAP back end for storing user profiles - CSS skins - RDF/OCS 0.5 content directory
There are a few libraries I had to create, either because I couldn't find what I needed or the implementations were not satisfactory. You can find all the libraries in "webtop/components" directory of the project:
- contextmanager : service api. manages JNDI contexts (similar to a JDBC connection pool). - diagrama : service api for accessing, creating, updating and removing objects located in a graph. there is one implementation for JNDI, but you can have implementations such as JDBC, Castor, Hybernate.... - marshaller : service api for marshalling and unmarshalling of JavaBeans to XML and back using SAX. Castor is used for the default implementation. - metatropeas : utility for transforming JavaBeans to directory entries and back. JNDI is used for the default implementation. - steppingstone : workflow service api. finite state machine implementation. - epoxy : cocoon transformer. tag library for XHTML-GUI generation. - validator : validation service api. Schematron implementation. it has the advantage of detailed massages for invalid XML documents. - vfs-block : cocoon generator. generates XML based on the content of a directory, similar to DirectoryGenerator, but for a multitude of protocols. - javamail-block: cocoon generator. generates XML when connected to POP3, IMAP, NNTP stores. - security-block : cocoon transformer. blocks content based on the roles the user is in. unlike RoleFilter transformer it uses the envelope pattern (not attributes).
I could talk a lot more about all this, but for now I'm waiting for your comments.
Mircea