Index: src/java/javax/jdo/annotations/Join.java =================================================================== --- src/java/javax/jdo/annotations/Join.java (revision 565976) +++ src/java/javax/jdo/annotations/Join.java (working copy) @@ -71,7 +71,7 @@ /** Delete action to be applied to any ForeignKey on this join. * @return the delete action */ - ForeignKeyAction deleteAction() default ForeignKeyAction.UNKNOWN; + ForeignKeyAction deleteAction() default ForeignKeyAction.UNSPECIFIED; /** Detail definition of the join column(s). This is needed for * more than one join column. Index: src/java/javax/jdo/annotations/ForeignKeyAction.java =================================================================== --- src/java/javax/jdo/annotations/ForeignKeyAction.java (revision 565976) +++ src/java/javax/jdo/annotations/ForeignKeyAction.java (working copy) @@ -24,7 +24,7 @@ */ public enum ForeignKeyAction { - UNKNOWN, + UNSPECIFIED, RESTRICT, CASCADE, NULL, Index: src/java/javax/jdo/annotations/Persistent.java =================================================================== --- src/java/javax/jdo/annotations/Persistent.java (revision 565976) +++ src/java/javax/jdo/annotations/Persistent.java (working copy) @@ -43,7 +43,7 @@ * @return the persistence modifier */ PersistenceModifier persistenceModifier() - default PersistenceModifier.UNKNOWN; + default PersistenceModifier.UNSPECIFIED; /** Table to use for persisting this member. * @return the table to use for persisting this member @@ -133,8 +133,15 @@ * or property (if any). * @return the generated value strategy */ - IdGeneratorStrategy valueStrategy() default IdGeneratorStrategy.UNKNOWN; + 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 */ Index: src/java/javax/jdo/annotations/VersionStrategy.java =================================================================== --- src/java/javax/jdo/annotations/VersionStrategy.java (revision 565976) +++ src/java/javax/jdo/annotations/VersionStrategy.java (working copy) @@ -24,6 +24,7 @@ */ public enum VersionStrategy { + UNSPECIFIED, NONE, STATE_IMAGE, DATE_TIME, Index: src/java/javax/jdo/annotations/Version.java =================================================================== --- src/java/javax/jdo/annotations/Version.java (revision 565976) +++ src/java/javax/jdo/annotations/Version.java (working copy) @@ -37,9 +37,16 @@ * Strategy for versioning of objects of this class. * @return the strategy for versioning objects of this class */ - VersionStrategy strategy(); + 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 */ Index: src/java/javax/jdo/annotations/IdGeneratorStrategy.java =================================================================== --- src/java/javax/jdo/annotations/IdGeneratorStrategy.java (revision 565976) +++ src/java/javax/jdo/annotations/IdGeneratorStrategy.java (working copy) @@ -24,11 +24,11 @@ */ public enum IdGeneratorStrategy { - UNKNOWN, + UNSPECIFIED, NATIVE, SEQUENCE, IDENTITY, INCREMENT, UUIDSTRING, UUIDHEX -}; \ No newline at end of file +} \ No newline at end of file Index: src/java/javax/jdo/annotations/DiscriminatorStrategy.java =================================================================== --- src/java/javax/jdo/annotations/DiscriminatorStrategy.java (revision 565976) +++ src/java/javax/jdo/annotations/DiscriminatorStrategy.java (working copy) @@ -24,7 +24,7 @@ */ public enum DiscriminatorStrategy { - UNKNOWN, + UNSPECIFIED, NONE, VALUE_MAP, CLASS_NAME Index: src/java/javax/jdo/annotations/PersistenceCapable.java =================================================================== --- src/java/javax/jdo/annotations/PersistenceCapable.java (revision 565976) +++ src/java/javax/jdo/annotations/PersistenceCapable.java (working copy) @@ -64,7 +64,7 @@ /** Type of identity for this class or interface. */ - IdentityType identityType() default IdentityType.UNKNOWN; + IdentityType identityType() default IdentityType.UNSPECIFIED; /** Primary key class when using application identity and using own PK. */ Index: src/java/javax/jdo/annotations/DatastoreIdentity.java =================================================================== --- src/java/javax/jdo/annotations/DatastoreIdentity.java (revision 565976) +++ src/java/javax/jdo/annotations/DatastoreIdentity.java (working copy) @@ -36,8 +36,14 @@ * Strategy to use when generating datastore identities * @return Strategy to use when generating datastore identities */ - IdGeneratorStrategy strategy() default IdGeneratorStrategy.UNKNOWN; + IdGeneratorStrategy strategy() default IdGeneratorStrategy.UNSPECIFIED; + /** Custom strategy to use to generate the value for the identity. + * If customStrategy is non-empty, then strategy must be UNSPECIFIED. + * @return the custom strategy + */ + String customStrategy() default ""; + /** * Name of sequence to use when the strategy involves sequences * @return Name of sequence to use when the strategy involves sequences Index: src/java/javax/jdo/annotations/PersistenceModifier.java =================================================================== --- src/java/javax/jdo/annotations/PersistenceModifier.java (revision 565976) +++ src/java/javax/jdo/annotations/PersistenceModifier.java (working copy) @@ -26,7 +26,7 @@ */ public enum PersistenceModifier { - UNKNOWN, + UNSPECIFIED, PERSISTENT, TRANSACTIONAL, NONE Index: src/java/javax/jdo/annotations/Discriminator.java =================================================================== --- src/java/javax/jdo/annotations/Discriminator.java (revision 565976) +++ src/java/javax/jdo/annotations/Discriminator.java (working copy) @@ -38,8 +38,14 @@ * @return the strategy to use for the discriminator */ DiscriminatorStrategy strategy() - default DiscriminatorStrategy.UNKNOWN; + default DiscriminatorStrategy.UNSPECIFIED; + /** Custom strategy to use for the discriminator. + * If customStrategy is non-empty, then strategy must be UNSPECIFIED. + * @return the custom strategy + */ + String customStrategy() default ""; + /** * Whether the discriminator is indexed. * @return whether the discriminator is indexed Index: src/java/javax/jdo/annotations/Value.java =================================================================== --- src/java/javax/jdo/annotations/Value.java (revision 565976) +++ src/java/javax/jdo/annotations/Value.java (working copy) @@ -81,13 +81,13 @@ * 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.UNKNOWN; + 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.UNKNOWN; + ForeignKeyAction updateAction() default ForeignKeyAction.UNSPECIFIED; /** * Whether the value column(s) should be indexed. Index: src/java/javax/jdo/annotations/InheritanceStrategy.java =================================================================== --- src/java/javax/jdo/annotations/InheritanceStrategy.java (revision 565976) +++ src/java/javax/jdo/annotations/InheritanceStrategy.java (working copy) @@ -24,6 +24,7 @@ */ public enum InheritanceStrategy { + UNSPECIFIED, NEW_TABLE, SUBCLASS_TABLE, SUPERCLASS_TABLE Index: src/java/javax/jdo/annotations/Key.java =================================================================== --- src/java/javax/jdo/annotations/Key.java (revision 565976) +++ src/java/javax/jdo/annotations/Key.java (working copy) @@ -82,13 +82,13 @@ * Delete action to apply to the foreign key for the key. * @return delete action to apply to the foreign key for the key */ - ForeignKeyAction deleteAction() default ForeignKeyAction.UNKNOWN; + ForeignKeyAction deleteAction() default ForeignKeyAction.UNSPECIFIED; /** * Update action to apply to the foreign key for the key. * @return update action to apply to the foreign key for the key */ - ForeignKeyAction updateAction() default ForeignKeyAction.UNKNOWN; + ForeignKeyAction updateAction() default ForeignKeyAction.UNSPECIFIED; /** * Whether the value column(s) should be indexed. Index: src/java/javax/jdo/annotations/Inheritance.java =================================================================== --- src/java/javax/jdo/annotations/Inheritance.java (revision 565976) +++ src/java/javax/jdo/annotations/Inheritance.java (working copy) @@ -37,5 +37,11 @@ * the members for the class are stored. * @return the inheritance strategy */ - InheritanceStrategy strategy(); + InheritanceStrategy strategy() default InheritanceStrategy.UNSPECIFIED; + + /** Custom inheritance strategy. If customStrategy is non-empty, then + * strategy must be UNSPECIFIED. + * @return the custom inheritance strategy + */ + String customStrategy() default ""; } Index: src/java/javax/jdo/annotations/Element.java =================================================================== --- src/java/javax/jdo/annotations/Element.java (revision 565976) +++ src/java/javax/jdo/annotations/Element.java (working copy) @@ -83,13 +83,13 @@ * Delete action to apply to any foreign key for the element. * @return delete action to apply to any foreign key for the element */ - ForeignKeyAction deleteAction() default ForeignKeyAction.UNKNOWN; + ForeignKeyAction deleteAction() default ForeignKeyAction.UNSPECIFIED; /** * Update action to apply to any foreign key for the element * @return update action to apply to any foreign key for the element */ - ForeignKeyAction updateAction() default ForeignKeyAction.UNKNOWN; + ForeignKeyAction updateAction() default ForeignKeyAction.UNSPECIFIED; /** * Whether the value column(s) should be indexed. Index: src/java/javax/jdo/annotations/IdentityType.java =================================================================== --- src/java/javax/jdo/annotations/IdentityType.java (revision 565976) +++ src/java/javax/jdo/annotations/IdentityType.java (working copy) @@ -24,7 +24,7 @@ */ public enum IdentityType { - UNKNOWN, + UNSPECIFIED, APPLICATION, DATASTORE, NONDURABLE