{
  "factory": {
    "id": "service-resources-abstract",
    "type": "entaxy.runtime.service.support",
    "description": "Factory service-resources-soap of entaxy.runtime.service.support"
  },
  "entaxy.runtime.service.support": {},
  "fields": {
	"operationRouterFieldTemplate": {
		"type": "xml:route",
		"required": true,
		"_isRef": true,
		"_isRefByValueOnly": true,			
		"@RESOURCE": {
			"endType": "String",
			"provider": "service-resources",
			"scope": "design",
			"##meta": {
				"resource": {
					"generated": true,
					"parentResource": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.parentResource}",
							"resultType": "string",
							"lazy": false					
						}
					}
				},
				"service": {
					"@CALCULATED": {
						"expression": "${#OWNER#.properties.service}",
						"resultType": "map",
						"lazy": false					
					}
				}
			},
			"location": {
				"@CALCULATED": {
					"expression": "${#OWNER#.properties.service.serviceResourcesRoot}/operationRouterSuffix.xml",
					"lazy": false
				}
			},
			"service": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.service}",
							"resultType": "map",
							"lazy": false					
						}
			}
						
		},
		
		"defaultValue": {
			"type": "entaxy.runtime.service.support",
			"factoryId": "#OWNER#",
			"outputType": "operationRouterSuffix",
			"scope": "public",
			"properties": {
				"service": {
					"@CALCULATED": {
						"expression": "${#OWNER#.properties.service}",
						"resultType": "map",
						"lazy": false					
					}
				},
				"parentResource": {
					"@CALCULATED": {
						"expression": "${#OWNER#.properties.parentResource}",
						"resultType": "string",
						"lazy": false					
					}
				}
			},
			"refConfig": {
				"isRefByValueOnly": true
			}
		}
		
	},
  
	"service": {
		"required": true,
		"type": "Map"
	},
	"operationRouterPublic": {
		"@IMPORT": [
	      {
	        "sourceFactoryId": "#",
	        "location": "fields.operationRouterFieldTemplate",
	        "prefix": ""
	      }
	    ],
	    "@RESOURCE": {
	    	"location": {
				"@CALCULATED": {
					"expression": "${#OWNER#.properties.service.serviceResourcesRoot}/operationRouterPublic.xml"
				}
	    	}
	    },
	    "defaultValue": {
	    	"outputType": "operationRouterPublic"
	    }
	}, 
	"operationRouterProtected": {
		"@IMPORT": [
	      {
	        "sourceFactoryId": "#",
	        "location": "fields.operationRouterFieldTemplate",
	        "prefix": ""
	      }
	    ],
	    "@RESOURCE": {
	    	"location": {
				"@CALCULATED": {
					"expression": "${#OWNER#.properties.service.serviceResourcesRoot}/operationRouterProtected.xml"
				}
	    	}
	    },
	    "defaultValue": {
	    	"outputType": "operationRouterProtected"
	    }
	}, 
	"operationRouterConnector": {
		"@IMPORT": [
	      {
	        "sourceFactoryId": "#",
	        "location": "fields.operationRouterFieldTemplate",
	        "prefix": ""
	      }
	    ],
	    "@RESOURCE": {
	    	"location": {
				"@CALCULATED": {
					"expression": "${#OWNER#.properties.service.serviceResourcesRoot}/operationRouterConnector.xml"
				}
	    	}
	    },
	    "defaultValue": {
	    	"outputType": "operationRouterConnector"
	    }
	}    
	    
  },
  "outputs": {
    "init": {
      "isDefault": true,
      "fields": {
      	"service": {},
      	"parentResource": {},
      	"operationRouterPublic": {},
      	"operationRouterProtected": {},
      	"operationRouterConnector": {}
      },
      "config": {
      	"configurable": false
      }
    }, 
    "operationRouterPublic": {
      "isDefault": false,
      "fields": {
      	"service": {},
      	"parentResource": {}
      },
      "config": {
      	"configurable": false
      }
    },
    "operationRouterProtected": {
      "isDefault": false,
      "fields": {
      	"service": {},
      	"parentResource": {}
      },
      "config": {
      	"configurable": false
      }
    },
    "operationRouterConnector": {
      "isDefault": false,
      "fields": {
      	"service": {},
      	"parentResource": {}
      },
      "config": {
      	"configurable": false
      }
    }
  }
}