You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xmlbeans.apache.org by Patrick Calahan <pc...@bea.com> on 2003/09/25 02:24:06 UTC

code to contribute: JAM

Hello all.  I have written a package I would like to contribute to xbeans 
v2.  It is an abstraction layer for Java types and their associated metadta 
that I believe will be critical in xbeans' compilation phase.  Just as you 
need a SOM to represent the schema types you are binding to and from, you 
use JAM to model the Java types you are binding to and from.

Here is a blurb from the package.html docs that provides a little
more detail:

The Java Abstraction Model (JAM) provides a representation of
Java abstractions (such as classes and methods) and their
associated metadata.  This model serves to decouple its clients' code
from any specific introspection mechanism such as javadoc or reflection.

This approach has several advantages:

   A unified API for viewing Java types
     Java types can be described in java sources, in class files,
   or even synthesized from scratch.  JAM provides a single API which
   allows your code to remain decoupled from tool such as reflection
   and javadoc.

   Clean and consistent access to metadata
     Metadata is a hot topic at the moment, and the way we deal with it
   is going to change dramatically over the next year or two.
   By writing to the JAM API, you can be sure that you won't
   have to rewrite your code to accommodate emerging tools and
   standards (JSR175, for example).

   Pluggable metadata stores
     Metadata can be retrieved from an external source (such as an XML file)
   or even generated programmatically.  This also allows metadata to
   be associated with Java constructs that may not normally support
   annotations (such as packages).

   A Node-based view of Java constructs
     JAM clients have the option of viewing their java constructs as a tree
   of generic, DOM-like nodes (packages contain classes, classes contain
   methods) each of which may have associated annotations.  This is
   extremely helpful for tools which wish to support annotation
   inheritance.


-p