{
  "factory": {
    "id": "wsdl-based-soap-service",
    "type": "entaxy.runtime.service",
    "description": "",
    "isAbstract": true,
    "parent": "abstract-service-soap",
    "label": "service,soap",
    "category": ""
  },
  "entaxy.runtime.service": {},
  "fields": {
    "serviceFullName": {
      "displayName": "Service Full Name",
      "description": "Full name of the selected service from the WSDL resource. For more details see <a target=\"_blank\" href=\"https://docs.entaxy.ru/entaxy-core/${project.version}/core/schema/Soap_services.html\">Entaxy docs</a>",
      "type": "String",
      "group": "main",
      "required": true,
      "@TYPEINFO": {
        "type": "list",
        "source": {
          "property": "schemaUrl",
          "sourceType": "resource",
          "path": "#metadata#.wsdl.services",
          "type": "property"
        },
        "dependsOn": [
          "schemaUrl"
        ]
      }
    },
    "port": {
      "displayName": "Port",
      "description": "The port of the selected service from the WSDL resource. For more details see <a target=\"_blank\" href=\"https://docs.entaxy.ru/entaxy-core/${project.version}/core/schema/Soap_services.html\">Entaxy docs</a>",
      "type": "String",
      "group": "main",
      "required": true,
      "@TYPEINFO": {
        "type": "list",
        "source": {
          "property": "schemaUrl",
          "sourceType": "resource",
          "path": "#metadata#.wsdl.${serviceFullName}.ports",
          "type": "property"
        },
        "dependsOn": [
          "schemaUrl",
          "serviceFullName"
        ]
      }
    },
    "authorizationType": {
      "displayName": "Authorization Type",
      "type": "string",
      "required": true,
      "defaultValue": "JAAS",
      "@TYPEINFO": {
        "type": "enum",
        "values": [
          "NONE",
          "JAAS"
        ],
        "isEmptyIncluded": false
      }
    },
    "dataFormat": {
      "displayName": "Data Format",
      "description": "Supported data formats: <br/> PAYLOAD is the message payload (the contents of the soap:body) after message configuration in the CXF endpoint is applied. Only Protocol JAX-WS handler is supported. Logical JAX-WS handler is not supported. <br/> CXF_MESSAGE allows for invoking the full capabilities of CXF interceptors by converting the message from the transport layer into a raw SOAP message <br/> For more details see <a target=\"_blank\" href=\"https://docs.entaxy.ru/entaxy-core/${project.version}/core/schema/Soap_services.html\">Entaxy docs</a>",
      "type": "String",
      "required": true,
      "group": "main",
      "@TYPEINFO": {
        "type": "enum",
        "values": [
          "PAYLOAD",
          "CXF_MESSAGE"
        ]
      },
      "defaultValue": "PAYLOAD"
    },
    "mtomEnabled": {
      "displayName": "MTOM Enabled",
      "description": "Enables MTOM (attachments). This requires to use POJO or PAYLOAD data format mode. For more details see <a target=\"_blank\" href=\"https://docs.entaxy.ru/entaxy-core/${project.version}/core/schema/Soap_services.html\">Entaxy docs</a>",
      "type": "Boolean",
      "required": true,
      "group": "main",
      "defaultValue": false
    },
    "schemaValidationEnabled": {
      "displayName": "Schema Validation Enabled",
      "description": "Enables schema validation for messages. Throws an exception if the message does not comply with the specified XML schema. For more details see <a target=\"_blank\" href=\"https://docs.entaxy.ru/entaxy-core/${project.version}/core/schema/Soap_services.html\">Entaxy docs</a>",
      "type": "Boolean",
      "required": true,
      "group": "main",
      "defaultValue": false
    },
    "_serviceMetadata": {
      "type": "Map",
      "required": true,
      "isHidden": true,
      "@INTERNAL": true,
      "defaultValue": {
        "@RESOURCE_META": {
          "url": {
            "@CALCULATED": {
              "lazy": false,
              "expression": "${properties.schemaUrl}"
            }
          },
          "path": {
            "@CALCULATED": {
              "lazy": false,
              "expression": "wsdl.\u0027${properties.serviceFullName}\u0027"
            }
          }
        }
      }
    },
    "serviceName": {
      "type": "String",
      "group": "main",
      "required": true,
      "isHidden": true,
      "defaultValue": {
        "@CALCULATED": {
          "lazy": false,
          "expression": "${properties._serviceMetadata.serviceName}"
        }
      }
    },
    "serviceNamespace": {
      "type": "String",
      "group": "main",
      "required": true,
      "isHidden": true,
      "defaultValue": {
        "@CALCULATED": {
          "lazy": false,
          "expression": "${properties._serviceMetadata.serviceNamespace}"
        }
      }
    },
    "operationRouter": {
      "displayName": "Operation Router",
      "description": "Defines how service operations are routed by configuring specific actions to be executed upon receiving requests for each operation of a service.",
      "type": "xml:route",
      "required": true,
      "group": "main",
      "@RESOURCE": {
        "_provider": "entaxy-file-internal",
        "endType": "String",
        "format": "base64",
        "postprocess_bak": [
          {
            "processor": "xslt",
            "source": "entaxy-file-internal:routes-common/service-commons.xslt",
            "parameters": {
              "serviceId": {
                "@CALCULATED": {
                  "expression": "${#OWNER#.objectId}",
                  "lazy": false
                }
              }
            }
          },
          {
            "processor": "xslt",
            "source": "entaxy-file-internal:routes-common/soap-operation-router.xslt",
            "parameters": {
              "serviceId": {
                "@CALCULATED": {
                  "expression": "${#OWNER#.objectId}",
                  "lazy": false
                }
              }
            }
          },
          {
            "processor": "xslt",
            "source": "entaxy-file-internal:routes-common/common-components.xslt",
            "parameters": {
              "serviceId": {
                "@CALCULATED": {
                  "expression": "${#OWNER#.objectId}",
                  "lazy": false
                }
              }
            }
          }
        ],
        "postprocess": [
          {
            "processor": "component-library",
            "parameters": {
              "serviceType": {
                "@CALCULATED": {
                  "expression": "${#OWNER#.#FACTORY#.#TYPEINFO#.serviceType}",
                  "lazy": false
                }
              },
              "serviceScope": {
                "@CALCULATED": {
                  "expression": "${#OWNER#.#FACTORY#.#TYPEINFO#.serviceScope}",
                  "lazy": false
                }
              }
            }
          }
        ]
      },
      "defaultValue": {
        "@RESOURCE": {
          "provider": "service-resources",
          "location": {
            "@CALCULATED": {
              "lazy": false,
              "expression": "${#OWNER#.properties._serviceMetadata.serviceResourcesRoot}/${#OWNER#.properties.port}/operationRouterProtected.xml"
            }
          },
          "endType": "String",
          "format": "base64"
        }
      },
      "@TYPEINFO": {
        "type": "resource",
        "location": "${serviceResourcesRoot}/${port}/operationRouterProtected.xml",
        "serviceResourcesRoot": {
          "property": "schemaUrl",
          "sourceType": "resource",
          "path": "#metadata#.wsdl.${serviceFullName}.serviceResourcesRoot",
          "type": "property"
        },
        "dependsOn": [
          "schemaUrl",
          "serviceFullName",
          "port"
        ]
      },
      "config": {
        "scope": "public"
      }
    },
    "@IMPORT": [
      {
        "sourceFactoryId": "service-components",
        "location": "outputs.schemaResourceBasedService.fields",
        "prefix": ""
      }
    ]
  },
  "outputs": {
    "init": {
      "fields": {
        "schemaUrl": {
          "description": "The resource on which the current service is based. For more details see <a target=\"_blank\" href=\"https://docs.entaxy.ru/entaxy-core/${project.version}/core/schema/Soap_services.html\">Entaxy docs</a>",
          "displayName": "WSDL schema",
          "group": "main",
          "@TYPEINFO": {
            "filter": "*.wsdl",
            "useShortUrl": true
          }
        },
        "@IMPORT": [
          {
            "sourceFactoryId": "service-components",
            "location": "outputs.serviceSecurity.fields",
            "prefix": ""
          }
        ],
        "serviceFullName": {},
        "port": {},
        "authorizationType": {},
        "dataFormat": {},
        "mtomEnabled": {},
        "schemaValidationEnabled": {},
        "operationRouter": {},
        "_serviceMetadata": {},
        "serviceName": {},
        "serviceNamespace": {},
        "displayServiceSchema": {}
      }
    }
  }
}
