This package contains classes that represent metadata in Oreo, objects that encapsulate information about data sources, record types, and fields. Typically, you will not use these classes directly in your java code. You will specify them in an XML configuration file and the necessary initializations will happen behind the scenes in your application's startup phase. For more information on how to do the XML configuration, see these additional notes.

The class {@link com.revusky.oreo.metadata.RecordMetadata} is a concrete implementation of the interface {@link com.revusky.oreo.RecordDescriptor} which is the Oreo API for objects that represent record metadata. The class {@link com.revusky.oreo.metadata.Field} and its various subclasses are concrete implementations of the {@link com.revusky.oreo.FieldDescriptor} interface which represents field-level metadata.

The various Field subtypes, such as {@link com.revusky.oreo.metadata.StringField} and {@link com.revusky.oreo.metadata.NumericalField} are out-of-the box implementations that are most people will use directly. However, note that it is not terribly hard to write your own subclasses to represent whatever data categories there are in your application domain. To get a feel for how to do this, I would direct your attention to the source code of {@link com.revusky.oreo.metadata.EmailField} since this is an extremely simple subclass of StringField, basically a convenience for fields that represent an internet email address. I would anticipate that some people might write custom subclasses of {@link com.revusky.oreo.metadata.NumericalField} to represent money amounts in possibly different denominations.