{
  "factory": {
    "id": "abstract-connector-out",
    "type": "entaxy.runtime.connector",
    "description": "Factory abstract-connector-out of entaxy.runtime.connector",
    "parent": "abstract-connector",
    "isAbstract": true
  },
  "entaxy.runtime.connector": {
    "direction": "out",
    "generation.plugins": ["config-support"]
  },
  "fields": {
		"pre-output": {
			"displayName": "Pre-Output",
			"description": "Customize the message processing before further routing to the receiving system.",
			"type": "xml:route",
			"required": true,
			"@RESOURCE": {
				"_provider": "entaxy-file-internal",
				"endType": "String",
				"format": "base64",
				"postprocess_bak":[
					{
						"processor": "xslt",
						"source":"entaxy-file-internal:factories/abstract-connector-out/connector-out.xslt",
						"parameters": {
							"profileName": {				
								"@CALCULATED": {
									"expression": "${#OWNER#.properties.systemName}",
									"lazy": false
								}
							}
						}
					},
					{
						"processor": "xslt",
						"source":"entaxy-file-internal:routes-common/common-components.xslt",
						"parameters": {
							"profileName": {				
								"@CALCULATED": {
									"expression": "${#OWNER#.properties.systemName}",
									"lazy": false
								}
							}
						}
					}
					
				],
		        "postprocess": [
				  {
				  	"processor": "component-library",
					"parameters": {
						"profileName": {				
							"@CALCULATED": {
								"expression": "${#OWNER#.properties.systemName}",
								"lazy": false
							}
						}
					}
				  }
				]					
			},
			"defaultValue": {
				"@RESOURCE": {
					"provider": "entaxy-file-internal",
					"location": "factories/abstract-connector-out/pre-output.xml",
					"endType": "String",
					"format": "base64"
				}
			},
			"config": {
				"scope": "public"
			}
		},
		"processResponse": {
			"description": "Customize the response postprocessing before further routing to the output flow of the profile.",
			"displayName": "Postprocess response"
		},
		"responseRoute": {
			"description": "Enables the response postprocessing before further routing to the output flow of the profile.",
			"displayName": "Postprocess route"
		},
		"__legacy": {
			"type": "entaxy.runtime.connector",
			"isRef": true,
			"required": true,
			"isHidden": true,
			"isRefByValueOnly": true,
			"@INTERNAL": true,
			"defaultValue": {
				"type": "entaxy.runtime.connector",
				"factoryId": "#OWNER#",
				"outputType": "legacy",
				"scope": "private",
				"properties": {
					"connectorId": {
						"@CALCULATED": {
							"expression": "${#OWNER#.objectId}",
							"lazy": true
						}
					},
					"systemName": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.profile}",
							"lazy": false,
							"allowObjects": false
						}
					},
					"type": {
						"@CALCULATED": {
							"expression": "${#OWNER#.#FACTORY#.#TYPEINFO#.type}",
							"lazy": false
						}
					},
					"classifier": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.classifier}",
							"lazy": false
						}
					},
					"protocol": {
						"@CALCULATED": {
							"expression": "${#OWNER#.#FACTORY#.#TYPEINFO#.protocol}",
							"lazy": false
						}
					}
					
				}
			}
		},
		"__rootRoute": {
			"type": "entaxy.runtime.connector",
			"isRef": true,
			"required": true,
			"isHidden": true,
			"isRefByValueOnly": true,
			"@INTERNAL": true,
			"defaultValue": {
				"type": "entaxy.runtime.connector",
				"factoryId": "#OWNER#",
				"outputType": "rootRoute",
				"scope": "private",
				"properties": {
					"connectorId": {
						"@CALCULATED": {
							"expression": "${#OWNER#.objectId}",
							"lazy": true
						}
					},
					"profile": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.profile}",
							"lazy": true
						}						
					},
					"classifier": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.classifier}",
							"lazy": true
						}						
					},
					"processResponse": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.processResponse}",
							"lazy": true,
							"resultType": "boolean"
						}						
					}
				}
			}		
		},
		"__components": {
			"type": "entaxy.runtime.connector",
			"isRef": true,
			"required": true,
			"isHidden": true,
			"isRefByValueOnly": true,
			"@INTERNAL": true,
			"defaultValue": {
				"type": "entaxy.runtime.connector",
				"factoryId": "#OWNER#",
				"outputType": "components",
				"scope": "private",
				"properties": {
					"connectorId": {
						"@CALCULATED": {
							"expression": "${#OWNER#.objectId}",
							"lazy": true
						}
					},
					"systemName": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.profile}",
							"lazy": true
						}						
					},
					"classifier": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.classifier}",
							"lazy": true
						}						
					},
					"type": {
						"@CALCULATED": {
							"expression": "${#OWNER#.#FACTORY#.#TYPEINFO#.type}",
							"lazy": true
						}						
					},
					"protocol": {
						"@CALCULATED": {
							"expression": "${#OWNER#.#FACTORY#.#TYPEINFO#.protocol}",
							"lazy": true
						}						
					}
				}
			}		
		},
		"objectId": {
			"isHidden": true
		},
		"__meta": {
			"defaultValue": {
				"properties": {
					"prefixClassifier": "TARGET"
				}
			}
		}		
  },
  "outputs": {
    "init": {
      "isDefault": true,
      "fields": {
		"pre-output": {},
		"__rootRoute": {},
		"__legacy": {},
		"__components": {},
		"objectId": {}
      },
      "config": {
      	"configurable": false
      }
    },
	    "legacy": {
	    	"fields": {
	    		"systemName": {
	    			"type": "String",
	    			"required": true
	    		},
	    		"classifier": {},
	    		"type": {
	    			"type": "String",
	    			"required": true
	    		},
	    		"protocol": {
	    			"type": "String",
	    			"required": true
	    		}	    		
	    	},
	    	"scopes": ["private"],
			"config": {
				"@SKIP_PUBLISH": {},
				"configurable": false
			}			
	    },
	    "components": {
	    	"fields": {
	    		"connectorId": {
	    			"type": "String",
	    			"required": true
	    		},
	    		"systemName": {
	    			"type": "String",
	    			"required": true
	    		},
	    		"classifier": {
	    			"type": "String",
	    			"required": true
	    		},
	    		"type": {
	    			"type": "String",
	    			"required": true
	    		},
	    		"protocol": {
	    			"type": "String",
	    			"required": true
	    		}	    		
	    	},
	    	"scopes": ["private"],
			"config": {
				"@SKIP_PUBLISH": {},
				"configurable": false
			}			
	    },
		"rootRoute": {
			"fields": {
				"classifier": {},
				"connectorId": {},
				"profile": {},
				"processResponse": {}
			},
			"scopes": ["private"],
			"config": {
				"@SKIP_PUBLISH": {},
				"configurable": false
			}			
		}
	}
}
