JPOX
JPOX
 Project  |  Ver 1.1  |  Ver 1.2  |  JDO  |  JPA  |  Guides  |  Tools
1.1 | Preparation | O/R Mapping | Runtime | Extensions | Developer
Development
Testing
JPOX Design : Code Layout

The JPOX code is structured as (Maven) projects. There are several projects. The first is JPOX "Core", which is the JDO implementation. Then we have JPOX "Enhancer", the byte-code enhancer. We also have JPOX "Eclipse plugin", and JPOX "IDE", and one or two others. These are described below.

The file structure for the top-level project is shown below.

  • JPOX - This contains the JPOX subprojects.
    • Core/ - The JPOX Core functionality sub-project.(see below)
    • Enhancer/ - This contains the JPOX's bytecode enhancer sub-project. (see below)
    • IDE/ - This contains a SWING based IDE for JPOX. This sub-project is no longer under development
    • IDE_Eclipse/ - This contains a Eclipse based IDE for JPOX. (see below)
    • Plugins/ - This contains sub-projects that extends JPOX functionality.
      • C3P0/ - This contains the C3P0 plugin for JPOX connection poolling.
      • DBCP/ - This contains the DBCP plugin for JPOX connection poolling.
      • Ehcache/ - This contains the Ehcache plugin for JPOX cache.
      • Java5/ - This contains the Java 5 plugin adding Java 5 types support to JPOX.
      • JPOXTest/ - This contains the Maven1 plugin for JPOX Persistence Tests.
      • Maven1/ - This contains the Maven1 plugin for JPOX.
      • Maven1-FAQ/ - This contains the Maven1 FAQ plugin for use by JPOX.
      • Maven2/ - This contains the Maven2 plugin for JPOX.
      • Multidimensional/ - This contains the Multidimensional plugin for JPOX.
      • OSCache/ - This contains the OSCache plugin for JPOX cache.
      • Proxool/ - This contains the Proxool plugin for JPOX connection pooling.
      • Spatial/ - This contains the Spatial plugin for JPOX.
      • SpatialOracle/ - This contains the SpatialOracle plugin adding support to spatial Oracle types for JPOX.
      • SpringFramework/ - This contains the SpringFramework plugin.
      • SwarmCache/ - This contains the SwarmCache plugin for JPOX cache.
      • TangosolCache/ - This contains the TangosolCache plugin for JPOX cache.
      • ThirdParty/ - This contains stubs to 3rd party (commercial) API products.
      • XMLTypeOracle/ - This contains the XMLTypeOracle plugin adding support to XMLType Oracle type for JPOX.
    • TestFramework/ - framework for tests, used by Core, Java5, etc
    • samples/ - This contains a series of code snippets demonstrating how to use the various aspects of JPOX.
    • src/ - This folder is no longer in use.
    • website/ - This contains the JPOX's website.
    • workspace/ - This contains developer's workspace that wants to backup local changes not yet committed to projects. To use rarely.
    • xdocs/ - This contains the documentation for JPOX. The majority of this is in XML format, and is converted (to HTML) by Maven when generating the website.
    • LICENSE.txt - This contains the license definition for JPOX - the Apache 2 license.
    • NOTICE.txt - Copyright notice for JPOX with list of all those who retain copyright to parts of JPOX.
    • README - This contains basic information about the JPOX project and is included with any JAR's, directing the user to the license terms and conditions.
    • README.jpox - This file contains information about the layout of the JPOX subprojects.
    • checkstyle.xml - This is used by the Checkstyle application and reinforces the coding standards used on the project.
    • maven.xml - This is used when building JPOX using Maven, and configures the Maven goals to link as we require.
    • project.properties - This is used when building JPOX using Maven, and defines controls for the various Maven plugins used.
    • project.xml - This is used by Maven and defines the JPOX projects as a whole.

As you have maybe guessed from the above file structure, JPOX core can be built using either Maven (the preferred option, for me anyway :-)), or Ant, or Eclipse, or ... . So you have the choice

JPOX Core

The Core project provides the main JPOX functionality. It is the base requirement for the other sub-projects. This provides the artifact jpox-{version}.jar. The file structure for this project is shown below

  • README.build - This contains basic information about the JPOX-Core project and is included with any JAR's, directing the user to the license terms and conditions.
  • project.properties - This is used when building JPOX-Core using Maven, and defines controls for the various Maven plugins used.
  • project.xml - This is used when building JPOX-Core using Maven, and is the main project definition for JPOX-Core
  • src/java/ - This contains the source code for JPOX-Core.
  • src/test/ - This contains the source code for the JPOX-Core test suite (JUnit tests).
  • build.xml - Control file used when building JPOX Core using Ant.
  • build.properties - Control file used when building JPOX Core using Ant.
  • test.properties - File defining the tests to be run in the various different test scenarios for end-to-end testing.

The JPOX-Core project is built using Maven, or Ant.

JPOX Enhancer

The Enhancer project provides the JPOX Enhancer. It is dependent on JPOX "core". This provides the artifact jpox-enhancer-{version}.jar. The file structure for this project is shown below

  • README - This contains basic information about the JPOX-Enhancer project and is included with any JAR's, directing the user to the license terms and conditions.
  • project.properties - This is used when building JPOX-Enhancer using Maven, and defines controls for the various Maven plugins used.
  • project.xml - This is used when building JPOX-Enhancer using Maven, and is the main project definition for JPOX-Enhancer.
  • src/java/ - This contains the source code for JPOX-Enhancer, the JPOX byte-code Enhancer.
  • src/test/ - This contains the source code for the JPOX-Enhancer test suite (JUnit tests).

The JPOX-Enhancer project is built using Maven.

JPOX IDE

The IDE project provides an integrated development environment for generating the necessary persistence specifications for using JPOX. This provides the artifact jpox-ide-{version}.jar. The file structure for this project is shown below

  • README - This contains basic information about the JPOX-IDE project and is included with any JAR's, directing the user to the license terms and conditions.
  • README.build - This file contains information about how to build JPOX-IDE using Maven.
  • project.properties - This is used when building JPOX-IDE using Maven, and defines controls for the various Maven plugins used.
  • project.xml - This is used when building JPOX-IDE using Maven, and is the main project definition for JPOX-IDE.
  • src/conf/ - This contains anything that is required by the IDE at runtime (e.g images).
  • src/java/ - This contains the source code for JPOX-IDE, the JPOX integrated development environment.
  • src/test/ - This contains the source code for the JPOX-IDE test suite (JUnit tests).

The JPOX-IDE project is built using Maven. This sub-project is no longer under development

JPOX IDE_Eclipse

The Eclipse IDE project provides an Eclipse integrated development environment for generating the necessary persistence specifications for using JPOX. This provides the artifact org.jpox.ide.eclipse.jdo_{version}.jar. The file structure for this project is shown below

  • build.properties - This is used by eclipse when building the plugin.
  • plugin.xml - This is used by eclipse to plug components into its environment.
  • src/java/ - This contains the source code for JPOX-IDE_Eclipse.

The JPOX-IDE_Eclipse project is built using Eclipse.