{
	"factory": {
		"id": "abstract-route-container",
		"type": "entaxy.runtime.route-container",
		"description": "Factory abstract-route-container of entaxy.runtime.route-container"
	},
	"entaxy.runtime.route-container": {
		"routeContainerType": "OBJECT"
	},
	"fields": {
		"routes": {
			"@PUBLISH_UNRESOLVED": "object",
			"type": "list",
			"group": "routes",
			"itemType": "entaxy.runtime.route",
			"itemFactory": {
				"filter": "(type=entaxy.runtime.route)"
			},
			"itemScope": "private",
			"immutable": true,
			"@TYPEINFO": {
				"excludeLabel": true,
				"enablePrivateObjectCreation": true,
				"privateObjectTypes": [
					{
						"name": "entaxy.runtime.route",
						"displayName": "Route"
					}
				],
				"itemTitle": {
					"fields": [
						"routeId"
					],
					"delimiter": "."
				},
				"useAsIdentifier": "routeId",
				"validation": {
					"rules": {
						"checkUniqueness": {
							"fields": [
								"routeId"
							]
						}
					}
				}
			},
			"@UI": {
				"fieldExtraInfo": {
					"type": "info",
					"message": "To create or edit route find associated node in tree",
					"displayOnMode": "Edit"
				}
			}
		},
		"__globalOptions": {
			"type": "entaxy.runtime.route-container",
			"isRef": true,
			"required": true,
			"isHidden": true,
			"isRefByValueOnly": true,
			"@INTERNAL": true,
			"defaultValue": {
				"type": "entaxy.runtime.route-container",
				"factoryId": "#OWNER#",
				"outputType": "globalOptions",
				"scope": "private",
				"properties": {
					"containerId": {
						"@CALCULATED": {
							"expression": "${#OWNER#.objectId}",
							"lazy": true
						}
					},
					"containerType": {
						"@CALCULATED": {
							"expression": "${#OWNER#.#FACTORY#.factory.type}",
							"lazy": false,
							"allowObjects": false
						}
					}
				}
			}
		},
		"__errorHandler": {
			"type": "entaxy.runtime.route-container",
			"isRef": true,
			"required": true,
			"isHidden": true,
			"isRefByValueOnly": true,
			"@INTERNAL": true,
			"refConfig": {
				"@INTERNAL": true
			},
			"defaultValue": {
				"type": "entaxy.runtime.route-container",
				"factoryId": "#OWNER#",
				"outputType": "errorHandler",
				"scope": "private",
				"properties": {
					"errorHandlerType": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.errorHandlerType}",
							"lazy": false
						}
					},
					"deadLetterUri": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.deadLetterUri}",
							"lazy": false
						}
					},
					"maximumRedeliveries": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.maximumRedeliveries}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"redeliveryDelay": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.redeliveryDelay}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"asyncDelayedRedelivery": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.asyncDelayedRedelivery}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"backOffMultiplier": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.backOffMultiplier}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"useExponentialBackOff": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.useExponentialBackOff}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"collisionAvoidanceFactor": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.collisionAvoidanceFactor}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"useCollisionAvoidance": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.useCollisionAvoidance}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"maximumRedeliveryDelay": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.maximumRedeliveryDelay}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"retriesExhaustedLogLevel": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.retriesExhaustedLogLevel}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"retryAttemptedLogLevel": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.retryAttemptedLogLevel}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"retryAttemptedLogInterval": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.retryAttemptedLogInterval}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"logRetryAttempted": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.logRetryAttempted}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"logStackTrace": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.logStackTrace}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"logRetryStackTrace": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.logRetryStackTrace}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"logHandled": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.logHandled}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"logNewException": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.logNewException}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"logContinued": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.logContinued}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"logExhausted": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.logExhausted}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"logExhaustedMessageHistory": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.logExhaustedMessageHistory}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"logExhaustedMessageBody": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.logExhaustedMessageBody}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"disableRedelivery": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.disableRedelivery}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"delayPattern": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.delayPattern}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"allowRedeliveryWhileStopping": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.allowRedeliveryWhileStopping}",
							"fallbackObject": null,
							"lazy": false
						}
					},
					"exchangeFormatterRef": {
						"@CALCULATED": {
							"expression": "${#OWNER#.properties.exchangeFormatterRef}",
							"fallbackObject": null,
							"lazy": false
						}
					}
				}
			}
		},
		"errorHandlerType": {
			"displayName": "Error Handler",
			"description": "The type of the error handler. Default value: DefaultErrorHandler. For more details see <a target=\"_blank\" href=\"https://docs.entaxy.ru/entaxy-core/${project.version}/core/redelivery.html\">Entaxy docs</a> and <a target=\"_blank\" href=\"https://camel-docs.entaxy.ru/manual/${camel-docs.version}/faq/how-do-i-retry-failed-messages-forever.html\">Camel docs</a>",
			"type": "String",
			"@TYPEINFO": {
				"type": "enum",
				"values": [
					"DefaultErrorHandler",
					"DeadLetterChannel",
					"NoErrorHandler"
				]
			},
			"defaultValue": "DefaultErrorHandler",
			"required": true,
			"group": "redelivery policy"
		},
		"deadLetterUri": {
			"displayName": "Dead Letter URI",
			"description": "The dead letter endpoint uri for the Dead Letter error handler. For more details see <a target=\"_blank\" href=\"https://docs.entaxy.ru/entaxy-core/${project.version}/core/redelivery.html\">Entaxy docs</a> and <a target=\"_blank\" href=\"https://camel-docs.entaxy.ru/manual/${camel-docs.version}/faq/how-do-i-retry-failed-messages-forever.html\">Camel docs</a>",
			"type": "String",
			"defaultValue": "log:myLog",
			"required": true,
			"group": "redelivery policy"
		},
		"##publish": {
			"defaultValue": {
				"isRouteContainer": true,
				"routeContainerType": {
					"@CALCULATED": {
						"expression": "${#FACTORY#.#TYPEINFO#.routeContainerType}",
						"lazy": false
					}
				}
			}
		},
		"@IMPORT": [
			{
				"sourceFactoryId": "redelivery-policy",
				"location": "fields",
				"prefix": ""
			}
		]
	},
	"outputs": {
		"init": {
			"isDefault": true,
			"fields": {
				"routes": {
				},
				"__globalOptions": {
				},
				"__errorHandler": {
				},
				"errorHandlerType": {
				},
				"deadLetterUri": {
				},
				"@IMPORT": [
					{
						"sourceFactoryId": "redelivery-policy",
						"location": "fields",
						"prefix": ""
					}
				]
			},
			"config": {
				"configurable": false
			}
		},
		"globalOptions": {
			"fields": {
			},
			"scopes": [
				"private"
			],
			"config": {
				"@SKIP_PUBLISH": {
				},
				"@SKIP_VAULTS_LOOKUP": {},
				"configurable": false
			}
		},
		"errorHandler": {
			"fields": {
				"errorHandlerType": {
				},
				"deadLetterUri": {
				},
				"@IMPORT": [
					{
						"sourceFactoryId": "redelivery-policy",
						"location": "fields",
						"prefix": ""
					}
				]
			},
			"scopes": [
				"private"
			],
			"config": {
				"@SKIP_PUBLISH": {
				},
				"@SKIP_VAULTS_LOOKUP": {},
				"configurable": false
			}
		}
	}
}
