diff --git a/src/main/java/com/ebay/bsonpatch/BsonDiff.java b/src/main/java/com/ebay/bsonpatch/BsonDiff.java index 32396d2..7433d47 100644 --- a/src/main/java/com/ebay/bsonpatch/BsonDiff.java +++ b/src/main/java/com/ebay/bsonpatch/BsonDiff.java @@ -78,7 +78,7 @@ private static void introduceCopyOperation(BsonValue source, BsonValue target, L } } - private static boolean isInteger(String str) { + private static boolean isNumber(String str) { int size = str.length(); for (int i = 0; i < size; i++) { @@ -98,11 +98,10 @@ private static boolean isAllowed(List source, List destination) while (i < source.size() && j < destination.size()) { Object srcValue = source.get(i); Object dstValue = destination.get(j); - if (isInteger(srcValue.toString()) && isInteger(dstValue.toString())) { - Integer srcInt = Integer.parseInt(srcValue.toString()); - Integer dstInt = Integer.parseInt(dstValue.toString()); - - if (srcInt > dstInt) { + String srcStr = srcValue.toString(); + String dstStr = dstValue.toString(); + if (isNumber(srcStr) && isNumber(dstStr)) { + if (srcStr.compareTo(dstStr) > 0) { return false; } } diff --git a/src/test/resources/testdata/sample.json b/src/test/resources/testdata/sample.json index 076c65c..f166d8b 100644 --- a/src/test/resources/testdata/sample.json +++ b/src/test/resources/testdata/sample.json @@ -1565,5 +1565,9 @@ , "second": {"@type":"SimpleCollection","id":"17aead29-2097-436d-b9d2-d95e0de423db","notes":"sapien minim mandamus fugit postulant nominavi solet numquam","description":"qui splendide porttitor simul maiestatis fabellas viverra omnesque","version":10,"collectionValue":[{"@type":"SimpleReference","id":"f4b10497-ecb9-4e6a-aa66-bd4c874da6f0","notes":"cras habitant liber verterem neque litora eruditi vehicula","description":"te comprehensam mutat latine deterruisset quis sadipscing non verear","version":0,"referenceValue":{"@type":"SimpleD","id":"d4754e2d-edfc-4263-add2-4a17082f6b50","notes":"ceteros condimentum rhoncus mei salutatus volutpat delectus tation mollis","description":"ante ea errem mnesarchum civibus","version":0,"booleanValue":true,"type":"SIMPLE_D"},"type":"SIMPLE_REFERENCE"},{"@type":"SimpleReference","id":"a08f2ab0-cf27-440b-b9f5-71b1021aa206","notes":"intellegebat doctus signiferumque dis dicam appetere fringilla esse","description":"sapientem massa legimus nunc ultricies sed eirmod","version":0,"referenceValue":{"@type":"SimpleB","id":"33b89e6e-3cd2-4f49-b053-b654f6f8df5f","notes":"ignota adhuc convenire splendide vivendo","description":"nostra efficitur morbi sit fusce tacimates eum vitae","version":0,"intValue":899213098,"type":"SIMPLE_B"},"type":"SIMPLE_REFERENCE"},{"@type":"SimpleReference","id":"a08f2ab0-cf27-440b-b9f5-71b1021aa206","notes":"intellegebat doctus signiferumque dis dicam appetere fringilla esse","description":"sapientem massa legimus nunc ultricies sed eirmod","version":0,"referenceValue":{"@type":"SimpleB","id":"33b89e6e-3cd2-4f49-b053-b654f6f8df5f","notes":"ignota adhuc convenire splendide vivendo","description":"nostra efficitur morbi sit fusce tacimates eum vitae","version":0,"intValue":899213098,"type":"SIMPLE_B"},"type":"SIMPLE_REFERENCE"},{"@type":"SimpleB","id":"12a771f8-2d9d-4060-b02c-2772862154ff","notes":"morbi fermentum inani tritani malorum ultrices","description":"antiopam reprimique putent urbanitas ne volumus","version":3,"intValue":-1035459272,"type":"SIMPLE_B"}],"type":"SIMPLE_COLLECTION"} + }, + { + "first":{"map":{"3000000000": {"field":3100000000,"otherField": 0}}}, + "second":{"map":{"3000000000": {"field":3100000000,"otherField": 0, "extraField" : 0}}} } -] + ]