JCR-3982 Implement toString in TransactionContext (XidWrapper)

git-svn-id: https://svn.apache.org/repos/asf/jackrabbit/trunk@1745116 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/jackrabbit-data/src/main/java/org/apache/jackrabbit/data/core/TransactionContext.java b/jackrabbit-data/src/main/java/org/apache/jackrabbit/data/core/TransactionContext.java
index e70b909..054a130 100644
--- a/jackrabbit-data/src/main/java/org/apache/jackrabbit/data/core/TransactionContext.java
+++ b/jackrabbit-data/src/main/java/org/apache/jackrabbit/data/core/TransactionContext.java
@@ -353,6 +353,9 @@
      * that handles hashCode and equals in a proper way.
      */
     private static class XidWrapper {
+        
+    	private static final char[] HEX = "0123456789abcdef".toCharArray();
+        
     	private byte[] gtid;
     	
     	public XidWrapper(byte[] gtid) {
@@ -371,6 +374,27 @@
         public int hashCode() {
             return Arrays.hashCode(gtid);
         }
+
+        @Override
+        public String toString() {
+            return encodeHexString(gtid);
+        }
+
+        /**
+         * Returns the hex encoding of the given bytes.
+         *
+         * @param value value to be encoded
+         * @return encoded value
+         */
+        private static String encodeHexString(byte[] value) {
+            char[] buffer = new char[value.length * 2];
+            for (int i = 0; i < value.length; i++) {
+                buffer[2 * i] = HEX[(value[i] >> 4) & 0x0f];
+                buffer[2 * i + 1] = HEX[value[i] & 0x0f];
+            }
+            return new String(buffer);
+        }
+
     }
 
 }