package com.robotoworks.mechanoid.net.generator; import com.google.common.base.Objects; import com.google.inject.Inject; import com.robotoworks.mechanoid.net.generator.ImportHelper; import com.robotoworks.mechanoid.net.generator.JsonWriterStatementGenerator; import com.robotoworks.mechanoid.net.generator.ModelExtensions; import com.robotoworks.mechanoid.net.netModel.BlockType; import com.robotoworks.mechanoid.net.netModel.BodyBlock; import com.robotoworks.mechanoid.net.netModel.Client; import com.robotoworks.mechanoid.net.netModel.ComplexTypeDeclaration; import com.robotoworks.mechanoid.net.netModel.ComplexTypeLiteral; import com.robotoworks.mechanoid.net.netModel.EnumTypeDeclaration; import com.robotoworks.mechanoid.net.netModel.GenericListType; import com.robotoworks.mechanoid.net.netModel.Header; import com.robotoworks.mechanoid.net.netModel.HeaderBlock; import com.robotoworks.mechanoid.net.netModel.HttpMethod; import com.robotoworks.mechanoid.net.netModel.IntrinsicType; import com.robotoworks.mechanoid.net.netModel.Literal; import com.robotoworks.mechanoid.net.netModel.Member; import com.robotoworks.mechanoid.net.netModel.Model; import com.robotoworks.mechanoid.net.netModel.ParamsBlock; import com.robotoworks.mechanoid.net.netModel.Path; import com.robotoworks.mechanoid.net.netModel.SimpleMember; import com.robotoworks.mechanoid.net.netModel.SimpleMemberAssignment; import com.robotoworks.mechanoid.net.netModel.SkipMember; import com.robotoworks.mechanoid.net.netModel.StringType; import com.robotoworks.mechanoid.net.netModel.Type; import com.robotoworks.mechanoid.net.netModel.TypedMember; import com.robotoworks.mechanoid.net.netModel.UserType; import com.robotoworks.mechanoid.net.netModel.UserTypeDeclaration; import com.robotoworks.mechanoid.text.Strings; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.eclipse.emf.common.util.EList; import org.eclipse.xtend2.lib.StringConcatenation; import org.eclipse.xtext.serializer.ISerializer; import org.eclipse.xtext.xbase.lib.Conversions; import org.eclipse.xtext.xbase.lib.Functions.Function1; import org.eclipse.xtext.xbase.lib.IterableExtensions; @SuppressWarnings("all") public class RequestGenerator { @Inject private ImportHelper imports; @Inject private JsonWriterStatementGenerator jsonWriterGenerator; @Inject private ISerializer serializer; public CharSequence generate(final HttpMethod method, final Model module, final Client client) { CharSequence _xblockexpression = null; { this.jsonWriterGenerator.setImports(this.imports); this.jsonWriterGenerator.setWriterIdentifier("writer"); _xblockexpression = this.doGenerate(method, module, client); } return _xblockexpression; } public CharSequence doGenerate(final HttpMethod method, final Model module, final Client client) { StringConcatenation _builder = new StringConcatenation(); _builder.append("package "); String _packageName = module.getPackageName(); _builder.append(_packageName, ""); _builder.append(";"); _builder.newLineIfNotEmpty(); _builder.newLine(); CharSequence classDecl = this.generateRequestClass(method, module, client); _builder.newLineIfNotEmpty(); _builder.newLine(); _builder.append("import android.net.Uri;"); _builder.newLine(); { boolean _hasBody = ModelExtensions.hasBody(method); if (_hasBody) { _builder.append("import com.robotoworks.mechanoid.net.JsonEntityWriterProvider;"); _builder.newLine(); _builder.append("import com.robotoworks.mechanoid.net.EntityEnclosedServiceRequest;"); _builder.newLine(); } else { _builder.append("import com.robotoworks.mechanoid.net.ServiceRequest;"); _builder.newLine(); } } StringConcatenation _printAndClear = this.imports.printAndClear(); _builder.append(_printAndClear, ""); _builder.newLineIfNotEmpty(); _builder.newLine(); _builder.append(classDecl, ""); _builder.newLineIfNotEmpty(); return _builder; } public CharSequence generateRequestClass(final HttpMethod method, final Model module, final Client client) { StringConcatenation _builder = new StringConcatenation(); _builder.append("public class "); String _name = method.getName(); String _pascalize = Strings.pascalize(_name); _builder.append(_pascalize, ""); _builder.append("Request extends "); { boolean _hasBody = ModelExtensions.hasBody(method); if (_hasBody) { _builder.append("EntityEnclosed"); } } _builder.append("ServiceRequest {"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); _builder.append("private static final String PATH = \""); String _pathAsFormatString = ModelExtensions.getPathAsFormatString(method, this.serializer); _builder.append(_pathAsFormatString, "\t"); _builder.append("\";"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.newLine(); { Path _path = method.getPath(); EList<SimpleMemberAssignment> _params = null; if (_path!=null) { _params=_path.getParams(); } int _size = 0; if (_params!=null) { _size=_params.size(); } boolean _greaterThan = (_size > 0); if (_greaterThan) { { Path _path_1 = method.getPath(); EList<SimpleMemberAssignment> _params_1 = _path_1.getParams(); for(final SimpleMemberAssignment slug : _params_1) { _builder.append("\t"); _builder.append("private final "); SimpleMember _member = slug.getMember(); IntrinsicType _type = _member.getType(); String _signature = ModelExtensions.signature(_type); _builder.append(_signature, "\t"); _builder.append(" "); SimpleMember _member_1 = slug.getMember(); String _name_1 = _member_1.getName(); String _camelize = Strings.camelize(_name_1); _builder.append(_camelize, "\t"); _builder.append("Segment;"); _builder.newLineIfNotEmpty(); } } _builder.append("\t"); _builder.newLine(); } } _builder.append("\t"); ParamsBlock methodParams = ModelExtensions.getParamsBlock(method); _builder.newLineIfNotEmpty(); _builder.append("\t"); ParamsBlock clientParams = ModelExtensions.getParamsBlock(client); _builder.newLineIfNotEmpty(); { boolean _notEquals = (!Objects.equal(methodParams, null)); if (_notEquals) { { EList<SimpleMemberAssignment> _params_2 = methodParams.getParams(); for(final SimpleMemberAssignment param : _params_2) { _builder.append("\t"); _builder.append("private "); SimpleMember _member_2 = param.getMember(); IntrinsicType _type_1 = _member_2.getType(); String _signature_1 = ModelExtensions.signature(_type_1); _builder.append(_signature_1, "\t"); _builder.append(" "); SimpleMember _member_3 = param.getMember(); String _name_2 = _member_3.getName(); String _camelize_1 = Strings.camelize(_name_2); _builder.append(_camelize_1, "\t"); _builder.append("Param"); { Literal _defaultValue = param.getDefaultValue(); boolean _notEquals_1 = (!Objects.equal(_defaultValue, null)); if (_notEquals_1) { _builder.append(" = "); Literal _defaultValue_1 = param.getDefaultValue(); String _convertToJavaLiteral = ModelExtensions.convertToJavaLiteral(_defaultValue_1); _builder.append(_convertToJavaLiteral, "\t"); } } _builder.append(";"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("private boolean "); SimpleMember _member_4 = param.getMember(); String _name_3 = _member_4.getName(); String _camelize_2 = Strings.camelize(_name_3); _builder.append(_camelize_2, "\t"); _builder.append("ParamSet"); { Literal _defaultValue_2 = param.getDefaultValue(); boolean _notEquals_2 = (!Objects.equal(_defaultValue_2, null)); if (_notEquals_2) { _builder.append(" = true"); } } _builder.append(";"); _builder.newLineIfNotEmpty(); } } _builder.append("\t"); _builder.append("\t"); _builder.newLine(); } } { boolean _notEquals_3 = (!Objects.equal(clientParams, null)); if (_notEquals_3) { { EList<SimpleMemberAssignment> _params_3 = clientParams.getParams(); for(final SimpleMemberAssignment param_1 : _params_3) { _builder.append("\t"); _builder.append("private "); SimpleMember _member_5 = param_1.getMember(); IntrinsicType _type_2 = _member_5.getType(); String _signature_2 = ModelExtensions.signature(_type_2); _builder.append(_signature_2, "\t"); _builder.append(" "); SimpleMember _member_6 = param_1.getMember(); String _name_4 = _member_6.getName(); String _camelize_3 = Strings.camelize(_name_4); _builder.append(_camelize_3, "\t"); _builder.append("Param"); { Literal _defaultValue_3 = param_1.getDefaultValue(); boolean _notEquals_4 = (!Objects.equal(_defaultValue_3, null)); if (_notEquals_4) { _builder.append(" = "); Literal _defaultValue_4 = param_1.getDefaultValue(); String _convertToJavaLiteral_1 = ModelExtensions.convertToJavaLiteral(_defaultValue_4); _builder.append(_convertToJavaLiteral_1, "\t"); } } _builder.append(";"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("private boolean "); SimpleMember _member_7 = param_1.getMember(); String _name_5 = _member_7.getName(); String _camelize_4 = Strings.camelize(_name_5); _builder.append(_camelize_4, "\t"); _builder.append("ParamSet"); { Literal _defaultValue_5 = param_1.getDefaultValue(); boolean _notEquals_5 = (!Objects.equal(_defaultValue_5, null)); if (_notEquals_5) { _builder.append(" = true"); } } _builder.append(";"); _builder.newLineIfNotEmpty(); } } _builder.append("\t"); _builder.append("\t"); _builder.newLine(); } } { boolean _hasBody_1 = ModelExtensions.hasBody(method); if (_hasBody_1) { _builder.append("\t"); BodyBlock _body = ModelExtensions.getBody(method); BlockType _type_3 = _body.getType(); CharSequence _generateFieldForType = this.generateFieldForType(_type_3); _builder.append(_generateFieldForType, "\t"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); BodyBlock _body_1 = ModelExtensions.getBody(method); BlockType _type_4 = _body_1.getType(); CharSequence _generateGetterSetterForType = this.generateGetterSetterForType(_type_4); _builder.append(_generateGetterSetterForType, "\t"); _builder.newLineIfNotEmpty(); } } { boolean _notEquals_6 = (!Objects.equal(methodParams, null)); if (_notEquals_6) { { EList<SimpleMemberAssignment> _params_4 = methodParams.getParams(); for(final SimpleMemberAssignment param_2 : _params_4) { _builder.append("\t"); _builder.append("public "); String _name_6 = method.getName(); String _pascalize_1 = Strings.pascalize(_name_6); _builder.append(_pascalize_1, "\t"); _builder.append("Request set"); SimpleMember _member_8 = param_2.getMember(); String _name_7 = _member_8.getName(); String _pascalize_2 = Strings.pascalize(_name_7); _builder.append(_pascalize_2, "\t"); _builder.append("Param("); SimpleMember _member_9 = param_2.getMember(); IntrinsicType _type_5 = _member_9.getType(); String _signature_3 = ModelExtensions.signature(_type_5); _builder.append(_signature_3, "\t"); _builder.append(" value) {"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("\t"); _builder.append("this."); SimpleMember _member_10 = param_2.getMember(); String _name_8 = _member_10.getName(); String _camelize_5 = Strings.camelize(_name_8); _builder.append(_camelize_5, "\t\t"); _builder.append("Param = value;"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("\t"); _builder.append("this."); SimpleMember _member_11 = param_2.getMember(); String _name_9 = _member_11.getName(); String _camelize_6 = Strings.camelize(_name_9); _builder.append(_camelize_6, "\t\t"); _builder.append("ParamSet = true;"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("\t"); _builder.append("return this;"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); _builder.append("public boolean is"); SimpleMember _member_12 = param_2.getMember(); String _name_10 = _member_12.getName(); String _pascalize_3 = Strings.pascalize(_name_10); _builder.append(_pascalize_3, "\t"); _builder.append("ParamSet() {"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("\t"); _builder.append("return "); SimpleMember _member_13 = param_2.getMember(); String _name_11 = _member_13.getName(); String _camelize_7 = Strings.camelize(_name_11); _builder.append(_camelize_7, "\t\t"); _builder.append("ParamSet;"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); } } _builder.append("\t"); _builder.append("\t"); _builder.newLine(); } } { boolean _notEquals_7 = (!Objects.equal(clientParams, null)); if (_notEquals_7) { { EList<SimpleMemberAssignment> _params_5 = clientParams.getParams(); for(final SimpleMemberAssignment param_3 : _params_5) { _builder.append("\t"); _builder.append("public "); String _name_12 = method.getName(); String _pascalize_4 = Strings.pascalize(_name_12); _builder.append(_pascalize_4, "\t"); _builder.append("Request set"); SimpleMember _member_14 = param_3.getMember(); String _name_13 = _member_14.getName(); String _pascalize_5 = Strings.pascalize(_name_13); _builder.append(_pascalize_5, "\t"); _builder.append("Param("); SimpleMember _member_15 = param_3.getMember(); IntrinsicType _type_6 = _member_15.getType(); String _signature_4 = ModelExtensions.signature(_type_6); _builder.append(_signature_4, "\t"); _builder.append(" value) {"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("\t"); _builder.append("this."); SimpleMember _member_16 = param_3.getMember(); String _name_14 = _member_16.getName(); String _camelize_8 = Strings.camelize(_name_14); _builder.append(_camelize_8, "\t\t"); _builder.append("Param = value;"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("\t"); _builder.append("this."); SimpleMember _member_17 = param_3.getMember(); String _name_15 = _member_17.getName(); String _camelize_9 = Strings.camelize(_name_15); _builder.append(_camelize_9, "\t\t"); _builder.append("ParamSet = true;"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("\t"); _builder.append("return this;"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); _builder.append("public boolean is"); SimpleMember _member_18 = param_3.getMember(); String _name_16 = _member_18.getName(); String _pascalize_6 = Strings.pascalize(_name_16); _builder.append(_pascalize_6, "\t"); _builder.append("ParamSet() {"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("\t"); _builder.append("return "); SimpleMember _member_19 = param_3.getMember(); String _name_17 = _member_19.getName(); String _camelize_10 = Strings.camelize(_name_17); _builder.append(_camelize_10, "\t\t"); _builder.append("ParamSet;"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); } } _builder.append("\t"); _builder.append("\t\t"); _builder.newLine(); } } _builder.append("\t"); _builder.append("public "); String _name_18 = method.getName(); String _pascalize_7 = Strings.pascalize(_name_18); _builder.append(_pascalize_7, "\t"); _builder.append("Request("); Path _path_2 = method.getPath(); BodyBlock _body_2 = ModelExtensions.getBody(method); String _generateRequestConstructorArgs = this.generateRequestConstructorArgs(_path_2, _body_2); _builder.append(_generateRequestConstructorArgs, "\t"); _builder.append("){"); _builder.newLineIfNotEmpty(); _builder.append("\t\t"); HeaderBlock methodHeaders = ModelExtensions.getHeaderBlock(method); _builder.newLineIfNotEmpty(); { boolean _notEquals_8 = (!Objects.equal(methodHeaders, null)); if (_notEquals_8) { { EList<Header> _headers = methodHeaders.getHeaders(); for(final Header header : _headers) { _builder.append("\t\t"); _builder.append("setHeader(\""); String _name_19 = header.getName(); _builder.append(_name_19, "\t\t"); _builder.append("\",\""); String _value = header.getValue(); _builder.append(_value, "\t\t"); _builder.append("\");"); _builder.newLineIfNotEmpty(); } } _builder.append("\t\t"); _builder.newLine(); } } { Path _path_3 = method.getPath(); EList<SimpleMemberAssignment> _params_6 = null; if (_path_3!=null) { _params_6=_path_3.getParams(); } int _size_1 = 0; if (_params_6!=null) { _size_1=_params_6.size(); } boolean _greaterThan_1 = (_size_1 > 0); if (_greaterThan_1) { { Path _path_4 = method.getPath(); EList<SimpleMemberAssignment> _params_7 = _path_4.getParams(); for(final SimpleMemberAssignment slug_1 : _params_7) { _builder.append("\t\t"); _builder.append("this."); SimpleMember _member_20 = slug_1.getMember(); String _name_20 = _member_20.getName(); String _camelize_11 = Strings.camelize(_name_20); _builder.append(_camelize_11, "\t\t"); _builder.append("Segment = "); SimpleMember _member_21 = slug_1.getMember(); String _name_21 = _member_21.getName(); String _camelize_12 = Strings.camelize(_name_21); _builder.append(_camelize_12, "\t\t"); _builder.append("Segment;"); _builder.newLineIfNotEmpty(); } } } } { boolean _hasBody_2 = ModelExtensions.hasBody(method); if (_hasBody_2) { _builder.append("\t\t"); BodyBlock _body_3 = ModelExtensions.getBody(method); BlockType _type_7 = _body_3.getType(); CharSequence _generateConstructorAssignmentForType = this.generateConstructorAssignmentForType(_type_7); _builder.append(_generateConstructorAssignmentForType, "\t\t"); _builder.newLineIfNotEmpty(); } } _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); { boolean _hasBody_3 = ModelExtensions.hasBody(method); if (_hasBody_3) { _builder.append("\t"); this.imports.addImport("com.robotoworks.mechanoid.util.Closeables"); _builder.newLineIfNotEmpty(); _builder.append("\t"); this.imports.addImport("java.io.OutputStream"); _builder.newLineIfNotEmpty(); _builder.append("\t"); this.imports.addImport("java.io.IOException"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("@Override"); _builder.newLine(); _builder.append("\t"); _builder.append("public void writeBody(JsonEntityWriterProvider provider, OutputStream stream) throws IOException {"); _builder.newLine(); _builder.append("\t"); _builder.append("\t"); BodyBlock _body_4 = ModelExtensions.getBody(method); BodyBlock _body_5 = ModelExtensions.getBody(method); BlockType _type_8 = _body_5.getType(); CharSequence _generateSerializationStatementForType = this.generateSerializationStatementForType(method, _body_4, _type_8); _builder.append(_generateSerializationStatementForType, "\t\t"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.newLine(); } } _builder.append("\t"); _builder.append("@Override"); _builder.newLine(); _builder.append("\t"); _builder.append("public String createUrl(String baseUrl){"); _builder.newLine(); { Path _path_5 = method.getPath(); EList<SimpleMemberAssignment> _params_8 = null; if (_path_5!=null) { _params_8=_path_5.getParams(); } int _size_2 = 0; if (_params_8!=null) { _size_2=_params_8.size(); } boolean _greaterThan_2 = (_size_2 > 0); if (_greaterThan_2) { _builder.append("\t\t"); _builder.append("Uri.Builder uriBuilder = Uri.parse(baseUrl + String.format(PATH, "); { Path _path_6 = method.getPath(); EList<SimpleMemberAssignment> _params_9 = _path_6.getParams(); boolean _hasElements = false; for(final SimpleMemberAssignment slug_2 : _params_9) { if (!_hasElements) { _hasElements = true; } else { _builder.appendImmediate(", ", "\t\t"); } SimpleMember _member_22 = slug_2.getMember(); String _name_22 = _member_22.getName(); String _camelize_13 = Strings.camelize(_name_22); _builder.append(_camelize_13, "\t\t"); _builder.append("Segment"); } } _builder.append(")).buildUpon();"); _builder.newLineIfNotEmpty(); } else { _builder.append("\t\t"); _builder.append("Uri.Builder uriBuilder = Uri.parse(baseUrl + PATH).buildUpon();"); _builder.newLine(); } } _builder.append("\t\t\t"); _builder.newLine(); { boolean _notEquals_9 = (!Objects.equal(methodParams, null)); if (_notEquals_9) { { EList<SimpleMemberAssignment> _params_10 = methodParams.getParams(); for(final SimpleMemberAssignment param_4 : _params_10) { _builder.append("\t\t"); _builder.append("if("); SimpleMember _member_23 = param_4.getMember(); String _name_23 = _member_23.getName(); String _camelize_14 = Strings.camelize(_name_23); _builder.append(_camelize_14, "\t\t"); _builder.append("ParamSet){"); _builder.newLineIfNotEmpty(); { SimpleMember _member_24 = param_4.getMember(); IntrinsicType _type_9 = _member_24.getType(); if ((_type_9 instanceof StringType)) { _builder.append("\t\t"); _builder.append("\t"); _builder.append("uriBuilder.appendQueryParameter(\""); SimpleMember _member_25 = param_4.getMember(); String _name_24 = _member_25.getName(); _builder.append(_name_24, "\t\t\t"); _builder.append("\", "); SimpleMember _member_26 = param_4.getMember(); String _name_25 = _member_26.getName(); String _camelize_15 = Strings.camelize(_name_25); _builder.append(_camelize_15, "\t\t\t"); _builder.append("Param);"); _builder.newLineIfNotEmpty(); } else { _builder.append("\t\t"); _builder.append("\t"); _builder.append("uriBuilder.appendQueryParameter(\""); SimpleMember _member_27 = param_4.getMember(); String _name_26 = _member_27.getName(); _builder.append(_name_26, "\t\t\t"); _builder.append("\", String.valueOf("); SimpleMember _member_28 = param_4.getMember(); String _name_27 = _member_28.getName(); String _camelize_16 = Strings.camelize(_name_27); _builder.append(_camelize_16, "\t\t\t"); _builder.append("Param));"); _builder.newLineIfNotEmpty(); } } _builder.append("\t\t"); _builder.append("}"); _builder.newLine(); } } _builder.append("\t\t"); _builder.newLine(); } } { boolean _notEquals_10 = (!Objects.equal(clientParams, null)); if (_notEquals_10) { { EList<SimpleMemberAssignment> _params_11 = clientParams.getParams(); for(final SimpleMemberAssignment param_5 : _params_11) { _builder.append("\t\t"); _builder.append("if("); SimpleMember _member_29 = param_5.getMember(); String _name_28 = _member_29.getName(); String _camelize_17 = Strings.camelize(_name_28); _builder.append(_camelize_17, "\t\t"); _builder.append("ParamSet){"); _builder.newLineIfNotEmpty(); { SimpleMember _member_30 = param_5.getMember(); IntrinsicType _type_10 = _member_30.getType(); if ((_type_10 instanceof StringType)) { _builder.append("\t\t"); _builder.append("\t"); _builder.append("uriBuilder.appendQueryParameter(\""); SimpleMember _member_31 = param_5.getMember(); String _name_29 = _member_31.getName(); _builder.append(_name_29, "\t\t\t"); _builder.append("\", "); SimpleMember _member_32 = param_5.getMember(); String _name_30 = _member_32.getName(); String _camelize_18 = Strings.camelize(_name_30); _builder.append(_camelize_18, "\t\t\t"); _builder.append("Param);"); _builder.newLineIfNotEmpty(); } else { _builder.append("\t\t"); _builder.append("\t"); _builder.append("uriBuilder.appendQueryParameter(\""); SimpleMember _member_33 = param_5.getMember(); String _name_31 = _member_33.getName(); _builder.append(_name_31, "\t\t\t"); _builder.append("\", String.valueOf("); SimpleMember _member_34 = param_5.getMember(); String _name_32 = _member_34.getName(); String _camelize_19 = Strings.camelize(_name_32); _builder.append(_camelize_19, "\t\t\t"); _builder.append("Param));"); _builder.newLineIfNotEmpty(); } } _builder.append("\t\t"); _builder.append("}"); _builder.newLine(); } } _builder.append("\t\t"); _builder.newLine(); } } _builder.append("\t\t"); _builder.append("return uriBuilder.toString();\t\t\t"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("}"); _builder.newLine(); return _builder; } public CharSequence generateSerializationStatementHeader(final boolean withReader) { StringConcatenation _builder = new StringConcatenation(); { if (withReader) { this.imports.addImport("com.robotoworks.mechanoid.internal.util.JsonWriter"); _builder.newLineIfNotEmpty(); this.imports.addImport("java.io.OutputStreamWriter"); _builder.newLineIfNotEmpty(); this.imports.addImport("java.nio.charset.Charset"); _builder.newLineIfNotEmpty(); _builder.append("JsonWriter writer = null;"); _builder.newLine(); } } _builder.append("try {"); _builder.newLine(); _builder.append("\t"); _builder.append("if(stream != null) {"); _builder.newLine(); { if (withReader) { _builder.append("\t\t"); _builder.append("writer = new JsonWriter(new OutputStreamWriter(stream, Charset.defaultCharset()));"); _builder.newLine(); } } _builder.append("\t\t"); _builder.newLine(); return _builder; } public CharSequence generateSerializationStatementFooter(final boolean withReader) { StringConcatenation _builder = new StringConcatenation(); _builder.append("\t\t"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("} finally {"); _builder.newLine(); { if (withReader) { _builder.append("\t"); _builder.append("Closeables.closeSilently(writer);"); _builder.newLine(); } else { _builder.append("\t"); _builder.append("Closeables.closeSilently(stream);"); _builder.newLine(); } } _builder.append("}"); _builder.newLine(); return _builder; } protected CharSequence _generateFieldForType(final ComplexTypeLiteral type) { StringConcatenation _builder = new StringConcatenation(); { EList<Member> _members = type.getMembers(); for(final Member member : _members) { CharSequence _generateFieldForMember = this.generateFieldForMember(member); _builder.append(_generateFieldForMember, ""); _builder.newLineIfNotEmpty(); } } return _builder; } protected CharSequence _generateFieldForType(final IntrinsicType type) { StringConcatenation _builder = new StringConcatenation(); _builder.append("private final "); String _signature = ModelExtensions.signature(type); _builder.append(_signature, ""); _builder.append(" value;"); _builder.newLineIfNotEmpty(); return _builder; } protected CharSequence _generateFieldForType(final GenericListType type) { StringConcatenation _builder = new StringConcatenation(); { Type _elementType = type.getElementType(); if ((_elementType instanceof IntrinsicType)) { _builder.append("private final "); String _signature = ModelExtensions.signature(type); _builder.append(_signature, ""); _builder.append(" values;"); _builder.newLineIfNotEmpty(); } else { _builder.append("private final "); String _signature_1 = ModelExtensions.signature(type); _builder.append(_signature_1, ""); _builder.append(" "); String _innerSignature = ModelExtensions.innerSignature(type); String _camelize = Strings.camelize(_innerSignature); String _pluralize = Strings.pluralize(_camelize); _builder.append(_pluralize, ""); _builder.append(";"); _builder.newLineIfNotEmpty(); } } return _builder; } protected CharSequence _generateFieldForType(final UserType type) { StringConcatenation _builder = new StringConcatenation(); _builder.append("private final "); String _signature = ModelExtensions.signature(type); _builder.append(_signature, ""); _builder.append(" "); String _signature_1 = ModelExtensions.signature(type); String _camelize = Strings.camelize(_signature_1); _builder.append(_camelize, ""); _builder.append(";"); _builder.newLineIfNotEmpty(); return _builder; } protected CharSequence _generateFieldForMember(final TypedMember member) { StringConcatenation _builder = new StringConcatenation(); _builder.append("private final "); Type _type = member.getType(); String _signature = ModelExtensions.signature(_type); _builder.append(_signature, ""); _builder.append(" "); String _identifier = ModelExtensions.toIdentifier(member); _builder.append(_identifier, ""); _builder.append(";"); _builder.newLineIfNotEmpty(); return _builder; } protected CharSequence _generateFieldForMember(final SkipMember member) { StringConcatenation _builder = new StringConcatenation(); ComplexTypeLiteral _literal = member.getLiteral(); Object _generateFieldForType = this.generateFieldForType(_literal); _builder.append(_generateFieldForType, ""); _builder.newLineIfNotEmpty(); return _builder; } protected CharSequence _generateGetterSetterForType(final ComplexTypeLiteral type) { StringConcatenation _builder = new StringConcatenation(); { EList<Member> _members = type.getMembers(); for(final Member member : _members) { CharSequence _generateGetterSetterForMember = this.generateGetterSetterForMember(member); _builder.append(_generateGetterSetterForMember, ""); _builder.newLineIfNotEmpty(); } } return _builder; } protected CharSequence _generateGetterSetterForType(final IntrinsicType type) { StringConcatenation _builder = new StringConcatenation(); _builder.append("public "); String _signature = ModelExtensions.signature(type); _builder.append(_signature, ""); _builder.append(" getValue() {"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("return value;"); _builder.newLine(); _builder.append("}"); _builder.newLine(); return _builder; } protected CharSequence _generateGetterSetterForType(final GenericListType type) { StringConcatenation _builder = new StringConcatenation(); { Type _elementType = type.getElementType(); if ((_elementType instanceof IntrinsicType)) { _builder.append("public "); String _signature = ModelExtensions.signature(type); _builder.append(_signature, ""); _builder.append(" getValues() {"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("return values;"); _builder.newLine(); _builder.append("}"); _builder.newLine(); } else { _builder.append("public "); String _signature_1 = ModelExtensions.signature(type); _builder.append(_signature_1, ""); _builder.append(" get"); String _innerSignature = ModelExtensions.innerSignature(type); String _pascalize = Strings.pascalize(_innerSignature); String _pluralize = Strings.pluralize(_pascalize); _builder.append(_pluralize, ""); _builder.append("() {"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("return "); String _innerSignature_1 = ModelExtensions.innerSignature(type); String _camelize = Strings.camelize(_innerSignature_1); String _pluralize_1 = Strings.pluralize(_camelize); _builder.append(_pluralize_1, "\t"); _builder.append(";"); _builder.newLineIfNotEmpty(); _builder.append("}"); _builder.newLine(); } } return _builder; } protected CharSequence _generateGetterSetterForType(final UserType type) { StringConcatenation _builder = new StringConcatenation(); _builder.append("public "); String _signature = ModelExtensions.signature(type); _builder.append(_signature, ""); _builder.append(" get"); String _signature_1 = ModelExtensions.signature(type); String _pascalize = Strings.pascalize(_signature_1); _builder.append(_pascalize, ""); _builder.append("() {"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("return "); String _signature_2 = ModelExtensions.signature(type); String _camelize = Strings.camelize(_signature_2); _builder.append(_camelize, "\t"); _builder.append(";"); _builder.newLineIfNotEmpty(); _builder.append("}"); _builder.newLine(); return _builder; } protected CharSequence _generateGetterSetterForMember(final TypedMember member) { StringConcatenation _builder = new StringConcatenation(); _builder.append("public "); Type _type = member.getType(); String _signature = ModelExtensions.signature(_type); _builder.append(_signature, ""); _builder.append(" "); String _getMethodName = ModelExtensions.toGetMethodName(member); _builder.append(_getMethodName, ""); _builder.append("() {"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("return "); String _identifier = ModelExtensions.toIdentifier(member); _builder.append(_identifier, "\t"); _builder.append(";"); _builder.newLineIfNotEmpty(); _builder.append("}"); _builder.newLine(); return _builder; } protected CharSequence _generateGetterSetterForMember(final SkipMember member) { StringConcatenation _builder = new StringConcatenation(); ComplexTypeLiteral _literal = member.getLiteral(); Object _generateGetterSetterForType = this.generateGetterSetterForType(_literal); _builder.append(_generateGetterSetterForType, ""); _builder.newLineIfNotEmpty(); return _builder; } protected CharSequence _generateConstructorAssignmentForType(final ComplexTypeLiteral type) { StringConcatenation _builder = new StringConcatenation(); { EList<Member> _members = type.getMembers(); for(final Member member : _members) { CharSequence _generateConstructorAssignmentForMember = this.generateConstructorAssignmentForMember(member); _builder.append(_generateConstructorAssignmentForMember, ""); _builder.newLineIfNotEmpty(); } } return _builder; } protected CharSequence _generateConstructorAssignmentForType(final IntrinsicType type) { StringConcatenation _builder = new StringConcatenation(); _builder.append("this.value = value;"); _builder.newLine(); return _builder; } protected CharSequence _generateConstructorAssignmentForType(final GenericListType type) { StringConcatenation _builder = new StringConcatenation(); { Type _elementType = type.getElementType(); if ((_elementType instanceof IntrinsicType)) { _builder.append("this.values = values;"); _builder.newLine(); } else { _builder.append("this."); String _innerSignature = ModelExtensions.innerSignature(type); String _camelize = Strings.camelize(_innerSignature); String _pluralize = Strings.pluralize(_camelize); _builder.append(_pluralize, ""); _builder.append(" = "); String _innerSignature_1 = ModelExtensions.innerSignature(type); String _camelize_1 = Strings.camelize(_innerSignature_1); String _pluralize_1 = Strings.pluralize(_camelize_1); _builder.append(_pluralize_1, ""); _builder.append(";"); _builder.newLineIfNotEmpty(); } } return _builder; } protected CharSequence _generateConstructorAssignmentForType(final UserType type) { StringConcatenation _builder = new StringConcatenation(); _builder.append("this."); String _signature = ModelExtensions.signature(type); String _camelize = Strings.camelize(_signature); _builder.append(_camelize, ""); _builder.append(" = "); String _signature_1 = ModelExtensions.signature(type); String _camelize_1 = Strings.camelize(_signature_1); _builder.append(_camelize_1, ""); _builder.append(";"); _builder.newLineIfNotEmpty(); return _builder; } protected CharSequence _generateConstructorAssignmentForMember(final TypedMember member) { StringConcatenation _builder = new StringConcatenation(); _builder.append("this."); String _identifier = ModelExtensions.toIdentifier(member); _builder.append(_identifier, ""); _builder.append(" = "); String _identifier_1 = ModelExtensions.toIdentifier(member); _builder.append(_identifier_1, ""); _builder.append(";"); _builder.newLineIfNotEmpty(); return _builder; } protected CharSequence _generateConstructorAssignmentForMember(final SkipMember member) { StringConcatenation _builder = new StringConcatenation(); ComplexTypeLiteral _literal = member.getLiteral(); Object _generateConstructorAssignmentForType = this.generateConstructorAssignmentForType(_literal); _builder.append(_generateConstructorAssignmentForType, ""); _builder.newLineIfNotEmpty(); return _builder; } protected CharSequence _generateSerializationStatementForType(final HttpMethod method, final BodyBlock body, final IntrinsicType type) { StringConcatenation _builder = new StringConcatenation(); this.imports.addImport("java.io.PrintStream"); _builder.newLineIfNotEmpty(); CharSequence _generateSerializationStatementHeader = this.generateSerializationStatementHeader(false); _builder.append(_generateSerializationStatementHeader, ""); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("PrintStream ps = new PrintStream(stream);"); _builder.newLine(); _builder.append("\t"); _builder.append("ps.print(value);"); _builder.newLine(); CharSequence _generateSerializationStatementFooter = this.generateSerializationStatementFooter(false); _builder.append(_generateSerializationStatementFooter, ""); _builder.newLineIfNotEmpty(); return _builder; } protected CharSequence _generateSerializationStatementForType(final HttpMethod method, final BodyBlock body, final ComplexTypeLiteral type) { StringConcatenation _builder = new StringConcatenation(); CharSequence _generateSerializationStatementHeader = this.generateSerializationStatementHeader(true); _builder.append(_generateSerializationStatementHeader, ""); _builder.newLineIfNotEmpty(); _builder.newLine(); _builder.append("\t"); String _name = method.getName(); String _pascalize = Strings.pascalize(_name); _builder.append(_pascalize, "\t"); _builder.append("Request subject = this;"); _builder.newLineIfNotEmpty(); _builder.newLine(); _builder.append("\t"); CharSequence _genWriteComplexTypeLiteral = this.jsonWriterGenerator.genWriteComplexTypeLiteral(type); _builder.append(_genWriteComplexTypeLiteral, "\t"); _builder.newLineIfNotEmpty(); _builder.newLine(); CharSequence _generateSerializationStatementFooter = this.generateSerializationStatementFooter(true); _builder.append(_generateSerializationStatementFooter, ""); _builder.newLineIfNotEmpty(); return _builder; } protected CharSequence _generateSerializationStatementForType(final HttpMethod method, final BodyBlock body, final UserType type) { UserTypeDeclaration _declaration = type.getDeclaration(); return this.generateSerializationStatementForUserType(body, type, _declaration); } protected CharSequence _generateSerializationStatementForUserType(final BodyBlock body, final UserType type, final ComplexTypeDeclaration declaration) { StringConcatenation _builder = new StringConcatenation(); CharSequence _generateSerializationStatementHeader = this.generateSerializationStatementHeader(true); _builder.append(_generateSerializationStatementHeader, ""); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("provider.get("); String _signature = ModelExtensions.signature(type); _builder.append(_signature, "\t"); _builder.append(".class).write(writer, "); String _signature_1 = ModelExtensions.signature(type); String _camelize = Strings.camelize(_signature_1); _builder.append(_camelize, "\t"); _builder.append(");"); _builder.newLineIfNotEmpty(); CharSequence _generateSerializationStatementFooter = this.generateSerializationStatementFooter(true); _builder.append(_generateSerializationStatementFooter, ""); _builder.newLineIfNotEmpty(); return _builder; } protected CharSequence _generateSerializationStatementForUserType(final BodyBlock body, final UserType type, final EnumTypeDeclaration declaration) { StringConcatenation _builder = new StringConcatenation(); this.imports.addImport("java.io.PrintStream"); _builder.newLineIfNotEmpty(); CharSequence _generateSerializationStatementHeader = this.generateSerializationStatementHeader(false); _builder.append(_generateSerializationStatementHeader, ""); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("PrintStream ps = new PrintStream(stream);"); _builder.newLine(); _builder.append("\t"); _builder.append("ps.print("); String _signature = ModelExtensions.signature(type); String _camelize = Strings.camelize(_signature); _builder.append(_camelize, "\t"); _builder.append(".getValue());"); _builder.newLineIfNotEmpty(); CharSequence _generateSerializationStatementFooter = this.generateSerializationStatementFooter(false); _builder.append(_generateSerializationStatementFooter, ""); _builder.newLineIfNotEmpty(); return _builder; } protected CharSequence _generateSerializationStatementForType(final HttpMethod method, final BodyBlock body, final GenericListType type) { Type _elementType = type.getElementType(); return this.generateSerializationStatementForGenericListType(body, type, _elementType); } protected CharSequence _generateSerializationStatementForGenericListType(final BodyBlock body, final GenericListType type, final IntrinsicType elementType) { StringConcatenation _builder = new StringConcatenation(); this.imports.addImport("com.robotoworks.mechanoid.internal.util.JsonUtil"); _builder.newLineIfNotEmpty(); this.imports.addImport("java.util.List"); _builder.newLineIfNotEmpty(); CharSequence _generateSerializationStatementHeader = this.generateSerializationStatementHeader(true); _builder.append(_generateSerializationStatementHeader, ""); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("JsonUtil.write"); String _boxedTypeSignature = ModelExtensions.getBoxedTypeSignature(elementType); _builder.append(_boxedTypeSignature, "\t"); _builder.append("List(writer, values);"); _builder.newLineIfNotEmpty(); CharSequence _generateSerializationStatementFooter = this.generateSerializationStatementFooter(true); _builder.append(_generateSerializationStatementFooter, ""); _builder.newLineIfNotEmpty(); return _builder; } protected CharSequence _generateSerializationStatementForGenericListType(final BodyBlock body, final GenericListType type, final UserType elementType) { UserTypeDeclaration _declaration = elementType.getDeclaration(); return this.generateSerializationStatementForUserTypeGenericList(body, type, elementType, _declaration); } protected CharSequence _generateSerializationStatementForUserTypeGenericList(final BodyBlock body, final GenericListType type, final UserType elementType, final ComplexTypeDeclaration declaration) { StringConcatenation _builder = new StringConcatenation(); this.imports.addImport("java.util.List"); _builder.newLineIfNotEmpty(); CharSequence _generateSerializationStatementHeader = this.generateSerializationStatementHeader(true); _builder.append(_generateSerializationStatementHeader, ""); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("provider.get("); String _innerSignature = ModelExtensions.innerSignature(type); _builder.append(_innerSignature, "\t"); _builder.append(".class).writeList(writer, "); String _innerSignature_1 = ModelExtensions.innerSignature(type); String _camelize = Strings.camelize(_innerSignature_1); String _pluralize = Strings.pluralize(_camelize); _builder.append(_pluralize, "\t"); _builder.append(");"); _builder.newLineIfNotEmpty(); CharSequence _generateSerializationStatementFooter = this.generateSerializationStatementFooter(true); _builder.append(_generateSerializationStatementFooter, ""); _builder.newLineIfNotEmpty(); return _builder; } protected CharSequence _generateSerializationStatementForUserTypeGenericList(final BodyBlock body, final GenericListType type, final UserType elementType, final EnumTypeDeclaration declaration) { StringConcatenation _builder = new StringConcatenation(); CharSequence _generateSerializationStatementHeader = this.generateSerializationStatementHeader(true); _builder.append(_generateSerializationStatementHeader, ""); _builder.newLineIfNotEmpty(); _builder.newLine(); _builder.append("\t"); _builder.append("writer.beginArray();"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); _builder.append("for("); String _innerSignature = ModelExtensions.innerSignature(type); _builder.append(_innerSignature, "\t"); _builder.append(" element:"); String _innerSignature_1 = ModelExtensions.innerSignature(type); String _camelize = Strings.camelize(_innerSignature_1); String _pluralize = Strings.pluralize(_camelize); _builder.append(_pluralize, "\t"); _builder.append(") {"); _builder.newLineIfNotEmpty(); _builder.append("\t\t"); _builder.append("writer.put(element.getValue());"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); _builder.append("writer.endArray();"); _builder.newLine(); _builder.newLine(); CharSequence _generateSerializationStatementFooter = this.generateSerializationStatementFooter(true); _builder.append(_generateSerializationStatementFooter, ""); _builder.newLineIfNotEmpty(); return _builder; } /** * Converts a path (eg:- /qux/:fooparam/:quxparam/bar * into constructor arguments */ public String generateRequestConstructorArgs(final Path path, final BodyBlock body) { ArrayList<String> args = new ArrayList<String>(); EList<SimpleMemberAssignment> _params = null; if (path!=null) { _params=path.getParams(); } int _size = 0; if (_params!=null) { _size=_params.size(); } boolean _greaterThan = (_size > 0); if (_greaterThan) { EList<SimpleMemberAssignment> _params_1 = path.getParams(); for (final SimpleMemberAssignment slug : _params_1) { SimpleMember _member = slug.getMember(); IntrinsicType _type = _member.getType(); String _signature = ModelExtensions.signature(_type); String _plus = (_signature + " "); SimpleMember _member_1 = slug.getMember(); String _name = _member_1.getName(); String _camelize = Strings.camelize(_name); String _plus_1 = (_plus + _camelize); String _plus_2 = (_plus_1 + "Segment"); args.add(_plus_2); } } boolean _notEquals = (!Objects.equal(body, null)); if (_notEquals) { BlockType _type_1 = body.getType(); this.buildConstructorArgsForType(_type_1, args); } return IterableExtensions.join(args, ",\n"); } protected void _buildConstructorArgsForType(final ComplexTypeLiteral type, final List<String> args) { EList<Member> _members = type.getMembers(); for (final Member member : _members) { if ((member instanceof TypedMember)) { Type _type = ((TypedMember) member).getType(); String _signature = ModelExtensions.signature(_type); String _plus = (_signature + " "); String _identifier = ModelExtensions.toIdentifier(member); String _plus_1 = (_plus + _identifier); args.add(_plus_1); } else { if ((member instanceof SkipMember)) { ComplexTypeLiteral _literal = ((SkipMember) member).getLiteral(); this.buildConstructorArgsForType(_literal, args); } } } } protected void _buildConstructorArgsForType(final IntrinsicType type, final List<String> args) { String _signature = ModelExtensions.signature(type); String _plus = (_signature + " value"); args.add(_plus); } protected void _buildConstructorArgsForType(final GenericListType type, final List<String> args) { Type _elementType = type.getElementType(); if ((_elementType instanceof IntrinsicType)) { String _signature = ModelExtensions.signature(type); String _plus = (_signature + " values"); args.add(_plus); } else { String _signature_1 = ModelExtensions.signature(type); String _plus_1 = (_signature_1 + " "); String _innerSignature = ModelExtensions.innerSignature(type); String _camelize = Strings.camelize(_innerSignature); String _pluralize = Strings.pluralize(_camelize); String _plus_2 = (_plus_1 + _pluralize); args.add(_plus_2); } } protected void _buildConstructorArgsForType(final UserType type, final List<String> args) { String _signature = ModelExtensions.signature(type); String _plus = (_signature + " "); String _signature_1 = ModelExtensions.signature(type); String _camelize = Strings.camelize(_signature_1); String _plus_1 = (_plus + _camelize); args.add(_plus_1); } public String pathToStringFormatArgs(final String path) { String[] _split = path.split("/|\\."); final Function1<String, Boolean> _function = new Function1<String, Boolean>() { public Boolean apply(final String seg) { return Boolean.valueOf(seg.startsWith(":")); } }; Iterable<String> _filter = IterableExtensions.<String>filter(((Iterable<String>)Conversions.doWrapArray(_split)), _function); final Function1<String, CharSequence> _function_1 = new Function1<String, CharSequence>() { public CharSequence apply(final String arg) { String _substring = arg.substring(1); String _camelize = Strings.camelize(_substring); return (_camelize + "Segment"); } }; String _join = IterableExtensions.<String>join(_filter, ", ", _function_1); return (", " + _join); } public boolean hasArgs(final String path) { boolean _and = false; boolean _notEquals = (!Objects.equal(path, null)); if (!_notEquals) { _and = false; } else { boolean _contains = path.contains(":"); _and = _contains; } return _and; } public CharSequence generateFieldForType(final BlockType type) { if (type instanceof GenericListType) { return _generateFieldForType((GenericListType)type); } else if (type instanceof IntrinsicType) { return _generateFieldForType((IntrinsicType)type); } else if (type instanceof UserType) { return _generateFieldForType((UserType)type); } else if (type instanceof ComplexTypeLiteral) { return _generateFieldForType((ComplexTypeLiteral)type); } else { throw new IllegalArgumentException("Unhandled parameter types: " + Arrays.<Object>asList(type).toString()); } } public CharSequence generateFieldForMember(final Member member) { if (member instanceof SkipMember) { return _generateFieldForMember((SkipMember)member); } else if (member instanceof TypedMember) { return _generateFieldForMember((TypedMember)member); } else { throw new IllegalArgumentException("Unhandled parameter types: " + Arrays.<Object>asList(member).toString()); } } public CharSequence generateGetterSetterForType(final BlockType type) { if (type instanceof GenericListType) { return _generateGetterSetterForType((GenericListType)type); } else if (type instanceof IntrinsicType) { return _generateGetterSetterForType((IntrinsicType)type); } else if (type instanceof UserType) { return _generateGetterSetterForType((UserType)type); } else if (type instanceof ComplexTypeLiteral) { return _generateGetterSetterForType((ComplexTypeLiteral)type); } else { throw new IllegalArgumentException("Unhandled parameter types: " + Arrays.<Object>asList(type).toString()); } } public CharSequence generateGetterSetterForMember(final Member member) { if (member instanceof SkipMember) { return _generateGetterSetterForMember((SkipMember)member); } else if (member instanceof TypedMember) { return _generateGetterSetterForMember((TypedMember)member); } else { throw new IllegalArgumentException("Unhandled parameter types: " + Arrays.<Object>asList(member).toString()); } } public CharSequence generateConstructorAssignmentForType(final BlockType type) { if (type instanceof GenericListType) { return _generateConstructorAssignmentForType((GenericListType)type); } else if (type instanceof IntrinsicType) { return _generateConstructorAssignmentForType((IntrinsicType)type); } else if (type instanceof UserType) { return _generateConstructorAssignmentForType((UserType)type); } else if (type instanceof ComplexTypeLiteral) { return _generateConstructorAssignmentForType((ComplexTypeLiteral)type); } else { throw new IllegalArgumentException("Unhandled parameter types: " + Arrays.<Object>asList(type).toString()); } } public CharSequence generateConstructorAssignmentForMember(final Member member) { if (member instanceof SkipMember) { return _generateConstructorAssignmentForMember((SkipMember)member); } else if (member instanceof TypedMember) { return _generateConstructorAssignmentForMember((TypedMember)member); } else { throw new IllegalArgumentException("Unhandled parameter types: " + Arrays.<Object>asList(member).toString()); } } public CharSequence generateSerializationStatementForType(final HttpMethod method, final BodyBlock body, final BlockType type) { if (type instanceof GenericListType) { return _generateSerializationStatementForType(method, body, (GenericListType)type); } else if (type instanceof IntrinsicType) { return _generateSerializationStatementForType(method, body, (IntrinsicType)type); } else if (type instanceof UserType) { return _generateSerializationStatementForType(method, body, (UserType)type); } else if (type instanceof ComplexTypeLiteral) { return _generateSerializationStatementForType(method, body, (ComplexTypeLiteral)type); } else { throw new IllegalArgumentException("Unhandled parameter types: " + Arrays.<Object>asList(method, body, type).toString()); } } public CharSequence generateSerializationStatementForUserType(final BodyBlock body, final UserType type, final UserTypeDeclaration declaration) { if (declaration instanceof ComplexTypeDeclaration) { return _generateSerializationStatementForUserType(body, type, (ComplexTypeDeclaration)declaration); } else if (declaration instanceof EnumTypeDeclaration) { return _generateSerializationStatementForUserType(body, type, (EnumTypeDeclaration)declaration); } else { throw new IllegalArgumentException("Unhandled parameter types: " + Arrays.<Object>asList(body, type, declaration).toString()); } } public CharSequence generateSerializationStatementForGenericListType(final BodyBlock body, final GenericListType type, final Type elementType) { if (elementType instanceof IntrinsicType) { return _generateSerializationStatementForGenericListType(body, type, (IntrinsicType)elementType); } else if (elementType instanceof UserType) { return _generateSerializationStatementForGenericListType(body, type, (UserType)elementType); } else { throw new IllegalArgumentException("Unhandled parameter types: " + Arrays.<Object>asList(body, type, elementType).toString()); } } public CharSequence generateSerializationStatementForUserTypeGenericList(final BodyBlock body, final GenericListType type, final UserType elementType, final UserTypeDeclaration declaration) { if (declaration instanceof ComplexTypeDeclaration) { return _generateSerializationStatementForUserTypeGenericList(body, type, elementType, (ComplexTypeDeclaration)declaration); } else if (declaration instanceof EnumTypeDeclaration) { return _generateSerializationStatementForUserTypeGenericList(body, type, elementType, (EnumTypeDeclaration)declaration); } else { throw new IllegalArgumentException("Unhandled parameter types: " + Arrays.<Object>asList(body, type, elementType, declaration).toString()); } } public void buildConstructorArgsForType(final BlockType type, final List<String> args) { if (type instanceof GenericListType) { _buildConstructorArgsForType((GenericListType)type, args); return; } else if (type instanceof IntrinsicType) { _buildConstructorArgsForType((IntrinsicType)type, args); return; } else if (type instanceof UserType) { _buildConstructorArgsForType((UserType)type, args); return; } else if (type instanceof ComplexTypeLiteral) { _buildConstructorArgsForType((ComplexTypeLiteral)type, args); return; } else { throw new IllegalArgumentException("Unhandled parameter types: " + Arrays.<Object>asList(type, args).toString()); } } }