[Mulgara-svn] r2024 - in trunk/src/jar: query/java/org/mulgara/query query/java/org/mulgara/query/filter/arithmetic query/java/org/mulgara/query/filter/value resolver/java/org/mulgara/resolver resolver-relational/java/org/mulgara/resolver/relational resolver-store/java/org/mulgara/resolver/store resolver-xsd/java/org/mulgara/resolver/xsd server-rmi/java/org/mulgara/server/rmi tuples/java/org/mulgara/store/tuples

pag at mulgara.org pag at mulgara.org
Mon Sep 12 18:23:58 UTC 2011


Author: pag
Date: 2011-09-12 18:23:58 +0000 (Mon, 12 Sep 2011)
New Revision: 2024

Modified:
   trunk/src/jar/query/java/org/mulgara/query/GraphOperation.java
   trunk/src/jar/query/java/org/mulgara/query/Query.java
   trunk/src/jar/query/java/org/mulgara/query/filter/arithmetic/BinaryOperation.java
   trunk/src/jar/query/java/org/mulgara/query/filter/value/ExternalFn.java
   trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolution.java
   trunk/src/jar/resolver-store/java/org/mulgara/resolver/store/StatementStoreResolution.java
   trunk/src/jar/resolver-xsd/java/org/mulgara/resolver/xsd/IntervalTransformation.java
   trunk/src/jar/resolver/java/org/mulgara/resolver/LocalQueryResolver.java
   trunk/src/jar/resolver/java/org/mulgara/resolver/MulgaraInternalTransaction.java
   trunk/src/jar/resolver/java/org/mulgara/resolver/MulgaraInternalTransactionFactory.java
   trunk/src/jar/resolver/java/org/mulgara/resolver/MulgaraXAResourceContext.java
   trunk/src/jar/resolver/java/org/mulgara/resolver/OrderByRowComparator.java
   trunk/src/jar/server-rmi/java/org/mulgara/server/rmi/RemoteXAResource.java
   trunk/src/jar/server-rmi/java/org/mulgara/server/rmi/RemoteXAResourceWrapperXAResource.java
   trunk/src/jar/tuples/java/org/mulgara/store/tuples/DefaultRowComparator.java
   trunk/src/jar/tuples/java/org/mulgara/store/tuples/LeftJoin.java
   trunk/src/jar/tuples/java/org/mulgara/store/tuples/OrderedAppend.java
   trunk/src/jar/tuples/java/org/mulgara/store/tuples/PartialColumnComparator.java
   trunk/src/jar/tuples/java/org/mulgara/store/tuples/TuplesOperations.java
Log:
Fixed up usage of equals, plus some flow control around exception handling

Modified: trunk/src/jar/query/java/org/mulgara/query/GraphOperation.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/GraphOperation.java	2011-09-12 18:23:05 UTC (rev 2023)
+++ trunk/src/jar/query/java/org/mulgara/query/GraphOperation.java	2011-09-12 18:23:58 UTC (rev 2024)
@@ -168,7 +168,7 @@
   public boolean equals(Object m) {
     
     if (!(m instanceof GraphOperation)) return false;
-    if ((m == null) || !m.getClass().equals(getClass())) return false;
+    if ((m == null) || m.getClass() !=getClass()) return false;
     if (m == this) return true;
 
     Class<?> type = m.getClass();
@@ -205,13 +205,13 @@
    */
   private void flattenExpression(Set<GraphExpression> expressions, Class<?> type) {
 
-    if (lhs.getClass().equals(type)) {
+    if (lhs.getClass() == type) {
       ((GraphOperation)lhs).flattenExpression(expressions, type);
     } else {
       expressions.add(lhs);
     }
 
-    if (rhs.getClass().equals(type)) {
+    if (rhs.getClass() == type) {
       ((GraphOperation)rhs).flattenExpression(expressions, type);
     } else {
       expressions.add(rhs);

Modified: trunk/src/jar/query/java/org/mulgara/query/Query.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/Query.java	2011-09-12 18:23:05 UTC (rev 2023)
+++ trunk/src/jar/query/java/org/mulgara/query/Query.java	2011-09-12 18:23:58 UTC (rev 2024)
@@ -423,6 +423,13 @@
     return answer.equals(query.answer);
   }
 
+  public int hashCode() {
+    return variableList.hashCode() + 3 * graphExpression.hashCode() +
+           5 * constraintExpression.hashCode() + 7 * havingConstraint.hashCode() +
+           11 * ((orderList == null) ? 0 : orderList.hashCode()) +
+           13 * ((limit == null) ? 0 : limit.hashCode()) +
+           17 * offset + answer.hashCode();
+  }
 
   /**
    * Close this {@link Query}, and the underlying {@link Answer} objects.

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	2011-09-12 18:23:05 UTC (rev 2023)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/arithmetic/BinaryOperation.java	2011-09-12 18:23:58 UTC (rev 2024)
@@ -71,11 +71,10 @@
    * @throws QueryException The values of one of the operands could not be resolved.
    * @see org.mulgara.query.filter.value.NumericExpression#getNumber()
    */
-  @SuppressWarnings("unchecked")
   public Number getNumber() throws QueryException {
     Number left = lhs.getNumber();
     Number right = rhs.getNumber();
-    NumberOps op = opMap.get(new ClassPair(left, right));
+    NumberOps<? extends Number, ? extends Number> op = opMap.get(new ClassPair(left, right));
     if (op == null) throw new AssertionError("Missing entry in operation map");
     return doOperation(op, left, right);
   }
@@ -87,8 +86,7 @@
    * @param right The second operand
    * @return The arithmetic result of applying the operation to the parameters
    */
-  @SuppressWarnings("unchecked")
-  abstract Number doOperation(NumberOps ops, Number left, Number right);
+  abstract Number doOperation(NumberOps<? extends Number, ? extends Number> ops, Number left, Number right);
 
   /** Stores classes as an integrated pair for mapping pairs of Numbers to their appropriate functions */
   static class ClassPair {
@@ -125,7 +123,7 @@
     /** @return <code>true</code> iff o is a class pair containing equal elements */
     public boolean equals(Object o) {
       if (o == null || (!(o instanceof ClassPair))) return false;
-      return left.equals(((ClassPair)o).left) && right.equals(((ClassPair)o).right);
+      return left == ((ClassPair)o).left && right == ((ClassPair)o).right;
     }
   }
 

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	2011-09-12 18:23:05 UTC (rev 2023)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/value/ExternalFn.java	2011-09-12 18:23:58 UTC (rev 2024)
@@ -199,7 +199,7 @@
       }
       throw new QueryException("Error executing external function", e);
     }
-    return (result.getClass().equals(URI.class)) ? new IRI((URI)result) : TypedLiteral.newLiteral(result);
+    return (result.getClass() == URI.class) ? new IRI((URI)result) : TypedLiteral.newLiteral(result);
   }
 
   /**
@@ -243,12 +243,14 @@
       for (XPathFunctionResolver resolver: FunctionResolverRegistry.getFunctionResolverRegistry()) {
         try {
           result = resolver.resolveFunction(fnName, argCount);
+          if (result != null) {
+            fnCache.put(label, result);
+            break;
+          }
         } catch (Exception e) {
           // this resolver is unable to handle the given QName
         }
-        if (result != null) break;
       }
-      if (result != null) fnCache.put(label, result);
     }
     return result;
   }

Modified: trunk/src/jar/resolver/java/org/mulgara/resolver/LocalQueryResolver.java
===================================================================
--- trunk/src/jar/resolver/java/org/mulgara/resolver/LocalQueryResolver.java	2011-09-12 18:23:05 UTC (rev 2023)
+++ trunk/src/jar/resolver/java/org/mulgara/resolver/LocalQueryResolver.java	2011-09-12 18:23:58 UTC (rev 2024)
@@ -86,9 +86,9 @@
   /** Logger.  */
   private static final Logger logger = Logger.getLogger(LocalQueryResolver.class.getName());
 
-  private DatabaseOperationContext operationContext;
+  private final DatabaseOperationContext operationContext;
 
-  private ResolverSession resolverSession;
+  private final ResolverSession resolverSession;
 
   private boolean distinctQuery = false;
 
@@ -329,9 +329,13 @@
         }
 
         result = TuplesOperations.project(result, variables, query.isDistinct());
-      } finally {
-        tmp.close();
+      } catch (TuplesException t) {
+        try {
+          tmp.close();
+        } catch (TuplesException e) { /* Already throwing an exception. Ignore. */ }
+        throw t;
       }
+      tmp.close();
     }
 
     return result;

Modified: trunk/src/jar/resolver/java/org/mulgara/resolver/MulgaraInternalTransaction.java
===================================================================
--- trunk/src/jar/resolver/java/org/mulgara/resolver/MulgaraInternalTransaction.java	2011-09-12 18:23:05 UTC (rev 2023)
+++ trunk/src/jar/resolver/java/org/mulgara/resolver/MulgaraInternalTransaction.java	2011-09-12 18:23:58 UTC (rev 2024)
@@ -609,7 +609,7 @@
       } catch (Throwable th) {
         try {
           errorReport("Error aborting enlistable resource", th);
-        } catch (Throwable ignore) { }
+        } catch (Throwable ignore) { /* Unable to log. Would normally log, so ignore. */ }
       }
     }
   }
@@ -771,24 +771,28 @@
     factory.releaseMutex();
   }
 
-  protected void finalize() {
-    debugReport("GC-finalize");
-    if (state != State.FINISHED && state != State.FAILED) {
-      errorReport("Finalizing incomplete transaction - aborting...", null);
-      try {
-        abortTransaction(new MulgaraTransactionException("Transaction finalized while still valid"));
-      } catch (Throwable th) {
-        errorReport("Attempt to abort transaction from finalize failed", th);
+  protected void finalize() throws Throwable {
+    try {
+      debugReport("GC-finalize");
+      if (state != State.FINISHED && state != State.FAILED) {
+        errorReport("Finalizing incomplete transaction - aborting...", null);
+        try {
+          abortTransaction(new MulgaraTransactionException("Transaction finalized while still valid"));
+        } catch (Throwable th) {
+          errorReport("Attempt to abort transaction from finalize failed", th);
+        }
       }
+  
+      if (state != State.FAILED && (inuse != 0 || using != 0)) {
+        errorReport("Reference counting error in transaction", null);
+      }
+  
+      if (transaction != null) {
+        errorReport("Transaction not terminated properly", null);
+      }
+    } finally {
+      super.finalize();
     }
-
-    if (state != State.FAILED && (inuse != 0 || using != 0)) {
-      errorReport("Reference counting error in transaction", null);
-    }
-
-    if (transaction != null) {
-      errorReport("Transaction not terminated properly", null);
-    }
   }
 
   private final void report(String desc) {

Modified: trunk/src/jar/resolver/java/org/mulgara/resolver/MulgaraInternalTransactionFactory.java
===================================================================
--- trunk/src/jar/resolver/java/org/mulgara/resolver/MulgaraInternalTransactionFactory.java	2011-09-12 18:23:05 UTC (rev 2023)
+++ trunk/src/jar/resolver/java/org/mulgara/resolver/MulgaraInternalTransactionFactory.java	2011-09-12 18:23:58 UTC (rev 2024)
@@ -251,8 +251,8 @@
             throw new MulgaraTransactionException("Attempting set auto-commit false in failed session");
           } else {
             // AutoCommit off -> off === no-op. Log info.
-            if (logger.isInfoEnabled()) {
-              logger.info("Attempt to set autocommit false twice\n" + new StackTrace());
+            if (logger.isDebugEnabled()) {
+              logger.debug("Attempt to set autocommit false twice\n" + new StackTrace());
             }
           }
         }

Modified: trunk/src/jar/resolver/java/org/mulgara/resolver/MulgaraXAResourceContext.java
===================================================================
--- trunk/src/jar/resolver/java/org/mulgara/resolver/MulgaraXAResourceContext.java	2011-09-12 18:23:05 UTC (rev 2023)
+++ trunk/src/jar/resolver/java/org/mulgara/resolver/MulgaraXAResourceContext.java	2011-09-12 18:23:58 UTC (rev 2024)
@@ -254,7 +254,7 @@
       factory.acquireMutex(0, XAException.class);
       try {
         if (logger.isDebugEnabled()) logger.debug("Performing isSameRM");
-        if (!xares.getClass().equals(MulgaraXAResource.class)) {
+        if (xares.getClass() != MulgaraXAResource.class) {
           return false;
         } else {
           // Based on X/Open-XA-TP section 3.2 I believe a 'Resource Manager

Modified: trunk/src/jar/resolver/java/org/mulgara/resolver/OrderByRowComparator.java
===================================================================
--- trunk/src/jar/resolver/java/org/mulgara/resolver/OrderByRowComparator.java	2011-09-12 18:23:05 UTC (rev 2023)
+++ trunk/src/jar/resolver/java/org/mulgara/resolver/OrderByRowComparator.java	2011-09-12 18:23:58 UTC (rev 2024)
@@ -155,11 +155,15 @@
   // Methods implementing the RowComparator interface
   //
 
+  public boolean equals(Object o) {
+    return (o instanceof RowComparator) && equals((RowComparator)o);
+  }
+
   /**
-   * METHOD TO DO
+   * Test if this is equal to another RowComparator.
    *
-   * @param r PARAMETER TO DO
-   * @return RETURNED VALUE TO DO
+   * @param r The other comparator
+   * @return true if both comparators are the same
    */
   public boolean equals(RowComparator r)
   {

Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolution.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolution.java	2011-09-12 18:23:05 UTC (rev 2023)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolution.java	2011-09-12 18:23:58 UTC (rev 2024)
@@ -90,7 +90,7 @@
 public class RelationalResolution extends AbstractTuples implements Resolution {
 
   /** Logger */
-  private static Logger logger = Logger.getLogger(RelationalResolution.class);
+  private static final Logger logger = Logger.getLogger(RelationalResolution.class);
 
   /** The constraint this instance resolves */
   private final RelationalConstraint constraint;
@@ -254,13 +254,16 @@
     if (object == this) {
       return true;
     }
-    if (this.getClass().equals(object.getClass())) {
+    if (object != null && this.getClass() == object.getClass()) {
       RelationalResolution lhs = (RelationalResolution)object;
       return lhs.defn == this.defn && lhs.constraint == this.constraint;
     }
     return false;
   }
 
+  public int hashCode() {
+    return defn.hashCode() * 7;  
+  }
 
   public Constraint getConstraint() {
     return constraint;
@@ -309,9 +312,17 @@
           result.add(resolveInstance(head, constraint, conn, defn));
         }
 
+        this.result = null;
         this.result = TuplesOperations.join(result);
-      } finally {
         close(result.toArray(new Tuples[result.size()]));
+      } catch (TuplesException e) {
+        if (this.result == null) {
+          // A non-null result means that the exception occured during the close
+          try {
+            close(result.toArray(new Tuples[result.size()]));
+          } catch (TuplesException e2) { /* Already throwing an exception */ }
+        }
+        throw e;
       }
     }
 
@@ -429,27 +440,39 @@
     Answer answer;
     answer = new RelationalAnswer(query, conn);
 
-    Tuples lt, st;
+    Tuples lt = null, st = null;
     try {
       lt = new LocalizedTuples(resolverSession, answer, false);
-    } finally {
-      answer.close();
+    } catch (IllegalArgumentException e) {
+      try {
+        answer.close();
+      } catch (TuplesException e2) { /* Already throwing an exception. Ignore. */ }
+      throw e;
     }
+    answer.close();
     
     try {
       st = TuplesOperations.sort(lt);
-    } finally {
-      lt.close();
+    } catch (TuplesException e) {
+      try {
+        lt.close();
+      } catch (TuplesException e2) { /* Already throwing an exception. Ignore. */ }
+      throw e;
     }
+    lt.close();
     
     // Combine result with additional properties via join.
     additionalProperties.add(st);
-    Tuples jt;
+    Tuples jt = null;
     try {
       jt = TuplesOperations.join(additionalProperties);
-    } finally {
-      st.close();
+    } catch (TuplesException e) {
+      try {
+        st.close();
+      } catch (TuplesException e2) { /* Already throwing an exception. Ignore. */ }
+      throw e;
     }
+    st.close();
 
     return jt;
   }

Modified: trunk/src/jar/resolver-store/java/org/mulgara/resolver/store/StatementStoreResolution.java
===================================================================
--- trunk/src/jar/resolver-store/java/org/mulgara/resolver/store/StatementStoreResolution.java	2011-09-12 18:23:05 UTC (rev 2023)
+++ trunk/src/jar/resolver-store/java/org/mulgara/resolver/store/StatementStoreResolution.java	2011-09-12 18:23:58 UTC (rev 2024)
@@ -173,6 +173,7 @@
   private static int calculateRowCardinality(Constraint constraint, StatementStore store) throws TuplesException {
 
     Tuples countTuples = null;
+    int cardinality = 0;
 
     try {
       countTuples = store.findTuples(toGraphTuplesIndex(constraint.getElement(0)),
@@ -188,19 +189,26 @@
       }
       switch (rowCount) {
         case 0:
-          return Cursor.ZERO;
+          cardinality = Cursor.ZERO;
+          break;
         case 1:
-          return Cursor.ONE;
+          cardinality = Cursor.ONE;
+          break;
         default:
-          return Cursor.MANY;
+          cardinality = Cursor.MANY;
       }
     } catch (StatementStoreException es) {
       throw new TuplesException("Error accessing StatementStore", es);
-    } finally {
+    } catch (TuplesException te) {
       if (countTuples != null) {
-        countTuples.close();
+        try {
+          countTuples.close();
+        } catch (TuplesException e) { /* Already throwing an exception, so ignore */ }
       }
+      throw te;
     }
+    countTuples.close();
+    return cardinality;
   }
 
   private static long toGraphTuplesIndex(ConstraintElement constraintElement) throws TuplesException {
@@ -279,7 +287,7 @@
     }
 
     prefix = new long[4];
-    List variableList = new ArrayList();
+    List<Variable> variableList = new ArrayList<Variable>();
     variableToColumn = new int[4];
     int variableIndex = 0;
     // Note:  baseDefinition is in 'constraint-order'
@@ -560,7 +568,7 @@
   }
 
   public Annotation getAnnotation(Class<? extends Annotation> annotation) {
-    if (annotation.equals(DefinablePrefixAnnotation.class)) {
+    if (annotation == DefinablePrefixAnnotation.class) {
       return new DefinablePrefixAnnotation() {
         public void definePrefix(Set<Variable> boundVars) throws TuplesException {
           boolean[] bound = new boolean[4];

Modified: trunk/src/jar/resolver-xsd/java/org/mulgara/resolver/xsd/IntervalTransformation.java
===================================================================
--- trunk/src/jar/resolver-xsd/java/org/mulgara/resolver/xsd/IntervalTransformation.java	2011-09-12 18:23:05 UTC (rev 2023)
+++ trunk/src/jar/resolver-xsd/java/org/mulgara/resolver/xsd/IntervalTransformation.java	2011-09-12 18:23:58 UTC (rev 2024)
@@ -125,16 +125,16 @@
 
     assert constraintConjunction != null;
 
-    List elements = constraintConjunction.getElements();
-    List newElements = new ArrayList(elements.size());
+    List<ConstraintExpression> elements = constraintConjunction.getElements();
+    List<ConstraintExpression> newElements = new ArrayList<ConstraintExpression>(elements.size());
     boolean modified = false;
 
     // This map is keyed on Variable instances, and maps to the cumulative
     // IntervalConstraint assocated with that variable
-    Map map = new HashMap();
+    Map<Variable,IntervalConstraint> map = new HashMap<Variable,IntervalConstraint>();
 
-    for (Iterator i = elements.iterator(); i.hasNext();) {
-      ConstraintExpression element = (ConstraintExpression) i.next();
+    for (Iterator<ConstraintExpression> i = elements.iterator(); i.hasNext();) {
+      ConstraintExpression element = i.next();
 
       // Recursively transform the element
       ConstraintExpression transformedElement = transformExpression(context, element);
@@ -156,7 +156,7 @@
         newElements.add(element);
       } else {
         IntervalConstraint interval = (IntervalConstraint) element;
-        IntervalConstraint cumulative = (IntervalConstraint) map.get(interval.getVariable());
+        IntervalConstraint cumulative = map.get(interval.getVariable());
         if (cumulative == null) {
           cumulative = interval;
 

Modified: trunk/src/jar/server-rmi/java/org/mulgara/server/rmi/RemoteXAResource.java
===================================================================
--- trunk/src/jar/server-rmi/java/org/mulgara/server/rmi/RemoteXAResource.java	2011-09-12 18:23:05 UTC (rev 2023)
+++ trunk/src/jar/server-rmi/java/org/mulgara/server/rmi/RemoteXAResource.java	2011-09-12 18:23:58 UTC (rev 2024)
@@ -22,12 +22,8 @@
 import java.rmi.Remote;
 import java.rmi.RemoteException;
 import javax.transaction.xa.XAException;
-import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
-// Third party packages
-import org.apache.log4j.Category;
-
 // Local packages
 
 /**

Modified: trunk/src/jar/server-rmi/java/org/mulgara/server/rmi/RemoteXAResourceWrapperXAResource.java
===================================================================
--- trunk/src/jar/server-rmi/java/org/mulgara/server/rmi/RemoteXAResourceWrapperXAResource.java	2011-09-12 18:23:05 UTC (rev 2023)
+++ trunk/src/jar/server-rmi/java/org/mulgara/server/rmi/RemoteXAResourceWrapperXAResource.java	2011-09-12 18:23:58 UTC (rev 2024)
@@ -39,7 +39,7 @@
  */
 class RemoteXAResourceWrapperXAResource implements XAResource, ResourceManagerInstanceAdaptor {
   /** logger */
-  private static Logger logger = Logger.getLogger(RemoteXAResourceWrapperXAResource.class.getName());
+  private static final Logger logger = Logger.getLogger(RemoteXAResourceWrapperXAResource.class.getName());
 
   /**
    * The wrapped instance.

Modified: trunk/src/jar/tuples/java/org/mulgara/store/tuples/DefaultRowComparator.java
===================================================================
--- trunk/src/jar/tuples/java/org/mulgara/store/tuples/DefaultRowComparator.java	2011-09-12 18:23:05 UTC (rev 2023)
+++ trunk/src/jar/tuples/java/org/mulgara/store/tuples/DefaultRowComparator.java	2011-09-12 18:23:58 UTC (rev 2024)
@@ -79,6 +79,13 @@
     return INSTANCE;
   }
 
+  /**
+   * This class is stateless, so equality is just a type check.
+   */
+  public boolean equals(Object o) {
+    return o.getClass() == DefaultRowComparator.class;
+  }
+
   //
   // Methods implementing RowComparator interface
   //

Modified: trunk/src/jar/tuples/java/org/mulgara/store/tuples/LeftJoin.java
===================================================================
--- trunk/src/jar/tuples/java/org/mulgara/store/tuples/LeftJoin.java	2011-09-12 18:23:05 UTC (rev 2023)
+++ trunk/src/jar/tuples/java/org/mulgara/store/tuples/LeftJoin.java	2011-09-12 18:23:58 UTC (rev 2024)
@@ -512,6 +512,13 @@
       nrVars = rhs.getNumberOfVariables() - commonVars.size();
       return right.compare(reduce(first, rhsOffset, nrVars), reduce(second, rhsOffset, nrVars));
     }
+
+    public boolean equals(Object o) {
+      return o instanceof MergedComparator &&
+             left.equals(((MergedComparator)o).left) &&
+             right.equals(((MergedComparator)o).right);
+    }
+
   }
 
   /**

Modified: trunk/src/jar/tuples/java/org/mulgara/store/tuples/OrderedAppend.java
===================================================================
--- trunk/src/jar/tuples/java/org/mulgara/store/tuples/OrderedAppend.java	2011-09-12 18:23:05 UTC (rev 2023)
+++ trunk/src/jar/tuples/java/org/mulgara/store/tuples/OrderedAppend.java	2011-09-12 18:23:58 UTC (rev 2024)
@@ -75,7 +75,7 @@
   /**
    * The propositions to conjoin.
    */
-  protected final Tuples[] operands;
+  protected Tuples[] operands;
 
   /**
    * The return value of the {@link #beforeFirst} method.
@@ -138,19 +138,6 @@
   }
 
   /**
-   * CONSTRUCTOR OrderedAppend TO DO
-   *
-   * @param orderedAppend PARAMETER TO DO
-   * @throws TuplesException EXCEPTION TO DO
-   */
-  private OrderedAppend(OrderedAppend orderedAppend) throws TuplesException {
-
-    operands = clone(orderedAppend.operands);
-    setVariables(orderedAppend.getVariables());
-    prefix = orderedAppend.prefix;
-  }
-
-  /**
    * Gets the ColumnValue attribute of the OrderedAppend object
    *
    * @param column PARAMETER TO DO
@@ -398,7 +385,7 @@
 
 
   public Annotation getAnnotation(Class<? extends Annotation> annotation) {
-    if (annotation.equals(DefinablePrefixAnnotation.class) && prefixDefinable) {
+    if (annotation == DefinablePrefixAnnotation.class && prefixDefinable) {
       return new DefinablePrefixAnnotation() {
         public void definePrefix(Set<Variable> boundVars) throws TuplesException {
           for (int i = 0; i < operands.length; i++) {
@@ -423,15 +410,12 @@
    * @return RETURNED VALUE TO DO
    */
   public Object clone() {
+    OrderedAppend oa = (OrderedAppend)super.clone();
+    oa.operands = clone(operands);
+    oa.setVariables(getVariables());
+    oa.prefix = prefix;
 
-    try {
-
-      return new OrderedAppend(this);
-    }
-    catch (TuplesException e) {
-
-      throw new RuntimeException("Unable to clone", e);
-    }
+    return oa;
   }
 
   /**

Modified: trunk/src/jar/tuples/java/org/mulgara/store/tuples/PartialColumnComparator.java
===================================================================
--- trunk/src/jar/tuples/java/org/mulgara/store/tuples/PartialColumnComparator.java	2011-09-12 18:23:05 UTC (rev 2023)
+++ trunk/src/jar/tuples/java/org/mulgara/store/tuples/PartialColumnComparator.java	2011-09-12 18:23:58 UTC (rev 2024)
@@ -123,4 +123,10 @@
     // We have a duplicate row
     return 0; // indicate equality
   }
+
+  public boolean equals(Object o) {
+    return (o instanceof PartialColumnComparator) &&
+           Arrays.equals(varMap, ((PartialColumnComparator)o).varMap);
+  }
+
 }

Modified: trunk/src/jar/tuples/java/org/mulgara/store/tuples/TuplesOperations.java
===================================================================
--- trunk/src/jar/tuples/java/org/mulgara/store/tuples/TuplesOperations.java	2011-09-12 18:23:05 UTC (rev 2023)
+++ trunk/src/jar/tuples/java/org/mulgara/store/tuples/TuplesOperations.java	2011-09-12 18:23:58 UTC (rev 2024)
@@ -41,7 +41,6 @@
 import org.mulgara.query.filter.Inverse;
 import org.mulgara.query.filter.RDFTerm;
 import org.mulgara.resolver.spi.*;
-import org.mulgara.util.StackTrace;
 
 /**
  * TQL answer. An answer is a set of solutions, where a solution is a mapping of
@@ -621,7 +620,7 @@
             // If the call to getRowCardinality returns > 0 then beforeFirst,
             // and then next should return true too.
             logger.error("No rows but getRowCardinality returned Cursor.ONE: (class=" +
-                    tuples.getClass().getName() + ") " + tuples.toString() + "\n" + new StackTrace());
+                    tuples.getClass().getName() + ") " + tuples.toString());
             throw new AssertionError("No rows but getRowCardinality returned Cursor.ONE");
           }
           iter.remove();
@@ -790,8 +789,10 @@
     }
 
     if (minTuples == null) {
-      logger.info("Unable to meet ordering constraints with bindings: " + boundVars);
-      for (Tuples op: operands) logger.info("    Operand: " + tuplesSummary(op));
+      if (logger.isDebugEnabled()) {
+        logger.debug("Unable to meet ordering constraints with bindings: " + boundVars);
+        for (Tuples op: operands) logger.debug("    Operand: " + tuplesSummary(op));
+      }
       throw new TuplesException("Unable to meet ordering constraints");
     }
 



More information about the Mulgara-svn mailing list