diff --git a/src/main/java/generators/ASTGenerator.java b/src/main/java/generators/ASTGenerator.java index 01da471..38e0eab 100644 --- a/src/main/java/generators/ASTGenerator.java +++ b/src/main/java/generators/ASTGenerator.java @@ -427,7 +427,7 @@ return codebase; } - private static TypeDeclaration createClass(Codebase codebase, String name) { + public static TypeDeclaration createClass(Codebase codebase, String name) { if (codebase.getCompilationUnit(name) != null) return codebase.getCompilationUnit(name).types().getFirst(); TypeDeclaration type = new TypeDeclaration(name); CompilationUnit compilationUnit = new CompilationUnit(type); @@ -435,7 +435,7 @@ return type; } - private static MethodDeclaration createMethod(TypeDeclaration type, String name) { + public static MethodDeclaration createMethod(TypeDeclaration type, String name) { for (MethodDeclaration method: type.getMethods()) { if (method.getName().equals(name)) return method; } @@ -444,7 +444,7 @@ return method; } - private static MethodDeclaration createConstructor(TypeDeclaration type) { + public static MethodDeclaration createConstructor(TypeDeclaration type) { for (MethodDeclaration method: type.getMethods()) { if (method.getName().equals(type.getTypeName())) return method; } @@ -453,7 +453,7 @@ return method; } - private static FieldDeclaration createField(TypeDeclaration type, String fieldName, models.algebra.Type fieldType) { + public static FieldDeclaration createField(TypeDeclaration type, String fieldName, models.algebra.Type fieldType) { for (FieldDeclaration field: type.getFields()) { if (field.getName().equals(fieldName)) return field; } diff --git a/src/main/java/generators/DependencyInversionWeaver.java b/src/main/java/generators/DependencyInversionWeaver.java index fc1ef2c..ebe7355 100644 --- a/src/main/java/generators/DependencyInversionWeaver.java +++ b/src/main/java/generators/DependencyInversionWeaver.java @@ -11,13 +11,13 @@ static Codebase weave(Codebase codebase, DependencyInversion dependencyInversion) { ObjectNode dstNode = dependencyInversion.getDst(); InterfaceNode interfaceNode = dependencyInversion.getInterfaceNode(); - String dstName = toComponentName(dstNode.getName()); - String interfaceName = toComponentName(interfaceNode.getName()); + String dstName = ASTGenerator.toComponentName(dstNode.getName()); + String interfaceName = ASTGenerator.toComponentName(interfaceNode.getName()); //print -> public interface interfaceName { ... } InterfaceDeclaration interfaceDeclaration = createInterface(codebase, interfaceName); - TypeDeclaration dstClass = createClass(codebase, dstName); + TypeDeclaration dstClass = ASTGenerator.createClass(codebase, dstName); for (MethodDeclaration method: dstClass.getMethods()) { if (!method.isConstructor()) { boolean alreadyExists = interfaceDeclaration.getMethods().stream() @@ -41,8 +41,8 @@ if (dependencyInversion.getTargetSrc() != null) { // Traverse only the specified target class - String targetSrcName = toComponentName(dependencyInversion.getTargetSrc().getName()); - TypeDeclaration srcClass = createClass(codebase, targetSrcName); + String targetSrcName = ASTGenerator.toComponentName(dependencyInversion.getTargetSrc().getName()); + TypeDeclaration srcClass = ASTGenerator.createClass(codebase, targetSrcName); replaceDependencyInClass(codebase, srcClass, dstType, interfaceType, interfaceName); } else { // Traverse all dependent classes(srcClass) in Codebase @@ -105,21 +105,4 @@ codebase.addInterfaceCompilationUnit(name, compilationUnit); return interfaceDeclaration; } - - //================================================================================== - // Same logic as ASTGenerator create methods - //================================================================================== - - private static String toComponentName(String name) { - return name.substring(0, 1).toUpperCase() + name.substring(1); - } - - private static TypeDeclaration createClass(Codebase codebase, String name) { - if (codebase.getCompilationUnit(name) != null) return codebase.getCompilationUnit(name).types().getFirst(); - TypeDeclaration type = new TypeDeclaration(name); - CompilationUnit compilationUnit = new CompilationUnit(type); - codebase.addCompilationUnit(name, compilationUnit); - return type; - } - } \ No newline at end of file diff --git a/src/main/java/generators/MediatorInsertionWeaver.java b/src/main/java/generators/MediatorInsertionWeaver.java index cf03000..5921d84 100644 --- a/src/main/java/generators/MediatorInsertionWeaver.java +++ b/src/main/java/generators/MediatorInsertionWeaver.java @@ -28,17 +28,17 @@ MediatorContext(Codebase codebase, ObjectNode srcNode, ObjectNode dstNode, ObjectNode mediatorNode) { this.codebase = codebase; - this.srcName = toComponentName(srcNode.getName()); - this.dstName = toComponentName(dstNode.getName()); - this.mediatorName = toComponentName(mediatorNode.getName()); - this.mediatorFieldName = toVariableName(mediatorName); - this.dstFieldName = toVariableName(dstName); + this.srcName = ASTGenerator.toComponentName(srcNode.getName()); + this.dstName = ASTGenerator.toComponentName(dstNode.getName()); + this.mediatorName = ASTGenerator.toComponentName(mediatorNode.getName()); + this.mediatorFieldName = ASTGenerator.toVariableName(mediatorName); + this.dstFieldName = ASTGenerator.toVariableName(dstName); this.dstType = codebase.getComponentType(dstName); - this.mediatorClass = createClass(codebase, mediatorName); + this.mediatorClass = ASTGenerator.createClass(codebase, mediatorName); this.mediatorType = codebase.getComponentType(mediatorName); - this.srcClass = createClass(codebase, srcName); - this.dstClass = createClass(codebase, dstName); + this.srcClass = ASTGenerator.createClass(codebase, srcName); + this.dstClass = ASTGenerator.createClass(codebase, dstName); } } @@ -85,14 +85,14 @@ } mediatorContext.dstField = (existingMediatorMapField != null) ? existingMediatorMapField - : createField(mediatorContext.mediatorClass, mediatorContext.srcDstMapField.getName(), srcMapType); + : ASTGenerator.createField(mediatorContext.mediatorClass, mediatorContext.srcDstMapField.getName(), srcMapType); } else { - mediatorContext.dstField = createField(mediatorContext.mediatorClass, mediatorContext.dstFieldName, mediatorContext.dstType); + mediatorContext.dstField = ASTGenerator.createField(mediatorContext.mediatorClass, mediatorContext.dstFieldName, mediatorContext.dstType); } } static void addMediatorConstructor(MediatorContext mediatorContext) { - MethodDeclaration constructor = createConstructor(mediatorContext.mediatorClass); + MethodDeclaration constructor = ASTGenerator.createConstructor(mediatorContext.mediatorClass); if (!hasParameterNamed(constructor, mediatorContext.dstField.getName())) { VariableDeclaration dstParam = new VariableDeclaration(mediatorContext.dstField.getType(), mediatorContext.dstField.getName()); constructor.addParameter(dstParam); @@ -106,7 +106,7 @@ if (mediatorContext.toMany) return; for (MethodDeclaration method: mediatorContext.dstClass.getMethods()) { if (method.isConstructor()) continue; - MethodDeclaration delegateMethod = createMethod(mediatorContext.mediatorClass, method.getName()); + MethodDeclaration delegateMethod = ASTGenerator.createMethod(mediatorContext.mediatorClass, method.getName()); delegateMethod.setReturnType(method.getReturnType()); List args = new ArrayList<>(); if (method.getParameters() != null) { @@ -158,7 +158,7 @@ mediatorContext.srcFieldToReplace.setName(mediatorContext.mediatorFieldName); } - MethodDeclaration mediatorSetter = createMethod(mediatorContext.srcClass, ASTGenerator.setterPrefix + mediatorContext.mediatorName); + MethodDeclaration mediatorSetter = ASTGenerator.createMethod(mediatorContext.srcClass, ASTGenerator.setterPrefix + mediatorContext.mediatorName); if (mediatorSetter.getParameters() == null || mediatorSetter.getParameters().isEmpty()) { VariableDeclaration mediatorParam = new VariableDeclaration(mediatorContext.mediatorType, mediatorContext.mediatorFieldName); mediatorSetter.addParameter(mediatorParam); @@ -225,7 +225,7 @@ } private static void createSrcStubForMovedMethod(MediatorContext mediatorContext, MethodDeclaration method, Set danglingFieldNames) { - MethodDeclaration stub = createMethod(mediatorContext.srcClass, method.getName()); + MethodDeclaration stub = ASTGenerator.createMethod(mediatorContext.srcClass, method.getName()); stub.setReturnType(method.getReturnType()); List args = new ArrayList<>(); if (method.getParameters() != null) { @@ -448,53 +448,6 @@ } } - //================================================================================== - // Same logic as ASTGenerator create methods - //================================================================================== - - private static String toComponentName(String name) { - return name.substring(0, 1).toUpperCase() + name.substring(1); - } - - private static String toVariableName(String name) { - return name.substring(0, 1).toLowerCase() + name.substring(1); - } - - private static TypeDeclaration createClass(Codebase codebase, String name) { - if (codebase.getCompilationUnit(name) != null) return codebase.getCompilationUnit(name).types().getFirst(); - TypeDeclaration type = new TypeDeclaration(name); - CompilationUnit compilationUnit = new CompilationUnit(type); - codebase.addCompilationUnit(name, compilationUnit); - return type; - } - - private static MethodDeclaration createMethod(TypeDeclaration type, String name) { - for (MethodDeclaration method: type.getMethods()) { - if (method.getName().equals(name)) return method; - } - MethodDeclaration method = new MethodDeclaration(name); - type.addMethod(method); - return method; - } - - private static MethodDeclaration createConstructor(TypeDeclaration type) { - for (MethodDeclaration method: type.getMethods()) { - if (method.getName().equals(type.getTypeName())) return method; - } - MethodDeclaration method = new MethodDeclaration(type.getTypeName(), true); - type.addMethod(method); - return method; - } - - private static FieldDeclaration createField(TypeDeclaration type, String fieldName, models.algebra.Type fieldType) { - for (FieldDeclaration field: type.getFields()) { - if (field.getName().equals(fieldName)) return field; - } - FieldDeclaration field = new FieldDeclaration(fieldType, fieldName); - type.addField(field); - return field; - } - private static boolean hasParameterNamed(MethodDeclaration method, String name) { if (method.getParameters() == null) return false; for (VariableDeclaration param: method.getParameters()) { @@ -502,4 +455,5 @@ } return false; } + } \ No newline at end of file