You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2014/02/10 17:01:24 UTC
svn commit: r1566668 -
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/id/NodeId.java
Author: jukka
Date: Mon Feb 10 16:01:23 2014
New Revision: 1566668
URL: http://svn.apache.org/r1566668
Log:
JCR-3721: Slow and actively called NodeId.toString()
Patch by Maxim Zinal
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/id/NodeId.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/id/NodeId.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/id/NodeId.java?rev=1566668&r1=1566667&r2=1566668&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/id/NodeId.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/id/NodeId.java Mon Feb 10 16:01:23 2014
@@ -243,6 +243,21 @@ public class NodeId implements ItemId, C
//--------------------------------------------------------------< Object >
+ final static String[] digits = new String[256];
+ static {
+ for ( int i=0; i<digits.length; ++i ) {
+ digits[i] = String.format("%02x", i);
+ }
+ }
+
+ final static int[] indexes = {
+ 0, 1, 2, 3, 4, 5, 6, 7,
+ 9, 10, 11, 12,
+ 14, 15, 16, 17,
+ 19, 20, 21, 22,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35
+ };
+
/**
* Returns the UUID string representation of this identifier.
*
@@ -250,7 +265,19 @@ public class NodeId implements ItemId, C
* @return UUID string
*/
public String toString() {
- return new UUID(msb, lsb).toString();
+ //return new UUID(msb, lsb).toString();
+ final char[] retval = new char[36];
+ retval[8] = retval[13] = retval[18] = retval[23] = '-';
+ final byte[] data = getRawBytes();
+ for ( int i=0; i<16; ++i ) {
+ int pos = data[i];
+ if ( pos < 0 )
+ pos += 256;
+ final String v = digits[pos];
+ retval[indexes[i*2]] = v.charAt(0);
+ retval[indexes[i*2 + 1]] = v.charAt(1);
+ }
+ return new String(retval);
}
/**