
com.reprezen.genflow.rapidml.csharp.generators.ResourceAPIGenerator Maven / Gradle / Ivy
The newest version!
package com.reprezen.genflow.rapidml.csharp.generators;
import com.google.common.base.Objects;
import com.reprezen.genflow.api.template.IGenTemplateContext;
import com.reprezen.genflow.rapidml.csharp.Config;
import com.reprezen.genflow.rapidml.csharp.helpers.DocHelper;
import com.reprezen.genflow.rapidml.csharp.helpers.FileHelper;
import com.reprezen.genflow.rapidml.csharp.helpers.FileRole;
import com.reprezen.genflow.rapidml.csharp.helpers.NameHelper;
import com.reprezen.genflow.rapidml.csharp.helpers.SnippetHelper;
import com.reprezen.genflow.rapidml.csharp.helpers.TypeHelper;
import com.reprezen.genflow.rapidml.csharp.helpers.UtilsHelper;
import com.reprezen.rapidml.CollectionResource;
import com.reprezen.rapidml.DataModel;
import com.reprezen.rapidml.HTTPMethods;
import com.reprezen.rapidml.MessageParameter;
import com.reprezen.rapidml.Method;
import com.reprezen.rapidml.ObjectResource;
import com.reprezen.rapidml.ResourceAPI;
import com.reprezen.rapidml.ResourceDefinition;
import com.reprezen.rapidml.ServiceDataResource;
import com.reprezen.rapidml.Structure;
import com.reprezen.rapidml.TypedMessage;
import com.reprezen.rapidml.TypedRequest;
import com.reprezen.rapidml.TypedResponse;
import com.reprezen.rapidml.URIParameter;
import com.reprezen.rapidml.ZenModel;
import java.net.URI;
import java.nio.file.Path;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtend2.lib.StringConcatenation;
import org.eclipse.xtext.xbase.lib.CollectionLiterals;
import org.eclipse.xtext.xbase.lib.Exceptions;
import org.eclipse.xtext.xbase.lib.Extension;
import org.eclipse.xtext.xbase.lib.Functions.Function1;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
@SuppressWarnings("all")
public class ResourceAPIGenerator {
private final ZenModel model;
private final IGenTemplateContext context;
private final Config config;
@Extension
private NameHelper nameHelper;
@Extension
private TypeHelper typeHelper;
@Extension
private SnippetHelper snippetHelper;
public ResourceAPIGenerator(final ZenModel model, final IGenTemplateContext context, final Config config) {
this.model = model;
this.context = context;
this.config = config;
this.nameHelper = NameHelper.forModel(model);
this.typeHelper = TypeHelper.forModel(model);
SnippetHelper _snippetHelper = new SnippetHelper(config);
this.snippetHelper = _snippetHelper;
}
public void generate() {
EList _resourceAPIs = this.model.getResourceAPIs();
for (final ResourceAPI api : _resourceAPIs) {
EList _ownedResourceDefinitions = api.getOwnedResourceDefinitions();
for (final ResourceDefinition resource : _ownedResourceDefinitions) {
{
this.generateInterface(resource);
boolean _isGenerateDelegateController = this.config.isGenerateDelegateController();
if (_isGenerateDelegateController) {
this.generateDelegateController(resource);
this.generateAbstractDelegateHandler(resource);
}
}
}
}
}
private Path generateInterface(final ResourceDefinition resource) {
Path _xblockexpression = null;
{
final String name = this.nameHelper.getResourceName(resource);
@Extension
final FileHelper fileHelper = FileHelper.of(resource, FileRole.INTERFACE, this.context, this.config);
this.useDataModels(fileHelper, resource);
StringConcatenation _builder = new StringConcatenation();
CharSequence _simpleDoc = DocHelper.simpleDoc(resource);
_builder.append(_simpleDoc);
CharSequence _generatedAttr = UtilsHelper.generatedAttr();
_builder.append(_generatedAttr);
_builder.newLineIfNotEmpty();
_builder.append("public interface I");
_builder.append(name);
_builder.append("Controller {");
_builder.newLineIfNotEmpty();
{
EList _methods = resource.getMethods();
for(final Method method : _methods) {
_builder.append(" ");
CharSequence _returnType = this.getReturnType(method);
_builder.append(_returnType, " ");
_builder.append(" ");
String _initialUpper = this.nameHelper.initialUpper(method.getName());
_builder.append(_initialUpper, " ");
_builder.append("(");
String _signature = this.getSignature(method);
_builder.append(_signature, " ");
_builder.append(");");
_builder.newLineIfNotEmpty();
}
}
_builder.append("}");
_builder.newLine();
final String content = _builder.toString();
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("I");
_builder_1.append(name);
_builder_1.append("Controller");
_xblockexpression = fileHelper.writeFile(content, fileHelper.getCsharpFileName(_builder_1));
}
return _xblockexpression;
}
private Path generateDelegateController(final ResourceDefinition resource) {
Path _xblockexpression = null;
{
final String name = this.nameHelper.getResourceName(resource);
EObject _eContainer = resource.eContainer();
final ResourceAPI api = ((ResourceAPI) _eContainer);
@Extension
final FileHelper fileHelper = FileHelper.of(resource, FileRole.DELEGATE_CONTROLLER, this.context, this.config);
this.useDataModels(fileHelper, resource);
StringConcatenation _builder = new StringConcatenation();
CharSequence _simpleDoc = DocHelper.simpleDoc(resource);
_builder.append(_simpleDoc);
CharSequence _routingAttrs = this.getRoutingAttrs(api);
_builder.append(_routingAttrs);
CharSequence _generatedAttr = UtilsHelper.generatedAttr();
_builder.append(_generatedAttr);
_builder.newLineIfNotEmpty();
_builder.append("public partial class ");
_builder.append(name);
_builder.append("DelegateController : ");
String _apiController = this.snippetHelper.apiController();
_builder.append(_apiController);
_builder.append(", I");
_builder.append(name);
_builder.append("Controller {");
_builder.newLineIfNotEmpty();
{
EList _methods = resource.getMethods();
for(final Method method : _methods) {
_builder.append(" ");
final String methName = this.nameHelper.initialUpper(method.getName());
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.newLine();
_builder.append(" ");
_builder.append("public delegate void ");
_builder.append(methName, " ");
_builder.append("_PreProcessDelegate(");
String _signature = this.getSignature(method);
_builder.append(_signature, " ");
_builder.append(");");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("public static ");
_builder.append(methName, " ");
_builder.append("_PreProcessDelegate ");
_builder.append(methName, " ");
_builder.append("_PreProcess;");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("public delegate ");
CharSequence _delegateReturnType = this.getDelegateReturnType(method);
_builder.append(_delegateReturnType, " ");
_builder.append(" ");
_builder.append(methName, " ");
_builder.append("_ProcessDelegate(");
String _signature_1 = this.getSignature(method);
_builder.append(_signature_1, " ");
_builder.append(");");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("public static ");
_builder.append(methName, " ");
_builder.append("_ProcessDelegate ");
_builder.append(methName, " ");
_builder.append("_Process;");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("public delegate void ");
_builder.append(methName, " ");
_builder.append("_PostProcessDelegate(");
String _signature_2 = this.getSignature(method, true);
_builder.append(_signature_2, " ");
_builder.append(");");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("public static ");
_builder.append(methName, " ");
_builder.append("_PostProcessDelegate ");
_builder.append(methName, " ");
_builder.append("_PostProcess;");
_builder.newLineIfNotEmpty();
}
}
_builder.newLine();
{
EList _methods_1 = resource.getMethods();
for(final Method method_1 : _methods_1) {
_builder.append(" ");
final String methName_1 = this.nameHelper.initialUpper(method_1.getName());
_builder.newLineIfNotEmpty();
_builder.append(" ");
CharSequence _returnType = this.getReturnType(method_1);
final boolean notVoid = (!Objects.equal(_returnType, "void"));
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.newLine();
_builder.append(" ");
List _routingAttrs_1 = this.getRoutingAttrs(method_1);
_builder.append(_routingAttrs_1, " ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("public ");
CharSequence _returnType_1 = this.getReturnType(method_1);
_builder.append(_returnType_1, " ");
_builder.append(" ");
_builder.append(methName_1, " ");
_builder.append("(");
String _signature_3 = this.getSignature(method_1, false, true);
_builder.append(_signature_3, " ");
_builder.append(") {");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
CharSequence _delegateVarDecl = this.snippetHelper.delegateVarDecl(this.getValueType(IterableExtensions.head(method_1.getResponses())));
_builder.append(_delegateVarDecl, " ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("if (");
_builder.append(methName_1, " ");
_builder.append("_PreProcess != null) {");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append(methName_1, " ");
_builder.append("_PreProcess(");
String _args = this.getArgs(method_1);
_builder.append(_args, " ");
_builder.append(");");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("}");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("if (");
_builder.append(methName_1, " ");
_builder.append("_Process != null) {");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
{
if (notVoid) {
String _delegateVar = this.snippetHelper.delegateVar();
_builder.append(_delegateVar, " ");
_builder.append(" = ");
}
}
_builder.append(methName_1, " ");
_builder.append("_Process(");
String _args_1 = this.getArgs(method_1);
_builder.append(_args_1, " ");
_builder.append(");");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("} else {");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("throw new NotImplementedException();");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("}");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("if (");
_builder.append(methName_1, " ");
_builder.append("_PostProcess != null");
String _postProcessExtraCond = this.snippetHelper.postProcessExtraCond();
_builder.append(_postProcessExtraCond, " ");
_builder.append(") {");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append(methName_1, " ");
_builder.append("_PostProcess(");
String _args_2 = this.getArgs(method_1, true);
_builder.append(_args_2, " ");
_builder.append(");");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("}");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
String _delegateReturn = this.snippetHelper.delegateReturn(notVoid);
_builder.append(_delegateReturn, " ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("}");
_builder.newLine();
}
}
_builder.append("}");
_builder.newLine();
final String content = _builder.toString();
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append(name);
_builder_1.append("DelegateController");
_xblockexpression = fileHelper.writeFile(content, fileHelper.getCsharpFileName(_builder_1));
}
return _xblockexpression;
}
private Path generateAbstractDelegateHandler(final ResourceDefinition resource) {
Path _xblockexpression = null;
{
final String name = this.nameHelper.getResourceName(resource);
@Extension
final FileHelper fileHelper = FileHelper.of(resource, FileRole.ABSTRACT_DELEGATE_HANDLER, this.context, this.config);
EObject _eContainer = resource.eContainer();
fileHelper.using(((ResourceAPI) _eContainer));
this.useDataModels(fileHelper, resource);
StringConcatenation _builder = new StringConcatenation();
_builder.append("public abstract class Abstract");
_builder.append(name);
_builder.append("Handlers {");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append(" ");
_builder.append("/// ");
_builder.newLine();
_builder.append(" ");
_builder.append("/// Bind handlers to delegates here. For example:");
_builder.newLine();
_builder.append(" ");
_builder.append("/// ");
_builder.append(name, " ");
_builder.append("DelegateController.MethodName_Process += MethodName;");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("/// Unbound handlers will not be used. Handlers that are not overridden act as follows:");
_builder.newLine();
_builder.append(" ");
_builder.append("/// * PreProcess handlers do nothing");
_builder.newLine();
_builder.append(" ");
_builder.append("/// * Process handlers throw NotImplementedException");
_builder.newLine();
_builder.append(" ");
_builder.append("/// * PostProcess handlers do nothing");
_builder.newLine();
_builder.append(" ");
_builder.append("/// ");
_builder.newLine();
_builder.append(" ");
_builder.append("public Abstract");
_builder.append(name, " ");
_builder.append("Handlers() {}");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.newLine();
{
EList _methods = resource.getMethods();
for(final Method method : _methods) {
_builder.append(" ");
final String methName = this.nameHelper.initialUpper(method.getName());
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.newLine();
_builder.append(" ");
_builder.append("protected virtual void ");
_builder.append(methName, " ");
_builder.append("_PreProcess(");
String _signature = this.getSignature(method);
_builder.append(_signature, " ");
_builder.append(") { }");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("protected virtual ");
CharSequence _delegateReturnType = this.getDelegateReturnType(method);
_builder.append(_delegateReturnType, " ");
_builder.append(" ");
_builder.append(methName, " ");
_builder.append("(");
String _signature_1 = this.getSignature(method);
_builder.append(_signature_1, " ");
_builder.append(") {");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("throw new NotImplementedException();");
_builder.newLine();
_builder.append(" ");
_builder.append("}");
_builder.newLine();
_builder.append(" ");
_builder.append("protected virtual void ");
_builder.append(methName, " ");
_builder.append("_PostProcess(");
String _signature_2 = this.getSignature(method, true);
_builder.append(_signature_2, " ");
_builder.append(") { }");
_builder.newLineIfNotEmpty();
}
}
_builder.append("}");
_builder.newLine();
final String content = _builder.toString();
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("Abstract");
_builder_1.append(name);
_builder_1.append("DelegateHandler");
_xblockexpression = fileHelper.writeFile(content, fileHelper.getCsharpFileName(_builder_1));
}
return _xblockexpression;
}
private FileHelper useDataModels(final FileHelper helper, final ResourceDefinition resource) {
FileHelper _xblockexpression = null;
{
final Set usedDataModels = CollectionLiterals.newHashSet();
EList _methods = resource.getMethods();
for (final Method method : _methods) {
{
TypedRequest _request = method.getRequest();
ResourceDefinition _resourceType = null;
if (_request!=null) {
_resourceType=_request.getResourceType();
}
Structure _structure = null;
if (_resourceType!=null) {
_structure=this.getStructure(_resourceType);
}
EObject _eContainer = null;
if (_structure!=null) {
_eContainer=_structure.eContainer();
}
usedDataModels.add(((DataModel) _eContainer));
EList _responses = method.getResponses();
for (final TypedResponse response : _responses) {
ResourceDefinition _resourceType_1 = response.getResourceType();
Structure _structure_1 = null;
if (_resourceType_1!=null) {
_structure_1=this.getStructure(_resourceType_1);
}
EObject _eContainer_1 = null;
if (_structure_1!=null) {
_eContainer_1=_structure_1.eContainer();
}
usedDataModels.add(((DataModel) _eContainer_1));
}
}
}
final Function1 _function = (DataModel it) -> {
return Boolean.valueOf((it != null));
};
_xblockexpression = helper.using(IterableExtensions.toList(IterableExtensions.filter(usedDataModels, _function)).toArray());
}
return _xblockexpression;
}
private boolean isVoidReturn(final Method method) {
Structure _underlyingStructure = this.getUnderlyingStructure(IterableExtensions.head(method.getResponses()));
return (_underlyingStructure == null);
}
private CharSequence getReturnType(final Method method) {
CharSequence _elvis = null;
CharSequence _messageType = this.getMessageType(IterableExtensions.head(method.getResponses()));
if (_messageType != null) {
_elvis = _messageType;
} else {
String _voidMethodResponseType = this.snippetHelper.voidMethodResponseType();
_elvis = _voidMethodResponseType;
}
return _elvis;
}
private CharSequence getDelegateReturnType(final Method method) {
CharSequence _elvis = null;
CharSequence _delegateType = this.getDelegateType(IterableExtensions.head(method.getResponses()));
if (_delegateType != null) {
_elvis = _delegateType;
} else {
String _voidDelegateType = this.snippetHelper.voidDelegateType();
_elvis = _voidDelegateType;
}
return _elvis;
}
private String getRequestType(final Method method) {
TypedRequest _request = method.getRequest();
String _valueType = null;
if (_request!=null) {
_valueType=this.getValueType(_request);
}
return _valueType;
}
private CharSequence getMessageType(final TypedMessage msg) {
String _valueType = this.getValueType(msg);
CharSequence _methodResponseType = null;
if (_valueType!=null) {
_methodResponseType=this.snippetHelper.methodResponseType(_valueType);
}
return _methodResponseType;
}
private CharSequence getDelegateType(final TypedMessage msg) {
String _valueType = this.getValueType(msg);
CharSequence _delegateType = null;
if (_valueType!=null) {
_delegateType=this.snippetHelper.delegateType(_valueType);
}
return _delegateType;
}
private String getValueType(final TypedMessage msg) {
String _xblockexpression = null;
{
Structure _underlyingStructure = this.getUnderlyingStructure(msg);
String _name = null;
if (_underlyingStructure!=null) {
_name=_underlyingStructure.getName();
}
String _initialUpper = null;
if (_name!=null) {
_initialUpper=this.nameHelper.initialUpper(_name);
}
final String typeName = _initialUpper;
String _xifexpression = null;
if ((typeName != null)) {
String _xifexpression_1 = null;
ResourceDefinition _resourceType = msg.getResourceType();
if ((_resourceType instanceof CollectionResource)) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("IEnumerable");
_xifexpression_1 = _builder.toString();
} else {
_xifexpression_1 = ("I" + typeName);
}
_xifexpression = _xifexpression_1;
}
_xblockexpression = _xifexpression;
}
return _xblockexpression;
}
private Structure getUnderlyingStructure(final TypedMessage msg) {
Structure _elvis = null;
Structure _elvis_1 = null;
Structure _dataType = msg.getDataType();
if (_dataType != null) {
_elvis_1 = _dataType;
} else {
Structure _msgResourceDataType = this.getMsgResourceDataType(msg);
_elvis_1 = _msgResourceDataType;
}
if (_elvis_1 != null) {
_elvis = _elvis_1;
} else {
Structure _containingResourceDataType = this.getContainingResourceDataType(msg);
_elvis = _containingResourceDataType;
}
return _elvis;
}
private Structure getMsgResourceDataType(final TypedMessage msg) {
ResourceDefinition _resourceType = msg.getResourceType();
Structure _resourceDataType = null;
if (_resourceType!=null) {
_resourceDataType=this.getResourceDataType(_resourceType);
}
return _resourceDataType;
}
private Structure getContainingResourceDataType(final TypedMessage msg) {
Structure _xifexpression = null;
boolean _isUseParentTypeReference = msg.isUseParentTypeReference();
if (_isUseParentTypeReference) {
EObject _eContainer = msg.eContainer();
_xifexpression = this.getResourceDataType(((Method) _eContainer).getContainingResourceDefinition());
}
return _xifexpression;
}
private Structure getResourceDataType(final ResourceDefinition resource) {
Structure _switchResult = null;
boolean _matched = false;
if (resource instanceof ServiceDataResource) {
_matched=true;
_switchResult = ((ServiceDataResource)resource).getDataType();
}
return _switchResult;
}
private Structure getStructure(final ResourceDefinition resource) {
Structure _switchResult = null;
boolean _matched = false;
if (resource instanceof ObjectResource) {
_matched=true;
_switchResult = ((ObjectResource)resource).getDataType();
}
if (!_matched) {
if (resource instanceof CollectionResource) {
_matched=true;
_switchResult = ((CollectionResource)resource).getDataType();
}
}
return _switchResult;
}
private String getSignature(final Method method) {
return this.getSignature(method, false);
}
private String getSignature(final Method method, final boolean includeResponse) {
return this.getSignature(method, includeResponse, false);
}
private String getSignature(final Method method, final boolean includeResponse, final boolean includeBodyAttr) {
String _xblockexpression = null;
{
final List params = CollectionLiterals.newArrayList();
List _elvis = null;
EList _uriParameters = method.getContainingResourceDefinition().getURI().getUriParameters();
if (_uriParameters != null) {
_elvis = _uriParameters;
} else {
_elvis = Collections.unmodifiableList(CollectionLiterals.newArrayList());
}
for (final URIParameter param : _elvis) {
StringConcatenation _builder = new StringConcatenation();
String _csharpType = this.typeHelper.getCsharpType(param.getType().getName());
_builder.append(_csharpType);
_builder.append(" ");
String _name = param.getName();
_builder.append(_name);
params.add(_builder.toString());
}
EList _parameters = method.getRequest().getParameters();
for (final MessageParameter param_1 : _parameters) {
StringConcatenation _builder_1 = new StringConcatenation();
String _csharpType_1 = this.typeHelper.getCsharpType(param_1.getType().getName());
_builder_1.append(_csharpType_1);
_builder_1.append(" ");
String _name_1 = param_1.getName();
_builder_1.append(_name_1);
params.add(_builder_1.toString());
}
String _requestType = this.getRequestType(method);
boolean _tripleNotEquals = (_requestType != null);
if (_tripleNotEquals) {
StringConcatenation _builder_2 = new StringConcatenation();
{
if (includeBodyAttr) {
_builder_2.append("[FromBody] ");
}
}
String _requestType_1 = this.getRequestType(method);
_builder_2.append(_requestType_1);
_builder_2.append(" requestPayload");
params.add(_builder_2.toString());
}
if ((includeResponse && (!this.isVoidReturn(method)))) {
StringConcatenation _builder_3 = new StringConcatenation();
String _valueType = this.getValueType(IterableExtensions.head(method.getResponses()));
_builder_3.append(_valueType);
_builder_3.append(" responsePayload");
params.add(_builder_3.toString());
}
_xblockexpression = IterableExtensions.join(params, ", ");
}
return _xblockexpression;
}
private String getArgs(final Method method) {
return this.getArgs(method, false);
}
private String getArgs(final Method method, final boolean includeResponse) {
String _xblockexpression = null;
{
final List args = CollectionLiterals.newArrayList();
List _elvis = null;
EList _uriParameters = method.getContainingResourceDefinition().getURI().getUriParameters();
if (_uriParameters != null) {
_elvis = _uriParameters;
} else {
_elvis = Collections.unmodifiableList(CollectionLiterals.newArrayList());
}
for (final URIParameter param : _elvis) {
args.add(param.getName());
}
EList _parameters = method.getRequest().getParameters();
for (final MessageParameter param_1 : _parameters) {
args.add(param_1.getName());
}
String _requestType = this.getRequestType(method);
boolean _tripleNotEquals = (_requestType != null);
if (_tripleNotEquals) {
args.add("requestPayload");
}
if ((includeResponse && (!this.isVoidReturn(method)))) {
args.add(this.snippetHelper.responseValue());
}
_xblockexpression = IterableExtensions.join(args, ", ");
}
return _xblockexpression;
}
private CharSequence getRoutingAttrs(final ResourceAPI api) {
try {
CharSequence _xblockexpression = null;
{
String _baseURI = api.getBaseURI();
String prefix = new URI(_baseURI).getPath();
boolean _startsWith = prefix.startsWith("/");
if (_startsWith) {
prefix = prefix.substring(1);
}
CharSequence _xifexpression = null;
boolean _isEmpty = prefix.isEmpty();
boolean _not = (!_isEmpty);
if (_not) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("[");
String _routePrefix = this.snippetHelper.routePrefix();
_builder.append(_routePrefix);
_builder.append("(\"");
_builder.append(prefix);
_builder.append("\")]");
_builder.newLineIfNotEmpty();
_xifexpression = _builder;
}
_xblockexpression = _xifexpression;
}
return _xblockexpression;
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
private List getRoutingAttrs(final Method method) {
List _xblockexpression = null;
{
final List attrs = CollectionLiterals.newArrayList();
String _switchResult = null;
HTTPMethods _httpMethod = method.getHttpMethod();
if (_httpMethod != null) {
switch (_httpMethod) {
case GET:
_switchResult = "HttpGet";
break;
case HEAD:
_switchResult = "HttpHead";
break;
case POST:
_switchResult = "HttpPost";
break;
case PUT:
_switchResult = "HttpPut";
break;
case OPTIONS:
_switchResult = "HttpOptions";
break;
case DELETE:
_switchResult = "HttpDelete";
break;
case CONNECT:
_switchResult = "HttpConnect";
break;
case PATCH:
_switchResult = "HttpPatch";
break;
case TRACE:
_switchResult = "HttpTrace";
break;
default:
break;
}
}
final String methodAttr = _switchResult;
if ((methodAttr != null)) {
attrs.add(methodAttr);
}
final String uri = IterableExtensions.join(method.getContainingResourceDefinition().getURI().getSegments(), "/");
StringConcatenation _builder = new StringConcatenation();
_builder.append("Route(\"");
_builder.append(uri);
_builder.append("\")");
attrs.add(_builder.toString());
IterableExtensions.join(attrs, ", ");
_xblockexpression = attrs;
}
return _xblockexpression;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy