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 2012/11/09 21:03:10 UTC

svn commit: r1407611 - in /cayenne/main/trunk: docs/doc/src/main/resources/ docs/docbook/cayenne-guide/src/docbkx/ framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/

Author: aadamchik
Date: Fri Nov  9 20:03:09 2012
New Revision: 1407611

URL: http://svn.apache.org/viewvc?rev=1407611&view=rev
Log:
CAY-1758 cdbimport improvements

taking a step back to refactor the tools infrastructure

Modified:
    cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
    cayenne/main/trunk/docs/docbook/cayenne-guide/src/docbkx/including-cayenne-in-project.xml
    cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/AntDataPortDelegate.java
    cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMapLoaderAction.java
    cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/CayenneTask.java
    cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/DataPortTask.java
    cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java

Modified: cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt?rev=1407611&r1=1407610&r2=1407611&view=diff
==============================================================================
--- cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt (original)
+++ cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt Fri Nov  9 20:03:09 2012
@@ -29,6 +29,7 @@ CAY-1761 cdbimport improvements: DbLoade
 CAY-1762 cdbimport improvements: Support for "defaultPackage" parameter, as the new DataMaps ends up placing entities in the root package 
 CAY-1763 cdbimport improvements: specified "schema" should become the default schema of the generated DataMap 
 CAY-1764 cdbimport improvements: "overwrite" flag
+CAY-1766 Deprecating DataPort ant task
 
 Bug Fixes:
 

Modified: cayenne/main/trunk/docs/docbook/cayenne-guide/src/docbkx/including-cayenne-in-project.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/docbook/cayenne-guide/src/docbkx/including-cayenne-in-project.xml?rev=1407611&r1=1407610&r2=1407611&view=diff
==============================================================================
--- cayenne/main/trunk/docs/docbook/cayenne-guide/src/docbkx/including-cayenne-in-project.xml (original)
+++ cayenne/main/trunk/docs/docbook/cayenne-guide/src/docbkx/including-cayenne-in-project.xml Fri Nov  9 20:03:09 2012
@@ -519,6 +519,12 @@
 		</section>
 		<section xml:id="ant-cdataport">
 			<title>cdataport</title>
+			<para>
+				<note>
+					<para>'cdataport' is deprecated in 3.2 and will bre removed in the future
+						versions.</para>
+				</note>
+			</para>
 		</section>
 	</section>
 </chapter>

Modified: cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/AntDataPortDelegate.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/AntDataPortDelegate.java?rev=1407611&r1=1407610&r2=1407611&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/AntDataPortDelegate.java (original)
+++ cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/AntDataPortDelegate.java Fri Nov  9 20:03:09 2012
@@ -23,20 +23,23 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.regex.Pattern;
 
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
 import org.apache.cayenne.access.DataPort;
 import org.apache.cayenne.access.DataPortDelegate;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.query.Query;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
 
 /**
- * DataPortDelegate implementation that works in the context of Ant DataPortTask task
- * execution, performing entity filtering and logging functions.
+ * DataPortDelegate implementation that works in the context of Ant DataPortTask
+ * task execution, performing entity filtering and logging functions.
  * 
- * @since 1.2: Prior to 1.2 DataPort classes were a part of cayenne-examples package.
+ * @since 1.2: Prior to 1.2 DataPort classes were a part of cayenne-examples
+ *        package.
+ * @deprecated since 3.2
  */
+@Deprecated
 class AntDataPortDelegate implements DataPortDelegate {
 
     protected Task parentTask;
@@ -57,17 +60,15 @@ class AntDataPortDelegate implements Dat
             String includeEntitiesPattern, String excludeEntitiesPattern) {
         this.parentTask = parentTask;
 
-        this.namePatternMatcher = new NamePatternMatcher(
-                new AntLogger(parentTask),
-                includeEntitiesPattern,
-                excludeEntitiesPattern);
+        this.namePatternMatcher = new NamePatternMatcher(new AntLogger(
+                parentTask), includeEntitiesPattern, excludeEntitiesPattern);
 
         this.mapFilters = namePatternMatcher.createPatterns(mapsPattern);
     }
 
     /**
-     * Applies preconfigured list of filters to the list, removing entities that do not
-     * pass the filter.
+     * Applies preconfigured list of filters to the list, removing entities that
+     * do not pass the filter.
      */
     protected List filterEntities(List entities) {
         if (entities == null || entities.isEmpty()) {
@@ -89,8 +90,8 @@ class AntDataPortDelegate implements Dat
     }
 
     /**
-     * Returns true if the DataMap passes a set of DataMap filters or if there is no
-     * DataMap filters.
+     * Returns true if the DataMap passes a set of DataMap filters or if there
+     * is no DataMap filters.
      */
     protected boolean passedDataMapFilter(DataMap map) {
         if (mapFilters.length == 0) {
@@ -112,8 +113,8 @@ class AntDataPortDelegate implements Dat
     }
 
     /**
-     * Implements the delegate method to filter the list of entities applying filtering
-     * rules encapsulated by this object.
+     * Implements the delegate method to filter the list of entities applying
+     * filtering rules encapsulated by this object.
      */
     public List willPortEntities(DataPort portTool, List entities) {
         return filterEntities(entities);
@@ -132,14 +133,14 @@ class AntDataPortDelegate implements Dat
     public void didPortEntity(DataPort portTool, DbEntity entity, int rowCount) {
         String timestampLabel = "";
         if (lastEntity == entity) {
-            timestampLabel = " in " + (System.currentTimeMillis() - timestamp) + " ms.";
+            timestampLabel = " in " + (System.currentTimeMillis() - timestamp)
+                    + " ms.";
         }
 
         String label = (rowCount == 1) ? "1 row transferred" : rowCount
                 + " rows transferred";
-        parentTask.log(
-                "Done porting " + entity.getName() + ", " + label + timestampLabel,
-                Project.MSG_VERBOSE);
+        parentTask.log("Done porting " + entity.getName() + ", " + label
+                + timestampLabel, Project.MSG_VERBOSE);
     }
 
     public List willCleanData(DataPort portTool, List entities) {
@@ -156,14 +157,13 @@ class AntDataPortDelegate implements Dat
     public void didCleanData(DataPort portTool, DbEntity entity, int rowCount) {
         String timestampLabel = "";
         if (lastEntity == entity) {
-            timestampLabel = " in " + (System.currentTimeMillis() - timestamp) + " ms.";
+            timestampLabel = " in " + (System.currentTimeMillis() - timestamp)
+                    + " ms.";
         }
 
-        String label = (rowCount == 1) ? "1 row deleted" : rowCount + " rows deleted";
-        parentTask.log("Done deleting "
-                + entity.getName()
-                + ", "
-                + label
+        String label = (rowCount == 1) ? "1 row deleted" : rowCount
+                + " rows deleted";
+        parentTask.log("Done deleting " + entity.getName() + ", " + label
                 + timestampLabel, Project.MSG_VERBOSE);
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMapLoaderAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMapLoaderAction.java?rev=1407611&r1=1407610&r2=1407611&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMapLoaderAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMapLoaderAction.java Fri Nov  9 20:03:09 2012
@@ -65,7 +65,7 @@ class CayenneGeneratorMapLoaderAction {
 
     protected DataMap loadDataMap(MapLoader mapLoader, File dataMapFile)
             throws MalformedURLException {
-        InputSource in = new InputSource(dataMapFile.toURL().toString());
+        InputSource in = new InputSource(dataMapFile.toURI().toURL().toString());
         return mapLoader.loadDataMap(in);
     }
 

Modified: cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/CayenneTask.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/CayenneTask.java?rev=1407611&r1=1407610&r2=1407611&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/CayenneTask.java (original)
+++ cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/CayenneTask.java Fri Nov  9 20:03:09 2012
@@ -26,11 +26,9 @@ import javax.sql.DataSource;
 import org.apache.cayenne.configuration.DataNodeDescriptor;
 import org.apache.cayenne.configuration.server.DbAdapterFactory;
 import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.di.DIBootstrap;
 import org.apache.cayenne.di.Injector;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.MapLoader;
-import org.apache.cayenne.tools.configuration.ToolsModule;
 import org.apache.tools.ant.Task;
 import org.apache.tools.ant.types.Path;
 import org.apache.tools.ant.types.Reference;
@@ -148,10 +146,6 @@ public abstract class CayenneTask extend
         InputSource in = new InputSource(map.getCanonicalPath());
         return new MapLoader().loadDataMap(in);
     }
-    
-    protected Injector getInjector() {
-        return DIBootstrap.createInjector(new ToolsModule());
-    }
 
     protected DbAdapter getAdapter(Injector injector, DataSource dataSource)
             throws Exception {

Modified: cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/DataPortTask.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/DataPortTask.java?rev=1407611&r1=1407610&r2=1407611&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/DataPortTask.java (original)
+++ cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/DataPortTask.java Fri Nov  9 20:03:09 2012
@@ -38,11 +38,14 @@ import org.apache.tools.ant.BuildExcepti
 import org.apache.tools.ant.Project;
 
 /**
- * A "cdataport" Ant task implementing a frontend to DataPort allowing porting database
- * data using Ant build scripts.
+ * A "cdataport" Ant task implementing a frontend to DataPort allowing porting
+ * database data using Ant build scripts.
  * 
- * @since 1.2: Prior to 1.2 DataPort classes were a part of cayenne-examples package.
+ * @since 1.2: Prior to 1.2 DataPort classes were a part of cayenne-examples
+ *        package.
+ * @deprecated since 3.2
  */
+@Deprecated
 public class DataPortTask extends CayenneTask {
 
     protected File projectFile;
@@ -60,6 +63,10 @@ public class DataPortTask extends Cayenn
 
     @Override
     public void execute() throws BuildException {
+
+        log("*** 'cdataport' task is deprecated and will be removed after 3.2",
+                Project.MSG_WARN);
+
         validateParameters();
 
         String projectFileLocation = projectFile.getName();
@@ -71,49 +78,48 @@ public class DataPortTask extends Cayenn
             }
         };
 
-        ServerRuntime runtime = new ServerRuntime(
-                projectFileLocation,
+        ServerRuntime runtime = new ServerRuntime(projectFileLocation,
                 dataPortModule);
         DataDomain domain;
 
-        ClassLoader threadContextClassLoader = Thread
-                .currentThread()
+        ClassLoader threadContextClassLoader = Thread.currentThread()
                 .getContextClassLoader();
         try {
-            // need to set context class loader so that cayenne can find jdbc driver and
+            // need to set context class loader so that cayenne can find jdbc
+            // driver and
             // PasswordEncoder
             // TODO: andrus 04/11/2010 is this still relevant in 3.1?
-            Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
+            Thread.currentThread().setContextClassLoader(
+                    getClass().getClassLoader());
 
             domain = runtime.getDataDomain();
-        }
-        catch (Exception ex) {
-            throw new BuildException("Error loading Cayenne configuration from "
-                    + projectFile, ex);
-        }
-        finally {
+        } catch (Exception ex) {
+            throw new BuildException(
+                    "Error loading Cayenne configuration from " + projectFile,
+                    ex);
+        } finally {
             // set back to original ClassLoader
-            Thread.currentThread().setContextClassLoader(threadContextClassLoader);
+            Thread.currentThread().setContextClassLoader(
+                    threadContextClassLoader);
         }
 
         // perform project validation
         DataNode source = domain.getDataNode(srcNode);
         if (source == null) {
-            throw new BuildException("srcNode not found in the project: " + srcNode);
+            throw new BuildException("srcNode not found in the project: "
+                    + srcNode);
         }
 
         DataNode destination = domain.getDataNode(destNode);
         if (destination == null) {
-            throw new BuildException("destNode not found in the project: " + destNode);
+            throw new BuildException("destNode not found in the project: "
+                    + destNode);
         }
 
         log("Porting from '" + srcNode + "' to '" + destNode + "'.");
 
-        AntDataPortDelegate portDelegate = new AntDataPortDelegate(
-                this,
-                maps,
-                includeTables,
-                excludeTables);
+        AntDataPortDelegate portDelegate = new AntDataPortDelegate(this, maps,
+                includeTables, excludeTables);
         DataPort dataPort = new DataPort(portDelegate);
         dataPort.setEntities(getAllEntities(source, destination));
         dataPort.setCleaningDestination(cleanDest);
@@ -122,17 +128,17 @@ public class DataPortTask extends Cayenn
 
         try {
             dataPort.execute();
-        }
-        catch (Exception e) {
+        } catch (Exception e) {
             Throwable topOfStack = Util.unwindException(e);
-            throw new BuildException(
-                    "Error porting data: " + topOfStack.getMessage(),
-                    topOfStack);
+            throw new BuildException("Error porting data: "
+                    + topOfStack.getMessage(), topOfStack);
         }
     }
 
-    protected Collection<DbEntity> getAllEntities(DataNode source, DataNode target) {
-        // use a set to exclude duplicates, though a valid project will probably have
+    protected Collection<DbEntity> getAllEntities(DataNode source,
+            DataNode target) {
+        // use a set to exclude duplicates, though a valid project will probably
+        // have
         // none...
         Collection<DbEntity> allEntities = new HashSet<DbEntity>();
 
@@ -154,11 +160,13 @@ public class DataPortTask extends Cayenn
 
     protected void validateParameters() throws BuildException {
         if (projectFile == null) {
-            throw new BuildException("Required 'projectFile' parameter is missing.");
+            throw new BuildException(
+                    "Required 'projectFile' parameter is missing.");
         }
 
         if (!projectFile.exists()) {
-            throw new BuildException("'projectFile' does not exist: " + projectFile);
+            throw new BuildException("'projectFile' does not exist: "
+                    + projectFile);
         }
 
         if (srcNode == null) {
@@ -166,7 +174,8 @@ public class DataPortTask extends Cayenn
         }
 
         if (destNode == null) {
-            throw new BuildException("Required 'destNode' parameter is missing.");
+            throw new BuildException(
+                    "Required 'destNode' parameter is missing.");
         }
     }
 

Modified: cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java?rev=1407611&r1=1407610&r2=1407611&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java (original)
+++ cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java Fri Nov  9 20:03:09 2012
@@ -27,11 +27,13 @@ import org.apache.cayenne.access.DbLoade
 import org.apache.cayenne.conn.DriverDataSource;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.dbimport.ImportDbLoaderDelegate;
+import org.apache.cayenne.di.DIBootstrap;
 import org.apache.cayenne.di.Injector;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.MapLoader;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.map.naming.NamingStrategy;
+import org.apache.cayenne.tools.configuration.ToolsModule;
 import org.apache.cayenne.util.DeleteRuleUpdater;
 import org.apache.cayenne.util.Util;
 import org.apache.cayenne.util.XMLEncoder;
@@ -87,7 +89,7 @@ public class DbImporterTask extends Caye
             DriverDataSource dataSource = new DriverDataSource((Driver) Class
                     .forName(driver).newInstance(), url, userName, password);
 
-            Injector injector = getInjector();
+            Injector injector = DIBootstrap.createInjector(new ToolsModule());
             DbAdapter adapter = getAdapter(injector, dataSource);
 
             // Load the data map and run the db importer.