package com.ifpdos.udi.sdk.service.compile;

import g.i;

/* JADX INFO: compiled from: CodeTemplate.kt */
/* JADX INFO: loaded from: classes.dex */
@i
public final class CodeTemplate {
    public static final String API = "\npackage {{&package}}\nimport com.ifpdos.udi.sdk.service.sdk.json.MissingFieldException\nimport com.ifpdos.udi.sdk.service.sdk.json.TypeToken\nimport com.ifpdos.udi.sdk.service.sdk.protocol.EmptyBody\nimport com.ifpdos.udi.sdk.service.sdk.server.*\nimport com.ifpdos.udi.sdk.service.sdk.UdiGlobal\n\n{{#getterAdapters}}\n{{&.}}\n{{/getterAdapters}}\n{{#setterAdapters}}\n{{&.}}\n{{/setterAdapters}}\nclass {{&api.apiName}}Api {\n    {{#api.notify}}\n    companion object {\n        private val TOKEN = object : TypeToken<{{&api.notify.notifyClass}}>() {}\n\n        fun notify({{&notifyParams}}notify: {{&api.notify.notifyClass}}) {\n            val json = UdiCompileUtils.toJson(notify, TOKEN)\n            UdiGlobal.get(IUdiServer::class).sendEvent(\"{{&notifyUri}}\", json)\n            {{#api.alias}}\n            UdiGlobal.get(IUdiServer::class).sendEvent(\"{{&notifyAliasUri}}\", json)\n            {{/api.alias}}\n        }\n    }\n    {{/api.notify}}\n    \n    val api: Api\n    {{#api.alias}}\n    val alias: Api\n    \n    {{/api.alias}}\n    fun getApiList(): List<Api> {\n        {{#api.staticCall}}\n        return emptyList()\n        {{/api.staticCall}}\n        {{^api.staticCall}}\n        val apis = mutableListOf(api)\n        {{#api.alias}}\n        apis.add(alias)\n        {{/api.alias}}\n        return apis\n        {{/api.staticCall}}\n    }\n    \n    fun getStaticApiList(): List<Api> {\n        {{#api.staticCall}}\n        val apis = mutableListOf(api)\n        {{#api.alias}}\n        apis.add(alias)\n        {{/api.alias}}\n        return apis\n        {{/api.staticCall}}\n        {{^api.staticCall}}\n        return emptyList()\n        {{/api.staticCall}}\n    }\n    \n    {{^receivers}}\n    init {\n        api = Api(\n            topic = \"{{&api.uri.mqttTopic}}\",\n{{#api.notify}}\n            notify = true,\n            notifyPermission = {{&api.notify.permission.permission}},\n{{/api.notify}}\n{{^api.notify}}\n            false,\n{{/api.notify}}\n            staticCall = {{&api.staticCall}},\n        )\n        \n{{#api.alias}}\n        alias = Api(\n            topic = \"{{&api.alias.mqttTopic}}\",\n            {{#api.notify}}\n            notify = true,\n            notifyPermission = {{&api.notify.permission.permission}},\n            {{/api.notify}}\n            \n            {{^api.notify}}\n            false,\n            {{/api.notify}}\n            staticCall = {{&api.staticCall}},\n        )\n        {{/api.alias}}\n    }\n    {{/receivers}}\n    \n    {{#receivers}}\n    \n    constructor(receiver : {{&key}}) {\n        api = Api(\n            topic = \"{{&api.uri.mqttTopic}}\",\n            {{#api.notify}}\n            notify = true,\n            notifyPermission = {{&api.notify.permission.permission}},\n            {{/api.notify}}\n            {{^api.notify}}\n            false,\n            {{/api.notify}}\n            {{#value.setter}}\n            setterHandler = {{&simpleName}}{{&key.simpleName}}Adapter(receiver)::{{&simpleName}},\n            setterPermission = {{&api.setterRequest.permission.permission}},\n            {{/value.setter}}\n            {{#value.getter}}\n            getterHandler = {{&simpleName}}{{&key.simpleName}}Adapter(receiver)::{{&simpleName}},\n            getterPermission = {{&api.getterRequest.permission.permission}},\n            {{/value.getter}}\n            staticCall = {{&api.staticCall}}\n        )\n        \n        {{#api.alias}}\n        alias = Api(\n            topic = \"{{&api.alias.mqttTopic}}\",\n            {{#api.notify}}\n            notify = true,\n            notifyPermission = {{&api.notify.permission.permission}},\n            {{/api.notify}}\n            {{^api.notify}}\n            false,\n            {{/api.notify}}\n            {{#value.setter}}\n            setterHandler = {{&simpleName}}{{&key.simpleName}}Adapter(receiver)::{{&simpleName}},\n            setterPermission = {{&api.setterRequest.permission.permission}},\n            {{/value.setter}}\n            {{#value.getter}}\n            getterHandler = {{&simpleName}}{{&key.simpleName}}Adapter(receiver)::{{&simpleName}},\n            getterPermission = {{&api.getterRequest.permission.permission}},\n            {{/value.getter}}\n            staticCall = {{&api.staticCall}}\n        )\n        {{/api.alias}}\n    }\n    {{/receivers}}\n    {{&getterRequest}}\n    {{&setterRequest}}\n    {{&getterResponse}}\n    {{&setterResponse}}\n}\n";
    public static final String API_BINDER = "\npackage {{&package}}\nimport com.ifpdos.udi.sdk.service.sdk.server.Api\n\nobject ApiBinder {\n    {{#receivers}}\n    fun getApiList(receiver : {{&key}}) : List<Api> {\n        val apis = mutableListOf<Api>()\n        {{#value}}\n        apis.addAll({{&.}}Api(receiver).getApiList())\n        {{/value}}\n        return apis\n    }\n    \n    fun getStaticApiList(receiver : {{&key}}) : List<Api> {\n        val apis = mutableListOf<Api>()\n        {{#value}}\n        apis.addAll({{&.}}Api(receiver).getStaticApiList())\n        {{/value}}\n        return apis\n    }\n    {{/receivers}}\n}\n";
    public static final String API_XML = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<apis>\n    {{#apis}}\n    <api topic=\"{{uri.path}}\">\n    {{#getterRequest}}\n    <get permission=\"{{getterRequest.permission.permission}}\"/>\n    {{/getterRequest}}\n    {{#setterRequest}}\n    <set permission=\"{{setterRequest.permission.permission}}\"/>\n    {{/setterRequest}}\n    {{#notify}}\n    <notify permission=\"{{notify.permission.permission}}\"/>\n    {{/notify}}\n    </api>\n    \n    {{#alias}}\n    <api topic=\"{{alias.path}}\">\n    {{#getterRequest}}\n    <get permission=\"{{getterRequest.permission.permission}}\"/>\n    {{/getterRequest}}\n    {{#setterRequest}}\n    <set permission=\"{{setterRequest.permission.permission}}\"/>\n    {{/setterRequest}}\n    {{#notify}}\n    <notify permission=\"{{notify.permission.permission}}\"/>\n    {{/notify}}\n    </api>\n    {{/alias}}\n    {{/apis}}\n</apis>\n";
    public static final String EMPTY_BODY_REQUEST_ADAPTER = "\nclass {{&funcName}}{{&receiverName}}Adapter(private val receiver: {{&receiverClass}}) {\n    fun {{&funcName}}(request: IRequest): Response {\n        {{#apiParam}}\n        return receiver.{{&funcName}}({{&wrapperRequestClass}}(request.getUri(), request.getFields())).response\n        {{/apiParam}}\n        {{#noParam}}\n            {{#noReturn}}\n        receiver.{{&funcName}}()\n        return {{&wrapperResponseClass}}().response\n            {{/noReturn}}\n            {{^noReturn}}\n        val response = receiver.{{&funcName}}()\n        return {{&wrapperResponseClass}}(response).response\n            {{/noReturn}}\n        {{/noParam}}\n        {{#requestParam}}\n            {{#noReturn}}\n        receiver.{{&funcName}}(UdiRequest(request.getUri(), request.getFields(), EmptyBody()))\n        return {{&wrapperResponseClass}}().response\n            {{/noReturn}}\n            {{^noReturn}}\n        val response = receiver.{{&funcName}}(UdiRequest(request.getUri(), request.getFields(), EmptyBody()))\n        return {{&wrapperResponseClass}}(response).response\n            {{/noReturn}}\n        {{/requestParam}}\n    }\n}\n";
    public static final CodeTemplate INSTANCE = new CodeTemplate();
    public static final String NORMAL_REQUEST_ADAPTER = "\nclass {{&funcName}}{{&receiverName}}Adapter(private val receiver: {{&receiverClass}}) {\n    private val TOKEN = object : TypeToken<{{&request.requestClass}}>() {}\n    \n    fun {{&funcName}}(request: IRequest): Response {\n        val bodyString = request.getData().bufferedReader().use { it.readText() }\n        val requestParam: {{&request.requestClass}}\n        try {\n            requestParam = UdiCompileUtils.fromJson(bodyString, TOKEN)\n        } catch (e: MissingFieldException) {\n            UdiCompileUtils.onParseRequestFailed(request, bodyString, e{{#queryKeys}}, queryKeys{{/queryKeys}})\n            return Response.makeErrorResponse(\n                Response.CODE_BAD_REQUEST,\n                Response.ErrorBody(\"params $bodyString, miss field : ${e.missingFields}\")\n            )\n        } catch (e: Throwable) {\n            UdiCompileUtils.onParseRequestFailed(request, bodyString, e{{#queryKeys}}, queryKeys{{/queryKeys}})\n            return UdiCompileUtils.newParamsDecodeFailedResponse(bodyString)\n        }\n        \n\n        {{#apiParam}}\n        UdiCompileUtils.onParseRequestSuccess(request, bodyString, requestParam{{#queryKeys}}, queryKeys{{/queryKeys}})\n        return receiver.{{&funcName}}({{&wrapperRequestClass}}(requestParam, request.getUri(), request.getFields())).response\n        {{/apiParam}}\n        {{#noParam}}\n            {{#noReturn}}\n        receiver.{{&funcName}}()\n        return {{&wrapperResponseClass}}().response\n            {{/noReturn}}\n            {{^noReturn}}\n        val response = receiver.{{&funcName}}()\n        return {{&wrapperResponseClass}}(response).response\n            {{/noReturn}}\n        {{/noParam}}\n        {{#bodyParam}}\n            {{#noReturn}}\n        UdiCompileUtils.onParseRequestSuccess(request, bodyString, requestParam{{#queryKeys}}, queryKeys{{/queryKeys}})\n        receiver.{{&funcName}}(requestParam)\n        return {{&wrapperResponseClass}}().response\n            {{/noReturn}}\n            {{^noReturn}}\n        UdiCompileUtils.onParseRequestSuccess(request, bodyString, requestParam{{#queryKeys}}, queryKeys{{/queryKeys}})\n        val response = receiver.{{&funcName}}(requestParam)\n        return {{&wrapperResponseClass}}(response).response\n            {{/noReturn}}\n        {{/bodyParam}}\n        {{#requestParam}}\n            {{#noReturn}}\n        UdiCompileUtils.onParseRequestSuccess(request, bodyString, requestParam{{#queryKeys}}, queryKeys{{/queryKeys}})\n        receiver.{{&funcName}}(UdiRequest(request.getUri(), request.getFields(), requestParam))\n        return {{&wrapperResponseClass}}().response\n            {{/noReturn}}\n            {{^noReturn}}\n        UdiCompileUtils.onParseRequestSuccess(request, bodyString, requestParam{{#queryKeys}}, queryKeys{{/queryKeys}})\n        val response = receiver.{{&funcName}}(UdiRequest(request.getUri(), request.getFields(), requestParam))\n        return {{&wrapperResponseClass}}(response).response\n            {{/noReturn}}\n        {{/requestParam}}\n    \n    }\n}\n";
    public static final String ONLY_NOTIFY_API_BINDER = "\npackage {{&package}} \n\nimport com.ifpdos.udi.sdk.service.sdk.server.Api\n\nobject OnlyNotifyApiBinder {\n    fun getApiList() : List<Api> {\n        val apis = mutableListOf<Api>()\n        {{#apis}}\n        apis.addAll({{&package}}.{{&apiName}}Api().getApiList())\n        {{/apis}}\n        return apis\n    }\n}    \n";
    public static final String REQUEST = "\n{{#requestClass}}\n    class {{&type}}Request(\n        val body: {{&requestClass}},\n        val uri: String = \"\", \n        val fields: Map<String, String> = emptyMap()\n{{/requestClass}}\n{{^requestClass}}\n    class {{&type}}Request(\n        val uri: String = \"\", \n        val fields: Map<String, String> = emptyMap()\n{{/requestClass}}\n    ) {\n        fun getField(name: String): String? {\n            return fields[name]\n        }\n    }\n";
    private static final String REQUEST_ADAPTER_RESPONSE_SELECT_PART = "\n        {{#apiParam}}\n        UdiCompileUtils.onParseRequestSuccess(request, bodyString, requestParam{{#queryKeys}}, queryKeys{{/queryKeys}})\n        return receiver.{{&funcName}}({{&wrapperRequestClass}}(requestParam, request.getUri(), request.getFields())).response\n        {{/apiParam}}\n        {{#noParam}}\n            {{#noReturn}}\n        receiver.{{&funcName}}()\n        return {{&wrapperResponseClass}}().response\n            {{/noReturn}}\n            {{^noReturn}}\n        val response = receiver.{{&funcName}}()\n        return {{&wrapperResponseClass}}(response).response\n            {{/noReturn}}\n        {{/noParam}}\n        {{#bodyParam}}\n            {{#noReturn}}\n        UdiCompileUtils.onParseRequestSuccess(request, bodyString, requestParam{{#queryKeys}}, queryKeys{{/queryKeys}})\n        receiver.{{&funcName}}(requestParam)\n        return {{&wrapperResponseClass}}().response\n            {{/noReturn}}\n            {{^noReturn}}\n        UdiCompileUtils.onParseRequestSuccess(request, bodyString, requestParam{{#queryKeys}}, queryKeys{{/queryKeys}})\n        val response = receiver.{{&funcName}}(requestParam)\n        return {{&wrapperResponseClass}}(response).response\n            {{/noReturn}}\n        {{/bodyParam}}\n        {{#requestParam}}\n            {{#noReturn}}\n        UdiCompileUtils.onParseRequestSuccess(request, bodyString, requestParam{{#queryKeys}}, queryKeys{{/queryKeys}})\n        receiver.{{&funcName}}(UdiRequest(request.getUri(), request.getFields(), requestParam))\n        return {{&wrapperResponseClass}}().response\n            {{/noReturn}}\n            {{^noReturn}}\n        UdiCompileUtils.onParseRequestSuccess(request, bodyString, requestParam{{#queryKeys}}, queryKeys{{/queryKeys}})\n        val response = receiver.{{&funcName}}(UdiRequest(request.getUri(), request.getFields(), requestParam))\n        return {{&wrapperResponseClass}}(response).response\n            {{/noReturn}}\n        {{/requestParam}}\n    ";
    public static final String RESPONSE = "\n    class {{&type}}Response {\n        val response: Response\n        \n{{#responseClass}}\n        private val TOKEN = object : TypeToken<{{&responseClass}}>() {}\n        \n        constructor(response: {{&responseClass}}) {\n            val responseString = UdiCompileUtils.toJson(response, TOKEN)\n            this.response = Response.makeOkResponse(responseString)\n        }\n{{/responseClass}}\n{{^responseClass}}\n        constructor() {\n            this.response = Response.makeOkResponse()\n        }\n{{/responseClass}}\n    \n        constructor(code: Int, error: Response.ErrorBody) {\n            this.response = Response.makeErrorResponse(code, error)\n        }\n        \n        constructor(response: Response) {\n            this.response = response\n        }\n    }\n";
    public static final String UDI_COMPILE_UTILS = "\npackage {{&package}};\n\nimport com.ifpdos.udi.sdk.service.sdk.server.IRequest\nimport com.ifpdos.udi.sdk.service.sdk.server.Response\nimport com.ifpdos.udi.sdk.service.sdk.json.IConverter\nimport com.ifpdos.udi.sdk.service.sdk.json.TypeToken\nimport com.ifpdos.udi.sdk.service.sdk.json.IJsonObject\nimport com.ifpdos.udi.sdk.service.sdk.log.IRequestTracker\nimport com.ifpdos.udi.sdk.service.sdk.log.Log\nimport com.ifpdos.udi.sdk.service.sdk.UdiGlobal\nimport com.ifpdos.udi.sdk.service.sdk.Utils\n\nobject UdiCompileUtils {\n    fun splitUriParts(uri: String): List<String> {\n        return if (uri.startsWith(\"/\")) {\n            uri.substring(1).split(\"/\")\n        } else {\n            uri.split(\"/\")\n        }\n    }\n    \n    fun hasBody(request: IRequest): Boolean {\n        val contentLength = request.getFields().get(Utils.HEADER_CONTENT_LENGTH)\n        return contentLength != null && contentLength.toInt() > 0\n    }\n    \n    fun fromJson(json: String): IJsonObject {\n        return UdiGlobal.get(IConverter::class).fromJson(json)\n    }\n\n    fun <T> fromJson(json: String, token: TypeToken<T>): T {\n        return UdiGlobal.get(IConverter::class).fromJson(json, token)\n    }\n    \n    fun <T> fromJson(jsonObject: IJsonObject, token: TypeToken<T>): T {\n        return UdiGlobal.get(IConverter::class).fromJson(jsonObject, token)\n    }\n    \n    fun <T> toJson(obj: T, token: TypeToken<T>): String {\n        return UdiGlobal.get(IConverter::class).toJson(obj, token)\n    }\n    \n    fun newParamsDecodeFailedResponse(bodyString: String?): Response {\n        return Response.makeErrorResponse(\n            Response.CODE_BAD_REQUEST,\n            Response.ErrorBody(\"params $bodyString decode failed\")\n        )\n    }\n\n    fun newMissingFieldsResponse(\n        queryJson: String?,\n        restfulJson: String?,\n        bodyString: String?,\n        missingFields: List<String>\n    ): Response {\n        val sb = StringBuilder()\n        if (queryJson != null) {\n            sb.append(\"query params $queryJson + \")\n        }\n        if (restfulJson != null) {\n            sb.append(\"restful params $restfulJson + \")\n        }\n        sb.append(\"body params $bodyString miss field : $missingFields\")\n        return Response.makeErrorResponse(\n            Response.CODE_BAD_REQUEST,\n            Response.ErrorBody(sb.toString())\n        )\n    }\n\n    fun paramsToJsonObject(\n        fields: Map<String, String>,\n        keys: List<Pair<String, String>>\n    ): IJsonObject {\n        val params = keys\n            .filter { fields.contains(it.first) }\n            .associate { Pair(it.first, Pair(fields[it.first]!!, it.second)) }\n        return paramsToJsonObject(params)\n    }\n    \n    fun paramsToJsonObject(params: Map<String, Pair<String, String>>): IJsonObject {\n        val obj =  UdiGlobal.get(IConverter::class).newJsonObject()\n        for ((key, value) in params) {\n            when (value.second) {\n                \"Int\" -> try {\n                    obj.add(key, value.first.toInt())\n                } catch (e: Throwable) {\n                    throw Exception(\"$key : ${value.first} can't convert to Int\")\n                }\n                \"Float\" -> try {\n                    obj.add(key, value.first.toFloat())\n                } catch (e: Throwable) {\n                    throw Exception(\"$key : ${value.first} can't convert to Float\")\n                }\n                \"Double\" -> try {\n                    obj.add(key, value.first.toDouble())\n                } catch (e: Throwable) {\n                    throw Exception(\"$key : ${value.first} can't convert to Double\")\n                }\n                \"Boolean\" -> {\n                    if (\"true\" != value.first && \"false\" != value.first) {\n                        throw Exception(\"$key : ${value.first} can't convert to Boolean\")\n                    }\n                    obj.add(key, value.first.toBoolean())\n                }\n                else -> {\n                    obj.add(key, value.first)\n                }\n            }\n        }\n        return obj\n    }\n    \n    fun getJsonKey(e: Enum<*>): String {\n        return UdiGlobal.get(IConverter::class).getJsonKey(e) ?: e.toString()\n    }\n\n    fun onParseRequestSuccess(\n        request: IRequest,\n        body: String?,\n        paramParse: Any,\n        queryKeys: List<Pair<String, String>>? = null\n    ) {\n        UdiGlobal.get(IRequestTracker::class).onParseRequestSuccess(request, queryKeys, body, paramParse)\n    }\n\n    fun onParseRequestFailed(\n        request: IRequest,\n        body: String?,\n        throwable: Throwable,\n        queryKeys: List<Pair<String, String>>? = null\n    ) {\n        UdiGlobal.get(IRequestTracker::class).onParseRequestFailed(request, queryKeys, body, throwable)\n    }\n}\n    ";
    public static final String URL_URI_REQUEST_ADAPTER = "\nclass {{&funcName}}{{&receiverName}}Adapter(private val receiver: {{&receiverClass}}) {\n    private val TOKEN = object : TypeToken<{{&request.requestClass}}>() {}\n    \n    fun {{&funcName}}(request: IRequest): Response {\n        val bodyString = if (UdiCompileUtils.hasBody(request)) {\n            request.getData().bufferedReader().use { it.readText() }\n        } else {\n            null\n        }\n        \n        {{#queryKeys}}\n        val queryKeys = {{&.}}\n        val queryJson = try {\n            UdiCompileUtils.paramsToJsonObject(request.getFields(), queryKeys)\n        } catch (e: Exception) {\n            UdiCompileUtils.onParseRequestFailed(request, bodyString, e{{#queryKeys}}, queryKeys{{/queryKeys}})\n            return Response.makeErrorResponse(\n                Response.CODE_BAD_REQUEST,\n                Response.ErrorBody(e.message.toString())\n            )\n        }\n        {{/queryKeys}}\n\n        {{#restfulKeys}}\n        val parts = UdiCompileUtils.splitUriParts(request.getUri())\n        val restfulKeys = {{&.}}\n        val restfulJson = try {\n            UdiCompileUtils.paramsToJsonObject(restfulKeys)\n        } catch (e: Exception) {\n            UdiCompileUtils.onParseRequestFailed(request, bodyString, e{{#queryKeys}}, queryKeys{{/queryKeys}})\n            return Response.makeErrorResponse(Response.CODE_BAD_REQUEST, Response.ErrorBody(e.message.toString()))\n        }\n        {{/restfulKeys}}\n        \n        val bodyJson = bodyString?.let {\n            try {\n                UdiCompileUtils.fromJson(bodyString)\n            } catch (e: Throwable) {\n                UdiCompileUtils.onParseRequestFailed(request, bodyString, e{{#queryKeys}}, queryKeys{{/queryKeys}})\n                return UdiCompileUtils.newParamsDecodeFailedResponse(bodyString)\n            }\n        }\n\n        var json = bodyJson\n        {{#queryKeys}}\n        json = json?.let { queryJson.merge(it) } ?: queryJson\n        {{/queryKeys}}\n        {{#restfulKeys}}\n        json = json?.let { restfulJson.merge(it) } ?: restfulJson\n        {{/restfulKeys}}\n        \n        val requestParam = try {\n            UdiCompileUtils.fromJson(json, TOKEN)\n        } catch (e: MissingFieldException) {\n            UdiCompileUtils.onParseRequestFailed(request, bodyString, e{{#queryKeys}}, queryKeys{{/queryKeys}})\n            return UdiCompileUtils.newMissingFieldsResponse({{#queryKeys}}queryJson.toString(){{/queryKeys}}{{^queryKeys}}null{{/queryKeys}}, {{#restfulKeys}}restfulJson.toString(){{/restfulKeys}}{{^restfulKeys}}null{{/restfulKeys}}, bodyString, e.missingFields)\n        } catch (e: Throwable) {\n            UdiCompileUtils.onParseRequestFailed(request, bodyString, e{{#queryKeys}}, queryKeys{{/queryKeys}})\n            return UdiCompileUtils.newParamsDecodeFailedResponse(bodyString)\n        }\n        \n\n        {{#apiParam}}\n        UdiCompileUtils.onParseRequestSuccess(request, bodyString, requestParam{{#queryKeys}}, queryKeys{{/queryKeys}})\n        return receiver.{{&funcName}}({{&wrapperRequestClass}}(requestParam, request.getUri(), request.getFields())).response\n        {{/apiParam}}\n        {{#noParam}}\n            {{#noReturn}}\n        receiver.{{&funcName}}()\n        return {{&wrapperResponseClass}}().response\n            {{/noReturn}}\n            {{^noReturn}}\n        val response = receiver.{{&funcName}}()\n        return {{&wrapperResponseClass}}(response).response\n            {{/noReturn}}\n        {{/noParam}}\n        {{#bodyParam}}\n            {{#noReturn}}\n        UdiCompileUtils.onParseRequestSuccess(request, bodyString, requestParam{{#queryKeys}}, queryKeys{{/queryKeys}})\n        receiver.{{&funcName}}(requestParam)\n        return {{&wrapperResponseClass}}().response\n            {{/noReturn}}\n            {{^noReturn}}\n        UdiCompileUtils.onParseRequestSuccess(request, bodyString, requestParam{{#queryKeys}}, queryKeys{{/queryKeys}})\n        val response = receiver.{{&funcName}}(requestParam)\n        return {{&wrapperResponseClass}}(response).response\n            {{/noReturn}}\n        {{/bodyParam}}\n        {{#requestParam}}\n            {{#noReturn}}\n        UdiCompileUtils.onParseRequestSuccess(request, bodyString, requestParam{{#queryKeys}}, queryKeys{{/queryKeys}})\n        receiver.{{&funcName}}(UdiRequest(request.getUri(), request.getFields(), requestParam))\n        return {{&wrapperResponseClass}}().response\n            {{/noReturn}}\n            {{^noReturn}}\n        UdiCompileUtils.onParseRequestSuccess(request, bodyString, requestParam{{#queryKeys}}, queryKeys{{/queryKeys}})\n        val response = receiver.{{&funcName}}(UdiRequest(request.getUri(), request.getFields(), requestParam))\n        return {{&wrapperResponseClass}}(response).response\n            {{/noReturn}}\n        {{/requestParam}}\n    \n    }\n}\n";

    private CodeTemplate() {
    }
}
