diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index bcbd440d81..799bf7a56d 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -13,6 +13,7 @@ Date: ---------------------------------- Changes/New Features: +CAY-2241 cdbimport: set ObjRelationship delete rule from FK metadata CAY-2334 cgen: option to force run from maven/gradle CAY-2372 Extract new modules from cayenne-server CAY-2377 Cleanup deprecated code. diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/context/EntityMergeSupport.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/context/EntityMergeSupport.java index 0b405d1e9c..d06cbdbfee 100644 --- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/context/EntityMergeSupport.java +++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/context/EntityMergeSupport.java @@ -23,6 +23,7 @@ import org.apache.cayenne.dbsync.filter.NameFilter; import org.apache.cayenne.dbsync.naming.NameBuilder; import org.apache.cayenne.dbsync.naming.ObjectNameGenerator; +import org.apache.cayenne.dbsync.reverse.dbload.DbRelationshipDetected; import org.apache.cayenne.map.DataMap; import org.apache.cayenne.map.DbAttribute; import org.apache.cayenne.map.DbEntity; @@ -194,6 +195,9 @@ private boolean addMissingRelationships(ObjEntity entity) { private boolean createObjRelationship(ObjEntity entity, DbRelationship dr, String targetEntityName) { ObjRelationship or = new ObjRelationship(); + if (dr instanceof DbRelationshipDetected) { + or.setDeleteRule(((DbRelationshipDetected) dr).getDeleteRule()); + } or.setName(NameBuilder.builder(or, entity) .baseName(nameGenerator.relationshipName(dr)) .name()); diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/ManyToManyCandidateEntity.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/ManyToManyCandidateEntity.java index 404cd419b1..aa0239bbb4 100644 --- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/ManyToManyCandidateEntity.java +++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/ManyToManyCandidateEntity.java @@ -21,6 +21,7 @@ import org.apache.cayenne.dbsync.naming.NameBuilder; import org.apache.cayenne.dbsync.naming.ObjectNameGenerator; +import org.apache.cayenne.dbsync.reverse.dbload.DbRelationshipDetected; import org.apache.cayenne.map.DbRelationship; import org.apache.cayenne.map.ObjEntity; import org.apache.cayenne.map.ObjRelationship; @@ -93,9 +94,9 @@ private boolean isManyToMany() { } private void addFlattenedRelationship(ObjectNameGenerator nameGenerator, ObjEntity srcEntity, ObjEntity dstEntity, - DbRelationship rel1, DbRelationship rel2) { + DbRelationship reverseRelationship, DbRelationship dbRelationship) { - if (rel1.getSourceAttributes().isEmpty() && rel2.getTargetAttributes().isEmpty()) { + if (reverseRelationship.getSourceAttributes().isEmpty() && dbRelationship.getTargetAttributes().isEmpty()) { LOG.warn("Wrong call ManyToManyCandidateEntity.addFlattenedRelationship(... , " + srcEntity.getName() + ", " + dstEntity.getName() + ", ...)"); @@ -105,14 +106,17 @@ private void addFlattenedRelationship(ObjectNameGenerator nameGenerator, ObjEnti ObjRelationship newRelationship = new ObjRelationship(); newRelationship.setName(NameBuilder .builder(newRelationship, srcEntity) - .baseName(nameGenerator.relationshipName(rel1, rel2)) + .baseName(nameGenerator.relationshipName(reverseRelationship, dbRelationship)) .name()); newRelationship.setSourceEntity(srcEntity); newRelationship.setTargetEntityName(dstEntity); + if (dbRelationship instanceof DbRelationshipDetected) { + newRelationship.setDeleteRule(((DbRelationshipDetected) dbRelationship).getDeleteRule()); + } - newRelationship.addDbRelationship(rel1); - newRelationship.addDbRelationship(rel2); + newRelationship.addDbRelationship(reverseRelationship); + newRelationship.addDbRelationship(dbRelationship); srcEntity.addRelationship(newRelationship); } diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/DbRelationshipDetected.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/DbRelationshipDetected.java index f827bde1dd..992c6ff247 100644 --- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/DbRelationshipDetected.java +++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/DbRelationshipDetected.java @@ -29,6 +29,7 @@ public class DbRelationshipDetected extends DbRelationship { private String fkName; + private int deleteRule; public DbRelationshipDetected(String uniqueRelName) { super(uniqueRelName); @@ -51,4 +52,11 @@ void setFkName(String fkName) { this.fkName = fkName; } + public int getDeleteRule() { + return deleteRule; + } + + public void setDeleteRule(int deleteRule) { + this.deleteRule = deleteRule; + } } diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ExportedKey.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ExportedKey.java index 6d5f25c4ed..20c4f325c6 100644 --- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ExportedKey.java +++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ExportedKey.java @@ -19,10 +19,12 @@ package org.apache.cayenne.dbsync.reverse.dbload; +import org.apache.cayenne.map.DeleteRule; import org.apache.cayenne.util.EqualsBuilder; import org.apache.cayenne.util.HashCodeBuilder; import org.apache.cayenne.util.CompareToBuilder; +import java.sql.DatabaseMetaData; import java.sql.ResultSet; import java.sql.SQLException; @@ -36,6 +38,7 @@ public class ExportedKey implements Comparable { private final KeyData pk; private final KeyData fk; + private int deleteRule; private final short keySeq; /** @@ -46,6 +49,11 @@ public class ExportedKey implements Comparable { * DataBaseMetaData.getExportedKeys(...) */ ExportedKey(ResultSet rs) throws SQLException { + try { + deleteRule = translateDbRuleToCayenneRule(Integer.parseInt(rs.getString("DELETE_RULE"))); + } catch (Exception exception) { + deleteRule = DeleteRule.NO_ACTION; + } String pkCatalog = rs.getString("PKTABLE_CAT"); String pkSchema = rs.getString("PKTABLE_SCHEM"); String pkTable = rs.getString("PKTABLE_NAME"); @@ -63,6 +71,21 @@ public class ExportedKey implements Comparable { this.keySeq = rs.getShort("KEY_SEQ"); } + private int translateDbRuleToCayenneRule(int deleteRule) { + switch (deleteRule) { + case DatabaseMetaData.importedKeyCascade: + return DeleteRule.CASCADE; + case DatabaseMetaData.importedKeyRestrict: + return DeleteRule.DENY; + case DatabaseMetaData.importedKeySetNull: + return DeleteRule.NULLIFY; + case DatabaseMetaData.importedKeyNoAction: + case DatabaseMetaData.importedKeySetDefault: + default: + return DeleteRule.NO_ACTION; + } + } + public KeyData getPk() { return pk; } @@ -71,6 +94,10 @@ public KeyData getFk() { return fk; } + public int getDeleteRule() { + return deleteRule; + } + @Override public boolean equals(Object obj) { if (obj == null) { diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipLoader.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipLoader.java index d51db9d373..baf31ec131 100644 --- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipLoader.java +++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipLoader.java @@ -86,9 +86,10 @@ public void load(DatabaseMetaData metaData, DbLoadDataStore map) throws SQLExcep // forwardRelationship is a reference from table with primary key // it is what exactly we load from db - DbRelationship forwardRelationship = new DbRelationship(); + DbRelationshipDetected forwardRelationship = new DbRelationshipDetected(); forwardRelationship.setSourceEntity(pkEntity); forwardRelationship.setTargetEntityName(fkEntity); + forwardRelationship.setDeleteRule(key.getDeleteRule()); // TODO: dirty and non-transparent... using DbRelationshipDetected for the benefit of the merge package. // This info is available from joins.... @@ -97,6 +98,7 @@ public void load(DatabaseMetaData metaData, DbLoadDataStore map) throws SQLExcep reverseRelationship.setSourceEntity(fkEntity); reverseRelationship.setTargetEntityName(pkEntity); reverseRelationship.setToMany(false); + reverseRelationship.setDeleteRule(key.getDeleteRule()); createAndAppendJoins(exportedKeys, pkEntity, fkEntity, forwardRelationship, reverseRelationship); diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/EntityMergeSupportIT.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/EntityMergeSupportIT.java index 76c17317ac..f85eee5709 100644 --- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/EntityMergeSupportIT.java +++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/EntityMergeSupportIT.java @@ -101,7 +101,7 @@ public void testMerging() { assertNotNull(objEntity1.getRelationship("newTable2s")); assertNotNull(objEntity2.getRelationship("newTable")); - assertEquals(objEntity1.getRelationship("newTable2s").getDeleteRule(), DeleteRule.DEFAULT_DELETE_RULE_TO_MANY); + assertEquals(objEntity1.getRelationship("newTable2s").getDeleteRule(), DeleteRule.NO_ACTION); assertEquals(objEntity2.getRelationship("newTable").getDeleteRule(), DeleteRule.DEFAULT_DELETE_RULE_TO_ONE); map.removeObjEntity(objEntity2.getName()); diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbimport/DefaultDbImportActionTest.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbimport/DefaultDbImportActionTest.java index 364f770e17..cf04107ea1 100644 --- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbimport/DefaultDbImportActionTest.java +++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbimport/DefaultDbImportActionTest.java @@ -21,7 +21,6 @@ import org.apache.cayenne.CayenneRuntimeException; import org.apache.cayenne.configuration.DataChannelDescriptorLoader; import org.apache.cayenne.configuration.DataMapLoader; -import org.apache.cayenne.configuration.DataNodeDescriptor; import org.apache.cayenne.configuration.server.DataSourceFactory; import org.apache.cayenne.configuration.server.DbAdapterFactory; import org.apache.cayenne.dba.DbAdapter; @@ -49,7 +48,6 @@ import org.apache.cayenne.map.DbEntity; import org.apache.cayenne.project.FileProjectSaver; import org.apache.cayenne.project.Project; -import org.apache.cayenne.project.extension.ProjectExtension; import org.apache.cayenne.resource.Resource; import org.apache.cayenne.resource.URLResource; import org.apache.cayenne.util.Util; @@ -180,7 +178,7 @@ public DataMap load() throws SQLException { final boolean[] haveWeTriedToSave = {false}; DefaultDbImportAction action = buildDbImportAction( - new FileProjectSaver(Collections.emptyList()) { + new FileProjectSaver(Collections.emptyList()) { @Override public void save(Project project) { haveWeTriedToSave[0] = true; @@ -292,14 +290,14 @@ private DefaultDbImportAction buildDbImportAction(FileProjectSaver projectSaver, DbAdapter dbAdapter = mock(DbAdapter.class); DbAdapterFactory adapterFactory = mock(DbAdapterFactory.class); - when(adapterFactory.createAdapter((DataNodeDescriptor)any(), (DataSource)any())).thenReturn(dbAdapter); + when(adapterFactory.createAdapter(any(), any())).thenReturn(dbAdapter); DataSourceFactory dataSourceFactory = mock(DataSourceFactory.class); DataSource mock = mock(DataSource.class); - when(dataSourceFactory.getDataSource((DataNodeDescriptor)any())).thenReturn(mock); + when(dataSourceFactory.getDataSource(any())).thenReturn(mock); MergerTokenFactoryProvider mergerTokenFactoryProvider = mock(MergerTokenFactoryProvider.class); - when(mergerTokenFactoryProvider.get((DbAdapter)any())).thenReturn(new DefaultMergerTokenFactory()); + when(mergerTokenFactoryProvider.get(any())).thenReturn(new DefaultMergerTokenFactory()); DataChannelDescriptorLoader dataChannelDescriptorLoader = mock(DataChannelDescriptorLoader.class); diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/ExportedKeyTest.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/ExportedKeyTest.java index 4bb41f1ff4..16a5227bf7 100644 --- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/ExportedKeyTest.java +++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/ExportedKeyTest.java @@ -1,21 +1,21 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at +/***************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + ****************************************************************/ package org.apache.cayenne.dbsync.reverse.dbload; @@ -61,6 +61,7 @@ public void testEqualsExportedKey() throws SQLException { when(rs1.getString("FK_NAME")).thenReturn("FKName"); when(rs1.getShort("KEY_SEQ")).thenReturn((short) 1); + when(rs1.getString("DELETE_RULE")).thenReturn("3"); ExportedKey keyData1 = new ExportedKey(rs1); @@ -78,6 +79,7 @@ public void testEqualsExportedKey() throws SQLException { when(rs2.getString("FK_NAME")).thenReturn("FKName"); when(rs2.getShort("KEY_SEQ")).thenReturn((short)1); + when(rs2.getString("DELETE_RULE")).thenReturn("3"); ExportedKey keyData2 = new ExportedKey(rs2); diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipsLoaderIT.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipsLoaderIT.java index e983f09520..a3d614e608 100644 --- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipsLoaderIT.java +++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipsLoaderIT.java @@ -24,14 +24,39 @@ import org.apache.cayenne.dbsync.naming.DefaultObjectNameGenerator; import org.apache.cayenne.map.DbRelationship; +import org.apache.cayenne.map.DeleteRule; +import org.junit.Ignore; import org.junit.Test; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; public class RelationshipsLoaderIT extends BaseLoaderIT { + // This test ignored because test db is being created with default delete_rules + // and on every databases have different default delete_rules + @Ignore + @Test + public void testRelationshipDeleteRuleLoad() throws Exception { + DatabaseMetaData metaData = connection.getMetaData(); + DbLoaderDelegate delegate = new DefaultDbLoaderDelegate(); + EntityLoader entityLoader = new EntityLoader(adapter, EMPTY_CONFIG, delegate); + AttributeLoader attributeLoader = new AttributeLoader(adapter, EMPTY_CONFIG, delegate); + ExportedKeyLoader exportedKeyLoader = new ExportedKeyLoader(EMPTY_CONFIG, delegate); + + entityLoader.load(metaData, store); + attributeLoader.load(metaData, store); + exportedKeyLoader.load(metaData, store); + RelationshipLoader relationshipLoader = new RelationshipLoader(EMPTY_CONFIG, delegate, new DefaultObjectNameGenerator()); + relationshipLoader.load(metaData, store); + + DbRelationship relationship = getDbEntity("DELETE_RULE").getRelationship("deleteCascades"); + assertEquals(DbRelationshipDetected.class, relationship.getClass()); + assertEquals(DeleteRule.CASCADE, ((DbRelationshipDetected) relationship).getDeleteRule()); + } + @Test public void testRelationshipLoad() throws Exception { boolean supportsFK = accessStackAdapter.supportsFKConstraints(); diff --git a/cayenne-server/src/main/java/org/apache/cayenne/util/DeleteRuleUpdater.java b/cayenne-server/src/main/java/org/apache/cayenne/util/DeleteRuleUpdater.java index 6725c50082..35654f5da2 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/util/DeleteRuleUpdater.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/util/DeleteRuleUpdater.java @@ -58,16 +58,17 @@ public static void updateObjEntity(ObjEntity e) { /** * Updates delete rules for specified relationship */ - public static void updateObjRelationship(ObjRelationship rel) { - rel.setDeleteRule(rel.isToMany() ? DeleteRule.DEFAULT_DELETE_RULE_TO_MANY : - DeleteRule.DEFAULT_DELETE_RULE_TO_ONE); + public static void updateObjRelationship(ObjRelationship relationship) { + if (!relationship.isToMany()) { + relationship.setDeleteRule(DeleteRule.DEFAULT_DELETE_RULE_TO_ONE); + } } public void objAttributeAdded(ObjAttribute attr) { } - public void objRelationshipAdded(ObjRelationship rel) { - updateObjRelationship(rel); + public void objRelationshipAdded(ObjRelationship relationship) { + updateObjRelationship(relationship); } /** diff --git a/cayenne-server/src/main/java/org/apache/cayenne/util/EntityMergeListener.java b/cayenne-server/src/main/java/org/apache/cayenne/util/EntityMergeListener.java index 57232cf66a..77221140ce 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/util/EntityMergeListener.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/util/EntityMergeListener.java @@ -30,10 +30,10 @@ public interface EntityMergeListener { /** * Invoked when a missing attribute in ObjEntity is completed from DbEntity */ - public void objAttributeAdded(ObjAttribute attr); + void objAttributeAdded(ObjAttribute attr); /** * Invoked when a missing relationship in ObjEntity is completed from DbEntity */ - public void objRelationshipAdded(ObjRelationship rel); + void objRelationshipAdded(ObjRelationship relationship); } diff --git a/maven-plugins/cayenne-maven-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java b/maven-plugins/cayenne-maven-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java index 3db8143942..b823057496 100644 --- a/maven-plugins/cayenne-maven-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java +++ b/maven-plugins/cayenne-maven-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java @@ -281,6 +281,11 @@ public void testAddedFlattenedRelationship() throws Exception { test("testAddedFlattenedRelationship"); } + @Test + public void testImportRelationshipWithDeleteRule() throws Exception { + test("testImportRelationshipWithDeleteRule"); + } + @Test public void testFilteringConfig() throws Exception { DbImporterMojo cdbImport = getCdbImport("config/pom-01.xml"); diff --git a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testComplexChangeOrder.map.xml b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testComplexChangeOrder.map.xml index e4cac0ac57..9e8b34ca65 100644 --- a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testComplexChangeOrder.map.xml +++ b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testComplexChangeOrder.map.xml @@ -59,6 +59,6 @@ - + diff --git a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testComplexChangeOrder.map.xml-result b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testComplexChangeOrder.map.xml-result index 79cb6de71a..8aac69efeb 100644 --- a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testComplexChangeOrder.map.xml-result +++ b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testComplexChangeOrder.map.xml-result @@ -47,7 +47,7 @@ - + diff --git a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship.map.xml b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship.map.xml index 1a3598757d..b49d8b810f 100644 --- a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship.map.xml +++ b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship.map.xml @@ -128,15 +128,15 @@ - + - + - + - + diff --git a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship.map.xml-result b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship.map.xml-result index b65be2b5ad..040b2484ad 100644 --- a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship.map.xml-result +++ b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testExcludeRelationship.map.xml-result @@ -106,7 +106,7 @@ - + @@ -115,7 +115,7 @@ - + @@ -124,7 +124,7 @@ - + @@ -133,6 +133,6 @@ - + diff --git a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testFkAttributeRename.map.xml b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testFkAttributeRename.map.xml index 320183219e..6d8d33600b 100644 --- a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testFkAttributeRename.map.xml +++ b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testFkAttributeRename.map.xml @@ -40,5 +40,5 @@ - + \ No newline at end of file diff --git a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testFkAttributeRename.map.xml-result b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testFkAttributeRename.map.xml-result index 1dc92c1b8b..1d9268b354 100644 --- a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testFkAttributeRename.map.xml-result +++ b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testFkAttributeRename.map.xml-result @@ -41,5 +41,5 @@ - + \ No newline at end of file diff --git a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testImportNewRelationship.map.xml-result b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testImportNewRelationship.map.xml-result index 23e2f6fc36..66f675c298 100644 --- a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testImportNewRelationship.map.xml-result +++ b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testImportNewRelationship.map.xml-result @@ -43,6 +43,6 @@ - + \ No newline at end of file diff --git a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testImportRelationshipWithDeleteRule-pom.xml b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testImportRelationshipWithDeleteRule-pom.xml new file mode 100644 index 0000000000..e448307b4a --- /dev/null +++ b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testImportRelationshipWithDeleteRule-pom.xml @@ -0,0 +1,44 @@ + + + + + DbImporterMojo Test1 + + + + + cayenne-maven-plugin + + target/test-classes/org/apache/cayenne/tools/dbimport/testImportRelationshipWithDeleteRule.map.xml + + org.apache.derby.jdbc.EmbeddedDriver + jdbc:derby:memory:DbImporterMojoTest;create=true + + + SCHEMA_01 + + + + + + + \ No newline at end of file diff --git a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testImportRelationshipWithDeleteRule.map.xml b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testImportRelationshipWithDeleteRule.map.xml new file mode 100644 index 0000000000..5879a4fb11 --- /dev/null +++ b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testImportRelationshipWithDeleteRule.map.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testImportRelationshipWithDeleteRule.map.xml-result b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testImportRelationshipWithDeleteRule.map.xml-result new file mode 100644 index 0000000000..aed235ad0c --- /dev/null +++ b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testImportRelationshipWithDeleteRule.map.xml-result @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testImportRelationshipWithDeleteRule.sql b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testImportRelationshipWithDeleteRule.sql new file mode 100644 index 0000000000..7e92ba125f --- /dev/null +++ b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testImportRelationshipWithDeleteRule.sql @@ -0,0 +1,33 @@ +-- Licensed to the Apache Software Foundation (ASF) under one +-- or more contributor license agreements. See the NOTICE file +-- distributed with this work for additional information +-- regarding copyright ownership. The ASF licenses this file +-- to you under the Apache License, Version 2.0 (the +-- "License"); you may not use this file except in compliance +-- with the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, +-- software distributed under the License is distributed on an +-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +-- KIND, either express or implied. See the License for the +-- specific language governing permissions and limitations +-- under the License. + +CREATE SCHEMA schema_01; +SET SCHEMA schema_01; + +CREATE TABLE schema_01.table1 ( + id INTEGER NOT NULL, + t1_name VARCHAR (45), + PRIMARY KEY (id) +); + +CREATE TABLE schema_01.table2 ( + id INTEGER NOT NULL, + t2_name VARCHAR (45), + table1_id INTEGER NOT NULL, + PRIMARY KEY (id), + CONSTRAINT fk_table1 FOREIGN KEY (table1_id) REFERENCES schema_01.table1 (id) ON DELETE CASCADE +); \ No newline at end of file diff --git a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testInheritance.map.xml-result b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testInheritance.map.xml-result index a2a336179a..c23d582fc5 100644 --- a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testInheritance.map.xml-result +++ b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testInheritance.map.xml-result @@ -45,7 +45,7 @@ - + diff --git a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testOneToOne.map.xml-result b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testOneToOne.map.xml-result index beb1352911..7e5583c53d 100644 --- a/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testOneToOne.map.xml-result +++ b/maven-plugins/cayenne-maven-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testOneToOne.map.xml-result @@ -52,7 +52,7 @@ - + diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/DbEntitySyncUndoableEdit.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/DbEntitySyncUndoableEdit.java index 9d8d2589fc..96e6e2ac3b 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/DbEntitySyncUndoableEdit.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/DbEntitySyncUndoableEdit.java @@ -59,8 +59,8 @@ public EntitySyncUndoableListener(ObjEntity entity) { this.entity = entity; } - public void objRelationshipAdded(ObjRelationship rel) { - addEdit(new CreateRelationshipUndoableEdit(entity, new ObjRelationship[] {rel})); + public void objRelationshipAdded(ObjRelationship relationship) { + addEdit(new CreateRelationshipUndoableEdit(entity, new ObjRelationship[] {relationship})); } public void objAttributeAdded(ObjAttribute attr) {