diff options
author | pfullbright | 2010-01-20 23:52:10 +0000 |
---|---|---|
committer | pfullbright | 2010-01-20 23:52:10 +0000 |
commit | e4877a22c9139e56788c27b705d60bda5051e7ab (patch) | |
tree | f0d55bee8ca51ee857f519f2989d0c370cc5c156 | |
parent | a580e6b26e7016cb0bc9441c0015b2b7123b0003 (diff) | |
download | webtools.dali-e4877a22c9139e56788c27b705d60bda5051e7ab.tar.gz webtools.dali-e4877a22c9139e56788c27b705d60bda5051e7ab.tar.xz webtools.dali-e4877a22c9139e56788c27b705d60bda5051e7ab.zip |
updated id class model tests
4 files changed, 257 insertions, 105 deletions
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/java/JavaEntityTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/java/JavaEntityTests.java index 3b50ee56b1..54ce0b0c64 100644 --- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/java/JavaEntityTests.java +++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/java/JavaEntityTests.java @@ -351,6 +351,17 @@ public class JavaEntityTests extends ContextModelTestCase } }); } + + private void createTestIdClass() throws Exception { + SourceWriter sourceWriter = new SourceWriter() { + public void appendSourceTo(StringBuilder sb) { + sb.append(CR); + sb.append("public class ").append("TestTypeId").append(" "); + sb.append("{}").append(CR); + } + }; + this.javaProject.createCompilationUnit(PACKAGE_NAME, "TestTypeId.java", sourceWriter); + } public void testMorphToMappedSuperclass() throws Exception { createTestEntity(); @@ -368,7 +379,7 @@ public class JavaEntityTests extends ContextModelTestCase entity.getDiscriminatorColumn().setSpecifiedName("BAR"); entity.getGeneratorContainer().addTableGenerator(); entity.getGeneratorContainer().addSequenceGenerator(); - entity.setIdClass("myIdClass"); + entity.getIdClassReference().setIdClassName("myIdClass"); entity.getQueryContainer().addNamedNativeQuery(0); entity.getQueryContainer().addNamedQuery(0); @@ -407,7 +418,7 @@ public class JavaEntityTests extends ContextModelTestCase entity.getDiscriminatorColumn().setSpecifiedName("BAR"); entity.getGeneratorContainer().addTableGenerator(); entity.getGeneratorContainer().addSequenceGenerator(); - entity.setIdClass("myIdClass"); + entity.getIdClassReference().setIdClassName("myIdClass"); entity.getQueryContainer().addNamedNativeQuery(0); entity.getQueryContainer().addNamedQuery(0); @@ -446,7 +457,7 @@ public class JavaEntityTests extends ContextModelTestCase entity.getDiscriminatorColumn().setSpecifiedName("BAR"); entity.getGeneratorContainer().addTableGenerator(); entity.getGeneratorContainer().addSequenceGenerator(); - entity.setIdClass("myIdClass"); + entity.getIdClassReference().setIdClassName("myIdClass"); entity.getQueryContainer().addNamedNativeQuery(0); entity.getQueryContainer().addNamedQuery(0); @@ -3189,55 +3200,80 @@ public class JavaEntityTests extends ContextModelTestCase public void testUpdateIdClass() throws Exception { createTestEntity(); + createTestIdClass(); addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); - + JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); - - assertNull(getJavaEntity().getIdClass()); + + assertNull(getJavaEntity().getIdClassReference().getIdClassName()); + assertNull(getJavaEntity().getIdClassReference().getIdClass()); assertNull(typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)); IdClassAnnotation idClass = (IdClassAnnotation) typeResource.addAnnotation(IdClassAnnotation.ANNOTATION_NAME); getJpaProject().synchronizeContextModel(); - assertNull(getJavaEntity().getIdClass()); + assertNull(getJavaEntity().getIdClassReference().getIdClassName()); assertNotNull(typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)); - idClass.setValue("model.Foo"); + // test setting id class name to nonexistent class. test class name is set, but class is null + String nonExistentIdClassName = PACKAGE_NAME + ".Foo"; + idClass.setValue(nonExistentIdClassName); + getJpaProject().synchronizeContextModel(); + assertEquals(nonExistentIdClassName, getJavaEntity().getIdClassReference().getIdClassName()); + assertEquals(nonExistentIdClassName, ((IdClassAnnotation) typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)).getValue()); + assertNull(getJavaEntity().getIdClassReference().getIdClass()); + + // test setting id class name to existent class. test class name is set and class is not null + String existentIdClassName = PACKAGE_NAME + ".TestTypeId"; + idClass.setValue(existentIdClassName); getJpaProject().synchronizeContextModel(); - assertEquals("model.Foo", getJavaEntity().getIdClass()); - assertEquals("model.Foo", ((IdClassAnnotation) typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)).getValue()); + assertEquals(existentIdClassName, getJavaEntity().getIdClassReference().getIdClassName()); + assertEquals(existentIdClassName, ((IdClassAnnotation) typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)).getValue()); + assertNotNull(getJavaEntity().getIdClassReference().getIdClass()); //test setting @IdClass value to null, IdClass annotation is removed idClass.setValue(null); getJpaProject().synchronizeContextModel(); - assertNull(getJavaEntity().getIdClass()); + assertNull(getJavaEntity().getIdClassReference().getIdClassName()); assertNull(typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)); + assertNull(getJavaEntity().getIdClassReference().getIdClass()); //reset @IdClass value and then remove @IdClass idClass = (IdClassAnnotation) typeResource.addAnnotation(IdClassAnnotation.ANNOTATION_NAME); - idClass.setValue("model.Foo"); + idClass.setValue(existentIdClassName); typeResource.removeAnnotation(IdClassAnnotation.ANNOTATION_NAME); getJpaProject().synchronizeContextModel(); - - assertNull(getJavaEntity().getIdClass()); - assertNull(typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)); + assertNull(getJavaEntity().getIdClassReference().getIdClassName()); + assertNull(typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)); + assertNull(getJavaEntity().getIdClassReference().getIdClass()); } public void testModifyIdClass() throws Exception { createTestEntity(); + createTestIdClass(); addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); - + JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); - - assertNull(getJavaEntity().getIdClass()); - assertNull(typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)); - - getJavaEntity().setIdClass("model.Foo"); - assertEquals("model.Foo", ((IdClassAnnotation) typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)).getValue()); - assertEquals("model.Foo", getJavaEntity().getIdClass()); - getJavaEntity().setIdClass(null); - assertNull(getJavaEntity().getIdClass()); + assertNull(getJavaEntity().getIdClassReference().getIdClassName()); + assertNull(typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)); + assertNull(getJavaEntity().getIdClassReference().getIdClass()); + + String nonExistentIdClassName = PACKAGE_NAME + ".Foo"; + getJavaEntity().getIdClassReference().setIdClassName(nonExistentIdClassName); + assertEquals(nonExistentIdClassName, ((IdClassAnnotation) typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)).getValue()); + assertEquals(nonExistentIdClassName, getJavaEntity().getIdClassReference().getIdClassName()); + assertNull(getJavaEntity().getIdClassReference().getIdClass()); + + String existentIdClassName = PACKAGE_NAME + ".TestTypeId"; + getJavaEntity().getIdClassReference().setIdClassName(existentIdClassName); + assertEquals(existentIdClassName, ((IdClassAnnotation) typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)).getValue()); + assertEquals(existentIdClassName, getJavaEntity().getIdClassReference().getIdClassName()); + assertNotNull(getJavaEntity().getIdClassReference().getIdClass()); + + getJavaEntity().getIdClassReference().setIdClassName(null); + assertNull(getJavaEntity().getIdClassReference().getIdClassName()); assertNull(typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)); + assertNull(getJavaEntity().getIdClassReference().getIdClass()); } public void testGetPrimaryKeyColumnNameWithAttributeOverride() throws Exception { diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/java/JavaMappedSuperclassTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/java/JavaMappedSuperclassTests.java index a595c5b2f7..3b1e543035 100644 --- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/java/JavaMappedSuperclassTests.java +++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/java/JavaMappedSuperclassTests.java @@ -14,6 +14,7 @@ import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jpt.core.MappingKeys; import org.eclipse.jpt.core.context.Embeddable; import org.eclipse.jpt.core.context.Entity; +import org.eclipse.jpt.core.context.IdClassReference; import org.eclipse.jpt.core.context.MappedSuperclass; import org.eclipse.jpt.core.internal.context.java.JavaNullTypeMapping; import org.eclipse.jpt.core.resource.java.IdClassAnnotation; @@ -21,10 +22,15 @@ import org.eclipse.jpt.core.resource.java.JPA; import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType; import org.eclipse.jpt.core.resource.java.MappedSuperclassAnnotation; import org.eclipse.jpt.core.tests.internal.context.ContextModelTestCase; +import org.eclipse.jpt.core.tests.internal.projects.TestJavaProject.SourceWriter; import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; public class JavaMappedSuperclassTests extends ContextModelTestCase { + public JavaMappedSuperclassTests(String name) { + super(name); + } + private ICompilationUnit createTestMappedSuperclass() throws Exception { return this.createTestType(new DefaultAnnotationWriter() { @@ -38,10 +44,16 @@ public class JavaMappedSuperclassTests extends ContextModelTestCase } }); } - - - public JavaMappedSuperclassTests(String name) { - super(name); + + private void createTestIdClass() throws Exception { + SourceWriter sourceWriter = new SourceWriter() { + public void appendSourceTo(StringBuilder sb) { + sb.append(CR); + sb.append("public class ").append("TestTypeId").append(" "); + sb.append("{}").append(CR); + } + }; + this.javaProject.createCompilationUnit(PACKAGE_NAME, "TestTypeId.java", sourceWriter); } public void testMorphToEntity() throws Exception { @@ -49,7 +61,7 @@ public class JavaMappedSuperclassTests extends ContextModelTestCase addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); MappedSuperclass mappedSuperclass = (MappedSuperclass) getJavaPersistentType().getMapping(); - mappedSuperclass.setIdClass("myIdClass"); + mappedSuperclass.getIdClassReference().setIdClassName("myIdClass"); getJavaPersistentType().setMappingKey(MappingKeys.ENTITY_TYPE_MAPPING_KEY); assertTrue(getJavaPersistentType().getMapping() instanceof Entity); @@ -64,7 +76,7 @@ public class JavaMappedSuperclassTests extends ContextModelTestCase addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); MappedSuperclass mappedSuperclass = (MappedSuperclass) getJavaPersistentType().getMapping(); - mappedSuperclass.setIdClass("myIdClass"); + mappedSuperclass.getIdClassReference().setIdClassName("myIdClass"); getJavaPersistentType().setMappingKey(MappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY); assertTrue(getJavaPersistentType().getMapping() instanceof Embeddable); @@ -79,7 +91,7 @@ public class JavaMappedSuperclassTests extends ContextModelTestCase addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); MappedSuperclass mappedSuperclass = (MappedSuperclass) getJavaPersistentType().getMapping(); - mappedSuperclass.setIdClass("myIdClass"); + mappedSuperclass.getIdClassReference().setIdClassName("myIdClass"); getJavaPersistentType().setMappingKey(MappingKeys.NULL_TYPE_MAPPING_KEY); assertTrue(getJavaPersistentType().getMapping() instanceof JavaNullTypeMapping); @@ -88,7 +100,6 @@ public class JavaMappedSuperclassTests extends ContextModelTestCase assertNull(typeResource.getAnnotation(MappedSuperclassAnnotation.ANNOTATION_NAME)); assertNull(typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)); } - public void testMappedSuperclass() throws Exception { createTestMappedSuperclass(); @@ -193,54 +204,80 @@ public class JavaMappedSuperclassTests extends ContextModelTestCase public void testUpdateIdClass() throws Exception { createTestMappedSuperclass(); + createTestIdClass(); addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); - + JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); MappedSuperclass mappedSuperclass = (MappedSuperclass) getJavaPersistentType().getMapping(); - - assertNull(mappedSuperclass.getIdClass()); + IdClassReference idClassRef = mappedSuperclass.getIdClassReference(); + assertNull(typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)); + assertNull(idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); IdClassAnnotation idClass = (IdClassAnnotation) typeResource.addAnnotation(IdClassAnnotation.ANNOTATION_NAME); - assertNull(mappedSuperclass.getIdClass()); assertNotNull(typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)); + assertNull(idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); + + // test setting id class name to nonexistent class. test class name is set, but class is null + String nonExistentIdClassName = PACKAGE_NAME + ".Foo"; + idClass.setValue(nonExistentIdClassName); + assertEquals(nonExistentIdClassName, ((IdClassAnnotation) typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)).getValue()); + assertEquals(nonExistentIdClassName, idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); - idClass.setValue("model.Foo"); - assertEquals("model.Foo", mappedSuperclass.getIdClass()); - assertEquals("model.Foo", ((IdClassAnnotation) typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)).getValue()); + // test setting id class name to existent class. test class name is set and class is not null + String existentIdClassName = PACKAGE_NAME + ".TestTypeId"; + idClass.setValue(existentIdClassName); + assertEquals(existentIdClassName, ((IdClassAnnotation) typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)).getValue()); + assertEquals(existentIdClassName, idClassRef.getIdClassName()); + assertNotNull(idClassRef.getIdClass()); //test setting @IdClass value to null, IdClass annotation is removed idClass.setValue(null); - assertNull(mappedSuperclass.getIdClass()); assertNull(typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)); + assertNull(idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); //reset @IdClass value and then remove @IdClass idClass = (IdClassAnnotation) typeResource.addAnnotation(IdClassAnnotation.ANNOTATION_NAME); - idClass.setValue("model.Foo"); + idClass.setValue(existentIdClassName); typeResource.removeAnnotation(IdClassAnnotation.ANNOTATION_NAME); getJpaProject().synchronizeContextModel(); - - assertNull(mappedSuperclass.getIdClass()); - assertNull(typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)); + assertNull(typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)); + assertNull(idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); } public void testModifyIdClass() throws Exception { createTestMappedSuperclass(); + createTestIdClass(); addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); - + JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_TYPE_NAME); MappedSuperclass mappedSuperclass = (MappedSuperclass) getJavaPersistentType().getMapping(); - - assertNull(mappedSuperclass.getIdClass()); + IdClassReference idClassRef = mappedSuperclass.getIdClassReference(); + assertNull(typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)); - - mappedSuperclass.setIdClass("model.Foo"); - assertEquals("model.Foo", ((IdClassAnnotation) typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)).getValue()); - assertEquals("model.Foo", mappedSuperclass.getIdClass()); + assertNull(idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); - mappedSuperclass.setIdClass(null); - assertNull(mappedSuperclass.getIdClass()); + String nonExistentIdClassName = PACKAGE_NAME + ".Foo"; + idClassRef.setIdClassName(nonExistentIdClassName); + assertEquals(nonExistentIdClassName, ((IdClassAnnotation) typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)).getValue()); + assertEquals(nonExistentIdClassName, idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); + + String existentIdClassName = PACKAGE_NAME + ".TestTypeId"; + idClassRef.setIdClassName(existentIdClassName); + assertEquals(existentIdClassName, ((IdClassAnnotation) typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)).getValue()); + assertEquals(existentIdClassName, idClassRef.getIdClassName()); + assertNotNull(idClassRef.getIdClass()); + + idClassRef.setIdClassName(null); assertNull(typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME)); + assertNull(idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); } - } diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/orm/OrmEntityTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/orm/OrmEntityTests.java index 3c924250b8..9df4728213 100644 --- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/orm/OrmEntityTests.java +++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/orm/OrmEntityTests.java @@ -21,6 +21,7 @@ import org.eclipse.jpt.core.context.AttributeOverrideContainer; import org.eclipse.jpt.core.context.BasicMapping; import org.eclipse.jpt.core.context.DiscriminatorType; import org.eclipse.jpt.core.context.Entity; +import org.eclipse.jpt.core.context.IdClassReference; import org.eclipse.jpt.core.context.InheritanceType; import org.eclipse.jpt.core.context.PersistentType; import org.eclipse.jpt.core.context.java.JavaAssociationOverride; @@ -62,14 +63,15 @@ import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; @SuppressWarnings("nls") public class OrmEntityTests extends ContextModelTestCase { - protected static final String CHILD_TYPE_NAME = "AnnotationTestTypeChild"; protected static final String FULLY_QUALIFIED_CHILD_TYPE_NAME = PACKAGE_NAME + "." + CHILD_TYPE_NAME; - + + public OrmEntityTests(String name) { super(name); } + @Override protected void setUp() throws Exception { super.setUp(); @@ -155,8 +157,7 @@ public class OrmEntityTests extends ContextModelTestCase }; this.javaProject.createCompilationUnit(PACKAGE_NAME, "AnnotationTestTypeChild.java", sourceWriter); } - - + private ICompilationUnit createTestMappedSuperclass() throws Exception { return this.createTestType(new DefaultAnnotationWriter() { @Override @@ -280,6 +281,17 @@ public class OrmEntityTests extends ContextModelTestCase }); } + private void createTestIdClass() throws Exception { + SourceWriter sourceWriter = new SourceWriter() { + public void appendSourceTo(StringBuilder sb) { + sb.append(CR); + sb.append("public class ").append("TestTypeId").append(" "); + sb.append("{}").append(CR); + } + }; + this.javaProject.createCompilationUnit(PACKAGE_NAME, "TestTypeId.java", sourceWriter); + } + public void testUpdateSpecifiedName() throws Exception { OrmPersistentType ormPersistentType = getEntityMappings().addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, "model.foo"); OrmEntity ormEntity = (OrmEntity) ormPersistentType.getMapping(); @@ -2595,53 +2607,79 @@ public class OrmEntityTests extends ContextModelTestCase } public void testUpdateIdClass() throws Exception { - OrmPersistentType persistentType = getEntityMappings().addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME); - OrmEntity ormEntity = (OrmEntity) persistentType.getMapping(); + createTestIdClass(); + OrmPersistentType persistentType = + getEntityMappings().addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME); XmlEntity entityResource = getXmlEntityMappings().getEntities().get(0); - - assertNull(ormEntity.getIdClass()); + OrmEntity ormEntity = (OrmEntity) persistentType.getMapping(); + IdClassReference idClassRef = ormEntity.getIdClassReference(); + assertNull(entityResource.getIdClass()); + assertNull(idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); entityResource.setIdClass(OrmFactory.eINSTANCE.createXmlIdClass()); - - assertNull(ormEntity.getIdClass()); assertNotNull(entityResource.getIdClass()); + assertNull(idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); - entityResource.getIdClass().setClassName("model.Foo"); - assertEquals("model.Foo", ormEntity.getIdClass()); - assertEquals("model.Foo", entityResource.getIdClass().getClassName()); + String nonExistentIdClassName = PACKAGE_NAME + ".Foo"; + entityResource.getIdClass().setClassName(nonExistentIdClassName); + assertEquals(nonExistentIdClassName, entityResource.getIdClass().getClassName()); + assertEquals(nonExistentIdClassName, idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); + + String existentIdClassName = PACKAGE_NAME + ".TestTypeId"; + entityResource.getIdClass().setClassName(existentIdClassName); + assertEquals(existentIdClassName, entityResource.getIdClass().getClassName()); + assertEquals(existentIdClassName, idClassRef.getIdClassName()); + assertNotNull(idClassRef.getIdClass()); //test setting @IdClass value to null, id-class tag is not removed entityResource.getIdClass().setClassName(null); - assertNull(ormEntity.getIdClass()); assertNotNull(entityResource.getIdClass()); + assertNull(idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); //reset @IdClass value and then remove id-class tag entityResource.setIdClass(OrmFactory.eINSTANCE.createXmlIdClass()); entityResource.getIdClass().setClassName("model.Foo"); entityResource.setIdClass(null); - - assertNull(ormEntity.getIdClass()); assertNull(entityResource.getIdClass()); + assertNull(idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); } public void testModifyIdClass() throws Exception { - OrmPersistentType persistentType = getEntityMappings().addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME); - OrmEntity ormEntity = (OrmEntity) persistentType.getMapping(); + createTestIdClass(); + OrmPersistentType persistentType = + getEntityMappings().addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME); XmlEntity entityResource = getXmlEntityMappings().getEntities().get(0); - - assertNull(ormEntity.getIdClass()); - assertNull(entityResource.getIdClass()); - - ormEntity.setIdClass("model.Foo"); - assertEquals("model.Foo", entityResource.getIdClass().getClassName()); - assertEquals("model.Foo", ormEntity.getIdClass()); + OrmEntity ormEntity = (OrmEntity) persistentType.getMapping(); + IdClassReference idClassRef = ormEntity.getIdClassReference(); - ormEntity.setIdClass(null); - assertNull(ormEntity.getIdClass()); assertNull(entityResource.getIdClass()); + assertNull(idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); + + String nonExistentIdClassName = PACKAGE_NAME + ".Foo"; + idClassRef.setIdClassName(nonExistentIdClassName); + assertEquals(nonExistentIdClassName, entityResource.getIdClass().getClassName()); + assertEquals(nonExistentIdClassName, idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); + + String existentIdClassName = PACKAGE_NAME + ".TestTypeId"; + idClassRef.setIdClassName(existentIdClassName); + assertEquals(existentIdClassName, entityResource.getIdClass().getClassName()); + assertEquals(existentIdClassName, idClassRef.getIdClassName()); + assertNotNull(idClassRef.getIdClass()); + + idClassRef.setIdClassName(null); + assertNull(entityResource.getIdClass()); + assertNull(idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); } diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/orm/OrmMappedSuperclassTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/orm/OrmMappedSuperclassTests.java index c029ba1a44..9e0f9d80f0 100644 --- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/orm/OrmMappedSuperclassTests.java +++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/orm/OrmMappedSuperclassTests.java @@ -13,6 +13,7 @@ import java.util.ListIterator; import org.eclipse.jpt.core.JptCorePlugin; import org.eclipse.jpt.core.MappingKeys; import org.eclipse.jpt.core.context.AccessType; +import org.eclipse.jpt.core.context.IdClassReference; import org.eclipse.jpt.core.context.orm.OrmEmbeddable; import org.eclipse.jpt.core.context.orm.OrmEntity; import org.eclipse.jpt.core.context.orm.OrmMappedSuperclass; @@ -24,6 +25,7 @@ import org.eclipse.jpt.core.resource.orm.XmlMappedSuperclass; import org.eclipse.jpt.core.resource.persistence.PersistenceFactory; import org.eclipse.jpt.core.resource.persistence.XmlMappingFileRef; import org.eclipse.jpt.core.tests.internal.context.ContextModelTestCase; +import org.eclipse.jpt.core.tests.internal.projects.TestJavaProject.SourceWriter; @SuppressWarnings("nls") public class OrmMappedSuperclassTests extends ContextModelTestCase @@ -42,6 +44,17 @@ public class OrmMappedSuperclassTests extends ContextModelTestCase getPersistenceXmlResource().save(null); } + private void createTestIdClass() throws Exception { + SourceWriter sourceWriter = new SourceWriter() { + public void appendSourceTo(StringBuilder sb) { + sb.append(CR); + sb.append("public class ").append("TestTypeId").append(" "); + sb.append("{}").append(CR); + } + }; + this.javaProject.createCompilationUnit(PACKAGE_NAME, "TestTypeId.java", sourceWriter); + } + public void testUpdateClass() throws Exception { OrmPersistentType ormPersistentType = getEntityMappings().addPersistentType(MappingKeys.MAPPED_SUPERCLASS_TYPE_MAPPING_KEY, "model.Foo"); OrmMappedSuperclass ormMappedSuperclass = (OrmMappedSuperclass) ormPersistentType.getMapping(); @@ -296,50 +309,78 @@ public class OrmMappedSuperclassTests extends ContextModelTestCase } public void testUpdateIdClass() throws Exception { - OrmPersistentType ormPersistentType = getEntityMappings().addPersistentType(MappingKeys.MAPPED_SUPERCLASS_TYPE_MAPPING_KEY, "model.Foo"); + createTestIdClass(); + OrmPersistentType ormPersistentType = + getEntityMappings().addPersistentType(MappingKeys.MAPPED_SUPERCLASS_TYPE_MAPPING_KEY, "model.Foo"); + + XmlMappedSuperclass mappedSuperclassResource = getXmlEntityMappings().getMappedSuperclasses().get(0); OrmMappedSuperclass ormMappedSuperclass = (OrmMappedSuperclass) ormPersistentType.getMapping(); - XmlMappedSuperclass mappedSuperclassResource = getXmlEntityMappings().getMappedSuperclasses().get(0); assertNull(ormMappedSuperclass.getSpecifiedMetadataComplete()); - - assertNull(ormMappedSuperclass.getIdClass()); + IdClassReference idClassRef = ormMappedSuperclass.getIdClassReference(); + assertNull(mappedSuperclassResource.getIdClass()); + assertNull(idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); mappedSuperclassResource.setIdClass(OrmFactory.eINSTANCE.createXmlIdClass()); - - assertNull(ormMappedSuperclass.getIdClass()); assertNotNull(mappedSuperclassResource.getIdClass()); + assertNull(idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); - mappedSuperclassResource.getIdClass().setClassName("model.Foo"); - assertEquals("model.Foo", ormMappedSuperclass.getIdClass()); - assertEquals("model.Foo", mappedSuperclassResource.getIdClass().getClassName()); + String nonExistentIdClassName = PACKAGE_NAME + ".Foo"; + mappedSuperclassResource.getIdClass().setClassName(nonExistentIdClassName); + assertEquals(nonExistentIdClassName, mappedSuperclassResource.getIdClass().getClassName()); + assertEquals(nonExistentIdClassName, idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); + + String existentIdClassName = PACKAGE_NAME + ".TestTypeId"; + mappedSuperclassResource.getIdClass().setClassName(existentIdClassName); + assertEquals(existentIdClassName, mappedSuperclassResource.getIdClass().getClassName()); + assertEquals(existentIdClassName, idClassRef.getIdClassName()); + assertNotNull(idClassRef.getIdClass()); //test setting @IdClass value to null, id-class tag is not removed mappedSuperclassResource.getIdClass().setClassName(null); - assertNull(ormMappedSuperclass.getIdClass()); assertNotNull(mappedSuperclassResource.getIdClass()); + assertNull(idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); //reset @IdClass value and then remove id-class tag mappedSuperclassResource.setIdClass(OrmFactory.eINSTANCE.createXmlIdClass()); mappedSuperclassResource.getIdClass().setClassName("model.Foo"); mappedSuperclassResource.setIdClass(null); - - assertNull(ormMappedSuperclass.getIdClass()); assertNull(mappedSuperclassResource.getIdClass()); + assertNull(idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); } public void testModifyIdClass() throws Exception { - OrmPersistentType ormPersistentType = getEntityMappings().addPersistentType(MappingKeys.MAPPED_SUPERCLASS_TYPE_MAPPING_KEY, "model.Foo"); + createTestIdClass(); + OrmPersistentType ormPersistentType = + getEntityMappings().addPersistentType(MappingKeys.MAPPED_SUPERCLASS_TYPE_MAPPING_KEY, "model.Foo"); + + XmlMappedSuperclass mappedSuperclassResource = getXmlEntityMappings().getMappedSuperclasses().get(0); OrmMappedSuperclass ormMappedSuperclass = (OrmMappedSuperclass) ormPersistentType.getMapping(); - XmlMappedSuperclass mappedSuperclassResource = getXmlEntityMappings().getMappedSuperclasses().get(0); assertNull(ormMappedSuperclass.getSpecifiedMetadataComplete()); - - assertNull(ormMappedSuperclass.getIdClass()); - assertNull(mappedSuperclassResource.getIdClass()); - - ormMappedSuperclass.setIdClass("model.Foo"); - assertEquals("model.Foo", mappedSuperclassResource.getIdClass().getClassName()); - assertEquals("model.Foo", ormMappedSuperclass.getIdClass()); + IdClassReference idClassRef = ormMappedSuperclass.getIdClassReference(); - ormMappedSuperclass.setIdClass(null); - assertNull(ormMappedSuperclass.getIdClass()); assertNull(mappedSuperclassResource.getIdClass()); + assertNull(idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); + + String nonExistentIdClassName = PACKAGE_NAME + ".Foo"; + idClassRef.setIdClassName(nonExistentIdClassName); + assertEquals(nonExistentIdClassName, mappedSuperclassResource.getIdClass().getClassName()); + assertEquals(nonExistentIdClassName, idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); + + String existentIdClassName = PACKAGE_NAME + ".TestTypeId"; + idClassRef.setIdClassName(existentIdClassName); + assertEquals(existentIdClassName, mappedSuperclassResource.getIdClass().getClassName()); + assertEquals(existentIdClassName, idClassRef.getIdClassName()); + assertNotNull(idClassRef.getIdClass()); + + idClassRef.setIdClassName(null); + assertNull(mappedSuperclassResource.getIdClass()); + assertNull(idClassRef.getIdClassName()); + assertNull(idClassRef.getIdClass()); } }
\ No newline at end of file |