Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkmoore2011-09-07 20:47:19 +0000
committerkmoore2011-09-07 20:47:19 +0000
commit5b877f3ad1b96c8a5a22fc9086e4222125de158b (patch)
tree339e2b25f9a9d1411a17728a5f78c7b2445a2941
parent177c0ce9a362909bad69ec017ac7727b8568a2db (diff)
downloadwebtools.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
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVersionMapping.java5
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVersionMapping.java5
-rw-r--r--jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/context/java/JavaEntityTests.java61
-rw-r--r--jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/context/orm/OrmEntityTests.java25
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());

Back to the top