diff options
author | kmoore | 2011-09-07 20:47:19 +0000 |
---|---|---|
committer | kmoore | 2011-09-07 20:47:19 +0000 |
commit | 5b877f3ad1b96c8a5a22fc9086e4222125de158b (patch) | |
tree | 339e2b25f9a9d1411a17728a5f78c7b2445a2941 | |
parent | 177c0ce9a362909bad69ec017ac7727b8568a2db (diff) | |
download | webtools.dali-5b877f3ad1b96c8a5a22fc9086e4222125de158b.tar.gz webtools.dali-5b877f3ad1b96c8a5a22fc9086e4222125de158b.tar.xz webtools.dali-5b877f3ad1b96c8a5a22fc9086e4222125de158b.zip |
Bug 356292 - Validation error for entities with @AttributeOverride on attribute marked as @Version in mapped superclass
4 files changed, 76 insertions, 20 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVersionMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVersionMapping.java index 0a74da1dde..7a51e9283d 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVersionMapping.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVersionMapping.java @@ -217,6 +217,11 @@ public abstract class AbstractJavaVersionMapping return VersionAnnotation.ANNOTATION_NAME; } + @Override + public boolean isOverridableAttributeMapping() { + return true; + } + // ********** JavaColumn.Owner implementation ********** diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVersionMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVersionMapping.java index 3ec67591c0..09453c5868 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVersionMapping.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVersionMapping.java @@ -209,6 +209,11 @@ public abstract class AbstractOrmVersionMapping<X extends XmlVersion> return 30; } + @Override + public boolean isOverridableAttributeMapping() { + return true; + } + public void initializeOn(OrmAttributeMapping newMapping) { newMapping.initializeFromOrmVersionMapping(this); } diff --git a/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/context/java/JavaEntityTests.java b/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/context/java/JavaEntityTests.java index 0b34da79c5..294ff76263 100644 --- a/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/context/java/JavaEntityTests.java +++ b/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/context/java/JavaEntityTests.java @@ -1737,6 +1737,7 @@ public class JavaEntityTests extends ContextModelTestCase Iterator<String> overridableAttributes = getJavaEntity().allOverridableAttributeNames(); assertEquals("foo", overridableAttributes.next()); assertEquals("basic", overridableAttributes.next()); + assertEquals("version", overridableAttributes.next()); assertEquals("id", overridableAttributes.next()); assertEquals("name", overridableAttributes.next()); assertFalse(overridableAttributes.hasNext()); @@ -1795,6 +1796,7 @@ public class JavaEntityTests extends ContextModelTestCase Iterator<String> overridableAttributes = getJavaEntity().allOverridableAttributeNames(); assertEquals("foo", overridableAttributes.next()); assertEquals("basic", overridableAttributes.next()); + assertEquals("version", overridableAttributes.next()); assertEquals("id", overridableAttributes.next()); assertEquals("name", overridableAttributes.next()); assertFalse(overridableAttributes.hasNext()); @@ -1809,6 +1811,7 @@ public class JavaEntityTests extends ContextModelTestCase Iterator<String> overridableAttributeNames = getJavaEntity().allOverridableAttributeNames(); assertEquals("foo", overridableAttributeNames.next()); assertEquals("basic", overridableAttributeNames.next()); + assertEquals("version", overridableAttributeNames.next()); assertEquals("id", overridableAttributeNames.next()); assertEquals("name", overridableAttributeNames.next()); assertFalse(overridableAttributeNames.hasNext()); @@ -1897,7 +1900,7 @@ public class JavaEntityTests extends ContextModelTestCase assertNull(typeResource.getAnnotation(AttributeOverrideAnnotation.ANNOTATION_NAME)); assertNull(typeResource.getAnnotation(AttributeOverridesAnnotation.ANNOTATION_NAME)); - assertEquals(4, overrideContainer.virtualOverridesSize()); + assertEquals(5, overrideContainer.virtualOverridesSize()); VirtualAttributeOverride virtualAttributeOverride = overrideContainer.virtualOverrides().next(); assertEquals("foo", virtualAttributeOverride.getName()); assertEquals("foo", virtualAttributeOverride.getColumn().getName()); @@ -1930,7 +1933,7 @@ public class JavaEntityTests extends ContextModelTestCase assertNull(typeResource.getAnnotation(AttributeOverrideAnnotation.ANNOTATION_NAME)); assertNull(typeResource.getAnnotation(AttributeOverridesAnnotation.ANNOTATION_NAME)); - assertEquals(4, overrideContainer.virtualOverridesSize()); + assertEquals(5, overrideContainer.virtualOverridesSize()); virtualAttributeOverride = overrideContainer.virtualOverrides().next(); assertEquals("foo", virtualAttributeOverride.getName()); assertEquals("FOO", virtualAttributeOverride.getColumn().getName()); @@ -1972,7 +1975,7 @@ public class JavaEntityTests extends ContextModelTestCase assertEquals(0, virtualAttributeOverride.getColumn().getScale()); virtualAttributeOverride.convertToSpecified(); - assertEquals(3, overrideContainer.virtualOverridesSize()); + assertEquals(4, overrideContainer.virtualOverridesSize()); } public void testVirtualAttributeOverridesEntityHierachy() throws Exception { @@ -2057,9 +2060,12 @@ public class JavaEntityTests extends ContextModelTestCase addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); AttributeOverrideContainer overrideContainer = getJavaEntity().getAttributeOverrideContainer(); - assertEquals(4, overrideContainer.virtualOverridesSize()); + assertEquals(5, overrideContainer.virtualOverridesSize()); overrideContainer.virtualOverrides().next().convertToSpecified(); + assertEquals(4, overrideContainer.virtualOverridesSize()); + + overrideContainer.virtualOverrides().next().convertToSpecified(); assertEquals(3, overrideContainer.virtualOverridesSize()); overrideContainer.virtualOverrides().next().convertToSpecified(); @@ -2080,20 +2086,20 @@ public class JavaEntityTests extends ContextModelTestCase addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); AttributeOverrideContainer overrideContainer = getJavaEntity().getAttributeOverrideContainer(); - assertEquals(4, overrideContainer.overridesSize()); + assertEquals(5, overrideContainer.overridesSize()); overrideContainer.virtualOverrides().next().convertToSpecified(); - assertEquals(4, overrideContainer.overridesSize()); + assertEquals(5, overrideContainer.overridesSize()); overrideContainer.virtualOverrides().next().convertToSpecified(); - assertEquals(4, overrideContainer.overridesSize()); + assertEquals(5, overrideContainer.overridesSize()); JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_SUB_TYPE_NAME); AttributeOverrideAnnotation annotation = (AttributeOverrideAnnotation) typeResource.addAnnotation(0, JPA.ATTRIBUTE_OVERRIDE, JPA.ATTRIBUTE_OVERRIDES); annotation.setName("bar"); getJpaProject().synchronizeContextModel(); - assertEquals(5, overrideContainer.overridesSize()); + assertEquals(6, overrideContainer.overridesSize()); } public void testAttributeOverrideSetVirtual() throws Exception { @@ -2150,32 +2156,45 @@ public class JavaEntityTests extends ContextModelTestCase overrideContainer.virtualOverrides().next().convertToSpecified(); overrideContainer.virtualOverrides().next().convertToSpecified(); overrideContainer.virtualOverrides().next().convertToSpecified(); + overrideContainer.virtualOverrides().next().convertToSpecified(); JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_SUB_TYPE_NAME); - assertEquals(3, CollectionTools.size(typeResource.annotations(AttributeOverrideAnnotation.ANNOTATION_NAME, AttributeOverridesAnnotation.ANNOTATION_NAME))); + assertEquals(4, CollectionTools.size(typeResource.annotations(AttributeOverrideAnnotation.ANNOTATION_NAME, AttributeOverridesAnnotation.ANNOTATION_NAME))); overrideContainer.specifiedOverrides().next().convertToVirtual(); Iterator<NestableAnnotation> attributeOverrideResources = typeResource.annotations(AttributeOverrideAnnotation.ANNOTATION_NAME, AttributeOverridesAnnotation.ANNOTATION_NAME); assertEquals("basic", ((AttributeOverrideAnnotation) attributeOverrideResources.next()).getName()); + assertEquals("version", ((AttributeOverrideAnnotation) attributeOverrideResources.next()).getName()); assertEquals("id", ((AttributeOverrideAnnotation) attributeOverrideResources.next()).getName()); assertFalse(attributeOverrideResources.hasNext()); Iterator<JavaAttributeOverride> attributeOverrides = overrideContainer.specifiedOverrides(); assertEquals("basic", attributeOverrides.next().getName()); + assertEquals("version", attributeOverrides.next().getName()); assertEquals("id", attributeOverrides.next().getName()); assertFalse(attributeOverrides.hasNext()); overrideContainer.specifiedOverrides().next().convertToVirtual(); attributeOverrideResources = typeResource.annotations(AttributeOverrideAnnotation.ANNOTATION_NAME, AttributeOverridesAnnotation.ANNOTATION_NAME); + assertEquals("version", ((AttributeOverrideAnnotation) attributeOverrideResources.next()).getName()); assertEquals("id", ((AttributeOverrideAnnotation) attributeOverrideResources.next()).getName()); assertFalse(attributeOverrideResources.hasNext()); attributeOverrides = overrideContainer.specifiedOverrides(); + assertEquals("version", attributeOverrides.next().getName()); assertEquals("id", attributeOverrides.next().getName()); assertFalse(attributeOverrides.hasNext()); + overrideContainer.specifiedOverrides().next().convertToVirtual(); + attributeOverrideResources = typeResource.annotations(AttributeOverrideAnnotation.ANNOTATION_NAME, AttributeOverridesAnnotation.ANNOTATION_NAME); + assertEquals("id", ((AttributeOverrideAnnotation) attributeOverrideResources.next()).getName()); + assertFalse(attributeOverrideResources.hasNext()); + + attributeOverrides = overrideContainer.specifiedOverrides(); + assertEquals("id", attributeOverrides.next().getName()); + assertFalse(attributeOverrides.hasNext()); overrideContainer.specifiedOverrides().next().convertToVirtual(); attributeOverrideResources = typeResource.annotations(AttributeOverrideAnnotation.ANNOTATION_NAME, AttributeOverridesAnnotation.ANNOTATION_NAME); @@ -2197,35 +2216,40 @@ public class JavaEntityTests extends ContextModelTestCase overrideContainer.virtualOverrides().next().convertToSpecified(); overrideContainer.virtualOverrides().next().convertToSpecified(); overrideContainer.virtualOverrides().next().convertToSpecified(); + overrideContainer.virtualOverrides().next().convertToSpecified(); JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(FULLY_QUALIFIED_SUB_TYPE_NAME); Iterator<NestableAnnotation> javaAttributeOverrides = typeResource.annotations(AttributeOverrideAnnotation.ANNOTATION_NAME, AttributeOverridesAnnotation.ANNOTATION_NAME); - assertEquals(3, CollectionTools.size(javaAttributeOverrides)); + assertEquals(4, CollectionTools.size(javaAttributeOverrides)); overrideContainer.moveSpecifiedOverride(2, 0); ListIterator<JavaAttributeOverride> attributeOverrides = overrideContainer.specifiedOverrides(); assertEquals("basic", attributeOverrides.next().getName()); - assertEquals("id", attributeOverrides.next().getName()); + assertEquals("version", attributeOverrides.next().getName()); assertEquals("foo", attributeOverrides.next().getName()); + assertEquals("id", attributeOverrides.next().getName()); javaAttributeOverrides = typeResource.annotations(AttributeOverrideAnnotation.ANNOTATION_NAME, AttributeOverridesAnnotation.ANNOTATION_NAME); assertEquals("basic", ((AttributeOverrideAnnotation) javaAttributeOverrides.next()).getName()); - assertEquals("id", ((AttributeOverrideAnnotation) javaAttributeOverrides.next()).getName()); + assertEquals("version", ((AttributeOverrideAnnotation) javaAttributeOverrides.next()).getName()); assertEquals("foo", ((AttributeOverrideAnnotation) javaAttributeOverrides.next()).getName()); + assertEquals("id", ((AttributeOverrideAnnotation) javaAttributeOverrides.next()).getName()); overrideContainer.moveSpecifiedOverride(0, 1); attributeOverrides = overrideContainer.specifiedOverrides(); - assertEquals("id", attributeOverrides.next().getName()); + assertEquals("version", attributeOverrides.next().getName()); assertEquals("basic", attributeOverrides.next().getName()); assertEquals("foo", attributeOverrides.next().getName()); + assertEquals("id", attributeOverrides.next().getName()); javaAttributeOverrides = typeResource.annotations(AttributeOverrideAnnotation.ANNOTATION_NAME, AttributeOverridesAnnotation.ANNOTATION_NAME); - assertEquals("id", ((AttributeOverrideAnnotation) javaAttributeOverrides.next()).getName()); + assertEquals("version", ((AttributeOverrideAnnotation) javaAttributeOverrides.next()).getName()); assertEquals("basic", ((AttributeOverrideAnnotation) javaAttributeOverrides.next()).getName()); assertEquals("foo", ((AttributeOverrideAnnotation) javaAttributeOverrides.next()).getName()); + assertEquals("id", ((AttributeOverrideAnnotation) javaAttributeOverrides.next()).getName()); } public void testUpdateSpecifiedAttributeOverrides() throws Exception { @@ -2299,6 +2323,10 @@ public class JavaEntityTests extends ContextModelTestCase assertTrue(virtualAttributeOverride.isVirtual()); virtualAttributeOverride = virtualAttributeOverrides.next(); + assertEquals("version", virtualAttributeOverride.getName()); + assertTrue(virtualAttributeOverride.isVirtual()); + + virtualAttributeOverride = virtualAttributeOverrides.next(); assertEquals("id", virtualAttributeOverride.getName()); assertTrue(virtualAttributeOverride.isVirtual()); @@ -2318,6 +2346,10 @@ public class JavaEntityTests extends ContextModelTestCase assertTrue(virtualAttributeOverride.isVirtual()); virtualAttributeOverride = virtualAttributeOverrides.next(); + assertEquals("version", virtualAttributeOverride.getName()); + assertTrue(virtualAttributeOverride.isVirtual()); + + virtualAttributeOverride = virtualAttributeOverrides.next(); assertEquals("id", virtualAttributeOverride.getName()); assertTrue(virtualAttributeOverride.isVirtual()); @@ -3333,6 +3365,7 @@ public class JavaEntityTests extends ContextModelTestCase ListIterator<JavaVirtualAttributeOverride> virtualAttributeOverrides = javaEntity.getAttributeOverrideContainer().virtualOverrides(); virtualAttributeOverrides.next(); virtualAttributeOverrides.next(); + virtualAttributeOverrides.next(); JavaVirtualAttributeOverride virtualOverride = virtualAttributeOverrides.next(); assertEquals("id", virtualOverride.getName()); diff --git a/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/context/orm/OrmEntityTests.java b/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/context/orm/OrmEntityTests.java index 267390e1e6..7e08050ff6 100644 --- a/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/context/orm/OrmEntityTests.java +++ b/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/context/orm/OrmEntityTests.java @@ -1673,13 +1673,15 @@ public class OrmEntityTests extends ContextModelTestCase OrmEntity entity = (OrmEntity) persistentType.getMapping(); OrmAttributeOverrideContainer overrideContainer = entity.getAttributeOverrideContainer(); - assertEquals(4, overrideContainer.virtualOverridesSize()); + assertEquals(5, overrideContainer.virtualOverridesSize()); ListIterator<OrmVirtualAttributeOverride> virtualAttributeOverrides = overrideContainer.virtualOverrides(); OrmVirtualAttributeOverride virtualOverride = virtualAttributeOverrides.next(); assertEquals("foo", virtualOverride.getName()); virtualOverride = virtualAttributeOverrides.next(); assertEquals("basic", virtualOverride.getName()); virtualOverride = virtualAttributeOverrides.next(); + assertEquals("version", virtualOverride.getName()); + virtualOverride = virtualAttributeOverrides.next(); assertEquals("id", virtualOverride.getName()); virtualOverride = virtualAttributeOverrides.next(); assertEquals("name", virtualOverride.getName()); @@ -1696,21 +1698,25 @@ public class OrmEntityTests extends ContextModelTestCase overrideContainer.virtualOverrides().next().convertToSpecified(); - assertEquals(3, overrideContainer.virtualOverridesSize()); + assertEquals(4, overrideContainer.virtualOverridesSize()); virtualAttributeOverrides = overrideContainer.virtualOverrides(); virtualOverride = virtualAttributeOverrides.next(); assertEquals("basic", virtualOverride.getName()); virtualOverride = virtualAttributeOverrides.next(); + assertEquals("version", virtualOverride.getName()); + virtualOverride = virtualAttributeOverrides.next(); assertEquals("id", virtualOverride.getName()); virtualOverride = virtualAttributeOverrides.next(); assertEquals("name", virtualOverride.getName()); entity.setSpecifiedMetadataComplete(Boolean.TRUE); - assertEquals(3, overrideContainer.virtualOverridesSize()); + assertEquals(4, overrideContainer.virtualOverridesSize()); virtualAttributeOverrides = overrideContainer.virtualOverrides(); virtualOverride = virtualAttributeOverrides.next(); assertEquals("basic", virtualOverride.getName()); virtualOverride = virtualAttributeOverrides.next(); + assertEquals("version", virtualOverride.getName()); + virtualOverride = virtualAttributeOverrides.next(); assertEquals("id", virtualOverride.getName()); virtualOverride = virtualAttributeOverrides.next(); assertEquals("name", virtualOverride.getName()); @@ -1730,7 +1736,7 @@ public class OrmEntityTests extends ContextModelTestCase javaColumn.setSpecifiedPrecision(Integer.valueOf(8)); javaColumn.setSpecifiedScale(Integer.valueOf(9)); - assertEquals(4, overrideContainer.virtualOverridesSize()); + assertEquals(5, overrideContainer.virtualOverridesSize()); virtualAttributeOverrides = overrideContainer.virtualOverrides(); virtualOverride = virtualAttributeOverrides.next(); assertEquals("foo", virtualOverride.getName()); @@ -1751,6 +1757,8 @@ public class OrmEntityTests extends ContextModelTestCase assertNull(virtualOverride.getColumn().getSpecifiedName()); assertEquals("basic", virtualOverride.getColumn().getDefaultName()); virtualOverride = virtualAttributeOverrides.next(); + assertEquals("version", virtualOverride.getName()); + virtualOverride = virtualAttributeOverrides.next(); assertEquals("id", virtualOverride.getName()); virtualOverride = virtualAttributeOverrides.next(); assertEquals("name", virtualOverride.getName()); @@ -1770,7 +1778,7 @@ public class OrmEntityTests extends ContextModelTestCase - assertEquals(4, overrideContainer.virtualOverridesSize()); + assertEquals(5, overrideContainer.virtualOverridesSize()); virtualAttributeOverrides = overrideContainer.virtualOverrides(); virtualOverride = virtualAttributeOverrides.next(); assertEquals("basic", virtualOverride.getName()); @@ -1798,6 +1806,8 @@ public class OrmEntityTests extends ContextModelTestCase assertEquals(Integer.valueOf(8), virtualOverride.getColumn().getSpecifiedPrecision()); assertEquals(Integer.valueOf(9), virtualOverride.getColumn().getSpecifiedScale()); virtualOverride = virtualAttributeOverrides.next(); + assertEquals("version", virtualOverride.getName()); + virtualOverride = virtualAttributeOverrides.next(); assertEquals("id", virtualOverride.getName()); } @@ -1812,13 +1822,15 @@ public class OrmEntityTests extends ContextModelTestCase OrmAttributeOverrideContainer overrideContainer = entity.getAttributeOverrideContainer(); persistentType.getJavaPersistentType().setMappingKey(MappingKeys.NULL_TYPE_MAPPING_KEY); - assertEquals(4, overrideContainer.virtualOverridesSize()); + assertEquals(5, overrideContainer.virtualOverridesSize()); ListIterator<OrmVirtualAttributeOverride> virtualAttributeOverrides = overrideContainer.virtualOverrides(); OrmVirtualAttributeOverride attributeOverride = virtualAttributeOverrides.next(); assertEquals("foo", attributeOverride.getName()); attributeOverride = virtualAttributeOverrides.next(); assertEquals("basic", attributeOverride.getName()); attributeOverride = virtualAttributeOverrides.next(); + assertEquals("version", attributeOverride.getName()); + attributeOverride = virtualAttributeOverrides.next(); assertEquals("id", attributeOverride.getName()); attributeOverride = virtualAttributeOverrides.next(); assertEquals("name", attributeOverride.getName()); @@ -1921,6 +1933,7 @@ public class OrmEntityTests extends ContextModelTestCase Iterator<String> overridableAttributes = entity.allOverridableAttributeNames(); assertEquals("foo", overridableAttributes.next()); assertEquals("basic", overridableAttributes.next()); + assertEquals("version", overridableAttributes.next()); assertEquals("id", overridableAttributes.next()); assertEquals("name", overridableAttributes.next()); assertFalse(overridableAttributes.hasNext()); |