You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pc...@apache.org on 2008/05/12 23:42:57 UTC

svn commit: r655657 - in /openjpa/branches/1.1.x/openjpa-kernel/src/main: java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java jjtree/org/apache/openjpa/kernel/jpql/JPQL.jjt

Author: pcl
Date: Mon May 12 14:42:57 2008
New Revision: 655657

URL: http://svn.apache.org/viewvc?rev=655657&view=rev
Log:
OPENJPA-595. Porting to 1.1.x branch.

Modified:
    openjpa/branches/1.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java
    openjpa/branches/1.1.x/openjpa-kernel/src/main/jjtree/org/apache/openjpa/kernel/jpql/JPQL.jjt

Modified: openjpa/branches/1.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java?rev=655657&r1=655656&r2=655657&view=diff
==============================================================================
--- openjpa/branches/1.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java (original)
+++ openjpa/branches/1.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java Mon May 12 14:42:57 2008
@@ -1322,8 +1322,11 @@
                 Object value = field.get(null);
                 return factory.newLiteral(value, Literal.TYPE_UNKNOWN);
             } catch (NoSuchFieldException nsfe) {
-                throw parseException(EX_USER, "no-field",
-                    new Object[]{ c.getName(), fieldName }, nsfe);
+                if (node.inEnumPath)
+                    throw parseException(EX_USER, "no-field",
+                        new Object[]{ c.getName(), fieldName }, nsfe);
+                else
+                    return getPath(node, false, true);
             } catch (Exception e) {
                 throw parseException(EX_USER, "unaccessible-field",
                     new Object[]{ className, fieldName }, e);
@@ -1556,10 +1559,12 @@
         JPQLNode[] children;
         String text;
         boolean not = false;
+        boolean inEnumPath = false;
 
         public JPQLNode(JPQL parser, int id) {
             this.id = id;
             this.parser = parser;
+            this.inEnumPath = parser.inEnumPath;
         }
 
         public void jjtOpen() {

Modified: openjpa/branches/1.1.x/openjpa-kernel/src/main/jjtree/org/apache/openjpa/kernel/jpql/JPQL.jjt
URL: http://svn.apache.org/viewvc/openjpa/branches/1.1.x/openjpa-kernel/src/main/jjtree/org/apache/openjpa/kernel/jpql/JPQL.jjt?rev=655657&r1=655656&r2=655657&view=diff
==============================================================================
--- openjpa/branches/1.1.x/openjpa-kernel/src/main/jjtree/org/apache/openjpa/kernel/jpql/JPQL.jjt (original)
+++ openjpa/branches/1.1.x/openjpa-kernel/src/main/jjtree/org/apache/openjpa/kernel/jpql/JPQL.jjt Mon May 12 14:42:57 2008
@@ -64,6 +64,7 @@
 public class JPQL
 {
 	String jpql;
+	boolean inEnumPath;
 
 
 	public JPQL (String jpql)
@@ -968,7 +969,9 @@
 
 void enum_literal() : { }
 {
+	{ inEnumPath = true; }
 	path()
+	{ inEnumPath = false; }
 }