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 cl...@apache.org on 2012/02/24 05:26:02 UTC
svn commit: r1293075 [4/12] - in /db/jdo/trunk/specification: ./ imports/
Added: db/jdo/trunk/specification/imports/Persistent.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/Persistent.java?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/Persistent.java (added)
+++ db/jdo/trunk/specification/imports/Persistent.java Fri Feb 24 04:25:57 2012
@@ -0,0 +1,185 @@
+@Target({ElementType.FIELD, ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Persistent
+{
+ /** Modifier for this field. This is normally not specified, and the
+ * defaults are used, or the @Transactional or @NotPersistent
+ * annotation is specified directly on the member. One possible use
+ * for specifying persistenceModifier is for embedded instances in which
+ * a member is not persistent but in the non-embedded instances the
+ * member is persistent. Note that it is not portable to specify a
+ * member to be not persistent in the non-embedded case and persistent
+ * in the embedded usage.
+ * @return the persistence modifier
+ */
+ PersistenceModifier persistenceModifier()
+ default PersistenceModifier.UNSPECIFIED;
+
+ /** Table to use for persisting this member.
+ * @return the table to use for persisting this member
+ */
+ String table() default "";
+
+ /** Whether this member is in the default fetch group.
+ * @return whether this member is in the default fetch group
+ */
+ String defaultFetchGroup() default "";
+
+ /** Behavior when this member contains a null value.
+ * @return the behavior when this member contains a null value
+ */
+ NullValue nullValue() default NullValue.NONE;
+
+ /** Whether this member is embedded.
+ * @return whether this member is embedded
+ */
+ String embedded() default "";
+
+ /** Whether the elements of this member are embedded.
+ * @return whether the elements of this member are embedded
+ */
+ String embeddedElement() default "";
+
+ /** Whether the keys of this member are embedded.
+ * @return whether the keys of this member are embedded
+ */
+ String embeddedKey() default "";
+
+ /** Whether the values of this member are embedded.
+ * @return whether the values of this member are embedded
+ */
+ String embeddedValue() default "";
+
+ /** Whether this member is serialized into a single column.
+ * @return whether this member is serialized into a single column
+ */
+ String serialized() default "";
+
+ /** Whether the elements of this member are serialized.
+ * @return whether the elements of this member are serialized
+ */
+ String serializedElement() default "";
+
+ /** Whether the keys of this member are serialized.
+ * @return whether the keys of this member are serialized
+ */
+ String serializedKey() default "";
+
+ /** Whether the values of this member are serialized.
+ * @return whether the values of this member are serialized
+ */
+ String serializedValue() default "";
+
+ /** Whether related object(s) of this member are dependent
+ * and so deleted when this object is deleted.
+ * @return whether the related object(s) of this member
+ * are dependent
+ */
+ String dependent() default "";
+
+ /** Whether the elements of this member are dependent.
+ * @return whether the elements of this member are dependent
+ */
+ String dependentElement() default "";
+
+ /** Whether the keys of this member are dependent.
+ * @return whether the keys of this member are dependent
+ */
+ String dependentKey() default "";
+
+ /** Whether the values of this member are dependent.
+ * @return whether the values of this member are dependent
+ */
+ String dependentValue() default "";
+
+ /** Whether this member is part of the primary key for application
+ * identity. This is equivalent to specifying @PrimaryKey as
+ * a separate annotation on the member.
+ * @return whether this member is part of the primary key
+ */
+ String primaryKey() default "";
+
+ /** Value strategy to use to generate the value for this field
+ * or property (if any).
+ * @return the generated value strategy
+ */
+ IdGeneratorStrategy valueStrategy() default IdGeneratorStrategy.UNSPECIFIED;
+
+ /** Custom value strategy to use to generate the value for this field
+ * or property (if any). If customValueStrategy is non-empty, then
+ * valueStrategy must be UNSPECIFIED.
+ * @return the custom value strategy
+ */
+ String customValueStrategy() default "";
+
+ /** Name of the sequence to use with particular value strategies.
+ * @return the name of the sequence
+ */
+ String sequence() default "";
+
+ /** Name of the fetch-group to use when this member is loaded
+ * due to being referenced when not already loaded.
+ * @return the name of the load fetch group
+ */
+ String loadFetchGroup() default "";
+
+ /** Types of the member. Used when the declared
+ * member type is a supertype of the actual type that is stored in the
+ * member. For example, the declared member type might be an interface type
+ * that must contain an object of a concrete type when used
+ * for persistence.
+ * @return the types
+ */
+ Class[] types() default {};
+
+ /** Name of the related member in the other class
+ * where this value is mapped (bidirectional relationship).
+ * @return the related member in the other class
+ */
+ String mappedBy() default "";
+
+ /** Column definition(s) for this member. Used for mapping
+ * multiple columns
+ * to the same member, for example relationships with
+ * multiple column foreign keys.
+ * @return the columns for this member
+ */
+ Column[] columns() default {};
+
+ /** Column name where the values are stored for this member.
+ * @return the name of the column
+ */
+ String column() default "";
+
+ /** Null indicator column for this member. Used for nested
+ * embedded fields or properties to indicate whether the embedded
+ * instance should have a null value.
+ * @return the null indicator column
+ */
+ String nullIndicatorColumn() default "";
+
+ /** Name of the member when this is embedded in another object.
+ * The fully-qualified member name is used. For example,
+ * "line.point1.x" refers to the member x in class Point
+ * that is embedded as member point1 in class Line that is embedded
+ * in a member called line.
+ * @return the name of the member
+ */
+ String name() default "";
+
+ /** Recursion depth for this member. Used only when
+ * the annotation is used within the definition of a FetchGroup.
+ * @return the recursion depth
+ */
+ int recursionDepth() default 1;
+
+ /** Whether this field/property is cacheable in a Level2 cache.
+ * @since 2.2
+ */
+ String cacheable() default "true";
+
+ /** Vendor extensions for this member.
+ * @return the vendor extensions
+ */
+ Extension[] extensions() default {};
+}
Propchange: db/jdo/trunk/specification/imports/Persistent.java
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/Persistent.txt
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/Persistent.txt?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/Persistent.txt (added)
+++ db/jdo/trunk/specification/imports/Persistent.txt Fri Feb 24 04:25:57 2012
@@ -0,0 +1,185 @@
+@Target({ElementType.FIELD, ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Persistent
+{
+ /** Modifier for this field. This is normally not specified, and the
+ * defaults are used, or the @Transactional or @NotPersistent
+ * annotation is specified directly on the member. One possible use
+ * for specifying persistenceModifier is for embedded instances in which
+ * a member is not persistent but in the non-embedded instances the
+ * member is persistent. Note that it is not portable to specify a
+ * member to be not persistent in the non-embedded case and persistent
+ * in the embedded usage.
+ * @return the persistence modifier
+ */
+ PersistenceModifier persistenceModifier()
+ default PersistenceModifier.UNSPECIFIED;
+
+ /** Table to use for persisting this member.
+ * @return the table to use for persisting this member
+ */
+ String table() default "";
+
+ /** Whether this member is in the default fetch group.
+ * @return whether this member is in the default fetch group
+ */
+ String defaultFetchGroup() default "";
+
+ /** Behavior when this member contains a null value.
+ * @return the behavior when this member contains a null value
+ */
+ NullValue nullValue() default NullValue.NONE;
+
+ /** Whether this member is embedded.
+ * @return whether this member is embedded
+ */
+ String embedded() default "";
+
+ /** Whether the elements of this member are embedded.
+ * @return whether the elements of this member are embedded
+ */
+ String embeddedElement() default "";
+
+ /** Whether the keys of this member are embedded.
+ * @return whether the keys of this member are embedded
+ */
+ String embeddedKey() default "";
+
+ /** Whether the values of this member are embedded.
+ * @return whether the values of this member are embedded
+ */
+ String embeddedValue() default "";
+
+ /** Whether this member is serialized into a single column.
+ * @return whether this member is serialized into a single column
+ */
+ String serialized() default "";
+
+ /** Whether the elements of this member are serialized.
+ * @return whether the elements of this member are serialized
+ */
+ String serializedElement() default "";
+
+ /** Whether the keys of this member are serialized.
+ * @return whether the keys of this member are serialized
+ */
+ String serializedKey() default "";
+
+ /** Whether the values of this member are serialized.
+ * @return whether the values of this member are serialized
+ */
+ String serializedValue() default "";
+
+ /** Whether related object(s) of this member are dependent
+ * and so deleted when this object is deleted.
+ * @return whether the related object(s) of this member
+ * are dependent
+ */
+ String dependent() default "";
+
+ /** Whether the elements of this member are dependent.
+ * @return whether the elements of this member are dependent
+ */
+ String dependentElement() default "";
+
+ /** Whether the keys of this member are dependent.
+ * @return whether the keys of this member are dependent
+ */
+ String dependentKey() default "";
+
+ /** Whether the values of this member are dependent.
+ * @return whether the values of this member are dependent
+ */
+ String dependentValue() default "";
+
+ /** Whether this member is part of the primary key for application
+ * identity. This is equivalent to specifying @PrimaryKey as
+ * a separate annotation on the member.
+ * @return whether this member is part of the primary key
+ */
+ String primaryKey() default "";
+
+ /** Value strategy to use to generate the value for this field
+ * or property (if any).
+ * @return the generated value strategy
+ */
+ IdGeneratorStrategy valueStrategy() default IdGeneratorStrategy.UNSPECIFIED;
+
+ /** Custom value strategy to use to generate the value for this field
+ * or property (if any). If customValueStrategy is non-empty, then
+ * valueStrategy must be UNSPECIFIED.
+ * @return the custom value strategy
+ */
+ String customValueStrategy() default "";
+
+ /** Name of the sequence to use with particular value strategies.
+ * @return the name of the sequence
+ */
+ String sequence() default "";
+
+ /** Name of the fetch-group to use when this member is loaded
+ * due to being referenced when not already loaded.
+ * @return the name of the load fetch group
+ */
+ String loadFetchGroup() default "";
+
+ /** Types of the member. Used when the declared
+ * member type is a supertype of the actual type that is stored in the
+ * member. For example, the declared member type might be an interface type
+ * that must contain an object of a concrete type when used
+ * for persistence.
+ * @return the types
+ */
+ Class[] types() default {};
+
+ /** Name of the related member in the other class
+ * where this value is mapped (bidirectional relationship).
+ * @return the related member in the other class
+ */
+ String mappedBy() default "";
+
+ /** Column definition(s) for this member. Used for mapping
+ * multiple columns
+ * to the same member, for example relationships with
+ * multiple column foreign keys.
+ * @return the columns for this member
+ */
+ Column[] columns() default {};
+
+ /** Column name where the values are stored for this member.
+ * @return the name of the column
+ */
+ String column() default "";
+
+ /** Null indicator column for this member. Used for nested
+ * embedded fields or properties to indicate whether the embedded
+ * instance should have a null value.
+ * @return the null indicator column
+ */
+ String nullIndicatorColumn() default "";
+
+ /** Name of the member when this is embedded in another object.
+ * The fully-qualified member name is used. For example,
+ * "line.point1.x" refers to the member x in class Point
+ * that is embedded as member point1 in class Line that is embedded
+ * in a member called line.
+ * @return the name of the member
+ */
+ String name() default "";
+
+ /** Recursion depth for this member. Used only when
+ * the annotation is used within the definition of a FetchGroup.
+ * @return the recursion depth
+ */
+ int recursionDepth() default 1;
+
+ /** Whether this field/property is cacheable in a Level2 cache.
+ * @since 2.2
+ */
+ String cacheable() default "true";
+
+ /** Vendor extensions for this member.
+ * @return the vendor extensions
+ */
+ Extension[] extensions() default {};
+}
Propchange: db/jdo/trunk/specification/imports/Persistent.txt
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/PrimaryKey.txt
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/PrimaryKey.txt?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/PrimaryKey.txt (added)
+++ db/jdo/trunk/specification/imports/PrimaryKey.txt Fri Feb 24 04:25:57 2012
@@ -0,0 +1,22 @@
+@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface PrimaryKey
+{
+ /**
+ * Name of the primary key constraint
+ * @return the name of the primary key constraint
+ */
+ String name() default "";
+
+ /**
+ * Name of the column to use for the primary key
+ * @return the name of the column to use for the primary key
+ */
+ String column() default "";
+
+ /**
+ * The column(s) for the primary key
+ * @return the column(s) for the primary key
+ */
+ Column[] columns() default {};
+}
Propchange: db/jdo/trunk/specification/imports/PrimaryKey.txt
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/PrimaryKeyMetadata.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/PrimaryKeyMetadata.java?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/PrimaryKeyMetadata.java (added)
+++ db/jdo/trunk/specification/imports/PrimaryKeyMetadata.java Fri Feb 24 04:25:57 2012
@@ -0,0 +1,74 @@
+/*
+ * 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
+ * @return The PK metadata
+ */
+ PrimaryKeyMetadata setName(String name);
+
+ /**
+ * 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
+ * @return The PK metadata
+ */
+ PrimaryKeyMetadata 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
Propchange: db/jdo/trunk/specification/imports/PrimaryKeyMetadata.java
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/PrimaryKeyMetadata.txt
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/PrimaryKeyMetadata.txt?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/PrimaryKeyMetadata.txt (added)
+++ db/jdo/trunk/specification/imports/PrimaryKeyMetadata.txt Fri Feb 24 04:25:57 2012
@@ -0,0 +1,56 @@
+/**
+ * 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
+ * @return The PK metadata
+ */
+ PrimaryKeyMetadata setName(String name);
+
+ /**
+ * 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
+ * @return The PK metadata
+ */
+ PrimaryKeyMetadata 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();
+}
Propchange: db/jdo/trunk/specification/imports/PrimaryKeyMetadata.txt
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/PropertyMetadata.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/PropertyMetadata.java?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/PropertyMetadata.java (added)
+++ db/jdo/trunk/specification/imports/PropertyMetadata.java Fri Feb 24 04:25:57 2012
@@ -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
+ */
+ PropertyMetadata setFieldName(String name);
+
+ /**
+ * Accessor for the field name
+ *
+ * @return Field name
+ */
+ String getFieldName();
+}
\ No newline at end of file
Propchange: db/jdo/trunk/specification/imports/PropertyMetadata.java
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/PropertyMetadata.txt
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/PropertyMetadata.txt?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/PropertyMetadata.txt (added)
+++ db/jdo/trunk/specification/imports/PropertyMetadata.txt Fri Feb 24 04:25:57 2012
@@ -0,0 +1,19 @@
+/**
+ * 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
+ */
+ PropertyMetadata setFieldName(String name);
+
+ /**
+ * Accessor for the field name
+ *
+ * @return Field name
+ */
+ String getFieldName();
+}
Propchange: db/jdo/trunk/specification/imports/PropertyMetadata.txt
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/Queries.txt
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/Queries.txt?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/Queries.txt (added)
+++ db/jdo/trunk/specification/imports/Queries.txt Fri Feb 24 04:25:57 2012
@@ -0,0 +1,10 @@
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Queries
+{
+ /**
+ * The named queries
+ * @return The named queries
+ */
+ Query[] value();
+}
Propchange: db/jdo/trunk/specification/imports/Queries.txt
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/Query.txt
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/Query.txt?rev=1293075&view=auto
==============================================================================
(empty)
Propchange: db/jdo/trunk/specification/imports/Query.txt
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/QueryMetadata.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/QueryMetadata.java?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/QueryMetadata.java (added)
+++ db/jdo/trunk/specification/imports/QueryMetadata.java Fri Feb 24 04:25:57 2012
@@ -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
+ */
+ QueryMetadata setLanguage(String lang);
+
+ /**
+ * Accessor for the query language.
+ *
+ * @return The language
+ */
+ String getLanguage();
+
+ /**
+ * Method to set the single-string query.
+ *
+ * @param query The query
+ */
+ QueryMetadata 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
+ */
+ QueryMetadata 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
+ */
+ QueryMetadata 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.
+ */
+ QueryMetadata 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
+ */
+ QueryMetadata 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
Propchange: db/jdo/trunk/specification/imports/QueryMetadata.java
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/QueryMetadata.txt
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/QueryMetadata.txt?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/QueryMetadata.txt (added)
+++ db/jdo/trunk/specification/imports/QueryMetadata.txt Fri Feb 24 04:25:57 2012
@@ -0,0 +1,94 @@
+/**
+ * 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
+ */
+ QueryMetadata setLanguage(String lang);
+
+ /**
+ * Accessor for the query language.
+ *
+ * @return The language
+ */
+ String getLanguage();
+
+ /**
+ * Method to set the single-string query.
+ *
+ * @param query The query
+ */
+ QueryMetadata 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
+ */
+ QueryMetadata 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
+ */
+ QueryMetadata 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.
+ */
+ QueryMetadata 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
+ */
+ QueryMetadata setFetchPlan(String fetchPlanName);
+
+ /**
+ * Accessor for the name of a fetch plan to use (if any).
+ *
+ * @return The fetch plan name
+ */
+ String getFetchPlan();
+}
Propchange: db/jdo/trunk/specification/imports/QueryMetadata.txt
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/Sequence.txt
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/Sequence.txt?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/Sequence.txt (added)
+++ db/jdo/trunk/specification/imports/Sequence.txt Fri Feb 24 04:25:57 2012
@@ -0,0 +1,29 @@
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Sequence
+{
+ /** The symbolic name of the datastore sequence.
+ * @return the name of the sequence
+ */
+ String name();
+
+ /** Strategy for the sequence.
+ * @return the strategy for the sequence
+ */
+ SequenceStrategy strategy();
+
+ /** Name of the sequence in the datastore.
+ * @return the name of the datastore sequence
+ */
+ String datastoreSequence() default "";
+
+ /** Name of a factory class for generating the sequence values.
+ * @return the name of the factory class for the sequence
+ */
+ Class factoryClass() default void.class;
+
+ /** Vendor extensions for this sequence.
+ * @return vendor extensions
+ */
+ Extension[] extensions() default {};
+}
Propchange: db/jdo/trunk/specification/imports/Sequence.txt
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/SequenceMetadata.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/SequenceMetadata.java?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/SequenceMetadata.java (added)
+++ db/jdo/trunk/specification/imports/SequenceMetadata.java Fri Feb 24 04:25:57 2012
@@ -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
+ */
+ SequenceMetadata 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
+ */
+ SequenceMetadata setFactoryClass(String clsName);
+
+ /**
+ * Accessor for the factory class for this sequence.
+ *
+ * @return The factory class
+ */
+ String getFactoryClass();
+}
\ No newline at end of file
Propchange: db/jdo/trunk/specification/imports/SequenceMetadata.java
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/SequenceMetadata.txt
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/SequenceMetadata.txt?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/SequenceMetadata.txt (added)
+++ db/jdo/trunk/specification/imports/SequenceMetadata.txt Fri Feb 24 04:25:57 2012
@@ -0,0 +1,47 @@
+/**
+ * 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
+ */
+ SequenceMetadata 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
+ */
+ SequenceMetadata setFactoryClass(String clsName);
+
+ /**
+ * Accessor for the factory class for this sequence.
+ *
+ * @return The factory class
+ */
+ String getFactoryClass();
+}
Propchange: db/jdo/trunk/specification/imports/SequenceMetadata.txt
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/SequenceStrategy.txt
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/SequenceStrategy.txt?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/SequenceStrategy.txt (added)
+++ db/jdo/trunk/specification/imports/SequenceStrategy.txt Fri Feb 24 04:25:57 2012
@@ -0,0 +1,7 @@
+
+public enum SequenceStrategy
+{
+ NONTRANSACTIONAL,
+ CONTIGUOUS,
+ NONCONTIGUOUS
+}
Propchange: db/jdo/trunk/specification/imports/SequenceStrategy.txt
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/Serialized.txt
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/Serialized.txt?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/Serialized.txt (added)
+++ db/jdo/trunk/specification/imports/Serialized.txt Fri Feb 24 04:25:57 2012
@@ -0,0 +1,5 @@
+@Target({ElementType.FIELD, ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Serialized
+{
+}
Propchange: db/jdo/trunk/specification/imports/Serialized.txt
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/Transaction.txt
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/Transaction.txt?rev=1293075&view=auto
==============================================================================
(empty)
Propchange: db/jdo/trunk/specification/imports/Transaction.txt
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/Transactional.txt
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/Transactional.txt?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/Transactional.txt (added)
+++ db/jdo/trunk/specification/imports/Transactional.txt Fri Feb 24 04:25:57 2012
@@ -0,0 +1,5 @@
+@Target({ElementType.FIELD, ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Transactional
+{
+}
Propchange: db/jdo/trunk/specification/imports/Transactional.txt
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/Unique.txt
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/Unique.txt?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/Unique.txt (added)
+++ db/jdo/trunk/specification/imports/Unique.txt Fri Feb 24 04:25:57 2012
@@ -0,0 +1,31 @@
+@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Unique
+{
+ /** Name of the unique constraint.
+ * @return the name of the unique constraint
+ */
+ String name() default "";
+
+ /** Table for the unique constraint. This is needed iff annotating a type
+ * where this unique constraint is not for the primary table for
+ * the persistent class or interface.
+ * @return the table on which the unique constraint is defined
+ */
+ String table() default "";
+
+ /** Whether this unique constraint is deferred until commit.
+ * @return whether this unique constraint is deferred until commit
+ */
+ String deferred() default "";
+
+ /** Member (field and property) names that compose this unique constraint.
+ * @return member names that compose this unique constraint
+ */
+ String[] members() default {};
+
+ /** Columns that compose this unique constraint.
+ * @return columns that compose this unique constraint
+ */
+ Column[] columns() default {};
+}
Propchange: db/jdo/trunk/specification/imports/Unique.txt
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/UniqueMetadata.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/UniqueMetadata.java?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/UniqueMetadata.java (added)
+++ db/jdo/trunk/specification/imports/UniqueMetadata.java Fri Feb 24 04:25:57 2012
@@ -0,0 +1,114 @@
+/*
+ * 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
+ */
+ UniqueMetadata setName(String name);
+
+ /**
+ * Accessor for the constraint name.
+ *
+ * @return The constraint name
+ */
+ String getName();
+
+ /**
+ * Method to set the table name.
+ *
+ * @param table Table name
+ */
+ UniqueMetadata 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?
+ */
+ UniqueMetadata 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 fields/properties defined on the unique constraint.
+ * @return The members
+ */
+ MemberMetadata[] getMembers();
+
+ /**
+ * Accessor for the number of fields/properties defined for this unique constraint.
+ * @return The number of members
+ */
+ int getNumberOfMembers();
+
+ /**
+ * Add a new field for this unique constraint.
+ *
+ * @param name Name of the field
+ * @return The FieldMetadata
+ */
+ FieldMetadata newFieldMetadata(String name);
+
+ /**
+ * Add a new property for this unique constraint.
+ *
+ * @param name Name of the property
+ * @return The PropertyMetadata
+ */
+ PropertyMetadata newPropertyMetadata(String name);
+}
\ No newline at end of file
Propchange: db/jdo/trunk/specification/imports/UniqueMetadata.java
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/UniqueMetadata.txt
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/UniqueMetadata.txt?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/UniqueMetadata.txt (added)
+++ db/jdo/trunk/specification/imports/UniqueMetadata.txt Fri Feb 24 04:25:57 2012
@@ -0,0 +1,96 @@
+/**
+ * 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
+ */
+ UniqueMetadata setName(String name);
+
+ /**
+ * Accessor for the constraint name.
+ *
+ * @return The constraint name
+ */
+ String getName();
+
+ /**
+ * Method to set the table name.
+ *
+ * @param table Table name
+ */
+ UniqueMetadata 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?
+ */
+ UniqueMetadata 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 fields/properties defined on the unique constraint.
+ * @return The members
+ */
+ MemberMetadata[] getMembers();
+
+ /**
+ * Accessor for the number of fields/properties defined for this unique constraint.
+ * @return The number of members
+ */
+ int getNumberOfMembers();
+
+ /**
+ * Add a new field for this unique constraint.
+ *
+ * @param name Name of the field
+ * @return The FieldMetadata
+ */
+ FieldMetadata newFieldMetadata(String name);
+
+ /**
+ * Add a new property for this unique constraint.
+ *
+ * @param name Name of the property
+ * @return The PropertyMetadata
+ */
+ PropertyMetadata newPropertyMetadata(String name);
+}
Propchange: db/jdo/trunk/specification/imports/UniqueMetadata.txt
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/Uniques.txt
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/Uniques.txt?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/Uniques.txt (added)
+++ db/jdo/trunk/specification/imports/Uniques.txt Fri Feb 24 04:25:57 2012
@@ -0,0 +1,10 @@
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Uniques
+{
+ /**
+ * The unique constraints.
+ * @return The unique constraints
+ */
+ Unique[] value();
+}
Propchange: db/jdo/trunk/specification/imports/Uniques.txt
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/Value.txt
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/Value.txt?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/Value.txt (added)
+++ db/jdo/trunk/specification/imports/Value.txt Fri Feb 24 04:25:57 2012
@@ -0,0 +1,112 @@
+@Target({ElementType.FIELD, ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Value
+{
+ /**
+ * Types of the values. This can be determined if using JDK1.5 generics
+ * but is required otherwise. Multiple types can be specified if the
+ * implementation supports multiple types.
+ * @return the types of values
+ */
+ Class[] types() default {};
+
+ /**
+ * Whether the value is to be stored serialized (into a single column of a
+ * join table).
+ * @return Whether the value is to be stored serialized (into a join table)
+ */
+ String serialized() default "";
+
+ /** Whether this value is embedded.
+ * @return whether this value is embedded
+ */
+ String embedded() default "";
+
+ /**
+ * The embedded mapping for the value.
+ * @return the embedded mapping for the value
+ */
+ Embedded[] embeddedMapping() default {};
+
+ /**
+ * Whether the value is dependent on the owner (and will be deleted
+ * when the owner is deleted).
+ * @return whether the value is dependent on the owner
+ */
+ String dependent() default "";
+
+ /**
+ * Name of the table for the value.
+ * @return the name of the table for the value
+ */
+ String table() default "";
+
+ /**
+ * Name of the column to store the value in.
+ * @return the name of the column to store the value in
+ */
+ String column() default "";
+
+ /**
+ * Delete action to apply to any foreign key for the value.
+ * @return delete action to apply to any foreign key for the value
+ */
+ ForeignKeyAction deleteAction() default ForeignKeyAction.UNSPECIFIED;
+
+ /**
+ * Update action to apply to any foreign key for the value.
+ * @return update action to apply to any foreign key for the value
+ */
+ ForeignKeyAction updateAction() default ForeignKeyAction.UNSPECIFIED;
+
+ /**
+ * Whether the value column(s) should be indexed.
+ * @return whether the value column(s) should be indexed.
+ */
+ String indexed() default "";
+
+ /** The name of the index to generate.
+ * @return the name of the index
+ */
+ String index() default "";
+
+ /**
+ * Whether the element column(s) contents should be considered unique
+ * @return whether the element column(s) contents should be considered unique
+ */
+ String unique() default "";
+
+ /**
+ * The name of the unique key constraint to generate.
+ * @return the name of the unique key constraint
+ */
+ String uniqueKey() default "";
+
+ /**
+ * Name of a member in the key class where this value is stored.
+ * @return the name of a member in the key class where this value is stored
+ */
+ String mappedBy() default "";
+
+ /**
+ * The column(s) for the value.
+ * @return the column(s) for the value
+ */
+ Column[] columns() default {};
+
+ /** Generate or assume a foreign key constraint exists on the column
+ * or columns associated with this join. Specify "true" or "false".
+ * @return whether to generate or assume a foreign key constraint
+ */
+ String generateForeignKey() default "";
+
+ /** Name for a generated foreign key constraint.
+ * @return the name of the generated foreign key constraint
+ */
+ String foreignKey() default "";
+
+ /** Vendor extensions.
+ * @return the vendor extensions
+ */
+ Extension[] extensions() default {};
+}
Propchange: db/jdo/trunk/specification/imports/Value.txt
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/ValueMetadata.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/ValueMetadata.java?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/ValueMetadata.java (added)
+++ db/jdo/trunk/specification/imports/ValueMetadata.java Fri Feb 24 04:25:57 2012
@@ -0,0 +1,151 @@
+/*
+ * 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
+ */
+ ValueMetadata 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
+ */
+ ValueMetadata 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
+ */
+ ValueMetadata 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
+ */
+ ValueMetadata setUpdateAction(ForeignKeyAction action);
+
+ /**
+ * Accessor for the update action of the FK
+ *
+ * @return The FK update-action
+ */
+ ForeignKeyAction getUpdateAction();
+
+ /**
+ * Accessor for all column(s) defined on the value.
+ *
+ * @return The column(s)
+ */
+ ColumnMetadata[] getColumns();
+
+ /**
+ * Add a new column for this value.
+ *
+ * @return The ColumnMetadata
+ */
+ ColumnMetadata newColumnMetadata();
+
+ /**
+ * Method to set new embedded metadata for the value.
+ *
+ * @return The EmbeddedMetadata
+ */
+ EmbeddedMetadata newEmbeddedMetadata();
+
+ /**
+ * 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 newIndexMetadata();
+
+ /**
+ * 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 newUniqueMetadata();
+
+ /**
+ * 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 newForeignKeyMetadata();
+
+ /**
+ * Accessor for any foreign key metadata on this value.
+ *
+ * @return The ForeignKeyMetadata
+ */
+ ForeignKeyMetadata getForeignKeyMetadata();
+}
\ No newline at end of file
Propchange: db/jdo/trunk/specification/imports/ValueMetadata.java
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/ValueMetadata.txt
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/ValueMetadata.txt?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/ValueMetadata.txt (added)
+++ db/jdo/trunk/specification/imports/ValueMetadata.txt Fri Feb 24 04:25:57 2012
@@ -0,0 +1,131 @@
+/**
+ * Represents a value in a map.
+ * @since 2.3
+ */
+public interface ValueMetadata extends Metadata {
+ /**
+ * Method to set the column name.
+ *
+ * @param column Column name
+ */
+ ValueMetadata 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
+ */
+ ValueMetadata 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
+ */
+ ValueMetadata 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
+ */
+ ValueMetadata setUpdateAction(ForeignKeyAction action);
+
+ /**
+ * Accessor for the update action of the FK
+ *
+ * @return The FK update-action
+ */
+ ForeignKeyAction getUpdateAction();
+
+ /**
+ * Accessor for all column(s) defined on the value.
+ *
+ * @return The column(s)
+ */
+ ColumnMetadata[] getColumns();
+
+ /**
+ * Add a new column for this value.
+ *
+ * @return The ColumnMetadata
+ */
+ ColumnMetadata newColumnMetadata();
+
+ /**
+ * Method to set new embedded metadata for the value.
+ *
+ * @return The EmbeddedMetadata
+ */
+ EmbeddedMetadata newEmbeddedMetadata();
+
+ /**
+ * 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 newIndexMetadata();
+
+ /**
+ * 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 newUniqueMetadata();
+
+ /**
+ * 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 newForeignKeyMetadata();
+
+ /**
+ * Accessor for any foreign key metadata on this value.
+ *
+ * @return The ForeignKeyMetadata
+ */
+ ForeignKeyMetadata getForeignKeyMetadata();
+}
Propchange: db/jdo/trunk/specification/imports/ValueMetadata.txt
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/Version.txt
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/Version.txt?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/Version.txt (added)
+++ db/jdo/trunk/specification/imports/Version.txt Fri Feb 24 04:25:57 2012
@@ -0,0 +1,40 @@
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Version
+{
+ /**
+ * Strategy for versioning of objects of this class.
+ * @return the strategy for versioning objects of this class
+ */
+ VersionStrategy strategy() default VersionStrategy.UNSPECIFIED;
+
+ /**
+ * Custom strategy for versioning of objects of this class.
+ * If customStrategy is non-empty, strategy must be UNSPECIFIED.
+ * @return the custom strategy for versioning objects of this class
+ */
+ String customStrategy() default "";
+
+ /**
+ * Name of the column for the version.
+ * @return the name of the column for the version
+ */
+ String column() default "";
+
+ /**
+ * Whether the version column(s) is(are) indexed.
+ * @return whether the version column(s) is(are) indexed
+ */
+ String indexed() default "";
+
+ /**
+ * The column(s) making up the version.
+ * @return the column(s) making up the version
+ */
+ Column[] columns() default {};
+
+ /** Vendor extensions.
+ * @return the vendor extensions
+ */
+ Extension[] extensions() default {};
+}
Propchange: db/jdo/trunk/specification/imports/Version.txt
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/VersionMetadata.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/VersionMetadata.java?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/VersionMetadata.java (added)
+++ db/jdo/trunk/specification/imports/VersionMetadata.java Fri Feb 24 04:25:57 2012
@@ -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
+ */
+ VersionMetadata 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
+ */
+ VersionMetadata 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)
+ */
+ VersionMetadata 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
+ *
+ * @return The IndexMetadata
+ */
+ IndexMetadata newIndexMetadata();
+
+ /**
+ * Accessor for any index metadata on this version
+ *
+ * @return Index metadata
+ */
+ IndexMetadata getIndexMetadata();
+}
\ No newline at end of file
Propchange: db/jdo/trunk/specification/imports/VersionMetadata.java
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/VersionMetadata.txt
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/VersionMetadata.txt?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/VersionMetadata.txt (added)
+++ db/jdo/trunk/specification/imports/VersionMetadata.txt Fri Feb 24 04:25:57 2012
@@ -0,0 +1,82 @@
+/**
+ * Represents versioning of a class.
+ * @since 2.3
+ */
+public interface VersionMetadata extends Metadata {
+ /**
+ * Method to set the version strategy.
+ *
+ * @param strategy The strategy
+ */
+ VersionMetadata 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
+ */
+ VersionMetadata 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)
+ */
+ VersionMetadata 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
+ *
+ * @return The IndexMetadata
+ */
+ IndexMetadata newIndexMetadata();
+
+ /**
+ * Accessor for any index metadata on this version
+ *
+ * @return Index metadata
+ */
+ IndexMetadata getIndexMetadata();
+}
Propchange: db/jdo/trunk/specification/imports/VersionMetadata.txt
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/VersionStrategy.txt
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/VersionStrategy.txt?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/VersionStrategy.txt (added)
+++ db/jdo/trunk/specification/imports/VersionStrategy.txt Fri Feb 24 04:25:57 2012
@@ -0,0 +1,9 @@
+
+public enum VersionStrategy
+{
+ UNSPECIFIED,
+ NONE,
+ STATE_IMAGE,
+ DATE_TIME,
+ VERSION_NUMBER
+}
Propchange: db/jdo/trunk/specification/imports/VersionStrategy.txt
------------------------------------------------------------------------------
svn:eol-style = LF
Added: db/jdo/trunk/specification/imports/jdo_2_0.dtd
URL: http://svn.apache.org/viewvc/db/jdo/trunk/specification/imports/jdo_2_0.dtd?rev=1293075&view=auto
==============================================================================
--- db/jdo/trunk/specification/imports/jdo_2_0.dtd (added)
+++ db/jdo/trunk/specification/imports/jdo_2_0.dtd Fri Feb 24 04:25:57 2012
@@ -0,0 +1,241 @@
+<!--
+ 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.
+-->
+<!-- The DOCTYPE should be as follows for metadata documents.
+<!DOCTYPE jdo
+ PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 2.0//EN"
+ "http://java.sun.com/dtd/jdo_2_0.dtd">
+-->
+<!ELEMENT jdo (extension*, (package|query)+, extension*)>
+<!ATTLIST jdo catalog CDATA #IMPLIED>
+<!ATTLIST jdo schema CDATA #IMPLIED>
+
+<!ELEMENT package (extension*, (interface|class|sequence)+, extension*)>
+<!ATTLIST package name CDATA ''>
+<!ATTLIST package catalog CDATA #IMPLIED>
+<!ATTLIST package schema CDATA #IMPLIED>
+
+<!ELEMENT interface (extension*, datastore-identity?, primary-key?, inheritance?, version?, join*, foreign-key*, index*, unique*, property*, query*, fetch-group*, extension*)>
+<!ATTLIST interface name CDATA #REQUIRED>
+<!ATTLIST interface table CDATA #IMPLIED>
+<!ATTLIST interface identity-type (datastore|application|nondurable) #IMPLIED>
+<!ATTLIST interface objectid-class CDATA #IMPLIED>
+<!ATTLIST interface requires-extent (true|false) 'true'>
+<!ATTLIST interface detachable (true|false) 'false'>
+<!ATTLIST interface embedded-only (true|false) #IMPLIED>
+<!ATTLIST interface catalog CDATA #IMPLIED>
+<!ATTLIST interface schema CDATA #IMPLIED>
+
+<!ELEMENT property (extension*, (array|collection|map)?, join?, embedded?, element?, key?, value?, order?, column*, foreign-key?, index?, unique?, extension*)>
+<!ATTLIST property name CDATA #REQUIRED>
+<!ATTLIST property persistence-modifier (persistent|transactional|none) #IMPLIED>
+<!ATTLIST property default-fetch-group (true|false) #IMPLIED>
+<!ATTLIST property load-fetch-group CDATA #IMPLIED>
+<!ATTLIST property null-value (default|exception|none) 'none'>
+<!ATTLIST property dependent (true|false) #IMPLIED>
+<!ATTLIST property embedded (true|false) #IMPLIED>
+<!ATTLIST property primary-key (true|false) 'false'>
+<!ATTLIST property value-strategy CDATA #IMPLIED>
+<!ATTLIST property sequence CDATA #IMPLIED>
+<!ATTLIST property serialized (true|false) #IMPLIED>
+<!ATTLIST property field-type CDATA #IMPLIED>
+<!ATTLIST property table CDATA #IMPLIED>
+<!ATTLIST property column CDATA #IMPLIED>
+<!ATTLIST property delete-action (restrict|cascade|null|default|none) #IMPLIED>
+<!ATTLIST property indexed (true|false|unique) #IMPLIED>
+<!ATTLIST property unique (true|false) #IMPLIED>
+<!ATTLIST property mapped-by CDATA #IMPLIED>
+<!ATTLIST property recursion-depth CDATA #IMPLIED>
+<!ATTLIST property field-name CDATA #IMPLIED>
+
+<!ELEMENT class (extension*, implements*, datastore-identity?, primary-key?, inheritance?, version?, join*, foreign-key*, index*, unique*, column*, field*, property*, query*, fetch-group*, extension*)>
+<!ATTLIST class name CDATA #REQUIRED>
+<!ATTLIST class identity-type (application|datastore|nondurable) #IMPLIED>
+<!ATTLIST class objectid-class CDATA #IMPLIED>
+<!ATTLIST class table CDATA #IMPLIED>
+<!ATTLIST class requires-extent (true|false) 'true'>
+<!ATTLIST class persistence-capable-superclass CDATA #IMPLIED>
+<!ATTLIST class detachable (true|false) 'false'>
+<!ATTLIST class embedded-only (true|false) #IMPLIED>
+<!ATTLIST class persistence-modifier (persistence-capable|persistence-aware|non-persistent) #IMPLIED>
+<!ATTLIST class catalog CDATA #IMPLIED>
+<!ATTLIST class schema CDATA #IMPLIED>
+
+<!ELEMENT primary-key (extension*, column*, extension*)>
+<!ATTLIST primary-key name CDATA #IMPLIED>
+<!ATTLIST primary-key column CDATA #IMPLIED>
+
+<!ELEMENT join (extension*, primary-key?, column*, foreign-key?, index?, unique?, extension*)>
+<!ATTLIST join table CDATA #IMPLIED>
+<!ATTLIST join column CDATA #IMPLIED>
+<!ATTLIST join outer (true|false) 'false'>
+<!ATTLIST join delete-action (restrict|cascade|null|default|none) #IMPLIED>
+<!ATTLIST join indexed (true|false|unique) #IMPLIED>
+<!ATTLIST join unique (true|false) #IMPLIED>
+
+<!ELEMENT version (extension*, column*, index?, extension*)>
+<!ATTLIST version strategy CDATA #IMPLIED>
+<!ATTLIST version column CDATA #IMPLIED>
+<!ATTLIST version indexed (true|false|unique) #IMPLIED>
+
+<!ELEMENT datastore-identity (extension*, column*, extension*)>
+<!ATTLIST datastore-identity column CDATA #IMPLIED>
+<!ATTLIST datastore-identity strategy CDATA 'native'>
+<!ATTLIST datastore-identity sequence CDATA #IMPLIED>
+
+<!ELEMENT implements (extension*, property*, extension*)>
+<!ATTLIST implements name CDATA #REQUIRED>
+
+<!ELEMENT inheritance (extension*, join?, discriminator?, extension*)>
+<!ATTLIST inheritance strategy CDATA #IMPLIED>
+
+<!ELEMENT discriminator (extension*, column*, index?, extension*)>
+<!ATTLIST discriminator column CDATA #IMPLIED>
+<!ATTLIST discriminator value CDATA #IMPLIED>
+<!ATTLIST discriminator strategy CDATA #IMPLIED>
+<!ATTLIST discriminator indexed (true|false|unique) #IMPLIED>
+
+<!ELEMENT column (extension*)>
+<!ATTLIST column name CDATA #IMPLIED>
+<!ATTLIST column target CDATA #IMPLIED>
+<!ATTLIST column target-field CDATA #IMPLIED>
+<!ATTLIST column jdbc-type CDATA #IMPLIED>
+<!ATTLIST column sql-type CDATA #IMPLIED>
+<!ATTLIST column length CDATA #IMPLIED>
+<!ATTLIST column scale CDATA #IMPLIED>
+<!ATTLIST column allows-null (true|false) #IMPLIED>
+<!ATTLIST column default-value CDATA #IMPLIED>
+<!ATTLIST column insert-value CDATA #IMPLIED>
+
+<!ELEMENT field (extension*, (array|collection|map)?, join?, embedded?, element?, key?, value?, order?, column*, foreign-key?, index?, unique?, extension*)>
+<!ATTLIST field name CDATA #REQUIRED>
+<!ATTLIST field persistence-modifier (persistent|transactional|none) #IMPLIED>
+<!ATTLIST field field-type CDATA #IMPLIED>
+<!ATTLIST field table CDATA #IMPLIED>
+<!ATTLIST field column CDATA #IMPLIED>
+<!ATTLIST field primary-key (true|false) 'false'>
+<!ATTLIST field null-value (exception|default|none) 'none'>
+<!ATTLIST field default-fetch-group (true|false) #IMPLIED>
+<!ATTLIST field embedded (true|false) #IMPLIED>
+<!ATTLIST field serialized (true|false) #IMPLIED>
+<!ATTLIST field dependent (true|false) #IMPLIED>
+<!ATTLIST field value-strategy CDATA #IMPLIED>
+<!ATTLIST field delete-action (restrict|cascade|null|default|none) #IMPLIED>
+<!ATTLIST field indexed (true|false|unique) #IMPLIED>
+<!ATTLIST field unique (true|false) #IMPLIED>
+<!ATTLIST field sequence CDATA #IMPLIED>
+<!ATTLIST field load-fetch-group CDATA #IMPLIED>
+<!ATTLIST field recursion-depth CDATA #IMPLIED>
+<!ATTLIST field mapped-by CDATA #IMPLIED>
+
+<!ELEMENT foreign-key (extension*, (column* | field* | property*), extension*)>
+<!ATTLIST foreign-key table CDATA #IMPLIED>
+<!ATTLIST foreign-key deferred (true|false) #IMPLIED>
+<!ATTLIST foreign-key delete-action (restrict|cascade|null|default|none) 'restrict'>
+<!ATTLIST foreign-key update-action (restrict|cascade|null|default|none) 'restrict'>
+<!ATTLIST foreign-key unique (true|false) #IMPLIED>
+<!ATTLIST foreign-key name CDATA #IMPLIED>
+
+<!ELEMENT collection (extension*)>
+<!ATTLIST collection element-type CDATA #IMPLIED>
+<!ATTLIST collection embedded-element (true|false) #IMPLIED>
+<!ATTLIST collection dependent-element (true|false) #IMPLIED>
+<!ATTLIST collection serialized-element (true|false) #IMPLIED>
+
+<!ELEMENT map (extension)*>
+<!ATTLIST map key-type CDATA #IMPLIED>
+<!ATTLIST map embedded-key (true|false) #IMPLIED>
+<!ATTLIST map dependent-key (true|false) #IMPLIED>
+<!ATTLIST map serialized-key (true|false) #IMPLIED>
+<!ATTLIST map value-type CDATA #IMPLIED>
+<!ATTLIST map embedded-value (true|false) #IMPLIED>
+<!ATTLIST map dependent-value (true|false) #IMPLIED>
+<!ATTLIST map serialized-value (true|false) #IMPLIED>
+
+<!ELEMENT key (extension*, embedded?, column*, foreign-key?, index?, unique?, extension*)>
+<!ATTLIST key column CDATA #IMPLIED>
+<!ATTLIST key table CDATA #IMPLIED>
+<!ATTLIST key delete-action (restrict|cascade|null|default|none) #IMPLIED>
+<!ATTLIST key update-action (restrict|cascade|null|default|none) #IMPLIED>
+<!ATTLIST key indexed (true|false|unique) #IMPLIED>
+<!ATTLIST key unique (true|false) #IMPLIED>
+<!ATTLIST key mapped-by CDATA #IMPLIED>
+
+<!ELEMENT value (extension*, embedded?, column*, foreign-key?, index?, unique?, extension*)>
+<!ATTLIST value column CDATA #IMPLIED>
+<!ATTLIST value table CDATA #IMPLIED>
+<!ATTLIST value delete-action (restrict|cascade|null|default|none) #IMPLIED>
+<!ATTLIST value update-action (restrict|cascade|null|default|none) #IMPLIED>
+<!ATTLIST value indexed (true|false|unique) #IMPLIED>
+<!ATTLIST value unique (true|false) #IMPLIED>
+<!ATTLIST value mapped-by CDATA #IMPLIED>
+
+<!ELEMENT array (extension*)>
+<!ATTLIST array element-type CDATA #IMPLIED>
+<!ATTLIST array embedded-element (true|false) #IMPLIED>
+<!ATTLIST array dependent-element (true|false) #IMPLIED>
+<!ATTLIST array serialized-element (true|false) #IMPLIED>
+
+<!ELEMENT element (extension*, embedded?, column*, foreign-key?, index?, unique?, extension*)>
+<!ATTLIST element column CDATA #IMPLIED>
+<!ATTLIST element table CDATA #IMPLIED>
+<!ATTLIST element delete-action (restrict|cascade|null|default|none) #IMPLIED>
+<!ATTLIST element update-action (restrict|cascade|null|default|none) #IMPLIED>
+<!ATTLIST element indexed (true|false|unique) #IMPLIED>
+<!ATTLIST element unique (true|false) #IMPLIED>
+<!ATTLIST element mapped-by CDATA #IMPLIED>
+
+<!ELEMENT order (extension*, column*, index?, extension*)>
+<!ATTLIST order column CDATA #IMPLIED>
+<!ATTLIST order mapped-by CDATA #IMPLIED>
+
+<!ELEMENT fetch-group (extension*, (fetch-group|field|property)*, extension*)>
+<!ATTLIST fetch-group name CDATA #REQUIRED>
+<!ATTLIST fetch-group post-load (true|false) #IMPLIED>
+
+<!ELEMENT embedded (extension*, (field|property)*, extension*)>
+<!ATTLIST embedded owner-field CDATA #IMPLIED>
+<!ATTLIST embedded null-indicator-column CDATA #IMPLIED>
+<!ATTLIST embedded null-indicator-value CDATA #IMPLIED>
+
+<!ELEMENT sequence (extension*)>
+<!ATTLIST sequence name CDATA #REQUIRED>
+<!ATTLIST sequence datastore-sequence CDATA #IMPLIED>
+<!ATTLIST sequence factory-class CDATA #IMPLIED>
+<!ATTLIST sequence strategy (nontransactional|contiguous|noncontiguous) #REQUIRED>
+
+<!ELEMENT index (extension*, (column* | field* | property*), extension*)>
+<!ATTLIST index name CDATA #IMPLIED>
+<!ATTLIST index table CDATA #IMPLIED>
+<!ATTLIST index unique (true|false) 'false'>
+
+<!ELEMENT query (#PCDATA|extension)*>
+<!ATTLIST query name CDATA #REQUIRED>
+<!ATTLIST query language CDATA #IMPLIED>
+<!ATTLIST query unmodifiable (true|false) 'false'>
+<!ATTLIST query unique (true|false) #IMPLIED>
+<!ATTLIST query result-class CDATA #IMPLIED>
+
+<!ELEMENT unique (extension*, (column* | field* | property*), extension*)>
+<!ATTLIST unique name CDATA #IMPLIED>
+<!ATTLIST unique table CDATA #IMPLIED>
+<!ATTLIST unique deferred (true|false) 'false'>
+
+<!ELEMENT extension ANY>
+<!ATTLIST extension vendor-name CDATA #REQUIRED>
+<!ATTLIST extension key CDATA #IMPLIED>
+<!ATTLIST extension value CDATA #IMPLIED>
+