PubMan Architectural Changes

ESciDoc

=Architectural Changes for PubMan R3=

Changes in PubMan Presentation Module
The following changes were performed to enable sustainable, easy and state-of-the-art development of the user interface.

Elimination of Sun NetBeans Custom Components
All uses of components based on Sun’s extension component suite (Sun Rave) for the NetBeans IDE were removed and replaced by standard JSF components where possible. The following components currently used by the UI do not have a representation in the standard JSF tag library: Currently, Julia Kurt is researching on a suitable solution. This may either by a JSF extension (RichFaces, IceFaces, Tomahawk, …) or a native AJAX framework (Dojo, …) or a combination of both.
 * File upload (for the binary publication content)
 * Tree (for displaying and selecting organizational units)
 * List (for item lists incl. sorting, paging, …)

Upgrade from Sun JSF RI 1.1 to 1.2 (+ JSP 2.1 + Java Servlet 2.5)
The actual JSR-127 specification is used. The used implementation is Sun's RI. Switching to other implementations (like MyFaces) should be possible (but is not yet tested). The main changes and new features are
 * Back button and multi-page application bugs are fixed
 * Changed (el) expression handling
 * Increased performance

Replacement of all Java Code-based UI Custom Components
To enhance the maintainability of the application, all custom UI components, i.e. all Java classes implementing javax.faces.component.UIComponent, are replaced by JSPF pages using standard JSF capabilities like data table display. Exceptions:
 * Item lists: Should be replaced soon by third-party extension component (see above)
 * View Item Page: Still to be replaced
 * Breadcrumb navigation

Code Refactoring
The Java code was refactored in respect of
 * Avoidance of redundancies, modularization of common functionalities
 * Avoidance of using discarded classes and methods
 * Adaption to eSciDoc coding standards
 * Adaption to JSF patterns (were applicable)
 * Restructuring of Beans

(Optional) Upgrade from JBoss 4.0.5 to 4.2.0
Latest development was made on JBoss 4.2.0. There is no striking argument to use this version but to stay up-to-date technologically (see here for an overview on the changes). The aim should be a PubMan release that runs on both versions.

Replacement of proprietary SMC tools with Maven2
The following steps are done to replace and enhance the building enviroment from smc:
 * An archive server (Archiva) for external libraries and release have been setup to replace the current http external-libs fetch and install procedure from smc (http://escidoc1.escidoc.mpg.de:8888/archiva/)
 * An integration server (Continuum) was installed to support nightly-builds, constant integration and unittesting and release functionality (http://escidoc1.escidoc.mpg.de:8888/continuum/)
 * Published all relevant project information (Javadoc, members of project, mailing lists etc.) on a single server. This information is updated automatically. (http://escidoc1.escidoc.mpg.de/projects)
 * The project was transfered from ant tasks to a maven2 build environment (still under work)
 * The eclipse environment is generated automatically by maven2 to provide a lifecycle driven build phase (compile -> test -> integration-test -> package -> deploy). This ensures that no release can be built without testing.
 * Divided unitests and integration-tests in the modules (still under work)
 * Changed the generic creation of common property.files (pubman.properies, faces.properties etc.) (still under work)

Restructuring of the code repositories
The six code repositories from smc are moved in 3 repositories located at http://zim02.gwdg.de/repos/

The identifiers are: The new repositories can be seperated into two groups, solutions and common services. All dependencys between the projects are resolved by the maven2 environment, so a svn:external binding between the repositories as planned is not necessary.
 * common_services: This repository holds all the service modules (e.g validation).
 * pubman: Holds all the modules which is required by the pubman solution.
 * faces: Is responsible for all the faces solutions.

More information can be found in the Escidoc Building and Developing Environment.