diff --git a/AlgebraicDataflowArchitectureModel/src/generators/IPlatformSpecific.java b/AlgebraicDataflowArchitectureModel/src/generators/IPlatformSpecific.java new file mode 100644 index 0000000..cb187bf --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/generators/IPlatformSpecific.java @@ -0,0 +1,17 @@ +package generators; + +import java.util.List; + +import code.ast.Annotation; +import code.ast.CompilationUnit; +import code.ast.ImportDeclaration; +import code.ast.TypeDeclaration; + +public interface IPlatformSpecific { + boolean hasMain(); + boolean isMonolithic(); + boolean hasComponentAnnotation(); + boolean hasPlatformSpecificImports(); + void addComponentAnnotations(TypeDeclaration component, String resourceName); + void addPlatformSpecificImports(CompilationUnit cu); +} diff --git a/AlgebraicDataflowArchitectureModel/src/generators/RestApiSpecific.java b/AlgebraicDataflowArchitectureModel/src/generators/RestApiSpecific.java new file mode 100644 index 0000000..45547b8 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/generators/RestApiSpecific.java @@ -0,0 +1,49 @@ +package generators; + +import java.util.ArrayList; +import java.util.List; + +import code.ast.Annotation; +import code.ast.CompilationUnit; +import code.ast.ImportDeclaration; +import code.ast.TypeDeclaration; + +public class RestApiSpecific implements IPlatformSpecific { + + @Override + public boolean hasMain() { + return false; + } + + @Override + public boolean isMonolithic() { + return false; + } + + @Override + public boolean hasComponentAnnotation() { + return true; + } + + @Override + public void addComponentAnnotations(TypeDeclaration component, String resourcePath) { + component.addAnnotation(new Annotation("Component")); + component.addAnnotation(new Annotation("Path", "\"/" + resourcePath + "\"")); + } + + @Override + public boolean hasPlatformSpecificImports() { + return true; + } + + @Override + public void addPlatformSpecificImports(CompilationUnit cu) { + cu.addImport(new ImportDeclaration("javax.ws.rs.*")); + cu.addImport(new ImportDeclaration("javax.ws.rs.client.*")); + cu.addImport(new ImportDeclaration("javax.ws.rs.core.*")); + cu.addImport(new ImportDeclaration("org.springframework.stereotype.Component")); + cu.addImport(new ImportDeclaration("com.fasterxml.jackson.databind.ObjectMapper")); + cu.addImport(new ImportDeclaration("com.fasterxml.jackson.core.JsonProcessingException")); + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/generators/StandaloneSpecific.java b/AlgebraicDataflowArchitectureModel/src/generators/StandaloneSpecific.java new file mode 100644 index 0000000..ca2c523 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/generators/StandaloneSpecific.java @@ -0,0 +1,40 @@ +package generators; + +import java.util.List; + +import code.ast.Annotation; +import code.ast.CompilationUnit; +import code.ast.ImportDeclaration; +import code.ast.TypeDeclaration; + +public class StandaloneSpecific implements IPlatformSpecific { + + @Override + public boolean hasMain() { + return true; + } + + @Override + public boolean isMonolithic() { + return true; + } + + @Override + public boolean hasComponentAnnotation() { + return false; + } + + @Override + public void addComponentAnnotations(TypeDeclaration component, String resourcePath) { + } + + @Override + public boolean hasPlatformSpecificImports() { + return false; + } + + @Override + public void addPlatformSpecificImports(CompilationUnit cu) { + } + +}