[Mulgara-svn] r2091 - in trunk/src/jar: query/java/org/mulgara/query resolver/java/org/mulgara/resolver server-rmi/java/org/mulgara/server/rmi
pag at mulgara.org
pag at mulgara.org
Tue Jan 10 16:57:44 UTC 2012
Author: pag
Date: 2012-01-10 16:57:43 +0000 (Tue, 10 Jan 2012)
New Revision: 2091
Modified:
trunk/src/jar/query/java/org/mulgara/query/AbstractAnswer.java
trunk/src/jar/query/java/org/mulgara/query/AnswerImpl.java
trunk/src/jar/query/java/org/mulgara/query/AnswerOperations.java
trunk/src/jar/query/java/org/mulgara/query/ArrayAnswer.java
trunk/src/jar/query/java/org/mulgara/query/BooleanAnswer.java
trunk/src/jar/query/java/org/mulgara/query/GraphAnswer.java
trunk/src/jar/query/java/org/mulgara/query/UnconstrainedAnswer.java
trunk/src/jar/resolver/java/org/mulgara/resolver/GlobalizedAnswer.java
trunk/src/jar/resolver/java/org/mulgara/resolver/TransactionalAnswer.java
trunk/src/jar/server-rmi/java/org/mulgara/server/rmi/BlankNodeWrapperAnswer.java
Log:
All Answer implementations now consistently implement hashCode wherever equals is defined. TransactionalAnswer uses identity hashCode due to state being affected during a clone
Modified: trunk/src/jar/query/java/org/mulgara/query/AbstractAnswer.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/AbstractAnswer.java 2012-01-10 16:56:11 UTC (rev 2090)
+++ trunk/src/jar/query/java/org/mulgara/query/AbstractAnswer.java 2012-01-10 16:57:43 UTC (rev 2091)
@@ -47,4 +47,10 @@
return false;
}
+ /**
+ * Added to match {@link #equals(Object)}.
+ */
+ public int hashCode() {
+ return AnswerOperations.hashCode(this);
+ }
}
Modified: trunk/src/jar/query/java/org/mulgara/query/AnswerImpl.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/AnswerImpl.java 2012-01-10 16:56:11 UTC (rev 2090)
+++ trunk/src/jar/query/java/org/mulgara/query/AnswerImpl.java 2012-01-10 16:57:43 UTC (rev 2091)
@@ -434,6 +434,13 @@
}
/**
+ * Added to match {@link #equals(Object)}.
+ */
+ public int hashCode() {
+ return super.hashCode();
+ }
+
+ /**
* Generate a legible representation of the answer.
*
* @return a string representation of the results.
Modified: trunk/src/jar/query/java/org/mulgara/query/AnswerOperations.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/AnswerOperations.java 2012-01-10 16:56:11 UTC (rev 2090)
+++ trunk/src/jar/query/java/org/mulgara/query/AnswerOperations.java 2012-01-10 16:57:43 UTC (rev 2091)
@@ -152,28 +152,32 @@
}
}
- public static int hashCode(Answer a) throws TuplesException {
- // Clone the arguments to avoid interfering with their cursors
- a = (Answer)a.clone();
-
- // Check that columns match
- int numberOfVariables = a.getNumberOfVariables();
- int result = numberOfVariables;
-
+ public static int hashCode(Answer ans) {
try {
- // Check that all row values match
- a.beforeFirst();
- while (a.next()) {
- // Verify that the rows match
- for (int i = 0; i < numberOfVariables; i++) {
- Object o = a.getObject(i);
- if (o != null) result ^= o.hashCode();
+ // Clone the arguments to avoid interfering with their cursors
+ Answer a = (Answer)ans.clone();
+
+ // Check that columns match
+ int numberOfVariables = a.getNumberOfVariables();
+ int result = numberOfVariables;
+
+ try {
+ // Iterate over the rows
+ a.beforeFirst();
+ while (a.next()) {
+ // add in all of the row
+ for (int i = 0; i < numberOfVariables; i++) {
+ Object o = a.getObject(i);
+ if (o != null) result ^= o.hashCode();
+ }
}
+ } finally {
+ // Close the clone
+ a.close();
}
- } finally {
- // Close our clones
- a.close();
+ return result;
+ } catch (TuplesException e) {
+ throw new RuntimeException("Unable to generate hashCode for answer", e);
}
- return result;
}
}
Modified: trunk/src/jar/query/java/org/mulgara/query/ArrayAnswer.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/ArrayAnswer.java 2012-01-10 16:56:11 UTC (rev 2090)
+++ trunk/src/jar/query/java/org/mulgara/query/ArrayAnswer.java 2012-01-10 16:57:43 UTC (rev 2091)
@@ -378,6 +378,13 @@
}
/**
+ * Added to match {@link #equals(Object)}.
+ */
+ public int hashCode() {
+ return super.hashCode();
+ }
+
+ /**
* @return a formatted representation of this instance
*/
public String toString() {
Modified: trunk/src/jar/query/java/org/mulgara/query/BooleanAnswer.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/BooleanAnswer.java 2012-01-10 16:56:11 UTC (rev 2090)
+++ trunk/src/jar/query/java/org/mulgara/query/BooleanAnswer.java 2012-01-10 16:57:43 UTC (rev 2091)
@@ -173,5 +173,4 @@
public Object clone() {
return super.clone();
}
-
}
Modified: trunk/src/jar/query/java/org/mulgara/query/GraphAnswer.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/GraphAnswer.java 2012-01-10 16:56:11 UTC (rev 2090)
+++ trunk/src/jar/query/java/org/mulgara/query/GraphAnswer.java 2012-01-10 16:57:43 UTC (rev 2091)
@@ -275,7 +275,9 @@
/** @see java.lang.Object#clone() */
public Object clone() {
- return new GraphAnswer((Answer)rawAnswer.clone());
+ GraphAnswer a = (GraphAnswer)super.clone();
+ a.rawAnswer = (Answer)rawAnswer.clone();
+ return a;
}
@@ -291,6 +293,13 @@
}
/**
+ * Added to match {@link #equals(Object)}.
+ */
+ public int hashCode() {
+ return super.hashCode();
+ }
+
+ /**
* An internal method for moving on to the next row, without testing validity.
* @return <code>true</code> if this call has not exhausted the rows.
* @throws TuplesException Due to an error in the underlying rawAnswer.
Modified: trunk/src/jar/query/java/org/mulgara/query/UnconstrainedAnswer.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/UnconstrainedAnswer.java 2012-01-10 16:56:11 UTC (rev 2090)
+++ trunk/src/jar/query/java/org/mulgara/query/UnconstrainedAnswer.java 2012-01-10 16:57:43 UTC (rev 2091)
@@ -234,7 +234,7 @@
// Gotta be non-null and of matching type
if ((object != null) && (object instanceof Answer)) {
try {
- return AnswerOperations.equal(this, (Answer) object);
+ return AnswerOperations.equal(this, (Answer)object);
} catch (TuplesException e) {
logger.fatal("Couldn't test equality of answers", e);
}
@@ -244,6 +244,13 @@
}
/**
+ * Added to match {@link #equals(Object)}.
+ */
+ public int hashCode() {
+ return super.hashCode();
+ }
+
+ /**
* This currently tries to mimic the
* {@link org.mulgara.util.MemoryResultSet#toString} method.
*
Modified: trunk/src/jar/resolver/java/org/mulgara/resolver/GlobalizedAnswer.java
===================================================================
--- trunk/src/jar/resolver/java/org/mulgara/resolver/GlobalizedAnswer.java 2012-01-10 16:56:11 UTC (rev 2090)
+++ trunk/src/jar/resolver/java/org/mulgara/resolver/GlobalizedAnswer.java 2012-01-10 16:57:43 UTC (rev 2091)
@@ -221,4 +221,11 @@
}
return false;
}
+
+ /**
+ * Added to match {@link #equals(Object)}.
+ */
+ public int hashCode() {
+ return super.hashCode();
+ }
}
Modified: trunk/src/jar/resolver/java/org/mulgara/resolver/TransactionalAnswer.java
===================================================================
--- trunk/src/jar/resolver/java/org/mulgara/resolver/TransactionalAnswer.java 2012-01-10 16:56:11 UTC (rev 2090)
+++ trunk/src/jar/resolver/java/org/mulgara/resolver/TransactionalAnswer.java 2012-01-10 16:57:43 UTC (rev 2091)
@@ -248,6 +248,14 @@
}
}
+ public boolean equals(Object o) {
+ return super.equals(o);
+ }
+
+ public int hashCode() {
+ return System.identityHashCode(this);
+ }
+
private void report(String desc) {
if (logger.isDebugEnabled()) {
logger.debug(desc + ": " + System.identityHashCode(this) + ", xa=" + System.identityHashCode(transaction));
Modified: trunk/src/jar/server-rmi/java/org/mulgara/server/rmi/BlankNodeWrapperAnswer.java
===================================================================
--- trunk/src/jar/server-rmi/java/org/mulgara/server/rmi/BlankNodeWrapperAnswer.java 2012-01-10 16:56:11 UTC (rev 2090)
+++ trunk/src/jar/server-rmi/java/org/mulgara/server/rmi/BlankNodeWrapperAnswer.java 2012-01-10 16:57:43 UTC (rev 2091)
@@ -189,5 +189,4 @@
public boolean next() throws TuplesException {
return answer.next();
}
-
}
More information about the Mulgara-svn
mailing list