You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by un...@apache.org on 2004/07/07 16:22:42 UTC

cvs commit: jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/expression RDBMSNOPExpression.java RDBMSExpressionFactory.java

unico       2004/07/07 07:22:42

  Modified:    src/stores/org/apache/slide/store/impl/rdbms/expression
                        RDBMSExpressionFactory.java
  Added:       src/stores/org/apache/slide/store/impl/rdbms/expression
                        RDBMSNOPExpression.java
  Log:
  Add NOPExpression to fix NPE on empty where clause
  
  Revision  Changes    Path
  1.5       +41 -31    jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/expression/RDBMSExpressionFactory.java
  
  Index: RDBMSExpressionFactory.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/expression/RDBMSExpressionFactory.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- RDBMSExpressionFactory.java	5 Jul 2004 16:45:55 -0000	1.4
  +++ RDBMSExpressionFactory.java	7 Jul 2004 14:22:42 -0000	1.5
  @@ -66,28 +66,33 @@
       
       public IBasicExpression createMergeExpression(String name, String namespace, Collection members)
       throws BadQueryException {
  -        ArrayList otherExpressions = null;
  -        ArrayList rdbmsExpressions = null;
  -        final Iterator iter = members.iterator();
  -        while (iter.hasNext()) {
  -            final IBasicExpression expression = (IBasicExpression) iter.next();
  -            if (expression instanceof RDBMSExpression) {
  -                if (rdbmsExpressions == null) {
  -                    rdbmsExpressions = new ArrayList(members.size());
  +        RDBMSExpression result = null;
  +        if (name == null) {
  +            result = new RDBMSNOPExpression(_context);
  +        }
  +        else {
  +            ArrayList otherExpressions = null;
  +            ArrayList rdbmsExpressions = null;
  +            final Iterator iter = members.iterator();
  +            while (iter.hasNext()) {
  +                final IBasicExpression expression = (IBasicExpression) iter.next();
  +                if (expression instanceof RDBMSExpression) {
  +                    if (rdbmsExpressions == null) {
  +                        rdbmsExpressions = new ArrayList(members.size());
  +                    }
  +                    rdbmsExpressions.add(expression);
                   }
  -                rdbmsExpressions.add(expression);
  -            }
  -            else {
  -                if (otherExpressions == null) {
  -                    otherExpressions = new ArrayList(members.size());
  +                else {
  +                    if (otherExpressions == null) {
  +                        otherExpressions = new ArrayList(members.size());
  +                    }
  +                    otherExpressions.add(expression);
                   }
  -                otherExpressions.add(expression);
               }
  +            result = new RDBMSMergeExpression(name, namespace, _context, rdbmsExpressions, otherExpressions);
           }
  -        final RDBMSMergeExpression expression = 
  -            new RDBMSMergeExpression(name, namespace, _context, rdbmsExpressions, otherExpressions);
  -        expression.setFactory(this);
  -        return expression;
  +        result.setFactory(this);
  +        return result;
       }
       
       IBasicExpression createStandardMergeExpression(String name, String namespace, Collection members) 
  @@ -97,18 +102,23 @@
   
       public IBasicExpression createExpression(Element element) throws BadQueryException {
           IBasicExpression result = null;
  -        final String namespace = element.getNamespace().getURI();
  -        final String name = element.getName();
  -        if (namespace.equals(NamespaceCache.DEFAULT_URI)) {
  -            result = createDAVExpression(element);
  -        }
  -        else if (namespace.equals(NamespaceCache.SLIDE_URI)) {
  -            result = createSlideExpression(element);
  +        if (element == null) {
  +            result = new RDBMSNOPExpression(_context);
           }
           else {
  -            throw new InvalidQueryException
  -                ("operator <" + namespace + ":" + name + "> is an unprocessable entity");
  -            
  +            final String namespace = element.getNamespace().getURI();
  +            final String name = element.getName();
  +            if (namespace.equals(NamespaceCache.DEFAULT_URI)) {
  +                result = createDAVExpression(element);
  +            }
  +            else if (namespace.equals(NamespaceCache.SLIDE_URI)) {
  +                result = createSlideExpression(element);
  +            }
  +            else {
  +                throw new InvalidQueryException
  +                    ("operator <" + namespace + ":" + name + "> is an unprocessable entity");
  +                
  +            }
           }
           result.setFactory(this);
           return result;
  
  
  
  1.1                  jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/expression/RDBMSNOPExpression.java
  
  Index: RDBMSNOPExpression.java
  ===================================================================
  /*
   * $Header: /home/cvs/jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/expression/RDBMSNOPExpression.java,v 1.1 2004/07/07 14:22:42 unico Exp $
   * $Revision: 1.1 $
   * $Date: 2004/07/07 14:22:42 $
   *
   * ====================================================================
   *
   * Copyright 1999-2004 The Apache Software Foundation 
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   *
   */
  package org.apache.slide.store.impl.rdbms.expression;
  
  import org.apache.slide.search.SearchException;
  import org.apache.slide.search.basic.IBasicResultSet;
  
  /**
   * @author <a href="mailto:unico@hippo.nl">Unico Hommes</a>
   */
  public class RDBMSNOPExpression extends RDBMSExpression {
  
      public RDBMSNOPExpression(RDBMSQueryContext context) {
          super(context);
      }
  
      protected IBasicResultSet compile(RDBMSMergeExpression expression) throws SearchException {
          return null;
      }
  
      public IBasicResultSet execute() throws SearchException {
          return _context.results();
      }
  
  }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org