Resource Discovery Network - Home
SPP Open Source: Roadmap
documents

Source code roadmap

Here is a pointer to the various directories in the spp/src tree; I've tried to give an indication what they're used for, and (more importantly) when you might be interested in their contents.


Core source code

The core source for SPP, that is, the stuff we expect to be most portable, should live under core/. Package names follow the normal java convention, so put your code under uk/ac/portal/spp/ followed by the package name.

Most people will be interested in writing Java under this directory. You should be able to build your code using the ant targets build-core and test-core.

Test classes should contain the string Test (with that capitalisation) within their names.

Core SPP package interfaces

These will live under uk/ac/portal/spp/ as detailed above.

Core SPP package implementations

Implementation of the core interfaces might live alongside the code, or might live in subpackages, according to taste (the latter may prove more preferable).

Wrapper beans

These are beans that are instantiated by the framework. They may wish to implement the uk.ac.portal.spp.common.LoggerAware, uk.ac.portal.spp.common.Configurable and uk.ac.portal.spp.common.Destructible interfaces, and should instantiate appropriate implementation classes and make their services available through their JavaBean interface.

top

Jetspeed glue

Configuration overlays

These are overlaid onto the stock Jetspeed target and consist primarily of configuration file tweaks. New files that are to be copied verbatim are under configuration/copy. It may be necessary to modify some of these configuration files in order to ensure that appropriate objects are instantiated and to provide them with their configuration. However, you generally won't have to deal with this directory much.

It is also necessary in one or two places to graft hooks into existing configuration files in the stock Jetspeed tree. Such hooks are implemented by creating files in the configuration/patch directory. These are strongly Jetspeed-specific, and thus only the build engineer and/or those dealing directly with targetting Jetspeed will need to deal with these files.

Both sets of patches are applied by running the deploy-patch ant target.

top

Portlet (framework-specific) code

These follow a standard layout and live in subdirectories under portlets/. Those people producing actual portlet (presentation) code will need to deal with these subdirectories.

The code under here is likely to be targetted at the Jetspeed framework, and therefore is less portable (so put your real functionality elsewhere!) However, the actual deployment of a portlet into the Jetspeed framework is somewhat fiddly, so the deployment itself is managed by the ant targets build-portlets, test-portlets and deploy, the latter of which will deploy the core and portlet code.

To abstract away the potentially complex deployment issues with portlets, they should be laid out following this pattern. If they are so laid out, they can then be deployed automatically; if future changes to Jetspeed over the course of the project mean that the details of deployment change, only the build engineer need worry.

Therefore, the following subdirectories should be used for portlet layout:

portlets/portletname/velocity
The velocity templates that make up the portlet presentation (view) are placed here. example to come
portlets/portletname/java
Velocity event-handling classes are placed under here (following the usual java package naming scheme). example to come
portlets/portletname/configuration
A few fixed property files live here that provide sufficient information for the ant deployment process to correctly generate the right configuration files for this portlet. example to come
top

Build engineer stuff

Pretty much everything else is only of concern to the build engineer, that is, to anyone maintaining the build process and overseeing the automation of SPP code into a predeployed Jetspeed webapp.

The ant target check-dependencies will set up a lot of these extra directories. Care should be taken not to check in any of the files that ant creates during the build process.

build.xml and build/

These are files that will be maintained by the build engineer.

class/

Ant compiles project source code into files under here. Do not commit any of the files under this directory.

scratch/

This directory is used for holding temporary files during the biuld process. Do not commit any of the files under this directory.

dependencies/

The directory structure under here holds external libraries that form dependencies of the SPP code. They are managed by the build process. Do not commit any of the files under this directory.

One of the things that check-dependencies does is download necessary ant extensions. All the .jar files under dependencies/build and dependencies/test/junitjar should be installed in your ant lib/ directory.

top