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 2014/05/27 17:58:14 UTC

svn commit: r1597811 - in /jena/trunk/jena-core/src: main/java/com/hp/hpl/jena/shared/uuid/ test/java/com/hp/hpl/jena/shared/uuid/

Author: andy
Date: Tue May 27 15:58:13 2014
New Revision: 1597811

URL: http://svn.apache.org/r1597811
Log:
Fix for UUID V1 generation - signed bytes leaking bits to high end of the node see number.

Added:
    jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/shared/uuid/TestUUID_JRE.java
      - copied, changed from r1597729, jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/shared/uuid/TestUUID_J5.java
Removed:
    jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/shared/uuid/TestUUID_J5.java
Modified:
    jena/trunk/jena-core/src/main/java/com/hp/hpl/jena/shared/uuid/JenaUUID.java
    jena/trunk/jena-core/src/main/java/com/hp/hpl/jena/shared/uuid/UUID_V1_Gen.java
    jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/shared/uuid/UUIDTestSuite.java

Modified: jena/trunk/jena-core/src/main/java/com/hp/hpl/jena/shared/uuid/JenaUUID.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-core/src/main/java/com/hp/hpl/jena/shared/uuid/JenaUUID.java?rev=1597811&r1=1597810&r2=1597811&view=diff
==============================================================================
--- jena/trunk/jena-core/src/main/java/com/hp/hpl/jena/shared/uuid/JenaUUID.java (original)
+++ jena/trunk/jena-core/src/main/java/com/hp/hpl/jena/shared/uuid/JenaUUID.java Tue May 27 15:58:13 2014
@@ -38,10 +38,6 @@ import org.slf4j.LoggerFactory ;
 
 public abstract class JenaUUID
 {
-
-    // Java6: get MAC address:
-    // http://www.kodejava.org/examples/250.html
-
     static final int HEX          = 16 ;
     static final int Var_NCS      = 0 ;
     static final int Var_Std      = 2 ; // Same as DCE

Modified: jena/trunk/jena-core/src/main/java/com/hp/hpl/jena/shared/uuid/UUID_V1_Gen.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-core/src/main/java/com/hp/hpl/jena/shared/uuid/UUID_V1_Gen.java?rev=1597811&r1=1597810&r2=1597811&view=diff
==============================================================================
--- jena/trunk/jena-core/src/main/java/com/hp/hpl/jena/shared/uuid/UUID_V1_Gen.java (original)
+++ jena/trunk/jena-core/src/main/java/com/hp/hpl/jena/shared/uuid/UUID_V1_Gen.java Tue May 27 15:58:13 2014
@@ -193,10 +193,8 @@ public class UUID_V1_Gen implements UUID
     // See LibUUID.toString(JenaUUID)
     // The code here works on the specific fields and is kept for reference only.
     private static String unparse(UUID_V1 uuid) {
-        int _variant = uuid.getVariant() ; // (int)((UUID_V1_Gen.maskVariant &
-                                           // uuid.bitsLower)>>>62) ;
-        int _version = uuid.getVersion() ; // (int)((UUID_V1_Gen.maskVersion &
-                                           // uuid.bitsUpper)>>>12) ;
+        int _variant = uuid.getVariant() ;
+        int _version = uuid.getVersion() ;
 
         long timeHigh = uuid.getTimeHigh() ;
         long timeMid = uuid.getTimeMid() ;
@@ -223,7 +221,7 @@ public class UUID_V1_Gen implements UUID
     }
 
     // Testing.
-    public static UUID_V1 generate(int version, int variant, long timestamp, long clockSeq, long node) {
+    /*package*/ static UUID_V1 generate(int version, int variant, long timestamp, long clockSeq, long node) {
         long timeHigh = timestamp >>> (60 - 12) ;       // Top 12 bits of 60 bit number.
         long timeMid = (timestamp >>> 32) & 0xFFFFL ;   // 16 bits, bits 32-47 
         long timeLow = timestamp & 0xFFFFFFFFL ;        // Low 32 bits
@@ -232,8 +230,8 @@ public class UUID_V1_Gen implements UUID
     }
 
     private static UUID_V1 generate(int version, int variant, long timeHigh, long timeMid, long timeLow, long clockSeq, long node) {
-        long mostSigBits = (timeLow << 32) | (timeMid << 16) | (versionHere << 12) | timeHigh ;
-        long leastSigBits = (long)variantHere << 62 | (clockSeq << 48) | node ;
+        long mostSigBits = (timeLow << 32) | (timeMid << 16) | (version << 12) | timeHigh ;
+        long leastSigBits = (long)variant << 62 | (clockSeq << 48) | node ;
         return new UUID_V1(mostSigBits, leastSigBits) ;
     }
 
@@ -296,13 +294,11 @@ public class UUID_V1_Gen implements UUID
             if ( hwAddr != null && hwAddr.length > 4 ) { // Length is a sanity check.
                 node = 0 ;
                 for ( byte bv : hwAddr ) {
-                    node = node << 8 | bv ;
+                    node = (node << 8) | (bv&0xFF) ;
                 }
                 return ;
             }
-        } catch (Exception ex) { 
-            
-        }                      // Failed in some way.  Fallback.
+        } catch (Exception ex) { }                      // Failed in some way.  Fallback.
 
         
 

Copied: jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/shared/uuid/TestUUID_JRE.java (from r1597729, jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/shared/uuid/TestUUID_J5.java)
URL: http://svn.apache.org/viewvc/jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/shared/uuid/TestUUID_JRE.java?p2=jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/shared/uuid/TestUUID_JRE.java&p1=jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/shared/uuid/TestUUID_J5.java&r1=1597729&r2=1597811&rev=1597811&view=diff
==============================================================================
--- jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/shared/uuid/TestUUID_J5.java (original)
+++ jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/shared/uuid/TestUUID_JRE.java Tue May 27 15:58:13 2014
@@ -22,12 +22,9 @@ import java.util.UUID ;
 
 import junit.framework.TestCase ;
 
-/** Java5-dependent tests.
- * java.util.UUID only appeared in Java5
- */
+/** Test comparing Java JRE UUID and Jena's for parsing existing UUIDs. */
 
-
-public class TestUUID_J5 extends TestCase
+public class TestUUID_JRE extends TestCase
 {
     UUID_V1_Gen factory1 = new UUID_V1_Gen() ;
     UUID_V4_Gen factory4 = new UUID_V4_Gen() ;

Modified: jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/shared/uuid/UUIDTestSuite.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/shared/uuid/UUIDTestSuite.java?rev=1597811&r1=1597810&r2=1597811&view=diff
==============================================================================
--- jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/shared/uuid/UUIDTestSuite.java (original)
+++ jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/shared/uuid/UUIDTestSuite.java Tue May 27 15:58:13 2014
@@ -28,7 +28,10 @@ public class UUIDTestSuite  extends Test
     
     private UUIDTestSuite()
     {
+        // The OS kernel can run out of entropy in which case these tests get very slow
+        // These tests may not be in the test suite.
         addTestSuite(TestBits.class) ;
         addTestSuite(TestUUID.class) ;
+        addTestSuite(TestUUID_JRE.class) ;
     }
 }