From 4a2c02cd8bec58b3d0fd06de56d5b1381f1377fb Mon Sep 17 00:00:00 2001 From: Heikki Sutinen Date: Fri, 22 May 2015 11:05:33 +0300 Subject: [PATCH] guids sent in jvm byte order --- src/clr/org/fressian/impl/Fns.cs | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/clr/org/fressian/impl/Fns.cs b/src/clr/org/fressian/impl/Fns.cs index adb3c38..43bb6b2 100644 --- a/src/clr/org/fressian/impl/Fns.cs +++ b/src/clr/org/fressian/impl/Fns.cs @@ -43,13 +43,29 @@ public static KeyValuePair soloEntry(IDictionary m) } public static byte[] UUIDtoByteArray(Guid uuid) - { - return uuid.ToByteArray(); + { + return ToOrFromJvmUuidByteOrder( uuid.ToByteArray() ); + } + + private static byte[] ToOrFromJvmUuidByteOrder( byte[] guidBytes ) { + var resultBytes = new byte[ guidBytes.Length ]; + resultBytes[ 0 ] = guidBytes[ 3 ]; + resultBytes[ 1 ] = guidBytes[ 2 ]; + resultBytes[ 2 ] = guidBytes[ 1 ]; + resultBytes[ 3 ] = guidBytes[ 0 ]; + resultBytes[ 4 ] = guidBytes[ 5 ]; + resultBytes[ 5 ] = guidBytes[ 4 ]; + resultBytes[ 6 ] = guidBytes[ 7 ]; + resultBytes[ 7 ] = guidBytes[ 6 ]; + for ( int i = 8 ; i < 16 ; i++ ) { + resultBytes[ i ] = guidBytes[ i ]; + } + return resultBytes; } public static Guid byteArrayToUUID(byte[] bytes) { - return new Guid(bytes); + return new Guid( ToOrFromJvmUuidByteOrder( bytes ) ); } public static K soloKey(IDictionary m)