Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkmoore2010-05-25 14:12:17 +0000
committerkmoore2010-05-25 14:12:17 +0000
commitd4d0275fe0f983f789f3afc6f0737de82e20a302 (patch)
tree49091795dc8700cf3ce5439cbf3638b353e0034b /jpa/tests/org.eclipse.jpt.core.tests
parent7abbdf2420e99a218a7165382c19b44265fa0be2 (diff)
downloadwebtools.dali-d4d0275fe0f983f789f3afc6f0737de82e20a302.tar.gz
webtools.dali-d4d0275fe0f983f789f3afc6f0737de82e20a302.tar.xz
webtools.dali-d4d0275fe0f983f789f3afc6f0737de82e20a302.zip
313766 - StackOverflowError with a self-referential ElementCollection or Embedded
Diffstat (limited to 'jpa/tests/org.eclipse.jpt.core.tests')
-rw-r--r--jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaElementCollectionMapping2_0Tests.java34
-rw-r--r--jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaEmbeddedMapping2_0Tests.java35
-rw-r--r--jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmElementCollectionMapping2_0Tests.java33
-rw-r--r--jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmEmbeddedMapping2_0Tests.java35
4 files changed, 136 insertions, 1 deletions
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaElementCollectionMapping2_0Tests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaElementCollectionMapping2_0Tests.java
index 3e59dcf901..264396cbf0 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaElementCollectionMapping2_0Tests.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaElementCollectionMapping2_0Tests.java
@@ -308,6 +308,31 @@ public class GenericJavaElementCollectionMapping2_0Tests extends Generic2_0Conte
this.javaProject.createCompilationUnit(PACKAGE_NAME, "PropertyInfo.java", sourceWriter);
}
+ private void createSelfReferentialElementCollection() throws Exception {
+ SourceWriter sourceWriter = new SourceWriter() {
+ public void appendSourceTo(StringBuilder sb) {
+ sb.append("import ");
+ sb.append(JPA.EMBEDDABLE);
+ sb.append(";");
+ sb.append(CR);
+ sb.append("import ");
+ sb.append(JPA2_0.ELEMENT_COLLECTION);
+ sb.append(";");
+ sb.append(CR).append(CR);
+ sb.append("@Embeddable");
+ sb.append(CR);
+ sb.append("public class ").append("Foo").append(" ");
+ sb.append("{").append(CR);
+ sb.append(CR);
+ sb.append(" @ElementCollection").append(CR);
+ sb.append(" private java.util.List<Foo> elementCollection;").append(CR);
+ sb.append(CR);
+ sb.append("}").append(CR);
+ }
+ };
+ this.javaProject.createCompilationUnit(PACKAGE_NAME, "Foo.java", sourceWriter);
+ }
+
public GenericJavaElementCollectionMapping2_0Tests(String name) {
super(name);
}
@@ -2025,4 +2050,13 @@ public class GenericJavaElementCollectionMapping2_0Tests extends Generic2_0Conte
assertEquals("city", specifiedOverrides.next().getName());
assertFalse(specifiedOverrides.hasNext());
}
+
+ public void testSelfReferentialElementCollection() throws Exception {
+ createSelfReferentialElementCollection();
+ addXmlClassRef(PACKAGE_NAME + ".Foo");
+
+ //If there is a StackOverflowError you will not be able to get the mapping
+ JavaElementCollectionMapping2_0 elementCollectionMapping = (JavaElementCollectionMapping2_0) getJavaPersistentType().getAttributeNamed("elementCollection").getMapping();
+ assertFalse(elementCollectionMapping.allOverrideableAttributeMappingNames().hasNext());
+ }
}
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaEmbeddedMapping2_0Tests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaEmbeddedMapping2_0Tests.java
index 95d3b456e2..863196cb79 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaEmbeddedMapping2_0Tests.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaEmbeddedMapping2_0Tests.java
@@ -358,7 +358,32 @@ public class GenericJavaEmbeddedMapping2_0Tests extends Generic2_0ContextModelTe
};
this.javaProject.createCompilationUnit(PACKAGE_NAME, "Embeddable1.java", sourceWriter);
}
-
+
+ private void createSelfReferentialEmbedded() throws Exception {
+ SourceWriter sourceWriter = new SourceWriter() {
+ public void appendSourceTo(StringBuilder sb) {
+ sb.append("import ");
+ sb.append(JPA.EMBEDDABLE);
+ sb.append(";");
+ sb.append(CR);
+ sb.append("import ");
+ sb.append(JPA.EMBEDDED);
+ sb.append(";");
+ sb.append(CR).append(CR);
+ sb.append("@Embeddable");
+ sb.append(CR);
+ sb.append("public class ").append("Foo").append(" ");
+ sb.append("{").append(CR);
+ sb.append(CR);
+ sb.append(" @Embedded").append(CR);
+ sb.append(" private Foo embedded;").append(CR);
+ sb.append(CR);
+ sb.append("}").append(CR);
+ }
+ };
+ this.javaProject.createCompilationUnit(PACKAGE_NAME, "Foo.java", sourceWriter);
+ }
+
public void testMorphToVersionMapping() throws Exception {
createTestEntityWithEmbeddedMapping();
createEmbeddableType();
@@ -1508,4 +1533,12 @@ public class GenericJavaEmbeddedMapping2_0Tests extends Generic2_0ContextModelTe
assertEquals(0, specifiedAttributeOverride.getColumn().getScale());
}
+ public void testSelfReferentialEmbeddedMapping() throws Exception {
+ createSelfReferentialEmbedded();
+ addXmlClassRef(PACKAGE_NAME + ".Foo");
+
+ //If there is a StackOverflowError you will not be able to get the mapping
+ JavaEmbeddedMapping2_0 embeddedMapping = (JavaEmbeddedMapping2_0) getJavaPersistentType().getAttributeNamed("embedded").getMapping();
+ assertFalse(embeddedMapping.allOverrideableAttributeMappingNames().hasNext());
+ }
}
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmElementCollectionMapping2_0Tests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmElementCollectionMapping2_0Tests.java
index 676d05545e..e7fe66bb8b 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmElementCollectionMapping2_0Tests.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmElementCollectionMapping2_0Tests.java
@@ -257,6 +257,31 @@ public class GenericOrmElementCollectionMapping2_0Tests extends Generic2_0Contex
}
});
}
+
+ private void createSelfReferentialElementCollection() throws Exception {
+ SourceWriter sourceWriter = new SourceWriter() {
+ public void appendSourceTo(StringBuilder sb) {
+ sb.append("import ");
+ sb.append(JPA.EMBEDDABLE);
+ sb.append(";");
+ sb.append(CR);
+ sb.append("import ");
+ sb.append(JPA2_0.ELEMENT_COLLECTION);
+ sb.append(";");
+ sb.append(CR).append(CR);
+ sb.append("@Embeddable");
+ sb.append(CR);
+ sb.append("public class ").append("Foo").append(" ");
+ sb.append("{").append(CR);
+ sb.append(CR);
+ sb.append(" @ElementCollection").append(CR);
+ sb.append(" private java.util.List<Foo> elementCollection;").append(CR);
+ sb.append(CR);
+ sb.append("}").append(CR);
+ }
+ };
+ this.javaProject.createCompilationUnit(PACKAGE_NAME, "Foo.java", sourceWriter);
+ }
public void testUpdateName() throws Exception {
OrmPersistentType ormPersistentType = getEntityMappings().addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, "model.Foo");
@@ -1418,4 +1443,12 @@ public class GenericOrmElementCollectionMapping2_0Tests extends Generic2_0Contex
assertNull(ormColumn.getSpecifiedTable());
assertEquals(TYPE_NAME + "_addresses", ormColumn.getDefaultTable());
}
+
+ public void testSelfReferentialElementCollectionMapping() throws Exception {
+ createSelfReferentialElementCollection();
+ OrmPersistentType persistentType = getEntityMappings().addPersistentType(MappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY, PACKAGE_NAME + ".Foo");
+
+ OrmElementCollectionMapping2_0 mapping = (OrmElementCollectionMapping2_0) persistentType.getAttributeNamed("elementCollection").getMapping();
+ assertFalse(mapping.allOverrideableAttributeMappingNames().hasNext());
+ }
} \ No newline at end of file
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmEmbeddedMapping2_0Tests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmEmbeddedMapping2_0Tests.java
index 4c808c5c05..ad0fe31e4d 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmEmbeddedMapping2_0Tests.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmEmbeddedMapping2_0Tests.java
@@ -310,6 +310,33 @@ public class GenericOrmEmbeddedMapping2_0Tests extends Generic2_0ContextModelTes
this.javaProject.createCompilationUnit(PACKAGE_NAME, "ZipCode.java", sourceWriter);
}
+ private void createSelfReferentialEmbedded() throws Exception {
+ SourceWriter sourceWriter = new SourceWriter() {
+ public void appendSourceTo(StringBuilder sb) {
+ sb.append("import ");
+ sb.append(JPA.EMBEDDABLE);
+ sb.append(";");
+ sb.append(CR);
+ sb.append("import ");
+ sb.append(JPA.EMBEDDED);
+ sb.append(";");
+ sb.append(CR).append(CR);
+ sb.append("@Embeddable");
+ sb.append(CR);
+ sb.append("public class ").append("Foo").append(" ");
+ sb.append("{").append(CR);
+ sb.append(CR);
+ sb.append(" @Embedded").append(CR);
+ sb.append(" private Foo embedded;").append(CR);
+ sb.append(CR);
+ sb.append(" private String name;").append(CR);
+ sb.append(CR);
+ sb.append("}").append(CR);
+ }
+ };
+ this.javaProject.createCompilationUnit(PACKAGE_NAME, "Foo.java", sourceWriter);
+ }
+
public void testUpdateName() throws Exception {
OrmPersistentType ormPersistentType = getEntityMappings().addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, "model.Foo");
OrmPersistentAttribute ormPersistentAttribute = ormPersistentType.addSpecifiedAttribute(MappingKeys.EMBEDDED_ATTRIBUTE_MAPPING_KEY, "embeddedMapping");
@@ -1673,4 +1700,12 @@ public class GenericOrmEmbeddedMapping2_0Tests extends Generic2_0ContextModelTes
assertEquals(0, specifiedAttributeOverride.getColumn().getPrecision());
assertEquals(0, specifiedAttributeOverride.getColumn().getScale());
}
+
+ public void testSelfReferentialEmbeddedMapping() throws Exception {
+ createSelfReferentialEmbedded();
+ OrmPersistentType persistentType = getEntityMappings().addPersistentType(MappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY, PACKAGE_NAME + ".Foo");
+
+ OrmEmbeddedMapping2_0 embeddedMapping = (OrmEmbeddedMapping2_0) persistentType.getAttributeNamed("embedded").getMapping();
+ assertFalse(embeddedMapping.allOverrideableAttributeMappingNames().hasNext());
+ }
} \ No newline at end of file

Back to the top