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 2007/12/02 18:47:32 UTC

svn commit: r600349 - in /cayenne/main/trunk/framework: cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/ maven-cayenne-plugin/ maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/

Author: aadamchik
Date: Sun Dec  2 09:47:31 2007
New Revision: 600349

URL: http://svn.apache.org/viewvc?rev=600349&view=rev
Log:
CAY-926 Refactoring class generator classes
(replacing CayenneGeneratorUtil with CayenneGeneratorMapLoader to streamline generation flow: refactopring - split into loader and filter actions)

Added:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/CayenneGeneratorEntityFilterAction.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMapLoaderAction.java
Removed:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/CayenneGenerationMapLoader.java
Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/CayenneGeneratorTask.java
    cayenne/main/trunk/framework/maven-cayenne-plugin/pom.xml
    cayenne/main/trunk/framework/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java

Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/CayenneGeneratorEntityFilterAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/CayenneGeneratorEntityFilterAction.java?rev=600349&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/CayenneGeneratorEntityFilterAction.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/CayenneGeneratorEntityFilterAction.java Sun Dec  2 09:47:31 2007
@@ -0,0 +1,73 @@
+/*****************************************************************
+ *   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 java.net.MalformedURLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.ObjEntity;
+
+/**
+ * Performs entity filtering to build a collection of entities that should be used in
+ * class generation.
+ * 
+ * @since 3.0
+ * @author Andrus Adamchik
+ */
+class CayenneGeneratorEntityFilterAction {
+
+    private NamePatternMatcher nameFilter;
+    private boolean client;
+
+    Collection<ObjEntity> getFilteredEntities(DataMap mainDataMap)
+            throws MalformedURLException {
+
+        List<ObjEntity> entities = new ArrayList<ObjEntity>(mainDataMap.getObjEntities());
+
+        // filter out excluded entities...
+        Iterator<ObjEntity> it = entities.iterator();
+
+        while (it.hasNext()) {
+            ObjEntity e = it.next();
+            if (e.isGeneric()) {
+                it.remove();
+            }
+            else if (client && !e.isClientAllowed()) {
+                it.remove();
+            }
+            else if (!nameFilter.isIncluded(e.getName())) {
+                it.remove();
+            }
+        }
+
+        return entities;
+    }
+
+    void setClient(boolean client) {
+        this.client = client;
+    }
+
+    public void setNameFilter(NamePatternMatcher nameFilter) {
+        this.nameFilter = nameFilter;
+    }
+}

Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMapLoaderAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMapLoaderAction.java?rev=600349&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMapLoaderAction.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMapLoaderAction.java Sun Dec  2 09:47:31 2007
@@ -0,0 +1,80 @@
+/*****************************************************************
+ *   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 java.io.File;
+import java.net.MalformedURLException;
+
+import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.EntityResolver;
+import org.apache.cayenne.map.MapLoader;
+import org.xml.sax.InputSource;
+
+/**
+ * Loads a DataMap and a shared entity namespace.
+ * 
+ * @since 3.0
+ * @author Andrus Adamchik
+ */
+class CayenneGeneratorMapLoaderAction {
+
+    private File mainDataMapFile;
+    private File[] additionalDataMapFiles;
+    private DataMap mainDataMap;
+
+    DataMap getMainDataMap() throws MalformedURLException {
+        if (mainDataMap == null) {
+            MapLoader mapLoader = new MapLoader();
+
+            DataMap mainDataMap = loadDataMap(mapLoader, mainDataMapFile);
+
+            if (additionalDataMapFiles != null) {
+
+                EntityResolver entityResolver = new EntityResolver();
+                entityResolver.addDataMap(mainDataMap);
+                mainDataMap.setNamespace(entityResolver);
+
+                for (int i = 0; i < additionalDataMapFiles.length; i++) {
+
+                    DataMap dataMap = loadDataMap(mapLoader, additionalDataMapFiles[i]);
+                    entityResolver.addDataMap(dataMap);
+                    dataMap.setNamespace(entityResolver);
+                }
+            }
+
+            this.mainDataMap = mainDataMap;
+        }
+
+        return mainDataMap;
+    }
+
+    protected DataMap loadDataMap(MapLoader mapLoader, File dataMapFile)
+            throws MalformedURLException {
+        InputSource in = new InputSource(dataMapFile.toURL().toString());
+        return mapLoader.loadDataMap(in);
+    }
+
+    void setMainDataMapFile(File mainDataMapFile) {
+        this.mainDataMapFile = mainDataMapFile;
+    }
+
+    void setAdditionalDataMapFiles(File[] additionalDataMapFiles) {
+        this.additionalDataMapFiles = additionalDataMapFiles;
+    }
+}

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/CayenneGeneratorTask.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/CayenneGeneratorTask.java?rev=600349&r1=600348&r2=600349&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/CayenneGeneratorTask.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/CayenneGeneratorTask.java Sun Dec  2 09:47:31 2007
@@ -70,18 +70,23 @@
         }
 
         ILog logger = new AntTaskLogger(this);
-        CayenneGenerationMapLoader mapLoader = new CayenneGenerationMapLoader();
-        mapLoader.setNameFilter(new NamePatternMatcher(
+        CayenneGeneratorMapLoaderAction loadAction = new CayenneGeneratorMapLoaderAction();
+
+        loadAction.setMainDataMapFile(map);
+        loadAction.setAdditionalDataMapFiles(additionalMaps);
+
+        CayenneGeneratorEntityFilterAction filterAction = new CayenneGeneratorEntityFilterAction();
+        filterAction.setClient(generator.isClient());
+        filterAction.setNameFilter(new NamePatternMatcher(
                 logger,
                 includeEntitiesPattern,
                 excludeEntitiesPattern));
-        mapLoader.setMainDataMapFile(map);
-        mapLoader.setAdditionalDataMapFiles(additionalMaps);
 
         try {
             generator.setTimestamp(map.lastModified());
-            generator.setDataMap(mapLoader.getMainDataMap());
-            generator.setObjEntities((List<ObjEntity>) mapLoader.getFilteredEntities());
+            generator.setDataMap(loadAction.getMainDataMap());
+            generator.setObjEntities((List<ObjEntity>) filterAction
+                    .getFilteredEntities(loadAction.getMainDataMap()));
             generator.validateAttributes();
             generator.execute();
         }

Modified: cayenne/main/trunk/framework/maven-cayenne-plugin/pom.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/maven-cayenne-plugin/pom.xml?rev=600349&r1=600348&r2=600349&view=diff
==============================================================================
--- cayenne/main/trunk/framework/maven-cayenne-plugin/pom.xml (original)
+++ cayenne/main/trunk/framework/maven-cayenne-plugin/pom.xml Sun Dec  2 09:47:31 2007
@@ -95,5 +95,17 @@
 			<scope>compile</scope>
 		</dependency>
 	</dependencies>
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<configuration>
+					<source>1.5</source>
+					<target>1.5</target>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
 </project>
 

Modified: cayenne/main/trunk/framework/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java?rev=600349&r1=600348&r2=600349&view=diff
==============================================================================
--- cayenne/main/trunk/framework/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java (original)
+++ cayenne/main/trunk/framework/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java Sun Dec  2 09:47:31 2007
@@ -208,18 +208,21 @@
 		generator = createGenerator();
 
 		ILog logger = new MavenLogger(this);
-		CayenneGenerationMapLoader mapLoader = new CayenneGenerationMapLoader();
-		mapLoader.setNameFilter(new NamePatternMatcher(logger,
+		CayenneGeneratorMapLoaderAction loaderAction = new CayenneGeneratorMapLoaderAction();
+		loaderAction.setMainDataMapFile(map);
+
+		CayenneGeneratorEntityFilterAction filterAction = new CayenneGeneratorEntityFilterAction();
+		filterAction.setClient(client);
+		filterAction.setNameFilter(new NamePatternMatcher(logger,
 				includeEntitiesPattern, excludeEntitiesPattern));
-		mapLoader.setMainDataMapFile(map);
 
 		try {
-			mapLoader.setAdditionalDataMapFiles(convertAdditionalDataMaps());
+			loaderAction.setAdditionalDataMapFiles(convertAdditionalDataMaps());
 
 			generator.setTimestamp(map.lastModified());
-			generator.setDataMap(mapLoader.getMainDataMap());
-			generator.setObjEntities((List<ObjEntity>) mapLoader
-					.getFilteredEntities());
+			generator.setDataMap(loaderAction.getMainDataMap());
+			generator.setObjEntities((List<ObjEntity>) filterAction
+					.getFilteredEntities(loaderAction.getMainDataMap()));
 			generator.validateAttributes();
 			generator.execute();
 		} catch (Exception e) {