From 0ef71f2b63b30ffb2b162c1da89a0cebe60aaaa7 Mon Sep 17 00:00:00 2001 From: tsantalis Date: Fri, 17 Jan 2025 16:38:25 -0500 Subject: [PATCH] Enable Extract Variable and Extract Attribute detection in commit https://github.com/apache/hadoop/commit/5cbe52f4e8d84961bdc5a21b77bcb10bf31e335d --- .../java/xmi/decomposition/AbstractCodeMapping.java | 2 +- .../decomposition/VariableReplacementAnalysis.java | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/gr/uom/java/xmi/decomposition/AbstractCodeMapping.java b/src/main/java/gr/uom/java/xmi/decomposition/AbstractCodeMapping.java index 857c873b9..de4dac82d 100644 --- a/src/main/java/gr/uom/java/xmi/decomposition/AbstractCodeMapping.java +++ b/src/main/java/gr/uom/java/xmi/decomposition/AbstractCodeMapping.java @@ -718,7 +718,7 @@ else if(stringConcatMatch(initializer, before)) { } processExtractVariableRefactoring(ref, refactorings); checkForNestedExtractVariable(ref, refactorings, nonMappedLeavesT2, insideExtractedOrInlinedMethod); - if(identical()) { + if(identical() || ternaryMatch(initializer, before)) { identicalWithExtractedVariable = true; } return; diff --git a/src/main/java/gr/uom/java/xmi/decomposition/VariableReplacementAnalysis.java b/src/main/java/gr/uom/java/xmi/decomposition/VariableReplacementAnalysis.java index ce433c922..34b7536cb 100644 --- a/src/main/java/gr/uom/java/xmi/decomposition/VariableReplacementAnalysis.java +++ b/src/main/java/gr/uom/java/xmi/decomposition/VariableReplacementAnalysis.java @@ -1185,6 +1185,19 @@ private LeafExpression extractInlineCondition(VariableDeclaration variableDeclar return subExpressions.get(0); } } + //check for string concatenation with "." + if(replacementAsString.startsWith("\"") && replacementAsString.endsWith("\"") && + variableDeclaration.getInitializer().getString().startsWith("\"") && + variableDeclaration.getInitializer().getString().endsWith("\"")) { + String replacementAsStringWithoutDoubleQuotes = replacementAsString.substring(1, replacementAsString.length()-1); + String initializerWithoutDoubleQuotes = variableDeclaration.getInitializer().getString().substring(1, variableDeclaration.getInitializer().getString().length()-1); + if(replacementAsStringWithoutDoubleQuotes.equals(initializerWithoutDoubleQuotes + ".")) { + List subExpressions = variableDeclaration.getInitializer().findExpression(variableDeclaration.getInitializer().getString()); + if(subExpressions.size() > 0) { + return subExpressions.get(0); + } + } + } if(replacement instanceof VariableReplacementWithMethodInvocation) { VariableReplacementWithMethodInvocation r = (VariableReplacementWithMethodInvocation)replacement; for(AbstractCall call : variableDeclaration.getInitializer().getMethodInvocations()) {