You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2016/09/29 17:38:49 UTC

[03/15] cayenne git commit: CAY-2116 Split schema synchronization code in a separate module

http://git-wip-us.apache.org/repos/asf/cayenne/blob/2f7b1d53/cayenne-server/src/test/java/org/apache/cayenne/dbimport/FiltersConfigBuilderTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/dbimport/FiltersConfigBuilderTest.java b/cayenne-server/src/test/java/org/apache/cayenne/dbimport/FiltersConfigBuilderTest.java
deleted file mode 100644
index 9a94618..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/dbimport/FiltersConfigBuilderTest.java
+++ /dev/null
@@ -1,382 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.cayenne.dbimport;
-
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-public class FiltersConfigBuilderTest {
-
-    @Test
-    public void testCompact_01() {
-        ReverseEngineering engineering = new ReverseEngineering();
-        engineering.addIncludeTable(new IncludeTable("table1"));
-        engineering.addIncludeTable(new IncludeTable("table2"));
-        engineering.addIncludeTable(new IncludeTable("table3"));
-
-        engineering.addIncludeColumn(new IncludeColumn("includeColumn"));
-
-        FiltersConfigBuilder builder = new FiltersConfigBuilder(engineering);
-        builder.compact();
-        assertEquals(
-                "ReverseEngineering: \n" +
-                "  Catalog: null\n" +
-                "    Schema: null\n" +
-                "      IncludeTable: table1\n" +
-                "        IncludeColumn: includeColumn\n" +
-                "      IncludeTable: table2\n" +
-                "        IncludeColumn: includeColumn\n" +
-                "      IncludeTable: table3\n" +
-                "        IncludeColumn: includeColumn\n", engineering.toString());
-    }
-
-    @Test
-    public void testCompact_02() {
-        ReverseEngineering engineering = new ReverseEngineering();
-        engineering.addCatalog(new Catalog("catalogName"));
-        engineering.addSchema(new Schema("schemaName01"));
-        engineering.addSchema(new Schema("schemaName02"));
-
-        engineering.addIncludeTable(new IncludeTable("table1"));
-        engineering.addExcludeTable(new ExcludeTable("table2"));
-
-        engineering.addIncludeColumn(new IncludeColumn("includeColumn"));
-
-        FiltersConfigBuilder builder = new FiltersConfigBuilder(engineering);
-        builder.compact();
-        assertEquals(
-                "ReverseEngineering: \n" +
-                "  Catalog: catalogName\n" +
-                "    Schema: schemaName01\n" +
-                "      IncludeTable: table1\n" +
-                "        IncludeColumn: includeColumn\n" +
-                "      ExcludeTable: table2\n" +
-                "    Schema: schemaName02\n" +
-                "      IncludeTable: table1\n" +
-                "        IncludeColumn: includeColumn\n" +
-                "      ExcludeTable: table2\n", engineering.toString());
-    }
-
-    @Test
-    public void testCompact_03() {
-        ReverseEngineering engineering = new ReverseEngineering();
-        engineering.addCatalog(new Catalog("APP1"));
-        engineering.addCatalog(new Catalog("APP2"));
-
-        engineering.addExcludeTable(new ExcludeTable("SYS_.*"));
-        engineering.addExcludeColumn(new ExcludeColumn("calculated_.*"));
-
-        FiltersConfigBuilder builder = new FiltersConfigBuilder(engineering);
-        builder.compact();
-        assertEquals(
-                "ReverseEngineering: \n" +
-                "  Catalog: APP1\n" +
-                "    Schema: null\n" +
-                "      IncludeTable: null\n" +
-                "        ExcludeColumn: calculated_.*\n" +
-                "      ExcludeTable: SYS_.*\n" +
-                "  Catalog: APP2\n" +
-                "    Schema: null\n" +
-                "      IncludeTable: null\n" +
-                "        ExcludeColumn: calculated_.*\n" +
-                "      ExcludeTable: SYS_.*\n", engineering.toString());
-    }
-
-    @Test
-    public void testCompact_04() {
-        ReverseEngineering engineering = new ReverseEngineering();
-        engineering.addSchema(new Schema("s"));
-
-        FiltersConfigBuilder builder = new FiltersConfigBuilder(engineering);
-        builder.compact();
-        assertEquals(
-                "ReverseEngineering: \n" +
-                "  Catalog: null\n" +
-                "    Schema: s\n" +
-                "      IncludeTable: null\n", engineering.toString());
-    }
-
-    @Test
-    public void testCompact_full() {
-        ReverseEngineering engineering = new ReverseEngineering();
-        Catalog cat01 = new Catalog("cat_01");
-
-        Schema sch01 = new Schema("sch_01");
-
-        sch01.addIncludeTable(includeTable("t1", "c11", "c12"));
-        sch01.addExcludeTable(new ExcludeTable("t2"));
-        sch01.addIncludeProcedure(new IncludeProcedure("p1"));
-        sch01.addExcludeProcedure(new ExcludeProcedure("p2"));
-        sch01.addIncludeColumn(new IncludeColumn("c_x1"));
-        sch01.addExcludeColumn(new ExcludeColumn("c_x2"));
-
-        cat01.addSchema(sch01);
-
-        cat01.addIncludeTable(includeTable("t3", "c31", "c32"));
-        cat01.addExcludeTable(new ExcludeTable("t4"));
-        cat01.addIncludeProcedure(new IncludeProcedure("p3"));
-        cat01.addExcludeProcedure(new ExcludeProcedure("p4"));
-        cat01.addIncludeColumn(new IncludeColumn("c_xx1"));
-        cat01.addExcludeColumn(new ExcludeColumn("c_xx2"));
-
-        engineering.addCatalog(cat01);
-
-        Schema sch02 = new Schema("sch_02");
-
-        sch02.addIncludeTable(includeTable("t5", "c51", "c52"));
-        sch02.addExcludeTable(new ExcludeTable("t6"));
-        sch02.addIncludeProcedure(new IncludeProcedure("p5"));
-        sch02.addExcludeProcedure(new ExcludeProcedure("p6"));
-        sch02.addIncludeColumn(new IncludeColumn("c2_x1"));
-        sch02.addExcludeColumn(new ExcludeColumn("c2_x2"));
-
-        engineering.addSchema(sch02);
-
-        engineering.addIncludeTable(includeTable("t7", "c71", "c72"));
-        engineering.addExcludeTable(new ExcludeTable("t8"));
-        engineering.addIncludeProcedure(new IncludeProcedure("p7"));
-        engineering.addExcludeProcedure(new ExcludeProcedure("p8"));
-        engineering.addIncludeColumn(new IncludeColumn("c_xxx1"));
-        engineering.addExcludeColumn(new ExcludeColumn("c_xxx2"));
-
-        FiltersConfigBuilder builder = new FiltersConfigBuilder(engineering);
-        assertEquals("Original ReverseEngineering should be",
-                "ReverseEngineering: \n" +
-                "  Catalog: cat_01\n" +
-                "    Schema: sch_01\n" +
-                "      IncludeTable: t1\n" +
-                "        IncludeColumn: c11\n" +
-                "        ExcludeColumn: c12\n" +
-                "      ExcludeTable: t2\n" +
-                "      IncludeColumn: c_x1\n" +
-                "      ExcludeColumn: c_x2\n" +
-                "      IncludeProcedure: p1\n" +
-                "      ExcludeProcedure: p2\n" +
-                "    IncludeTable: t3\n" +
-                "      IncludeColumn: c31\n" +
-                "      ExcludeColumn: c32\n" +
-                "    ExcludeTable: t4\n" +
-                "    IncludeColumn: c_xx1\n" +
-                "    ExcludeColumn: c_xx2\n" +
-                "    IncludeProcedure: p3\n" +
-                "    ExcludeProcedure: p4\n" +
-                "  Schema: sch_02\n" +
-                "    IncludeTable: t5\n" +
-                "      IncludeColumn: c51\n" +
-                "      ExcludeColumn: c52\n" +
-                "    ExcludeTable: t6\n" +
-                "    IncludeColumn: c2_x1\n" +
-                "    ExcludeColumn: c2_x2\n" +
-                "    IncludeProcedure: p5\n" +
-                "    ExcludeProcedure: p6\n" +
-                "  IncludeTable: t7\n" +
-                "    IncludeColumn: c71\n" +
-                "    ExcludeColumn: c72\n" +
-                "  ExcludeTable: t8\n" +
-                "  IncludeColumn: c_xxx1\n" +
-                "  ExcludeColumn: c_xxx2\n" +
-                "  IncludeProcedure: p7\n" +
-                "  ExcludeProcedure: p8\n", engineering.toString());
-
-
-        builder.compact();
-        assertEquals(
-                "ReverseEngineering: \n" +
-                        "  Catalog: cat_01\n" +
-                        "    Schema: sch_01\n" +
-                        "      IncludeTable: t1\n" +
-                        "        IncludeColumn: c11\n" +
-                        "        IncludeColumn: c_xxx1\n" +
-                        "        IncludeColumn: c_xx1\n" +
-                        "        IncludeColumn: c_x1\n" +
-                        "        ExcludeColumn: c12\n" +
-                        "        ExcludeColumn: c_xxx2\n" +
-                        "        ExcludeColumn: c_xx2\n" +
-                        "        ExcludeColumn: c_x2\n" +
-                        "      IncludeTable: t7\n" +
-                        "        IncludeColumn: c71\n" +
-                        "        IncludeColumn: c_xxx1\n" +
-                        "        ExcludeColumn: c72\n" +
-                        "        ExcludeColumn: c_xxx2\n" +
-                        "      IncludeTable: t3\n" +
-                        "        IncludeColumn: c31\n" +
-                        "        IncludeColumn: c_xxx1\n" +
-                        "        IncludeColumn: c_xx1\n" +
-                        "        ExcludeColumn: c32\n" +
-                        "        ExcludeColumn: c_xxx2\n" +
-                        "        ExcludeColumn: c_xx2\n" +
-                        "      ExcludeTable: t2\n" +
-                        "      ExcludeTable: t8\n" +
-                        "      ExcludeTable: t4\n" +
-                        "      IncludeProcedure: p1\n" +
-                        "      IncludeProcedure: p7\n" +
-                        "      IncludeProcedure: p3\n" +
-                        "      ExcludeProcedure: p2\n" +
-                        "      ExcludeProcedure: p8\n" +
-                        "      ExcludeProcedure: p4\n" +
-                        "    Schema: sch_02\n" +
-                        "      IncludeTable: t5\n" +
-                        "        IncludeColumn: c51\n" +
-                        "        IncludeColumn: c_xxx1\n" +
-                        "        IncludeColumn: c2_x1\n" +
-                        "        ExcludeColumn: c52\n" +
-                        "        ExcludeColumn: c_xxx2\n" +
-                        "        ExcludeColumn: c2_x2\n" +
-                        "      IncludeTable: t7\n" +
-                        "        IncludeColumn: c71\n" +
-                        "        IncludeColumn: c_xxx1\n" +
-                        "        ExcludeColumn: c72\n" +
-                        "        ExcludeColumn: c_xxx2\n" +
-                        "      ExcludeTable: t6\n" +
-                        "      ExcludeTable: t8\n" +
-                        "      IncludeProcedure: p5\n" +
-                        "      IncludeProcedure: p7\n" +
-                        "      ExcludeProcedure: p6\n" +
-                        "      ExcludeProcedure: p8\n", engineering.toString());
-    }
-
-    protected IncludeTable includeTable(String name, String incCol, String excCol) {
-        IncludeTable incTable01 = new IncludeTable(name);
-        incTable01.addIncludeColumn(new IncludeColumn(incCol));
-        incTable01.addExcludeColumn(new ExcludeColumn(excCol));
-        return incTable01;
-    }
-
-    /*@Test
-    public void testEmptyDbEntitiesFilters() throws Exception {
-        ReverseEngineering engineering = new ReverseEngineering();
-        FiltersConfig executions = new FiltersConfigBuilder(engineering).filtersConfig();
-
-        assertEquals("If nothing was configured we have to import everything. Filter %/%/% true/true/true",
-                new FiltersConfig(eFilters(path(), TRUE, TRUE, NULL)),
-                executions);
-    }
-
-    @Test
-    public void testOnlyOneCatalogDbEntitiesFilters() throws Exception {
-        ReverseEngineering engineering = new ReverseEngineering();
-        engineering.addCatalog(new Catalog("catalog_01"));
-        FiltersConfig executions = new FiltersConfigBuilder(engineering).filtersConfig();
-
-
-        assertEquals(new FiltersConfig(eFilters(path("catalog_01", null), TRUE, TRUE, NULL)),
-                executions);
-    }
-
-    @Test
-    public void testCatalogDbEntitiesFilters() throws Exception {
-        ReverseEngineering engineering = new ReverseEngineering();
-        engineering.addCatalog(new Catalog("catalog_01"));
-        engineering.addCatalog(new Catalog("catalog_02").schema(new Schema("schema_01")));
-        engineering.addCatalog(new Catalog("catalog_02").schema(new Schema("schema_02")));
-        engineering.addCatalog(new Catalog("catalog_02").schema(new Schema("schema_03")));
-        engineering.addCatalog(new Catalog("catalog_03").schema(new Schema("schema_01")));
-        engineering.addCatalog(new Catalog("catalog_03").schema(new Schema("schema_01")));
-        engineering.addCatalog(new Catalog("catalog_03").schema(new Schema("schema_01")));
-        engineering.addCatalog(new Catalog("catalog_03").schema(new Schema("schema_01")));
-        FiltersConfig executions = new FiltersConfigBuilder(engineering).filtersConfig();
-
-
-        assertEquals(new FiltersConfig(
-                        eFilters(path("catalog_01", null), TRUE, TRUE, NULL),
-                        eFilters(path("catalog_02", "schema_01"), TRUE, TRUE, NULL),
-                        eFilters(path("catalog_02", "schema_02"), TRUE, TRUE, NULL),
-                        eFilters(path("catalog_02", "schema_03"), TRUE, TRUE, NULL),
-                        eFilters(path("catalog_03", "schema_01"), TRUE, TRUE, NULL)
-                ),
-                executions);
-    }
-
-    @Test
-    public void testSchemaDbEntitiesFilters() throws Exception {
-        ReverseEngineering engineering = new ReverseEngineering();
-        engineering.addSchema(new Schema("schema_01"));
-        engineering.addSchema(new Schema("schema_02"));
-        engineering.addSchema(new Schema("schema_03"));
-        FiltersConfig executions = new FiltersConfigBuilder(engineering).filtersConfig();
-
-
-        assertEquals(new FiltersConfig(
-                        eFilters(path(null, "schema_01"), TRUE, TRUE, NULL),
-                        eFilters(path(null, "schema_02"), TRUE, TRUE, NULL),
-                        eFilters(path(null, "schema_03"), TRUE, TRUE, NULL)
-                ),
-                executions);
-    }
-
-    @Test
-    public void testFiltersDbEntitiesFilters() throws Exception {
-        ReverseEngineering engineering = new ReverseEngineering();
-        engineering.addIncludeTable(new IncludeTable("IncludeTable"));
-        engineering.addIncludeColumn(new IncludeColumn("IncludeColumn"));
-        engineering.addIncludeProcedure(new IncludeProcedure("IncludeProcedure"));
-        engineering.addExcludeTable(new ExcludeTable("ExcludeTable"));
-        engineering.addExcludeColumn(new ExcludeColumn("ExcludeColumn"));
-        engineering.addExcludeProcedure(new ExcludeProcedure("ExcludeProcedure"));
-
-        FiltersConfig executions = new FiltersConfigBuilder(engineering).filtersConfig();
-
-        assertEquals(new FiltersConfig(
-                        eFilters(path(),
-                            list(include("IncludeTable"), exclude("ExcludeTable")),
-                            list(include("IncludeColumn"), exclude("ExcludeColumn")),
-                            list(include("IncludeProcedure"), exclude("ExcludeProcedure"))),
-                        eFilters(path(null, null, "IncludeTable"), NULL, TRUE, NULL)
-                ),
-                executions);
-    }
-
-    @Test
-    public void testComplexConfiguration() throws Exception {
-        IncludeTable table = new IncludeTable("table");
-        table.addIncludeColumn(new IncludeColumn("column"));
-
-        Schema schema = new Schema("schema");
-        schema.addIncludeTable(table);
-
-        Catalog catalog = new Catalog("catalog");
-        catalog.addSchema(schema);
-
-        ReverseEngineering engineering = new ReverseEngineering();
-        engineering.addCatalog(catalog);
-
-        FiltersConfig executions = new FiltersConfigBuilder(engineering).filtersConfig();
-
-        assertEquals(new FiltersConfig(
-                        eFilters(path("catalog", "schema"), include("table"), NULL, NULL),
-                        eFilters(path("catalog", "schema", "table"), NULL, include("column"), NULL)
-                        ),
-                executions);
-    }
-
-    @Test
-    public void testAddNull() throws Exception {
-        FiltersConfigBuilder builder = new FiltersConfigBuilder(new ReverseEngineering());
-        DbPath path = new DbPath();
-        builder.add(new EntityFilters(path, NULL, NULL, NULL));
-        builder.add(new EntityFilters(path, NULL, NULL, NULL));
-        builder.add(new EntityFilters(path, NULL, NULL, NULL));
-        builder.add(new EntityFilters(path, NULL, NULL, NULL));
-
-        EntityFilters filter = builder.filtersConfig().filter(path);
-        assertFalse(filter.isEmpty());
-    }*/
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cayenne/blob/2f7b1d53/cayenne-server/src/test/java/org/apache/cayenne/merge/AddColumnToModelIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/merge/AddColumnToModelIT.java b/cayenne-server/src/test/java/org/apache/cayenne/merge/AddColumnToModelIT.java
deleted file mode 100644
index db60769..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/merge/AddColumnToModelIT.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*****************************************************************
- *   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.
- ****************************************************************/
-package org.apache.cayenne.merge;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import java.sql.Types;
-import java.util.List;
-
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.map.ObjAttribute;
-import org.apache.cayenne.map.ObjEntity;
-import org.junit.Test;
-
-public class AddColumnToModelIT extends MergeCase {
-
-    @Test
-    public void testAddColumn() throws Exception {
-        dropTableIfPresent("NEW_TABLE");
-        assertTokensAndExecute(0, 0);
-
-        DbEntity dbEntity = new DbEntity("NEW_TABLE");
-
-        DbAttribute column1 = new DbAttribute("ID", Types.INTEGER, dbEntity);
-        column1.setMandatory(true);
-        column1.setPrimaryKey(true);
-        dbEntity.addAttribute(column1);
-
-        DbAttribute column2 = new DbAttribute("NAME", Types.VARCHAR, dbEntity);
-        column2.setMaxLength(10);
-        column2.setMandatory(false);
-        dbEntity.addAttribute(column2);
-
-        map.addDbEntity(dbEntity);
-
-        assertTokensAndExecute(1, 0);
-        assertTokensAndExecute(0, 0);
-
-        ObjEntity objEntity = new ObjEntity("NewTable");
-        objEntity.setDbEntity(dbEntity);
-        ObjAttribute oatr1 = new ObjAttribute("name");
-        oatr1.setDbAttributePath(column2.getName());
-        oatr1.setType("java.lang.String");
-        objEntity.addAttribute(oatr1);
-        map.addObjEntity(objEntity);
-
-        // remove name column
-        objEntity.removeAttribute(oatr1.getName());
-        dbEntity.removeAttribute(column2.getName());
-        assertNull(objEntity.getAttribute(oatr1.getName()));
-        assertEquals(0, objEntity.getAttributes().size());
-        assertNull(dbEntity.getAttribute(column2.getName()));
-
-        List<MergerToken> tokens = createMergeTokens();
-        assertEquals(1, tokens.size());
-        MergerToken token = tokens.get(0);
-        if (token.getDirection().isToDb()) {
-            token = token.createReverse(mergerFactory());
-        }
-        assertTrue(token instanceof AddColumnToModel);
-        execute(token);
-        assertEquals(1, objEntity.getAttributes().size());
-        assertEquals("java.lang.String", objEntity.getAttributes().iterator()
-                .next().getType());
-
-        // clear up
-        map.removeObjEntity(objEntity.getName(), true);
-        map.removeDbEntity(dbEntity.getName(), true);
-        resolver.refreshMappingCache();
-        assertNull(map.getObjEntity(objEntity.getName()));
-        assertNull(map.getDbEntity(dbEntity.getName()));
-        assertFalse(map.getDbEntities().contains(dbEntity));
-
-        assertTokensAndExecute(1, 0);
-        assertTokensAndExecute(0, 0);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/2f7b1d53/cayenne-server/src/test/java/org/apache/cayenne/merge/CreateTableToModelIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/merge/CreateTableToModelIT.java b/cayenne-server/src/test/java/org/apache/cayenne/merge/CreateTableToModelIT.java
deleted file mode 100644
index 3d14c1d..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/merge/CreateTableToModelIT.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*****************************************************************
- *   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.
- ****************************************************************/
-package org.apache.cayenne.merge;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import java.sql.Types;
-import java.util.List;
-
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.map.ObjEntity;
-import org.junit.Test;
-
-public class CreateTableToModelIT extends MergeCase {
-
-	@Test
-	public void testAddTable() throws Exception {
-		dropTableIfPresent("NEW_TABLE");
-		assertTokensAndExecute(0, 0);
-
-		DbEntity dbEntity = new DbEntity("NEW_TABLE");
-
-		DbAttribute column1 = new DbAttribute("ID", Types.INTEGER, dbEntity);
-		column1.setMandatory(true);
-		column1.setPrimaryKey(true);
-		dbEntity.addAttribute(column1);
-
-		DbAttribute column2 = new DbAttribute("NAME", Types.VARCHAR, dbEntity);
-		column2.setMaxLength(10);
-		column2.setMandatory(false);
-		dbEntity.addAttribute(column2);
-
-		// for the new entity to the db
-		execute(mergerFactory().createCreateTableToDb(dbEntity));
-
-		List<MergerToken> tokens = createMergeTokens();
-		assertEquals(1, tokens.size());
-		MergerToken token = tokens.get(0);
-		if (token.getDirection().isToDb()) {
-			token = token.createReverse(mergerFactory());
-		}
-		assertTrue(token.getClass().getName(), token instanceof CreateTableToModel);
-
-		execute(token);
-
-		ObjEntity objEntity = null;
-		for (ObjEntity candidate : map.getObjEntities()) {
-			if (dbEntity.getName().equalsIgnoreCase(candidate.getDbEntityName())) {
-				objEntity = candidate;
-				break;
-			}
-		}
-		assertNotNull(objEntity);
-
-		assertEquals(objEntity.getClassName(), map.getDefaultPackage() + "." + objEntity.getName());
-		assertEquals(objEntity.getSuperClassName(), map.getDefaultSuperclass());
-		assertEquals(objEntity.getClientClassName(), map.getDefaultClientPackage() + "." + objEntity.getName());
-		assertEquals(objEntity.getClientSuperClassName(), map.getDefaultClientSuperclass());
-
-		assertEquals(1, objEntity.getAttributes().size());
-		assertEquals("java.lang.String", objEntity.getAttributes().iterator().next().getType());
-
-		// clear up
-		// fix psql case issue
-		map.removeDbEntity(objEntity.getDbEntity().getName(), true);
-		map.removeObjEntity(objEntity.getName(), true);
-		map.removeDbEntity(dbEntity.getName(), true);
-		resolver.refreshMappingCache();
-		assertNull(map.getObjEntity(objEntity.getName()));
-		assertNull(map.getDbEntity(dbEntity.getName()));
-		assertFalse(map.getDbEntities().contains(dbEntity));
-
-		assertTokensAndExecute(1, 0);
-		assertTokensAndExecute(0, 0);
-	}
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/2f7b1d53/cayenne-server/src/test/java/org/apache/cayenne/merge/DbMergerTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/merge/DbMergerTest.java b/cayenne-server/src/test/java/org/apache/cayenne/merge/DbMergerTest.java
deleted file mode 100644
index 894129d..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/merge/DbMergerTest.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/*****************************************************************
- *   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.
- ****************************************************************/
-package org.apache.cayenne.merge;
-
-import org.apache.cayenne.access.loader.DbLoaderConfiguration;
-import org.apache.cayenne.dba.hsqldb.HSQLMergerFactory;
-import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.merge.builders.DbEntityBuilder;
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.apache.cayenne.merge.builders.ObjectMother.dataMap;
-import static org.apache.cayenne.merge.builders.ObjectMother.dbAttr;
-import static org.apache.cayenne.merge.builders.ObjectMother.dbEntity;
-import static org.junit.Assert.assertEquals;
-
-public class DbMergerTest {
-
-    @Test
-    public void testEmptyDataMap() throws Exception {
-        assertEquals(0, dbMerger().createMergeTokens(new ArrayList<DbEntity>(0),
-                new ArrayList<DbEntity>(0), new DbLoaderConfiguration()).size());
-    }
-
-    @Test
-    public void testAddTable() throws Exception {
-        DbEntityBuilder dbEntity =
-            dbEntity("table1").attributes(
-                dbAttr("attr01").typeInt()
-        );
-        DataMap existing = dataMap().with(dbEntity).build();
-
-        List<MergerToken> tokens = dbMerger().createMergeTokens(existing.getDbEntities(),
-                new ArrayList<DbEntity>(0), new DbLoaderConfiguration());
-
-        assertEquals(1, tokens.size());
-        assertEquals(factory().createCreateTableToDb(dbEntity.build()).getTokenValue(),
-                     tokens.get(0).getTokenValue());
-    }
-
-    @Test
-    public void testRemoveTable() throws Exception {
-        DataMap db = dataMap().with(
-            dbEntity("table1").attributes(
-                dbAttr("attr01").typeInt()
-        )).build();
-
-        List<MergerToken> tokens = dbMerger().createMergeTokens(new ArrayList<DbEntity>(0),
-                db.getDbEntities(), new DbLoaderConfiguration());
-
-        assertEquals(1, tokens.size());
-        assertEquals(factory().createDropTableToDb(db.getDbEntity("table1")).getTokenValue(),
-                     tokens.get(0).getTokenValue());
-    }
-
-    @Test
-    public void testAddColumn() throws Exception {
-        DataMap existing = dataMap().with(
-            dbEntity("table1").attributes(
-                dbAttr("attr01").typeInt(),
-                dbAttr("attr02").typeInt()
-        )).build();
-
-        DataMap db = dataMap().with(
-            dbEntity("table1").attributes(
-                dbAttr("attr01").typeInt()
-        )).build();
-
-        List<MergerToken> tokens = dbMerger().createMergeTokens(existing.getDbEntities(),
-                db.getDbEntities(), new DbLoaderConfiguration());
-
-        assertEquals(1, tokens.size());
-
-        DbEntity entity = existing.getDbEntity("table1");
-        assertEquals(factory().createAddColumnToDb(entity, entity.getAttribute("attr02")).getTokenValue(),
-                     tokens.get(0).getTokenValue());
-    }
-
-    @Test
-    public void testAddRelationship() throws Exception {
-        DataMap existing = dataMap().with(
-            dbEntity("table1").attributes(
-                dbAttr("attr01").typeInt(),
-                dbAttr("attr02").typeInt()),
-
-            dbEntity("table2").attributes(
-                dbAttr("attr01").typeInt().primaryKey(),
-                dbAttr("attr02").typeInt())
-        ).join("rel", "table1.attr01", "table2.attr01")
-         .build();
-
-        DataMap db = dataMap().with(
-            dbEntity("table1").attributes(
-                dbAttr("attr01").typeInt(),
-                dbAttr("attr02").typeInt()),
-
-            dbEntity("table2").attributes(
-                dbAttr("attr01").typeInt().primaryKey(),
-                dbAttr("attr02").typeInt())
-        )//.join("table1.attr01", "table2.attr01")
-         .build();
-
-
-        List<MergerToken> tokens = dbMerger().createMergeTokens(existing.getDbEntities(),
-                db.getDbEntities(), new DbLoaderConfiguration());
-
-        assertEquals(1, tokens.size());
-
-        DbEntity entity = existing.getDbEntity("table1");
-        assertEquals(factory().createAddRelationshipToDb(entity, entity.getRelationship("rel")).getTokenValue(),
-                     tokens.get(0).getTokenValue());
-    }
-
-    @Test
-    public void testAddRelationship1() throws Exception {
-        DataMap existing = dataMap().with(
-            dbEntity("table1").attributes(
-                dbAttr("attr01").typeInt(),
-                dbAttr("attr02").typeInt()),
-
-            dbEntity("table2").attributes(
-                dbAttr("attr01").typeInt().primaryKey(),
-                dbAttr("attr02").typeInt().primaryKey(),
-                dbAttr("attr03").typeInt().primaryKey())
-        ).join("rel", "table1.attr01", "table2.attr01")
-         .join("rel1", "table1.attr01", "table2.attr03")
-         .build();
-
-        DataMap db = dataMap().with(
-            dbEntity("table1").attributes(
-                dbAttr("attr01").typeInt(),
-                dbAttr("attr02").typeInt()),
-
-            dbEntity("table2").attributes(
-                dbAttr("attr01").typeInt().primaryKey(),
-                dbAttr("attr02").typeInt().primaryKey(),
-                dbAttr("attr03").typeInt().primaryKey())
-        ).join("rel", "table1.attr01", "table2.attr02")
-         .join("rel1", "table1.attr01", "table2.attr03")
-         .build();
-
-
-        List<MergerToken> tokens = dbMerger().createMergeTokens(existing.getDbEntities(),
-                db.getDbEntities(), new DbLoaderConfiguration());
-
-        assertEquals(2, tokens.size());
-
-        DbEntity entity = existing.getDbEntity("table1");
-        assertEquals(factory().createDropRelationshipToDb(entity, entity.getRelationship("rel")).getTokenValue(),
-                     tokens.get(0).getTokenValue());
-
-        entity = db.getDbEntity("table1");
-        assertEquals(factory().createAddRelationshipToDb(entity, entity.getRelationship("rel")).getTokenValue(),
-                     tokens.get(0).getTokenValue());
-    }
-
-    @Test
-    public void testRemoveRelationship() throws Exception {
-        DataMap existing = dataMap().with(
-            dbEntity("table1").attributes(
-                dbAttr("attr01").typeInt(),
-                dbAttr("attr02").typeInt()),
-
-            dbEntity("table2").attributes(
-                dbAttr("attr01").typeInt().primaryKey(),
-                dbAttr("attr02").typeInt())
-        )
-         .build();
-
-        DataMap db = dataMap().with(
-            dbEntity("table1").attributes(
-                dbAttr("attr01").typeInt(),
-                dbAttr("attr02").typeInt()),
-
-            dbEntity("table2").attributes(
-                dbAttr("attr01").typeInt().primaryKey(),
-                dbAttr("attr02").typeInt())
-        ).join("rel", "table1.attr01", "table2.attr01")
-         .build();
-
-
-        List<MergerToken> tokens = dbMerger().createMergeTokens(existing.getDbEntities(), db.getDbEntities(), new DbLoaderConfiguration());
-
-        assertEquals(1, tokens.size());
-
-        DbEntity entity = db.getDbEntity("table1");
-        assertEquals(factory().createDropRelationshipToDb(entity, entity.getRelationship("rel")).getTokenValue(),
-                     tokens.get(0).getTokenValue());
-    }
-
-    @Test
-    public void testRemoveColumn() throws Exception {
-        DataMap existing = dataMap().with(
-            dbEntity("table1").attributes(
-                dbAttr("attr01").typeInt()
-        )).build();
-
-        DataMap db = dataMap().with(
-            dbEntity("table1").attributes(
-                dbAttr("attr01").typeInt(),
-                dbAttr("attr02").typeInt()
-        )).build();
-
-        List<MergerToken> tokens = dbMerger().createMergeTokens(existing.getDbEntities(),
-                db.getDbEntities(), new DbLoaderConfiguration());
-
-        assertEquals(1, tokens.size());
-
-        DbEntity entity = db.getDbEntity("table1");
-        assertEquals(factory().createDropColumnToModel(entity, entity.getAttribute("attr02")).getTokenValue(),
-                     tokens.get(0).getTokenValue());
-    }
-
-    @Test
-    public void testNoChanges() throws Exception {
-        DataMap dataMap1 = dataMap().with(
-                dbEntity("table1").attributes(
-                        dbAttr("attr01").typeInt(),
-                        dbAttr("attr02").typeInt(),
-                        dbAttr("attr03").typeInt()
-                )).build();
-
-        DataMap dataMap2 = dataMap().with(
-            dbEntity("table1").attributes(
-                dbAttr("attr01").typeInt(),
-                dbAttr("attr02").typeInt(),
-                dbAttr("attr03").typeInt()
-        )).build();
-
-
-        assertEquals(0, dbMerger().createMergeTokens(dataMap1.getDbEntities(),
-                dataMap2.getDbEntities(), new DbLoaderConfiguration()).size());
-    }
-
-    private DbMerger dbMerger() {
-        return new DbMerger(factory());
-    }
-
-    private HSQLMergerFactory factory() {
-        return new HSQLMergerFactory();
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cayenne/blob/2f7b1d53/cayenne-server/src/test/java/org/apache/cayenne/merge/DropColumnToModelIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/merge/DropColumnToModelIT.java b/cayenne-server/src/test/java/org/apache/cayenne/merge/DropColumnToModelIT.java
deleted file mode 100644
index 9005e79..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/merge/DropColumnToModelIT.java
+++ /dev/null
@@ -1,235 +0,0 @@
-/*****************************************************************
- *   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.
- ****************************************************************/
-package org.apache.cayenne.merge;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.sql.Types;
-import java.util.List;
-
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.map.DbJoin;
-import org.apache.cayenne.map.DbRelationship;
-import org.apache.cayenne.map.ObjAttribute;
-import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.map.ObjRelationship;
-import org.junit.Test;
-
-public class DropColumnToModelIT extends MergeCase {
-
-	@Test
-	public void testSimpleColumn() throws Exception {
-		dropTableIfPresent("NEW_TABLE");
-
-		assertTokensAndExecute(0, 0);
-
-		DbEntity dbEntity = new DbEntity("NEW_TABLE");
-
-		DbAttribute column1 = new DbAttribute("ID", Types.INTEGER, dbEntity);
-		column1.setMandatory(true);
-		column1.setPrimaryKey(true);
-		dbEntity.addAttribute(column1);
-
-		DbAttribute column2 = new DbAttribute("NAME", Types.VARCHAR, dbEntity);
-		column2.setMaxLength(10);
-		column2.setMandatory(false);
-		dbEntity.addAttribute(column2);
-
-		map.addDbEntity(dbEntity);
-
-		assertTokensAndExecute(1, 0);
-		assertTokensAndExecute(0, 0);
-
-		ObjEntity objEntity = new ObjEntity("NewTable");
-		objEntity.setDbEntity(dbEntity);
-		ObjAttribute oatr1 = new ObjAttribute("name");
-		oatr1.setDbAttributePath(column2.getName());
-		oatr1.setType("java.lang.String");
-		objEntity.addAttribute(oatr1);
-		map.addObjEntity(objEntity);
-
-		// force drop name column in db
-		MergerToken token = mergerFactory().createDropColumnToDb(dbEntity, column2);
-		execute(token);
-
-		List<MergerToken> tokens = createMergeTokens();
-		assertEquals(1, tokens.size());
-		token = tokens.get(0);
-		if (token.getDirection().isToDb()) {
-			token = token.createReverse(mergerFactory());
-		}
-		assertTrue(token instanceof DropColumnToModel);
-		execute(token);
-		assertNull(dbEntity.getAttribute(column2.getName()));
-		assertNull(objEntity.getAttribute(oatr1.getName()));
-
-		// clear up
-		map.removeObjEntity(objEntity.getName(), true);
-		map.removeDbEntity(dbEntity.getName(), true);
-		resolver.refreshMappingCache();
-		assertNull(map.getObjEntity(objEntity.getName()));
-		assertNull(map.getDbEntity(dbEntity.getName()));
-		assertFalse(map.getDbEntities().contains(dbEntity));
-
-		assertTokensAndExecute(1, 0);
-		assertTokensAndExecute(0, 0);
-	}
-
-	@Test
-	public void testRemoveFKColumnWithoutRelationshipInDb() throws Exception {
-		dropTableIfPresent("NEW_TABLE");
-		dropTableIfPresent("NEW_TABLE2");
-
-		assertTokensAndExecute(0, 0);
-
-		DbEntity dbEntity1 = new DbEntity("NEW_TABLE");
-
-		DbAttribute e1col1 = new DbAttribute("ID", Types.INTEGER, dbEntity1);
-		e1col1.setMandatory(true);
-		e1col1.setPrimaryKey(true);
-		dbEntity1.addAttribute(e1col1);
-
-		DbAttribute e1col2 = new DbAttribute("NAME", Types.VARCHAR, dbEntity1);
-		e1col2.setMaxLength(10);
-		e1col2.setMandatory(false);
-		dbEntity1.addAttribute(e1col2);
-
-		map.addDbEntity(dbEntity1);
-
-		DbEntity dbEntity2 = new DbEntity("NEW_TABLE2");
-		DbAttribute e2col1 = new DbAttribute("ID", Types.INTEGER, dbEntity2);
-		e2col1.setMandatory(true);
-		e2col1.setPrimaryKey(true);
-		dbEntity2.addAttribute(e2col1);
-		DbAttribute e2col2 = new DbAttribute("FK", Types.INTEGER, dbEntity2);
-		dbEntity2.addAttribute(e2col2);
-		DbAttribute e2col3 = new DbAttribute("NAME", Types.VARCHAR, dbEntity2);
-		e2col3.setMaxLength(10);
-		dbEntity2.addAttribute(e2col3);
-
-		map.addDbEntity(dbEntity2);
-
-		assertTokensAndExecute(2, 0);
-		assertTokensAndExecute(0, 0);
-
-		// force drop fk column in db
-		execute(mergerFactory().createDropColumnToDb(dbEntity2, e2col2));
-
-		// create db relationships, but do not sync them to db
-		DbRelationship rel1To2 = new DbRelationship("rel1To2");
-		rel1To2.setSourceEntity(dbEntity1);
-		rel1To2.setTargetEntityName(dbEntity2);
-		rel1To2.setToMany(true);
-		rel1To2.addJoin(new DbJoin(rel1To2, e1col1.getName(), e2col2.getName()));
-		dbEntity1.addRelationship(rel1To2);
-		DbRelationship rel2To1 = new DbRelationship("rel2To1");
-		rel2To1.setSourceEntity(dbEntity2);
-		rel2To1.setTargetEntityName(dbEntity1);
-		rel2To1.setToMany(false);
-		rel2To1.addJoin(new DbJoin(rel2To1, e2col2.getName(), e1col1.getName()));
-		dbEntity2.addRelationship(rel2To1);
-		assertSame(rel1To2, rel2To1.getReverseRelationship());
-		assertSame(rel2To1, rel1To2.getReverseRelationship());
-
-		// create ObjEntities
-		ObjEntity objEntity1 = new ObjEntity("NewTable");
-		objEntity1.setDbEntity(dbEntity1);
-		ObjAttribute oatr1 = new ObjAttribute("name");
-		oatr1.setDbAttributePath(e1col2.getName());
-		oatr1.setType("java.lang.String");
-		objEntity1.addAttribute(oatr1);
-		map.addObjEntity(objEntity1);
-		ObjEntity objEntity2 = new ObjEntity("NewTable2");
-		objEntity2.setDbEntity(dbEntity2);
-		ObjAttribute o2a1 = new ObjAttribute("name");
-		o2a1.setDbAttributePath(e2col3.getName());
-		o2a1.setType("java.lang.String");
-		objEntity2.addAttribute(o2a1);
-		map.addObjEntity(objEntity2);
-
-		// create ObjRelationships
-		assertEquals(0, objEntity1.getRelationships().size());
-		assertEquals(0, objEntity2.getRelationships().size());
-		ObjRelationship objRel1To2 = new ObjRelationship("objRel1To2");
-		objRel1To2.addDbRelationship(rel1To2);
-		objRel1To2.setSourceEntity(objEntity1);
-		objRel1To2.setTargetEntityName(objEntity2);
-		objEntity1.addRelationship(objRel1To2);
-		ObjRelationship objRel2To1 = new ObjRelationship("objRel2To1");
-		objRel2To1.addDbRelationship(rel2To1);
-		objRel2To1.setSourceEntity(objEntity2);
-		objRel2To1.setTargetEntityName(objEntity1);
-		objEntity2.addRelationship(objRel2To1);
-		assertEquals(1, objEntity1.getRelationships().size());
-		assertEquals(1, objEntity2.getRelationships().size());
-		assertSame(objRel1To2, objRel2To1.getReverseRelationship());
-		assertSame(objRel2To1, objRel1To2.getReverseRelationship());
-
-		// try do use the merger to remove the column and relationship in the
-		// model
-		List<MergerToken> tokens = createMergeTokens();
-		assertTokens(tokens, 2, 0);
-		// TODO: reversing the following two tokens should also reverse the
-		// order
-		MergerToken token0 = tokens.get(0).createReverse(mergerFactory());
-		MergerToken token1 = tokens.get(1).createReverse(mergerFactory());
-		if (!(token0 instanceof DropRelationshipToModel && token1 instanceof DropColumnToModel || token1 instanceof DropRelationshipToModel
-				&& token0 instanceof DropColumnToModel)) {
-			fail();
-		}
-		// do not execute DropRelationshipToModel, only DropColumnToModel.
-		if (token1 instanceof DropColumnToModel) {
-			execute(token1);
-		} else {
-			execute(token0);
-		}
-
-		// check after merging
-		assertNull(dbEntity2.getAttribute(e2col2.getName()));
-		assertEquals(0, dbEntity1.getRelationships().size());
-		assertEquals(0, dbEntity2.getRelationships().size());
-		assertEquals(0, objEntity1.getRelationships().size());
-		assertEquals(0, objEntity2.getRelationships().size());
-
-		// clear up
-
-		dbEntity1.removeRelationship(rel1To2.getName());
-		dbEntity2.removeRelationship(rel2To1.getName());
-		map.removeObjEntity(objEntity1.getName(), true);
-		map.removeDbEntity(dbEntity1.getName(), true);
-		map.removeObjEntity(objEntity2.getName(), true);
-		map.removeDbEntity(dbEntity2.getName(), true);
-		resolver.refreshMappingCache();
-		assertNull(map.getObjEntity(objEntity1.getName()));
-		assertNull(map.getDbEntity(dbEntity1.getName()));
-		assertNull(map.getObjEntity(objEntity2.getName()));
-		assertNull(map.getDbEntity(dbEntity2.getName()));
-		assertFalse(map.getDbEntities().contains(dbEntity1));
-		assertFalse(map.getDbEntities().contains(dbEntity2));
-
-		assertTokensAndExecute(2, 0);
-		assertTokensAndExecute(0, 0);
-	}
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/2f7b1d53/cayenne-server/src/test/java/org/apache/cayenne/merge/DropRelationshipToModelIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/merge/DropRelationshipToModelIT.java b/cayenne-server/src/test/java/org/apache/cayenne/merge/DropRelationshipToModelIT.java
deleted file mode 100644
index 4610fcd..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/merge/DropRelationshipToModelIT.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*****************************************************************
- *   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.
- ****************************************************************/
-package org.apache.cayenne.merge;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.fail;
-
-import java.sql.Types;
-import java.util.List;
-
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.map.DbJoin;
-import org.apache.cayenne.map.DbRelationship;
-import org.apache.cayenne.map.ObjAttribute;
-import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.map.ObjRelationship;
-import org.junit.Test;
-
-public class DropRelationshipToModelIT extends MergeCase {
-
-	@Test
-	public void testForeignKey() throws Exception {
-		dropTableIfPresent("NEW_TABLE");
-		dropTableIfPresent("NEW_TABLE2");
-
-		assertTokensAndExecute(0, 0);
-
-		DbEntity dbEntity1 = new DbEntity("NEW_TABLE");
-
-		DbAttribute e1col1 = new DbAttribute("ID", Types.INTEGER, dbEntity1);
-		e1col1.setMandatory(true);
-		e1col1.setPrimaryKey(true);
-		dbEntity1.addAttribute(e1col1);
-
-		DbAttribute e1col2 = new DbAttribute("NAME", Types.VARCHAR, dbEntity1);
-		e1col2.setMaxLength(10);
-		e1col2.setMandatory(false);
-		dbEntity1.addAttribute(e1col2);
-
-		map.addDbEntity(dbEntity1);
-
-		DbEntity dbEntity2 = new DbEntity("NEW_TABLE2");
-		DbAttribute e2col1 = new DbAttribute("ID", Types.INTEGER, dbEntity2);
-		e2col1.setMandatory(true);
-		e2col1.setPrimaryKey(true);
-		dbEntity2.addAttribute(e2col1);
-		DbAttribute e2col2 = new DbAttribute("FK", Types.INTEGER, dbEntity2);
-		dbEntity2.addAttribute(e2col2);
-		DbAttribute e2col3 = new DbAttribute("NAME", Types.VARCHAR, dbEntity2);
-		e2col3.setMaxLength(10);
-		dbEntity2.addAttribute(e2col3);
-
-		map.addDbEntity(dbEntity2);
-
-		// create db relationships
-		DbRelationship rel1To2 = new DbRelationship("rel1To2");
-		rel1To2.setSourceEntity(dbEntity1);
-		rel1To2.setTargetEntityName(dbEntity2);
-		rel1To2.setToMany(true);
-		rel1To2.addJoin(new DbJoin(rel1To2, e1col1.getName(), e2col2.getName()));
-		dbEntity1.addRelationship(rel1To2);
-		DbRelationship rel2To1 = new DbRelationship("rel2To1");
-		rel2To1.setSourceEntity(dbEntity2);
-		rel2To1.setTargetEntityName(dbEntity1);
-		rel2To1.setToMany(false);
-		rel2To1.addJoin(new DbJoin(rel2To1, e2col2.getName(), e1col1.getName()));
-		dbEntity2.addRelationship(rel2To1);
-		assertSame(rel1To2, rel2To1.getReverseRelationship());
-		assertSame(rel2To1, rel1To2.getReverseRelationship());
-
-		assertTokensAndExecute(4, 0);
-		assertTokensAndExecute(0, 0);
-
-		// create ObjEntities
-		ObjEntity objEntity1 = new ObjEntity("NewTable");
-		objEntity1.setDbEntity(dbEntity1);
-		ObjAttribute oatr1 = new ObjAttribute("name");
-		oatr1.setDbAttributePath(e1col2.getName());
-		oatr1.setType("java.lang.String");
-		objEntity1.addAttribute(oatr1);
-		map.addObjEntity(objEntity1);
-		ObjEntity objEntity2 = new ObjEntity("NewTable2");
-		objEntity2.setDbEntity(dbEntity2);
-		ObjAttribute o2a1 = new ObjAttribute("name");
-		o2a1.setDbAttributePath(e2col3.getName());
-		o2a1.setType("java.lang.String");
-		objEntity2.addAttribute(o2a1);
-		map.addObjEntity(objEntity2);
-
-		// create ObjRelationships
-		assertEquals(0, objEntity1.getRelationships().size());
-		assertEquals(0, objEntity2.getRelationships().size());
-		ObjRelationship objRel1To2 = new ObjRelationship("objRel1To2");
-		objRel1To2.addDbRelationship(rel1To2);
-		objRel1To2.setSourceEntity(objEntity1);
-		objRel1To2.setTargetEntityName(objEntity2);
-		objEntity1.addRelationship(objRel1To2);
-		ObjRelationship objRel2To1 = new ObjRelationship("objRel2To1");
-		objRel2To1.addDbRelationship(rel2To1);
-		objRel2To1.setSourceEntity(objEntity2);
-		objRel2To1.setTargetEntityName(objEntity1);
-		objEntity2.addRelationship(objRel2To1);
-		assertEquals(1, objEntity1.getRelationships().size());
-		assertEquals(1, objEntity2.getRelationships().size());
-		assertSame(objRel1To2, objRel2To1.getReverseRelationship());
-		assertSame(objRel2To1, objRel1To2.getReverseRelationship());
-
-        // remove relationship and fk from model, merge to db and read to model
-        dbEntity2.removeRelationship(rel2To1.getName());
-        dbEntity1.removeRelationship(rel1To2.getName());
-        dbEntity2.removeAttribute(e2col2.getName());
-        List<MergerToken> tokens = createMergeTokens();
-        /**
-         * Add Relationship NEW_TABLE->NEW_TABLE2 To Model
-         * Drop Relationship NEW_TABLE2->NEW_TABLE To DB
-         * Drop Column NEW_TABLE2.FK To DB
-         * */
-        assertTokens(tokens, 2, 1);
-        for (MergerToken token : tokens) {
-            if (token.getDirection().isToDb()) {
-                execute(token);
-            }
-        }
-        assertTokensAndExecute(0, 0);
-        dbEntity2.addRelationship(rel2To1);
-        dbEntity1.addRelationship(rel1To2);
-        dbEntity2.addAttribute(e2col2);
-
-		// try do use the merger to remove the relationship in the model
-		tokens = createMergeTokens();
-		assertTokens(tokens, 2, 0);
-		// TODO: reversing the following two tokens should also reverse the
-		// order
-		MergerToken token0 = tokens.get(0).createReverse(mergerFactory());
-		MergerToken token1 = tokens.get(1).createReverse(mergerFactory());
-		if (!(token0 instanceof DropRelationshipToModel && token1 instanceof DropColumnToModel || token1 instanceof DropRelationshipToModel
-				&& token0 instanceof DropColumnToModel)) {
-			fail();
-		}
-		execute(token0);
-		execute(token1);
-
-		// check after merging
-		assertNull(dbEntity2.getAttribute(e2col2.getName()));
-		assertEquals(0, dbEntity1.getRelationships().size());
-		assertEquals(0, dbEntity2.getRelationships().size());
-		assertEquals(0, objEntity1.getRelationships().size());
-		assertEquals(0, objEntity2.getRelationships().size());
-
-		// clear up
-		dbEntity1.removeRelationship(rel1To2.getName());
-		dbEntity2.removeRelationship(rel2To1.getName());
-		map.removeObjEntity(objEntity1.getName(), true);
-		map.removeDbEntity(dbEntity1.getName(), true);
-		map.removeObjEntity(objEntity2.getName(), true);
-		map.removeDbEntity(dbEntity2.getName(), true);
-		resolver.refreshMappingCache();
-		assertNull(map.getObjEntity(objEntity1.getName()));
-		assertNull(map.getDbEntity(dbEntity1.getName()));
-		assertNull(map.getObjEntity(objEntity2.getName()));
-		assertNull(map.getDbEntity(dbEntity2.getName()));
-		assertFalse(map.getDbEntities().contains(dbEntity1));
-		assertFalse(map.getDbEntities().contains(dbEntity2));
-
-		assertTokensAndExecute(2, 0);
-		assertTokensAndExecute(0, 0);
-	}
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/2f7b1d53/cayenne-server/src/test/java/org/apache/cayenne/merge/DropTableToModelIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/merge/DropTableToModelIT.java b/cayenne-server/src/test/java/org/apache/cayenne/merge/DropTableToModelIT.java
deleted file mode 100644
index ddf5a49..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/merge/DropTableToModelIT.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*****************************************************************
- *   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.
- ****************************************************************/
-package org.apache.cayenne.merge;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import java.sql.Types;
-import java.util.List;
-
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.map.ObjAttribute;
-import org.apache.cayenne.map.ObjEntity;
-import org.junit.Test;
-
-public class DropTableToModelIT extends MergeCase {
-
-	@Test
-	public void testDropTable() throws Exception {
-		dropTableIfPresent("NEW_TABLE");
-		assertTokensAndExecute(0, 0);
-
-		DbEntity dbEntity = new DbEntity("NEW_TABLE");
-
-		DbAttribute column1 = new DbAttribute("ID", Types.INTEGER, dbEntity);
-		column1.setMandatory(true);
-		column1.setPrimaryKey(true);
-		dbEntity.addAttribute(column1);
-
-		DbAttribute column2 = new DbAttribute("NAME", Types.VARCHAR, dbEntity);
-		column2.setMaxLength(10);
-		column2.setMandatory(false);
-		dbEntity.addAttribute(column2);
-
-		map.addDbEntity(dbEntity);
-
-		assertTokensAndExecute(1, 0);
-		assertTokensAndExecute(0, 0);
-
-		ObjEntity objEntity = new ObjEntity("NewTable");
-		objEntity.setDbEntity(dbEntity);
-		ObjAttribute oatr1 = new ObjAttribute("name");
-		oatr1.setDbAttributePath(column2.getName());
-		oatr1.setType("java.lang.String");
-		objEntity.addAttribute(oatr1);
-		map.addObjEntity(objEntity);
-
-		// force drop table in db
-		MergerToken token = mergerFactory().createDropTableToDb(dbEntity);
-		execute(token);
-
-		List<MergerToken> tokens = createMergeTokens();
-		assertEquals(1, tokens.size());
-		token = tokens.get(0);
-		if (token.getDirection().isToDb()) {
-			token = token.createReverse(mergerFactory());
-		}
-		assertTrue(token instanceof DropTableToModel);
-		execute(token);
-		resolver.refreshMappingCache();
-		assertNull(map.getDbEntity(dbEntity.getName()));
-		assertNull(map.getObjEntity(objEntity.getName()));
-
-		// clear up
-		map.removeObjEntity(objEntity.getName(), true);
-		map.removeDbEntity(dbEntity.getName(), true);
-		resolver.refreshMappingCache();
-		assertNull(map.getObjEntity(objEntity.getName()));
-		assertNull(map.getDbEntity(dbEntity.getName()));
-		assertFalse(map.getDbEntities().contains(dbEntity));
-
-		assertTokensAndExecute(0, 0);
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/2f7b1d53/cayenne-server/src/test/java/org/apache/cayenne/merge/MergeCase.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/merge/MergeCase.java b/cayenne-server/src/test/java/org/apache/cayenne/merge/MergeCase.java
deleted file mode 100644
index dfbffa9..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/merge/MergeCase.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*****************************************************************
- *   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.
- ****************************************************************/
-package org.apache.cayenne.merge;
-
-import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.access.loader.DbLoaderConfiguration;
-import org.apache.cayenne.access.loader.filters.FiltersConfig;
-import org.apache.cayenne.access.loader.filters.PatternFilter;
-import org.apache.cayenne.access.loader.filters.TableFilter;
-import org.apache.cayenne.configuration.server.ServerRuntime;
-import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.map.EntityResolver;
-import org.apache.cayenne.test.jdbc.DBHelper;
-import org.apache.cayenne.unit.UnitDbAdapter;
-import org.apache.cayenne.unit.di.server.CayenneProjects;
-import org.apache.cayenne.unit.di.server.ServerCase;
-import org.apache.cayenne.unit.di.server.ServerCaseDataSourceFactory;
-import org.apache.cayenne.unit.di.server.UseServerRuntime;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.junit.Before;
-
-import java.sql.Connection;
-import java.sql.Statement;
-import java.sql.Types;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-
-@UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
-public abstract class MergeCase extends ServerCase {
-
-	private Log logger = LogFactory.getLog(MergeCase.class);
-
-	@Inject
-	private DBHelper dbHelper;
-
-	@Inject
-	private ServerRuntime runtime;
-
-	@Inject
-	private UnitDbAdapter accessStackAdapter;
-
-	@Inject
-	private ServerCaseDataSourceFactory dataSourceFactory;
-
-	@Inject
-	protected EntityResolver resolver;
-
-	@Inject
-	protected DataNode node;
-
-	protected DataMap map;
-
-	@Override
-	public void cleanUpDB() throws Exception {
-		dbHelper.update("ARTGROUP").set("PARENT_GROUP_ID", null, Types.INTEGER).execute();
-		super.cleanUpDB();
-	}
-
-	@Before
-	public void setUp() throws Exception {
-
-		// this map can't be safely modified in this test, as it is reset by DI
-		// container
-		// on every test
-		map = runtime.getDataDomain().getDataMap("testmap");
-
-		filterDataMap();
-
-		List<MergerToken> tokens = createMergeTokens();
-		execute(tokens);
-
-		assertTokensAndExecute(0, 0);
-	}
-
-	protected DbMerger createMerger(MergerFactory mergerFactory) {
-		return createMerger(mergerFactory, null);
-	}
-
-	protected DbMerger createMerger(MergerFactory mergerFactory, ValueForNullProvider valueForNullProvider) {
-		return new DbMerger(mergerFactory, valueForNullProvider);
-	}
-
-	protected List<MergerToken> createMergeTokens() {
-		DbLoaderConfiguration loaderConfiguration = new DbLoaderConfiguration();
-		loaderConfiguration.setFiltersConfig(FiltersConfig.create(null, null,
-				TableFilter.include("ARTIST|GALLERY|PAINTING|NEW_TABLE2?"), PatternFilter.INCLUDE_NOTHING));
-
-		return createMerger(node.getAdapter().mergerFactory()).createMergeTokens(node.getDataSource(),
-				node.getAdapter(), map, loaderConfiguration);
-	}
-
-	/**
-	 * Remote binary pk {@link DbEntity} for {@link DbAdapter} not supporting
-	 * that and so on.
-	 */
-	private void filterDataMap() {
-		// copied from AbstractAccessStack.dbEntitiesInInsertOrder
-		boolean excludeBinPK = accessStackAdapter.supportsBinaryPK();
-
-		if (!excludeBinPK) {
-			return;
-		}
-
-		List<DbEntity> entitiesToRemove = new ArrayList<DbEntity>();
-
-		for (DbEntity ent : map.getDbEntities()) {
-			for (DbAttribute attr : ent.getAttributes()) {
-				// check for BIN PK or FK to BIN Pk
-				if (attr.getType() == Types.BINARY || attr.getType() == Types.VARBINARY
-						|| attr.getType() == Types.LONGVARBINARY) {
-
-					if (attr.isPrimaryKey() || attr.isForeignKey()) {
-						entitiesToRemove.add(ent);
-						break;
-					}
-				}
-			}
-		}
-
-		for (DbEntity e : entitiesToRemove) {
-			map.removeDbEntity(e.getName(), true);
-		}
-	}
-
-	protected void execute(List<MergerToken> tokens) {
-		MergerContext mergerContext = MergerContext.builder(map).dataNode(node).build();
-		for (MergerToken tok : tokens) {
-			tok.execute(mergerContext);
-		}
-	}
-
-	protected void execute(MergerToken token) throws Exception {
-		MergerContext mergerContext = MergerContext.builder(map).dataNode(node).build();
-		token.execute(mergerContext);
-	}
-
-	private void executeSql(String sql) throws Exception {
-
-		try (Connection conn = dataSourceFactory.getSharedDataSource().getConnection();) {
-
-			try (Statement st = conn.createStatement();) {
-				st.execute(sql);
-			}
-		}
-	}
-
-	protected void assertTokens(List<MergerToken> tokens, int expectedToDb, int expectedToModel) {
-		int actualToDb = 0;
-		int actualToModel = 0;
-		for (MergerToken token : tokens) {
-			if (token.getDirection().isToDb()) {
-				actualToDb++;
-			} else if (token.getDirection().isToModel()) {
-				actualToModel++;
-			}
-		}
-
-		assertEquals("tokens to db", expectedToDb, actualToDb);
-		assertEquals("tokens to model", expectedToModel, actualToModel);
-	}
-
-	protected void assertTokensAndExecute(int expectedToDb, int expectedToModel) {
-		List<MergerToken> tokens = createMergeTokens();
-		assertTokens(tokens, expectedToDb, expectedToModel);
-		execute(tokens);
-	}
-
-	protected MergerFactory mergerFactory() {
-		return node.getAdapter().mergerFactory();
-	}
-
-	protected void dropTableIfPresent(String tableName) throws Exception {
-
-		// must have a dummy datamap for the dummy table for the downstream code
-		// to work
-		DataMap map = new DataMap("dummy");
-		map.setQuotingSQLIdentifiers(map.isQuotingSQLIdentifiers());
-		DbEntity entity = new DbEntity(tableName);
-		map.addDbEntity(entity);
-
-		AbstractToDbToken t = (AbstractToDbToken) mergerFactory().createDropTableToDb(entity);
-
-		for (String sql : t.createSql(node.getAdapter())) {
-
-			try {
-				executeSql(sql);
-			} catch (Exception e) {
-				logger.info("Exception dropping table " + tableName + ", probably abscent..");
-			}
-		}
-	}
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/2f7b1d53/cayenne-server/src/test/java/org/apache/cayenne/merge/MergerFactoryIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/merge/MergerFactoryIT.java b/cayenne-server/src/test/java/org/apache/cayenne/merge/MergerFactoryIT.java
deleted file mode 100644
index 5c4c51b..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/merge/MergerFactoryIT.java
+++ /dev/null
@@ -1,310 +0,0 @@
-/*****************************************************************
- *   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.
- ****************************************************************/
-package org.apache.cayenne.merge;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
-import java.sql.Types;
-
-import org.apache.cayenne.CayenneDataObject;
-import org.apache.cayenne.access.DataContext;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.map.DbJoin;
-import org.apache.cayenne.map.DbRelationship;
-import org.apache.cayenne.map.ObjAttribute;
-import org.apache.cayenne.map.ObjEntity;
-import org.junit.Test;
-
-public class MergerFactoryIT extends MergeCase {
-
-    @Inject
-    private DataContext context;
-
-    @Test
-    public void testAddAndDropColumnToDb() throws Exception {
-        DbEntity dbEntity = map.getDbEntity("PAINTING");
-        assertNotNull(dbEntity);
-
-        // create and add new column to model and db
-        DbAttribute column = new DbAttribute("NEWCOL1", Types.VARCHAR, dbEntity);
-
-        column.setMandatory(false);
-        column.setMaxLength(10);
-        dbEntity.addAttribute(column);
-        assertTokensAndExecute(1, 0);
-
-        // try merge once more to check that is was merged
-        assertTokensAndExecute(0, 0);
-
-        // remove it from model and db
-        dbEntity.removeAttribute(column.getName());
-        assertTokensAndExecute(1, 0);
-        assertTokensAndExecute(0, 0);
-    }
-
-    @Test
-    public void testChangeVarcharSizeToDb() throws Exception {
-        DbEntity dbEntity = map.getDbEntity("PAINTING");
-        assertNotNull(dbEntity);
-
-        // create and add new column to model and db
-        DbAttribute column = new DbAttribute("NEWCOL2", Types.VARCHAR, dbEntity);
-
-        column.setMandatory(false);
-        column.setMaxLength(10);
-        dbEntity.addAttribute(column);
-        assertTokensAndExecute(1, 0);
-
-        // check that is was merged
-        assertTokensAndExecute(0, 0);
-
-        // change size
-        column.setMaxLength(20);
-
-        // merge to db
-        assertTokensAndExecute(1, 0);
-
-        // check that is was merged
-        assertTokensAndExecute(0, 0);
-
-        // clean up
-        dbEntity.removeAttribute(column.getName());
-        assertTokensAndExecute(1, 0);
-        assertTokensAndExecute(0, 0);
-    }
-
-    @Test
-    public void testMultipleTokensToDb() throws Exception {
-        DbEntity dbEntity = map.getDbEntity("PAINTING");
-        assertNotNull(dbEntity);
-
-        DbAttribute column1 = new DbAttribute("NEWCOL3", Types.VARCHAR, dbEntity);
-        column1.setMandatory(false);
-        column1.setMaxLength(10);
-        dbEntity.addAttribute(column1);
-        DbAttribute column2 = new DbAttribute("NEWCOL4", Types.VARCHAR, dbEntity);
-        column2.setMandatory(false);
-        column2.setMaxLength(10);
-        dbEntity.addAttribute(column2);
-
-        assertTokensAndExecute(2, 0);
-
-        // check that is was merged
-        assertTokensAndExecute(0, 0);
-
-        // change size
-        column1.setMaxLength(20);
-        column2.setMaxLength(30);
-
-        // merge to db
-        assertTokensAndExecute(2, 0);
-
-        // check that is was merged
-        assertTokensAndExecute(0, 0);
-
-        // clean up
-        dbEntity.removeAttribute(column1.getName());
-        dbEntity.removeAttribute(column2.getName());
-        assertTokensAndExecute(2, 0);
-        assertTokensAndExecute(0, 0);
-    }
-
-    @Test
-    public void testAddTableToDb() throws Exception {
-        dropTableIfPresent("NEW_TABLE");
-
-        assertTokensAndExecute(0, 0);
-
-        DbEntity dbEntity = new DbEntity("NEW_TABLE");
-
-        DbAttribute column1 = new DbAttribute("ID", Types.INTEGER, dbEntity);
-        column1.setMandatory(true);
-        column1.setPrimaryKey(true);
-        dbEntity.addAttribute(column1);
-
-        DbAttribute column2 = new DbAttribute("NAME", Types.VARCHAR, dbEntity);
-        column2.setMaxLength(10);
-        column2.setMandatory(false);
-        dbEntity.addAttribute(column2);
-
-        map.addDbEntity(dbEntity);
-
-        assertTokensAndExecute(1, 0);
-        assertTokensAndExecute(0, 0);
-
-        ObjEntity objEntity = new ObjEntity("NewTable");
-        objEntity.setDbEntity(dbEntity);
-        ObjAttribute oatr1 = new ObjAttribute("name");
-        oatr1.setDbAttributePath(column2.getName());
-        oatr1.setType("java.lang.String");
-        objEntity.addAttribute(oatr1);
-        map.addObjEntity(objEntity);
-
-        for (int i = 0; i < 5; i++) {
-            CayenneDataObject dao = (CayenneDataObject) context.newObject(objEntity
-                    .getName());
-            dao.writeProperty(oatr1.getName(), "test " + i);
-        }
-        context.commitChanges();
-
-        // clear up
-        map.removeObjEntity(objEntity.getName(), true);
-        map.removeDbEntity(dbEntity.getName(), true);
-        resolver.refreshMappingCache();
-        assertNull(map.getObjEntity(objEntity.getName()));
-        assertNull(map.getDbEntity(dbEntity.getName()));
-        assertFalse(map.getDbEntities().contains(dbEntity));
-
-        assertTokensAndExecute(1, 0);
-        assertTokensAndExecute(0, 0);
-    }
-
-    @Test
-    public void testAddForeignKeyWithTable() throws Exception {
-        dropTableIfPresent("NEW_TABLE");
-
-        assertTokensAndExecute(0, 0);
-
-        DbEntity dbEntity = new DbEntity("NEW_TABLE");
-
-        attr(dbEntity, "ID", Types.INTEGER, true, true);
-        attr(dbEntity, "NAME", Types.VARCHAR, false, false).setMaxLength(10);
-        attr(dbEntity, "ARTIST_ID", Types.BIGINT, false, false);
-
-        map.addDbEntity(dbEntity);
-
-        DbEntity artistDbEntity = map.getDbEntity("ARTIST");
-        assertNotNull(artistDbEntity);
-
-        // relation from new_table to artist
-        DbRelationship r1 = new DbRelationship("toArtistR1");
-        r1.setSourceEntity(dbEntity);
-        r1.setTargetEntityName(artistDbEntity);
-        r1.setToMany(false);
-        r1.addJoin(new DbJoin(r1, "ARTIST_ID", "ARTIST_ID"));
-        dbEntity.addRelationship(r1);
-
-        // relation from artist to new_table
-        DbRelationship r2 = new DbRelationship("toNewTableR2");
-        r2.setSourceEntity(artistDbEntity);
-        r2.setTargetEntityName(dbEntity);
-        r2.setToMany(true);
-        r2.addJoin(new DbJoin(r2, "ARTIST_ID", "ARTIST_ID"));
-        artistDbEntity.addRelationship(r2);
-
-        assertTokensAndExecute(2, 0);
-        assertTokensAndExecute(0, 0);
-
-        // remove relationships
-        dbEntity.removeRelationship(r1.getName());
-        artistDbEntity.removeRelationship(r2.getName());
-        resolver.refreshMappingCache();
-        /*
-         * Db -Rel 'toArtistR1' - NEW_TABLE 1 -> 1 ARTIST"
-r2 =     * Db -Rel 'toNewTableR2' - ARTIST 1 -> * NEW_TABLE"
-         * */
-        assertTokensAndExecute(1, 1);
-        assertTokensAndExecute(0, 0);
-
-        // clear up
-        // map.removeObjEntity(objEntity.getName(), true);
-        map.removeDbEntity(dbEntity.getName(), true);
-        resolver.refreshMappingCache();
-        // assertNull(map.getObjEntity(objEntity.getName()));
-        assertNull(map.getDbEntity(dbEntity.getName()));
-        assertFalse(map.getDbEntities().contains(dbEntity));
-
-        assertTokensAndExecute(1, 0);
-        assertTokensAndExecute(0, 0);
-    }
-
-    @Test
-    public void testAddForeignKeyAfterTable() throws Exception {
-        dropTableIfPresent("NEW_TABLE");
-
-        assertTokensAndExecute(0, 0);
-
-        DbEntity dbEntity = new DbEntity("NEW_TABLE");
-        attr(dbEntity, "ID", Types.INTEGER, true, true);
-        attr(dbEntity, "NAME", Types.VARCHAR, false, false).setMaxLength(10);
-        attr(dbEntity, "ARTIST_ID", Types.BIGINT, false, false);
-
-        map.addDbEntity(dbEntity);
-
-        DbEntity artistDbEntity = map.getDbEntity("ARTIST");
-        assertNotNull(artistDbEntity);
-
-        assertTokensAndExecute(1, 0);
-        assertTokensAndExecute(0, 0);
-
-        // relation from new_table to artist
-        DbRelationship r1 = new DbRelationship("toArtistR1");
-        r1.setSourceEntity(dbEntity);
-        r1.setTargetEntityName(artistDbEntity);
-        r1.setToMany(false);
-        r1.addJoin(new DbJoin(r1, "ARTIST_ID", "ARTIST_ID"));
-        dbEntity.addRelationship(r1);
-
-        // relation from artist to new_table
-        DbRelationship r2 = new DbRelationship("toNewTableR2");
-        r2.setSourceEntity(artistDbEntity);
-        r2.setTargetEntityName(dbEntity);
-        r2.setToMany(true);
-        r2.addJoin(new DbJoin(r2, "ARTIST_ID", "ARTIST_ID"));
-        artistDbEntity.addRelationship(r2);
-
-        assertTokensAndExecute(1, 0);
-        assertTokensAndExecute(0, 0);
-
-        // remove relationships
-        dbEntity.removeRelationship(r1.getName());
-        artistDbEntity.removeRelationship(r2.getName());
-        resolver.refreshMappingCache();
-        /*
-        * Add Relationship ARTIST->NEW_TABLE To Model
-        * Drop Relationship NEW_TABLE->ARTIST To DB
-        * */
-        assertTokensAndExecute(1, 1);
-        assertTokensAndExecute(0, 0);
-
-        // clear up
-        // map.removeObjEntity(objEntity.getName(), true);
-        map.removeDbEntity(dbEntity.getName(), true);
-        resolver.refreshMappingCache();
-        // assertNull(map.getObjEntity(objEntity.getName()));
-        assertNull(map.getDbEntity(dbEntity.getName()));
-        assertFalse(map.getDbEntities().contains(dbEntity));
-
-        assertTokensAndExecute(1, 0);
-        assertTokensAndExecute(0, 0);
-    }
-
-    private static DbAttribute attr(DbEntity dbEntity, String name, int type, boolean mandatory, boolean primaryKey) {
-        DbAttribute column1 = new DbAttribute(name, type, dbEntity);
-        column1.setMandatory(mandatory);
-        column1.setPrimaryKey(primaryKey);
-
-        dbEntity.addAttribute(column1);
-        return column1;
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/2f7b1d53/cayenne-server/src/test/java/org/apache/cayenne/merge/SetAllowNullToDbIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/merge/SetAllowNullToDbIT.java b/cayenne-server/src/test/java/org/apache/cayenne/merge/SetAllowNullToDbIT.java
deleted file mode 100644
index 580b38a..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/merge/SetAllowNullToDbIT.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*****************************************************************
- *   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.
- ****************************************************************/
-package org.apache.cayenne.merge;
-
-import static org.junit.Assert.assertNotNull;
-
-import java.sql.Types;
-
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.map.DbEntity;
-import org.junit.Test;
-
-public class SetAllowNullToDbIT extends MergeCase {
-
-	@Test
-	public void test() throws Exception {
-		DbEntity dbEntity = map.getDbEntity("PAINTING");
-		assertNotNull(dbEntity);
-
-		// create and add new column to model and db
-		DbAttribute column = new DbAttribute("NEWCOL2", Types.VARCHAR, dbEntity);
-
-		try {
-
-			column.setMandatory(true);
-			column.setMaxLength(10);
-			dbEntity.addAttribute(column);
-			assertTokensAndExecute(2, 0);
-
-			// check that is was merged
-			assertTokensAndExecute(0, 0);
-
-			// set null
-			column.setMandatory(false);
-
-			// merge to db
-			assertTokensAndExecute(1, 0);
-
-			// check that is was merged
-			assertTokensAndExecute(0, 0);
-
-			// clean up
-		} finally {
-			dbEntity.removeAttribute(column.getName());
-			assertTokensAndExecute(1, 0);
-			assertTokensAndExecute(0, 0);
-		}
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/2f7b1d53/cayenne-server/src/test/java/org/apache/cayenne/merge/SetNotNullToDbIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/merge/SetNotNullToDbIT.java b/cayenne-server/src/test/java/org/apache/cayenne/merge/SetNotNullToDbIT.java
deleted file mode 100644
index f78c77f..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/merge/SetNotNullToDbIT.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*****************************************************************
- *   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.
- ****************************************************************/
-package org.apache.cayenne.merge;
-
-import static org.junit.Assert.assertNotNull;
-
-import java.sql.Types;
-
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.map.DbEntity;
-import org.junit.Test;
-
-public class SetNotNullToDbIT extends MergeCase {
-
-	@Test
-	public void test() throws Exception {
-		DbEntity dbEntity = map.getDbEntity("PAINTING");
-		assertNotNull(dbEntity);
-
-		// create and add new column to model and db
-		DbAttribute column = new DbAttribute("NEWCOL2", Types.VARCHAR, dbEntity);
-
-		column.setMandatory(false);
-		column.setMaxLength(10);
-		dbEntity.addAttribute(column);
-		assertTokensAndExecute(1, 0);
-
-		// check that is was merged
-		assertTokensAndExecute(0, 0);
-
-		// set not null
-		column.setMandatory(true);
-
-		// merge to db
-		assertTokensAndExecute(1, 0);
-
-		// check that is was merged
-		assertTokensAndExecute(0, 0);
-
-		// clean up
-		dbEntity.removeAttribute(column.getName());
-		assertTokensAndExecute(1, 0);
-		assertTokensAndExecute(0, 0);
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/2f7b1d53/cayenne-server/src/test/java/org/apache/cayenne/merge/SetPrimaryKeyToDbIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/merge/SetPrimaryKeyToDbIT.java b/cayenne-server/src/test/java/org/apache/cayenne/merge/SetPrimaryKeyToDbIT.java
deleted file mode 100644
index 3003b07..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/merge/SetPrimaryKeyToDbIT.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*****************************************************************
- *   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.
- ****************************************************************/
-package org.apache.cayenne.merge;
-
-import java.sql.Types;
-
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.map.DbEntity;
-import org.junit.Test;
-
-public class SetPrimaryKeyToDbIT extends MergeCase {
-
-	@Test
-	public void test() throws Exception {
-		dropTableIfPresent("NEW_TABLE");
-		assertTokensAndExecute(0, 0);
-
-		DbEntity dbEntity1 = new DbEntity("NEW_TABLE");
-
-		DbAttribute e1col1 = new DbAttribute("ID1", Types.INTEGER, dbEntity1);
-		e1col1.setMandatory(true);
-		e1col1.setPrimaryKey(true);
-		dbEntity1.addAttribute(e1col1);
-		map.addDbEntity(dbEntity1);
-
-		assertTokensAndExecute(1, 0);
-		assertTokensAndExecute(0, 0);
-
-		DbAttribute e1col2 = new DbAttribute("ID2", Types.INTEGER, dbEntity1);
-		e1col2.setMandatory(true);
-		dbEntity1.addAttribute(e1col2);
-
-		assertTokensAndExecute(2, 0);
-		assertTokensAndExecute(0, 0);
-
-		e1col1.setPrimaryKey(false);
-		e1col2.setPrimaryKey(true);
-
-		assertTokensAndExecute(1, 0);
-		assertTokensAndExecute(0, 0);
-	}
-}