You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by ro...@apache.org on 2009/04/16 01:17:36 UTC

svn commit: r765418 - in /cayenne/main/trunk: docs/doc/src/main/resources/ framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/gen/ framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/ framework/cayenne-jdk1.5-unp...

Author: robertdzeigler
Date: Wed Apr 15 23:17:35 2009
New Revision: 765418

URL: http://svn.apache.org/viewvc?rev=765418&view=rev
Log:
CAY-1150: Generated DataMap classes should contain public constants for all query names

Modified:
    cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/gen/DataMapArtifact.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/client-datamap-singleclass.vm
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/client-datamap-superclass.vm
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/datamap-singleclass.vm
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/datamap-superclass.vm
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/gen/ClassGenerationActionTest.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=765418&r1=765417&r2=765418&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 Wed Apr 15 23:17:35 2009
@@ -23,6 +23,7 @@
 CAY-1142 (Single table) Inheritance and Paginated lists 
 CAY-1146 Move User properties API to ObjectContext & BaseContext
 CAY-1147 Remove id reading functionality from ResultIterator
+CAY-1150 Generated DataMap classes should contain public constants for all query names
 CAY-1153 MySQL : Enable views during reverse engineering
 CAY-1154 Rename .access.reveng package to .map.naming
 CAY-1156 Modeler search improvement
@@ -30,7 +31,6 @@
 CAY-1161 Deprecate SelectQuery custom columns feature
 CAY-1174 Modeler: support optional meaningful PK mapping during reverse engineering
 CAY-1175 Replace String column name capitalization property with an enum
-CAY-1181 Default class generation folder is wrong
 CAY-1184 Callback methods should default to usable names
 CAY-1185 Expression API: boolean support in string representation
 
@@ -49,6 +49,7 @@
 CAY-1170 cdbgen task fails due to NPE when instantiating TypesHandler
 CAY-1176 missing classes in ROP cayenne-client render nested contexts unusable
 CAY-1180 Model marked as dirty when leaving DataMap name field
+CAY-1181 Default class generation folder is wrong
 CAY-1183 commitToParent() makes object persistence state committed, produces exception when using object in parent context (ROP)
 CAY-1194 problems with relationships when using nested contexts and ROP
 CAY-1196 CayenneRuntimeException in modeler due to ClassNotFoundException when java type is invalid and db attribute is null

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/gen/DataMapArtifact.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/gen/DataMapArtifact.java?rev=765418&r1=765417&r2=765418&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/gen/DataMapArtifact.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/gen/DataMapArtifact.java Wed Apr 15 23:17:35 2009
@@ -23,6 +23,7 @@
 import java.util.LinkedList;
 
 import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.query.EJBQLQuery;
 import org.apache.cayenne.query.ProcedureQuery;
 import org.apache.cayenne.query.Query;
 import org.apache.cayenne.query.SQLTemplate;
@@ -43,12 +44,16 @@
     protected Collection<SelectQuery> selectQueries;
     protected Collection<SQLTemplate> sqlTemplateQueries;
     protected Collection<ProcedureQuery> procedureQueries;
+    protected Collection<EJBQLQuery> ejbqlQueries;
+    protected Collection<String> queryNames;
 
     public DataMapArtifact(DataMap dataMap, Collection<Query> queries) {
         this.dataMap = dataMap;
         selectQueries = new LinkedList<SelectQuery>();
         sqlTemplateQueries = new LinkedList<SQLTemplate>();
         procedureQueries = new LinkedList<ProcedureQuery>();
+        ejbqlQueries = new LinkedList<EJBQLQuery>();
+        queryNames = new LinkedList<String>();
         addQueries(queries);
     }
 
@@ -105,6 +110,15 @@
     private void addQuery(Query query) {
         if (query instanceof SelectQuery) {
             selectQueries.add((SelectQuery) query);
+        } else if (query instanceof ProcedureQuery) {
+            procedureQueries.add((ProcedureQuery) query);
+        } else if (query instanceof SQLTemplate) {
+            sqlTemplateQueries.add((SQLTemplate) query);
+        } else if (query instanceof EJBQLQuery) {
+            ejbqlQueries.add((EJBQLQuery) query);
+        }
+        if (query.getName() != null && !"".equals(query.getName())) {
+            queryNames.add(query.getName());
         }
     }
 
@@ -112,7 +126,15 @@
         return selectQueries;
     }
 
-    public boolean hasQueries() {
+    public boolean hasSelectQueries() {
         return selectQueries.size() > 0;
     }
+
+    public boolean hasQueryNames() {
+        return !queryNames.isEmpty();
+    }
+
+    public Collection<String> getQueryNames() {
+        return queryNames;
+    }
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/client-datamap-singleclass.vm
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/client-datamap-singleclass.vm?rev=765418&r1=765417&r2=765418&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/client-datamap-singleclass.vm (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/client-datamap-singleclass.vm Wed Apr 15 23:17:35 2009
@@ -55,8 +55,14 @@
  * If you need to make any customizations, please use subclass.
  */
 public class ${subClassName} {
+#if( ${object.hasQueryNames()})
+#foreach( $qname in ${object.QueryNames})
 
-    private static ${subClassName} instance;
+    public static final String ${stringUtils.capitalizedAsConstant($qname)}_QUERYNAME = "$qname";
+#end
+#end
+
+private static ${subClassName} instance;
 
     private ${subClassName}() {}
 

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/client-datamap-superclass.vm
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/client-datamap-superclass.vm?rev=765418&r1=765417&r2=765418&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/client-datamap-superclass.vm (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/client-datamap-superclass.vm Wed Apr 15 23:17:35 2009
@@ -34,7 +34,7 @@
 ${importUtils.setPackage($superPackageName)}##
 ${importUtils.addReservedType("${superPackageName}.${superClassName}")}##
 ${importUtils.addType("${basePackageName}.${baseClassName}")}##
-#if( ${object.hasQueries()} ) 
+#if( ${object.hasSelectQueries()} ) 
 ${importUtils.addType('java.util.List')}##
 ${importUtils.addType('org.apache.cayenne.ObjectContext')}##
 ${importUtils.addType('org.apache.cayenne.query.NamedQuery')}##
@@ -54,6 +54,12 @@
  * If you need to make any customizations, please use subclass.
  */
 public class ${superClassName} {
+#if( ${object.hasQueryNames()})
+#foreach( $qname in ${object.QueryNames})
+
+    public static final String ${stringUtils.capitalizedAsConstant($qname)}_QUERYNAME = "$qname";
+#end
+#end
 #foreach( $selectQuery in ${object.SelectQueries})
 
     public List<${stringUtils.stripPackageName($selectQuery.Root.ClientClassName)}> perform${dataMapUtils.getQueryMethodName(${selectQuery})}(ObjectContext context #foreach( $parameter in ${dataMapUtils.getParameterNames(${selectQuery})}), ${stringUtils.stripPackageName(${dataMapUtils.getParameterType(${selectQuery}, ${parameter})})} ${parameter}#end) {
@@ -74,4 +80,4 @@
         return context.performQuery(new NamedQuery("${selectQuery.Name}"#if(${dataMapUtils.hasParameters($selectQuery)}), parameters, values#end));
     }
 #end
-}
\ No newline at end of file
+}

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/datamap-singleclass.vm
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/datamap-singleclass.vm?rev=765418&r1=765417&r2=765418&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/datamap-singleclass.vm (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/datamap-singleclass.vm Wed Apr 15 23:17:35 2009
@@ -55,6 +55,12 @@
  * If you need to make any customizations, please use subclass.
  */
 public class ${subClassName} {
+#if( ${object.hasQueryNames()})
+#foreach( $qname in ${object.QueryNames})
+
+public static final String ${stringUtils.capitalizedAsConstant($qname)}_QUERYNAME = "$qname";
+#end
+#end
 
     private static ${subClassName} instance;
 

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/datamap-superclass.vm
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/datamap-superclass.vm?rev=765418&r1=765417&r2=765418&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/datamap-superclass.vm (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/datamap-superclass.vm Wed Apr 15 23:17:35 2009
@@ -34,7 +34,7 @@
 ${importUtils.setPackage($superPackageName)}##
 ${importUtils.addReservedType("${superPackageName}.${superClassName}")}##
 ${importUtils.addType("${basePackageName}.${baseClassName}")}##
-#if( ${object.hasQueries()} ) 
+#if( ${object.hasSelectQueries()} )
 ${importUtils.addType('java.util.List')}##
 ${importUtils.addType('org.apache.cayenne.ObjectContext')}##
 ${importUtils.addType('org.apache.cayenne.query.NamedQuery')}##
@@ -54,6 +54,12 @@
  * If you need to make any customizations, please use subclass.
  */
 public class ${superClassName} {
+#if( ${object.hasQueryNames()})
+#foreach( $qname in ${object.queryNames})
+
+    public static final String ${stringUtils.capitalizedAsConstant($qname)}_QUERYNAME = "$qname";
+#end
+#end
 #foreach( $selectQuery in ${object.SelectQueries})
 
     public List<${stringUtils.stripPackageName($selectQuery.Root.ClassName)}> perform${dataMapUtils.getQueryMethodName(${selectQuery})}(ObjectContext context #foreach( $parameter in ${dataMapUtils.getParameterNames(${selectQuery})}), ${stringUtils.stripPackageName(${dataMapUtils.getParameterType(${selectQuery}, ${parameter})})} ${parameter}#end) {

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/gen/ClassGenerationActionTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/gen/ClassGenerationActionTest.java?rev=765418&r1=765417&r2=765418&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/gen/ClassGenerationActionTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/gen/ClassGenerationActionTest.java Wed Apr 15 23:17:35 2009
@@ -25,11 +25,9 @@
 import java.util.List;
 
 
-import org.apache.cayenne.map.Entity;
-import org.apache.cayenne.map.ObjAttribute;
-import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.map.ObjRelationship;
+import org.apache.cayenne.map.*;
 import org.apache.cayenne.unit.BasicCase;
+import org.apache.cayenne.query.NamedQuery;
 
 public class ClassGenerationActionTest extends BasicCase {
 
@@ -154,7 +152,30 @@
         assertTrue(superclass, superclass.contains("return (value != null) ? (Character) value : 0;"));
 
     }
-    
+
+    public void testExecuteDataMapQueryNames() throws Exception {
+        runDataMapTest(false);
+    }
+
+    public void testExecuteClientDataMapQueryNames() throws Exception {
+        runDataMapTest(true);
+    }
+
+    private void runDataMapTest(boolean client) throws Exception {
+        DataMap map = new DataMap();
+        map.addQuery(new NamedQuery("TestQuery"));
+        map.setName("testmap");
+        List<String> generated;
+        if (client) {
+            map.setDefaultClientPackage("testpackage");
+            generated = execute(new ClientDataMapArtifact(map,map.getQueries()));
+        } else {
+            map.setDefaultPackage("testpackage");
+            generated = execute(new DataMapArtifact(map,map.getQueries()));
+        }
+        assertEquals(2,generated.size());
+        assertTrue(generated.get(0).contains("public static final String TEST_QUERY_QUERYNAME = \"TestQuery\""));
+    }
 
     protected List<String> execute(Artifact artifact) throws Exception {