Author: aadamchik
Date: Fri Mar 15 18:29:23 2013
New Revision: 1457050

URL: http://svn.apache.org/r1457050
Log:
CAY-1803  Define toString() in path expressions

and now actually rewriting the select ranslator to avoid toString that can 
theoretically return anything

Modified:
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/exp/parser/ASTPath.java

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java?rev=1457050&r1=1457049&r2=1457050&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java
 Fri Mar 15 18:29:23 2013
@@ -33,6 +33,7 @@ import org.apache.cayenne.CayenneRuntime
 import org.apache.cayenne.access.jdbc.ColumnDescriptor;
 import org.apache.cayenne.dba.QuotingStrategy;
 import org.apache.cayenne.exp.Expression;
+import org.apache.cayenne.exp.parser.ASTDbPath;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
@@ -391,7 +392,7 @@ public class SelectTranslator extends Qu
             // for each relationship path add PK of the target entity...
             for (String path : ((PrefetchSelectQuery) query).getResultPaths()) 
{
 
-                Expression pathExp = 
oe.translateToDbPath(Expression.fromString(path));
+                ASTDbPath pathExp = (ASTDbPath) 
oe.translateToDbPath(Expression.fromString(path));
 
                 // add joins and find terminating element
 
@@ -415,7 +416,7 @@ public class SelectTranslator extends Qu
 
                     if (relationship != null) {
 
-                        String labelPrefix = 
pathExp.toString().substring("db:".length());
+                        String labelPrefix = pathExp.getPath();
                         DbEntity targetEntity = (DbEntity) 
relationship.getTargetEntity();
 
                         for (DbAttribute pk : targetEntity.getPrimaryKeys()) {
@@ -438,7 +439,7 @@ public class SelectTranslator extends Qu
                 // for each prefetch add all joins plus columns from the target
                 // entity
                 Expression prefetchExp = 
Expression.fromString(prefetch.getPath());
-                Expression dbPrefetch = oe.translateToDbPath(prefetchExp);
+                ASTDbPath dbPrefetch = (ASTDbPath) 
oe.translateToDbPath(prefetchExp);
 
                 resetJoinStack();
                 DbRelationship r = null;
@@ -465,7 +466,7 @@ public class SelectTranslator extends Qu
                 Iterator<ObjAttribute> targetObjAttrs = 
(Iterator<ObjAttribute>) targetRel.getTargetEntity()
                         .getAttributes().iterator();
 
-                String labelPrefix = 
dbPrefetch.toString().substring("db:".length());
+                String labelPrefix = dbPrefetch.getPath();
                 while (targetObjAttrs.hasNext()) {
                     ObjAttribute oa = targetObjAttrs.next();
                     Iterator<CayenneMapEntry> dbPathIterator = 
oa.getDbPathIterator();

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/exp/parser/ASTPath.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/exp/parser/ASTPath.java?rev=1457050&r1=1457049&r2=1457050&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/exp/parser/ASTPath.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/exp/parser/ASTPath.java
 Fri Mar 15 18:29:23 2013
@@ -66,7 +66,7 @@ public abstract class ASTPath extends Si
         this.path = (path != null) ? path.toString() : null;
     }
 
-    protected String getPath() {
+    public String getPath() {
         return path;
     }
 


Reply via email to