This is a prototype of the JDO maven projects: - api11 to build the jdo.jar which defines the JDO API version 1.1 - ri11 the current JDO1 RI - tck11 the current JDO1 TCK - api20 to build the jdo.jar which defines the JDO API version 2.0 - core20 the JDO2 core including utility and metadata model classes - enhancer20 the JDO2 byte code enhancer - runtime20 the JDO2 runtime classes (pm, pmf, state manager, life cycle, store manager interface, runtime meta data support) - query20 the JDO2 JDOQL query compiler and JDOQL query tree nodes - fostore20 the JDO2 file object store (fostore) datastore - tck20 the JDO 2.0 TCK - btree the Netbeans open source btree implementation used by ri11 and fostore20 ------------- Dependencies: ------------- The JDO maven project define their dependencies in the project.xml file: JDO1: api11, btree, ri11, tck11 JDO2: api20, core20, enhancer20, tck20, btree, runtime20, query20, fostore20 ------------- Prerequisites ------------- - Maven You need Maven version 1.0.1 or 1.0.2. You can download maven from http://maven.apache.org/start/download.html - JNDI implementation (fscontext.jar and providerutil.jar) The JNDI test cases in ri11, fostore20 and tck20 need a JNDI implementation. To configure this please check the property jndi in project.properties of ri11, fostore20 and tck20. It lists all jars of your JNDI implementation in a path-like syntax. Furthermore, the three subprojects have a properties file test/conf/jndi.properties defining all the necessary properties of the JNDI implemenation. The default setting in project.properties and jndi.properties use Sun's File System Service Provider implementation (fscontext.jar and providerutil.jar) and assume to find both jars in the directory trunk/lib/ext. For donwload please go to http://java.sun.com/products/jndi/downloads/index.html, click the Download button at 'Download JNDI 1.2.1 & More', accept a license agreement, download 'File System Service Provider, 1.2 Beta 3' and then unpack the downloaded zip. It includes the jars fscontext.jar and providerutil.jar. - JPOX The Reference Implementation for JDO 2.0 is JPOX. The tck20 subproject automatically downloads the latest JPOX snapshot. - derby The default datastore for tck20 is derby. The tck20 subproject automatically downloads version 10.1.1.0 of derby and derbytools. NOTE!! Mac OSX users must uncomment derby.storage.fileSyncTransactionLog=true in tck20/test/conf/derby.properties. ------- Remarks ------- (1) Please note, maven uses the user.home system property for the location of the maven local repostitory: ${user.home}/.maven/repository. Under Windows this system property is C:\Documents and Settings\ no matter what the HOME variable is set to. As a workaround I set the system property by adding -Duser.home=%HOME% to the environment variable MAVEN_OPTS. (2) The btree subproject checks out the Netbeans mdr btree implementation. This requires cvs being installed on your system. The official netbeans cvs host might not work if you are behind a firewall that blocks the cvs port. Please consult http://www.netbeans.org/community/sources for more info. There is a special cvsroot if you are inside the Sun network (SWAN), please check the project.properties in the btree subproject. If you do not have a cvs client installed on your system, you find a zip file including the Netbeans mdr btree implementation on the JDO wiki. Go to the bottom of page http://wiki.apache.org/jdo/SubversionRepository. (3) Remarks about ri11: - Calling 'maven build' in ri11 compiles the JDO RI sources and test classes and then runs the JUnit tests. - The maven goal runtest ('maven runtest') executes the full JDO RI test suite. This includes running all the JUnit tests w/O and w/ security manager, plus some extra tests that require running more than one JVM. - If you prefer the JUnit gui please call 'maven -Dgui=true runtests'. This first starts a gui for running the JUnit tests w/o security manager. After you exit the gui it automatically starts a new gui running the JUnit tests w/ security manager. (4) Remarks about tck11: Calling 'maven build' in tck11 compiles all the JDOTCK tests, runs the JDORI enhancer and then runs all the tests using the JDORI. To run the JDOTCK against an JDO implementation you should do the following: - Place the jars of your JDO implementation in the directory iut_jars. All the jars in this directory are automatically added to the classpath. - Check the property iut.runtck.properties in project.properties. It should refer to a file defining the PMF properties for your implementation. - Please add any system properties to the property iut.runtck.sysproperties in project.properties, e.g. iut.runtck.sysproperties = -DMySystemProperty1=value -DMySystemProperty2=value - If the JDO implementation comes with its own enhancer, please update the properties iut.enhancer.main, iut.enhancer.options, iut.enhancer.args, and iut.enhancer.sysproperties. - Check the properties iut.applicationidentity.supported and iut.datastoreidentity.supported in project.properties and update them according to the JDO implementation to be tested. - You run the TCK by calling 'maven runtck'. This first enhances the persistence-capable and persistence-aware classes for applicationidentity and for datastore identity. This uses the properties described in the previous item in order to decide which kind of identitytype is supported. After enhancement 'maven runtck' runs the JDO TCK test classes using the test configuration file as specified by the property jdo.tck.configuration. You find the property in project.properties. - A test configuration is a file defining two properties: jdo.tck.identitytype: either datastoreidentity or applicationidentity jdo.tck.testclasses: a list of fully qualified class names of the test classes to be executed. The first property is important to include the enhanced classes for this identitytype into the classpath. Today there is no checking whether the property value is correct. There is a predefined property jdo.tck.alltests including all JDO TCK test classes. Please see the files datastoreidentity.conf and applicationidentity.conf in test/conf as an example. - You can run the JUnit gui (instead of the batch mode) by setting the property gui to true: 'maven -Dgui=true runtck'. (5) Remarks about tck20: This version of the TCK is under development. It is premature to attempt to run an implementation against it. Currently only tests that use the persistence capable classes in org.apache.jdo.tck.pc.mylib run without error. - See Prerequisites concerning JPOX and Derby. - Run "maven build" to build the tck. This will compile, enhance, install the schemas, and run all the tests on all supported databases and identitytypes. You may use the following custom goals and command line options with tck20/maven: Custom Goals: * runtck.jdori - runs the TCK on the JDO Reference Implementation * runtck.iut - runs the TCK on the implementation under test * installSchema - installs the database schema * enhance.jdori - enhances the class files using the JDO RI enhancer * enhance.iut - enhances the class files using the implementation under test's enhancer Command Line Options: -Djdo.tck.cfglist= Overrides the definition of jdo.tck.cfglist found in tck20/test/conf/configuration.list by supplying one or more space-separated test configuration files. Test configuration files typically have the .conf extension. -Djdo.tck.dblist= Overrides the property value in project.properties by supplying one or more space-separated database names -Djdo.tck.identitytypes= Overrides the property value in project.properties by supplying one or more space-separated identity types (applicationidentity or datastoreidentity) to use for this run. Maven looks for the following configuration files in test/conf: * configurations.list A list of files. Each file listed is a test configuration file. * test configuration files Each of these files sets values for jdo.tck.testdescription - an optional string describing the purpose of these tests jdo.tck.classes - a list of one or more test classes. jdo.tck.testdata - fully qualified file name (not required by all tests) jdo.tck.standarddata - fully qualified file name (not required by all tests) jdo.tck.mapping - file designator that maven.xml uses to build a javax.jdo.option.Mapping value and corresponding schema name * exclude.list A list of test classes NOT to execute during a TCK test run [Not yet fully implemented] For example, run "maven runtck.jdori" to run all tests or "maven -Djdo.tck.cfg= runtck.jdori" to run one configuration. (6) Logging Apache JDO uses the apache commons logging package for logging. Sub-projects ri11 and tck11 use several properties files to configure logging. - common-logging.properties: specifies the logging implementation to use. It is tested with apache SimpleLog and JDK 1.4 logging. - logging.properties: logger configuration when using JDK 1.4 logging. - simplelog.properties: logger configuration when using apache SimpleLog. (7) The file jdo_check.xml includes the checkstyle configuration. It is borrowed from the sun_checks.xml, but does not use all of the sun rules and customizes some other rules. The checkstyle configuration is not yet finished. (8) Mevenide is a nice maven plugin for IDEs (see http://mevenide.codehaus.org). You find download instructions in http://mevenide.codehaus.org/download.html. For Netbeans, once you installed the plugin, you should be able to open an existing maven project by File -> Open Project -> Open Project Folder. Navigate to a directoy including a maven project (e.g. api11) and choose this directory. Netbeans will create a project folder. If you right-click the Maven project you can examine the contents of the project.xml (see Properties) or execute goals.