diff options
author | kmoore | 2008-05-13 15:35:38 +0000 |
---|---|---|
committer | kmoore | 2008-05-13 15:35:38 +0000 |
commit | 33d6875bafd5faece43c279e002fd1b0d266cdea (patch) | |
tree | 3ac6c1ca02e7568ef3cbb4ad46419d9c5f78ec0e | |
parent | 3c7391836e2fbeb494670f6648b418280c3cb265 (diff) | |
download | webtools.dali-33d6875bafd5faece43c279e002fd1b0d266cdea.tar.gz webtools.dali-33d6875bafd5faece43c279e002fd1b0d266cdea.tar.xz webtools.dali-33d6875bafd5faece43c279e002fd1b0d266cdea.zip |
231228 - TableGenerator in java and orm.xml does not have a default schema or catalog
4 files changed, 85 insertions, 1 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaTableGenerator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaTableGenerator.java index d073098234..b6c5c2f981 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaTableGenerator.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaTableGenerator.java @@ -121,6 +121,12 @@ public class GenericJavaTableGenerator extends AbstractJavaGenerator return this.defaultCatalog; } + protected void setDefaultCatalog(String newDefaultCatalog) { + String oldDefaultCatalog = this.defaultCatalog; + this.defaultCatalog = newDefaultCatalog; + firePropertyChanged(DEFAULT_CATALOG_PROPERTY, oldDefaultCatalog, newDefaultCatalog); + } + public String getSchema() { return (this.getSpecifiedSchema() == null) ? getDefaultSchema() : this.getSpecifiedSchema(); } @@ -306,7 +312,9 @@ public class GenericJavaTableGenerator extends AbstractJavaGenerator super.update(tableGenerator); this.setSpecifiedTable_(this.specifiedTable(tableGenerator)); this.setSpecifiedCatalog_(this.specifiedCatalog(tableGenerator)); + this.setDefaultCatalog(this.defaultCatalog()); this.setSpecifiedSchema_(this.specifiedSchema(tableGenerator)); + this.setDefaultSchema(this.defaultSchema()); this.setSpecifiedPkColumnName_(this.specifiedPkColumnName(tableGenerator)); this.setSpecifiedValueColumnName_(this.specifiedValueColumnName(tableGenerator)); this.setSpecifiedPkColumnValue_(this.specifiedPkColumnValue(tableGenerator)); @@ -362,6 +370,20 @@ public class GenericJavaTableGenerator extends AbstractJavaGenerator return tableGenerator.getPkColumnValue(); } + protected String defaultSchema() { + if (getEntityMappings() != null) { + return getEntityMappings().getSchema(); + } + return getPersistenceUnit().getDefaultSchema(); + } + + protected String defaultCatalog() { + if (getEntityMappings() != null) { + return getEntityMappings().getCatalog(); + } + return getPersistenceUnit().getDefaultCatalog(); + } + public Table getDbTable() { Schema schema = this.getDbSchema(); return (schema == null) ? null : schema.tableNamed(this.getTable()); diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmTableGenerator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmTableGenerator.java index 92cf9cca58..97681f5a9d 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmTableGenerator.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmTableGenerator.java @@ -111,6 +111,12 @@ public class GenericOrmTableGenerator extends AbstractOrmGenerator<XmlTableGener public String getDefaultCatalog() { return this.defaultCatalog; } + + protected void setDefaultCatalog(String newDefaultCatalog) { + String oldDefaultCatalog = this.defaultCatalog; + this.defaultCatalog = newDefaultCatalog; + firePropertyChanged(TableGenerator.DEFAULT_CATALOG_PROPERTY, oldDefaultCatalog, newDefaultCatalog); + } public String getSchema() { return (this.getSpecifiedSchema() == null) ? getDefaultSchema() : this.getSpecifiedSchema(); @@ -140,7 +146,7 @@ public class GenericOrmTableGenerator extends AbstractOrmGenerator<XmlTableGener protected void setDefaultSchema(String newDefaultSchema) { String oldDefaultSchema = this.defaultSchema; this.defaultSchema = newDefaultSchema; - firePropertyChanged(this.defaultSchema, oldDefaultSchema, newDefaultSchema); + firePropertyChanged(TableGenerator.DEFAULT_SCHEMA_PROPERTY, oldDefaultSchema, newDefaultSchema); } public String getPkColumnName() { @@ -328,7 +334,9 @@ public class GenericOrmTableGenerator extends AbstractOrmGenerator<XmlTableGener super.update(tableGenerator); this.setSpecifiedTable_(this.specifiedTable(tableGenerator)); this.setSpecifiedCatalog_(this.specifiedCatalog(tableGenerator)); + this.setDefaultCatalog(this.defaultCatalog()); this.setSpecifiedSchema_(this.specifiedSchema(tableGenerator)); + this.setDefaultSchema(this.defaultSchema()); this.setSpecifiedPkColumnName_(this.specifiedPkColumnName(tableGenerator)); this.setSpecifiedValueColumnName_(this.specifiedValueColumnName(tableGenerator)); this.setSpecifiedPkColumnValue_(this.specifiedPkColumnValue(tableGenerator)); @@ -360,6 +368,14 @@ public class GenericOrmTableGenerator extends AbstractOrmGenerator<XmlTableGener return tableGenerator.getPkColumnValue(); } + protected String defaultSchema() { + return getEntityMappings().getSchema(); + } + + protected String defaultCatalog() { + return getEntityMappings().getCatalog(); + } + protected void updateUniqueConstraints(XmlTableGenerator tableGenerator) { ListIterator<OrmUniqueConstraint> uniqueConstraints = uniqueConstraints(); ListIterator<XmlUniqueConstraint> resourceUniqueConstraints; diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/java/JavaTableGeneratorTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/java/JavaTableGeneratorTests.java index 6b94bcbf26..84f2b63114 100644 --- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/java/JavaTableGeneratorTests.java +++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/java/JavaTableGeneratorTests.java @@ -13,16 +13,22 @@ package org.eclipse.jpt.core.tests.internal.context.java; import java.util.Iterator; import java.util.ListIterator; import org.eclipse.jdt.core.IType; +import org.eclipse.jpt.core.JptCorePlugin; +import org.eclipse.jpt.core.MappingKeys; import org.eclipse.jpt.core.context.Generator; import org.eclipse.jpt.core.context.IdMapping; import org.eclipse.jpt.core.context.TableGenerator; import org.eclipse.jpt.core.context.UniqueConstraint; import org.eclipse.jpt.core.context.java.JavaUniqueConstraint; +import org.eclipse.jpt.core.context.orm.OrmEntity; +import org.eclipse.jpt.core.context.orm.OrmPersistentType; import org.eclipse.jpt.core.resource.java.JPA; import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType; import org.eclipse.jpt.core.resource.java.TableGeneratorAnnotation; import org.eclipse.jpt.core.resource.java.UniqueConstraintAnnotation; +import org.eclipse.jpt.core.resource.persistence.PersistenceFactory; +import org.eclipse.jpt.core.resource.persistence.XmlMappingFileRef; import org.eclipse.jpt.core.tests.internal.context.ContextModelTestCase; import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; @@ -212,6 +218,34 @@ public class JavaTableGeneratorTests extends ContextModelTestCase assertEquals("mySchema", idMapping.getTableGenerator().getSpecifiedSchema()); } + public void testUpdateDefaultSchemaFromPersistenceUnitDefaults() throws Exception { + XmlMappingFileRef mappingFileRef = PersistenceFactory.eINSTANCE.createXmlMappingFileRef(); + mappingFileRef.setFileName(JptCorePlugin.DEFAULT_ORM_XML_FILE_PATH); + xmlPersistenceUnit().getMappingFiles().add(mappingFileRef); + + createTestEntityWithTableGenerator(); + + OrmPersistentType ormPersistentType = entityMappings().addOrmPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME); + OrmEntity ormEntity = (OrmEntity) ormPersistentType.getMapping(); + IdMapping idMapping = (IdMapping) ormPersistentType.getJavaPersistentType().getAttributeNamed("id").getMapping(); + + assertNull(idMapping.getTableGenerator().getDefaultSchema()); + + ormEntity.getEntityMappings().getPersistenceUnitMetadata().getPersistenceUnitDefaults().setSpecifiedSchema("FOO"); + assertEquals("FOO", idMapping.getTableGenerator().getDefaultSchema()); + + ormEntity.getEntityMappings().setSpecifiedSchema("BAR"); + assertEquals("BAR", idMapping.getTableGenerator().getDefaultSchema()); + + ormEntity.getTable().setSpecifiedSchema("XML_SCHEMA"); + assertEquals("BAR", idMapping.getTableGenerator().getDefaultSchema()); + + entityMappings().removeOrmPersistentType(0); + addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); + //default schema taken from persistence-unit-defaults not entity-mappings since the entity is not in an orm.xml file + assertEquals("FOO", ((IdMapping) javaPersistentType().getAttributeNamed("id").getMapping()).getTableGenerator().getDefaultSchema()); + } + public void testSetSpecifiedSchema() throws Exception { createTestEntityWithTableGenerator(); addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME); diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/orm/OrmTableGeneratorTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/orm/OrmTableGeneratorTests.java index 9603ba7da0..af290df2df 100644 --- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/orm/OrmTableGeneratorTests.java +++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/orm/OrmTableGeneratorTests.java @@ -262,6 +262,18 @@ public class OrmTableGeneratorTests extends ContextModelTestCase assertNull(tableGenerator.getSpecifiedSchema()); } + public void testUpdateDefaultSchemaFromPersistenceUnitDefaults() throws Exception { + TableGenerator tableGenerator = entityMappings().addTableGenerator(0); + + assertNull(tableGenerator.getDefaultSchema()); + + tableGenerator.getEntityMappings().getPersistenceUnitMetadata().getPersistenceUnitDefaults().setSpecifiedSchema("FOO"); + assertEquals("FOO", tableGenerator.getDefaultSchema()); + + tableGenerator.getEntityMappings().setSpecifiedSchema("BAR"); + assertEquals("BAR", tableGenerator.getDefaultSchema()); + } + public void testUpdateSpecifiedCatalog() throws Exception { TableGenerator tableGenerator = entityMappings().addTableGenerator(0); XmlTableGenerator tableGeneratorResource = ormResource().getEntityMappings().getTableGenerators().get(0); |