public static UUID decodeBinaryToUuid(final byte[] data, final byte type, final UuidRepresentation uuidRepresentation) {
if (data.length != 16) {
throw new BsonSerializationException(String.format("Expected length to be 16, not %d.", data.length));
}
if (type == BsonBinarySubType.UUID_LEGACY.getValue()) {
switch(uuidRepresentation) {
case C_SHARP_LEGACY:
reverseByteArray(data, 0, 4);
reverseByteArray(data, 4, 2);
reverseByteArray(data, 6, 2);
break;
case JAVA_LEGACY:
reverseByteArray(data, 0, 8);
reverseByteArray(data, 8, 8);
break;
case PYTHON_LEGACY:
case STANDARD:
break;
default:
throw new BSONException("Unexpected UUID representation");
}
}
return new UUID(readLongFromArrayBigEndian(data, 0), readLongFromArrayBigEndian(data, 8));
}