Java development (testing really):
==================================
This maven package is set up as the location for DataONE common test resources to be made
available for unit and integration tests.  It will be listed as a dependency of d1_common_java,
for transparent incorporation to java developers using the d1_*_java packages. (d1_common_java is
a dependency of most, if not all so far. See d1_common_java pom.xml dependency section otherwise.)

Java Resources
--------------
It is meant that callers would use this.getClass().getResourceAsStream("relative/path/to/resource") 
to access the resources, and that resources will be appropriately organized in subdirectories
according to usage and perhaps type.

Special rules apply to getResourceAsStream() for accessing files, so for example,
to access the file:
    d1_test_resources/src/main/resources/D1shared/selfTest/simpleDummyResource.txt
 
one would invoke the method thusly:
    this.getClass().getResourceAsStream("D1shared/selfTest/simpleDummyResource.txt");
    
    
Java Classes
------------
Classes may be added in order to supply Resource collections to unit tests or to extend Junit tests
that may be used by all DataONE java components.

PackageFiles
~~~~~~~~~~~~

If a collection of resources must be used instead of a single file, then the PackageFiles.java class
is available for extension.  As background, Introspection can be used to discover classes in a 
java package, but it cannot be used to discover other resources, such as xml files or ldif files.
The PackageFiles.java class is a mechanism to discover resources other than classes in a package.
The PackageFiles.java class to work must have a java class in the same package as the other resources
to discover.
Therefore, when D1 needed a collection of files from the KNB node to be used for unit testing,
The PackageFiles.java class was extended in the maven directory src/main/java in the package::

org.dataone.test.knb.data

with the class::

KnbRecords.java

The xml resources where placed in the maven directory src/main/resources in the same package::

org.dataone.test.knb.data

with the xml files::

Blandy.76.2
Blandy.77.1
etc

The extension of the class also allowed for a collection of systemMetadata files to be found in the
specified package::

org.dataone.test.knb.sysmeta


ApacheDSSuiteRunner
~~~~~~~~~~~~~~~~~~~

ApacheDSSuiteRunner is an extension of Junit's Suite class and is
based on org.apache.directory.server.core.integ.FrameworkRunner.

The ApacheDSSuiteRunner allows for ApacheDS annotations such as @CreateDS, 
@ApplyLdifFiles and @CreateLdapServer to be applied to a Junit suite of tests. 
This allows for ApacheDS to be setup and shutdown and run only once  for multiple junit test 
classes in a java component rather than having to setup and shutdown ApacheDS for
each class executed.

ApacheDS will load a dataone-schema.ldif file in order to create a schema that ApacheDS 
will use as its LDAP tree.  In order to generate thie dataone-schema.ldif file, you must
install Apache Directory Studio (minimal 2.0.0-M9). 
Open up Apache Directory Studio and  from the File Menu, choose New. You should choose
Schema Editor and then New  Schema Project.
Specify the Project Name as DataONETest and confirm the option Offline Schema is choosen.
Click Next. The next screen confirm that you are viewing the schemas for ApacheDS and 
press the button 'Select All' followed by pressing the button Finish.

You will now need to import the DataONE OpenLDAP compliant schema into ApacheDS Studio.
From the File Menu, choose Import.  On the Import wizard window, choose Schema Editor >
Schemas from Open Ldap Files. The file you will import is in the dataone-cn-os-core package.
Make certain you have 
https://repository.dataone.org/software/cicore/trunk/cn-buildout/dataone-cn-os-core/usr/share/dataone-cn-os-core/debian/ldap/dataone.schema
downloaded.
Press the Next button on the Import Wizard, on the next screen, using the Browse Button, find the
directory that holds the dataone.schema file. Click on the dataone.schema file that was
found. Press the Finish button.

If everything worked well, then you should see 'dataone' in the Schema Editor perspective
in the Schema view.  You will next Export the Dataone Schema as an Active Directory schema.
From the File Menu, choose Export.  On the Export wizard window,  choose Schema Editor >
Schemas for Apache DS. Press the Next button. Check the 'dataone' schema. You should 'Export
each schema as a separate file' and choose the directory in which the dataone-schema.ldif file
is located in d1_test_resources package. 
d1_test_resources/src/main/resources/org/dataone/test/apache/directory/server
Press Finish button.

A dataone.ldif should show up in the org.dataone.test.apache.directory.server package
for the main resources of the project. Diff the dataone.ldif to the data-schema.ldif file
to confirm changes. Then move the dataone.ldif to the data-schema.ldif. Commit the changes
and make certain to rebuild the project to test out the changes.