Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkmoore2010-02-05 19:16:32 +0000
committerkmoore2010-02-05 19:16:32 +0000
commit07ece31a475d1526dff6847bae066517d96506f1 (patch)
tree19482051d460c9792b469dfbe2e0466a02d2ffe6 /jpa/tests/org.eclipse.jpt.core.tests
parentc3cc25f1a698d8043e2561b8dfd16a859ffea734 (diff)
downloadwebtools.dali-07ece31a475d1526dff6847bae066517d96506f1.tar.gz
webtools.dali-07ece31a475d1526dff6847bae066517d96506f1.tar.xz
webtools.dali-07ece31a475d1526dff6847bae066517d96506f1.zip
301892 - NPE updating association overrides
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/GenericJavaEntity2_0Tests.java38
-rw-r--r--jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmEntity2_0Tests.java38
2 files changed, 74 insertions, 2 deletions
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaEntity2_0Tests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaEntity2_0Tests.java
index 897d106c2a..328ab38b1a 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaEntity2_0Tests.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/java/GenericJavaEntity2_0Tests.java
@@ -21,6 +21,7 @@ import org.eclipse.jpt.core.context.BasicMapping;
import org.eclipse.jpt.core.context.EmbeddedMapping;
import org.eclipse.jpt.core.context.Entity;
import org.eclipse.jpt.core.context.InheritanceType;
+import org.eclipse.jpt.core.context.JoinTable;
import org.eclipse.jpt.core.context.MappedSuperclass;
import org.eclipse.jpt.core.context.PersistentType;
import org.eclipse.jpt.core.context.java.JavaAssociationOverride;
@@ -28,6 +29,7 @@ import org.eclipse.jpt.core.context.java.JavaAttributeOverride;
import org.eclipse.jpt.core.context.java.JavaEntity;
import org.eclipse.jpt.core.context.java.JavaNamedQuery;
import org.eclipse.jpt.core.context.persistence.ClassRef;
+import org.eclipse.jpt.core.internal.jpa2.context.java.GenericJavaAssociationOverrideRelationshipReference2_0;
import org.eclipse.jpt.core.jpa2.MappingKeys2_0;
import org.eclipse.jpt.core.jpa2.context.Cacheable2_0;
import org.eclipse.jpt.core.jpa2.context.CacheableHolder2_0;
@@ -35,6 +37,7 @@ import org.eclipse.jpt.core.jpa2.context.LockModeType_2_0;
import org.eclipse.jpt.core.jpa2.context.NamedQuery2_0;
import org.eclipse.jpt.core.jpa2.context.persistence.PersistenceUnit2_0;
import org.eclipse.jpt.core.jpa2.context.persistence.options.SharedCacheMode;
+import org.eclipse.jpt.core.jpa2.resource.java.AssociationOverride2_0Annotation;
import org.eclipse.jpt.core.jpa2.resource.java.Cacheable2_0Annotation;
import org.eclipse.jpt.core.jpa2.resource.java.JPA2_0;
import org.eclipse.jpt.core.jpa2.resource.java.NamedQuery2_0Annotation;
@@ -284,6 +287,20 @@ public class GenericJavaEntity2_0Tests extends Generic2_0ContextModelTestCase
this.javaProject.createCompilationUnit(PACKAGE_NAME, "ZipCode.java", sourceWriter);
}
+ private ICompilationUnit createTestEntityWithAssociationOverride() throws Exception {
+ return this.createTestType(new DefaultAnnotationWriter() {
+ @Override
+ public Iterator<String> imports() {
+ return new ArrayIterator<String>(JPA.ENTITY, JPA.ID, JPA.ASSOCIATION_OVERRIDE, JPA.JOIN_TABLE);
+ }
+ @Override
+ public void appendTypeAnnotationTo(StringBuilder sb) {
+ sb.append("@Entity");
+ sb.append("@AssociationOverride(name=\"a\", joinTable=@JoinTable)");
+ }
+ });
+ }
+
private LockModeType_2_0 lockModeOf(NamedQuery2_0Annotation resourceQuery) {
return resourceQuery == null ? null : LockModeType_2_0.fromJavaResourceModel(resourceQuery.getLockMode());
@@ -1828,4 +1845,25 @@ public class GenericJavaEntity2_0Tests extends Generic2_0ContextModelTestCase
assertEquals(true, subCacheable.isDefaultCacheable());
assertEquals(false, cacheable.isDefaultCacheable());
}
+
+ //This is a test for bug 301892
+ public void testAssociationOverrideJoinTableUpdate() throws Exception {
+ createTestEntityWithAssociationOverride();
+ addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME);
+
+ JavaAssociationOverride associationOverride = getJavaEntity().getAssociationOverrideContainer().specifiedAssociationOverrides().next();
+ assertEquals("a", associationOverride.getName());
+
+ AssociationOverride2_0Annotation annotation = (AssociationOverride2_0Annotation) getJavaPersistentType().getResourcePersistentType().getAnnotation(JPA.ASSOCIATION_OVERRIDE);
+ annotation.getJoinTable().setName("FOO");
+ annotation.getJoinTable().addInverseJoinColumn(0).setName("BAR");
+
+ getJpaProject().synchronizeContextModel();
+
+ associationOverride = getJavaEntity().getAssociationOverrideContainer().specifiedAssociationOverrides().next();
+ assertEquals("a", associationOverride.getName());
+ JoinTable joinTable = ((GenericJavaAssociationOverrideRelationshipReference2_0) associationOverride.getRelationshipReference()).getJoinTableJoiningStrategy().getJoinTable();
+ assertEquals("FOO", joinTable.getSpecifiedName());
+ assertEquals("BAR", joinTable.inverseJoinColumns().next().getName());
+ }
}
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmEntity2_0Tests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmEntity2_0Tests.java
index d4b061b400..b230f7edb5 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmEntity2_0Tests.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jpa2/context/orm/GenericOrmEntity2_0Tests.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2010 Oracle. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0, which accompanies this distribution
* and is available at http://www.eclipse.org/legal/epl-v10.html.
@@ -21,12 +21,14 @@ import org.eclipse.jpt.core.context.BasicMapping;
import org.eclipse.jpt.core.context.EmbeddedMapping;
import org.eclipse.jpt.core.context.Entity;
import org.eclipse.jpt.core.context.InheritanceType;
+import org.eclipse.jpt.core.context.JoinTable;
import org.eclipse.jpt.core.context.orm.OrmAssociationOverride;
import org.eclipse.jpt.core.context.orm.OrmAttributeOverride;
import org.eclipse.jpt.core.context.orm.OrmEntity;
import org.eclipse.jpt.core.context.orm.OrmMappedSuperclass;
import org.eclipse.jpt.core.context.orm.OrmNamedQuery;
import org.eclipse.jpt.core.context.orm.OrmPersistentType;
+import org.eclipse.jpt.core.internal.jpa2.context.orm.GenericOrmAssociationOverrideRelationshipReference2_0;
import org.eclipse.jpt.core.jpa2.context.Cacheable2_0;
import org.eclipse.jpt.core.jpa2.context.CacheableHolder2_0;
import org.eclipse.jpt.core.jpa2.context.LockModeType_2_0;
@@ -37,7 +39,10 @@ import org.eclipse.jpt.core.resource.java.JPA;
import org.eclipse.jpt.core.resource.orm.OrmFactory;
import org.eclipse.jpt.core.resource.orm.XmlAssociationOverride;
import org.eclipse.jpt.core.resource.orm.XmlEntity;
+import org.eclipse.jpt.core.resource.orm.XmlJoinColumn;
+import org.eclipse.jpt.core.resource.orm.XmlJoinTable;
import org.eclipse.jpt.core.resource.orm.XmlNamedQuery;
+import org.eclipse.jpt.core.resource.orm.v2_0.XmlAssociationOverride_2_0;
import org.eclipse.jpt.core.tests.internal.jpa2.context.Generic2_0ContextModelTestCase;
import org.eclipse.jpt.core.tests.internal.projects.TestJavaProject.SourceWriter;
import org.eclipse.jpt.utility.internal.iterators.ArrayIterator;
@@ -273,7 +278,6 @@ public class GenericOrmEntity2_0Tests extends Generic2_0ContextModelTestCase
};
this.javaProject.createCompilationUnit(PACKAGE_NAME, "ZipCode.java", sourceWriter);
}
-
private LockModeType_2_0 lockModeOf(XmlNamedQuery resourceQuery) {
return resourceQuery == null ? null : LockModeType_2_0.fromOrmResourceModel(resourceQuery.getLockMode());
@@ -1745,4 +1749,34 @@ public class GenericOrmEntity2_0Tests extends Generic2_0ContextModelTestCase
assertEquals(true, subCacheable.isDefaultCacheable());
assertEquals(true, cacheable.isDefaultCacheable());
}
+
+ //This is a test for bug 301892
+ public void testAssociationOverrideJoinTableUpdate() throws Exception {
+ createTestEntity();
+
+ OrmPersistentType ormPersistentType = getEntityMappings().addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME);
+ OrmEntity entity = (OrmEntity) ormPersistentType.getMapping();
+
+ XmlEntity resourceEntity = getXmlEntityMappings().getEntities().get(0);
+
+ XmlAssociationOverride_2_0 resourceAssociationOverride = OrmFactory.eINSTANCE.createXmlAssociationOverride();
+ resourceEntity.getAssociationOverrides().add((XmlAssociationOverride) resourceAssociationOverride);
+ ((XmlAssociationOverride) resourceAssociationOverride).setName("a");
+
+ OrmAssociationOverride associationOverride = entity.getAssociationOverrideContainer().specifiedAssociationOverrides().next();
+ assertEquals("a", associationOverride.getName());
+
+ XmlJoinTable resourceJoinTable = OrmFactory.eINSTANCE.createXmlJoinTable();
+ resourceAssociationOverride.setJoinTable(resourceJoinTable);
+ resourceJoinTable.setName("FOO");
+ XmlJoinColumn resourceJoinColumn = OrmFactory.eINSTANCE.createXmlJoinColumn();
+ resourceJoinTable.getInverseJoinColumns().add(resourceJoinColumn);
+ resourceJoinColumn.setName("BAR");
+
+ associationOverride = entity.getAssociationOverrideContainer().specifiedAssociationOverrides().next();
+ assertEquals("a", associationOverride.getName());
+ JoinTable joinTable = ((GenericOrmAssociationOverrideRelationshipReference2_0) associationOverride.getRelationshipReference()).getJoinTableJoiningStrategy().getJoinTable();
+ assertEquals("FOO", joinTable.getSpecifiedName());
+ assertEquals("BAR", joinTable.inverseJoinColumns().next().getName());
+ }
}

Back to the top