From cf0af1bd21d70f9d00eae6a8cdbda50ce0293516 Mon Sep 17 00:00:00 2001 From: tsantalis Date: Fri, 20 Sep 2024 09:59:41 -0400 Subject: [PATCH] Perfect diff for commit https://github.com/openhab/openhab1-addons/commit/f25fa3ae35e4a60a2b7f79a88f14d46ce6cebf55 --- .../decomposition/UMLOperationBodyMapper.java | 45 +++++++++++++++++++ .../astDiff/commits/cases-problematic.json | 3 -- src/test/resources/astDiff/commits/cases.json | 3 ++ 3 files changed, 48 insertions(+), 3 deletions(-) diff --git a/src/main/java/gr/uom/java/xmi/decomposition/UMLOperationBodyMapper.java b/src/main/java/gr/uom/java/xmi/decomposition/UMLOperationBodyMapper.java index 51aab83c1..f5e2fdfec 100644 --- a/src/main/java/gr/uom/java/xmi/decomposition/UMLOperationBodyMapper.java +++ b/src/main/java/gr/uom/java/xmi/decomposition/UMLOperationBodyMapper.java @@ -8395,6 +8395,51 @@ protected LeafMapping createLeafMapping(AbstractCodeFragment leaf1, AbstractCode } } mapping.setMatchingArgumentsWithOperationInvocation(matchingArguments); + if(leaf1.getCreations().size() > 0 && leaf2.getCreations().size() > 0) { + ObjectCreation creation1 = (ObjectCreation) leaf1.getCreations().get(0); + ObjectCreation creation2 = (ObjectCreation) leaf2.getCreations().get(0); + if(creation1.isArray() && creation2.isArray() && creation1.getAnonymousClassDeclaration() != null && creation2.getAnonymousClassDeclaration() != null) { + List nestedCreations1 = new ArrayList(); + for(int i=1; i nestedCreations2 = new ArrayList(); + for(int i=1; i maxArgumentIntersection) { + minValue = editDistance[i]; + maxArgumentIntersection = argumentIntersections[i]; + minIndex = i; + } + } + LeafMapping newMapping = new LeafMapping(nestedCreation1.asLeafExpression(), nestedCreations2.get(minIndex).asLeafExpression(), container1, container2); + mapping.addSubExpressionMapping(newMapping); + nestedCreations2.remove(minIndex); + } + } + } + } return mapping; } diff --git a/src/test/resources/astDiff/commits/cases-problematic.json b/src/test/resources/astDiff/commits/cases-problematic.json index 287b86669..2f564c789 100644 --- a/src/test/resources/astDiff/commits/cases-problematic.json +++ b/src/test/resources/astDiff/commits/cases-problematic.json @@ -10,9 +10,6 @@ }, { "repo" : "https://github.com/spring-projects/spring-hateoas.git", "commit" : "8bdc57ba8975d851fe91edc908761aacea624766" -}, { - "repo" : "https://github.com/openhab/openhab1-addons.git", - "commit" : "f25fa3ae35e4a60a2b7f79a88f14d46ce6cebf55" }, { "repo" : "https://github.com/checkstyle/checkstyle.git", "commit" : "5a9b7249e3d092a78ac8e7d48aeeb62bf1c44e20" diff --git a/src/test/resources/astDiff/commits/cases.json b/src/test/resources/astDiff/commits/cases.json index 65c5886fe..d891646e1 100644 --- a/src/test/resources/astDiff/commits/cases.json +++ b/src/test/resources/astDiff/commits/cases.json @@ -400,4 +400,7 @@ }, { "repo" : "https://github.com/apache/pig.git", "commit" : "92dce401344a28ff966ad4cf3dd969a676852315" +}, { + "repo" : "https://github.com/openhab/openhab1-addons.git", + "commit" : "f25fa3ae35e4a60a2b7f79a88f14d46ce6cebf55" } ] \ No newline at end of file