From 82bbcad1dbf03b7e3b99d11a507f6007c8e506f5 Mon Sep 17 00:00:00 2001 From: tsantalis Date: Mon, 27 May 2024 15:38:32 -0400 Subject: [PATCH] Support the detection of inlined methods within merged method (#725) Merge Method [private routeLoggingToSlf4J() : void, private addLogToDisk() : void] to private initLogging(args String[]) : void in class org.jabref.Launcher Inline Method private initializeLogger() : void inlined to private initLogging(args String[]) : void in class org.jabref.Launcher --- .../uom/java/xmi/diff/UMLClassBaseDiff.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/main/java/gr/uom/java/xmi/diff/UMLClassBaseDiff.java b/src/main/java/gr/uom/java/xmi/diff/UMLClassBaseDiff.java index 3e760fcbc8..881ae0a3c1 100644 --- a/src/main/java/gr/uom/java/xmi/diff/UMLClassBaseDiff.java +++ b/src/main/java/gr/uom/java/xmi/diff/UMLClassBaseDiff.java @@ -2593,6 +2593,27 @@ private void checkForInlinedOperations() throws RefactoringMinerTimedOutExceptio } } } + Set refactoringsToBeAdded = new LinkedHashSet(); + for(Refactoring r : refactorings) { + if(r instanceof MergeOperationRefactoring) { + MergeOperationRefactoring merge = (MergeOperationRefactoring)r; + for(UMLOperationBodyMapper mapper : merge.getMappers()) { + InlineOperationDetection detection = new InlineOperationDetection(mapper, removedOperations, this, modelDiff); + List sortedRemovedOperations = detection.getRemovedOperationsSortedByCalls(); + for(UMLOperation removedOperation : sortedRemovedOperations) { + List refs = detection.check(removedOperation); + for(InlineOperationRefactoring refactoring : refs) { + refactoringsToBeAdded.add(refactoring); + UMLOperationBodyMapper operationBodyMapper = refactoring.getBodyMapper(); + inlinedOperationMappers.add(operationBodyMapper); + mapper.addChildMapper(operationBodyMapper); + operationsToBeRemoved.add(removedOperation); + } + } + } + } + } + refactorings.addAll(refactoringsToBeAdded); MappingOptimizer optimizer = new MappingOptimizer(this); for(UMLOperationBodyMapper mapper : getOperationBodyMapperList()) { optimizer.optimizeDuplicateMappingsForInline(mapper, refactorings);