You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2016/02/13 15:35:43 UTC

[1/3] jena git commit: JENA-1140: Better hash code for AbstractDateTime.

Repository: jena
Updated Branches:
  refs/heads/master 9c4a0f86e -> 9b38d8e91


JENA-1140: Better hash code for AbstractDateTime.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/8c475680
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/8c475680
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/8c475680

Branch: refs/heads/master
Commit: 8c475680b3d85520e41b7eb78418e9514fb85eef
Parents: 9c4a0f8
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Feb 13 14:18:54 2016 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Feb 13 14:25:28 2016 +0000

----------------------------------------------------------------------
 .../jena/datatypes/xsd/AbstractDateTime.java    | 23 ++++++++++----------
 1 file changed, 12 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/8c475680/jena-core/src/main/java/org/apache/jena/datatypes/xsd/AbstractDateTime.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/datatypes/xsd/AbstractDateTime.java b/jena-core/src/main/java/org/apache/jena/datatypes/xsd/AbstractDateTime.java
index fbbf950..dfb3a66 100644
--- a/jena-core/src/main/java/org/apache/jena/datatypes/xsd/AbstractDateTime.java
+++ b/jena-core/src/main/java/org/apache/jena/datatypes/xsd/AbstractDateTime.java
@@ -18,6 +18,8 @@
 
 package org.apache.jena.datatypes.xsd;
 
+import java.util.Arrays ;
+
 /**
  * Base class for representation of XSD duration, time, date/time
  * and related datatype instances. We are using the Xerces internal
@@ -104,9 +106,10 @@ public class AbstractDateTime implements Comparable<AbstractDateTime> {
     
     
     /**
-     * Convert fractional second representation to a simple float.
+     * Convert fractional second representation to a simple double..
      */
     protected void extractFractionalSeconds() {
+        fractionalSeconds = 0.0 ;
         if (data[ms] != 0) {
             int fs = data[ms];
             fractionalSeconds = (fs) / Math.pow(10.0, data[msscale]);
@@ -123,24 +126,22 @@ public class AbstractDateTime implements Comparable<AbstractDateTime> {
             for (int i = 0; i < data.length; i++) {
                 if (data[i] != adt.data[i]) return false;
             }
+            // fractionalSeconds is generated from data[ms]
             return true;
         }
         return false;
     }
     
-    /**
-     * hash function
-     */
     @Override
     public int hashCode() {
-        int hash = 0;
-        for ( int aData : data )
-        {
-            hash = ( hash << 1 ) ^ aData;
-        }
-        return hash;
+        // See JENA-1140.
+        // Eclipse generated - without fractionalSeconds which is generated from data[ms]
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + Arrays.hashCode(data);
+        return result;
     }
-    
+        
 //  --------------------------------------------------------------------
 //  This code is adapated from Xerces 2.6.0 AbstractDateTimeDV.    
 //  Copyright (c) 1999-2003 The Apache Software Foundation.  All rights


[3/3] jena git commit: Remove excess blank lines.

Posted by an...@apache.org.
Remove excess blank lines.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/9b38d8e9
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/9b38d8e9
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/9b38d8e9

Branch: refs/heads/master
Commit: 9b38d8e9190d1d6e36131051b227fc133cdb5dc3
Parents: 86b42a9
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Feb 13 14:23:48 2016 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Feb 13 14:25:50 2016 +0000

----------------------------------------------------------------------
 .../main/java/org/apache/jena/datatypes/xsd/AbstractDateTime.java  | 2 --
 1 file changed, 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/9b38d8e9/jena-core/src/main/java/org/apache/jena/datatypes/xsd/AbstractDateTime.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/datatypes/xsd/AbstractDateTime.java b/jena-core/src/main/java/org/apache/jena/datatypes/xsd/AbstractDateTime.java
index dfb3a66..9a7380b 100644
--- a/jena-core/src/main/java/org/apache/jena/datatypes/xsd/AbstractDateTime.java
+++ b/jena-core/src/main/java/org/apache/jena/datatypes/xsd/AbstractDateTime.java
@@ -102,8 +102,6 @@ public class AbstractDateTime implements Comparable<AbstractDateTime> {
         }
         return 0;
     }
-   
-    
     
     /**
      * Convert fractional second representation to a simple double..


[2/3] jena git commit: JENA-1142: Extend the range of primes.

Posted by an...@apache.org.
JENA-1142: Extend the range of primes.

Up to hash tables of about 100e6 items.
No presumption that at that size every works but this makes
it a soft failure rather than a hard failure.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/86b42a9a
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/86b42a9a
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/86b42a9a

Branch: refs/heads/master
Commit: 86b42a9ad0b84ca5554b74b22eb7223103026661
Parents: 8c47568
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Feb 13 14:23:14 2016 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Feb 13 14:25:50 2016 +0000

----------------------------------------------------------------------
 .../java/org/apache/jena/mem/HashCommon.java    | 34 +++++++++++++-------
 1 file changed, 22 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/86b42a9a/jena-core/src/main/java/org/apache/jena/mem/HashCommon.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/mem/HashCommon.java b/jena-core/src/main/java/org/apache/jena/mem/HashCommon.java
index ba03aea..b33d1b2 100644
--- a/jena-core/src/main/java/org/apache/jena/mem/HashCommon.java
+++ b/jena-core/src/main/java/org/apache/jena/mem/HashCommon.java
@@ -21,6 +21,7 @@ package org.apache.jena.mem;
 import java.util.*;
 
 import org.apache.jena.shared.BrokenException ;
+import org.apache.jena.shared.JenaException ;
 import org.apache.jena.util.iterator.* ;
 
 /**
@@ -193,24 +194,33 @@ public abstract class HashCommon<Key>
         threshold = (int) (capacity * loadFactor);
         }
      
+    // Hash tables are 0.25 to 0.5 full so these numbers
+    // are for storing about 1/3 of that number of items. 
+    // The larger sizes are added so that the system has "soft failure"
+    // rather implying guaranteed performance. 
     static final int [] primes =
         {
         7, 19, 37, 79, 149, 307, 617, 1237, 2477, 4957, 9923,
-        19853, 39709, 79423, 158849, 317701, 635413,
-        1270849, 2541701, 5083423
+        19_853, 39_709, 79_423, 158_849, 317_701, 635_413,
+        1_270_849, 2_541_701, 5_083_423
+        , 10_166_857
+        , 20_333_759   
+        , 40_667_527
+        // Impractical?
+        , 81_335_047
+        , 162_670_111
+        , 325_340_233
         };
     
-    protected static int nextSize( int atLeast )
-        {
-            for ( int prime : primes )
-            {
-                if ( prime > atLeast )
-                {
-                    return prime;
-                }
-            }
-        return atLeast;
+    protected static int nextSize(int atLeast) {
+        for ( int prime : primes ) {
+            if ( prime > atLeast )
+                return prime;
         }
+        // If not found, complain.
+        // Theer are some very large numbers in the primes table. 
+        throw new JenaException("Failed to find a 'next size': atleast = "+atLeast) ; 
+    }
     
     /**
         Remove the triple at element <code>i</code> of <code>contents</code>.