package generators;
import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;
import code.ast.Annotation;
import code.ast.CompilationUnit;
import code.ast.FieldDeclaration;
import code.ast.ImportDeclaration;
import code.ast.MethodDeclaration;
import code.ast.TypeDeclaration;
import code.ast.VariableDeclaration;
import models.algebra.Type;
abstract public class RestApiSpecific implements IPlatformSpecific {
protected ILanguageSpecific langSpec = null;
@Override
public boolean hasMain() {
return false;
}
@Override
public boolean isMonolithic() {
return false;
}
@Override
public boolean isDifferentTreesAsDifferentServices() {
return true;
}
abstract public void addComponentAnnotations(TypeDeclaration component, String resourcePath);
abstract public void addGetAnnotations(MethodDeclaration getMethod);
abstract public void addPutAnnotations(MethodDeclaration putMethod);
abstract public void addPostAnnotations(MethodDeclaration postMethod);
abstract public void addDeleteAnnotations(MethodDeclaration deleteMethod);
abstract public void addPathAnnotation(MethodDeclaration method, String resourcePath);
abstract public void addPathParamAnnotation(VariableDeclaration var, String paramName);
abstract public void addFormParamAnnotation(VariableDeclaration var, String paramName);
abstract public void addPlatformSpecificImports(CompilationUnit cu);
abstract public boolean hasHttpClientFieldDeclaration(TypeDeclaration component);
abstract public void addHttpClientFieldDeclaration(TypeDeclaration component);
abstract public String getConversionFromJsonString(String fromStrVarName, String toVarName, String toVarType);
abstract public String getHttpMethodParamsConstructionStatement(String callerResourceName, List<Entry<Type, Entry<String, String>>> params, boolean isFirstCall);
abstract public String getHttpMethodCallStatement(String baseURL, String resourceName, String senderResName, String httpMethod);
abstract public String getHttpMethodCallWithResponseStatement(String baseURL, String resourceName, String httpMethod, String responseTypeName);
abstract public void addJsonException(MethodDeclaration method);
abstract public boolean hasJsonException(MethodDeclaration method);
public String getBaseURL() {
return "http://localhost:8080";
}
}