diff options
author | kmoore | 2010-02-05 19:16:32 +0000 |
---|---|---|
committer | kmoore | 2010-02-05 19:16:32 +0000 |
commit | 07ece31a475d1526dff6847bae066517d96506f1 (patch) | |
tree | 19482051d460c9792b469dfbe2e0466a02d2ffe6 /jpa/tests/org.eclipse.jpt.core.tests | |
parent | c3cc25f1a698d8043e2561b8dfd16a859ffea734 (diff) | |
download | webtools.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')
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()); + } } |