[Mulgara-svn] r2026 - in trunk/src/jar: content-mbox/java/org/mulgara/content/mbox/parser/config content-mbox/java/org/mulgara/content/mbox/parser/model content-mp3/java/org/mulgara/content/mp3/parser content-rlog/java/org/mulgara/content/rlog content-rlog/java/org/mulgara/krule/rlog/ast demo-mp3/java/org/mulgara/demo/mp3/swing query/java/org/mulgara/query/functions resolver/java/org/mulgara/resolver resolver-distributed/java/org/mulgara/resolver/distributed/remote resolver-gis/java/org/mulgara/resolver/gis resolver-gis/java/org/mulgara/resolver/gis/tools resolver-null/java/org/mulgara/resolver/nullres resolver-spi/java/org/mulgara/resolver/spi resolver-xsd/java/org/mulgara/resolver/xsd tuples-hybrid/java/org/mulgara/store/bdb

pag at mulgara.org pag at mulgara.org
Wed Sep 14 19:05:04 UTC 2011


Author: pag
Date: 2011-09-14 19:05:04 +0000 (Wed, 14 Sep 2011)
New Revision: 2026

Modified:
   trunk/src/jar/content-mbox/java/org/mulgara/content/mbox/parser/config/ConfigManager.java
   trunk/src/jar/content-mbox/java/org/mulgara/content/mbox/parser/model/ModelFactory.java
   trunk/src/jar/content-mp3/java/org/mulgara/content/mp3/parser/ParserFactory.java
   trunk/src/jar/content-rlog/java/org/mulgara/content/rlog/RlogStructure.java
   trunk/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/CanonicalStatement.java
   trunk/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/StringLiteral.java
   trunk/src/jar/demo-mp3/java/org/mulgara/demo/mp3/swing/IconLoader.java
   trunk/src/jar/query/java/org/mulgara/query/functions/MulgaraXFunctionGroup.java
   trunk/src/jar/resolver-distributed/java/org/mulgara/resolver/distributed/remote/StatementSetFactory.java
   trunk/src/jar/resolver-gis/java/org/mulgara/resolver/gis/LocalGISCoordinate.java
   trunk/src/jar/resolver-gis/java/org/mulgara/resolver/gis/tools/AbstractAngle.java
   trunk/src/jar/resolver-null/java/org/mulgara/resolver/nullres/NullResolution.java
   trunk/src/jar/resolver-spi/java/org/mulgara/resolver/spi/EmptyResolution.java
   trunk/src/jar/resolver-xsd/java/org/mulgara/resolver/xsd/Bound.java
   trunk/src/jar/resolver/java/org/mulgara/resolver/DefaultConstraintHandlers.java
   trunk/src/jar/resolver/java/org/mulgara/resolver/OrderByRowComparator.java
   trunk/src/jar/tuples-hybrid/java/org/mulgara/store/bdb/DbTuples.java
Log:
Updates for fortify compliance

Modified: trunk/src/jar/content-mbox/java/org/mulgara/content/mbox/parser/config/ConfigManager.java
===================================================================
--- trunk/src/jar/content-mbox/java/org/mulgara/content/mbox/parser/config/ConfigManager.java	2011-09-14 17:52:18 UTC (rev 2025)
+++ trunk/src/jar/content-mbox/java/org/mulgara/content/mbox/parser/config/ConfigManager.java	2011-09-14 19:05:04 UTC (rev 2026)
@@ -78,15 +78,12 @@
    */
   public static ConfigManager getInstance() {
 
-    if (instance == null) {
+    synchronized (ConfigManager.class) {
 
-      synchronized (ConfigManager.class) {
+      if (instance == null) {
 
-        if (instance == null) {
-
-          // Create the configuration manager
-          instance = new ConfigManager();
-        }
+        // Create the configuration manager
+        instance = new ConfigManager();
       }
     }
 

Modified: trunk/src/jar/content-mbox/java/org/mulgara/content/mbox/parser/model/ModelFactory.java
===================================================================
--- trunk/src/jar/content-mbox/java/org/mulgara/content/mbox/parser/model/ModelFactory.java	2011-09-14 17:52:18 UTC (rev 2025)
+++ trunk/src/jar/content-mbox/java/org/mulgara/content/mbox/parser/model/ModelFactory.java	2011-09-14 19:05:04 UTC (rev 2026)
@@ -86,15 +86,12 @@
    */
   public static ModelFactory getInstance() throws FactoryException {
 
-    if (instance == null) {
+    synchronized (ModelFactory.class) {
 
-      synchronized (ModelFactory.class) {
+      if (instance == null) {
 
-        if (instance == null) {
-
-          // Create the factory
-          instance = new ModelFactory();
-        }
+        // Create the factory
+        instance = new ModelFactory();
       }
     }
 

Modified: trunk/src/jar/content-mp3/java/org/mulgara/content/mp3/parser/ParserFactory.java
===================================================================
--- trunk/src/jar/content-mp3/java/org/mulgara/content/mp3/parser/ParserFactory.java	2011-09-14 17:52:18 UTC (rev 2025)
+++ trunk/src/jar/content-mp3/java/org/mulgara/content/mp3/parser/ParserFactory.java	2011-09-14 19:05:04 UTC (rev 2026)
@@ -86,15 +86,12 @@
    */
   public static ParserFactory getInstance() throws FactoryException {
 
-    if (instance == null) {
+    synchronized (ParserFactory.class) {
 
-      synchronized (ParserFactory.class) {
+      if (instance == null) {
 
-        if (instance == null) {
-
-          // Create the factory
-          instance = new ParserFactory();
-        }
+        // Create the factory
+        instance = new ParserFactory();
       }
     }
 

Modified: trunk/src/jar/content-rlog/java/org/mulgara/content/rlog/RlogStructure.java
===================================================================
--- trunk/src/jar/content-rlog/java/org/mulgara/content/rlog/RlogStructure.java	2011-09-14 17:52:18 UTC (rev 2025)
+++ trunk/src/jar/content-rlog/java/org/mulgara/content/rlog/RlogStructure.java	2011-09-14 19:05:04 UTC (rev 2026)
@@ -50,7 +50,7 @@
 public class RlogStructure {
 
   /** Logger.  */
-  private static Logger logger = Logger.getLogger(RlogStructure.class.getName());
+  private static final Logger logger = Logger.getLogger(RlogStructure.class.getName());
 
   /** The rdf:type URI. */
   private static final URIReference TYPE = new URIReferenceImpl(RDF.TYPE);
@@ -627,7 +627,8 @@
     if (refType.equals(Krule.URI_REF)) {
       // writing a URI
       Node value = getPropertyValue(n, RDF_VALUE);
-      if (value == null || !(value instanceof URIReference)) throw new IllegalArgumentException("Bad Krule structure. URIReference came back with the wrong type: " + value + "(" + value.getClass().getName() + ")");
+      if (value == null) throw new IllegalArgumentException("Bad Krule structure. null value for: " + n);
+      if (!(value instanceof URIReference)) throw new IllegalArgumentException("Bad Krule structure. URIReference came back with the wrong type: " + value + "(" + value.getClass().getName() + ")");
       return namespaceString((URIReference)value);
 
     } else if (refType.equals(Krule.VARIABLE)) {
@@ -657,7 +658,8 @@
     if (refType.equals(Krule.URI_REF)) {
       // writing a URI
       Node value = getPropertyValue(n, RDF_VALUE);
-      if (value == null || !(value instanceof URIReference)) throw new IllegalArgumentException("Bad Krule structure. URIReference came back with the wrong type: " + value + "(" + value.getClass().getName() + ")");
+      if (value == null) throw new IllegalArgumentException("Bad Krule structure. Null value for: " + n);
+      if (!(value instanceof URIReference)) throw new IllegalArgumentException("Bad Krule structure. URIReference came back with the wrong type: " + value + "(" + value.getClass().getName() + ")");
       return value.equals(TYPE);
     }
     return false;

Modified: trunk/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/CanonicalStatement.java
===================================================================
--- trunk/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/CanonicalStatement.java	2011-09-14 17:52:18 UTC (rev 2025)
+++ trunk/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/CanonicalStatement.java	2011-09-14 19:05:04 UTC (rev 2026)
@@ -14,6 +14,7 @@
 
 import java.util.Collections;
 import java.util.List;
+import static org.mulgara.util.ObjectUtil.eq;
 
 /**
  * Represents a canonicalized form of a statement. Used for comparing statements
@@ -62,7 +63,7 @@
   public boolean equals(Object o) {
     if (!(o instanceof CanonicalStatement)) return false;
     CanonicalStatement s = (CanonicalStatement)o;
-    return equal(head, s.head) && body.equals(s.body);
+    return eq(head, s.head) && body.equals(s.body);
   }
 
 
@@ -97,15 +98,4 @@
     head.renameVariables(vc);
   }
 
-
-  /**
-   * Performs an equality comparison for values that may be null.
-   * @param a The first object to be compared. May be null.
-   * @param b The second object to be compared. May be null.
-   * @return <code>true</code> if both a and b are null, or if they are equal.
-   *         <code>false</code> otherwise.
-   */
-  private static final boolean equal(Object a, Object b) {
-    return a == null ? b == null : a.equals(b);
-  }
 }

Modified: trunk/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/StringLiteral.java
===================================================================
--- trunk/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/StringLiteral.java	2011-09-14 17:52:18 UTC (rev 2025)
+++ trunk/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/StringLiteral.java	2011-09-14 19:05:04 UTC (rev 2026)
@@ -21,6 +21,7 @@
 import org.mulgara.krule.rlog.rdf.Literal;
 import org.mulgara.krule.rlog.rdf.RDFNode;
 import org.mulgara.krule.rlog.rdf.URIReference;
+import static org.mulgara.util.ObjectUtil.eq;
 
 /**
  * A quoted string in the AST.
@@ -73,7 +74,7 @@
   public boolean equals(Object o) {
     if (o instanceof StringLiteral) {
       StringLiteral ol = (StringLiteral)o;
-      return value.equals(ol.value) && nullEq(lang, ol.lang) && nullEq(type, ol.type);
+      return value.equals(ol.value) && eq(lang, ol.lang) && eq(type, ol.type);
     }
     return false;
   }

Modified: trunk/src/jar/demo-mp3/java/org/mulgara/demo/mp3/swing/IconLoader.java
===================================================================
--- trunk/src/jar/demo-mp3/java/org/mulgara/demo/mp3/swing/IconLoader.java	2011-09-14 17:52:18 UTC (rev 2025)
+++ trunk/src/jar/demo-mp3/java/org/mulgara/demo/mp3/swing/IconLoader.java	2011-09-14 19:05:04 UTC (rev 2026)
@@ -62,6 +62,7 @@
   /**
    * Logger. This is named after the class.
    */
+  @SuppressWarnings("unused")
   private final static Logger log = Logger.getLogger(IconLoader.class.getName());
 
   //---------------------- List of Predefined Icon Images ----------------------
@@ -105,11 +106,9 @@
    * @return IconLoader
    */
   private static IconLoader getInstance() {
-    if (instance == null) {
-      synchronized (IconLoader.class) {
-        if (instance == null) {
-          instance = new IconLoader();
-        }
+    synchronized (IconLoader.class) {
+      if (instance == null) {
+        instance = new IconLoader();
       }
     }
     return instance;

Modified: trunk/src/jar/query/java/org/mulgara/query/functions/MulgaraXFunctionGroup.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/functions/MulgaraXFunctionGroup.java	2011-09-14 17:52:18 UTC (rev 2025)
+++ trunk/src/jar/query/java/org/mulgara/query/functions/MulgaraXFunctionGroup.java	2011-09-14 19:05:04 UTC (rev 2026)
@@ -37,7 +37,6 @@
  * @author Paul Gearon
  * @copyright © 2009 <a href="http://www.duraspace.org/">DuraSpace</a>
  */
- at SuppressWarnings("unchecked")
 public class MulgaraXFunctionGroup implements MulgaraFunctionGroup {
 
   /** The prefix for the mulgarax: namespace */
@@ -81,7 +80,7 @@
    * @see http://www.w3.org/TR/xpath-functions/#func-matches
    */
   static private class System extends MulgaraFunction {
-    public Object eval(List args) throws XPathFunctionException {
+    public Object eval(List<?> args) throws XPathFunctionException {
       String str = (String)args.get(0);
       StringBuilder outputString = new StringBuilder();
       try {
@@ -107,7 +106,7 @@
   static private class System2 extends MulgaraFunction {
     public String getName() { return "system/2"; }
     public int getArity() { return 2; }
-    public Object eval(List args) throws XPathFunctionException {
+    public Object eval(List<?> args) throws XPathFunctionException {
       // get the command and arguments
       String str = (String)args.get(0);
       // get the data to feed to stdin

Modified: trunk/src/jar/resolver/java/org/mulgara/resolver/DefaultConstraintHandlers.java
===================================================================
--- trunk/src/jar/resolver/java/org/mulgara/resolver/DefaultConstraintHandlers.java	2011-09-14 17:52:18 UTC (rev 2025)
+++ trunk/src/jar/resolver/java/org/mulgara/resolver/DefaultConstraintHandlers.java	2011-09-14 19:05:04 UTC (rev 2026)
@@ -102,11 +102,19 @@
                 resolveModelExpression(context, ((GraphOperation)modelExpr).getLHS(), constraint);
             Tuples rhs = ConstraintOperations.
                 resolveModelExpression(context, ((GraphOperation)modelExpr).getRHS(), constraint);
+            Tuples result = null;
             try {
-              return TuplesOperations.append(lhs, rhs);
-            } finally {
+              result = TuplesOperations.append(lhs, rhs);
               lhs.close();
+              lhs = null;
               rhs.close();
+              return result;
+            } finally {
+              if (lhs != null) {
+                // result != null means failed during lhs.close()
+                if (result == null) lhs.close();
+                rhs.close();
+              } // else failed during rhs.close()
             }
           }
         }),
@@ -117,11 +125,19 @@
                 resolveModelExpression(context, ((GraphOperation)modelExpr).getLHS(), constraint);
             Tuples rhs = ConstraintOperations.
                 resolveModelExpression(context, ((GraphOperation)modelExpr).getRHS(), constraint);
+            Tuples result = null;
             try {
-              return TuplesOperations.join(lhs, rhs);
-            } finally {
+              result = TuplesOperations.join(lhs, rhs);
               lhs.close();
+              lhs = null;
               rhs.close();
+              return result;
+            } catch (TuplesException e) {
+              if (lhs != null) { // haven't closed anything yet
+                if (result == null) lhs.close(); // if result is set then exception due to lhs.close 
+                rhs.close();
+              } // else means failed during rhs.close
+              throw e;
             }
           }
         }),
@@ -196,11 +212,19 @@
             boolean distinct = context.setDistinctQuery(true);
             Tuples rhs = ConstraintOperations.resolveConstraintExpression(context, modelExpr, constraints.get(1));
             context.setDistinctQuery(distinct);
+            Tuples result = null;
             try {
-              return TuplesOperations.subtract(lhs, rhs);
-            } finally {
+              result = TuplesOperations.subtract(lhs, rhs);
               lhs.close();
+              lhs = null;
               rhs.close();
+              return result;
+            } finally {
+              if (lhs != null) {
+                // result != null means failed during lhs.close()
+                if (result == null) lhs.close();
+                rhs.close();
+              } // else failed during rhs.close()
             }
           }
         }),
@@ -208,11 +232,19 @@
           public Tuples resolve(QueryEvaluationContext context, GraphExpression modelExpr, ConstraintExpression constraintExpr) throws Exception {
             List<Tuples> args = context.resolveConstraintOperation(modelExpr, (ConstraintOperation)constraintExpr);
             assert args.size() == 2;
+            Tuples result = null, a0 = (Tuples)args.get(0), a1 = (Tuples)args.get(1);
             try {
-              return TuplesOperations.optionalJoin((Tuples)args.get(0), (Tuples)args.get(1), ((ConstraintOptionalJoin)constraintExpr).getFilter(), context);
+              result = TuplesOperations.optionalJoin(a0, a1, ((ConstraintOptionalJoin)constraintExpr).getFilter(), context);
+              a0.close();
+              a0 = null;
+              a1.close();
+              return result;
             } finally {
-              ((Tuples)args.get(0)).close();
-              ((Tuples)args.get(1)).close();
+              if (a0 != null) {
+                // result != null means failed during a0.close()
+                if (result == null) a0.close();
+                a1.close();
+              } // else failed during a1.close()
             }
           }
         }),
@@ -278,10 +310,15 @@
         new NVPair(ConstraintFilter.class, new ConstraintResolutionHandler() {
           public Tuples resolve(QueryEvaluationContext context, GraphExpression modelExpr, ConstraintExpression constraintExpr) throws Exception {
             Tuples unfiltered = ConstraintOperations.resolveConstraintExpression(context, modelExpr, ((ConstraintFilter)constraintExpr).getUnfilteredConstraint());
+            Tuples result = null;
             try {
-              return TuplesOperations.filter(unfiltered, ((ConstraintFilter)constraintExpr).getFilter(), context);
-            } finally {
+              result = TuplesOperations.filter(unfiltered, ((ConstraintFilter)constraintExpr).getFilter(), context);
               unfiltered.close();
+              return result;
+            } catch (TuplesException e) {
+              // result != null means that exception occurred during unfiltered.close()
+              if (result == null) unfiltered.close();
+              throw e;
             }
           }
         }),

Modified: trunk/src/jar/resolver/java/org/mulgara/resolver/OrderByRowComparator.java
===================================================================
--- trunk/src/jar/resolver/java/org/mulgara/resolver/OrderByRowComparator.java	2011-09-14 17:52:18 UTC (rev 2025)
+++ trunk/src/jar/resolver/java/org/mulgara/resolver/OrderByRowComparator.java	2011-09-14 19:05:04 UTC (rev 2026)
@@ -90,7 +90,7 @@
   }
 
   /** Logger. */
-  private static Logger logger =
+  private static final Logger logger =
       Logger.getLogger(OrderByRowComparator.class);
 
   /**
@@ -168,7 +168,7 @@
   public boolean equals(RowComparator r)
   {
     // Require matching class
-    if (!r.getClass().equals(OrderByRowComparator.class)) {
+    if (r.getClass() != OrderByRowComparator.class) {
       return false;
     }
 

Modified: trunk/src/jar/resolver-distributed/java/org/mulgara/resolver/distributed/remote/StatementSetFactory.java
===================================================================
--- trunk/src/jar/resolver-distributed/java/org/mulgara/resolver/distributed/remote/StatementSetFactory.java	2011-09-14 17:52:18 UTC (rev 2025)
+++ trunk/src/jar/resolver-distributed/java/org/mulgara/resolver/distributed/remote/StatementSetFactory.java	2011-09-14 19:05:04 UTC (rev 2026)
@@ -35,11 +35,11 @@
 public class StatementSetFactory {
   
   /** The size for transitioning between a serializable set and a remote set. */
-  static final long WATER_MARK = 2048L;
+  static final long WATER_MARK = 0x2048L;
 
   public static Set<Triple> newStatementSet(Statements statements, ResolverSession session) throws TuplesException, GlobalizeException {
     // make sure the WATER_MARK refers to a set that is indexable by integer
-    assert (long)(int)WATER_MARK == WATER_MARK;
+    // assert (long)(int)WATER_MARK == WATER_MARK;
     if (statements.getRowUpperBound() < WATER_MARK) return new ShortGlobalStatementSet(statements, session);
     try {
       RemotePager<Triple> pager = new RemotePagerImpl<Triple>(Triple.class, new TripleSetAdaptor(statements, session));

Modified: trunk/src/jar/resolver-gis/java/org/mulgara/resolver/gis/LocalGISCoordinate.java
===================================================================
--- trunk/src/jar/resolver-gis/java/org/mulgara/resolver/gis/LocalGISCoordinate.java	2011-09-14 17:52:18 UTC (rev 2025)
+++ trunk/src/jar/resolver-gis/java/org/mulgara/resolver/gis/LocalGISCoordinate.java	2011-09-14 19:05:04 UTC (rev 2026)
@@ -179,7 +179,7 @@
   public boolean equals(Object obj) {
 
     boolean equal = false;
-    equal = equal && (obj != null) && (obj instanceof LocalGISCoordinate);
+    equal = (obj != null) && (obj instanceof LocalGISCoordinate);
 
     if (equal) {
       LocalGISCoordinate coord = (LocalGISCoordinate) obj;

Modified: trunk/src/jar/resolver-gis/java/org/mulgara/resolver/gis/tools/AbstractAngle.java
===================================================================
--- trunk/src/jar/resolver-gis/java/org/mulgara/resolver/gis/tools/AbstractAngle.java	2011-09-14 17:52:18 UTC (rev 2025)
+++ trunk/src/jar/resolver-gis/java/org/mulgara/resolver/gis/tools/AbstractAngle.java	2011-09-14 19:05:04 UTC (rev 2026)
@@ -223,8 +223,7 @@
    */
   public boolean equals(Object obj) {
 
-    boolean equal = false;
-    equal = equal && (obj != null) && (obj instanceof AbstractAngle);
+    boolean equal = (obj != null) && (obj instanceof AbstractAngle);
 
     if (equal) {
       AbstractAngle angle = (AbstractAngle) obj;

Modified: trunk/src/jar/resolver-null/java/org/mulgara/resolver/nullres/NullResolution.java
===================================================================
--- trunk/src/jar/resolver-null/java/org/mulgara/resolver/nullres/NullResolution.java	2011-09-14 17:52:18 UTC (rev 2025)
+++ trunk/src/jar/resolver-null/java/org/mulgara/resolver/nullres/NullResolution.java	2011-09-14 19:05:04 UTC (rev 2026)
@@ -24,6 +24,7 @@
 import org.mulgara.query.TuplesException;
 import org.mulgara.query.Variable;
 import org.mulgara.resolver.spi.Resolution;
+import org.mulgara.store.tuples.AbstractTuples;
 import org.mulgara.store.tuples.Annotation;
 import org.mulgara.store.tuples.RowComparator;
 import org.mulgara.store.tuples.Tuples;
@@ -222,4 +223,7 @@
     }
   }
 
+  public boolean equals(Object o) {
+    return (o instanceof Resolution) && AbstractTuples.equals(this, (Resolution)o);
+  }
 }

Modified: trunk/src/jar/resolver-spi/java/org/mulgara/resolver/spi/EmptyResolution.java
===================================================================
--- trunk/src/jar/resolver-spi/java/org/mulgara/resolver/spi/EmptyResolution.java	2011-09-14 17:52:18 UTC (rev 2025)
+++ trunk/src/jar/resolver-spi/java/org/mulgara/resolver/spi/EmptyResolution.java	2011-09-14 19:05:04 UTC (rev 2026)
@@ -27,9 +27,6 @@
 
 package org.mulgara.resolver.spi;
 
-// Java 2 standard packages
-import java.util.*;
-
 // Third party packages
 import org.apache.log4j.Logger;      // Apache Log4J
 
@@ -54,6 +51,7 @@
 
 public class EmptyResolution extends EmptyTuples implements Resolution {
   /** Logger.  */
+  @SuppressWarnings("unused")
   private static Logger logger =
       Logger.getLogger(EmptyResolution.class.getName());
 

Modified: trunk/src/jar/resolver-xsd/java/org/mulgara/resolver/xsd/Bound.java
===================================================================
--- trunk/src/jar/resolver-xsd/java/org/mulgara/resolver/xsd/Bound.java	2011-09-14 17:52:18 UTC (rev 2025)
+++ trunk/src/jar/resolver-xsd/java/org/mulgara/resolver/xsd/Bound.java	2011-09-14 19:05:04 UTC (rev 2026)
@@ -38,9 +38,6 @@
 // Third party packages
 import org.apache.log4j.Logger; // Apache Log4J
 
-// Local packages
-import org.mulgara.store.stringpool.SPObject;
-
 /**
  * The point representing the upper or lower extent of an interval.
  *
@@ -60,7 +57,8 @@
 class Bound
 {
   /** Logger */
-  private static Logger logger = Logger.getLogger(Bound.class.getName());
+  @SuppressWarnings("unused")
+  private static final Logger logger = Logger.getLogger(Bound.class.getName());
 
   /**
    * The numerical edge of the interval.
@@ -129,11 +127,15 @@
       return true;
     }
 
-    if (!object.getClass().equals(Bound.class)) {
+    if (object.getClass() != Bound.class) {
       return false;
     }
 
     Bound bound = (Bound) object;
     return (value == bound.value) && (closed == bound.closed);
   }
+
+  public int hashCode() {
+    return Double.valueOf(value).hashCode() * (closed ? 3 : 1);
+  }
 }

Modified: trunk/src/jar/tuples-hybrid/java/org/mulgara/store/bdb/DbTuples.java
===================================================================
--- trunk/src/jar/tuples-hybrid/java/org/mulgara/store/bdb/DbTuples.java	2011-09-14 17:52:18 UTC (rev 2025)
+++ trunk/src/jar/tuples-hybrid/java/org/mulgara/store/bdb/DbTuples.java	2011-09-14 19:05:04 UTC (rev 2026)
@@ -269,7 +269,6 @@
         }
       }
       if (!found) {
-        logger.error("Unexpected variable: " + v);
         throw new Error("Unexpected variable: " + v);
       }
     }
@@ -296,7 +295,6 @@
 
       return copy;
     } catch (CloneNotSupportedException ce) {
-      logger.error("DbTuples.clone() threw CloneNotSupported", ce);
       throw new RuntimeException("DbTuples.clone() threw CloneNotSupported", ce);
     }
   }
@@ -368,7 +366,6 @@
   public int getColumnIndex(Variable variable) throws TuplesException {
     for (int c = 0; c < vars.length; c++) if (vars[c].equals(variable)) return c;
 
-    logger.warn("Variable not found: " + variable);
     throw new TuplesException("Variable not found: " + variable);
   }
 
@@ -472,7 +469,7 @@
     if (!(o instanceof Tuples)) return false;
 
     t = (Tuples)o;
-    if (t instanceof DbTuples) return this.database.equals(((DbTuples)t).database);
+    if (t instanceof DbTuples) return this.database == ((DbTuples)t).database;
 
     try {
       Variable[] tvars = t.getVariables();
@@ -509,6 +506,15 @@
     }
   }
 
+  /** {@inheritDoc} */
+  public int hashCode() {
+    long rowcount;
+    try {
+      rowcount = getRowCount();
+    } catch (TuplesException e) { rowcount = 0; }
+    return getVariables().hashCode() * 3 + (int)(rowcount & 0xFFFFFFFF) * 7 +
+           (int)(rowcount >> 32) * 11;
+  }
 
   /** {@inheritDoc} */
   public String toString() {



More information about the Mulgara-svn mailing list