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