diff --git a/src/main/java/gr/uom/java/xmi/decomposition/OperationInvocation.java b/src/main/java/gr/uom/java/xmi/decomposition/OperationInvocation.java index 14405983fb..7f18e69dbf 100644 --- a/src/main/java/gr/uom/java/xmi/decomposition/OperationInvocation.java +++ b/src/main/java/gr/uom/java/xmi/decomposition/OperationInvocation.java @@ -358,7 +358,13 @@ else if((parentFieldDeclarationMap != null && parentFieldDeclarationMap.contains } } else { - inferredArgumentTypes.add(null); + String numberType = handleNumber(arg); + if(numberType != null) { + inferredArgumentTypes.add(UMLType.extractTypeObject(numberType)); + } + else { + inferredArgumentTypes.add(null); + } } } int i=0; @@ -442,6 +448,26 @@ private static boolean exactlyMatchingArgumentType(UMLType parameterType, UMLTyp return parameterType.getClassType().equals(argumentType.toString()) || parameterType.toString().equals(argumentType.toString()); } + private static String handleNumber(String argument) { + try { + Integer.parseInt(argument); + return "int"; + } catch (NumberFormatException e) {} + try { + Long.parseLong(argument); + return "long"; + } catch (NumberFormatException e) {} + try { + Float.parseFloat(argument); + return "float"; + } catch (NumberFormatException e) {} + try { + Double.parseDouble(argument); + return "double"; + } catch (NumberFormatException e) {} + return null; + } + public static boolean compatibleTypes(UMLParameter parameter, UMLType type, UMLAbstractClassDiff classDiff, UMLModelDiff modelDiff) { String type1 = parameter.getType().toString(); String type2 = type.toString(); diff --git a/src/main/java/gr/uom/java/xmi/diff/UMLModelDiff.java b/src/main/java/gr/uom/java/xmi/diff/UMLModelDiff.java index 6b4dcee41c..959189fad4 100644 --- a/src/main/java/gr/uom/java/xmi/diff/UMLModelDiff.java +++ b/src/main/java/gr/uom/java/xmi/diff/UMLModelDiff.java @@ -2732,7 +2732,9 @@ private List getSplitClassRefactorings(List mapperRefactorings = mapper.getRefactorings(); refactorings.add(move); + refactorings.addAll(mapperRefactorings); } } if(!classSplitDiff.samePackage()) {