You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by ko...@apache.org on 2015/04/24 00:13:02 UTC

[17/17] cayenne git commit: Merge remote-tracking branch 'apache/master'

Merge remote-tracking branch 'apache/master'

Conflicts:
	cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
	cayenne-server/src/main/java/org/apache/cayenne/access/loader/BooleanNameFilter.java
	cayenne-server/src/main/java/org/apache/cayenne/access/loader/filters/DbPath.java
	cayenne-server/src/main/java/org/apache/cayenne/access/loader/filters/EntityFilters.java
	cayenne-server/src/main/java/org/apache/cayenne/access/loader/filters/FilterFactory.java
	cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderIT.java
	cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/DbPathTest.java
	cayenne-server/src/test/java/org/apache/cayenne/access/loader/filters/FiltersFactory.java
	cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
	cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/Catalog.java
	cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FilterContainer.java
	cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/FiltersConfigBuilder.java
	cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/ReverseEngineering.java
	cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/config/Schema.java
	modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
	modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerOptions.java
	plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
	pom.xml


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

Branch: refs/heads/master
Commit: 09c6da925df7ea651394e6cc33251b4c20a93aa3
Parents: cd4e9ee
Author: Alex Kolonitsky <Al...@gmail.com>
Authored: Fri Apr 24 01:12:01 2015 +0300
Committer: Alex Kolonitsky <Al...@gmail.com>
Committed: Fri Apr 24 01:12:01 2015 +0300

----------------------------------------------------------------------
 cayenne-server/pom.xml                          |   5 +
 .../org/apache/cayenne/access/DbLoader.java     | 200 ++++++++++---------
 .../access/loader/filters/TableFilter.java      |  24 +++
 .../java/org/apache/cayenne/merge/DbMerger.java |   3 +-
 .../org/apache/cayenne/access/DbLoaderIT.java   |  30 +--
 .../org/apache/cayenne/merge/MergeCase.java     |   9 +-
 .../apache/cayenne/tools/DbImporterTask.java    |   4 +-
 .../dbimport/config/FiltersConfigBuilder.java   |   2 +-
 .../config/FiltersConfigBuilderTest.java        |  11 +-
 .../modeler/dialog/db/DbLoaderHelper.java       |   1 +
 .../tools/DbImporterMojoConfigurationTest.java  |  20 +-
 11 files changed, 182 insertions(+), 127 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/09c6da92/cayenne-server/pom.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/pom.xml b/cayenne-server/pom.xml
index d00cd8c..ee4e3c7 100644
--- a/cayenne-server/pom.xml
+++ b/cayenne-server/pom.xml
@@ -48,6 +48,11 @@
 			<artifactId>commons-logging</artifactId>
 			<scope>compile</scope>
 		</dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+            <version>3.0</version>
+        </dependency>
 		<dependency>
 			<groupId>org.apache.velocity</groupId>
 			<artifactId>velocity</artifactId>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09c6da92/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
index c1622b8..1a2e24a 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
@@ -19,24 +19,13 @@
 package org.apache.cayenne.access;
 
 import java.sql.*;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
+import java.util.*;
+import java.util.regex.Pattern;
 
 import org.apache.cayenne.access.loader.DbLoaderConfiguration;
 import org.apache.cayenne.access.loader.DefaultDbLoaderDelegate;
 import org.apache.cayenne.access.loader.ManyToManyCandidateEntity;
 import org.apache.cayenne.access.loader.filters.*;
-import org.apache.cayenne.access.loader.filters.CatalogFilter;
-import org.apache.cayenne.access.loader.filters.SchemaFilter;
-import org.apache.cayenne.access.loader.filters.TableFilter;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.dba.TypesMapping;
 import org.apache.cayenne.map.DataMap;
@@ -46,7 +35,6 @@ import org.apache.cayenne.map.DbJoin;
 import org.apache.cayenne.map.DbRelationship;
 import org.apache.cayenne.map.DbRelationshipDetected;
 import org.apache.cayenne.map.DetectedDbEntity;
-import org.apache.cayenne.map.Entity;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.map.Procedure;
 import org.apache.cayenne.map.ProcedureParameter;
@@ -57,6 +45,7 @@ import org.apache.cayenne.map.naming.NameCheckers;
 import org.apache.cayenne.map.naming.ObjectNameGenerator;
 import org.apache.cayenne.util.EntityMergeSupport;
 import org.apache.cayenne.util.EqualsBuilder;
+import org.apache.commons.lang3.tuple.Pair;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -211,32 +200,43 @@ public class DbLoader {
      * @return
      * @since 4.0
      */
-    public Map<DbEntity, PatternFilter> getTables(DbLoaderConfiguration config, String[] types)
+    public Map<Pair<String, String>, Map<String, Pair<DbEntity, PatternFilter>>> getTables(DbLoaderConfiguration config, String[] types)
             throws SQLException {
         if (types == null || types.length == 0) {
             types = getDefaultTableTypes();
         }
 
-        Map<DbEntity, PatternFilter> tables = new HashMap<DbEntity, PatternFilter>();
+        Map<Pair<String, String>, Map<String, Pair<DbEntity, PatternFilter>>> tables = new HashMap<Pair<String, String>, Map<String, Pair<DbEntity, PatternFilter>>>();
         FiltersConfig filters = config.getFiltersConfig();
-        for (CatalogFilter o : filters.catalogs) {
-            for (SchemaFilter schema : o.schemas) {
-                tables.putAll(getDbEntities(filters, o.name, schema.name, types));
+        for (CatalogFilter catalog : filters.catalogs) {
+            for (SchemaFilter schema : catalog.schemas) {
+                Pair<String, String> path = Pair.of(catalog.name, schema.name);
+                Map<String, Pair<DbEntity, PatternFilter>> dbEntities = getDbEntities(filters, path, types);
+                if (!dbEntities.isEmpty()) {
+                    tables.put(path, dbEntities);
+                }
             }
         }
 
         return tables;
     }
 
-    private Map<DbEntity, PatternFilter> getDbEntities(FiltersConfig filters, String catalog, String schema, String[] types) throws SQLException {
+    /**
+     * @param filters
+     * @param dbPath
+     * @param types
+     * @return Map<TableName, DbEntity>
+     * @throws SQLException
+     */
+    private Map<String, Pair<DbEntity, PatternFilter>> getDbEntities(FiltersConfig filters, Pair<String, String> dbPath, String[] types) throws SQLException {
         if (LOGGER.isDebugEnabled()) {
-            LOGGER.debug("Read tables: catalog=" + catalog + ", schema=" + schema + ", types="
+            LOGGER.debug("Read tables: catalog=" + dbPath.getKey() + ", schema=" + dbPath.getValue() + ", types="
                     + Arrays.toString(types));
         }
 
-        ResultSet rs = getMetaData().getTables(catalog, schema, WILDCARD, types);
+        ResultSet rs = getMetaData().getTables(dbPath.getKey(), dbPath.getValue(), WILDCARD, types);
 
-        Map<DbEntity, PatternFilter> tables = new HashMap<DbEntity, PatternFilter>();
+        Map<String, Pair<DbEntity, PatternFilter>> tables = new HashMap<String, Pair<DbEntity, PatternFilter>>();
         try {
             while (rs.next()) {
                 // Oracle 9i and newer has a nifty recycle bin feature... but we don't
@@ -251,15 +251,15 @@ public class DbLoader {
 
                 DbEntity table = new DetectedDbEntity(name);
 
-                String c = rs.getString("TABLE_CAT");
-                table.setCatalog(c);
+                String catalog = rs.getString("TABLE_CAT");
+                table.setCatalog(catalog);
 
-                String s = rs.getString("TABLE_SCHEM");
-                table.setSchema(s);
+                String schema = rs.getString("TABLE_SCHEM");
+                table.setSchema(schema);
 
-                PatternFilter filter = filters.tableFilter(c, s).isIncludeTable(table.getName());
-                if (filter != null) {
-                    tables.put(table, filter);
+                PatternFilter includeTable = filters.tableFilter(catalog, schema).isIncludeTable(table.getName());
+                if (includeTable != null) {
+                    tables.put(name, Pair.of(table, includeTable));
                 }
             }
         } finally {
@@ -270,22 +270,20 @@ public class DbLoader {
 
     /**
      * Loads dbEntities for the specified tables.
-     *
-     * @param map    DataMap to be populated with DbEntities.
+     *  @param map    DataMap to be populated with DbEntities.
      * @param config
      * @param tables The list of org.apache.cayenne.ashwood.dbutil.Table objects
-     *               for which DbEntities must be created.  @return false if loading must be immediately aborted.
      */
-    public List<DbEntity> loadDbEntities(DataMap map, Map<DbEntity, PatternFilter> tables, DbLoaderConfiguration config) throws SQLException {
+    public List<DbEntity> loadDbEntities(DataMap map, DbLoaderConfiguration config, Map<Pair<String, String>, Map<String, Pair<DbEntity, PatternFilter>>> tables) throws SQLException {
         /** List of db entities to process. */
+
         List<DbEntity> dbEntityList = new ArrayList<DbEntity>();
-        for (Entry<DbEntity, PatternFilter> entry : tables.entrySet()) {
-            DbEntity dbEntity = entry.getKey();
-            PatternFilter tableFilter = entry.getValue();
+        for (Map.Entry<Pair<String, String>, Map<String, Pair<DbEntity, PatternFilter>>> tablesMap : tables.entrySet()) {
+            for (Pair<DbEntity, PatternFilter> dbEntity : tablesMap.getValue().values()) {
 
                 // Check if there already is a DbEntity under such name
                 // if so, consult the delegate what to do
-                DbEntity oldEnt = map.getDbEntity(dbEntity.getName());
+                DbEntity oldEnt = map.getDbEntity(dbEntity.getKey().getName());
                 if (oldEnt != null) {
                     Collection<ObjEntity> oldObjEnt = map.getMappedEntities(oldEnt);
                     if (!oldObjEnt.isEmpty()) {
@@ -301,14 +299,14 @@ public class DbLoader {
                     delegate.dbEntityRemoved(oldEnt);
                 }
 
-                map.addDbEntity(dbEntity);
+                map.addDbEntity(dbEntity.getKey());
 
-                delegate.dbEntityAdded(dbEntity);
+                delegate.dbEntityAdded(dbEntity.getKey());
 
                 // delegate might have thrown this entity out... so check if it is still
                 // around before continuing processing
-                if (map.getDbEntity(dbEntity.getName()) == dbEntity) {
-                    dbEntityList.add(dbEntity);
+                if (map.getDbEntity(dbEntity.getKey().getName()) == dbEntity.getKey()) {
+                    dbEntityList.add(dbEntity.getKey());
                 }
             }
 
@@ -317,12 +315,14 @@ public class DbLoader {
             if (!config.isSkipPrimaryKeyLoading()) {
                 getPrimaryKeyForTable(tablesMap.getValue());
             }
+        }
 
         return dbEntityList;
     }
 
-    private void getPrimaryKeyForTable(Map<String, DbEntity> tables) throws SQLException {
-        for (DbEntity dbEntity : tables.values()) {
+    private void getPrimaryKeyForTable(Map<String, Pair<DbEntity, PatternFilter>> tables) throws SQLException {
+        for (Pair<DbEntity, PatternFilter> pair : tables.values()) {
+            DbEntity dbEntity = pair.getKey();
             ResultSet rs = getMetaData().getPrimaryKeys(dbEntity.getCatalog(), dbEntity.getSchema(), dbEntity.getName());
             try {
                 while (rs.next()) {
@@ -342,6 +342,7 @@ public class DbLoader {
                     if (pkName != null && dbEntity instanceof DetectedDbEntity) {
                         ((DetectedDbEntity) dbEntity).setPrimaryKeyName(pkName);
                     }
+
                 }
             } finally {
                 rs.close();
@@ -349,8 +350,8 @@ public class DbLoader {
         }
     }
 
-    private void loadDbAttributes(DbEntity dbEntity, PatternFilter columnFilter) throws SQLException {
-        ResultSet rs = getMetaData().getColumns(dbEntity.getCatalog(), dbEntity.getSchema(), dbEntity.getName(), "%");
+    private void loadDbAttributes(FiltersConfig filters, Pair<String, String> path, Map<String, Pair<DbEntity, PatternFilter>> entities) throws SQLException {
+        ResultSet rs = getMetaData().getColumns(path.getKey(), path.getValue(), WILDCARD, WILDCARD);
 
         try {
             Set<String> columns = new HashSet<String>();
@@ -361,22 +362,21 @@ public class DbLoader {
                 // names. E.g. for the system table "WK$_ATTR_MAPPING" columns are
                 // returned twice - as "WK$_ATTR_MAPPING" and "WK$$_ATTR_MAPPING"... Go figure
                 String tableName = rs.getString("TABLE_NAME");
-                DbEntity dbEntity = entities.get(tableName);
-                if (dbEntity == null) {
+                Pair<DbEntity, PatternFilter> pair = entities.get(tableName);
+                if (pair == null) {
                     if (LOGGER.isDebugEnabled()) {
                         LOGGER.debug("Skip column for '" + tableName + "." + rs.getString("COLUMN_NAME") + ".");
                     }
                     continue;
                 }
+                DbEntity dbEntity = pair.getKey();
 
                 DbAttribute attr = loadDbAttribute(columns, rs);
                 attr.setEntity(dbEntity);
-
-                if (!columnFilter.isInclude(attr.getName())) {
+                if (!pair.getValue().isInclude(attr.getName())) {
                     if (LOGGER.isDebugEnabled()) {
-                        LOGGER.debug("Importing: attribute '" + attr.getEntity().getName() + "." + attr.getName()
-                                + "' is skipped (Path: " + dbEntity.getCatalog() + "/" + dbEntity.getSchema() + "/"
-                                + dbEntity.getName() + "; Filter: " + columnFilter + ")");
+                        LOGGER.debug("Skip column for '" + attr.getEntity().getName() + "." + attr.getName()
+                                + "' (Path: " + path + "; Filter: " + pair.getValue() + ")");
                     }
                     continue;
                 }
@@ -483,14 +483,14 @@ public class DbLoader {
         return new EntityMergeSupport(map, nameGenerator, !creatingMeaningfulPK);
     }
 
-    protected void loadDbRelationships(DbLoaderConfiguration config, Map<DbPath, Map<String, DbEntity>> tables) throws SQLException {
+    protected void loadDbRelationships(DbLoaderConfiguration config, Map<Pair<String, String>, Map<String, Pair<DbEntity, PatternFilter>>> tables) throws SQLException {
         if (config.isSkipRelationshipsLoading()) {
             return;
         }
 
         // Get all the foreign keys referencing this table
 
-        for (Map.Entry<DbPath, Map<String, DbEntity>> pathEntry : tables.entrySet()) {
+        for (Map.Entry<Pair<String, String>, Map<String, Pair<DbEntity, PatternFilter>>> pathEntry : tables.entrySet()) {
             Map<String, Set<ExportedKey>> keys = loadExportedKeys(config, pathEntry.getKey(), pathEntry.getValue());
             for (Map.Entry<String, Set<ExportedKey>> entry : keys.entrySet()) {
                 if (LOGGER.isDebugEnabled()) {
@@ -503,13 +503,13 @@ public class DbLoader {
                     throw new IllegalStateException();
                 }
 
-                DbEntity pkEntity = pathEntry.getValue().get(key.getPKTableName());
+                DbEntity pkEntity = pathEntry.getValue().get(key.getPKTableName()).getKey();
                 if (pkEntity == null) {
                     skipRelationLog(key, key.getPKTableName());
                     continue;
                 }
 
-                DbEntity fkEntity = pathEntry.getValue().get(key.getFKTableName());
+                DbEntity fkEntity = pathEntry.getValue().get(key.getFKTableName()).getKey();
                 if (fkEntity == null) {
                     skipRelationLog(key, key.getFKTableName());
                     continue;
@@ -596,17 +596,18 @@ public class DbLoader {
         }
     }
 
-    private Map<String, Set<ExportedKey>> loadExportedKeys(DbLoaderConfiguration config, DbPath dbPath, Map<String, DbEntity> tables) throws SQLException {
+    private Map<String, Set<ExportedKey>> loadExportedKeys(DbLoaderConfiguration config, Pair<String, String> dbPath, Map<String, Pair<DbEntity, PatternFilter>> tables) throws SQLException {
         Map<String, Set<ExportedKey>> keys = new HashMap<String, Set<ExportedKey>>();
 
-        for (DbEntity dbEntity : tables.values()) {
+        for (Pair<DbEntity, PatternFilter> pair : tables.values()) {
+            DbEntity dbEntity = pair.getKey();
             if (!delegate.dbRelationship(dbEntity)) {
                 continue;
             }
 
             ResultSet rs;
             try {
-                rs = getMetaData().getExportedKeys(dbPath.catalog, dbPath.schema, dbEntity.getName());
+                rs = getMetaData().getExportedKeys(dbPath.getKey(), dbPath.getValue(), dbEntity.getName());
             } catch (SQLException cay182Ex) {
                 // Sybase-specific - the line above blows on VIEWS, see CAY-182.
                 LOGGER.info("Error getting relationships for '" + dbPath + "', ignoring. "
@@ -618,13 +619,14 @@ public class DbLoader {
                 while (rs.next()) {
                     ExportedKey key = ExportedKey.extractData(rs);
 
-                    DbEntity fkEntity = tables.get(key.getFKTableName());
-                    if (fkEntity == null) {
+                    Pair<DbEntity, PatternFilter> p = tables.get(key.getFKTableName());
+                    if (p == null) {
                         skipRelationLog(key, key.getFKTableName());
                         continue;
                     }
-                    DbPath path = new DbPath(fkEntity.getCatalog(), fkEntity.getSchema(), fkEntity.getName());
-                    if (!config.getFiltersConfig().filter(path).tableFilter().isInclude(fkEntity)) {
+
+                    DbEntity fkEntity = p.getKey();
+                    if (config.getFiltersConfig().tableFilter(fkEntity.getCatalog(), fkEntity.getSchema()).isIncludeTable(fkEntity.getName()) == null) {
                         continue;
                     }
 
@@ -727,13 +729,15 @@ public class DbLoader {
      *
      * @since 1.0.7
      * @deprecated since 4.0 use
+     * {@link #load(org.apache.cayenne.map.DataMap, DbLoaderConfiguration)}
+     * method that supports catalogs.
      */
     @Deprecated
     public DataMap loadDataMapFromDB(String schemaPattern, String tablePattern, DataMap dataMap) throws SQLException {
 
         DbLoaderConfiguration configuration = new DbLoaderConfiguration();
         configuration.setFiltersConfig(FiltersConfig.create(null, schemaPattern,
-                        TableFilter.include(tablePattern), PatternFilter.INCLUDE_NOTHING));
+                TableFilter.include(tablePattern), PatternFilter.INCLUDE_NOTHING));
 
         load(dataMap, configuration);
         return dataMap;
@@ -745,8 +749,8 @@ public class DbLoader {
      * of tables to read.
      *
      * @deprecated since 4.0 use
-     *             {@link #load(org.apache.cayenne.map.DataMap, DbLoaderConfiguration, String...)}
-     *             method that supports catalogs.
+     * {@link #load(org.apache.cayenne.map.DataMap, DbLoaderConfiguration)}
+     * method that supports catalogs.
      */
     @Deprecated
     public DataMap loadDataMapFromDB(String schemaPattern, String tablePattern, String[] tableTypes, DataMap dataMap)
@@ -772,8 +776,8 @@ public class DbLoader {
     public void load(DataMap dataMap, DbLoaderConfiguration config) throws SQLException {
         LOGGER.info("Schema loading...");
 
-		String[] tableTypes = config.getTableTypes() == null ? this.getDefaultTableTypes() : config.getTableTypes();
-		List<DbEntity> entities = loadDbEntities(dataMap, getTables(config, tableTypes), config);
+        Map<Pair<String, String>, Map<String, Pair<DbEntity, PatternFilter>>> tables = getTables(config, config.getTableTypes());
+        List<DbEntity> entities = loadDbEntities(dataMap, config, tables);
 
         if (entities != null) {
             loadDbRelationships(config, tables);
@@ -820,7 +824,7 @@ public class DbLoader {
     public void loadProceduresFromDB(String schemaPattern, String namePattern, DataMap dataMap) throws SQLException {
         DbLoaderConfiguration configuration = new DbLoaderConfiguration();
         configuration.setFiltersConfig(FiltersConfig.create(null, schemaPattern,
-                        TableFilter.include(null), new PatternFilter().include(namePattern)));
+                TableFilter.everything(), new PatternFilter().include(namePattern)));
 
         loadProcedures(dataMap, configuration);
     }
@@ -854,28 +858,35 @@ public class DbLoader {
     }
 
     private void loadProceduresColumns(DbLoaderConfiguration config, Map<String, Procedure> procedures) throws SQLException {
-        for (DbPath dbPath : config.getFiltersConfig().pathsForQueries()) {
-            ResultSet columnsRS = getMetaData().getProcedureColumns(dbPath.catalog, dbPath.schema, null, null);
-            try {
-                while (columnsRS.next()) {
 
-                    String schema = columnsRS.getString("PROCEDURE_SCHEM");
-                    String name = columnsRS.getString("PROCEDURE_NAME");
-                    String key = (schema == null ? "" : schema + '.') + name;
-                    Procedure procedure = procedures.get(key);
-                    if (procedure == null) {
-                        continue;
-                    }
+        for (CatalogFilter catalog : config.getFiltersConfig().catalogs) {
+            for (SchemaFilter schema : catalog.schemas) {
+                loadProceduresColumns(procedures, catalog.name, schema.name);
+            }
+        }
+    }
 
-                    ProcedureParameter column = loadProcedureParams(columnsRS, key, procedure);
-                    if (column == null) {
-                        continue;
-                    }
-                    procedure.addCallParameter(column);
+    private void loadProceduresColumns(Map<String, Procedure> procedures, String catalog, String schema) throws SQLException {
+        ResultSet columnsRS = getMetaData().getProcedureColumns(catalog, schema, null, null);
+        try {
+            while (columnsRS.next()) {
+
+                String s = columnsRS.getString("PROCEDURE_SCHEM");
+                String name = columnsRS.getString("PROCEDURE_NAME");
+                String key = (s == null ? "" : s + '.') + name;
+                Procedure procedure = procedures.get(key);
+                if (procedure == null) {
+                    continue;
                 }
-            } finally {
-                columnsRS.close();
+
+                ProcedureParameter column = loadProcedureParams(columnsRS, key, procedure);
+                if (column == null) {
+                    continue;
+                }
+                procedure.addCallParameter(column);
             }
+        } finally {
+            columnsRS.close();
         }
     }
 
@@ -941,13 +952,13 @@ public class DbLoader {
         Map<String, Procedure> procedures = new HashMap<String, Procedure>();
 
         FiltersConfig filters = config.getFiltersConfig();
-        for (CatalogFilter catalogFilter : filters.catalogs) {
-            for (SchemaFilter schema : catalogFilter.schemas) {
-                if (filters.proceduresFilter(catalogFilter.name, schema.name) == null) {
+        for (CatalogFilter catalog : filters.catalogs) {
+            for (SchemaFilter schema : catalog.schemas) {
+                if (filters.proceduresFilter(catalog.name, schema.name).isEmpty()) {
                     continue;
                 }
 
-                procedures.putAll(loadProcedures(filters, catalogFilter.name, schema.name));
+                procedures.putAll(loadProcedures(filters, catalog.name, schema.name));
             }
         }
 
@@ -966,7 +977,8 @@ public class DbLoader {
                 procedure.setCatalog(rs.getString("PROCEDURE_CAT"));
                 procedure.setSchema(rs.getString("PROCEDURE_SCHEM"));
 
-                if (filters.proceduresFilter(procedure.getCatalog(), procedure.getSchema()).isInclude(name)) {
+                if (filters.proceduresFilter(procedure.getCatalog(), procedure.getSchema())
+                        .isInclude(procedure.getName())) {
                     LOGGER.info("skipping Cayenne PK procedure: " + name);
                     continue;
                 }
@@ -1010,4 +1022,4 @@ public class DbLoader {
     public ObjectNameGenerator getNameGenerator() {
         return nameGenerator;
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09c6da92/cayenne-server/src/main/java/org/apache/cayenne/access/loader/filters/TableFilter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/loader/filters/TableFilter.java b/cayenne-server/src/main/java/org/apache/cayenne/access/loader/filters/TableFilter.java
index fa0ad2f..640c0a8 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/loader/filters/TableFilter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/loader/filters/TableFilter.java
@@ -109,4 +109,28 @@ public class TableFilter {
 
         return res;
     }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+
+        if (!(o instanceof TableFilter)) {
+            return false;
+        }
+
+        TableFilter that = (TableFilter) o;
+
+        return excludes.equals(that.excludes)
+                && includes.equals(that.includes);
+
+    }
+
+    @Override
+    public int hashCode() {
+        int result = includes.hashCode();
+        result = 31 * result + excludes.hashCode();
+        return result;
+    }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09c6da92/cayenne-server/src/main/java/org/apache/cayenne/merge/DbMerger.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/merge/DbMerger.java b/cayenne-server/src/main/java/org/apache/cayenne/merge/DbMerger.java
index 6cc1fa3..d9cf154 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/merge/DbMerger.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/merge/DbMerger.java
@@ -23,7 +23,6 @@ import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.DbLoader;
 import org.apache.cayenne.access.loader.DbLoaderConfiguration;
 import org.apache.cayenne.access.loader.LoggingDbLoaderDelegate;
-import org.apache.cayenne.access.loader.filters.DbPath;
 import org.apache.cayenne.access.loader.filters.FiltersConfig;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.map.Attribute;
@@ -113,7 +112,7 @@ public class DbMerger {
     private Collection<DbEntity> filter(DataMap existing, FiltersConfig filtersConfig) {
         Collection<DbEntity> existingFiltered = new LinkedList<DbEntity>();
         for (DbEntity entity : existing.getDbEntities()) {
-            if (filtersConfig.filter(DbPath.build(entity)).tableFilter().isInclude(entity)) {
+            if (filtersConfig.tableFilter(entity.getCatalog(), entity.getSchema()).isIncludeTable(entity.getName()) != null) {
                 existingFiltered.add(entity);
             }
         }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09c6da92/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderIT.java
index 7355740..e002db5 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderIT.java
@@ -21,6 +21,7 @@ package org.apache.cayenne.access;
 
 import java.sql.Types;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -43,6 +44,7 @@ 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.lang3.tuple.Pair;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -104,15 +106,15 @@ public class DbLoaderIT extends ServerCase {
 
         String tableLabel = adapter.tableTypeForTable();
 
-        Collection<DbEntity> tables = loader.getTables(new DbLoaderConfiguration(), new String[] { tableLabel })
+        Collection<Pair<DbEntity, PatternFilter>> tables = loader.getTables(new DbLoaderConfiguration(), new String[] { tableLabel })
                 .values().iterator().next().values();
 
         assertNotNull(tables);
 
         boolean foundArtist = false;
 
-        for (DbEntity table : tables) {
-            if ("ARTIST".equalsIgnoreCase(table.getName())) {
+        for (Pair<DbEntity, PatternFilter> table : tables) {
+            if ("ARTIST".equalsIgnoreCase(table.getKey().getName())) {
                 foundArtist = true;
                 break;
             }
@@ -127,9 +129,9 @@ public class DbLoaderIT extends ServerCase {
         DbLoaderConfiguration config = new DbLoaderConfiguration();
         config.setFiltersConfig(
                 FiltersConfig.create("WRONG", null, TableFilter.everything(), PatternFilter.INCLUDE_NOTHING));
-        Map<DbEntity, PatternFilter> tables = loader.getTables(
+        Map<Pair<String, String>, Map<String, Pair<DbEntity, PatternFilter>>> tables = loader.getTables(
                 config,
-                new String[]{ adapter.tableTypeForTable()});
+                new String[]{adapter.tableTypeForTable()});
 
         assertNotNull(tables);
         assertTrue(tables.isEmpty());
@@ -141,9 +143,9 @@ public class DbLoaderIT extends ServerCase {
         DbLoaderConfiguration config = new DbLoaderConfiguration();
         config.setFiltersConfig(
                 FiltersConfig.create(null, "WRONG", TableFilter.everything(), PatternFilter.INCLUDE_NOTHING));
-        Map<DbEntity, PatternFilter> tables = loader.getTables(
+        Map<Pair<String, String>, Map<String, Pair<DbEntity, PatternFilter>>> tables = loader.getTables(
                 config,
-                new String[]{ adapter.tableTypeForTable()});
+                new String[]{adapter.tableTypeForTable()});
 
         assertNotNull(tables);
         assertTrue(tables.isEmpty());
@@ -157,7 +159,7 @@ public class DbLoaderIT extends ServerCase {
 
         loader.setCreatingMeaningfulPK(true);
 
-        Map<DbEntity, PatternFilter> testLoader = loader.getTables(CONFIG, tableLabel);
+        Map<Pair<String, String>, Map<String, Pair<DbEntity, PatternFilter>>> testLoader = loader.getTables(CONFIG, tableLabel);
         if (testLoader.isEmpty()) {
             testLoader = loader.getTables(CONFIG, tableLabel);
         }
@@ -191,7 +193,7 @@ public class DbLoaderIT extends ServerCase {
         String tableLabel = adapter.tableTypeForTable();
 
         // *** TESTING THIS ***
-        List<DbEntity> entities = loader.loadDbEntities(map, loader.getTables(CONFIG, new String[]{tableLabel}), CONFIG);
+        List<DbEntity> entities = loader.loadDbEntities(map, CONFIG, loader.getTables(CONFIG, new String[]{tableLabel}));
 
         assertDbEntities(map);
 
@@ -200,12 +202,14 @@ public class DbLoaderIT extends ServerCase {
         }
 
         // *** TESTING THIS ***
-        HashMap<DbPath, Map<String, DbEntity>> tables = new HashMap<DbPath, Map<String, DbEntity>>();
-        HashMap<String, DbEntity> value = new HashMap<String, DbEntity>();
+        Map<Pair<String, String>, Map<String, Pair<DbEntity, PatternFilter>>> tables =
+                new HashMap<Pair<String, String>, Map<String, Pair<DbEntity, PatternFilter>>>();
+
+        Map<String, Pair<DbEntity, PatternFilter>> value = new HashMap<String, Pair<DbEntity, PatternFilter>>();
         for (DbEntity e : entities) {
-            value.put(e.getName(), e);
+            value.put(e.getName(), Pair.of(e, PatternFilter.INCLUDE_EVERYTHING));
         }
-        tables.put(new DbPath(), value);
+        tables.put(Pair.of((String) null, (String) null), value);
         loader.loadDbRelationships(CONFIG, tables);
 
         if (supportsFK) {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09c6da92/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
index f7a2d21..266bb69 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/merge/MergeCase.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/merge/MergeCase.java
@@ -18,21 +18,19 @@
  ****************************************************************/
 package org.apache.cayenne.merge;
 
-import static org.apache.cayenne.access.loader.filters.FilterFactory.*;
 import static org.junit.Assert.assertEquals;
 
 import java.sql.Connection;
 import java.sql.Statement;
 import java.sql.Types;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.loader.DbLoaderConfiguration;
-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.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;
@@ -107,7 +105,8 @@ public abstract class MergeCase extends ServerCase {
 
     protected List<MergerToken> createMergeTokens() {
         DbLoaderConfiguration loaderConfiguration = new DbLoaderConfiguration();
-        loaderConfiguration.setFiltersConfig(new FiltersConfig(new EntityFilters(DbPath.EMPTY, include("ARTIST|GALLERY|PAINTING|NEW_TABLE2?"), TRUE, NULL)));
+        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);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09c6da92/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 7ff45ea..ebbb7e8 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
@@ -21,6 +21,9 @@ package org.apache.cayenne.tools;
 import java.io.File;
 
 import org.apache.cayenne.access.loader.filters.OldFilterConfigBridge;
+import org.apache.cayenne.configuration.DataNodeDescriptor;
+import org.apache.cayenne.configuration.server.DataSourceFactory;
+import org.apache.cayenne.configuration.server.DbAdapterFactory;
 import org.apache.cayenne.conn.DataSourceInfo;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.di.DIBootstrap;
@@ -47,7 +50,6 @@ import org.apache.tools.ant.Project;
 import org.apache.tools.ant.Task;
 
 import javax.sql.DataSource;
-import java.io.File;
 
 public class DbImporterTask extends Task {
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09c6da92/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 ac16fb3..b26c9e6 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
@@ -175,8 +175,8 @@ public final class FiltersConfigBuilder {
     private void compactSchemas() {
         for (Catalog catalog : engineering.getCatalogs()) {
             catalog.getSchemas().addAll(engineering.getSchemas());
-            engineering.setSchemas(null);
         }
+        engineering.setSchemas(null);
     }
 
     private void compactProcedureFilter() {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09c6da92/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 0e723e0..e3086a7 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
@@ -76,11 +76,11 @@ public class FiltersConfigBuilderTest {
                 "      ExcludeTable: table2\n", engineering.toString());
     }
 
-
     @Test
     public void testCompact_03() {
         ReverseEngineering engineering = new ReverseEngineering();
-        engineering.addCatalog(new Catalog("APP"));
+        engineering.addCatalog(new Catalog("APP1"));
+        engineering.addCatalog(new Catalog("APP2"));
 
         engineering.addExcludeTable(new ExcludeTable("SYS_.*"));
         engineering.addExcludeColumn(new ExcludeColumn("calculated_.*"));
@@ -89,7 +89,12 @@ public class FiltersConfigBuilderTest {
         builder.compact();
         assertEquals(
                 "ReverseEngineering: \n" +
-                "  Catalog: APP\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" +

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09c6da92/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 caf0e4d..5d24a59 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
@@ -31,6 +31,7 @@ import org.apache.cayenne.configuration.event.DataMapEvent;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.map.DbRelationship;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.map.event.EntityEvent;
 import org.apache.cayenne.map.event.MapEvent;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/09c6da92/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 8a195a6..4ca2190 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
@@ -18,19 +18,20 @@
  ****************************************************************/
 package org.apache.cayenne.tools;
 
-import static org.apache.cayenne.access.loader.filters.FilterFactory.NULL;
-import static org.apache.cayenne.access.loader.filters.FilterFactory.exclude;
 import static org.apache.cayenne.tools.dbimport.config.DefaultReverseEngineeringLoaderTest.*;
 
-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.access.loader.filters.IncludeTableFilter;
+import org.apache.cayenne.access.loader.filters.PatternFilter;
+import org.apache.cayenne.access.loader.filters.TableFilter;
 import org.apache.cayenne.tools.dbimport.DbImportConfiguration;
 import org.apache.cayenne.tools.dbimport.config.Schema;
 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
 import org.junit.Test;
 
 import java.util.Collections;
+import java.util.TreeSet;
+import java.util.regex.Pattern;
 
 public class DbImporterMojoConfigurationTest extends AbstractMojoTestCase {
 
@@ -52,11 +53,14 @@ public class DbImporterMojoConfigurationTest extends AbstractMojoTestCase {
         FiltersConfig filters = getCdbImport("pom-schema-2.xml").toParameters()
                 .getDbLoaderConfig().getFiltersConfig();
 
-        DbPath path = new DbPath(null, "NHL_STATS");
-        assertEquals(Collections.singletonList(path), filters.getDbPaths());
+        TreeSet<IncludeTableFilter> includes = new TreeSet<IncludeTableFilter>();
+        includes.add(new IncludeTableFilter(null, new PatternFilter().exclude("^ETL_.*")));
 
-        EntityFilters filter = filters.filter(path);
-        assertEquals(filter, new EntityFilters(path, exclude("^ETL_.*"), exclude("^ETL_.*"), NULL));
+        TreeSet<Pattern> excludes = new TreeSet<Pattern>(PatternFilter.PATTERN_COMPARATOR);
+        excludes.add(PatternFilter.pattern("^ETL_.*"));
+
+        assertEquals(filters.tableFilter(null, "NHL_STATS"),
+                new TableFilter(includes, excludes));
     }
 
     @Test


Re: [17/17] cayenne git commit: Merge remote-tracking branch 'apache/master'

Posted by Michael Gentry <mg...@masslight.net>.
No rush, Alex.  :-)

One of the limitations of building a framework is we can't rely on nice
things like Apache Commons because we don't want to introduce
version/dependency conflicts in applications that use Cayenne.  (I know
I've wanted to plug in a few StringUtils calls several times.)

Thanks,

mrg


On Fri, Apr 24, 2015 at 9:10 AM, Alex Kolonitsky <
akolonitsky@objectstyle.com> wrote:

> I will remove this dependency today.
>
> > On Apr 24, 2015, at 3:27 PM, Michael Gentry <mg...@masslight.net>
> wrote:
> >
> > Looks like org.apache.commons.lang3.tuple.Pair is used in multiple places
> > now, such as in DbLoader:
> >
> > -    public Map<DbEntity, PatternFilter> getTables(DbLoaderConfiguration
> > config, String[] types)
> > +    public Map<Pair<String, String>, Map<String, Pair<DbEntity,
> > PatternFilter>>> getTables(DbLoaderConfiguration config, String[] types)
> >
> > mrg
> >
> >
> > On Fri, Apr 24, 2015 at 3:52 AM, Andrus Adamchik <andrus@objectstyle.org
> >
> > wrote:
> >
> >> Alex, this change looks suspect. Was it intentional?
> >>
> >>
> >>> On Apr 24, 2015, at 1:13 AM, kolonitsky@apache.org wrote:
> >>>
> >>>
> >>
> http://git-wip-us.apache.org/repos/asf/cayenne/blob/09c6da92/cayenne-server/pom.xml
> >>> ----------------------------------------------------------------------
> >>> diff --git a/cayenne-server/pom.xml b/cayenne-server/pom.xml
> >>> index d00cd8c..ee4e3c7 100644
> >>> --- a/cayenne-server/pom.xml
> >>> +++ b/cayenne-server/pom.xml
> >>> @@ -48,6 +48,11 @@
> >>>                      <artifactId>commons-logging</artifactId>
> >>>                      <scope>compile</scope>
> >>>              </dependency>
> >>> +        <dependency>
> >>> +            <groupId>org.apache.commons</groupId>
> >>> +            <artifactId>commons-lang3</artifactId>
> >>> +            <version>3.0</version>
> >>> +        </dependency>
> >>>              <dependency>
> >>>                      <groupId>org.apache.velocity</groupId>
> >>>                      <artifactId>velocity</artifactId>
> >>
> >>
>
>

Re: [17/17] cayenne git commit: Merge remote-tracking branch 'apache/master'

Posted by Alex Kolonitsky <ak...@objectstyle.com>.
I will remove this dependency today.

> On Apr 24, 2015, at 3:27 PM, Michael Gentry <mg...@masslight.net> wrote:
> 
> Looks like org.apache.commons.lang3.tuple.Pair is used in multiple places
> now, such as in DbLoader:
> 
> -    public Map<DbEntity, PatternFilter> getTables(DbLoaderConfiguration
> config, String[] types)
> +    public Map<Pair<String, String>, Map<String, Pair<DbEntity,
> PatternFilter>>> getTables(DbLoaderConfiguration config, String[] types)
> 
> mrg
> 
> 
> On Fri, Apr 24, 2015 at 3:52 AM, Andrus Adamchik <an...@objectstyle.org>
> wrote:
> 
>> Alex, this change looks suspect. Was it intentional?
>> 
>> 
>>> On Apr 24, 2015, at 1:13 AM, kolonitsky@apache.org wrote:
>>> 
>>> 
>> http://git-wip-us.apache.org/repos/asf/cayenne/blob/09c6da92/cayenne-server/pom.xml
>>> ----------------------------------------------------------------------
>>> diff --git a/cayenne-server/pom.xml b/cayenne-server/pom.xml
>>> index d00cd8c..ee4e3c7 100644
>>> --- a/cayenne-server/pom.xml
>>> +++ b/cayenne-server/pom.xml
>>> @@ -48,6 +48,11 @@
>>>                      <artifactId>commons-logging</artifactId>
>>>                      <scope>compile</scope>
>>>              </dependency>
>>> +        <dependency>
>>> +            <groupId>org.apache.commons</groupId>
>>> +            <artifactId>commons-lang3</artifactId>
>>> +            <version>3.0</version>
>>> +        </dependency>
>>>              <dependency>
>>>                      <groupId>org.apache.velocity</groupId>
>>>                      <artifactId>velocity</artifactId>
>> 
>> 


Re: [17/17] cayenne git commit: Merge remote-tracking branch 'apache/master'

Posted by Michael Gentry <mg...@masslight.net>.
Looks like org.apache.commons.lang3.tuple.Pair is used in multiple places
now, such as in DbLoader:

-    public Map<DbEntity, PatternFilter> getTables(DbLoaderConfiguration
config, String[] types)
+    public Map<Pair<String, String>, Map<String, Pair<DbEntity,
PatternFilter>>> getTables(DbLoaderConfiguration config, String[] types)

mrg


On Fri, Apr 24, 2015 at 3:52 AM, Andrus Adamchik <an...@objectstyle.org>
wrote:

> Alex, this change looks suspect. Was it intentional?
>
>
> > On Apr 24, 2015, at 1:13 AM, kolonitsky@apache.org wrote:
> >
> >
> http://git-wip-us.apache.org/repos/asf/cayenne/blob/09c6da92/cayenne-server/pom.xml
> > ----------------------------------------------------------------------
> > diff --git a/cayenne-server/pom.xml b/cayenne-server/pom.xml
> > index d00cd8c..ee4e3c7 100644
> > --- a/cayenne-server/pom.xml
> > +++ b/cayenne-server/pom.xml
> > @@ -48,6 +48,11 @@
> >                       <artifactId>commons-logging</artifactId>
> >                       <scope>compile</scope>
> >               </dependency>
> > +        <dependency>
> > +            <groupId>org.apache.commons</groupId>
> > +            <artifactId>commons-lang3</artifactId>
> > +            <version>3.0</version>
> > +        </dependency>
> >               <dependency>
> >                       <groupId>org.apache.velocity</groupId>
> >                       <artifactId>velocity</artifactId>
>
>

Re: [17/17] cayenne git commit: Merge remote-tracking branch 'apache/master'

Posted by Andrus Adamchik <an...@objectstyle.org>.
Alex, this change looks suspect. Was it intentional?


> On Apr 24, 2015, at 1:13 AM, kolonitsky@apache.org wrote:
> 
> http://git-wip-us.apache.org/repos/asf/cayenne/blob/09c6da92/cayenne-server/pom.xml
> ----------------------------------------------------------------------
> diff --git a/cayenne-server/pom.xml b/cayenne-server/pom.xml
> index d00cd8c..ee4e3c7 100644
> --- a/cayenne-server/pom.xml
> +++ b/cayenne-server/pom.xml
> @@ -48,6 +48,11 @@
> 			<artifactId>commons-logging</artifactId>
> 			<scope>compile</scope>
> 		</dependency>
> +        <dependency>
> +            <groupId>org.apache.commons</groupId>
> +            <artifactId>commons-lang3</artifactId>
> +            <version>3.0</version>
> +        </dependency>
> 		<dependency>
> 			<groupId>org.apache.velocity</groupId>
> 			<artifactId>velocity</artifactId>