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 {