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; }
}