[Mulgara-svn] r1892 - in trunk/src/jar/query/java/org/mulgara/query/filter: . arithmetic value
pag at mulgara.org
pag at mulgara.org
Wed Jan 27 19:18:48 UTC 2010
Author: pag
Date: 2010-01-27 11:18:47 -0800 (Wed, 27 Jan 2010)
New Revision: 1892
Modified:
trunk/src/jar/query/java/org/mulgara/query/filter/AbstractFilterValue.java
trunk/src/jar/query/java/org/mulgara/query/filter/AbstractIsIriFnUnitTest.java
trunk/src/jar/query/java/org/mulgara/query/filter/CompoundStatementUnitTest.java
trunk/src/jar/query/java/org/mulgara/query/filter/Context.java
trunk/src/jar/query/java/org/mulgara/query/filter/EqualityComparisonUnitTest.java
trunk/src/jar/query/java/org/mulgara/query/filter/Filter.java
trunk/src/jar/query/java/org/mulgara/query/filter/InequalityComparisonUnitTest.java
trunk/src/jar/query/java/org/mulgara/query/filter/IsBlankFnUnitTest.java
trunk/src/jar/query/java/org/mulgara/query/filter/IsLiteralFnUnitTest.java
trunk/src/jar/query/java/org/mulgara/query/filter/LangMatchesUnitTest.java
trunk/src/jar/query/java/org/mulgara/query/filter/Not.java
trunk/src/jar/query/java/org/mulgara/query/filter/RDFTerm.java
trunk/src/jar/query/java/org/mulgara/query/filter/RegexFnUnitTest.java
trunk/src/jar/query/java/org/mulgara/query/filter/TestContext.java
trunk/src/jar/query/java/org/mulgara/query/filter/arithmetic/BinaryOperation.java
trunk/src/jar/query/java/org/mulgara/query/filter/arithmetic/UnaryMinus.java
trunk/src/jar/query/java/org/mulgara/query/filter/value/BlankNodeValue.java
trunk/src/jar/query/java/org/mulgara/query/filter/value/ExternalFn.java
trunk/src/jar/query/java/org/mulgara/query/filter/value/IRI.java
trunk/src/jar/query/java/org/mulgara/query/filter/value/SimpleLiteral.java
trunk/src/jar/query/java/org/mulgara/query/filter/value/TypedLiteral.java
trunk/src/jar/query/java/org/mulgara/query/filter/value/Var.java
Log:
Added a method to get access to all the variables in an expression
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/AbstractFilterValue.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/AbstractFilterValue.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/AbstractFilterValue.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -11,8 +11,13 @@
*/
package org.mulgara.query.filter;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
import org.jrdf.graph.Node;
import org.mulgara.query.QueryException;
+import org.mulgara.query.Variable;
import org.mulgara.query.filter.value.Bool;
import org.mulgara.query.filter.value.ComparableExpression;
import org.mulgara.query.filter.value.IRI;
@@ -33,6 +38,9 @@
/** Serialization ID */
private static final long serialVersionUID = 7034034367736302522L;
+ /** The logger. */
+ final static Logger logger = Logger.getLogger(AbstractFilterValue.class.getName());
+
/** The operands for the operation */
protected RDFTerm[] operands;
@@ -109,6 +117,16 @@
return true;
}
+ /**
+ * Return all the variables in this term.
+ * @see org.mulgara.query.filter.RDFTerm#getVariables()
+ */
+ public Set<Variable> getVariables() {
+ Set<Variable> result = new HashSet<Variable>();
+ for (RDFTerm term: operands) result.addAll(term.getVariables());
+ return result;
+ }
+
/** @see org.mulgara.query.filter.RDFTerm#sameTerm(org.mulgara.query.filter.RDFTerm) */
public boolean sameTerm(RDFTerm v) throws QueryException { return resolve().sameTerm(v); }
@@ -158,7 +176,6 @@
/** @see org.mulgara.query.filter.ContextOwner#setCurrentContext(org.mulgara.query.filter.Context) */
public void setCurrentContext(Context context) {
- if (!(context.equals(contextOwner.getCurrentContext()))) throw new AssertionError("Filter context being set differently to initial calling context.");
super.setCurrentContext(context);
}
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/AbstractIsIriFnUnitTest.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/AbstractIsIriFnUnitTest.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/AbstractIsIriFnUnitTest.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -80,7 +80,7 @@
assertTrue(f.equals(fn));
fail("No exception when testing an unbound value");
} catch (QueryException qe) {
- assertTrue(qe.getMessage().startsWith("Resolving unbound variable"));
+ assertTrue(qe.getMessage().startsWith("Unbound column"));
}
assertTrue(c.next());
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/CompoundStatementUnitTest.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/CompoundStatementUnitTest.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/CompoundStatementUnitTest.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -123,7 +123,8 @@
assertTrue(stmt.test(c)); // null + 5 < 10
fail("No exception when testing an unbound value for equality");
} catch (QueryException qe) {
- assertTrue(qe.getMessage().startsWith("Resolving unbound variable"));
+ String msg = qe.getMessage();
+ assertTrue("Unexpected message: \"" + msg + "\"", msg.startsWith("Unbound column"));
}
}
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/Context.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/Context.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/Context.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -41,6 +41,13 @@
*/
public boolean isBound(int columnNumber) throws QueryException;
+ /**
+ * Returns the internal value used to indicate an unbound variable.
+ * This is to facilitate faster lookups, while still keeping the value
+ * in Tuples opaque.
+ * @return The value representing an unbound value after looking it up.
+ */
+ public long getUnboundVal();
/**
* Gets the internal column number for a column with the given name
@@ -64,5 +71,5 @@
* @throws QueryException If a localize exception is encountered.
*/
public long localize(Node node) throws QueryException;
-
+
}
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/EqualityComparisonUnitTest.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/EqualityComparisonUnitTest.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/EqualityComparisonUnitTest.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -281,19 +281,19 @@
assertTrue(it, f.equals(eq));
fail("No exception when testing an unbound value for equality: " + i);
} catch (QueryException qe) {
- assertTrue(qe.getMessage().startsWith("Resolving unbound variable"));
+ assertTrue(qe.getMessage().startsWith("Unbound column"));
}
try {
assertTrue(it, f.equals(same));
fail("No exception when testing an unbound value for equivalency: " + i);
} catch (QueryException qe) {
- assertTrue(qe.getMessage().startsWith("Resolving unbound variable"));
+ assertTrue(qe.getMessage().startsWith("Unbound column"));
}
try {
assertTrue(it, f.equals(ne));
fail("No exception when testing an unbound value for inequality: " + i);
} catch (QueryException qe) {
- assertTrue(qe.getMessage().startsWith("Resolving unbound variable"));
+ assertTrue(qe.getMessage().startsWith("Unbound column"));
}
break;
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/Filter.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/Filter.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/Filter.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -15,10 +15,13 @@
*/
package org.mulgara.query.filter;
+import java.util.Collections;
+import java.util.Set;
import org.jrdf.graph.Node;
import org.mulgara.query.rdf.LiteralImpl;
import org.mulgara.query.rdf.XSD;
import org.mulgara.query.QueryException;
+import org.mulgara.query.Variable;
/**
@@ -58,6 +61,7 @@
public boolean sameTerm(RDFTerm v) throws QueryException { return equals(v); }
public void setContextOwner(ContextOwner owner) { }
public void addContextListener(ContextOwner l) { }
+ public Set<Variable> getVariables() { return Collections.emptySet(); }
};
}
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/InequalityComparisonUnitTest.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/InequalityComparisonUnitTest.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/InequalityComparisonUnitTest.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -350,25 +350,25 @@
assertTrue(it, f.equals(lt));
fail("No exception when testing an unbound value for equality: " + i);
} catch (QueryException qe) {
- assertTrue(qe.getMessage().startsWith("Resolving unbound variable"));
+ assertTrue(qe.getMessage().startsWith("Unbound column"));
}
try {
assertTrue(it, f.equals(lte));
fail("No exception when testing an unbound value for equivalency: " + i);
} catch (QueryException qe) {
- assertTrue(qe.getMessage().startsWith("Resolving unbound variable"));
+ assertTrue(qe.getMessage().startsWith("Unbound column"));
}
try {
assertTrue(it, f.equals(gt));
fail("No exception when testing an unbound value for inequality: " + i);
} catch (QueryException qe) {
- assertTrue(qe.getMessage().startsWith("Resolving unbound variable"));
+ assertTrue(qe.getMessage().startsWith("Unbound column"));
}
try {
assertTrue(it, f.equals(gte));
fail("No exception when testing an unbound value for inequality: " + i);
} catch (QueryException qe) {
- assertTrue(qe.getMessage().startsWith("Resolving unbound variable"));
+ assertTrue(qe.getMessage().startsWith("Unbound column"));
}
break;
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/IsBlankFnUnitTest.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/IsBlankFnUnitTest.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/IsBlankFnUnitTest.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -101,7 +101,7 @@
assertTrue(f.equals(fn));
fail("No exception when testing an unbound value");
} catch (QueryException qe) {
- assertTrue(qe.getMessage().startsWith("Resolving unbound variable"));
+ assertTrue(qe.getMessage().startsWith("Unbound column"));
}
assertTrue(c.next());
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/IsLiteralFnUnitTest.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/IsLiteralFnUnitTest.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/IsLiteralFnUnitTest.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -104,7 +104,7 @@
assertTrue(f.equals(fn));
fail("No exception when testing an unbound value");
} catch (QueryException qe) {
- assertTrue(qe.getMessage().startsWith("Resolving unbound variable"));
+ assertTrue(qe.getMessage().startsWith("Unbound column"));
}
assertTrue(c.next());
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/LangMatchesUnitTest.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/LangMatchesUnitTest.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/LangMatchesUnitTest.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -189,7 +189,7 @@
assertTrue(f.equals(fn));
fail("No exception when testing an unbound value");
} catch (QueryException qe) {
- assertTrue(qe.getMessage().startsWith("Resolving unbound variable"));
+ assertTrue(qe.getMessage().startsWith("Unbound column"));
}
break;
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/Not.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/Not.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/Not.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -1,13 +1,17 @@
-/**
- * The contents of this file are subject to the Open Software License
- * Version 3.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.opensource.org/licenses/osl-3.0.txt
+/*
+ * Copyright 2008 Fedora Commons, Inc.
*
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and limitations
- * under the License.
+ * 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.mulgara.query.filter;
@@ -20,8 +24,6 @@
*
* @created Mar 7, 2008
* @author Paul Gearon
- * @copyright © 2008 <a href="mailto:pgearon at users.sourceforge.net">Paul Gearon</a>
- * @licence <a href="{@docRoot}/../../LICENCE.txt">Open Software License v3.0</a>
*/
public class Not extends AbstractFilterValue implements Filter {
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/RDFTerm.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/RDFTerm.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/RDFTerm.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -12,9 +12,11 @@
package org.mulgara.query.filter;
import java.io.Serializable;
+import java.util.Set;
import org.jrdf.graph.Node;
import org.mulgara.query.QueryException;
+import org.mulgara.query.Variable;
/**
@@ -86,4 +88,9 @@
*/
public boolean isGrounded() throws QueryException;
+ /**
+ * Returns all the variables referred to by this term.
+ * @return A set of variables.
+ */
+ public Set<Variable> getVariables();
}
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/RegexFnUnitTest.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/RegexFnUnitTest.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/RegexFnUnitTest.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -194,7 +194,7 @@
assertTrue(f.equals(fn));
fail("No exception when testing an unbound value");
} catch (QueryException qe) {
- assertTrue(qe.getMessage().startsWith("Resolving unbound variable"));
+ assertTrue(qe.getMessage().startsWith("Unbound column"));
}
break;
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/TestContext.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/TestContext.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/TestContext.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -120,6 +120,11 @@
return rows[rowNumber][columnNumber] != null;
}
+ /** @see org.mulgara.query.filter.Context#getUnboundVal() */
+ public long getUnboundVal() {
+ return 0;
+ }
+
/**
* Gets a previously unused node ID.
* @return a new Node ID.
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/arithmetic/BinaryOperation.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/arithmetic/BinaryOperation.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/arithmetic/BinaryOperation.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -12,9 +12,12 @@
package org.mulgara.query.filter.arithmetic;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
import org.mulgara.query.QueryException;
+import org.mulgara.query.Variable;
import org.mulgara.query.filter.value.NumericExpression;
@@ -54,6 +57,13 @@
return lhs.isGrounded() && rhs.isGrounded();
}
+ /** @see org.mulgara.query.filter.RDFTerm#getVariables() */
+ public Set<Variable> getVariables() {
+ Set<Variable> result = new HashSet<Variable>(lhs.getVariables());
+ result.addAll(rhs.getVariables());
+ return result;
+ }
+
// Not using generics in NumberOps as we can't know the types at this stage, but they are handy
// for defining the classes correctly
/**
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/arithmetic/UnaryMinus.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/arithmetic/UnaryMinus.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/arithmetic/UnaryMinus.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -13,8 +13,10 @@
import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
import org.mulgara.query.QueryException;
+import org.mulgara.query.Variable;
import org.mulgara.query.filter.value.NumericExpression;
@@ -43,6 +45,11 @@
operand.setContextOwner(this);
}
+ /** @see org.mulgara.query.filter.RDFTerm#getVariables() */
+ public Set<Variable> getVariables() {
+ return operand.getVariables();
+ }
+
/** {@inheritDoc} */
public boolean isGrounded() throws QueryException {
return operand.isGrounded();
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/value/BlankNodeValue.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/value/BlankNodeValue.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/value/BlankNodeValue.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -11,9 +11,13 @@
*/
package org.mulgara.query.filter.value;
+import java.util.Collections;
+import java.util.Set;
+
import org.jrdf.graph.BlankNode;
import org.jrdf.graph.Node;
import org.mulgara.query.QueryException;
+import org.mulgara.query.Variable;
import org.mulgara.query.filter.Context;
import org.mulgara.query.filter.ContextOwner;
import org.mulgara.query.filter.RDFTerm;
@@ -93,4 +97,8 @@
/** This value does not need a context */
public void addContextListener(ContextOwner l) { }
+ public Set<Variable> getVariables() {
+ return Collections.emptySet();
+ }
+
}
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/value/ExternalFn.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/value/ExternalFn.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/value/ExternalFn.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -85,7 +85,7 @@
isConstructor = true;
} else {
extFn = findFunction(fn, operands.length);
- if (extFn == null) logger.error("Unknown function: " + fn);
+ if (extFn == null) logger.debug("Unknown function: " + fn);
}
}
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/value/IRI.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/value/IRI.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/value/IRI.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -12,11 +12,14 @@
package org.mulgara.query.filter.value;
import java.net.URI;
+import java.util.Collections;
+import java.util.Set;
import javax.xml.namespace.QName;
import org.jrdf.graph.Node;
import org.mulgara.query.QueryException;
+import org.mulgara.query.Variable;
import org.mulgara.query.filter.Context;
import org.mulgara.query.filter.ContextOwner;
import org.mulgara.query.filter.RDFTerm;
@@ -131,4 +134,9 @@
public String toString() {
return qname == null ? value.toString() : value.toString() + " (" + qname + ")";
}
+
+ /** @see org.mulgara.query.filter.RDFTerm#getVariables() */
+ public Set<Variable> getVariables() {
+ return Collections.emptySet();
+ }
}
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/value/SimpleLiteral.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/value/SimpleLiteral.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/value/SimpleLiteral.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -11,8 +11,12 @@
*/
package org.mulgara.query.filter.value;
+import java.util.Collections;
+import java.util.Set;
+
import org.jrdf.graph.Node;
import org.mulgara.query.QueryException;
+import org.mulgara.query.Variable;
import org.mulgara.query.filter.Context;
import org.mulgara.query.filter.ContextOwner;
import org.mulgara.query.filter.RDFTerm;
@@ -180,4 +184,9 @@
return ((String)lang.getValue()).compareTo((String)sl.getLang().getValue());
}
+ /**@see org.mulgara.query.filter.RDFTerm#getVariables() */
+ public Set<Variable> getVariables() {
+ return Collections.emptySet();
+ }
+
}
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/value/TypedLiteral.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/value/TypedLiteral.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/value/TypedLiteral.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -13,13 +13,16 @@
import java.math.BigDecimal;
import java.net.URI;
+import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
import org.apache.log4j.Logger;
import org.jrdf.graph.Node;
import org.mulgara.query.QueryException;
+import org.mulgara.query.Variable;
import org.mulgara.query.filter.Context;
import org.mulgara.query.filter.ContextOwner;
import org.mulgara.query.rdf.LiteralImpl;
@@ -163,6 +166,11 @@
return test.ebv(value.toString());
}
+ /** @see org.mulgara.query.filter.RDFTerm#getVariables() */
+ public Set<Variable> getVariables() {
+ return Collections.emptySet();
+ }
+
/**
* Converts abbreviated URIs for XSD types into the full URI.
* @param type The URI of the datatype.
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/value/Var.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/value/Var.java 2010-01-27 18:29:32 UTC (rev 1891)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/value/Var.java 2010-01-27 19:18:47 UTC (rev 1892)
@@ -11,12 +11,16 @@
*/
package org.mulgara.query.filter.value;
+import java.util.Collections;
+import java.util.Set;
+
import org.apache.log4j.Logger;
import org.jrdf.graph.BlankNode;
import org.jrdf.graph.Literal;
import org.jrdf.graph.Node;
import org.jrdf.graph.URIReference;
import org.mulgara.query.QueryException;
+import org.mulgara.query.Variable;
import org.mulgara.query.filter.AbstractContextOwner;
import org.mulgara.query.filter.Context;
import org.mulgara.query.filter.ContextOwner;
@@ -62,6 +66,11 @@
this.name = name;
}
+ /** @see org.mulgara.query.filter.RDFTerm#getVariables() */
+ public Set<Variable> getVariables() {
+ return Collections.singleton(new Variable(name));
+ }
+
/**
* Tests if this variable is bound.
* @return <code>true</code> if the variable is unknown, or known and not bound.
@@ -239,10 +248,10 @@
*/
public long resolveLocal() throws QueryException {
Context localContext = getLocalContext();
- if (!localContext.isBound(varIndex)) {
- throw new QueryException("Resolving unbound variable: " + name);
- }
- return localContext.getColumnValue(varIndex);
+ if (varIndex == Context.NOT_BOUND) throw new QueryException("Resolving unbound variable: " + name);
+ long result = localContext.getColumnValue(varIndex);
+ if (result == localContext.getUnboundVal()) throw new QueryException("Resolving unbound variable: " + name);
+ return result;
}
/**
@@ -271,7 +280,7 @@
if (localContext == null) {
localContext = getContextOwner().getCurrentContext();
} else {
- if (localContext != getContextOwner().getCurrentContext()) logger.warn("Unexpected different local context");
+ if (localContext != getContextOwner().getCurrentContext()) logger.debug("Changed context. This should be in a cloned filter.");
}
return setVarIndex(localContext);
}
More information about the Mulgara-svn
mailing list