diff options
Diffstat (limited to 'jpa/plugins')
56 files changed, 589 insertions, 586 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaPlatform.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaPlatform.java index ef2dffbc67..0b7afbfc86 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaPlatform.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaPlatform.java @@ -50,7 +50,12 @@ public interface JpaPlatform * Get the ID for this platform */ String getId(); - + + /** + * Get the version object for this platform. + */ + Version getJpaVersion(); + // ********** factory ********** /** @@ -177,4 +182,16 @@ public interface JpaPlatform */ JpaPlatformVariation getJpaVariation(); + + interface Version { + /** + * Return the highest JPA specification version supported by this platform. + */ + int getJpaVersion(); + + /** + * Return whether this platform is compatible with the 2.0 JPA specification. + */ + boolean is2_0Compatible(); + } } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractJpaFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractJpaFactory.java index 63463deddf..d3877311ef 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractJpaFactory.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractJpaFactory.java @@ -13,7 +13,6 @@ import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.content.IContentType; import org.eclipse.jpt.core.JpaDataSource; -import org.eclipse.jpt.core.JpaFactory; import org.eclipse.jpt.core.JpaFile; import org.eclipse.jpt.core.JpaProject; import org.eclipse.jpt.core.JpaResourceModel; @@ -137,6 +136,15 @@ import org.eclipse.jpt.core.internal.jpa1.context.persistence.GenericPersistence import org.eclipse.jpt.core.internal.jpa1.context.persistence.GenericPersistenceUnitProperty; import org.eclipse.jpt.core.internal.jpa1.context.persistence.GenericPersistenceXml; import org.eclipse.jpt.core.internal.jpa1.context.persistence.ImpliedMappingFileRef; +import org.eclipse.jpt.core.internal.jpa2.NullPersistentTypeStaticMetamodelSynchronizer; +import org.eclipse.jpt.core.internal.jpa2.NullStaticMetamodelSynchronizer; +import org.eclipse.jpt.core.internal.jpa2.context.java.NullJavaDerivedId2_0; +import org.eclipse.jpt.core.jpa2.JpaFactory2_0; +import org.eclipse.jpt.core.jpa2.JpaProject2_0; +import org.eclipse.jpt.core.jpa2.PersistentTypeStaticMetamodelSynchronizer; +import org.eclipse.jpt.core.jpa2.StaticMetamodelSynchronizer; +import org.eclipse.jpt.core.jpa2.context.java.JavaDerivedId2_0; +import org.eclipse.jpt.core.jpa2.context.java.JavaSingleRelationshipMapping2_0; import org.eclipse.jpt.core.resource.java.AssociationOverrideAnnotation; import org.eclipse.jpt.core.resource.java.JavaResourcePackageFragmentRoot; import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; @@ -155,7 +163,7 @@ import org.eclipse.jpt.core.resource.xml.JpaXmlResource; * various Dali interfaces. */ public abstract class AbstractJpaFactory - implements JpaFactory + implements JpaFactory2_0 { protected AbstractJpaFactory() { super(); @@ -168,6 +176,14 @@ public abstract class AbstractJpaFactory return new GenericJpaProject(config); } + public StaticMetamodelSynchronizer buildStaticMetamodelSynchronizer(JpaProject2_0 jpaProject) { + return new NullStaticMetamodelSynchronizer(jpaProject); + } + + public PersistentTypeStaticMetamodelSynchronizer buildPersistentTypeStaticMetamodelSynchronizer(StaticMetamodelSynchronizer staticMetamodelSynchronizer, PersistentType persistentType) { + return new NullPersistentTypeStaticMetamodelSynchronizer(); + } + public JpaDataSource buildJpaDataSource(JpaProject jpaProject, String connectionProfileName) { return new GenericJpaDataSource(jpaProject, connectionProfileName); } @@ -401,6 +417,11 @@ public abstract class AbstractJpaFactory return new GenericJavaNullConverter(parent); } + public JavaDerivedId2_0 buildJavaDerivedId(JavaSingleRelationshipMapping2_0 parent) { + return new NullJavaDerivedId2_0(parent); + } + + // ********** JAR Context Model ********** public JarFile buildJarFile(JarFileRef parent, JavaResourcePackageFragmentRoot jarResourcePackageFragmentRoot) { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractJpaNode.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractJpaNode.java index 45f8d3e1bf..f04be55841 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractJpaNode.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractJpaNode.java @@ -113,6 +113,10 @@ public abstract class AbstractJpaNode protected JpaPlatform getJpaPlatform() { return this.getJpaProject().getJpaPlatform(); } + + protected JpaPlatform.Version getJpaPlatformVersion() { + return this.getJpaPlatform().getJpaVersion(); + } protected JpaFactory getJpaFactory() { return this.getJpaPlatform().getJpaFactory(); diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractOrmXmlContextNodeFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractOrmXmlContextNodeFactory.java index fbf2230202..d6d8537f3c 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractOrmXmlContextNodeFactory.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractOrmXmlContextNodeFactory.java @@ -72,7 +72,6 @@ import org.eclipse.jpt.core.context.orm.OrmTypeMapping; import org.eclipse.jpt.core.context.orm.OrmUniqueConstraint; import org.eclipse.jpt.core.context.orm.OrmVersionMapping; import org.eclipse.jpt.core.context.orm.OrmXml; -import org.eclipse.jpt.core.context.orm.OrmXmlContextNodeFactory; import org.eclipse.jpt.core.context.orm.PersistenceUnitMetadata; import org.eclipse.jpt.core.context.persistence.MappingFileRef; import org.eclipse.jpt.core.internal.context.orm.VirtualXmlAssociationOverride; @@ -133,6 +132,11 @@ import org.eclipse.jpt.core.internal.jpa1.context.orm.GenericOrmVersionMapping; import org.eclipse.jpt.core.internal.jpa1.context.orm.GenericOrmXml; import org.eclipse.jpt.core.internal.jpa1.context.orm.GenericPersistenceUnitDefaults; import org.eclipse.jpt.core.internal.jpa1.context.orm.GenericPersistenceUnitMetadata; +import org.eclipse.jpt.core.internal.jpa2.context.orm.NullOrmDerivedId2_0; +import org.eclipse.jpt.core.jpa2.context.orm.OrmDerivedId2_0; +import org.eclipse.jpt.core.jpa2.context.orm.OrmSingleRelationshipMapping2_0; +import org.eclipse.jpt.core.jpa2.context.orm.OrmXml2_0ContextNodeFactory; +import org.eclipse.jpt.core.jpa2.resource.orm.XmlDerivedId; import org.eclipse.jpt.core.resource.orm.AbstractXmlRelationshipMapping; import org.eclipse.jpt.core.resource.orm.XmlAssociationOverride; import org.eclipse.jpt.core.resource.orm.XmlAssociationOverrideContainer; @@ -171,7 +175,7 @@ import org.eclipse.jpt.core.resource.orm.XmlUniqueConstraint; import org.eclipse.jpt.core.resource.orm.XmlVersion; import org.eclipse.jpt.core.resource.xml.JpaXmlResource; -public abstract class AbstractOrmXmlContextNodeFactory implements OrmXmlContextNodeFactory +public abstract class AbstractOrmXmlContextNodeFactory implements OrmXml2_0ContextNodeFactory { public OrmXml buildMappingFile(MappingFileRef parent, JpaXmlResource resource) { return new GenericOrmXml(parent, resource); @@ -357,6 +361,10 @@ public abstract class AbstractOrmXmlContextNodeFactory implements OrmXmlContextN return new GenericOrmNullConverter(parent); } + public OrmDerivedId2_0 buildOrmDerivedId(OrmSingleRelationshipMapping2_0 parent, XmlDerivedId resource) { + return new NullOrmDerivedId2_0(parent); + } + // ********** ORM Virtual Resource Model ********** diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatform.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatform.java index c6e58d5985..3171e1d041 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatform.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatform.java @@ -45,6 +45,8 @@ public class GenericJpaPlatform { private final String id; + private final Version jpaVersion; + private final JpaFactory jpaFactory; private final JpaAnnotationProvider annotationProvider; @@ -54,9 +56,10 @@ public class GenericJpaPlatform private final JpaPlatformVariation jpaVariation; - public GenericJpaPlatform(String id, JpaFactory jpaFactory, JpaAnnotationProvider jpaAnnotationProvider, JpaPlatformProvider platformProvider, JpaPlatformVariation jpaVariation) { + public GenericJpaPlatform(String id, Version jpaVersion, JpaFactory jpaFactory, JpaAnnotationProvider jpaAnnotationProvider, JpaPlatformProvider platformProvider, JpaPlatformVariation jpaVariation) { super(); this.id = id; + this.jpaVersion = jpaVersion; this.jpaFactory = jpaFactory; this.annotationProvider = jpaAnnotationProvider; this.jpaVariation = jpaVariation; @@ -67,8 +70,11 @@ public class GenericJpaPlatform public String getId() { return this.id; } - - + + public Version getJpaVersion() { + return this.jpaVersion; + } + // ********** factory ********** public JpaFactory getJpaFactory() { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatformFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatformFactory.java index 5be6f49577..e5fcbb87f1 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatformFactory.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/GenericJpaPlatformFactory.java @@ -31,6 +31,7 @@ public class GenericJpaPlatformFactory public JpaPlatform buildJpaPlatform(String id) { return new GenericJpaPlatform( id, + this.buildJpaVersion(), new GenericJpaFactory(), new GenericJpaAnnotationProvider(GenericJpaAnnotationDefinitionProvider.instance()), GenericJpaPlatformProvider.instance(), @@ -38,6 +39,18 @@ public class GenericJpaPlatformFactory } + private JpaPlatform.Version buildJpaVersion() { + return new JpaPlatform.Version() { + public boolean is2_0Compatible() { + return false; + } + + public int getJpaVersion() { + return 1; + } + }; + } + protected JpaPlatformVariation buildJpaPlatformVariation() { return new JpaPlatformVariation() { public Supported getTablePerConcreteClassInheritanceIsSupported() { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaAttributeMapping.java index 6e6294728b..a495af54de 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaAttributeMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaAttributeMapping.java @@ -9,8 +9,8 @@ ******************************************************************************/ package org.eclipse.jpt.core.internal.context.java; +import java.util.Iterator; import java.util.List; - import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jpt.core.context.RelationshipMapping; import org.eclipse.jpt.core.context.TypeMapping; @@ -22,6 +22,7 @@ import org.eclipse.jpt.core.resource.java.Annotation; import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; import org.eclipse.jpt.core.utility.TextRange; import org.eclipse.jpt.db.Table; +import org.eclipse.jpt.utility.internal.iterators.ArrayListIterator; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -36,6 +37,8 @@ public abstract class AbstractJavaAttributeMapping<T extends Annotation> protected T mappingAnnotation; + private String[] supportingAnnotationNames; + protected AbstractJavaAttributeMapping(JavaPersistentAttribute parent) { super(parent); @@ -102,6 +105,24 @@ public abstract class AbstractJavaAttributeMapping<T extends Annotation> public boolean isOwnedBy(RelationshipMapping mapping) { return false; } + + // ********** supporting annotation names ********** + + public Iterator<String> supportingAnnotationNames() { + return new ArrayListIterator<String>(getSupportingAnnotationNames()); + } + + protected synchronized String[] getSupportingAnnotationNames() { + if (this.supportingAnnotationNames == null) { + this.supportingAnnotationNames = this.buildSupportingAnnotationNames(); + } + return this.supportingAnnotationNames; + } + + protected String[] buildSupportingAnnotationNames() { + return new String[0]; + } + @SuppressWarnings("unchecked") public void initialize(Annotation annotation) { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaBaseEmbeddedMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaBaseEmbeddedMapping.java index a174df908d..19bcc91ecc 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaBaseEmbeddedMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaBaseEmbeddedMapping.java @@ -22,7 +22,7 @@ import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.core.resource.java.Annotation; import org.eclipse.jpt.core.resource.java.JPA; import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; +import org.eclipse.jpt.utility.internal.ArrayTools; import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; import org.eclipse.jpt.utility.internal.iterators.TransformationIterator; @@ -54,11 +54,13 @@ public abstract class AbstractJavaBaseEmbeddedMapping<T extends Annotation> //****************** JavaAttributeMapping implementation ******************* - public Iterator<String> supportingAnnotationNames() { - return new ArrayIterator<String>( + @Override + protected String[] buildSupportingAnnotationNames() { + return ArrayTools.addAll( + super.buildSupportingAnnotationNames(), JPA.ATTRIBUTE_OVERRIDE, JPA.ATTRIBUTE_OVERRIDES); - } + } public Embeddable getEmbeddable() { return this.embeddable; diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaBasicMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaBasicMapping.java index 024a6d148f..49f55a8e28 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaBasicMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaBasicMapping.java @@ -32,7 +32,7 @@ import org.eclipse.jpt.core.resource.java.JPA; import org.eclipse.jpt.core.resource.java.LobAnnotation; import org.eclipse.jpt.core.resource.java.TemporalAnnotation; import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; +import org.eclipse.jpt.utility.internal.ArrayTools; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -79,8 +79,10 @@ public abstract class AbstractJavaBasicMapping extends AbstractJavaAttributeMapp return BasicAnnotation.ANNOTATION_NAME; } - public Iterator<String> supportingAnnotationNames() { - return new ArrayIterator<String>( + @Override + protected String[] buildSupportingAnnotationNames() { + return ArrayTools.addAll( + super.buildSupportingAnnotationNames(), JPA.COLUMN, JPA.LOB, JPA.TEMPORAL, diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaIdMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaIdMapping.java index adbfb22417..3b62f85ab4 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaIdMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaIdMapping.java @@ -31,9 +31,9 @@ import org.eclipse.jpt.core.resource.java.SequenceGeneratorAnnotation; import org.eclipse.jpt.core.resource.java.TableGeneratorAnnotation; import org.eclipse.jpt.core.resource.java.TemporalAnnotation; import org.eclipse.jpt.utility.Filter; +import org.eclipse.jpt.utility.internal.ArrayTools; import org.eclipse.jpt.utility.internal.CollectionTools; import org.eclipse.jpt.utility.internal.StringTools; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; import org.eclipse.wst.validation.internal.provisional.core.IMessage; @@ -97,8 +97,10 @@ public abstract class AbstractJavaIdMapping return IdAnnotation.ANNOTATION_NAME; } - public Iterator<String> supportingAnnotationNames() { - return new ArrayIterator<String>( + @Override + protected String[] buildSupportingAnnotationNames() { + return ArrayTools.addAll( + super.buildSupportingAnnotationNames(), JPA.COLUMN, JPA.GENERATED_VALUE, JPA.TEMPORAL, diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaManyToManyMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaManyToManyMapping.java index a10e2ebf1c..5909def13c 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaManyToManyMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaManyToManyMapping.java @@ -9,15 +9,12 @@ ******************************************************************************/ package org.eclipse.jpt.core.internal.context.java; -import java.util.Iterator; import org.eclipse.jpt.core.MappingKeys; import org.eclipse.jpt.core.context.java.JavaManyToManyMapping; import org.eclipse.jpt.core.context.java.JavaManyToManyRelationshipReference; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.core.context.java.JavaRelationshipReference; -import org.eclipse.jpt.core.resource.java.JPA; import org.eclipse.jpt.core.resource.java.ManyToManyAnnotation; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; public abstract class AbstractJavaManyToManyMapping @@ -37,13 +34,6 @@ public abstract class AbstractJavaManyToManyMapping return ManyToManyAnnotation.ANNOTATION_NAME; } - public Iterator<String> supportingAnnotationNames() { - return new ArrayIterator<String>( - JPA.ORDER_BY, - JPA.MAP_KEY, - JPA.JOIN_TABLE); - } - @Override public ManyToManyAnnotation getMappingAnnotation() { return super.getMappingAnnotation(); diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaManyToOneMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaManyToOneMapping.java index 73c5b38bae..43cedb917d 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaManyToOneMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaManyToOneMapping.java @@ -9,19 +9,16 @@ ******************************************************************************/ package org.eclipse.jpt.core.internal.context.java; -import java.util.Iterator; import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaManyToOneMapping; import org.eclipse.jpt.core.context.java.JavaManyToOneRelationshipReference; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.resource.java.JPA; +import org.eclipse.jpt.core.jpa2.context.java.JavaManyToOneMapping2_0; import org.eclipse.jpt.core.resource.java.ManyToOneAnnotation; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; public abstract class AbstractJavaManyToOneMapping extends AbstractJavaSingleRelationshipMapping<ManyToOneAnnotation> - implements JavaManyToOneMapping + implements JavaManyToOneMapping2_0 { protected AbstractJavaManyToOneMapping(JavaPersistentAttribute parent) { super(parent); @@ -37,14 +34,6 @@ public abstract class AbstractJavaManyToOneMapping return ManyToOneAnnotation.ANNOTATION_NAME; } - public Iterator<String> supportingAnnotationNames() { - return new ArrayIterator<String>( - JPA.JOIN_COLUMN, - JPA.JOIN_COLUMNS, - JPA.JOIN_TABLE - ); - } - @Override public ManyToOneAnnotation getMappingAnnotation() { return super.getMappingAnnotation(); diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaMultiRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaMultiRelationshipMapping.java index b1987879f5..618f4f9de1 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaMultiRelationshipMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaMultiRelationshipMapping.java @@ -15,10 +15,12 @@ import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jpt.core.context.FetchType; import org.eclipse.jpt.core.context.java.JavaMultiRelationshipMapping; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; +import org.eclipse.jpt.core.resource.java.JPA; import org.eclipse.jpt.core.resource.java.MapKeyAnnotation; import org.eclipse.jpt.core.resource.java.OrderByAnnotation; import org.eclipse.jpt.core.resource.java.RelationshipMappingAnnotation; import org.eclipse.jpt.utility.Filter; +import org.eclipse.jpt.utility.internal.ArrayTools; import org.eclipse.jpt.utility.internal.StringTools; import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; @@ -58,6 +60,17 @@ public abstract class AbstractJavaMultiRelationshipMapping<T extends Relationshi this.updateMapKey(); } + // ********** AbstractJavaAttributeMapping implementation ********** + + @Override + protected String[] buildSupportingAnnotationNames() { + return ArrayTools.addAll( + super.buildSupportingAnnotationNames(), + JPA.JOIN_TABLE, + JPA.MAP_KEY, + JPA.ORDER_BY + ); + } // ********** AbstractJavaRelationshipMapping implementation ********** diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaOneToManyMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaOneToManyMapping.java index 51d0978c4f..f3f5326e2c 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaOneToManyMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaOneToManyMapping.java @@ -9,14 +9,13 @@ ******************************************************************************/ package org.eclipse.jpt.core.internal.context.java; -import java.util.Iterator; import org.eclipse.jpt.core.MappingKeys; import org.eclipse.jpt.core.context.java.JavaOneToManyMapping; import org.eclipse.jpt.core.context.java.JavaOneToManyRelationshipReference; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.core.resource.java.JPA; import org.eclipse.jpt.core.resource.java.OneToManyAnnotation; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; +import org.eclipse.jpt.utility.internal.ArrayTools; public abstract class AbstractJavaOneToManyMapping @@ -33,11 +32,10 @@ public abstract class AbstractJavaOneToManyMapping return OneToManyAnnotation.ANNOTATION_NAME; } - public Iterator<String> supportingAnnotationNames() { - return new ArrayIterator<String>( - JPA.ORDER_BY, - JPA.MAP_KEY, - JPA.JOIN_TABLE, + @Override + protected String[] buildSupportingAnnotationNames() { + return ArrayTools.addAll( + super.buildSupportingAnnotationNames(), JPA.JOIN_COLUMN, JPA.JOIN_COLUMNS); } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaOneToOneMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaOneToOneMapping.java index d00d200790..e9bdfba73a 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaOneToOneMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaOneToOneMapping.java @@ -9,20 +9,19 @@ ******************************************************************************/ package org.eclipse.jpt.core.internal.context.java; -import java.util.Iterator; import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaOneToOneMapping; import org.eclipse.jpt.core.context.java.JavaOneToOneRelationshipReference; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.core.context.java.JavaRelationshipReference; +import org.eclipse.jpt.core.jpa2.context.java.JavaOneToOneMapping2_0; import org.eclipse.jpt.core.resource.java.JPA; import org.eclipse.jpt.core.resource.java.OneToOneAnnotation; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; +import org.eclipse.jpt.utility.internal.ArrayTools; public abstract class AbstractJavaOneToOneMapping extends AbstractJavaSingleRelationshipMapping<OneToOneAnnotation> - implements JavaOneToOneMapping + implements JavaOneToOneMapping2_0 { protected AbstractJavaOneToOneMapping(JavaPersistentAttribute parent) { super(parent); @@ -43,13 +42,12 @@ public abstract class AbstractJavaOneToOneMapping return super.getMappingAnnotation(); } - public Iterator<String> supportingAnnotationNames() { - return new ArrayIterator<String>( + @Override + protected String[] buildSupportingAnnotationNames() { + return ArrayTools.addAll( + super.buildSupportingAnnotationNames(), JPA.PRIMARY_KEY_JOIN_COLUMN, - JPA.PRIMARY_KEY_JOIN_COLUMNS, - JPA.JOIN_COLUMN, - JPA.JOIN_COLUMNS, - JPA.JOIN_TABLE); + JPA.PRIMARY_KEY_JOIN_COLUMNS); } public String getKey() { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaSingleRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaSingleRelationshipMapping.java index feafb2bf26..c5d956fa01 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaSingleRelationshipMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaSingleRelationshipMapping.java @@ -9,39 +9,64 @@ ******************************************************************************/ package org.eclipse.jpt.core.internal.context.java; +import java.util.List; +import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jpt.core.context.FetchType; import org.eclipse.jpt.core.context.Nullable; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.context.java.JavaSingleRelationshipMapping; +import org.eclipse.jpt.core.jpa2.JpaFactory2_0; +import org.eclipse.jpt.core.jpa2.context.java.JavaDerivedId2_0; +import org.eclipse.jpt.core.jpa2.context.java.JavaSingleRelationshipMapping2_0; +import org.eclipse.jpt.core.resource.java.JPA; import org.eclipse.jpt.core.resource.java.RelationshipMappingAnnotation; +import org.eclipse.jpt.utility.internal.ArrayTools; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; +import org.eclipse.wst.validation.internal.provisional.core.IReporter; /** * Java single relationship (1:1, m:1) mapping */ public abstract class AbstractJavaSingleRelationshipMapping<T extends RelationshipMappingAnnotation> extends AbstractJavaRelationshipMapping<T> - implements JavaSingleRelationshipMapping + implements JavaSingleRelationshipMapping2_0 { protected Boolean specifiedOptional; + protected final JavaDerivedId2_0 derivedId; protected AbstractJavaSingleRelationshipMapping(JavaPersistentAttribute parent) { super(parent); + this.derivedId = buildDerivedId(); } @Override protected void initialize() { super.initialize(); this.specifiedOptional = this.getResourceOptional(); + this.derivedId.initialize(); } @Override protected void update() { super.update(); this.setSpecifiedOptional_(this.getResourceOptional()); + this.derivedId.update(); } - + @Override + protected String[] buildSupportingAnnotationNames() { + String[] annotationNames = ArrayTools.addAll( + super.buildSupportingAnnotationNames(), + JPA.JOIN_COLUMN, + JPA.JOIN_COLUMNS, + JPA.JOIN_TABLE); + + if (getJpaPlatformVersion().is2_0Compatible()) { + annotationNames = ArrayTools.add(annotationNames, JPA.ID); + } + return annotationNames; + } + // ********** optional ********** public boolean isOptional() { @@ -73,6 +98,21 @@ public abstract class AbstractJavaSingleRelationshipMapping<T extends Relationsh protected abstract void setResourceOptional(Boolean newOptional); + + // ********** 2.0 derived id ********** + + protected JavaDerivedId2_0 buildDerivedId() { + return ((JpaFactory2_0) getJpaFactory()).buildJavaDerivedId(this); + } + + public JavaDerivedId2_0 getDerivedId() { + return this.derivedId; + } + + @Override + public boolean isIdMapping() { + return this.derivedId.getValue(); + } // ********** AbstractJavaRelationshipMapping implementation ********** @@ -92,5 +132,11 @@ public abstract class AbstractJavaSingleRelationshipMapping<T extends Relationsh public FetchType getDefaultFetch() { return DEFAULT_FETCH_TYPE; } + + @Override + public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { + super.validate(messages, reporter, astRoot); + this.derivedId.validate(messages, reporter, astRoot); + } } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaVersionMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaVersionMapping.java index 4d64b0b90f..6ce21c7315 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaVersionMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaVersionMapping.java @@ -25,7 +25,7 @@ import org.eclipse.jpt.core.resource.java.JPA; import org.eclipse.jpt.core.resource.java.TemporalAnnotation; import org.eclipse.jpt.core.resource.java.VersionAnnotation; import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; +import org.eclipse.jpt.utility.internal.ArrayTools; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -68,8 +68,11 @@ public abstract class AbstractJavaVersionMapping return VersionAnnotation.ANNOTATION_NAME; } - public Iterator<String> supportingAnnotationNames() { - return new ArrayIterator<String>( + + @Override + protected String[] buildSupportingAnnotationNames() { + return ArrayTools.addAll( + super.buildSupportingAnnotationNames(), JPA.COLUMN, JPA.TEMPORAL); } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmManyToOneMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmManyToOneMapping.java index ada1577be8..14f7359de7 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmManyToOneMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmManyToOneMapping.java @@ -11,17 +11,17 @@ package org.eclipse.jpt.core.internal.context.orm; import org.eclipse.jpt.core.MappingKeys; import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmManyToOneMapping; import org.eclipse.jpt.core.context.orm.OrmManyToOneRelationshipReference; import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; import org.eclipse.jpt.core.context.orm.OrmRelationshipReference; +import org.eclipse.jpt.core.jpa2.context.orm.OrmManyToOneMapping2_0; import org.eclipse.jpt.core.resource.orm.Attributes; import org.eclipse.jpt.core.resource.orm.XmlManyToOne; public abstract class AbstractOrmManyToOneMapping<T extends XmlManyToOne> extends AbstractOrmSingleRelationshipMapping<T> - implements OrmManyToOneMapping + implements OrmManyToOneMapping2_0 { protected AbstractOrmManyToOneMapping(OrmPersistentAttribute parent, T resourceMapping) { super(parent, resourceMapping); diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmOneToOneMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmOneToOneMapping.java index 62d92ddd8d..c7772ed612 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmOneToOneMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmOneToOneMapping.java @@ -11,17 +11,17 @@ package org.eclipse.jpt.core.internal.context.orm; import org.eclipse.jpt.core.MappingKeys; import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmOneToOneMapping; import org.eclipse.jpt.core.context.orm.OrmOneToOneRelationshipReference; import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; import org.eclipse.jpt.core.context.orm.OrmRelationshipReference; +import org.eclipse.jpt.core.jpa2.context.orm.OrmOneToOneMapping2_0; import org.eclipse.jpt.core.resource.orm.Attributes; import org.eclipse.jpt.core.resource.orm.XmlOneToOne; public abstract class AbstractOrmOneToOneMapping<T extends XmlOneToOne> extends AbstractOrmSingleRelationshipMapping<T> - implements OrmOneToOneMapping + implements OrmOneToOneMapping2_0 { protected AbstractOrmOneToOneMapping(OrmPersistentAttribute parent, T resourceMapping) { super(parent, resourceMapping); diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmSingleRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmSingleRelationshipMapping.java index 3d4b3ddbd6..0a5a3dd7c1 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmSingleRelationshipMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmSingleRelationshipMapping.java @@ -9,26 +9,40 @@ ******************************************************************************/ package org.eclipse.jpt.core.internal.context.orm; +import java.util.List; import org.eclipse.jpt.core.context.FetchType; import org.eclipse.jpt.core.context.Nullable; import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; import org.eclipse.jpt.core.context.orm.OrmSingleRelationshipMapping; +import org.eclipse.jpt.core.jpa2.context.orm.OrmDerivedId2_0; +import org.eclipse.jpt.core.jpa2.context.orm.OrmSingleRelationshipMapping2_0; +import org.eclipse.jpt.core.jpa2.context.orm.OrmXml2_0ContextNodeFactory; +import org.eclipse.jpt.core.jpa2.resource.orm.XmlDerivedId; import org.eclipse.jpt.core.resource.orm.AbstractXmlSingleRelationshipMapping; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; +import org.eclipse.wst.validation.internal.provisional.core.IReporter; public abstract class AbstractOrmSingleRelationshipMapping<T extends AbstractXmlSingleRelationshipMapping> extends AbstractOrmRelationshipMapping<T> - implements OrmSingleRelationshipMapping + implements OrmSingleRelationshipMapping2_0 { protected Boolean specifiedOptional; + protected final OrmDerivedId2_0 derivedId; protected AbstractOrmSingleRelationshipMapping(OrmPersistentAttribute parent, T resourceMapping) { super(parent, resourceMapping); this.specifiedOptional = this.getResourceOptional(); //TODO defaultOptional + this.derivedId = buildDerivedId(); } + @Override + public void initializeFromOrmSingleRelationshipMapping(OrmSingleRelationshipMapping oldMapping) { + super.initializeFromOrmSingleRelationshipMapping(oldMapping); + getDerivedId().setValue(((OrmSingleRelationshipMapping2_0) oldMapping).getDerivedId().getValue()); + } @Override protected String getResourceDefaultTargetEntity() { @@ -66,6 +80,26 @@ public abstract class AbstractOrmSingleRelationshipMapping<T extends AbstractXml public boolean isDefaultOptional() { return Nullable.DEFAULT_OPTIONAL; } + + // **************** 2.0 derived id *********************************************** + + protected OrmDerivedId2_0 buildDerivedId() { + //TODO ORM this can change once we collapse the orm resource model + if (this.resourceAttributeMapping instanceof XmlDerivedId) { + return ((OrmXml2_0ContextNodeFactory) getXmlContextNodeFactory()).buildOrmDerivedId(this, (XmlDerivedId) this.resourceAttributeMapping); + } + return ((OrmXml2_0ContextNodeFactory) getXmlContextNodeFactory()).buildOrmDerivedId(this, null); + } + + + public OrmDerivedId2_0 getDerivedId() { + return this.derivedId; + } + + @Override + public boolean isIdMapping() { + return this.derivedId.getValue(); + } // **************** resource => context ************************************ @@ -74,9 +108,19 @@ public abstract class AbstractOrmSingleRelationshipMapping<T extends AbstractXml public void update() { super.update(); this.setSpecifiedOptional_(this.getResourceOptional()); + this.derivedId.update(); } protected Boolean getResourceOptional() { return this.resourceAttributeMapping.getOptional(); } + + + // **************** validation ************************************ + + @Override + public void validate(List<IMessage> messages, IReporter reporter) { + super.validate(messages, reporter); + this.derivedId.validate(messages, reporter); + } } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmXmlContextNodeFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmXmlContextNodeFactory.java index a0148929b8..36d3a5c3f0 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmXmlContextNodeFactory.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmXmlContextNodeFactory.java @@ -9,18 +9,9 @@ ******************************************************************************/ package org.eclipse.jpt.core.internal.context.orm; -import org.eclipse.jpt.core.context.orm.OrmXml; -import org.eclipse.jpt.core.context.persistence.MappingFileRef; import org.eclipse.jpt.core.internal.AbstractOrmXmlContextNodeFactory; -import org.eclipse.jpt.core.internal.jpa1.context.orm.GenericOrmXml; -import org.eclipse.jpt.core.resource.xml.JpaXmlResource; public class GenericOrmXmlContextNodeFactory extends AbstractOrmXmlContextNodeFactory { - - public OrmXml buildMappingFile(MappingFileRef parent, JpaXmlResource xmlResource) { - return new GenericOrmXml(parent, xmlResource); - } - } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaNullAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaNullAttributeMapping.java index fdb8d6ffd2..bff9875102 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaNullAttributeMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaNullAttributeMapping.java @@ -9,14 +9,12 @@ ******************************************************************************/ package org.eclipse.jpt.core.internal.jpa1.context.java; -import java.util.Iterator; import java.util.List; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jpt.core.MappingKeys; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.core.internal.context.java.AbstractJavaAttributeMapping; import org.eclipse.jpt.core.resource.java.Annotation; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -36,10 +34,6 @@ public class GenericJavaNullAttributeMapping return null; } - public Iterator<String> supportingAnnotationNames() { - return EmptyIterator.instance(); - } - @Override public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { super.validate(messages, reporter, astRoot); diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaTransientMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaTransientMapping.java index 599ef71f15..51023530d7 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaTransientMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaTransientMapping.java @@ -9,7 +9,6 @@ ******************************************************************************/ package org.eclipse.jpt.core.internal.jpa1.context.java; -import java.util.Iterator; import java.util.List; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jpt.core.MappingKeys; @@ -17,7 +16,6 @@ import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.core.context.java.JavaTransientMapping; import org.eclipse.jpt.core.internal.context.java.AbstractJavaAttributeMapping; import org.eclipse.jpt.core.resource.java.TransientAnnotation; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -37,10 +35,6 @@ public class GenericJavaTransientMapping public String getAnnotationName() { return TransientAnnotation.ANNOTATION_NAME; } - - public Iterator<String> supportingAnnotationNames() { - return EmptyIterator.instance(); - } @Override public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/Generic2_0JpaPlatformFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/Generic2_0JpaPlatformFactory.java index 7fdb3d6eb9..e23c481017 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/Generic2_0JpaPlatformFactory.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/Generic2_0JpaPlatformFactory.java @@ -33,11 +33,23 @@ public class Generic2_0JpaPlatformFactory public JpaPlatform buildJpaPlatform(String id) { return new GenericJpaPlatform( id, + this.buildJpaVersion(), new GenericJpaFactory2_0(), - new GenericJpaAnnotationProvider( - Generic2_0JpaAnnotationDefinitionProvider.instance()), + new GenericJpaAnnotationProvider(Generic2_0JpaAnnotationDefinitionProvider.instance()), Generic2_0JpaPlatformProvider.instance(), - buildJpaPlatformVariation()); + this.buildJpaPlatformVariation()); + } + + private JpaPlatform.Version buildJpaVersion() { + return new JpaPlatform.Version() { + public boolean is2_0Compatible() { + return true; + } + + public int getJpaVersion() { + return 2; + } + }; } protected JpaPlatformVariation buildJpaPlatformVariation() { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/GenericJpaFactory2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/GenericJpaFactory2_0.java index eadefa10d9..30470da503 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/GenericJpaFactory2_0.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/GenericJpaFactory2_0.java @@ -20,8 +20,6 @@ import org.eclipse.jpt.core.context.java.JavaAssociationOverrideRelationshipRefe import org.eclipse.jpt.core.context.java.JavaEmbeddable; import org.eclipse.jpt.core.context.java.JavaEmbeddedMapping; import org.eclipse.jpt.core.context.java.JavaJpaContextNode; -import org.eclipse.jpt.core.context.java.JavaManyToOneMapping; -import org.eclipse.jpt.core.context.java.JavaOneToOneMapping; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.core.context.java.JavaPersistentType; import org.eclipse.jpt.core.context.java.JavaSequenceGenerator; @@ -32,14 +30,14 @@ import org.eclipse.jpt.core.context.persistence.PersistenceXml; import org.eclipse.jpt.core.internal.AbstractJpaFactory; import org.eclipse.jpt.core.internal.jpa2.context.GenericRootContextNode2_0; import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaAssociationOverrideRelationshipReference2_0; +import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaDerivedId2_0; import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaEmbeddable2_0; import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaEmbeddedMapping2_0; -import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaManyToOneMapping2_0; -import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaOneToOneMapping2_0; import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaPersistentAttribute2_0; import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaPersistentType2_0; import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaSequenceGenerator2_0; import org.eclipse.jpt.core.internal.jpa2.context.java.VirtualAssociationOverride2_0Annotation; +import org.eclipse.jpt.core.internal.jpa2.context.orm.GenericOrmDerivedId2_0; import org.eclipse.jpt.core.internal.jpa2.context.persistence.GenericClassRef2_0; import org.eclipse.jpt.core.internal.jpa2.context.persistence.GenericJarFileRef2_0; import org.eclipse.jpt.core.internal.jpa2.context.persistence.GenericMappingFileRef2_0; @@ -52,11 +50,16 @@ import org.eclipse.jpt.core.jpa2.JpaProject2_0; import org.eclipse.jpt.core.jpa2.PersistentTypeStaticMetamodelSynchronizer; import org.eclipse.jpt.core.jpa2.StaticMetamodelSynchronizer; import org.eclipse.jpt.core.jpa2.context.JpaRootContextNode2_0; +import org.eclipse.jpt.core.jpa2.context.java.JavaDerivedId2_0; +import org.eclipse.jpt.core.jpa2.context.java.JavaSingleRelationshipMapping2_0; +import org.eclipse.jpt.core.jpa2.context.orm.OrmDerivedId2_0; +import org.eclipse.jpt.core.jpa2.context.orm.OrmSingleRelationshipMapping2_0; import org.eclipse.jpt.core.jpa2.context.persistence.ClassRef2_0; import org.eclipse.jpt.core.jpa2.context.persistence.MappingFileRef2_0; import org.eclipse.jpt.core.jpa2.context.persistence.Persistence2_0; import org.eclipse.jpt.core.jpa2.context.persistence.PersistenceUnit2_0; import org.eclipse.jpt.core.jpa2.context.persistence.PersistenceXml2_0; +import org.eclipse.jpt.core.jpa2.resource.orm.XmlDerivedId; import org.eclipse.jpt.core.resource.java.AssociationOverrideAnnotation; import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; import org.eclipse.jpt.core.resource.java.JavaResourcePersistentMember; @@ -89,10 +92,12 @@ public class GenericJpaFactory2_0 return new GenericJpaProject2_0(config); } + @Override public StaticMetamodelSynchronizer buildStaticMetamodelSynchronizer(JpaProject2_0 jpaProject) { return new GenericStaticMetamodelSynchronizer(jpaProject); } + @Override public PersistentTypeStaticMetamodelSynchronizer buildPersistentTypeStaticMetamodelSynchronizer(StaticMetamodelSynchronizer staticMetamodelSynchronizer, PersistentType persistentType) { return new GenericPersistentTypeStaticMetamodelSynchronizer(staticMetamodelSynchronizer, persistentType); } @@ -170,16 +175,6 @@ public class GenericJpaFactory2_0 public JavaEmbeddedMapping buildJavaEmbeddedMapping(JavaPersistentAttribute parent) { return new GenericJavaEmbeddedMapping2_0(parent); } - - @Override - public JavaManyToOneMapping buildJavaManyToOneMapping(JavaPersistentAttribute parent) { - return new GenericJavaManyToOneMapping2_0(parent); - } - - @Override - public JavaOneToOneMapping buildJavaOneToOneMapping(JavaPersistentAttribute parent) { - return new GenericJavaOneToOneMapping2_0(parent); - } @Override public JavaSequenceGenerator buildJavaSequenceGenerator(JavaJpaContextNode parent) { @@ -195,5 +190,17 @@ public class GenericJpaFactory2_0 public AssociationOverrideAnnotation buildJavaVirtualAssociationOverrideAnnotation(JavaResourcePersistentMember jrpm, String name, JoiningStrategy joiningStrategy) { return new VirtualAssociationOverride2_0Annotation(jrpm, name, joiningStrategy); } + + @Override + public JavaDerivedId2_0 buildJavaDerivedId(JavaSingleRelationshipMapping2_0 parent) { + return new GenericJavaDerivedId2_0(parent); + } + + + // ********** Orm Context Model ********** + + public OrmDerivedId2_0 buildOrmDerivedId(OrmSingleRelationshipMapping2_0 parent, XmlDerivedId resource) { + return new GenericOrmDerivedId2_0(parent, resource); + } } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/NullPersistentTypeStaticMetamodelSynchronizer.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/NullPersistentTypeStaticMetamodelSynchronizer.java new file mode 100644 index 0000000000..88a71a1fb1 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/NullPersistentTypeStaticMetamodelSynchronizer.java @@ -0,0 +1,29 @@ +/******************************************************************************* + * Copyright (c) 2009 Oracle. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0, which accompanies this distribution + * and is available at http://www.eclipse.org/legal/epl-v10.html. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.core.internal.jpa2; + +import org.eclipse.jpt.core.jpa2.PersistentTypeStaticMetamodelSynchronizer; + +/** + * + */ +public class NullPersistentTypeStaticMetamodelSynchronizer + implements PersistentTypeStaticMetamodelSynchronizer +{ + + + public NullPersistentTypeStaticMetamodelSynchronizer() { + super(); + } + + public void synchronize() { + //no-op + } +} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/NullStaticMetamodelSynchronizer.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/NullStaticMetamodelSynchronizer.java new file mode 100644 index 0000000000..0f05480c2a --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/NullStaticMetamodelSynchronizer.java @@ -0,0 +1,42 @@ +/******************************************************************************* + * Copyright (c) 2009 Oracle. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0, which accompanies this distribution + * and is available at http://www.eclipse.org/legal/epl-v10.html. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.core.internal.jpa2; + +import org.eclipse.jdt.core.IPackageFragmentRoot; +import org.eclipse.jpt.core.context.PersistentType; +import org.eclipse.jpt.core.jpa2.JpaProject2_0; +import org.eclipse.jpt.core.jpa2.StaticMetamodelSynchronizer; + +/** + * + */ +public class NullStaticMetamodelSynchronizer + implements StaticMetamodelSynchronizer +{ + protected final JpaProject2_0 jpaProject; + + public NullStaticMetamodelSynchronizer(JpaProject2_0 jpaProject) { + super(); + this.jpaProject = jpaProject; + } + + public void synchronize(PersistentType persistentType) { + //no-op + } + + public JpaProject2_0 getJpaProject() { + return this.jpaProject; + } + + public IPackageFragmentRoot getSourceFolder() { + return this.jpaProject.getStaticMetaModelSourceFolder(); + } + +} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/AbstractJavaManyToOneMapping2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/AbstractJavaManyToOneMapping2_0.java deleted file mode 100644 index d720c9a132..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/AbstractJavaManyToOneMapping2_0.java +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 Oracle. - * All rights reserved. This program and the accompanying materials are - * made available under the terms of the Eclipse Public License v1.0 which - * accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Oracle - initial API and implementation - *******************************************************************************/ -package org.eclipse.jpt.core.internal.jpa2.context.java; - -import java.util.Iterator; -import java.util.List; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.internal.context.java.AbstractJavaManyToOneMapping; -import org.eclipse.jpt.core.jpa2.context.java.JavaDerivedId2_0; -import org.eclipse.jpt.core.jpa2.context.java.JavaManyToOneMapping2_0; -import org.eclipse.jpt.core.resource.java.JPA; -import org.eclipse.jpt.utility.internal.iterators.CompositeIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - -public abstract class AbstractJavaManyToOneMapping2_0 - extends AbstractJavaManyToOneMapping - implements JavaManyToOneMapping2_0 -{ - protected JavaDerivedId2_0 derivedId; - - - protected AbstractJavaManyToOneMapping2_0(JavaPersistentAttribute parent) { - super(parent); - this.derivedId = buildDerivedId(); - } - - - protected JavaDerivedId2_0 buildDerivedId() { - return new GenericJavaDerivedId2_0(this); - } - - @Override - public Iterator<String> supportingAnnotationNames() { - return new CompositeIterator<String>( - super.supportingAnnotationNames(), - JPA.ID); - } - - public JavaDerivedId2_0 getDerivedId() { - return this.derivedId; - } - - @Override - public boolean isIdMapping() { - return this.derivedId.getValue(); - } - - @Override - protected void initialize() { - super.initialize(); - this.derivedId.initialize(); - } - - @Override - protected void update() { - super.update(); - this.derivedId.update(); - } - - @Override - public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { - super.validate(messages, reporter, astRoot); - this.derivedId.validate(messages, reporter, astRoot); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/AbstractJavaOneToOneMapping2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/AbstractJavaOneToOneMapping2_0.java deleted file mode 100644 index 63f70b4a0e..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/AbstractJavaOneToOneMapping2_0.java +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 Oracle. - * All rights reserved. This program and the accompanying materials are - * made available under the terms of the Eclipse Public License v1.0 which - * accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Oracle - initial API and implementation - *******************************************************************************/ -package org.eclipse.jpt.core.internal.jpa2.context.java; - -import java.util.Iterator; -import java.util.List; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.internal.context.java.AbstractJavaOneToOneMapping; -import org.eclipse.jpt.core.jpa2.context.java.JavaDerivedId2_0; -import org.eclipse.jpt.core.jpa2.context.java.JavaOneToOneMapping2_0; -import org.eclipse.jpt.core.resource.java.JPA; -import org.eclipse.jpt.utility.internal.iterators.CompositeIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - -public abstract class AbstractJavaOneToOneMapping2_0 - extends AbstractJavaOneToOneMapping - implements JavaOneToOneMapping2_0 -{ - protected JavaDerivedId2_0 derivedId; - - - protected AbstractJavaOneToOneMapping2_0(JavaPersistentAttribute parent) { - super(parent); - this.derivedId = buildDerivedId(); - } - - - protected JavaDerivedId2_0 buildDerivedId() { - return new GenericJavaDerivedId2_0(this); - } - - @Override - public Iterator<String> supportingAnnotationNames() { - return new CompositeIterator( - super.supportingAnnotationNames(), - JPA.ID); - } - - public JavaDerivedId2_0 getDerivedId() { - return this.derivedId; - } - - @Override - public boolean isIdMapping() { - return this.derivedId.getValue(); - } - - @Override - protected void initialize() { - super.initialize(); - this.derivedId.initialize(); - } - - @Override - protected void update() { - super.update(); - this.derivedId.update(); - } - - @Override - public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { - super.validate(messages, reporter, astRoot); - this.derivedId.validate(messages, reporter, astRoot); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/GenericJavaEmbeddedMapping2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/GenericJavaEmbeddedMapping2_0.java index 61892507c6..cc23ff6c6c 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/GenericJavaEmbeddedMapping2_0.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/GenericJavaEmbeddedMapping2_0.java @@ -17,7 +17,9 @@ import org.eclipse.jpt.core.context.java.JavaAssociationOverrideContainer; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.core.internal.context.java.AbstractJavaEmbeddedMapping; import org.eclipse.jpt.core.jpa2.context.java.JavaEmbeddedMapping2_0; +import org.eclipse.jpt.core.resource.java.JPA; import org.eclipse.jpt.utility.Filter; +import org.eclipse.jpt.utility.internal.ArrayTools; import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; import org.eclipse.jpt.utility.internal.iterators.TransformationIterator; @@ -57,6 +59,14 @@ public class GenericJavaEmbeddedMapping2_0 this.associationOverrideContainer.postUpdate(); } + @Override + protected String[] buildSupportingAnnotationNames() { + return ArrayTools.addAll( + super.buildSupportingAnnotationNames(), + JPA.ASSOCIATION_OVERRIDE, + JPA.ASSOCIATION_OVERRIDES); + } + public Iterator<String> allOverridableAssociationNames() { return new TransformationIterator<RelationshipMapping, String>(this.allOverridableAssociations()) { @Override diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/GenericJavaManyToOneMapping2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/GenericJavaManyToOneMapping2_0.java deleted file mode 100644 index 8a7caaefcd..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/GenericJavaManyToOneMapping2_0.java +++ /dev/null @@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 Oracle. - * All rights reserved. This program and the accompanying materials are - * made available under the terms of the Eclipse Public License v1.0 which - * accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Oracle - initial API and implementation - *******************************************************************************/ -package org.eclipse.jpt.core.internal.jpa2.context.java; - -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; - -public class GenericJavaManyToOneMapping2_0 - extends AbstractJavaManyToOneMapping2_0 -{ - public GenericJavaManyToOneMapping2_0(JavaPersistentAttribute parent) { - super(parent); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/GenericJavaOneToOneMapping2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/GenericJavaOneToOneMapping2_0.java deleted file mode 100644 index 0652596424..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/GenericJavaOneToOneMapping2_0.java +++ /dev/null @@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 Oracle. - * All rights reserved. This program and the accompanying materials are - * made available under the terms of the Eclipse Public License v1.0 which - * accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Oracle - initial API and implementation - *******************************************************************************/ -package org.eclipse.jpt.core.internal.jpa2.context.java; - -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; - -public class GenericJavaOneToOneMapping2_0 - extends AbstractJavaOneToOneMapping2_0 -{ - public GenericJavaOneToOneMapping2_0(JavaPersistentAttribute parent) { - super(parent); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/NullJavaDerivedId2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/NullJavaDerivedId2_0.java new file mode 100644 index 0000000000..56ae0466d5 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/java/NullJavaDerivedId2_0.java @@ -0,0 +1,48 @@ +/******************************************************************************* + * Copyright (c) 2009 Oracle. + * All rights reserved. This program and the accompanying materials are + * made available under the terms of the Eclipse Public License v1.0 which + * accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Oracle - initial API and implementation + *******************************************************************************/ +package org.eclipse.jpt.core.internal.jpa2.context.java; + +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.core.internal.context.java.AbstractJavaJpaContextNode; +import org.eclipse.jpt.core.jpa2.context.java.JavaDerivedId2_0; +import org.eclipse.jpt.core.jpa2.context.java.JavaSingleRelationshipMapping2_0; +import org.eclipse.jpt.core.utility.TextRange; + +public class NullJavaDerivedId2_0 + extends AbstractJavaJpaContextNode + implements JavaDerivedId2_0 +{ + + public NullJavaDerivedId2_0(JavaSingleRelationshipMapping2_0 parent) { + super(parent); + } + + public boolean getValue() { + return false; + } + + public void setValue(boolean newValue) { + throw new UnsupportedOperationException(); + } + + + public void initialize() { + //no-op + } + + public void update() { + //no-op + } + + public TextRange getValidationTextRange(CompilationUnit astRoot) { + return null; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/AbstractOrmManyToOneMapping2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/AbstractOrmManyToOneMapping2_0.java deleted file mode 100644 index 161b0e37ca..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/AbstractOrmManyToOneMapping2_0.java +++ /dev/null @@ -1,67 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 Oracle. - * All rights reserved. This program and the accompanying materials are - * made available under the terms of the Eclipse Public License v1.0 which - * accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Oracle - initial API and implementation - *******************************************************************************/ -package org.eclipse.jpt.core.internal.jpa2.context.orm; - -import java.util.List; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmSingleRelationshipMapping; -import org.eclipse.jpt.core.internal.context.orm.AbstractOrmManyToOneMapping; -import org.eclipse.jpt.core.jpa2.context.orm.OrmDerivedId2_0; -import org.eclipse.jpt.core.jpa2.context.orm.OrmManyToOneMapping2_0; -import org.eclipse.jpt.core.jpa2.context.orm.OrmSingleRelationshipMapping2_0; -import org.eclipse.jpt.core.jpa2.resource.orm.XmlManyToOne; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - -public abstract class AbstractOrmManyToOneMapping2_0<T extends XmlManyToOne> - extends AbstractOrmManyToOneMapping<T> - implements OrmManyToOneMapping2_0 -{ - protected OrmDerivedId2_0 derivedId; - - - protected AbstractOrmManyToOneMapping2_0(OrmPersistentAttribute parent, T resourceMapping) { - super(parent, resourceMapping); - this.derivedId = buildDerivedId(); - } - - - protected OrmDerivedId2_0 buildDerivedId() { - return new GenericOrmDerivedId2_0(this, this.resourceAttributeMapping); - } - - public OrmDerivedId2_0 getDerivedId() { - return this.derivedId; - } - - @Override - public boolean isIdMapping() { - return this.derivedId.getValue(); - } - - @Override - public void initializeFromOrmSingleRelationshipMapping(OrmSingleRelationshipMapping oldMapping) { - super.initializeFromOrmSingleRelationshipMapping(oldMapping); - getDerivedId().setValue(((OrmSingleRelationshipMapping2_0) oldMapping).getDerivedId().getValue()); - } - - @Override - public void update() { - super.update(); - this.derivedId.update(); - } - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - this.derivedId.validate(messages, reporter); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/AbstractOrmOneToOneMapping2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/AbstractOrmOneToOneMapping2_0.java deleted file mode 100644 index e6135c253d..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/AbstractOrmOneToOneMapping2_0.java +++ /dev/null @@ -1,67 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 Oracle. - * All rights reserved. This program and the accompanying materials are - * made available under the terms of the Eclipse Public License v1.0 which - * accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Oracle - initial API and implementation - *******************************************************************************/ -package org.eclipse.jpt.core.internal.jpa2.context.orm; - -import java.util.List; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmSingleRelationshipMapping; -import org.eclipse.jpt.core.internal.context.orm.AbstractOrmOneToOneMapping; -import org.eclipse.jpt.core.jpa2.context.orm.OrmDerivedId2_0; -import org.eclipse.jpt.core.jpa2.context.orm.OrmOneToOneMapping2_0; -import org.eclipse.jpt.core.jpa2.context.orm.OrmSingleRelationshipMapping2_0; -import org.eclipse.jpt.core.jpa2.resource.orm.XmlOneToOne; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - -public abstract class AbstractOrmOneToOneMapping2_0<T extends XmlOneToOne> - extends AbstractOrmOneToOneMapping<T> - implements OrmOneToOneMapping2_0 -{ - protected OrmDerivedId2_0 derivedId; - - - protected AbstractOrmOneToOneMapping2_0(OrmPersistentAttribute parent, T resourceMapping) { - super(parent, resourceMapping); - this.derivedId = buildDerivedId(); - } - - - protected OrmDerivedId2_0 buildDerivedId() { - return new GenericOrmDerivedId2_0(this, this.resourceAttributeMapping); - } - - public OrmDerivedId2_0 getDerivedId() { - return this.derivedId; - } - - @Override - public boolean isIdMapping() { - return this.derivedId.getValue(); - } - - @Override - public void initializeFromOrmSingleRelationshipMapping(OrmSingleRelationshipMapping oldMapping) { - super.initializeFromOrmSingleRelationshipMapping(oldMapping); - getDerivedId().setValue(((OrmSingleRelationshipMapping2_0) oldMapping).getDerivedId().getValue()); - } - - @Override - public void update() { - super.update(); - this.derivedId.update(); - } - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - this.derivedId.validate(messages, reporter); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmManyToOneMapping2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmManyToOneMapping2_0.java deleted file mode 100644 index 038bbcfc84..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmManyToOneMapping2_0.java +++ /dev/null @@ -1,29 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 Oracle. - * All rights reserved. This program and the accompanying materials are - * made available under the terms of the Eclipse Public License v1.0 which - * accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Oracle - initial API and implementation - *******************************************************************************/ -package org.eclipse.jpt.core.internal.jpa2.context.orm; - -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.jpa2.JpaFactory2_0; -import org.eclipse.jpt.core.jpa2.resource.orm.XmlManyToOne; - -public class GenericOrmManyToOneMapping2_0 - extends AbstractOrmManyToOneMapping2_0<XmlManyToOne> -{ - public GenericOrmManyToOneMapping2_0(OrmPersistentAttribute parent, XmlManyToOne resourceMapping) { - super(parent, resourceMapping); - } - - - @Override - protected JpaFactory2_0 getJpaFactory() { - return (JpaFactory2_0) super.getJpaFactory(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmOneToOneMapping2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmOneToOneMapping2_0.java deleted file mode 100644 index 9447533d81..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmOneToOneMapping2_0.java +++ /dev/null @@ -1,29 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 Oracle. - * All rights reserved. This program and the accompanying materials are - * made available under the terms of the Eclipse Public License v1.0 which - * accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Oracle - initial API and implementation - *******************************************************************************/ -package org.eclipse.jpt.core.internal.jpa2.context.orm; - -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.jpa2.JpaFactory2_0; -import org.eclipse.jpt.core.jpa2.resource.orm.XmlOneToOne; - -public class GenericOrmOneToOneMapping2_0 - extends AbstractOrmOneToOneMapping2_0<XmlOneToOne> -{ - public GenericOrmOneToOneMapping2_0(OrmPersistentAttribute parent, XmlOneToOne resourceMapping) { - super(parent, resourceMapping); - } - - - @Override - protected JpaFactory2_0 getJpaFactory() { - return (JpaFactory2_0) super.getJpaFactory(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmXml2_0ContextNodeFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmXml2_0ContextNodeFactory.java index 7b01761b34..e82bd6cac4 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmXml2_0ContextNodeFactory.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/GenericOrmXml2_0ContextNodeFactory.java @@ -26,8 +26,6 @@ import org.eclipse.jpt.core.context.orm.OrmAssociationOverride; import org.eclipse.jpt.core.context.orm.OrmAssociationOverrideRelationshipReference; import org.eclipse.jpt.core.context.orm.OrmEmbeddable; import org.eclipse.jpt.core.context.orm.OrmEmbeddedMapping; -import org.eclipse.jpt.core.context.orm.OrmManyToOneMapping; -import org.eclipse.jpt.core.context.orm.OrmOneToOneMapping; import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; import org.eclipse.jpt.core.context.orm.OrmPersistentType; import org.eclipse.jpt.core.context.orm.OrmSequenceGenerator; @@ -35,8 +33,11 @@ import org.eclipse.jpt.core.context.orm.OrmTypeMapping; import org.eclipse.jpt.core.internal.AbstractOrmXmlContextNodeFactory; import org.eclipse.jpt.core.jpa2.context.java.JavaManyToOneMapping2_0; import org.eclipse.jpt.core.jpa2.context.java.JavaOneToOneMapping2_0; +import org.eclipse.jpt.core.jpa2.context.orm.OrmDerivedId2_0; +import org.eclipse.jpt.core.jpa2.context.orm.OrmSingleRelationshipMapping2_0; import org.eclipse.jpt.core.jpa2.resource.orm.XmlAssociationOverride; import org.eclipse.jpt.core.jpa2.resource.orm.XmlBasic; +import org.eclipse.jpt.core.jpa2.resource.orm.XmlDerivedId; import org.eclipse.jpt.core.jpa2.resource.orm.XmlEmbeddable; import org.eclipse.jpt.core.jpa2.resource.orm.XmlEmbedded; import org.eclipse.jpt.core.jpa2.resource.orm.XmlEmbeddedId; @@ -72,20 +73,15 @@ public class GenericOrmXml2_0ContextNodeFactory extends AbstractOrmXmlContextNod public OrmSequenceGenerator buildOrmSequenceGenerator(XmlContextNode parent, org.eclipse.jpt.core.resource.orm.XmlSequenceGenerator resourceSequenceGenerator) { return new GenericOrmSequenceGenerator2_0(parent, (XmlSequenceGenerator) resourceSequenceGenerator); } - - @Override - public OrmManyToOneMapping buildOrmManyToOneMapping(OrmPersistentAttribute parent, org.eclipse.jpt.core.resource.orm.XmlManyToOne resourceMapping) { - return new GenericOrmManyToOneMapping2_0(parent, (XmlManyToOne) resourceMapping); - } @Override - public OrmOneToOneMapping buildOrmOneToOneMapping(OrmPersistentAttribute parent, org.eclipse.jpt.core.resource.orm.XmlOneToOne resourceMapping) { - return new GenericOrmOneToOneMapping2_0(parent, (XmlOneToOne) resourceMapping); + public OrmEmbeddedMapping buildOrmEmbeddedMapping(OrmPersistentAttribute parent, org.eclipse.jpt.core.resource.orm.XmlEmbedded resourceMapping) { + return new GenericOrmEmbeddedMapping2_0(parent, (XmlEmbedded) resourceMapping); } @Override - public OrmEmbeddedMapping buildOrmEmbeddedMapping(OrmPersistentAttribute parent, org.eclipse.jpt.core.resource.orm.XmlEmbedded resourceMapping) { - return new GenericOrmEmbeddedMapping2_0(parent, (XmlEmbedded) resourceMapping); + public OrmDerivedId2_0 buildOrmDerivedId(OrmSingleRelationshipMapping2_0 parent, XmlDerivedId resource) { + return new GenericOrmDerivedId2_0(parent, resource); } // ********** ORM Virtual Resource Model ********** diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/NullOrmDerivedId2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/NullOrmDerivedId2_0.java new file mode 100644 index 0000000000..e8e05bee85 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa2/context/orm/NullOrmDerivedId2_0.java @@ -0,0 +1,42 @@ +/******************************************************************************* + * Copyright (c) 2009 Oracle. + * All rights reserved. This program and the accompanying materials are + * made available under the terms of the Eclipse Public License v1.0 which + * accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Oracle - initial API and implementation + *******************************************************************************/ +package org.eclipse.jpt.core.internal.jpa2.context.orm; + +import org.eclipse.jpt.core.internal.context.orm.AbstractOrmXmlContextNode; +import org.eclipse.jpt.core.jpa2.context.orm.OrmDerivedId2_0; +import org.eclipse.jpt.core.jpa2.context.orm.OrmSingleRelationshipMapping2_0; +import org.eclipse.jpt.core.utility.TextRange; + +public class NullOrmDerivedId2_0 + extends AbstractOrmXmlContextNode + implements OrmDerivedId2_0 +{ + + public NullOrmDerivedId2_0(OrmSingleRelationshipMapping2_0 parent) { + super(parent); + } + + public boolean getValue() { + return false; + } + + public void setValue(boolean newValue) { + //no-op - setValue is called when morphing a mapping, we can't throw an UnsupportedOperationException + } + + public void update() { + //no-op + } + + public TextRange getValidationTextRange() { + return null; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/JpaFactory2_0.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/JpaFactory2_0.java index 2a092ba96d..bb578cc888 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/JpaFactory2_0.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/JpaFactory2_0.java @@ -11,6 +11,8 @@ package org.eclipse.jpt.core.jpa2; import org.eclipse.jpt.core.JpaFactory; import org.eclipse.jpt.core.context.PersistentType; +import org.eclipse.jpt.core.jpa2.context.java.JavaDerivedId2_0; +import org.eclipse.jpt.core.jpa2.context.java.JavaSingleRelationshipMapping2_0; /** * JPA 2.0 factory @@ -33,5 +35,10 @@ public interface JpaFactory2_0 PersistentTypeStaticMetamodelSynchronizer buildPersistentTypeStaticMetamodelSynchronizer(StaticMetamodelSynchronizer staticMetamodelSynchronizer, PersistentType persistentType); + + // ********** Java Context Model ********** + + JavaDerivedId2_0 buildJavaDerivedId(JavaSingleRelationshipMapping2_0 parent); + } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/context/orm/OrmXml2_0ContextNodeFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/context/orm/OrmXml2_0ContextNodeFactory.java new file mode 100644 index 0000000000..99e243fa6f --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/jpa2/context/orm/OrmXml2_0ContextNodeFactory.java @@ -0,0 +1,25 @@ +/******************************************************************************* + * Copyright (c) 2009 Oracle. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0, which accompanies this distribution + * and is available at http://www.eclipse.org/legal/epl-v10.html. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.core.jpa2.context.orm; + +import org.eclipse.jpt.core.context.orm.OrmXmlContextNodeFactory; +import org.eclipse.jpt.core.jpa2.context.orm.OrmDerivedId2_0; +import org.eclipse.jpt.core.jpa2.context.orm.OrmSingleRelationshipMapping2_0; +import org.eclipse.jpt.core.jpa2.resource.orm.XmlDerivedId; + +public interface OrmXml2_0ContextNodeFactory extends OrmXmlContextNodeFactory +{ + + // ********** ORM Context Model ********** + + OrmDerivedId2_0 buildOrmDerivedId(OrmSingleRelationshipMapping2_0 parent, XmlDerivedId resource); + + +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/EclipseLinkJpaPlatformFactory.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/EclipseLinkJpaPlatformFactory.java index e6c73132b1..c9c2750270 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/EclipseLinkJpaPlatformFactory.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/EclipseLinkJpaPlatformFactory.java @@ -35,12 +35,25 @@ public class EclipseLinkJpaPlatformFactory public JpaPlatform buildJpaPlatform(String id) { return new GenericJpaPlatform( id, + buildJpaVersion(), new EclipseLinkJpaFactory(), buildJpaAnnotationProvider(), EclipseLinkJpaPlatformProvider.instance(), buildJpaPlatformVariation()); } + private JpaPlatform.Version buildJpaVersion() { + return new JpaPlatform.Version() { + public boolean is2_0Compatible() { + return false; + } + + public int getJpaVersion() { + return 1; + } + }; + } + protected JpaAnnotationProvider buildJpaAnnotationProvider() { return new GenericJpaAnnotationProvider( GenericJpaAnnotationDefinitionProvider.instance(), diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkBasicCollectionMapping.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkBasicCollectionMapping.java index e06cae072a..a55a364f44 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkBasicCollectionMapping.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkBasicCollectionMapping.java @@ -9,13 +9,11 @@ ******************************************************************************/ package org.eclipse.jpt.eclipselink.core.internal.context.java; -import java.util.Iterator; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.core.internal.context.java.AbstractJavaAttributeMapping; import org.eclipse.jpt.eclipselink.core.EclipseLinkMappingKeys; import org.eclipse.jpt.eclipselink.core.context.EclipseLinkBasicCollectionMapping; import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLinkBasicCollectionAnnotation; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; public class JavaEclipseLinkBasicCollectionMapping extends AbstractJavaAttributeMapping<EclipseLinkBasicCollectionAnnotation> @@ -33,8 +31,4 @@ public class JavaEclipseLinkBasicCollectionMapping public String getAnnotationName() { return EclipseLinkBasicCollectionAnnotation.ANNOTATION_NAME; } - - public Iterator<String> supportingAnnotationNames() { - return EmptyIterator.instance(); - } } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkBasicMapMapping.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkBasicMapMapping.java index e9b61559bc..f47d1728eb 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkBasicMapMapping.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkBasicMapMapping.java @@ -9,13 +9,11 @@ ******************************************************************************/ package org.eclipse.jpt.eclipselink.core.internal.context.java; -import java.util.Iterator; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.core.internal.context.java.AbstractJavaAttributeMapping; import org.eclipse.jpt.eclipselink.core.EclipseLinkMappingKeys; import org.eclipse.jpt.eclipselink.core.context.EclipseLinkBasicMapMapping; import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLinkBasicMapAnnotation; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; public class JavaEclipseLinkBasicMapMapping extends AbstractJavaAttributeMapping<EclipseLinkBasicMapAnnotation> @@ -33,8 +31,4 @@ public class JavaEclipseLinkBasicMapMapping public String getAnnotationName() { return EclipseLinkBasicMapAnnotation.ANNOTATION_NAME; } - - public Iterator<String> supportingAnnotationNames() { - return EmptyIterator.instance(); - } } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkBasicMapping.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkBasicMapping.java index 9ecef2b75b..1529dee16c 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkBasicMapping.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkBasicMapping.java @@ -21,8 +21,7 @@ import org.eclipse.jpt.eclipselink.core.context.EclipseLinkMutable; import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLinkConvertAnnotation; import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLink; import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; -import org.eclipse.jpt.utility.internal.iterators.CompositeIterator; +import org.eclipse.jpt.utility.internal.ArrayTools; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -41,13 +40,12 @@ public class JavaEclipseLinkBasicMapping //************** JavaAttributeMapping implementation *************** @Override - public Iterator<String> supportingAnnotationNames() { - return new CompositeIterator<String>( - super.supportingAnnotationNames(), - new ArrayIterator<String>( - EclipseLink.MUTABLE, - EclipseLink.CONVERT)); - } + protected String[] buildSupportingAnnotationNames() { + return ArrayTools.addAll( + super.buildSupportingAnnotationNames(), + EclipseLink.MUTABLE, + EclipseLink.CONVERT); + } //************** AbstractJavaBasicMapping implementation *************** diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkIdMapping.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkIdMapping.java index e3f1670c7e..e6780dda60 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkIdMapping.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkIdMapping.java @@ -21,8 +21,7 @@ import org.eclipse.jpt.eclipselink.core.context.EclipseLinkMutable; import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLinkConvertAnnotation; import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLink; import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; -import org.eclipse.jpt.utility.internal.iterators.CompositeIterator; +import org.eclipse.jpt.utility.internal.ArrayTools; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -40,13 +39,12 @@ public class JavaEclipseLinkIdMapping //************** JavaAttributeMapping implementation *************** @Override - public Iterator<String> supportingAnnotationNames() { - return new CompositeIterator<String>( - super.supportingAnnotationNames(), - new ArrayIterator<String>( - EclipseLink.MUTABLE, - EclipseLink.CONVERT)); - } + protected String[] buildSupportingAnnotationNames() { + return ArrayTools.addAll( + super.buildSupportingAnnotationNames(), + EclipseLink.MUTABLE, + EclipseLink.CONVERT); + } //************** AbstractJavaIdMapping overrides *************** diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkManyToManyMapping.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkManyToManyMapping.java index 036f433946..576b85d2d8 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkManyToManyMapping.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkManyToManyMapping.java @@ -17,6 +17,7 @@ import org.eclipse.jpt.core.internal.context.java.AbstractJavaManyToManyMapping; import org.eclipse.jpt.eclipselink.core.context.EclipseLinkRelationshipMapping; import org.eclipse.jpt.eclipselink.core.context.EclipseLinkJoinFetch; import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLink; +import org.eclipse.jpt.utility.internal.ArrayTools; import org.eclipse.jpt.utility.internal.iterators.CompositeIterator; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -34,11 +35,11 @@ public class JavaEclipseLinkManyToManyMapping } @Override - public Iterator<String> supportingAnnotationNames() { - return new CompositeIterator<String>( - super.supportingAnnotationNames(), + protected String[] buildSupportingAnnotationNames() { + return ArrayTools.addAll( + super.buildSupportingAnnotationNames(), EclipseLink.JOIN_FETCH); - } + } public EclipseLinkJoinFetch getJoinFetch() { return this.joinFetch; diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkManyToOneMapping.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkManyToOneMapping.java index 8a496217b1..6ed808fbaf 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkManyToOneMapping.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkManyToOneMapping.java @@ -9,7 +9,6 @@ ******************************************************************************/ package org.eclipse.jpt.eclipselink.core.internal.context.java; -import java.util.Iterator; import java.util.List; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; @@ -17,7 +16,7 @@ import org.eclipse.jpt.core.internal.context.java.AbstractJavaManyToOneMapping; import org.eclipse.jpt.eclipselink.core.context.EclipseLinkRelationshipMapping; import org.eclipse.jpt.eclipselink.core.context.EclipseLinkJoinFetch; import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLink; -import org.eclipse.jpt.utility.internal.iterators.CompositeIterator; +import org.eclipse.jpt.utility.internal.ArrayTools; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -34,11 +33,10 @@ public class JavaEclipseLinkManyToOneMapping } @Override - public Iterator<String> supportingAnnotationNames() { - return new CompositeIterator<String>( - super.supportingAnnotationNames(), - EclipseLink.JOIN_FETCH - ); + protected String[] buildSupportingAnnotationNames() { + return ArrayTools.addAll( + super.buildSupportingAnnotationNames(), + EclipseLink.JOIN_FETCH); } public EclipseLinkJoinFetch getJoinFetch() { diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkOneToManyMapping.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkOneToManyMapping.java index 01575e0717..cd349e9870 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkOneToManyMapping.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkOneToManyMapping.java @@ -9,7 +9,6 @@ ******************************************************************************/ package org.eclipse.jpt.eclipselink.core.internal.context.java; -import java.util.Iterator; import java.util.List; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; @@ -20,8 +19,7 @@ import org.eclipse.jpt.eclipselink.core.context.EclipseLinkJoinFetch; import org.eclipse.jpt.eclipselink.core.context.EclipseLinkPrivateOwned; import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLink; import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLinkPrivateOwnedAnnotation; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; -import org.eclipse.jpt.utility.internal.iterators.CompositeIterator; +import org.eclipse.jpt.utility.internal.ArrayTools; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -46,13 +44,12 @@ public class JavaEclipseLinkOneToManyMapping } @Override - public Iterator<String> supportingAnnotationNames() { - return new CompositeIterator<String>( - super.supportingAnnotationNames(), - new ArrayIterator<String>( - EclipseLink.JOIN_FETCH, - EclipseLink.PRIVATE_OWNED)); - } + protected String[] buildSupportingAnnotationNames() { + return ArrayTools.addAll( + super.buildSupportingAnnotationNames(), + EclipseLink.JOIN_FETCH, + EclipseLink.PRIVATE_OWNED); + } @Override public JavaEclipseLinkOneToManyRelationshipReference getRelationshipReference() { diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkOneToOneMapping.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkOneToOneMapping.java index dbe407929b..94a651a1c6 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkOneToOneMapping.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkOneToOneMapping.java @@ -9,7 +9,6 @@ ******************************************************************************/ package org.eclipse.jpt.eclipselink.core.internal.context.java; -import java.util.Iterator; import java.util.List; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; @@ -18,8 +17,7 @@ import org.eclipse.jpt.eclipselink.core.context.EclipseLinkOneToOneMapping; import org.eclipse.jpt.eclipselink.core.context.EclipseLinkJoinFetch; import org.eclipse.jpt.eclipselink.core.context.EclipseLinkPrivateOwned; import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLink; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; -import org.eclipse.jpt.utility.internal.iterators.CompositeIterator; +import org.eclipse.jpt.utility.internal.ArrayTools; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -37,14 +35,13 @@ public class JavaEclipseLinkOneToOneMapping this.joinFetch = new JavaEclipseLinkJoinFetch(this); this.privateOwned = new JavaEclipseLinkPrivateOwned(this); } - + @Override - public Iterator<String> supportingAnnotationNames() { - return new CompositeIterator<String>( - super.supportingAnnotationNames(), - new ArrayIterator<String>( - EclipseLink.JOIN_FETCH, - EclipseLink.PRIVATE_OWNED)); + protected String[] buildSupportingAnnotationNames() { + return ArrayTools.addAll( + super.buildSupportingAnnotationNames(), + EclipseLink.JOIN_FETCH, + EclipseLink.PRIVATE_OWNED); } public EclipseLinkJoinFetch getJoinFetch() { diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkTransformationMapping.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkTransformationMapping.java index 44eb6494a5..b154fb38fa 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkTransformationMapping.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkTransformationMapping.java @@ -9,13 +9,11 @@ ******************************************************************************/ package org.eclipse.jpt.eclipselink.core.internal.context.java; -import java.util.Iterator; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.core.internal.context.java.AbstractJavaAttributeMapping; import org.eclipse.jpt.eclipselink.core.EclipseLinkMappingKeys; import org.eclipse.jpt.eclipselink.core.context.EclipseLinkTransformationMapping; import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLinkTransformationAnnotation; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; public class JavaEclipseLinkTransformationMapping extends AbstractJavaAttributeMapping<EclipseLinkTransformationAnnotation> @@ -33,8 +31,4 @@ public class JavaEclipseLinkTransformationMapping public String getAnnotationName() { return EclipseLinkTransformationAnnotation.ANNOTATION_NAME; } - - public Iterator<String> supportingAnnotationNames() { - return EmptyIterator.instance(); - } } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkVariableOneToOneMapping.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkVariableOneToOneMapping.java index 56299294f7..c270c6a4bd 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkVariableOneToOneMapping.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkVariableOneToOneMapping.java @@ -9,13 +9,11 @@ ******************************************************************************/ package org.eclipse.jpt.eclipselink.core.internal.context.java; -import java.util.Iterator; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.core.internal.context.java.AbstractJavaAttributeMapping; import org.eclipse.jpt.eclipselink.core.EclipseLinkMappingKeys; import org.eclipse.jpt.eclipselink.core.context.EclipseLinkVariableOneToOneMapping; import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLinkVariableOneToOneAnnotation; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; public class JavaEclipseLinkVariableOneToOneMapping extends AbstractJavaAttributeMapping<EclipseLinkVariableOneToOneAnnotation> @@ -33,8 +31,4 @@ public class JavaEclipseLinkVariableOneToOneMapping public String getAnnotationName() { return EclipseLinkVariableOneToOneAnnotation.ANNOTATION_NAME; } - - public Iterator<String> supportingAnnotationNames() { - return EmptyIterator.instance(); - } } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkVersionMapping.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkVersionMapping.java index 6b6cf31bca..03be7b26dd 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkVersionMapping.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/JavaEclipseLinkVersionMapping.java @@ -21,8 +21,7 @@ import org.eclipse.jpt.eclipselink.core.context.EclipseLinkMutable; import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLinkConvertAnnotation; import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLink; import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; -import org.eclipse.jpt.utility.internal.iterators.CompositeIterator; +import org.eclipse.jpt.utility.internal.ArrayTools; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -40,13 +39,12 @@ public class JavaEclipseLinkVersionMapping //************** JavaAttributeMapping implementation *************** @Override - public Iterator<String> supportingAnnotationNames() { - return new CompositeIterator<String>( - super.supportingAnnotationNames(), - new ArrayIterator<String>( - EclipseLink.MUTABLE, - EclipseLink.CONVERT)); - } + protected String[] buildSupportingAnnotationNames() { + return ArrayTools.addAll( + super.buildSupportingAnnotationNames(), + EclipseLink.MUTABLE, + EclipseLink.CONVERT); + } //************** EclipseLinkVersionMapping overrides *************** diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_1/EclipseLink1_1JpaPlatformFactory.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_1/EclipseLink1_1JpaPlatformFactory.java index a802be6264..f297bd0be2 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_1/EclipseLink1_1JpaPlatformFactory.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v1_1/EclipseLink1_1JpaPlatformFactory.java @@ -37,6 +37,7 @@ public class EclipseLink1_1JpaPlatformFactory public JpaPlatform buildJpaPlatform(String id) { return new GenericJpaPlatform( id, + buildJpaVersion(), new EclipseLinkJpaFactory(), buildJpaAnnotationProvider(), EclipseLink1_1JpaPlatformProvider.instance(), @@ -59,4 +60,16 @@ public class EclipseLink1_1JpaPlatformFactory } }; } + + private JpaPlatform.Version buildJpaVersion() { + return new JpaPlatform.Version() { + public boolean is2_0Compatible() { + return false; + } + + public int getJpaVersion() { + return 1; + } + }; + } } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaFactory.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaFactory.java index d4fd2e19f4..161564a64a 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaFactory.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaFactory.java @@ -11,6 +11,9 @@ package org.eclipse.jpt.eclipselink.core.internal.v2_0; import org.eclipse.jpt.core.context.persistence.Persistence; import org.eclipse.jpt.core.context.persistence.PersistenceUnit; +import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaDerivedId2_0; +import org.eclipse.jpt.core.jpa2.context.java.JavaDerivedId2_0; +import org.eclipse.jpt.core.jpa2.context.java.JavaSingleRelationshipMapping2_0; import org.eclipse.jpt.core.resource.persistence.XmlPersistenceUnit; import org.eclipse.jpt.eclipselink.core.internal.EclipseLinkJpaFactory; import org.eclipse.jpt.eclipselink.core.internal.v2_0.context.persistence.EclipseLinkPersistenceUnit2_0; @@ -32,5 +35,13 @@ public class EclipseLink2_0JpaFactory public PersistenceUnit buildPersistenceUnit(Persistence parent, XmlPersistenceUnit xmlPersistenceUnit) { return new EclipseLinkPersistenceUnit2_0(parent, xmlPersistenceUnit); } + + + // ********** Java Context Model ********** + + @Override + public JavaDerivedId2_0 buildJavaDerivedId(JavaSingleRelationshipMapping2_0 parent) { + return new GenericJavaDerivedId2_0(parent); + } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaPlatformFactory.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaPlatformFactory.java index 11e56523af..6a4f6abba1 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaPlatformFactory.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/v2_0/EclipseLink2_0JpaPlatformFactory.java @@ -35,12 +35,25 @@ public class EclipseLink2_0JpaPlatformFactory public JpaPlatform buildJpaPlatform(String id) { return new GenericJpaPlatform( id, + buildJpaVersion(), new EclipseLink2_0JpaFactory(), this.buildJpaAnnotationProvider(), EclipseLink2_0JpaPlatformProvider.instance(), this.buildJpaVariation()); } - + + private JpaPlatform.Version buildJpaVersion() { + return new JpaPlatform.Version() { + public boolean is2_0Compatible() { + return true; + } + + public int getJpaVersion() { + return 2; + } + }; + } + protected JpaAnnotationProvider buildJpaAnnotationProvider() { return new GenericJpaAnnotationProvider( Generic2_0JpaAnnotationDefinitionProvider.instance(), |