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/11/03 16:22:20 UTC

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

Repository: cayenne
Updated Branches:
  refs/heads/master 53a339978 -> 2a06041df


CAY-2116 Split schema synchronization code in a separate module

* refactoring


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/30f92797
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/30f92797
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/30f92797

Branch: refs/heads/master
Commit: 30f92797404abd7e0743485d1cb887efebe6eddd
Parents: 53a3399
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Thu Nov 3 19:03:11 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Thu Nov 3 19:03:11 2016 +0300

----------------------------------------------------------------------
 .../tools/dbimport/DbImportConfiguration.java   |  72 ++----------
 .../tools/dbimport/DefaultDbImportAction.java   | 112 +++++++++++++------
 2 files changed, 86 insertions(+), 98 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/30f92797/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
index 2b62b06..17537ca 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
@@ -33,18 +33,11 @@ import org.apache.cayenne.dbsync.reverse.db.DbLoaderConfiguration;
 import org.apache.cayenne.dbsync.reverse.db.DbLoaderDelegate;
 import org.apache.cayenne.dbsync.reverse.db.DefaultDbLoaderDelegate;
 import org.apache.cayenne.dbsync.reverse.db.LoggingDbLoaderDelegate;
-import org.apache.cayenne.dbsync.reverse.filters.CatalogFilter;
 import org.apache.cayenne.dbsync.reverse.filters.FiltersConfig;
-import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.map.EntityResolver;
-import org.apache.cayenne.resource.URLResource;
 import org.apache.commons.logging.Log;
 
 import java.io.File;
-import java.io.IOException;
-import java.net.MalformedURLException;
 import java.sql.Connection;
-import java.util.Collections;
 import java.util.regex.Pattern;
 
 /**
@@ -54,24 +47,13 @@ public class DbImportConfiguration {
 
     private static final String DATA_MAP_LOCATION_SUFFIX = ".map.xml";
     private final DataSourceInfo dataSourceInfo = new DataSourceInfo();
-    /**
-     * DB schema to use for DB importing.
-     */
     private final DbLoaderConfiguration dbLoaderConfiguration = new DbLoaderConfiguration();
-    /**
-     * DataMap XML file to use as a base for DB importing.
-     */
     private File dataMapFile;
     /**
      * A default package for ObjEntity Java classes.
      */
     private String defaultPackage;
     private String meaningfulPkTables;
-    /**
-     * Java class implementing org.apache.cayenne.dba.DbAdapter. This attribute
-     * is optional, the default is AutoAdapter, i.e. Cayenne would try to guess
-     * the DB type.
-     */
     private String adapter;
     private boolean usePrimitives;
     private Log logger;
@@ -85,6 +67,9 @@ public class DbImportConfiguration {
         this.logger = logger;
     }
 
+    /**
+     * Retruns DataMap XML file representing the target of the DB import operation.
+     */
     public File getDataMapFile() {
         return dataMapFile;
     }
@@ -109,6 +94,10 @@ public class DbImportConfiguration {
         this.namingStrategy = namingStrategy;
     }
 
+    /**
+     * Returns the name of a Java class implementing {@link DbAdapter}. This attribute is optional, the default is
+     * {@link org.apache.cayenne.dba.AutoAdapter}, i.e. Cayenne will try to guess the DB type.
+     */
     public String getAdapter() {
         return adapter;
     }
@@ -217,50 +206,6 @@ public class DbImportConfiguration {
         return nodeDescriptor;
     }
 
-    public DataMap createDataMap() throws IOException {
-        if (dataMapFile == null) {
-            throw new NullPointerException("Null DataMap File.");
-        }
-
-        DataMap dataMap = new DataMap();
-        initializeDataMap(dataMap);
-        return dataMap;
-    }
-
-    protected void initializeDataMap(DataMap dataMap) throws MalformedURLException {
-        dataMap.setName(getDataMapName());
-        dataMap.setConfigurationSource(new URLResource(dataMapFile.toURI().toURL()));
-        dataMap.setNamespace(new EntityResolver(Collections.singleton(dataMap)));
-
-        // update map defaults
-
-        // do not override default package of existing DataMap unless it is
-        // explicitly requested by the plugin caller
-        String defaultPackage = getDefaultPackage();
-        if (defaultPackage != null && defaultPackage.length() > 0) {
-            dataMap.setDefaultPackage(defaultPackage);
-        }
-
-        CatalogFilter[] catalogs = dbLoaderConfiguration.getFiltersConfig().getCatalogs();
-        if (catalogs.length > 0) {
-            // do not override default catalog of existing DataMap unless it is
-            // explicitly requested by the plugin caller, and the provided catalog is
-            // not a pattern
-            String catalog = catalogs[0].name;
-            if (catalog != null && catalog.length() > 0 && catalog.indexOf('%') < 0) {
-                dataMap.setDefaultCatalog(catalog);
-            }
-
-            // do not override default schema of existing DataMap unless it is
-            // explicitly requested by the plugin caller, and the provided schema is
-            // not a pattern
-            String schema = catalogs[0].schemas[0].name;
-            if (schema != null && schema.length() > 0 && schema.indexOf('%') < 0) {
-                dataMap.setDefaultSchema(schema);
-            }
-        }
-    }
-
     public String getDataMapName() {
         String name = dataMapFile.getName();
         if (!name.endsWith(DATA_MAP_LOCATION_SUFFIX)) {
@@ -282,6 +227,9 @@ public class DbImportConfiguration {
         }
     }
 
+    /**
+     * Returns configuration that should be used for DB import stage when the schema is loaded from the database.
+     */
     public DbLoaderConfiguration getDbLoaderConfig() {
         return dbLoaderConfiguration;
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/30f92797/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DefaultDbImportAction.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DefaultDbImportAction.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DefaultDbImportAction.java
index 8e8ca9b..eab7c44 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DefaultDbImportAction.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DefaultDbImportAction.java
@@ -36,6 +36,7 @@ import org.apache.cayenne.dbsync.merge.factory.MergerTokenFactoryProvider;
 import org.apache.cayenne.dbsync.naming.ObjectNameGenerator;
 import org.apache.cayenne.dbsync.reverse.db.DbLoader;
 import org.apache.cayenne.dbsync.reverse.db.DbLoaderConfiguration;
+import org.apache.cayenne.dbsync.reverse.filters.CatalogFilter;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.EntityResolver;
@@ -110,6 +111,32 @@ public class DefaultDbImportAction implements DbImportAction {
         return reverse;
     }
 
+    /**
+     * Flattens many-to-many relationships in the generated model.
+     */
+    protected static void flattenManyToManyRelationships(DataMap map, Collection<ObjEntity> loadedObjEntities,
+                                                         ObjectNameGenerator objectNameGenerator) {
+        if (loadedObjEntities.isEmpty()) {
+            return;
+        }
+        Collection<ObjEntity> entitiesForDelete = new LinkedList<>();
+
+        for (ObjEntity curEntity : loadedObjEntities) {
+            ManyToManyCandidateEntity entity = ManyToManyCandidateEntity.build(curEntity);
+
+            if (entity != null) {
+                entity.optimizeRelationships(objectNameGenerator);
+                entitiesForDelete.add(curEntity);
+            }
+        }
+
+        // remove needed entities
+        for (ObjEntity curDeleteEntity : entitiesForDelete) {
+            map.removeObjEntity(curDeleteEntity.getName(), true);
+        }
+        loadedObjEntities.removeAll(entitiesForDelete);
+    }
+
     @Override
     public void execute(DbImportConfiguration config) throws Exception {
 
@@ -133,16 +160,14 @@ public class DefaultDbImportAction implements DbImportAction {
             return;
         }
 
-        DataMap targetDataMap = loadExistingDataMap(config.getDataMapFile());
+        DataMap targetDataMap = existingTargetMap(config);
         if (targetDataMap == null) {
-
-            hasChanges = true;
-            File file = config.getDataMapFile();
             logger.info("");
             logger.info("Map file does not exist. Loaded db model will be saved into '"
-                    + (file == null ? "null" : file.getAbsolutePath() + "'"));
+                    + (config.getDataMapFile() == null ? "null" : config.getDataMapFile().getAbsolutePath() + "'"));
 
-            targetDataMap = config.createDataMap();
+            hasChanges = true;
+            targetDataMap = newTargetDataMap(config);
         }
 
         MergerTokenFactory mergerTokenFactory = mergerTokenFactoryProvider.get(adapter);
@@ -212,11 +237,13 @@ public class DefaultDbImportAction implements DbImportAction {
         return tokens;
     }
 
-    protected DataMap loadExistingDataMap(File dataMapFile) throws IOException {
-        if (dataMapFile != null && dataMapFile.exists() && dataMapFile.canRead()) {
-            DataMap dataMap = mapLoader.loadDataMap(new InputSource(dataMapFile.getCanonicalPath()));
+    protected DataMap existingTargetMap(DbImportConfiguration configuration) throws IOException {
+
+        File file = configuration.getDataMapFile();
+        if (file != null && file.exists() && file.canRead()) {
+            DataMap dataMap = mapLoader.loadDataMap(new InputSource(file.getCanonicalPath()));
             dataMap.setNamespace(new EntityResolver(Collections.singleton(dataMap)));
-            dataMap.setConfigurationSource(new URLResource(dataMapFile.toURI().toURL()));
+            dataMap.setConfigurationSource(new URLResource(file.toURI().toURL()));
 
             return dataMap;
         }
@@ -224,6 +251,45 @@ public class DefaultDbImportAction implements DbImportAction {
         return null;
     }
 
+    protected DataMap newTargetDataMap(DbImportConfiguration config) throws IOException {
+
+        DataMap dataMap = new DataMap();
+
+        dataMap.setName(config.getDataMapName());
+        dataMap.setConfigurationSource(new URLResource(config.getDataMapFile().toURI().toURL()));
+        dataMap.setNamespace(new EntityResolver(Collections.singleton(dataMap)));
+
+        // update map defaults
+
+        // do not override default package of existing DataMap unless it is
+        // explicitly requested by the plugin caller
+        String defaultPackage = config.getDefaultPackage();
+        if (defaultPackage != null && defaultPackage.length() > 0) {
+            dataMap.setDefaultPackage(defaultPackage);
+        }
+
+        CatalogFilter[] catalogs = config.getDbLoaderConfig().getFiltersConfig().getCatalogs();
+        if (catalogs.length > 0) {
+            // do not override default catalog of existing DataMap unless it is
+            // explicitly requested by the plugin caller, and the provided catalog is
+            // not a pattern
+            String catalog = catalogs[0].name;
+            if (catalog != null && catalog.length() > 0 && catalog.indexOf('%') < 0) {
+                dataMap.setDefaultCatalog(catalog);
+            }
+
+            // do not override default schema of existing DataMap unless it is
+            // explicitly requested by the plugin caller, and the provided schema is
+            // not a pattern
+            String schema = catalogs[0].schemas[0].name;
+            if (schema != null && schema.length() > 0 && schema.indexOf('%') < 0) {
+                dataMap.setDefaultSchema(schema);
+            }
+        }
+
+        return dataMap;
+    }
+
     private List<MergerToken> reverse(MergerTokenFactory mergerTokenFactory, Iterable<MergerToken> mergeTokens)
             throws IOException {
 
@@ -307,30 +373,4 @@ public class DefaultDbImportAction implements DbImportAction {
         loader.load(dataMap, config.getDbLoaderConfig());
         return dataMap;
     }
-
-    /**
-     * Flattens many-to-many relationships in the generated model.
-     */
-    protected static void flattenManyToManyRelationships(DataMap map, Collection<ObjEntity> loadedObjEntities,
-                                                      ObjectNameGenerator objectNameGenerator) {
-        if (loadedObjEntities.isEmpty()) {
-            return;
-        }
-        Collection<ObjEntity> entitiesForDelete = new LinkedList<>();
-
-        for (ObjEntity curEntity : loadedObjEntities) {
-            ManyToManyCandidateEntity entity = ManyToManyCandidateEntity.build(curEntity);
-
-            if (entity != null) {
-                entity.optimizeRelationships(objectNameGenerator);
-                entitiesForDelete.add(curEntity);
-            }
-        }
-
-        // remove needed entities
-        for (ObjEntity curDeleteEntity : entitiesForDelete) {
-            map.removeObjEntity(curDeleteEntity.getName(), true);
-        }
-        loadedObjEntities.removeAll(entitiesForDelete);
-    }
 }
\ No newline at end of file


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

Posted by aa...@apache.org.
CAY-2116 Split schema synchronization code in a separate module

* refactoring


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/2a06041d
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/2a06041d
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/2a06041d

Branch: refs/heads/master
Commit: 2a06041df8f39485a8ca3c31a6439c7c5a182e1d
Parents: 30f9279
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Thu Nov 3 19:03:11 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Thu Nov 3 19:19:27 2016 +0300

----------------------------------------------------------------------
 .../apache/cayenne/tools/DbImporterTask.java    |  6 +-
 .../tools/dbimport/DbImportConfiguration.java   | 12 +--
 .../tools/dbimport/DefaultDbImportAction.java   |  8 +-
 .../dbimport/DbImportConfigurationTest.java     | 81 --------------------
 .../dbimport/DefaultDbImportActionTest.java     | 14 ++--
 .../modeler/dialog/db/DbLoaderHelper.java       |  2 +-
 .../dialog/db/ModelerDbImportAction.java        |  6 +-
 .../apache/cayenne/tools/DbImporterMojo.java    | 10 +--
 .../cayenne/tools/DbImporterMojoTest.java       |  8 +-
 9 files changed, 28 insertions(+), 119 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/2a06041d/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
index 87fc179..48eb93c 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
@@ -161,7 +161,7 @@ public class DbImporterTask extends Task {
     protected void validateAttributes() throws BuildException {
         StringBuilder error = new StringBuilder("");
 
-        if (config.getDataMapFile() == null) {
+        if (config.getTargetDataMap() == null) {
             error.append("The 'map' attribute must be set.\n");
         }
 
@@ -222,11 +222,11 @@ public class DbImporterTask extends Task {
     }
 
     public File getMap() {
-        return config.getDataMapFile();
+        return config.getTargetDataMap();
     }
 
     public void setMap(File map) {
-        config.setDataMapFile(map);
+        config.setTargetDataMap(map);
     }
 
     public DbImportConfiguration toParameters() {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/2a06041d/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
index 17537ca..16f5abf 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
@@ -48,7 +48,7 @@ public class DbImportConfiguration {
     private static final String DATA_MAP_LOCATION_SUFFIX = ".map.xml";
     private final DataSourceInfo dataSourceInfo = new DataSourceInfo();
     private final DbLoaderConfiguration dbLoaderConfiguration = new DbLoaderConfiguration();
-    private File dataMapFile;
+    private File targetDataMap;
     /**
      * A default package for ObjEntity Java classes.
      */
@@ -70,12 +70,12 @@ public class DbImportConfiguration {
     /**
      * Retruns DataMap XML file representing the target of the DB import operation.
      */
-    public File getDataMapFile() {
-        return dataMapFile;
+    public File getTargetDataMap() {
+        return targetDataMap;
     }
 
-    public void setDataMapFile(File map) {
-        this.dataMapFile = map;
+    public void setTargetDataMap(File map) {
+        this.targetDataMap = map;
     }
 
     public String getDefaultPackage() {
@@ -207,7 +207,7 @@ public class DbImportConfiguration {
     }
 
     public String getDataMapName() {
-        String name = dataMapFile.getName();
+        String name = targetDataMap.getName();
         if (!name.endsWith(DATA_MAP_LOCATION_SUFFIX)) {
             throw new CayenneRuntimeException("DataMap file name must end with '%s': '%s'", DATA_MAP_LOCATION_SUFFIX,
                     name);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/2a06041d/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DefaultDbImportAction.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DefaultDbImportAction.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DefaultDbImportAction.java
index eab7c44..4d6fffb 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DefaultDbImportAction.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DefaultDbImportAction.java
@@ -164,7 +164,7 @@ public class DefaultDbImportAction implements DbImportAction {
         if (targetDataMap == null) {
             logger.info("");
             logger.info("Map file does not exist. Loaded db model will be saved into '"
-                    + (config.getDataMapFile() == null ? "null" : config.getDataMapFile().getAbsolutePath() + "'"));
+                    + (config.getTargetDataMap() == null ? "null" : config.getTargetDataMap().getAbsolutePath() + "'"));
 
             hasChanges = true;
             targetDataMap = newTargetDataMap(config);
@@ -239,7 +239,7 @@ public class DefaultDbImportAction implements DbImportAction {
 
     protected DataMap existingTargetMap(DbImportConfiguration configuration) throws IOException {
 
-        File file = configuration.getDataMapFile();
+        File file = configuration.getTargetDataMap();
         if (file != null && file.exists() && file.canRead()) {
             DataMap dataMap = mapLoader.loadDataMap(new InputSource(file.getCanonicalPath()));
             dataMap.setNamespace(new EntityResolver(Collections.singleton(dataMap)));
@@ -256,7 +256,7 @@ public class DefaultDbImportAction implements DbImportAction {
         DataMap dataMap = new DataMap();
 
         dataMap.setName(config.getDataMapName());
-        dataMap.setConfigurationSource(new URLResource(config.getDataMapFile().toURI().toURL()));
+        dataMap.setConfigurationSource(new URLResource(config.getTargetDataMap().toURI().toURL()));
         dataMap.setNamespace(new EntityResolver(Collections.singleton(dataMap)));
 
         // update map defaults
@@ -368,7 +368,7 @@ public class DefaultDbImportAction implements DbImportAction {
     }
 
     protected DataMap load(DbImportConfiguration config, DbAdapter adapter, Connection connection) throws Exception {
-        DataMap dataMap = config.createDataMap();
+        DataMap dataMap = new DataMap("_import_source_");
         DbLoader loader = config.createLoader(adapter, connection, config.createLoaderDelegate());
         loader.load(dataMap, config.getDbLoaderConfig());
         return dataMap;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/2a06041d/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DbImportConfigurationTest.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DbImportConfigurationTest.java b/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DbImportConfigurationTest.java
deleted file mode 100644
index e8f03d0..0000000
--- a/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DbImportConfigurationTest.java
+++ /dev/null
@@ -1,81 +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.tools.dbimport;
-
-import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.util.XMLEncoder;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import static org.junit.Assert.*;
-
-public class DbImportConfigurationTest {
-
-    @Test
-    public void testCreateDataMap_New() throws Exception {
-        URL outUrl = dataMapUrl("testCreateDataMap1.map.xml");
-
-        File out = new File(outUrl.toURI());
-        out.delete();
-        assertFalse(out.isFile());
-
-        DbImportConfiguration parameters = new DbImportConfiguration();
-        parameters.setDataMapFile(out);
-        DataMap dataMap = parameters.createDataMap();
-        assertEquals("testCreateDataMap1", dataMap.getName());
-        assertEquals(outUrl, dataMap.getConfigurationSource().getURL());
-    }
-
-    @Test
-    public void testCreateDataMap_Existing() throws Exception {
-
-        URL outUrl = dataMapUrl("testCreateDataMap2.map.xml");
-
-        File out = new File(outUrl.toURI());
-        out.delete();
-        assertFalse(out.isFile());
-
-        DataMap tempMap = new DataMap();
-        tempMap.addDbEntity(new DbEntity("X"));
-
-        PrintWriter writer = new PrintWriter(out);
-        tempMap.encodeAsXML(new XMLEncoder(writer));
-        writer.close();
-        assertTrue(out.isFile());
-
-        DbImportConfiguration parameters = new DbImportConfiguration();
-        parameters.setDataMapFile(out);
-        DataMap dataMap = parameters.createDataMap();
-        assertEquals("testCreateDataMap2", dataMap.getName());
-        assertEquals(outUrl, dataMap.getConfigurationSource().getURL());
-    }
-
-    private URL dataMapUrl(String name) throws MalformedURLException {
-        String packagePath = getClass().getPackage().getName().replace('.', '/');
-        URL packageUrl = getClass().getClassLoader().getResource(packagePath);
-        assertNotNull(packageUrl);
-        return new URL(packageUrl, "dbimport/" + name);
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cayenne/blob/2a06041d/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DefaultDbImportActionTest.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DefaultDbImportActionTest.java b/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DefaultDbImportActionTest.java
index 1bf48c7..aa2a561 100644
--- a/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DefaultDbImportActionTest.java
+++ b/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DefaultDbImportActionTest.java
@@ -70,7 +70,6 @@ import static org.apache.cayenne.dbsync.merge.builders.ObjectMother.objEntity;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 import static org.mockito.Matchers.any;
@@ -124,10 +123,11 @@ public class DefaultDbImportActionTest {
         when(config.createLoader(any(DbAdapter.class), any(Connection.class), any(DbLoaderDelegate.class)))
                 .thenReturn(dbLoader);
 
-        final DataMap dataMap = new DataMap();
-        when(config.createDataMap()).thenReturn(dataMap);
         when(config.createMergeDelegate()).thenReturn(new DefaultModelMergeDelegate());
         when(config.getDbLoaderConfig()).thenReturn(new DbLoaderConfiguration());
+        when(config.getTargetDataMap()).thenReturn(new File("xyz.map.xml"));
+        when(config.getNameGenerator()).thenReturn(new DefaultObjectNameGenerator());
+        when(config.getMeaningfulPKFilter()).thenReturn(NamePatternMatcher.EXCLUDE_ALL);
 
         final boolean[] haveWeTriedToSave = {false};
         DefaultDbImportAction action = buildDbImportAction(new FileProjectSaver() {
@@ -136,7 +136,7 @@ public class DefaultDbImportActionTest {
                 haveWeTriedToSave[0] = true;
 
                 // Validation phase
-                assertSame(dataMap, project.getRootNode());
+                assertTrue(project.getRootNode() instanceof DataMap);
             }
         }, null);
 
@@ -167,8 +167,7 @@ public class DefaultDbImportActionTest {
         when(params.createLoader(any(DbAdapter.class), any(Connection.class), any(DbLoaderDelegate.class)))
                 .thenReturn(dbLoader);
 
-        when(params.createDataMap()).thenReturn(new DataMap("testImport"));
-        when(params.getDataMapFile()).thenReturn(FILE_STUB);
+        when(params.getTargetDataMap()).thenReturn(FILE_STUB);
         when(params.createMergeDelegate()).thenReturn(new DefaultModelMergeDelegate());
         when(params.getDbLoaderConfig()).thenReturn(new DbLoaderConfiguration());
         when(params.getNameGenerator()).thenReturn(new DefaultObjectNameGenerator());
@@ -227,8 +226,7 @@ public class DefaultDbImportActionTest {
         when(params.createLoader(any(DbAdapter.class), any(Connection.class), any(DbLoaderDelegate.class)))
                 .thenReturn(dbLoader);
 
-        when(params.createDataMap()).thenReturn(new DataMap("testImport"));
-        when(params.getDataMapFile()).thenReturn(FILE_STUB);
+        when(params.getTargetDataMap()).thenReturn(FILE_STUB);
         when(params.createMergeDelegate()).thenReturn(new DefaultModelMergeDelegate());
         when(params.getDbLoaderConfig()).thenReturn(new DbLoaderConfiguration());
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/2a06041d/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
index 7dede61..81b10be 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
@@ -381,7 +381,7 @@ public class DbLoaderHelper {
             }
 
             if (dataMap.getConfigurationSource() != null) {
-                config.setDataMapFile(new File(dataMap.getConfigurationSource().getURL().getPath()));
+                config.setTargetDataMap(new File(dataMap.getConfigurationSource().getURL().getPath()));
             }
 
             FiltersConfigBuilder filtersConfigBuilder = new FiltersConfigBuilder(reverseEngineering);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/2a06041d/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/ModelerDbImportAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/ModelerDbImportAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/ModelerDbImportAction.java
index cbda470..19d9b03 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/ModelerDbImportAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/ModelerDbImportAction.java
@@ -33,11 +33,11 @@ import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.project.ProjectSaver;
 import org.apache.cayenne.resource.Resource;
 import org.apache.cayenne.tools.dbimport.DbImportAction;
-import org.apache.cayenne.tools.dbimport.DefaultDbImportAction;
 import org.apache.cayenne.tools.dbimport.DbImportConfiguration;
+import org.apache.cayenne.tools.dbimport.DefaultDbImportAction;
 import org.apache.commons.logging.Log;
 
-import java.io.File;
+import java.io.IOException;
 import java.sql.Connection;
 
 public class ModelerDbImportAction implements DbImportAction {
@@ -75,7 +75,7 @@ public class ModelerDbImportAction implements DbImportAction {
         new DefaultDbImportAction(logger, projectSaver, dataSourceFactory, adapterFactory, mapLoader, mergerTokenFactoryProvider) {
 
             @Override
-            protected DataMap loadExistingDataMap(File dataMapFile) {
+            protected DataMap existingTargetMap(DbImportConfiguration configuration) throws IOException {
                 return dbLoaderHelper.getDataMap();
             }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/2a06041d/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
----------------------------------------------------------------------
diff --git a/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java b/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
index 5cd3478..92857e2 100644
--- a/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
+++ b/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
@@ -18,21 +18,15 @@
  ****************************************************************/
 package org.apache.cayenne.tools;
 
-import org.apache.cayenne.configuration.ConfigurationNameMapper;
 import org.apache.cayenne.configuration.DataNodeDescriptor;
-import org.apache.cayenne.configuration.XMLDataMapLoader;
 import org.apache.cayenne.configuration.server.DataSourceFactory;
 import org.apache.cayenne.configuration.server.DbAdapterFactory;
 import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.dbimport.DefaultReverseEngineeringLoader;
 import org.apache.cayenne.dbimport.ReverseEngineering;
 import org.apache.cayenne.dbsync.CayenneDbSyncModule;
 import org.apache.cayenne.dbsync.reverse.filters.FiltersConfigBuilder;
 import org.apache.cayenne.di.DIBootstrap;
 import org.apache.cayenne.di.Injector;
-import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.resource.Resource;
-import org.apache.cayenne.resource.URLResource;
 import org.apache.cayenne.tools.configuration.ToolsModule;
 import org.apache.cayenne.tools.dbimport.DbImportAction;
 import org.apache.cayenne.tools.dbimport.DbImportConfiguration;
@@ -45,8 +39,6 @@ import org.apache.maven.plugin.MojoFailureException;
 
 import javax.sql.DataSource;
 import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
 
 /**
  * Maven mojo to reverse engineer datamap from DB.
@@ -202,7 +194,7 @@ public class DbImporterMojo extends AbstractMojo {
         config.setAdapter(adapter);
         config.setDefaultPackage(defaultPackage);
         config.setDriver(driver);
-        config.setDataMapFile(map);
+        config.setTargetDataMap(map);
         config.setMeaningfulPkTables(meaningfulPkTables);
         config.setNamingStrategy(namingStrategy);
         config.setPassword(password);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/2a06041d/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java
----------------------------------------------------------------------
diff --git a/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java b/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java
index d1c0e48..3fa9f2f 100644
--- a/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java
+++ b/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java
@@ -76,7 +76,7 @@ public class DbImporterMojoTest extends AbstractMojoTestCase {
 
         DbImportConfiguration parameters1 = getCdbImport("dbimporter-pom1.xml").toParameters();
         assertNull(parameters1.getMeaningfulPkTables());
-        assertPathEquals("target/test/org/apache/cayenne/tools/dbimporter-map1.map.xml", parameters1.getDataMapFile()
+        assertPathEquals("target/test/org/apache/cayenne/tools/dbimporter-map1.map.xml", parameters1.getTargetDataMap()
                 .getPath());
 
         assertEquals("x,b*", getCdbImport("dbimporter-pom2.xml").toParameters().getMeaningfulPkTables());
@@ -86,11 +86,11 @@ public class DbImporterMojoTest extends AbstractMojoTestCase {
     public void testToParameters_Map() throws Exception {
 
         DbImportConfiguration parameters1 = getCdbImport("dbimporter-pom1.xml").toParameters();
-        assertNotNull(parameters1.getDataMapFile());
-        assertPathEquals("target/test/org/apache/cayenne/tools/dbimporter-map1.map.xml", parameters1.getDataMapFile()
+        assertNotNull(parameters1.getTargetDataMap());
+        assertPathEquals("target/test/org/apache/cayenne/tools/dbimporter-map1.map.xml", parameters1.getTargetDataMap()
                 .getPath());
 
-        assertNull(getCdbImport("dbimporter-pom2.xml").toParameters().getDataMapFile());
+        assertNull(getCdbImport("dbimporter-pom2.xml").toParameters().getTargetDataMap());
     }
 
     private DbImporterMojo getCdbImport(String pomFileName) throws Exception {