[seam-commits] Seam SVN: r9941 - trunk/src/main/org/jboss/seam/persistence.

seam-commits at lists.jboss.org seam-commits at lists.jboss.org
Fri Jan 16 14:27:39 EST 2009


Author: norman.richards at jboss.com
Date: 2009-01-16 14:27:39 -0500 (Fri, 16 Jan 2009)
New Revision: 9941

Modified:
   trunk/src/main/org/jboss/seam/persistence/QueryParser.java
Log:
JBSEAM-3888

Modified: trunk/src/main/org/jboss/seam/persistence/QueryParser.java
===================================================================
--- trunk/src/main/org/jboss/seam/persistence/QueryParser.java	2009-01-16 18:49:19 UTC (rev 9940)
+++ trunk/src/main/org/jboss/seam/persistence/QueryParser.java	2009-01-16 19:27:39 UTC (rev 9941)
@@ -35,35 +35,24 @@
    
    public QueryParser(String ejbql, int startingParameterNumber)
    {
-      StringTokenizer tokens = new StringTokenizer(ejbql, "#}", true);
-      ejbqlBuilder = new StringBuilder( ejbql.length() );
-      while ( tokens.hasMoreTokens() )
-      {
-         String token = tokens.nextToken();
-         if ( "#".equals(token) )
-         {
-            if ( !tokens.hasMoreTokens() )
-            {
-               throw new IllegalArgumentException("query fragment terminates in #");
-            }
-            String expressionToken = tokens.nextToken();
-            if ( !expressionToken.startsWith("{") )
-            {
-               throw new IllegalArgumentException("missing { after # in query fragment");
-            }
-            if ( !tokens.hasMoreTokens() )
-            {
-               throw new IllegalArgumentException("missing } after expression in query fragment");
-            }
-            String expression = token + expressionToken + tokens.nextToken();
-            ejbqlBuilder.append(':').append( getParameterName( startingParameterNumber + parameterValueBindings.size() ) );
-            parameterValueBindings.add( Expressions.instance().createValueExpression(expression) );
-         }
-         else
-         {
-            ejbqlBuilder.append(token);
-         }
-      }
+       StringTokenizer tokens = new StringTokenizer(ejbql, "#}", true);
+       ejbqlBuilder = new StringBuilder(ejbql.length());
+       while (tokens.hasMoreTokens()) {
+           String token = tokens.nextToken();
+           if ("#".equals(token) && tokens.hasMoreTokens()) {
+               String expressionToken = tokens.nextToken();
+
+               if (!expressionToken.startsWith("{") || !tokens.hasMoreTokens()) {
+                   ejbqlBuilder.append(token).append(expressionToken);
+               } else {
+                   String expression = token + expressionToken + tokens.nextToken();
+                   ejbqlBuilder.append(':').append( getParameterName( startingParameterNumber + parameterValueBindings.size() ) );
+                   parameterValueBindings.add( Expressions.instance().createValueExpression(expression) );
+               }    
+           } else {
+               ejbqlBuilder.append(token);
+           }
+       }
    }
    
 }




More information about the seam-commits mailing list