You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-commits@db.apache.org by an...@apache.org on 2008/12/07 19:52:56 UTC

svn commit: r724172 [2/2] - /db/jdo/trunk/api2/src/java/javax/jdo/metadata/

Added: db/jdo/trunk/api2/src/java/javax/jdo/metadata/MemberMetadata.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/java/javax/jdo/metadata/MemberMetadata.java?rev=724172&view=auto
==============================================================================
--- db/jdo/trunk/api2/src/java/javax/jdo/metadata/MemberMetadata.java (added)
+++ db/jdo/trunk/api2/src/java/javax/jdo/metadata/MemberMetadata.java Sun Dec  7 10:52:55 2008
@@ -0,0 +1,477 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.jdo.metadata;
+
+import javax.jdo.annotations.ForeignKeyAction;
+import javax.jdo.annotations.NullValue;
+import javax.jdo.annotations.PersistenceModifier;
+
+/**
+ * Represents a field/property in a class/persistent-interface.
+ * @since 2.3
+ */
+public interface MemberMetadata extends Metadata {
+    /**
+     * Method to set the name.
+     * 
+     * @param name name
+     */
+    void setName(String name);
+
+    /**
+     * Accessor for the name of the field/property.
+     * 
+     * @return The name
+     */
+    String getName();
+
+    /**
+     * Method to set the table name.
+     * 
+     * @param table Table name
+     */
+    void setTable(String table);
+
+    /**
+     * Accessor for the name of the table.
+     * 
+     * @return The name
+     */
+    String getTable();
+
+    /**
+     * Method to set the column name.
+     * 
+     * @param col Column name
+     */
+    void setColumn(String col);
+
+    /**
+     * Accessor for the name of the column.
+     * 
+     * @return The column name
+     */
+    String getColumn();
+
+    /**
+     * Method to set the field type(s). For defining where we want to restrict
+     * what type is stored in a field
+     * 
+     * @param type Type of field
+     */
+    void setFieldType(String type);
+
+    /**
+     * Accessor for the type storable in the field
+     * 
+     * @return The field type
+     */
+    String getFieldType();
+
+    /**
+     * Method to set the delete action of the FK
+     * 
+     * @param action Delete action of the FK
+     */
+    void setDeleteAction(ForeignKeyAction action);
+
+    /**
+     * Accessor for the delete action of the FK
+     * 
+     * @return The FK delete-action
+     */
+    ForeignKeyAction getDeleteAction();
+
+    /**
+     * Method to set the persistence-modifier of the field/property.
+     * 
+     * @param mod persistence modifier
+     */
+    void setPersistenceModifier(PersistenceModifier mod);
+
+    /**
+     * Accessor for the persistence modifier of the field/property.
+     * 
+     * @return The persistence modifier
+     */
+    PersistenceModifier getPersistenceModifier();
+
+    /**
+     * Method to set the behaviour of a null value
+     * 
+     * @param val Null value behaviour
+     */
+    void setNullValue(NullValue val);
+
+    /**
+     * Accessor for the behaviour of a null value
+     * 
+     * @return The null value behaviour
+     */
+    NullValue getNullValue();
+
+    /**
+     * Method to set whether it is in the DFG.
+     * 
+     * @param dfg DFG?
+     */
+    void setDefaultFetchGroup(boolean dfg);
+
+    /**
+     * Accessor for whether part of the DFG.
+     * 
+     * @return dfg?
+     */
+    Boolean getDefaultFetchGroup();
+
+    /**
+     * Method to set whether it is unique.
+     * 
+     * @param unique Unique?
+     */
+    void setDependent(boolean unique);
+
+    /**
+     * Accessor for whether unique.
+     * 
+     * @return Unique?
+     */
+    Boolean getDependent();
+
+    /**
+     * Method to set whether it is embedded.
+     * 
+     * @param emb Embedded?
+     */
+    void setEmbedded(boolean emb);
+
+    /**
+     * Accessor for whether it is embedded.
+     * 
+     * @return embedded?
+     */
+    Boolean getEmbedded();
+
+    /**
+     * Method to set whether it is serialized.
+     * 
+     * @param ser serialized?
+     */
+    void setSerialized(boolean ser);
+
+    /**
+     * Accessor for whether it is serialized.
+     * 
+     * @return serialized?
+     */
+    Boolean getSerialized();
+
+    /**
+     * Method to set whether it is part of the pk
+     * 
+     * @param pk PK?
+     */
+    void setPrimaryKey(boolean unique);
+
+    /**
+     * Accessor for whether it is part of the pk.
+     * 
+     * @return pk?
+     */
+    boolean getPrimaryKey();
+
+    /**
+     * Method to set whether it is indexed.
+     * 
+     * @param index Indexed?
+     */
+    void setIndexed(boolean index);
+
+    /**
+     * Accessor for whether it is indexed.
+     * 
+     * @return Indexed?
+     */
+    Boolean getIndexed();
+
+    /**
+     * Method to set whether it is unique.
+     * 
+     * @param unique Unique?
+     */
+    void setUnique(boolean unique);
+
+    /**
+     * Accessor for whether unique.
+     * 
+     * @return Unique?
+     */
+    Boolean getUnique();
+
+    /**
+     * Method to set whether this is cacheable
+     * 
+     * @param cacheable Cacheable?
+     */
+    void setCacheable(boolean cacheable);
+
+    /**
+     * Accessor for whether this is cacheable.
+     * 
+     * @return Detachable?
+     */
+    boolean getCacheable();
+
+    /**
+     * Method to set the recursion depth (when used in a fetch group).
+     * 
+     * @param depth Recursion depth
+     */
+    void setRecursionDepth(int depth);
+
+    /**
+     * Accessor for the recursion depth (when part of a fetch group).
+     * 
+     * @return Recursion depth?
+     */
+    int getRecursionDepth();
+
+    /**
+     * Method to set the load fetch group.
+     * 
+     * @param grp Load fetch group
+     */
+    void setLoadFetchGroup(String type);
+
+    /**
+     * Accessor for the name of the load fetch group
+     * 
+     * @return The load fetch group
+     */
+    String getLoadFetchGroup();
+
+    /**
+     * Method to set the value strategy
+     * 
+     * @param str Value strategy
+     */
+    void setValueStrategy(String str);
+
+    /**
+     * Accessor for the value strategy
+     * 
+     * @return Value strategy
+     */
+    String getValueStrategy();
+
+    /**
+     * Method to set the custom identity generation strategy.
+     * 
+     * @param strategy The strategy
+     */
+    void setCustomStrategy(String strategy);
+
+    /**
+     * Accessor for the custom strategy (overriding "strategy").
+     * 
+     * @return The strategy
+     */
+    String getCustomStrategy();
+
+    /**
+     * Method to set the sequence (when using value-strategy of "sequence")
+     * 
+     * @param seq Sequence key
+     */
+    void setSequence(String seq);
+
+    /**
+     * Accessor for the sequence (when using value-strategy of "sequence")
+     * 
+     * @return Sequence key
+     */
+    String getSequence();
+
+    /**
+     * Method to set the field on the other side of a bidirectional relation
+     * (this side is owner)
+     * 
+     * @param map  mapped-by field/property
+     */
+    void setMappedBy(String map);
+
+    /**
+     * Accessor for the mapped-by field/property
+     * 
+     * @return mapped-by field/property
+     */
+    String getMappedBy();
+
+    /**
+     * Method to define the array details (if the field/property is an array)
+     * 
+     * @return The ArrayMetadata
+     */
+    ArrayMetadata newArrayMetadata();
+
+    /**
+     * Accessor for the array details.
+     * 
+     * @return array details
+     */
+    ArrayMetadata getArrayMetadata();
+
+    /**
+     * Method to define the array details (if the field/property is an array)
+     * 
+     * @return The ArrayMetadata
+     */
+    CollectionMetadata newCollectionMetadata();
+
+    /**
+     * Accessor for the array details.
+     * 
+     * @return array details
+     */
+    CollectionMetadata getCollectionMetadata();
+
+    /**
+     * Method to define the map details (if the field/property is an map)
+     * 
+     * @return The MapMetadata
+     */
+    MapMetadata newMapMetadata();
+
+    /**
+     * Accessor for the map details.
+     * 
+     * @return map details
+     */
+    MapMetadata getMapMetadata();
+
+    /**
+     * Method to define the join details
+     * 
+     * @return The JoinMetadata
+     */
+    JoinMetadata newJoinMetadata();
+
+    /**
+     * Accessor for the join details.
+     * 
+     * @return join details
+     */
+    JoinMetadata getJoinMetadata();
+
+    /**
+     * Method to define the embedded details
+     * 
+     * @return The EmbeddedMetadata
+     */
+    EmbeddedMetadata newEmbeddedMetadata();
+
+    /**
+     * Accessor for the embedded metadata.
+     * 
+     * @return embedded metadata
+     */
+    EmbeddedMetadata getEmbeddedMetadata();
+
+    /**
+     * Method to define the new element details
+     * 
+     * @return The ElementMetadata
+     */
+    ElementMetadata newElementMetadata();
+
+    /**
+     * Accessor for the element details
+     * 
+     * @return element details
+     */
+    ElementMetadata getElementMetadata();
+
+    /**
+     * Method to define the key details
+     * 
+     * @return The KeyMetadata
+     */
+    KeyMetadata newKeyMetadata();
+
+    /**
+     * Accessor for the key details
+     * 
+     * @return key details
+     */
+    KeyMetadata getKeyMetadata();
+
+    /**
+     * Method to define the value details
+     * 
+     * @return The ValueMetadata
+     */
+    ValueMetadata newValueMetadata();
+
+    /**
+     * Accessor for the value details
+     * 
+     * @return value details
+     */
+    ValueMetadata getValueMetadata();
+
+    /**
+     * Method to set index metadata for the field/property
+     * 
+     * @param index The metadata for any index
+     */
+    IndexMetadata newIndexMetadata();
+
+    /**
+     * Accessor for any index metadata for the field/property
+     * 
+     * @return Index metadata
+     */
+    IndexMetadata getIndexMetadata();
+
+    /**
+     * Method to set new unique constraint metadata for the field/property
+     * 
+     * @return The UniqueMetadata
+     */
+    UniqueMetadata newUniqueMetadata();
+
+    /**
+     * Accessor for any unique constraint metadata on this field/property.
+     * 
+     * @return The UniqueMetadata
+     */
+    UniqueMetadata getUniqueMetadata();
+
+    /**
+     * Method to set new foreign key metadata for the field/property
+     * 
+     * @return The ForeignKeyMetadata
+     */
+    ForeignKeyMetadata newForeignKeyMetadata();
+
+    /**
+     * Accessor for any foreign key metadata on this field/property.
+     * 
+     * @return The ForeignKeyMetadata
+     */
+    ForeignKeyMetadata getForeignKeyMetadata();
+}
\ No newline at end of file

Added: db/jdo/trunk/api2/src/java/javax/jdo/metadata/Metadata.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/java/javax/jdo/metadata/Metadata.java?rev=724172&view=auto
==============================================================================
--- db/jdo/trunk/api2/src/java/javax/jdo/metadata/Metadata.java (added)
+++ db/jdo/trunk/api2/src/java/javax/jdo/metadata/Metadata.java Sun Dec  7 10:52:55 2008
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.jdo.metadata;
+
+/**
+ * This interface provides base level definitions for all metadata components.
+ *
+ * @version 2.3
+ */
+public interface Metadata {
+    /**
+     * Add a vendor extension to this metadata component.
+     * 
+     * @param vendor Identifier for the vendor
+     * @param key The extension key
+     * @param value Value for the extension
+     * @return The ExtensionMetaData
+     */
+    ExtensionMetadata newExtensionMetaData(String vendor, String key, String value);
+
+    /**
+     * Number of extensions on this component.
+     * 
+     * @return Number of extensions
+     */
+    int getNumberOfExtensions();
+
+    /**
+     * Accessor for the defined extensions for this component
+     * 
+     * @return The extensions
+     */
+    ExtensionMetadata[] getExtensions();
+
+    /**
+     * Accessor for the parent metadata component.
+     * 
+     * @return The parent
+     */
+    Metadata getParent();
+}
\ No newline at end of file

Added: db/jdo/trunk/api2/src/java/javax/jdo/metadata/OrderMetadata.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/java/javax/jdo/metadata/OrderMetadata.java?rev=724172&view=auto
==============================================================================
--- db/jdo/trunk/api2/src/java/javax/jdo/metadata/OrderMetadata.java (added)
+++ db/jdo/trunk/api2/src/java/javax/jdo/metadata/OrderMetadata.java Sun Dec  7 10:52:55 2008
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.jdo.metadata;
+
+/**
+ * Represents ordering of a collection field/property.
+ * @since 2.3
+ */
+public interface OrderMetadata extends Metadata {
+    /**
+     * Method to set the version column name.
+     * 
+     * @param column Name of the version clumn
+     */
+    void setColumn(String column);
+
+    /**
+     * Accessor for the version column name
+     * 
+     * @return The version column name
+     */
+    String getColumn();
+
+    /**
+     * Method to set mapped-by information whether the order is present in the element class.
+     * 
+     * @param mappedBy Field/property name in which to store the ordering in the element
+     */
+    void setMappedBy(String mappedBy);
+
+    /**
+     * Accessor for the mapped-by field/property name in the element class.
+     * 
+     * @return Name of field/property in element class
+     */
+    String getMappedBy();
+
+    /**
+     * Accessor for all column(s) defined on the ordering.
+     * 
+     * @return The column(s)
+     */
+    ColumnMetadata[] getColumns();
+
+    /**
+     * Add a column for this ordering.
+     * 
+     * @return The ColumnMetadata
+     */
+    ColumnMetadata newColumnMetadata();
+
+    /**
+     * Accessor for the number of columns defined for this ordering.
+     * 
+     * @return The number of columns
+     */
+    int getNumberOfColumns();
+
+    /**
+     * Method to set index metadata for the ordering
+     * 
+     * @param index The metadata for any index
+     */
+    IndexMetadata newIndexMetadata();
+
+    /**
+     * Accessor for any index metadata for the ordering
+     * 
+     * @return Index metadata
+     */
+    IndexMetadata getIndexMetadata();
+}
\ No newline at end of file

Added: db/jdo/trunk/api2/src/java/javax/jdo/metadata/PackageMetadata.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/java/javax/jdo/metadata/PackageMetadata.java?rev=724172&view=auto
==============================================================================
--- db/jdo/trunk/api2/src/java/javax/jdo/metadata/PackageMetadata.java (added)
+++ db/jdo/trunk/api2/src/java/javax/jdo/metadata/PackageMetadata.java Sun Dec  7 10:52:55 2008
@@ -0,0 +1,128 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.jdo.metadata;
+
+import javax.jdo.annotations.SequenceStrategy;
+
+/**
+ * Represents a package within a JDOMetadata.
+ * @since 2.3
+ */
+public interface PackageMetadata extends Metadata {
+    /**
+     * Accessor for the name of this package (set on construction).
+     * 
+     * @return The name
+     */
+    String getName();
+
+    /**
+     * Method to set the catalog (ORM) to apply to all classes in this package.
+     * 
+     * @param catalog Catalog name
+     */
+    void setCatalog(String catalog);
+
+    /**
+     * Accessor for the catalog (ORM) that all classes in this package default
+     * to.
+     * 
+     * @return The catalog
+     */
+    String getCatalog();
+
+    /**
+     * Method to set the schema (ORM) to apply to all classes in this package.
+     * 
+     * @param schema Schema name
+     */
+    void setSchema(String schema);
+
+    /**
+     * Accessor for the schema (ORM) that all classes in this package default to.
+     * 
+     * @return The schema
+     */
+    String getSchema();
+
+    /**
+     * Accessor for all classes defined in this package.
+     * 
+     * @return The classes
+     */
+    ClassMetadata[] getClasses();
+
+    /**
+     * Add a new class to this package.
+     * 
+     * @param name Name of the class
+     * @return The ClassMetadata
+     */
+    ClassMetadata newClassMetadata(String name);
+
+    /**
+     * Accessor for the number of classes defined in this package.
+     * 
+     * @return The number of classes.
+     */
+    int getNumberOfClasses();
+
+    /**
+     * Accessor for all interfaces defined in this package.
+     * 
+     * @return The interfaces
+     */
+    InterfaceMetadata[] getInterfaces();
+
+    /**
+     * Add a new interface to this package.
+     * 
+     * @param name The interface name
+     * @return The InterfaceMetadata
+     */
+    InterfaceMetadata newInterfaceMetadata(String name);
+
+    /**
+     * Accessor for the number of interfaces defined in this package.
+     * 
+     * @return The number of interfaces.
+     */
+    int getNumberOfInterfaces();
+
+    /**
+     * Accessor for any sequences defined on the package.
+     * 
+     * @return The sequences
+     */
+    SequenceMetadata[] getSequences();
+
+    /**
+     * Add a new sequence to this package.
+     * 
+     * @param name Name of the sequence
+     * @param strategy Strategy for the sequence
+     * @return The SequenceMetadata
+     */
+    SequenceMetadata newSequenceMetadata(String name, SequenceStrategy strategy);
+
+    /**
+     * Accessor for the number of sequences defined for this package.
+     * 
+     * @return The number of sequences.
+     */
+    int getNumberOfSequences();
+}
\ No newline at end of file

Added: db/jdo/trunk/api2/src/java/javax/jdo/metadata/PrimaryKeyMetadata.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/java/javax/jdo/metadata/PrimaryKeyMetadata.java?rev=724172&view=auto
==============================================================================
--- db/jdo/trunk/api2/src/java/javax/jdo/metadata/PrimaryKeyMetadata.java (added)
+++ db/jdo/trunk/api2/src/java/javax/jdo/metadata/PrimaryKeyMetadata.java Sun Dec  7 10:52:55 2008
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.jdo.metadata;
+
+/**
+ * Represents the primary key definition of a class.
+ * @since 2.3
+ */
+public interface PrimaryKeyMetadata extends Metadata {
+    /**
+     * Method to set the name of the PK constraint.
+     * 
+     * @param name Name of the PK constraint
+     */
+    void setName(String strategy);
+
+    /**
+     * Accessor for the name of the PK constraint.
+     * 
+     * @return The PK constraint name
+     */
+    String getName();
+
+    /**
+     * Method to set the PK column name.
+     * 
+     * @param column Name of the PK column
+     */
+    void setColumn(String column);
+
+    /**
+     * Accessor for the PK column name
+     * 
+     * @return The column name
+     */
+    String getColumn();
+
+    /**
+     * Accessor for all column(s) defined on the PK.
+     * 
+     * @return The column(s)
+     */
+    ColumnMetadata[] getColumns();
+
+    /**
+     * Add a new column for this PK
+     * 
+     * @return The ColumnMetadata
+     */
+    ColumnMetadata newColumnMetadata();
+
+    /**
+     * Accessor for the number of columns defined for this PK
+     * 
+     * @return The number of columns
+     */
+    int getNumberOfColumns();
+}
\ No newline at end of file

Added: db/jdo/trunk/api2/src/java/javax/jdo/metadata/PropertyMetadata.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/java/javax/jdo/metadata/PropertyMetadata.java?rev=724172&view=auto
==============================================================================
--- db/jdo/trunk/api2/src/java/javax/jdo/metadata/PropertyMetadata.java (added)
+++ db/jdo/trunk/api2/src/java/javax/jdo/metadata/PropertyMetadata.java Sun Dec  7 10:52:55 2008
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.jdo.metadata;
+
+/**
+ * Represents a property in a class/persistent-interface.
+ * @since 2.3
+ */
+public interface PropertyMetadata extends MemberMetadata {
+    /**
+     * Method to set the field name (persistent interfaces)
+     * 
+     * @param name field name
+     */
+    void setFieldName(String str);
+
+    /**
+     * Accessor for the field name
+     * 
+     * @return Field name
+     */
+    String getFieldName();
+}
\ No newline at end of file

Added: db/jdo/trunk/api2/src/java/javax/jdo/metadata/QueryMetadata.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/java/javax/jdo/metadata/QueryMetadata.java?rev=724172&view=auto
==============================================================================
--- db/jdo/trunk/api2/src/java/javax/jdo/metadata/QueryMetadata.java (added)
+++ db/jdo/trunk/api2/src/java/javax/jdo/metadata/QueryMetadata.java Sun Dec  7 10:52:55 2008
@@ -0,0 +1,112 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.jdo.metadata;
+
+/**
+ * Represents a named query.
+ * @since 2.3
+ */
+public interface QueryMetadata extends Metadata {
+    /**
+     * Accessor for the name of the query (set on construction).
+     * 
+     * @return The name
+     */
+    String getName();
+
+    /**
+     * Method to set the language of the query.
+     * 
+     * @param lang Query language
+     */
+    void setLanguage(String lang);
+
+    /**
+     * Accessor for the query language.
+     * 
+     * @return The language
+     */
+    String getLanguage();
+
+    /**
+     * Method to set the single-string query.
+     * 
+     * @param query The query
+     */
+    void setQuery(String query);
+
+    /**
+     * Accessor for the single-string query.
+     * 
+     * @return The query
+     */
+    String getQuery();
+
+    /**
+     * Method to set the result class name for the query
+     * 
+     * @param clsName Result class name
+     */
+    void setResultClass(String clsName);
+
+    /**
+     * Accessor for the result class name for the query.
+     * 
+     * @return The result class name
+     */
+    String getResultClass();
+
+    /**
+     * Method to set if the query results are unique
+     * 
+     * @param unique Whether they are unique
+     */
+    void setUnique(boolean unique);
+
+    /**
+     * Accessor for whether results from the query are unique
+     * 
+     * @return Results are unique?
+     */
+    Boolean getUnique();
+
+    /**
+     * Method to set the query as not being modifiable from now.
+     */
+    void setUnmodifiable();
+
+    /**
+     * Accessor for whether the query is unmodifiable.
+     * 
+     * @return Can't be changed?
+     */
+    boolean getUnmodifiable();
+
+    /**
+     * Method to set the FetchPlan to use for this named query.
+     * 
+     * @param fetchPlanName name of the FetchPlan
+     */
+    void setFetchPlan(String fetchPlanName);
+
+    /**
+     * Accessor for the name of a fetch plan to use (if any).
+     * 
+     * @return The fetch plan name
+     */
+    String getFetchPlan();
+}
\ No newline at end of file

Added: db/jdo/trunk/api2/src/java/javax/jdo/metadata/SequenceMetadata.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/java/javax/jdo/metadata/SequenceMetadata.java?rev=724172&view=auto
==============================================================================
--- db/jdo/trunk/api2/src/java/javax/jdo/metadata/SequenceMetadata.java (added)
+++ db/jdo/trunk/api2/src/java/javax/jdo/metadata/SequenceMetadata.java Sun Dec  7 10:52:55 2008
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.jdo.metadata;
+
+import javax.jdo.annotations.SequenceStrategy;
+
+/**
+ * Represents a sequence.
+ * @since 2.3
+ */
+public interface SequenceMetadata extends Metadata {
+    /**
+     * Accessor for the name of the sequence (set on construction).
+     * 
+     * @return The name
+     */
+    String getName();
+
+    /**
+     * Accessor for the sequence strategy (set on construction).
+     * 
+     * @return Sequence strategy
+     */
+    SequenceStrategy getSequenceStrategy();
+
+    /**
+     * Method to set the name of the datastore sequence that this maps to.
+     * 
+     * @param seq Datastore sequence name
+     */
+    void setDatastoreSequence(String seq);
+
+    /**
+     * Accessor for the name of the datastore sequence that this maps to
+     * 
+     * @return The datastore sequence name
+     */
+    String getDatastoreSequence();
+
+    /**
+     * Method to set the result class name for the query
+     * 
+     * @param clsName Result class name
+     */
+    void setFactoryClass(String clsName);
+
+    /**
+     * Accessor for the factory class for this sequence.
+     * 
+     * @return The factory class
+     */
+    String getFactoryClass();
+}
\ No newline at end of file

Added: db/jdo/trunk/api2/src/java/javax/jdo/metadata/UniqueMetadata.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/java/javax/jdo/metadata/UniqueMetadata.java?rev=724172&view=auto
==============================================================================
--- db/jdo/trunk/api2/src/java/javax/jdo/metadata/UniqueMetadata.java (added)
+++ db/jdo/trunk/api2/src/java/javax/jdo/metadata/UniqueMetadata.java Sun Dec  7 10:52:55 2008
@@ -0,0 +1,130 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.jdo.metadata;
+
+/**
+ * Represents a unique constraint.
+ * @since 2.3
+ */
+public interface UniqueMetadata extends Metadata {
+    /**
+     * Method to set the name of the constraint
+     * 
+     * @param name Name of the constraint
+     */
+    void setName(String name);
+
+    /**
+     * Accessor for the constraint name.
+     * 
+     * @return The constraint name
+     */
+    String getName();
+
+    /**
+     * Method to set the table name.
+     * 
+     * @param table Table name
+     */
+    void setTable(String table);
+
+    /**
+     * Accessor for the name of the table.
+     * 
+     * @return The name
+     */
+    String getTable();
+
+    /**
+     * Method to set whether the constraint is deferred.
+     * 
+     * @param def Deferred?
+     */
+    void setDeferred(boolean def);
+
+    /**
+     * Accessor for whether deferred.
+     * 
+     * @return Deferred?
+     */
+    Boolean getDeferred();
+
+    /**
+     * Accessor for all column(s) defined on the unique constraint.
+     * 
+     * @return The column(s)
+     */
+    ColumnMetadata[] getColumns();
+
+    /**
+     * Add a new column for this unique constraint.
+     * 
+     * @return The ColumnMetadata
+     */
+    ColumnMetadata newColumnMetadata();
+
+    /**
+     * Accessor for the number of columns defined for this unique constraint.
+     * 
+     * @return The number of columns
+     */
+    int getNumberOfColumns();
+
+    /**
+     * Accessor for all field(s) defined on the unique constraint.
+     * 
+     * @return The field(s)
+     */
+    FieldMetadata[] getFields();
+
+    /**
+     * Add a new field for this unique constraint.
+     * 
+     * @param name Name of the field
+     * @return The FieldMetadata
+     */
+    FieldMetadata newFieldMetadata(String name);
+
+    /**
+     * Accessor for the number of fields defined for this unique constraint.
+     * 
+     * @return The number of fields
+     */
+    int getNumberOfFields();
+
+    /**
+     * Accessor for all properties defined on the unique constraint.
+     * 
+     * @return The properties
+     */
+    PropertyMetadata[] getProperties();
+
+    /**
+     * Add a new property for this unique constraint.
+     * 
+     * @param name Name of the property
+     * @return The PropertyMetadata
+     */
+    PropertyMetadata newPropertyMetadata(String name);
+
+    /**
+     * Accessor for the number of properties defined for this unique constraint.
+     * 
+     * @return The number of properties
+     */
+    int getNumberOfProperties();
+}
\ No newline at end of file

Added: db/jdo/trunk/api2/src/java/javax/jdo/metadata/ValueMetadata.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/java/javax/jdo/metadata/ValueMetadata.java?rev=724172&view=auto
==============================================================================
--- db/jdo/trunk/api2/src/java/javax/jdo/metadata/ValueMetadata.java (added)
+++ db/jdo/trunk/api2/src/java/javax/jdo/metadata/ValueMetadata.java Sun Dec  7 10:52:55 2008
@@ -0,0 +1,137 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.jdo.metadata;
+
+import javax.jdo.annotations.ForeignKeyAction;
+
+/**
+ * Represents a value in a map.
+ * @since 2.3
+ */
+public interface ValueMetadata extends Metadata {
+    /**
+     * Method to set the column name.
+     * 
+     * @param column Column name
+     */
+    void setColumn(String column);
+
+    /**
+     * Accessor for the name of the column.
+     * 
+     * @return The name
+     */
+    String getColumn();
+
+    /**
+     * Method to set the table name.
+     * 
+     * @param table Table name
+     */
+    void setTable(String table);
+
+    /**
+     * Accessor for the name of the table.
+     * 
+     * @return The name
+     */
+    String getTable();
+
+    /**
+     * Method to set the delete action of the FK
+     * 
+     * @param action Delete action of the FK
+     */
+    void setDeleteAction(ForeignKeyAction action);
+
+    /**
+     * Accessor for the delete action of the FK
+     * 
+     * @return The FK delete-action
+     */
+    ForeignKeyAction getDeleteAction();
+
+    /**
+     * Method to set the update action of the FK
+     * 
+     * @param action Update action of the FK
+     */
+    void setUpdateAction(ForeignKeyAction action);
+
+    /**
+     * Accessor for the update action of the FK
+     * 
+     * @return The FK update-action
+     */
+    ForeignKeyAction getUpdateAction();
+
+    /**
+     * Method to set new embedded metadata for the value.
+     * 
+     * @return The EmbeddedMetadata
+     */
+    EmbeddedMetadata setEmbeddedMetadata();
+
+    /**
+     * Accessor for any embedded metadata on this value
+     * 
+     * @return The EmbeddedMetadata
+     */
+    EmbeddedMetadata getEmbeddedMetadata();
+
+    /**
+     * Method to set new index metadata for the value.
+     * 
+     * @return The IndexMetadata
+     */
+    IndexMetadata setIndexMetadata();
+
+    /**
+     * Accessor for any index metadata on this value
+     * 
+     * @return Index metadata
+     */
+    IndexMetadata getIndexMetadata();
+
+    /**
+     * Method to set new unique constraint metadata for the value
+     * 
+     * @return The UniqueMetadata
+     */
+    UniqueMetadata setUniqueMetadata();
+
+    /**
+     * Accessor for any unique constraint metadata on this value.
+     * 
+     * @return The UniqueMetadata
+     */
+    UniqueMetadata getUniqueMetadata();
+
+    /**
+     * Method to set new foreign key metadata for the value
+     * 
+     * @return The ForeignKeyMetadata
+     */
+    ForeignKeyMetadata setForeignKeyMetadata();
+
+    /**
+     * Accessor for any foreign key metadata on this value.
+     * 
+     * @return The ForeignKeyMetadata
+     */
+    ForeignKeyMetadata getForeignKeyMetadata();
+}
\ No newline at end of file

Added: db/jdo/trunk/api2/src/java/javax/jdo/metadata/VersionMetadata.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/java/javax/jdo/metadata/VersionMetadata.java?rev=724172&view=auto
==============================================================================
--- db/jdo/trunk/api2/src/java/javax/jdo/metadata/VersionMetadata.java (added)
+++ db/jdo/trunk/api2/src/java/javax/jdo/metadata/VersionMetadata.java Sun Dec  7 10:52:55 2008
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.jdo.metadata;
+
+import javax.jdo.annotations.VersionStrategy;
+
+/**
+ * Represents versioning of a class.
+ * @since 2.3
+ */
+public interface VersionMetadata extends Metadata {
+    /**
+     * Method to set the version strategy.
+     * 
+     * @param strategy The strategy
+     */
+    void setStrategy(VersionStrategy strategy);
+
+    /**
+     * Accessor for the version strategy.
+     * 
+     * @return The strategy
+     */
+    VersionStrategy getStrategy();
+
+    /**
+     * Method to set the version column name.
+     * 
+     * @param column Name of the version clumn
+     */
+    void setColumn(String column);
+
+    /**
+     * Accessor for the version column name
+     * 
+     * @return The version column name
+     */
+    String getColumn();
+
+    /**
+     * Method to set whether indexed.
+     * 
+     * @param indexed Whether indexed (true | false | unique)
+     */
+    void setIndexed(Indexed indexed);
+
+    /**
+     * Accessor for whether indexed (true|false|unique)
+     * 
+     * @return Indexed?
+     */
+    Indexed getIndexed();
+
+    /**
+     * Accessor for all column(s) defined on the version.
+     * 
+     * @return The column(s)
+     */
+    ColumnMetadata[] getColumns();
+
+    /**
+     * Add a new column for this version.
+     * 
+     * @return The ColumnMetadata
+     */
+    ColumnMetadata newColumnMetadata();
+
+    /**
+     * Accessor for the number of columns defined for this version.
+     * 
+     * @return The number of columns
+     */
+    int getNumberOfColumns();
+
+    /**
+     * Method to set index metadata for the version
+     * 
+     * @version The IndexMetadata
+     */
+    IndexMetadata newIndexMetadata();
+
+    /**
+     * Accessor for any index metadata on this version
+     * 
+     * @return Index metadata
+     */
+    IndexMetadata getIndexMetadata();
+}
\ No newline at end of file

Added: db/jdo/trunk/api2/src/java/javax/jdo/metadata/package.html
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/java/javax/jdo/metadata/package.html?rev=724172&view=auto
==============================================================================
--- db/jdo/trunk/api2/src/java/javax/jdo/metadata/package.html (added)
+++ db/jdo/trunk/api2/src/java/javax/jdo/metadata/package.html Sun Dec  7 10:52:55 2008
@@ -0,0 +1,28 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+ 
+     http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing, software 
+ distributed under the License is distributed on an "AS IS" BASIS, 
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ See the License for the specific language governing permissions and 
+ limitations under the License.
+-->
+
+<html>
+<head>
+<title>MetaData package</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</head>
+
+<body bgcolor="#FFFFFF">
+    This package contains classes representing the different components of the JDO MetaData.
+    It mirrors the structure of the XML schema.
+</body>
+</html>