[jboss-cvs] jboss-seam/src/main/org/jboss/seam/framework ...

Gavin King gavin.king at jboss.com
Mon Feb 26 14:24:50 EST 2007


  User: gavin   
  Date: 07/02/26 14:24:50

  Modified:    src/main/org/jboss/seam/framework    EntityQuery.java
                        HibernateEntityQuery.java Query.java
  Log:
  refactor
  
  Revision  Changes    Path
  1.12      +2 -1      jboss-seam/src/main/org/jboss/seam/framework/EntityQuery.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: EntityQuery.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/framework/EntityQuery.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -b -r1.11 -r1.12
  --- EntityQuery.java	15 Feb 2007 17:52:53 -0000	1.11
  +++ EntityQuery.java	26 Feb 2007 19:24:50 -0000	1.12
  @@ -6,6 +6,7 @@
   import javax.persistence.EntityManager;
   
   import org.jboss.seam.annotations.Transactional;
  +import org.jboss.seam.persistence.QueryParser;
   
   /**
    * A Query object for JPA.
  @@ -136,7 +137,7 @@
            Object parameterValue = parameters.get(i);
            if ( isRestrictionParameterSet(parameterValue) )
            {
  -            query.setParameter( "p" + (start + i), parameterValue );
  +            query.setParameter( QueryParser.getParameterName(start + i), parameterValue );
            }
         }
      }
  
  
  
  1.11      +2 -1      jboss-seam/src/main/org/jboss/seam/framework/HibernateEntityQuery.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: HibernateEntityQuery.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/framework/HibernateEntityQuery.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -b -r1.10 -r1.11
  --- HibernateEntityQuery.java	14 Feb 2007 19:22:48 -0000	1.10
  +++ HibernateEntityQuery.java	26 Feb 2007 19:24:50 -0000	1.11
  @@ -4,6 +4,7 @@
   
   import org.hibernate.Session;
   import org.jboss.seam.annotations.Transactional;
  +import org.jboss.seam.persistence.QueryParser;
   
   /**
    * A Query object for Hibernate.
  @@ -131,7 +132,7 @@
            Object parameterValue = parameters.get(i);
            if ( isRestrictionParameterSet(parameterValue) )
            {
  -            query.setParameter( "p" + (start + i), parameterValue );
  +            query.setParameter( QueryParser.getParameterName(start + i), parameterValue );
            }
         }
      }
  
  
  
  1.22      +11 -61    jboss-seam/src/main/org/jboss/seam/framework/Query.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: Query.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/framework/Query.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -b -r1.21 -r1.22
  --- Query.java	26 Feb 2007 18:13:05 -0000	1.21
  +++ Query.java	26 Feb 2007 19:24:50 -0000	1.22
  @@ -2,7 +2,6 @@
   
   import java.util.ArrayList;
   import java.util.List;
  -import java.util.StringTokenizer;
   import java.util.regex.Matcher;
   import java.util.regex.Pattern;
   
  @@ -10,9 +9,9 @@
   
   import org.jboss.seam.annotations.Create;
   import org.jboss.seam.annotations.Transactional;
  -import org.jboss.seam.core.Expressions;
   import org.jboss.seam.core.Expressions.ValueBinding;
   import org.jboss.seam.jsf.ListDataModel;
  +import org.jboss.seam.persistence.QueryParser;
   
   /**
    * Base class for components which manage a query
  @@ -131,71 +130,22 @@
      {
         if (parsedEjbql==null)
         {
  -         
  -         queryParameters = new ArrayList<ValueBinding>();
  -         StringTokenizer ejbqlTokens = new StringTokenizer( getEjbql(), "#}", true );
  -         StringBuilder ejbqlBuilder = new StringBuilder( getEjbql().length() );
  -         while ( ejbqlTokens.hasMoreTokens() )
  -         {
  -            String token = ejbqlTokens.nextToken();
  -            if ( "#".equals(token) )
  -            {
  -               String expression = token + ejbqlTokens.nextToken() + ejbqlTokens.nextToken();
  -               queryParameters.add( Expressions.instance().createValueBinding(expression) );
  -               ejbqlBuilder.append(":p").append( queryParameters.size() );
  -            }
  -            else
  -            {
  -               ejbqlBuilder.append(token);
  -            }
  -         }
  -         parsedEjbql = ejbqlBuilder.toString();
  +         QueryParser qp = new QueryParser(ejbql);
  +         queryParameters = qp.getParameterValueBindings();
  +         parsedEjbql = qp.getEjbql();
            
            List<String> restrictionFragments = getRestrictions();
            parsedRestrictions = new ArrayList<String>( restrictionFragments.size() );
            restrictionParameters = new ArrayList<ValueBinding>( restrictionFragments.size() );
  -         
            for ( String restriction: restrictionFragments )
            {
  -            StringTokenizer tokens = new StringTokenizer(restriction, "#}", true);
  -            StringBuilder builder = new StringBuilder( restriction.length() );
  -            ValueBinding valueBinding = null;
  -            while ( tokens.hasMoreTokens() )
  -            {
  -               String token = tokens.nextToken();
  -               if ( "#".equals(token) )
  -               {
  -                  if ( !tokens.hasMoreTokens() )
  +            QueryParser rqp = new QueryParser( restriction, queryParameters.size() + restrictionParameters.size() );            
  +            if ( rqp.getParameterValueBindings().size()!=1 ) 
                     {
  -                     throw new IllegalArgumentException("restriction terminates in #");
  +               throw new IllegalArgumentException("there should be exactly one value binding in a restriction: " + restriction);
                     }
  -                  String expressionToken = tokens.nextToken();
  -                  if ( !expressionToken.startsWith("{") )
  -                  {
  -                     throw new IllegalArgumentException("missing { after # in restriction");
  -                  }
  -                  if ( !tokens.hasMoreTokens() )
  -                  {
  -                     throw new IllegalArgumentException("missing } after expression in restriction");
  -                  }
  -                  String expression = token + expressionToken + tokens.nextToken();
  -                  valueBinding = Expressions.instance().createValueBinding(expression);
  -                  builder.append(":p").append( queryParameters.size() + restrictionParameters.size() );
  -               }
  -               else
  -               {
  -                  builder.append(token);
  -               }
  -               
  -            }
  -            
  -            if (valueBinding==null) 
  -            {
  -               throw new IllegalArgumentException("no value binding in restriction: " + restriction);
  -            }
  -            
  -            parsedRestrictions.add( builder.toString() );
  -            restrictionParameters.add(valueBinding);
  +            parsedRestrictions.add( rqp.getEjbql() );
  +            restrictionParameters.addAll( rqp.getParameterValueBindings() );
            }
            
         }
  
  
  



More information about the jboss-cvs-commits mailing list