Package Organization Of Expresso

This document describes the source code package organization of Expresso and the file structure of the Expresso web-application.

The structure of both of these has undergone reorganization to be more logical and easier to understand. This structure only applies to Expresso 3.00 or later. If you are converting from an earlier release, see the documentation about the re-name utility.

Please refer to the JavaDoc for the most up-to-date details on the structure.

All Expresso packages are within "com.jcorporate.expresso". Inside this are 4 major sub-categories:

  1. com.jcorporate.expresso.core

    The core classes required of virutally every expresso application such as db persistance, security, state-machine, etc. Within this package:

    1. ExpressoSchema - the primary Schema object for Expresso. This schema object registers all of the other required objects for Expresso.

    Sub-packages:

    1. cache - The general-purpose Cache Manager, which manages all in-memory caches for Expresso.
    2. controller - The core definitions of Expresso's Controller objects
    3. db - Database connection pool and database connection definitions
    4. dbobj - Core definitions of database objects
    5. job - Definitions of the Job class for background and scheduled job handling
    6. jsdkapi - Objects to support multiple versions of the servlet API
    7. logging - Expresso's interface to the log4j logging package, as well as appenders for database logging
    8. misc - Miscellanous objects, including the ConfigManager, which holds all of Expresso's configuration properties and is responsible for system startup.
    9. security - The security sub-system, including links to both weak and strong encryption.
    10. servlet - Basic servlets for Expresso, including DBMaint.
    11. utility - Stand-alone utility programs - e.g. containing a "main" method and intended to be run from the command-line. This includes ReNameUtil, DBTool, JobHandler and others.

  2. com.jcorporate.expresso.services

    Additional services that are still part of basic Expresso, but not strictly necessary to an Expresso application. Such as: downloading, email verification, etc. Sub-packages include:

    1. controller - Contains Controller objects used to administer Expresso, Queue Jobs, control the CahceManager, and other common functions.
    2. dbobj - Contains database objects used in essential Expresso services, such as security, job queueing, logging.
    3. html - A simple package for generating HTML, used by basic servlets. See Controller objects for more sophisticated UI options.
    4. job - Some basic Job objects
    5. servlet - Basic servlets used in Expresso, including DBCreate, Status, and others.
    6. test - The definitions for the basic unit-test framework used in Expresso. Currently being integrated with Junit.

  3. com.jcorporate.expresso.ext

    Extensions to Expresso that will be used by some Expresso applications, but not by others. This will be the place to put any future bells and whistles.

    Some sub-packages in this package will not compile under certain systems - e.g. the "ldap" sub-package requires the jndi and ldap extension packages (available as downloads from Sun). These packages can safely be ignored on systems that do not require or utilize them.


    1. dbobj - DB object definitions for extension services such as downloading, download logging, and self-registration of users.
    2. job - Jobs for extension services such as sending email notifications to users who download certain files.
    3. ldap - LDAP integration objects for reading security info from an LDAP server - required JNDI.
    4. report - Extension reports including analysis of users who have downloaded files
    5. servlet - Extension servlets, such as a Restart servlet (to re-read configuration values), export DB objects to XML format, and a servlet to run arbitrary SQL queries.

  4. com.jcorporate.expresso.demo

    Classes that are to show the functionality of expresso such as Login/Logout, RegisterUser, etc. Classes in this package are intended to be used as examples of how Expresso can be used. Classes in this package can be safely removed without compromising any of Expresso's functionality.

    The "demo" sub-package is actually an entire Expresso application, and has it's own Schema class, com.jcorporate.demo.DemoSchema.

Expresso CVS organization

The organization of Expresso's files in CVS is designed to allow Expresso to be easily packaged into a .EAR (Enterprise Application) or .WAR (Web application Archive) format file. This format allows Expresso to be immediately deployed on servers supporting this format.

If you were to check out the Expresso CVS archive into a directory called "expresso", you would see a structure like this: