diff options
Diffstat (limited to 'jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/java/EclipseLink2_0JavaElementCollectionMappingTests.java')
-rw-r--r-- | jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/java/EclipseLink2_0JavaElementCollectionMappingTests.java | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/java/EclipseLink2_0JavaElementCollectionMappingTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/java/EclipseLink2_0JavaElementCollectionMappingTests.java index 9b0df094c6..d5b35d2a62 100644 --- a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/java/EclipseLink2_0JavaElementCollectionMappingTests.java +++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink2_0/core/tests/internal/context/java/EclipseLink2_0JavaElementCollectionMappingTests.java @@ -309,6 +309,31 @@ public class EclipseLink2_0JavaElementCollectionMappingTests 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 EclipseLink2_0JavaElementCollectionMappingTests(String name) { super(name); } @@ -2027,4 +2052,13 @@ public class EclipseLink2_0JavaElementCollectionMappingTests 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()); + } } |