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 2014/11/24 18:57:17 UTC

cayenne git commit: fix cdb import maven plugin

Repository: cayenne
Updated Branches:
  refs/heads/CAY-1946_1 7f64112f8 -> 949b84ff1


fix cdb import maven plugin


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

Branch: refs/heads/CAY-1946_1
Commit: 949b84ff16f1bccbc330bf45a2ffa7d6da61f10b
Parents: 7f64112
Author: alexkolonitsky <Al...@gmail.com>
Authored: Mon Nov 24 15:34:28 2014 +0300
Committer: alexkolonitsky <Al...@gmail.com>
Committed: Mon Nov 24 15:34:28 2014 +0300

----------------------------------------------------------------------
 .../access/loader/filters/EntityFilters.java    |   4 +-
 .../apache/cayenne/tools/DbImporterTask.java    |   2 -
 .../org/apache/cayenne/tools/ExcludeTable.java  |  33 ++++++
 .../cayenne/tools/dbimport/config/Catalog.java  |  16 +++
 .../config/DefaultReverseEngineeringLoader.java |   1 +
 .../tools/dbimport/config/ExcludeTable.java     |  31 ------
 .../tools/dbimport/config/FilterContainer.java  |   7 ++
 .../dbimport/config/FiltersConfigBuilder.java   |   4 +-
 .../DefaultReverseEngineeringLoaderTest.java    |   5 +
 .../config/FiltersConfigBuilderTest.java        |   1 +
 .../apache/cayenne/tools/DbImporterMojo.java    | 107 ++++++++++++-------
 .../tools/DbImporterMojoConfigurationTest.java  |  10 +-
 .../org/apache/cayenne/tools/config/pom-01.xml  |  83 +++++++-------
 .../apache/cayenne/tools/config/pom-flat.xml    |  70 ++++++------
 .../dbimport/testSchemasAndTableExclude-pom.xml |   2 +-
 .../testSchemasAndTableExclude.map.xml-result   |   1 +
 .../tools/dbimport/testSimpleFiltering-pom.xml  |   2 +-
 17 files changed, 225 insertions(+), 154 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/949b84ff/cayenne-server/src/main/java/org/apache/cayenne/access/loader/filters/EntityFilters.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/loader/filters/EntityFilters.java b/cayenne-server/src/main/java/org/apache/cayenne/access/loader/filters/EntityFilters.java
index 83e9a48..3c25196 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/loader/filters/EntityFilters.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/loader/filters/EntityFilters.java
@@ -300,8 +300,8 @@ public class EntityFilters {
         private String catalog;
         private String schema;
 
-        private Filter<String> tableFilters = NULL;
-        private Filter<String> columnFilters = NULL;
+        private Filter<String> tableFilters = TRUE;
+        private Filter<String> columnFilters = TRUE;
         private Filter<String> proceduresFilters = NULL;
 
         public Builder() {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/949b84ff/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 23fe2bd..e9f698e 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
@@ -27,8 +27,6 @@ import org.apache.cayenne.conn.DataSourceInfo;
 import org.apache.cayenne.tools.dbimport.config.Catalog;
 import org.apache.cayenne.tools.dbimport.config.ExcludeColumn;
 import org.apache.cayenne.tools.dbimport.config.ExcludeProcedure;
-import org.apache.cayenne.tools.dbimport.config.ExcludeTable;
-import org.apache.cayenne.tools.dbimport.config.FilterContainer;
 import org.apache.cayenne.tools.dbimport.config.FiltersConfigBuilder;
 import org.apache.cayenne.tools.dbimport.config.IncludeColumn;
 import org.apache.cayenne.tools.dbimport.config.IncludeProcedure;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/949b84ff/cayenne-tools/src/main/java/org/apache/cayenne/tools/ExcludeTable.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/ExcludeTable.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/ExcludeTable.java
new file mode 100644
index 0000000..22003a7
--- /dev/null
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/ExcludeTable.java
@@ -0,0 +1,33 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.tools;
+
+import org.apache.cayenne.tools.dbimport.config.PatternParam;
+
+/**
+ * @since 3.2.
+ */
+public class ExcludeTable extends PatternParam {
+    public ExcludeTable() {
+    }
+
+    public ExcludeTable(String pattern) {
+        super(pattern);
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/949b84ff/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/Catalog.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/Catalog.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/Catalog.java
index f6b4690..8a01502 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/Catalog.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/Catalog.java
@@ -78,5 +78,21 @@ public class Catalog extends FilterContainer {
         return this;
     }
 
+    @Override
+    public boolean isEmptyContainer() {
+        if (!super.isEmptyContainer()) {
+            return false;
+        }
+
+        if (schemas.isEmpty()) {
+            return true;
+        }
 
+        for (Schema schema : schemas) {
+            if (!schema.isEmptyContainer()) {
+                return false;
+            }
+        }
+        return true;
+    }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/949b84ff/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/DefaultReverseEngineeringLoader.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/DefaultReverseEngineeringLoader.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/DefaultReverseEngineeringLoader.java
index b69c118..22ed0a6 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/DefaultReverseEngineeringLoader.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/DefaultReverseEngineeringLoader.java
@@ -22,6 +22,7 @@ import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.ParserConfigurationException;
 
+import org.apache.cayenne.tools.ExcludeTable;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.w3c.dom.Document;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/949b84ff/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/ExcludeTable.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/ExcludeTable.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/ExcludeTable.java
deleted file mode 100644
index 3618540..0000000
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/ExcludeTable.java
+++ /dev/null
@@ -1,31 +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.config;
-
-/**
- * @since 3.2.
- */
-public class ExcludeTable extends PatternParam {
-    public ExcludeTable() {
-    }
-
-    public ExcludeTable(String pattern) {
-        super(pattern);
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/949b84ff/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FilterContainer.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FilterContainer.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FilterContainer.java
index db461ed..ff9ddd7 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FilterContainer.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FilterContainer.java
@@ -18,6 +18,8 @@
  ****************************************************************/
 package org.apache.cayenne.tools.dbimport.config;
 
+import org.apache.cayenne.tools.ExcludeTable;
+
 import java.util.Collection;
 import java.util.LinkedList;
 
@@ -106,4 +108,9 @@ public class FilterContainer {
         this.excludeProcedures.add(excludeProcedure);
     }
 
+    public boolean isEmptyContainer() {
+        return includeColumns.isEmpty()    && excludeColumns.isEmpty()
+            && includeTables.isEmpty()     && excludeTables.isEmpty()
+            && includeProcedures.isEmpty() && excludeProcedures.isEmpty();
+    }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/949b84ff/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilder.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilder.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilder.java
index 8ccbe7a..7b5819d 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilder.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilder.java
@@ -46,8 +46,10 @@ public final class FiltersConfigBuilder {
     }
 
     public FiltersConfigBuilder add(EntityFilters filter) {
-        if (!filter.getDbPath().equals(new DbPath()) && !filter.isEmpty()) {
+        if (!filter.isEmpty()) {
             this.filters.add(filter);
+        } else if (!filter.getDbPath().equals(new DbPath())) {
+            this.filters.add(defaultFilter(filter.getDbPath()));
         }
 
         return this;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/949b84ff/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/config/DefaultReverseEngineeringLoaderTest.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/config/DefaultReverseEngineeringLoaderTest.java b/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/config/DefaultReverseEngineeringLoaderTest.java
index 16c9735..bf3b9f3 100644
--- a/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/config/DefaultReverseEngineeringLoaderTest.java
+++ b/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/config/DefaultReverseEngineeringLoaderTest.java
@@ -20,6 +20,7 @@
 package org.apache.cayenne.tools.dbimport.config;
 
 import org.apache.cayenne.resource.URLResource;
+import org.apache.cayenne.tools.ExcludeTable;
 import org.junit.Test;
 
 import java.io.File;
@@ -43,6 +44,10 @@ public class DefaultReverseEngineeringLoaderTest {
         assertEquals("catalog-name-01", catalogs.next().getName());
         assertEquals("catalog-name-02", catalogs.next().getName());
 
+        assertCatalog(catalogs);
+    }
+
+    public static void assertCatalog(Iterator<Catalog> catalogs) {
         Catalog catalog = catalogs.next();
         assertEquals("catalog-name-03", catalog.getName());
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/949b84ff/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilderTest.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilderTest.java b/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilderTest.java
index 54fb4c0..6861e2b 100644
--- a/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilderTest.java
+++ b/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilderTest.java
@@ -22,6 +22,7 @@ package org.apache.cayenne.tools.dbimport.config;
 import org.apache.cayenne.access.loader.filters.DbPath;
 import org.apache.cayenne.access.loader.filters.EntityFilters;
 import org.apache.cayenne.access.loader.filters.FiltersConfig;
+import org.apache.cayenne.tools.ExcludeTable;
 import org.junit.Test;
 
 import static org.apache.cayenne.access.loader.filters.FilterFactory.*;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/949b84ff/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 e429478..5354f9d 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
@@ -19,13 +19,14 @@
 package org.apache.cayenne.tools;
 
 import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.apache.cayenne.access.loader.filters.EntityFilters;
 import org.apache.cayenne.access.loader.filters.FilterFactory;
 import org.apache.cayenne.tools.dbimport.config.Catalog;
 import org.apache.cayenne.tools.dbimport.config.ExcludeColumn;
 import org.apache.cayenne.tools.dbimport.config.ExcludeProcedure;
-import org.apache.cayenne.tools.dbimport.config.ExcludeTable;
 import org.apache.cayenne.tools.dbimport.config.FiltersConfigBuilder;
 import org.apache.cayenne.tools.dbimport.config.IncludeColumn;
 import org.apache.cayenne.tools.dbimport.config.IncludeProcedure;
@@ -146,16 +147,23 @@ public class DbImporterMojo extends AbstractMojo {
      */
     private boolean usePrimitives;
 
-    private final ReverseEngineering reverseEngineering = new ReverseEngineering();
-
     private final EntityFilters.Builder filterBuilder = new EntityFilters.Builder();
 
     /**
+     * If true, would use primitives instead of numeric and boolean classes.
+     *
+     * @parameter expression="${cdbimport.reverseEngineering}"
+     */
+    private ReverseEngineering reverseEngineering = new ReverseEngineering();
+
+    /**
      * DB schema to use for DB importing.
      *
      * @parameter expression="${cdbimport.schemaName}"
      * @deprecated since 4.0 renamed to "schema"
      */
+    private String schemaName;
+
     private void setSchemaName(String schemaName) {
         getLog().warn("'schemaName' property is deprecated. Use 'schema' instead");
 
@@ -165,21 +173,17 @@ public class DbImporterMojo extends AbstractMojo {
     /**
      * DB schema to use for DB importing.
      *
-     * @parameter expression="${cdbimport.catalog}"
-     * @since 4.0
-     */
-    private void setCatalog(String catalog) {
-        filterBuilder.catalog(catalog);
-    }
-
-    /**
-     * DB schema to use for DB importing.
-     *
      * @parameter expression="${cdbimport.schema}"
      * @since 4.0
      */
-    private void setSchema(String schema) {
-        filterBuilder.schema(schema);
+    private Schema schema;
+
+    public void setSchema(Schema schema) {
+        if (schema.isEmptyContainer()) {
+            filterBuilder.schema(schema.getName());
+        } else {
+            reverseEngineering.addSchema(schema);
+        }
     }
 
     /**
@@ -189,7 +193,9 @@ public class DbImporterMojo extends AbstractMojo {
      *
      * @parameter expression="${cdbimport.tablePattern}"
      */
-    private void setTablePattern(String tablePattern) {
+    private String tablePattern;
+
+    public void setTablePattern(String tablePattern) {
         filterBuilder.includeTables(tablePattern);
     }
 
@@ -201,7 +207,9 @@ public class DbImporterMojo extends AbstractMojo {
      * @parameter expression="${cdbimport.importProcedures}"
      *            default-value="false"
      */
-    private void setImportProcedures(boolean importProcedures) {
+    private String importProcedures;
+
+    public void setImportProcedures(boolean importProcedures) {
         filterBuilder.setProceduresFilters(importProcedures ? FilterFactory.TRUE : FilterFactory.NULL);
     }
 
@@ -213,7 +221,9 @@ public class DbImporterMojo extends AbstractMojo {
      *
      * @parameter expression="${cdbimport.procedurePattern}"
      */
-    private void setProcedurePattern(String procedurePattern) {
+    private String procedurePattern;
+
+    public void setProcedurePattern(String procedurePattern) {
         filterBuilder.includeProcedures(procedurePattern);
     }
 
@@ -226,6 +236,8 @@ public class DbImporterMojo extends AbstractMojo {
      * @parameter expression="${cdbimport.meaningfulPk}" default-value="false"
      * @deprecated since 4.0 use meaningfulPkTables
      */
+    private boolean meaningfulPk;
+
     public void setMeaningfulPk(boolean meaningfulPk) {
         getLog().warn("'meaningfulPk' property is deprecated. Use 'meaningfulPkTables' pattern instead");
 
@@ -273,10 +285,6 @@ public class DbImporterMojo extends AbstractMojo {
         return config;
     }
 
-    private String getSchema() {
-        return filterBuilder.schema();
-    }
-
     public File getMap() {
         return map;
     }
@@ -301,39 +309,58 @@ public class DbImporterMojo extends AbstractMojo {
         this.url = url;
     }
 
-    public void addIncludeColumn(IncludeColumn includeColumn) {
-        reverseEngineering.addIncludeColumn(includeColumn);
-    }
-
-    public void addExcludeColumn(ExcludeColumn excludeColumn) {
-        reverseEngineering.addExcludeColumn(excludeColumn);
-    }
 
-    public void addIncludeTable(IncludeTable includeTable) {
-        reverseEngineering.addIncludeTable(includeTable);
-    }
+    /**
+     * A comma-separated list of Perl5 regex that defines tables that should be
+     * included in import.
+     *
+     * @parameter expression="${cdbimport.includeTables}"
+     */
+    private String includeTables;
 
-    public void addExcludeTable(ExcludeTable excludeTable) {
-        reverseEngineering.addExcludeTable(excludeTable);
+    public void setIncludeTables(String includeTables) {
+        filterBuilder.includeTables(includeTables);
     }
 
-    public void addIncludeProcedure(IncludeProcedure includeProcedure) {
-        reverseEngineering.addIncludeProcedure(includeProcedure);
-    }
+    /**
+     * A comma-separated list of Perl5 regex that defines tables that should be
+     * skipped from import.
+     *
+     * @parameter expression="${cdbimport.excludeTables}"
+     */
+    private String excludeTables;
 
-    public void addExcludeProcedure(ExcludeProcedure excludeProcedure) {
-        reverseEngineering.addExcludeProcedure(excludeProcedure);
+    public void setExcludeTables(String excludeTables) {
+        filterBuilder.excludeTables(excludeTables);
     }
 
     public void addSchema(Schema schema) {
         reverseEngineering.addSchema(schema);
     }
 
+    /**
+     * DB schema to use for DB importing.
+     *
+     * @parameter expression="${cdbimport.catalog}"
+     * @since 4.0
+     */
+    private Catalog catalog[];
+
     public void addCatalog(Catalog catalog) {
-        reverseEngineering.addCatalog(catalog);
+        if (catalog != null) {
+            if (catalog.isEmptyContainer()) {
+                filterBuilder.catalog(catalog.getName());
+            } else {
+                reverseEngineering.addCatalog(catalog);
+            }
+        }
     }
 
     public ReverseEngineering getReverseEngineering() {
         return reverseEngineering;
     }
+
+    public void setReverseEngineering(ReverseEngineering reverseEngineering) {
+        this.reverseEngineering = reverseEngineering;
+    }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/949b84ff/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoConfigurationTest.java
----------------------------------------------------------------------
diff --git a/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoConfigurationTest.java b/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoConfigurationTest.java
index e5a3a49..49fd23a 100644
--- a/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoConfigurationTest.java
+++ b/plugins/maven-cayenne-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoConfigurationTest.java
@@ -19,6 +19,9 @@
 package org.apache.cayenne.tools;
 
 import static org.apache.cayenne.tools.dbimport.config.DefaultReverseEngineeringLoaderTest.*;
+import static org.junit.Assert.assertEquals;
+
+import org.apache.cayenne.tools.dbimport.config.Schema;
 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
 import org.junit.Test;
 
@@ -29,12 +32,15 @@ public class DbImporterMojoConfigurationTest extends AbstractMojoTestCase {
 
     @Test
     public void testLoadCatalog() throws Exception {
-        assertCatalog(getCdbImport("pom-catalog.xml").getReverseEngineering());
+        assertCatalog(getCdbImport("pom-catalog.xml").getReverseEngineering().getCatalogs().iterator());
     }
 
     @Test
     public void testLoadSchema() throws Exception {
-        assertSchema(getCdbImport("pom-schema.xml").getReverseEngineering());
+        Schema schema = getCdbImport("pom-schema.xml").getReverseEngineering().getSchemas().iterator().next();
+        assertEquals("schema-name-03", schema.getName());
+
+        assertSchemaContent(schema);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/cayenne/blob/949b84ff/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/config/pom-01.xml
----------------------------------------------------------------------
diff --git a/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/config/pom-01.xml b/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/config/pom-01.xml
index c3da6bb..b16afd8 100644
--- a/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/config/pom-01.xml
+++ b/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/config/pom-01.xml
@@ -29,65 +29,68 @@
                 <artifactId>maven-cayenne-plugin</artifactId>
                 <configuration>
                     <map>target/test/org/apache/cayenne/tools/dbimporter-map1.map.xml</map>
-                    <catalog>catalog-name-01</catalog>
 
-                    <catalog>
-                        <name>catalog-name-02</name>
+                    <reverseEngineering>
+                        <catalog>catalog-name-01</catalog>
 
-                        <schema>schema-name-01</schema>
+                        <catalog>
+                            <name>catalog-name-02</name>
 
-                        <schema>
-                            <name>schema-name-02</name>
+                            <schema>schema-name-01</schema>
 
-                            <includeTable>incTable-01</includeTable>
-                            <excludeTable>excTable-01</excludeTable>
+                            <schema>
+                                <name>schema-name-02</name>
 
-                            <includeTable>
-                                <pattern>incTable-02</pattern>
+                                <includeTable>incTable-01</includeTable>
+                                <excludeTable>excTable-01</excludeTable>
 
-                                <includeColumn>includeColumn-01</includeColumn>
-                                <excludeColumn>excludeColumn-01</excludeColumn>
-                            </includeTable>
+                                <includeTable>
+                                    <pattern>incTable-02</pattern>
 
-                            <includeColumn>includeColumn-02</includeColumn>
-                            <excludeColumn>excludeColumn-02</excludeColumn>
-                        </schema>
+                                    <includeColumn>includeColumn-01</includeColumn>
+                                    <excludeColumn>excludeColumn-01</excludeColumn>
+                                </includeTable>
 
-                        <includeColumn>includeColumn-03</includeColumn>
-                        <excludeColumn>excludeColumn-03</excludeColumn>
-                    </catalog>
+                                <includeColumn>includeColumn-02</includeColumn>
+                                <excludeColumn>excludeColumn-02</excludeColumn>
+                            </schema>
 
-                    <schema>schema-name-03</schema>
+                            <includeColumn>includeColumn-03</includeColumn>
+                            <excludeColumn>excludeColumn-03</excludeColumn>
+                        </catalog>
 
-                    <schema>
-                        <name>schema-name-04</name>
+                        <schema>schema-name-03</schema>
 
-                        <includeTable>incTable-04</includeTable>
-                        <excludeTable>excTable-04</excludeTable>
+                        <schema>
+                            <name>schema-name-04</name>
 
-                        <includeTable>
-                            <pattern>incTable-05</pattern>
+                            <includeTable>incTable-04</includeTable>
+                            <excludeTable>excTable-04</excludeTable>
+
+                            <includeTable>
+                                <pattern>incTable-05</pattern>
+
+                                <includeColumn>includeColumn-04</includeColumn>
+                                <excludeColumn>excludeColumn-04</excludeColumn>
+                            </includeTable>
 
                             <includeColumn>includeColumn-04</includeColumn>
                             <excludeColumn>excludeColumn-04</excludeColumn>
-                        </includeTable>
-
-                        <includeColumn>includeColumn-04</includeColumn>
-                        <excludeColumn>excludeColumn-04</excludeColumn>
-                    </schema>
+                        </schema>
 
-                    <includeTable>incTable-06</includeTable>
-                    <excludeTable>excTable-06</excludeTable>
+                        <includeTable>incTable-06</includeTable>
+                        <excludeTable>excTable-06</excludeTable>
 
-                    <includeTable>
-                        <pattern>incTable-07</pattern>
+                        <includeTable>
+                            <pattern>incTable-07</pattern>
 
-                        <includeColumn>includeColumn-06</includeColumn>
-                        <excludeColumn>excludeColumn-06</excludeColumn>
-                    </includeTable>
+                            <includeColumn>includeColumn-06</includeColumn>
+                            <excludeColumn>excludeColumn-06</excludeColumn>
+                        </includeTable>
 
-                    <includeColumn>includeColumn-05</includeColumn>
-                    <excludeColumn>excludeColumn-05</excludeColumn>
+                        <includeColumn>includeColumn-05</includeColumn>
+                        <excludeColumn>excludeColumn-05</excludeColumn>
+                    </reverseEngineering>
                 </configuration>
             </plugin>
         </plugins>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/949b84ff/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/config/pom-flat.xml
----------------------------------------------------------------------
diff --git a/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/config/pom-flat.xml b/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/config/pom-flat.xml
index 0645fe3..e245f94 100644
--- a/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/config/pom-flat.xml
+++ b/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/config/pom-flat.xml
@@ -28,46 +28,48 @@
                 <configuration>
                     <map>target/test/org/apache/cayenne/tools/dbimporter-map1.map.xml</map>
 
-                    <includeTable>includeTable-01</includeTable>
+                    <reverseEngineering>
+                        <includeTable>includeTable-01</includeTable>
 
-                    <includeTable>
-                        <pattern>includeTable-02</pattern>
-                    </includeTable>
+                        <includeTable>
+                            <pattern>includeTable-02</pattern>
+                        </includeTable>
 
-                    <includeTable>
-                        <pattern>includeTable-03</pattern>
+                        <includeTable>
+                            <pattern>includeTable-03</pattern>
 
-                        <includeColumn>includeColumn-01</includeColumn>
-                        <excludeColumn>excludeColumn-01</excludeColumn>
-                    </includeTable>
+                            <includeColumn>includeColumn-01</includeColumn>
+                            <excludeColumn>excludeColumn-01</excludeColumn>
+                        </includeTable>
 
-                    <excludeTable>excludeTable-01</excludeTable>
-                    <excludeTable>
-                        <pattern>excludeTable-02</pattern>
-                    </excludeTable>
-                    <excludeTable>excludeTable-03</excludeTable>
+                        <excludeTable>excludeTable-01</excludeTable>
+                        <excludeTable>
+                            <pattern>excludeTable-02</pattern>
+                        </excludeTable>
+                        <excludeTable>excludeTable-03</excludeTable>
 
-                    <includeColumn>includeColumn-01</includeColumn>
-                    <includeColumn>
-                        <pattern>includeColumn-02</pattern>
-                    </includeColumn>
-                    <includeColumn>includeColumn-03</includeColumn>
-                    <excludeColumn>excludeColumn-01</excludeColumn>
-                    <excludeColumn>
-                        <pattern>excludeColumn-02</pattern>
-                    </excludeColumn>
-                    <excludeColumn>excludeColumn-03</excludeColumn>
+                        <includeColumn>includeColumn-01</includeColumn>
+                        <includeColumn>
+                            <pattern>includeColumn-02</pattern>
+                        </includeColumn>
+                        <includeColumn>includeColumn-03</includeColumn>
+                        <excludeColumn>excludeColumn-01</excludeColumn>
+                        <excludeColumn>
+                            <pattern>excludeColumn-02</pattern>
+                        </excludeColumn>
+                        <excludeColumn>excludeColumn-03</excludeColumn>
 
-                    <includeProcedure>includeProcedure-01</includeProcedure>
-                    <includeProcedure>
-                        <pattern>includeProcedure-02</pattern>
-                    </includeProcedure>
-                    <includeProcedure>includeProcedure-03</includeProcedure>
-                    <excludeProcedure>excludeProcedure-01</excludeProcedure>
-                    <excludeProcedure>
-                        <pattern>excludeProcedure-02</pattern>
-                    </excludeProcedure>
-                    <excludeProcedure>excludeProcedure-03</excludeProcedure>
+                        <includeProcedure>includeProcedure-01</includeProcedure>
+                        <includeProcedure>
+                            <pattern>includeProcedure-02</pattern>
+                        </includeProcedure>
+                        <includeProcedure>includeProcedure-03</includeProcedure>
+                        <excludeProcedure>excludeProcedure-01</excludeProcedure>
+                        <excludeProcedure>
+                            <pattern>excludeProcedure-02</pattern>
+                        </excludeProcedure>
+                        <excludeProcedure>excludeProcedure-03</excludeProcedure>
+                    </reverseEngineering>
                 </configuration>
             </plugin>
         </plugins>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/949b84ff/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testSchemasAndTableExclude-pom.xml
----------------------------------------------------------------------
diff --git a/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testSchemasAndTableExclude-pom.xml b/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testSchemasAndTableExclude-pom.xml
index f6665f8..66b051e 100644
--- a/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testSchemasAndTableExclude-pom.xml
+++ b/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testSchemasAndTableExclude-pom.xml
@@ -36,7 +36,7 @@
                         <name>SCHEMA_01</name>
                     </schema>
 
-                    <excludeTable>Child</excludeTable>
+                    <excludeTables>Child</excludeTables>
 				</configuration>
 			</plugin>
 		</plugins>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/949b84ff/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testSchemasAndTableExclude.map.xml-result
----------------------------------------------------------------------
diff --git a/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testSchemasAndTableExclude.map.xml-result b/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testSchemasAndTableExclude.map.xml-result
index 5853842..83f9934 100644
--- a/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testSchemasAndTableExclude.map.xml-result
+++ b/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testSchemasAndTableExclude.map.xml-result
@@ -21,6 +21,7 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://cayenne.apache.org/schema/7/modelMap http://cayenne.apache.org/schema/7/modelMap.xsd"
           project-version="7">
+    <property name="defaultSchema" value="SCHEMA_01"/>
     <db-entity name="PARENT" schema="SCHEMA_01">
         <db-attribute name="COL2" type="CHAR" length="25"/>
         <db-attribute name="COL3" type="DECIMAL" length="10" scale="2"/>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/949b84ff/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testSimpleFiltering-pom.xml
----------------------------------------------------------------------
diff --git a/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testSimpleFiltering-pom.xml b/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testSimpleFiltering-pom.xml
index 00f10ff..1cb3ed6 100644
--- a/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testSimpleFiltering-pom.xml
+++ b/plugins/maven-cayenne-plugin/src/test/resources/org/apache/cayenne/tools/dbimport/testSimpleFiltering-pom.xml
@@ -32,7 +32,7 @@
                     <driver>org.apache.derby.jdbc.EmbeddedDriver</driver>
                     <url>jdbc:derby:memory:DbImporterMojoTest;create=true</url>
 
-                    <includeTable>Parent</includeTable>
+                    <tablePattern>Parent</tablePattern>
 				</configuration>
 			</plugin>
 		</plugins>