You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2004/12/14 22:15:48 UTC

svn commit: r111876 - /incubator/directory/eve/trunk/xdocs/plugin.xml

Author: akarasulu
Date: Tue Dec 14 13:15:45 2004
New Revision: 111876

URL: http://svn.apache.org/viewcvs?view=rev&rev=111876
Log:
Changes ...

 o added a how to integrate plugin section
 o added the warning for parser sensitivity to case

http://nagoya.apache.org/jira/browse/DIREVE-116


Modified:
   incubator/directory/eve/trunk/xdocs/plugin.xml

Modified: incubator/directory/eve/trunk/xdocs/plugin.xml
Url: http://svn.apache.org/viewcvs/incubator/directory/eve/trunk/xdocs/plugin.xml?view=diff&rev=111876&p1=incubator/directory/eve/trunk/xdocs/plugin.xml&r1=111875&p2=incubator/directory/eve/trunk/xdocs/plugin.xml&r2=111876
==============================================================================
--- incubator/directory/eve/trunk/xdocs/plugin.xml	(original)
+++ incubator/directory/eve/trunk/xdocs/plugin.xml	Tue Dec 14 13:15:45 2004
@@ -123,6 +123,140 @@
       </subsection>
     </section>
 
+
+    <section name="How to Integrate">
+      <p>
+        Ok so you want to use the plugin to generate classes for your own
+        schema.  Here's a step wise process you can follow to do that using
+        maven:
+      </p>
+
+      <ol>
+        <li>
+          Place your schema files (i.e. foo.schema) with the schema extension
+          into ${basedir}/src/schema.  If you opt to store it in another
+          location you must override the <code>maven.eve.schema.dir</code>
+          property in your project.properties file.   For each schema file
+          add the file base name to the <code>maven.eve.schemas</code> property
+          which is a comma separated list.
+        </li>
+        <li>
+          The plugin will by default generate java files within the
+          ${basedir}/target/schema directory.  If you would like to
+          generate code elsewhere you must override the <code>
+          maven.eve.schema.target.dir</code> property in your project.properties
+          file.
+        </li>
+        <li>
+          By default the plugin generates code in an Eve schema package:
+          <code>org.apache.eve.schema.bootstrap</code>.  If you want
+          generated code for a schema to be put into a package other than this,
+          then you're going to need to set the package property for the schema.
+          The package property key is composed of the following base, <code>
+          maven.eve.schema.package.</code> with the name of the schema
+          (<b>without</b> the extension) appended to it.  So for schema file
+          foo.schema the following property key would be used: <code>
+          maven.eve.schema.package.foo</code> where foo is the schema name.
+        </li>
+        <li>
+          Using the same pattern above for all schema specific properties you
+          can set other per schema properties as well.  One of these properties
+          is the dependency list for a schema.  Schemas can obviously depend on
+          others.  The schema dependency list is a comma separated list of other
+          schema names.  These schemas need not be present in your project
+          to generate the code for your schema.  The dependent schema classes
+          must however be present within Eve at deploy time in order to load and
+          use your schema.  At the end we list the the default schemas already
+          packaged into the Eve jar.  You can use any one of these schemas as
+          dependencies needed by your schema and not worry about their presence.
+          The property key <b>base</b> for the schema dependency list is <code>
+          maven.eve.schema.deps.</code> and for a foo.schema file the full key
+          would be <code>maven.eve.schema.deps.foo</code>
+        </li>
+        <li>
+          Each schema has an owner associated with it.  If you want the owner to
+          be anything other than the Eve super user you may want to set the
+          owner property for the schema in your project.properties file.  The
+          property key base for the schema is <code>maven.eve.schema.owner.
+          </code> so don't forget to append the schema name to it.
+        </li>
+      </ol>
+
+      <p>
+        Once setup you can invoke maven to generate the schema sources like so:
+      </p>
+
+<source>
+[akarasulu@newton dib]$ maven eve:schema
+ __  __
+|  \/  |__ _Apache__ ___
+| |\/| / _` \ V / -_) ' \  ~ intelligent projects ~
+|_|  |_\__,_|\_/\___|_||_|  v. 1.0.2
+
+Attempting to download ldap-common-0.8.0-SNAPSHOT.jar.
+Attempting to download eve-shared-0.8.0-SNAPSHOT.jar.
+Attempting to download eve-protocol-0.8.0-SNAPSHOT.jar.
+Attempting to download snickers-codec-0.2.0-SNAPSHOT.jar.
+Attempting to download ldap-snickers-provider-0.8.0-SNAPSHOT.jar.
+Attempting to download snickers-ber-0.2.0-SNAPSHOT.jar.
+Attempting to download seda-0.2.0-SNAPSHOT.jar.
+Attempting to download maven-eve-plugin-0.8.0-SNAPSHOT.jar.
+Attempting to download ldap-common-0.8.0-SNAPSHOT.jar.
+Attempting to download eve-shared-0.8.0-SNAPSHOT.jar.
+build:start:
+
+eve:schema:
+eve:init:
+
+eve:prepare-filesystem:
+
+eve:generate:
+    [echo] Generated schema producer classes for autofs.schema
+    [echo] Generated schema producer classes for core.schema
+    [echo] Generated schema producer classes for cosine.schema
+    [echo] Generated schema producer classes for corba.schema
+    [echo] Generated schema producer classes for eve.schema
+    [echo] Generated schema producer classes for inetorgperson.schema
+    [echo] Generated schema producer classes for java.schema
+    [echo] Generated schema producer classes for krb5kdc.schema
+    [echo] Generated schema producer classes for nis.schema
+    [echo] Generated schema producer classes for system.schema
+    [echo] Generated schema producer classes for scheduleworld.schema
+    [touch] Creating /home/akarasulu/projects/directory/eve/trunk/dib/target/schema/.flagfile
+BUILD SUCCESSFUL
+Total time: 28 seconds
+Finished at: Tue Dec 14 15:26:26 EST 2004
+</source>
+
+      <p>
+        The example above is from Eve.  If you would like to look at how to use
+        this plugin best the Eve <a href="http://figwarra.notlong.com/">
+        project.properties</a> file here is perhaps the best place to look.
+        Also from the output above you can see the schema files that are used
+        and packaged into Eve by default.  This may however change in the
+        future to restrict the set.
+      </p>
+
+      <p>
+        WARNING: As a last bit of advice make note that the plugin may be
+        sensitive to case for keywords in the OpenLDAP file.  For example
+        the prefix before an objectClass or an attributeType must be in all
+        lowercase.  However words like MUST, and MAY and SUP should all be in
+        uppercase.  So if plugin bombs just check out where this happens and
+        play with the case.  Another thing to watch out for is the order of
+        terms.  This we follow the RFC for which is pretty much the same as the
+        OpenLDAP format minus the objectclass and attributetype prefixes to the
+        descriptions.  We figure the OpenLDAP parser is less complex if the
+        prefixes are there (where the parser is told if the description is an
+        objectclass or attributetype and does not have to figure this out).
+        However I have encountered schemas whose formats do not comply with
+        standards in with respect to the order of description fields and had
+        to edit the files.  This issue did not occur when the files were from
+        the OpenLDAP Foundation which means they do it right but overlook
+        schema objects that are not correctly formated.
+      </p>
+    </section>
+
     <section name="Functionality for the Future">
       <ul>
          <li>