<rests xmlns="http://camel.apache.org/schema/spring">
	<rest>
		<get uri="/v2/loop/getAllNames" outType="java.lang.String[]"
			produces="application/json">
			<route>
				<removeHeaders pattern="*" />
				<doTry>
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'GET ALL Loop')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','read')" />
					<to
						uri="bean:org.onap.clamp.loop.LoopController?method=getLoopNames()" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</get>
		<get uri="/v2/loop/{loopName}" outType="org.onap.clamp.loop.Loop"
			produces="application/json">
			<route>
				<removeHeaders pattern="*" excludePattern="loopName" />
				<doTry>
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'GET Loop')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','read')" />
					<to
						uri="bean:org.onap.clamp.loop.LoopController?method=getLoop(${header.loopName})" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</get>
		<get uri="/v2/loop/svgRepresentation/{loopName}"
			outType="java.lang.String" produces="application/xml">
			<route>
				<removeHeaders pattern="*" excludePattern="loopName" />
				<doTry>
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'Get SVG Representation')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','read')" />
					<to
						uri="bean:org.onap.clamp.loop.LoopController?method=getSvgRepresentation(${header.loopName})" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</get>

		<post uri="/v2/loop/updateGlobalProperties/{loopName}"
			type="com.google.gson.JsonObject" consumes="application/json"
			outType="org.onap.clamp.loop.Loop" produces="application/json">
			<route>
				<removeHeaders pattern="*" excludePattern="loopName" />
				<doTry>
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'Update the global properties')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
					<setHeader headerName="GlobalPropertiesJson">
						<simple>${body}</simple>
					</setHeader>
					<to uri="direct:load-loop" />
					<to
						uri="bean:org.onap.clamp.loop.LoopController?method=updateGlobalPropertiesJson(${header.loopName},${header.GlobalPropertiesJson})" />
					<to
						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Global Properties UPDATED','INFO',${exchangeProperty[loopObject]})" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</post>
		<post uri="/v2/loop/updateOperationalPolicies/{loopName}"
			type="com.google.gson.JsonArray" consumes="application/json"
			outType="org.onap.clamp.loop.Loop" produces="application/json">
			<route>
				<removeHeaders pattern="*" excludePattern="loopName" />
				<doTry>
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'Update operational policies')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
					<setHeader headerName="OperationalPoliciesArray">
						<simple>${body}</simple>
					</setHeader>
					<to uri="direct:load-loop" />
					<to
						uri="bean:org.onap.clamp.loop.LoopController?method=updateOperationalPolicies(${header.loopName},${header.OperationalPoliciesArray})" />
					<to
						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Operational and Guard policies UPDATED','INFO',${exchangeProperty[loopObject]})" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</post>
		<post uri="/v2/loop/updateMicroservicePolicy/{loopName}"
			type="org.onap.clamp.policy.microservice.MicroServicePolicy"
			consumes="application/json"
			outType="org.onap.clamp.policy.microservice.MicroServicePolicy"
			produces="application/json">
			<route>
				<removeHeaders pattern="*" excludePattern="loopName" />
				<doTry>
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'Update Microservice policies')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
					<setProperty propertyName="MicroServicePolicyObject">
						<simple>${body}</simple>
					</setProperty>

					<to uri="direct:load-loop" />
					<to
						uri="bean:org.onap.clamp.loop.LoopController?method=updateMicroservicePolicy(${header.loopName},${exchangeProperty[MicroServicePolicyObject]})" />
					<to
						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Micro Service policies UPDATED','INFO',${exchangeProperty[loopObject]})" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</post>
		<put uri="/v2/loop/deploy/{loopName}"
			outType="org.onap.clamp.loop.Loop" produces="application/json">
			<route>
				<removeHeaders pattern="*" excludePattern="loopName" />
				<doTry>
					<log loggingLevel="INFO"
						message="DCAE DEPLOY request for loop: ${header.loopName}" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'DCAE DEPLOY request')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
					<to uri="direct:load-loop" />
					<to
						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('DCAE DEPLOY request','INFO',${exchangeProperty[loopObject]})" />

					<to uri="direct:deploy-loop" />

					<log loggingLevel="INFO"
						message="DEPLOY request successfully executed for loop: ${header.loopName}" />
					<to
						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('DEPLOY request successfully executed','INFO',${exchangeProperty[loopObject]})" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
						<log loggingLevel="ERROR"
							message="DEPLOY request failed for loop: ${header.loopName}" />
						<to
							uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('DEPLOY request failed, Error reported: ${exception} - Body: ${exception.responseBody}','ERROR',${exchangeProperty[loopObject]})" />
					</doCatch>
				</doTry>
			</route>
		</put>
		<put uri="/v2/loop/refreshOpPolicyJsonSchema/{loopName}"
			outType="org.onap.clamp.loop.Loop" produces="application/json">
			<route>
				<removeHeaders pattern="*" excludePattern="loopName" />
				<doTry>
					<log loggingLevel="INFO"
						message="Refresh Operational Policy UI for loop: ${header.loopName}" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'REFRESH OP Policy UI request')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
					<to uri="direct:load-loop" />
					<to
						uri="bean:org.onap.clamp.loop.LoopController?method=refreshOpPolicyJsonRepresentation(${header.loopName})" />
					<log loggingLevel="INFO"
						message="REFRESH request successfully executed for loop: ${header.loopName}" />
					<to
						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('REFRESH request successfully executed','INFO',${exchangeProperty[loopObject]})" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
						<log loggingLevel="ERROR"
							message="REFRESH request failed for loop: ${header.loopName}" />
						<to
							uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('REFRESH request failed, Error reported: ${exception} - Body: ${exception.responseBody}','ERROR',${exchangeProperty[loopObject]})" />
					</doCatch>
				</doTry>
			</route>
		</put>
		<put uri="/v2/loop/undeploy/{loopName}"
			outType="org.onap.clamp.loop.Loop" produces="application/json">
			<route>
				<removeHeaders pattern="*" excludePattern="loopName" />
				<doTry>
					<log loggingLevel="INFO"
						message="DCAE UNDEPLOY request for loop: ${header.loopName}" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'DCAE UNDEPLOY request')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
					<to uri="direct:load-loop" />
					<to
						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('DCAE UNDEPLOY request','INFO',${exchangeProperty[loopObject]})" />
					<to uri="direct:undeploy-loop" />

					<log loggingLevel="INFO"
						message="UNDEPLOY request successfully executed for loop: ${header.loopName}" />
					<to
						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('UNDEPLOY request successfully executed','INFO',${exchangeProperty[loopObject]})" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
						<log loggingLevel="ERROR"
							message="UNDEPLOY request failed for loop: ${header.loopName}" />
						<to
							uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('UNDEPLOY request failed, Error reported: ${exception} - Body: ${exception.responseBody}','ERROR',${exchangeProperty[loopObject]})" />
					</doCatch>
				</doTry>
			</route>
		</put>
		<put uri="/v2/loop/stop/{loopName}"
			outType="org.onap.clamp.loop.Loop" produces="application/json">
			<route>
				<removeHeaders pattern="*" excludePattern="loopName" />
				<doTry>
					<log loggingLevel="INFO"
						message="STOP request for loop: ${header.loopName}" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*,'STOP request')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
					<to uri="direct:load-loop" />
					<to
						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('STOP request','INFO',${exchangeProperty[loopObject]})" />

					<to uri="direct:remove-all-policy-from-active-pdp-group" />
					<log loggingLevel="INFO"
						message="STOP request successfully executed for loop: ${header.loopName}" />
					<to
						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('STOP request successfully executed','INFO',${exchangeProperty[loopObject]})" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
						<log loggingLevel="ERROR"
							message="STOP request failed for loop: $${header.loopName}" />
						<to
							uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('STOP request failed, Error reported: ${exception} - Body: ${exception.responseBody}','ERROR',${exchangeProperty[loopObject]})" />
					</doCatch>
				</doTry>
			</route>
		</put>
		<put uri="/v2/loop/restart/{loopName}"
			outType="org.onap.clamp.loop.Loop" produces="application/json">
			<route>
				<removeHeaders pattern="*" excludePattern="loopName" />
				<doTry>
					<log loggingLevel="INFO"
						message="RESTART request for loop: ${header.loopName}" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*,'RESTART request')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
					<to uri="direct:load-loop" />

					<to
						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('RESTART request','INFO',${exchangeProperty[loopObject]})" />

					<to uri="direct:add-all-to-active-pdp-group" />
					<log loggingLevel="INFO"
						message="RESTART request successfully executed for loop: ${header.loopName}" />
					<to
						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('RESTART request successfully executed','INFO',${exchangeProperty[loopObject]})" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
						<log loggingLevel="ERROR"
							message="RESTART request failed for loop: ${header.loopName}" />
						<to
							uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('RESTART request failed, Error reported: ${exception} - Body: ${exception.responseBody}','INFO',${exchangeProperty[loopObject]})" />
					</doCatch>
				</doTry>
			</route>
		</put>
		<put uri="/v2/loop/submit/{loopName}"
			outType="org.onap.clamp.loop.Loop" produces="application/json">
			<route>
				<removeHeaders pattern="*" excludePattern="loopName" />
				<doTry>
					<log loggingLevel="INFO"
						message="POLICY SUBMIT request for loop: ${header.loopName}" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'POLICY SUBMIT request')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
					<to uri="direct:load-loop" />
					<to
						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('POLICY SUBMIT request','INFO',${exchangeProperty[loopObject]})" />
					<setProperty propertyName="raiseHttpExceptionFlag">
						<simple resultType="java.lang.Boolean">false</simple>
					</setProperty>
					<to uri="direct:remove-all-policy-from-active-pdp-group" />
					<log loggingLevel="INFO"
						message="Processing all MICRO-SERVICES policies defined in loop ${exchangeProperty[loopObject].getName()}" />
					<split>
						<simple>${exchangeProperty[loopObject].getMicroServicePolicies()}
						</simple>
						<setProperty propertyName="microServicePolicy">
							<simple>${body}</simple>
						</setProperty>
						<log loggingLevel="INFO"
							message="Processing Micro Service Policy: ${exchangeProperty[microServicePolicy].getName()}" />
						<setProperty propertyName="raiseHttpExceptionFlag">
							<simple resultType="java.lang.Boolean">false</simple>
						</setProperty>
						<to uri="direct:delete-micro-service-policy" />
						<to uri="direct:create-micro-service-policy" />
					</split>
					<log loggingLevel="INFO"
						message="Processing all OPERATIONAL policies defined in loop ${exchangeProperty[loopObject].getName()}" />
					<split>
						<simple>${exchangeProperty[loopObject].getOperationalPolicies()}
						</simple>
						<setProperty propertyName="operationalPolicy">
							<simple>${body}</simple>
						</setProperty>
						<log loggingLevel="INFO"
							message="Processing Operational Policy: ${exchangeProperty[operationalPolicy].getName()}" />
						<setProperty propertyName="raiseHttpExceptionFlag">
							<simple resultType="java.lang.Boolean">false</simple>
						</setProperty>

						<to uri="direct:delete-operational-policy" />
						<to uri="direct:create-operational-policy" />

						<log loggingLevel="INFO"
							message="Processing all GUARD policies defined in loop ${exchangeProperty[loopObject].getName()}" />
						<split>
							<simple>${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()}
							</simple>
							<setProperty propertyName="guardPolicy">
								<simple>${body}</simple>
							</setProperty>
							<log loggingLevel="INFO"
								message="Processing Guard Policy: ${exchangeProperty[guardPolicy].getKey()}" />

							<setProperty propertyName="raiseHttpExceptionFlag">
								<simple resultType="java.lang.Boolean">false</simple>
							</setProperty>
							<to uri="direct:delete-guard-policy" />
							<to uri="direct:create-guard-policy" />
						</split>
					</split>

					<delay>
						<constant>3000</constant>
					</delay>

					<to uri="direct:add-all-to-active-pdp-group" />

					<log loggingLevel="INFO"
						message="SUBMIT request successfully executed for loop: ${header.loopName}" />
					<to
						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('SUBMIT request successfully executed','INFO',${exchangeProperty[loopObject]})" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
						<log loggingLevel="ERROR"
							message="SUBMIT request failed for loop: ${header.loopName}" />
						<to
							uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('SUBMIT request failed, Error reported: ${exception} - Body: ${exception.responseBody}','ERROR',${exchangeProperty[loopObject]})" />
					</doCatch>
				</doTry>
			</route>
		</put>
		<put uri="/v2/loop/delete/{loopName}">
			<route>
				<removeHeaders pattern="*" excludePattern="loopName" />
				<doTry>
					<log loggingLevel="INFO"
						message="DELETE request for loop: ${header.loopName}" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*,'DELETE request')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
					<to uri="direct:load-loop" />
					<to
						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('DELETE request','INFO',${exchangeProperty[loopObject]})" />
					<to uri="direct:undeploy-loop" />
					<to uri="direct:remove-all-policy-from-active-pdp-group" />
					<split>
						<simple>${exchangeProperty[loopObject].getMicroServicePolicies()}
						</simple>
						<setProperty propertyName="microServicePolicy">
							<simple>${body}</simple>
						</setProperty>
						<log loggingLevel="INFO"
							message="Processing Micro Service Policy: ${exchangeProperty[microServicePolicy].getName()}" />
						<to uri="direct:delete-micro-service-policy" />
					</split>

					<log loggingLevel="INFO"
						message="Processing all OPERATIONAL policies defined in loop ${exchangeProperty[loopObject].getName()}" />
					<split>
						<simple>${exchangeProperty[loopObject].getOperationalPolicies()}
						</simple>
						<setProperty propertyName="operationalPolicy">
							<simple>${body}</simple>
						</setProperty>
						<log loggingLevel="INFO"
							message="Processing Operational Policy: ${exchangeProperty[operationalPolicy].getName()}" />
						<to uri="direct:delete-operational-policy" />
						<log loggingLevel="INFO"
							message="Processing all GUARD policies defined in loop ${exchangeProperty[loopObject].getName()}" />
						<split>
							<simple>${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()}
							</simple>
							<setProperty propertyName="guardPolicy">
								<simple>${body}</simple>
							</setProperty>
							<log loggingLevel="INFO"
								message="Processing Guard Policy: ${exchangeProperty[guardPolicy].getKey()}" />
							<to uri="direct:delete-guard-policy" />
						</split>
					</split>
					<to
						uri="bean:org.onap.clamp.loop.log.LoopController?method=deleteLoop(${header.loopName})" />
					<log loggingLevel="INFO"
						message="DELETE request successfully executed for loop: ${header.loopName}" />
					<to
						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('DELETE request successfully executed','INFO',${exchangeProperty[loopObject]})" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
						<log loggingLevel="ERROR"
							message="DELETE request failed for loop: ${header.loopName}" />
						<to
							uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('DELETE request failed, Error reported: ${exception} - Body: ${exception.responseBody}','ERROR',${exchangeProperty[loopObject]})" />
					</doCatch>
				</doTry>
			</route>
		</put>
		<get uri="/v2/loop/getstatus/{loopName}"
			outType="org.onap.clamp.loop.Loop" produces="application/json">
			<route>
				<removeHeaders pattern="*" excludePattern="loopName" />
				<doTry>
					<log loggingLevel="INFO"
						message="GET STATUS request for loop: ${header.loopName}" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'GET STATUS request')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','read')" />
					<to uri="direct:load-loop" />
					<to
						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('GET STATUS request','INFO',${exchangeProperty[loopObject]})" />
					<doTry>
						<to uri="direct:update-policy-status-for-loop" />
						<to uri="direct:update-dcae-status-for-loop" />
						<to uri="direct:update-loop-state" />

						<to
							uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Get Status request successfully executed','INFO',${exchangeProperty[loopObject]})" />
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					</doTry>
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
						<log loggingLevel="ERROR"
							message="Get Status request failed for loop: ${header.loopName}" />
						<to
							uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Get Status request failed, Error reported: ${exception} - Body: ${exception.responseBody}','ERROR',${exchangeProperty[loopObject]})" />
					</doCatch>
					<doFinally>
						<setBody>
							<simple>${exchangeProperty[loopObject]}</simple>
						</setBody>
					</doFinally>
				</doTry>
			</route>
		</get>

		<put uri="/v2/loop/addOperationaPolicy/{loopName}/policyModel/{policyType}/{policyVersion}" outType="org.onap.clamp.loop.Loop" produces="application/json">
			<route>
				<removeHeaders pattern="*" excludePattern="loopName|policyType|policyVersion" />
				<doTry>
					<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'Add operational Policy')" />
					<to
							uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
					<to uri="direct:load-loop" />
					<to
							uri="bean:org.onap.clamp.loop.LoopController?method=addOperationalPolicy(${header.loopName},${header.policyType},${header.policyVersion})" />
					<to
							uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('ADD OperationalPolicy request successfully executed','INFO',${exchangeProperty[loopObject]})" />
					<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
								uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
						<log loggingLevel="ERROR"
							 message="ADD OperationalPolicy request failed for loop: ${header.loopName}" />
						<to
								uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('ADD OperationalPolicy request failed','ERROR',${exchangeProperty[loopObject]})" />
					</doCatch>
				</doTry>
			</route>
		</put>
		<post
				uri="/v2/loop/create/{loopName}?templateName={templateName}"
				outType="org.onap.clamp.loop.Loop" consumes="application/json"
				produces="application/json">
			<route>
				<removeHeaders
						pattern="*"
						excludePattern="loopName|templateName" />
				<doTry>
					<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'Create Loop')" />
					<to
							uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
					<to
							uri="bean:org.onap.clamp.loop.LoopController?method=createLoop(${header.loopName}, ${header.templateName})" />
					<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>true</constant>
						</handled>
						<setHeader headerName="CamelHttpResponseCode">
							<constant>500</constant>
						</setHeader>
						<transform>
							<simple>ERROR: ${exception.message}</simple>
					</transform>
						<to
								uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</post>
		<get uri="/v2/dictionary"
			outType="org.onap.clamp.tosca.Dictionary" produces="application/json">
			<route>
				<removeHeaders pattern="*" />
				<doTry>
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'GET ALL Dictionaries')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'tosca','','read')" />
					<to
						uri="bean:org.onap.clamp.tosca.DictionaryService?method=getAllDictionaries()" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</get>

		<get uri="/v2/dictionary/secondary/names"
			outType="java.lang.String[]" produces="application/json">
			<route>
				<removeHeaders pattern="*" />
				<doTry>
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'GET ALL Secondary Dictionary Level Names')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'tosca','','read')" />
					<to
						uri="bean:org.onap.clamp.tosca.DictionaryService?method=getAllSecondaryLevelDictionaryNames()" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</get>
		<get uri="/v2/dictionary/{dictionaryName}"
			outType="org.onap.clamp.tosca.Dictionary" produces="application/json">
			<route>
				<removeHeaders pattern="*"
					excludePattern="dictionaryName" />
				<doTry>
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'GET ALL Dictionary Elements for a Dictionary Name')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'tosca','','read')" />
					<to
						uri="bean:org.onap.clamp.tosca.DictionaryService?method=getDictionary(${header.dictionaryName})" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</get>
		<put uri="/v2/dictionary" type="org.onap.clamp.tosca.Dictionary"
			outType="org.onap.clamp.tosca.Dictionary" consumes="application/json"
			produces="application/json">
			<route>
				<doTry>
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'Add New or Update Dictionary')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'tosca','','update')" />
					<setProperty propertyName="DictionaryObject">
						<simple>${body}</simple>
					</setProperty>
					<to
						uri="bean:org.onap.clamp.tosca.DictionaryService?method=saveOrUpdateDictionary(${exchangeProperty[DictionaryObject]})" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</put>

		<put uri="/v2/dictionary/{name}"
			type="org.onap.clamp.tosca.Dictionary"
			outType="org.onap.clamp.tosca.Dictionary" consumes="application/json"
			produces="application/json">
			<route>
				<removeHeaders pattern="*" excludePattern="name" />
				<doTry>
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'Add New or Update Dictionary Element')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'tosca','','update')" />
					<setProperty propertyName="DictionaryObject">
						<simple>${body}</simple>
					</setProperty>
					<to
						uri="bean:org.onap.clamp.tosca.DictionaryService?method=saveOrUpdateDictionaryElement(${header.name}, ${exchangeProperty[DictionaryObject]})" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</put>

		<delete uri="/v2/dictionary/{name}" produces="application/json">
			<route>
				<removeHeaders pattern="*" excludePattern="name" />
				<doTry>
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'Delete Dictionary')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'tosca','','update')" />
					<to
						uri="bean:org.onap.clamp.tosca.DictionaryService?method=deleteDictionary(${header.name})" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</delete>

		<delete uri="/v2/dictionary/{name}/elements/{shortName}"
			produces="application/json">
			<route>
				<removeHeaders pattern="*"
					excludePattern="name|shortName" />
				<doTry>
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'Delete Dictionary Element')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'tosca','','update')" />
					<to
						uri="bean:org.onap.clamp.tosca.DictionaryService?method=deleteDictionaryElement(${header.name}, ${header.shortName})" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</delete>

		<get uri="/v2/policyToscaModels"
			outType="org.onap.clamp.loop.template.PolicyModel"
			produces="application/json">
			<route>
				<removeHeaders pattern="*" />
				<doTry>
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'GET ALL Tosca Policy Models')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'tosca','','read')" />
					<to
						uri="bean:org.onap.clamp.loop.template.PolicyModelsService?method=getAllPolicyModels()" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>true</constant>
						</handled>
						<setHeader headerName="CamelHttpResponseCode">
							<constant>500</constant>
						</setHeader>
						<transform>
							<simple>ERROR: ${exception.message}</simple>
						</transform>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</get>
		<get uri="/v2/policyToscaModels/{policyModelType}/{policyModelVersion}"
			outType="org.onap.clamp.loop.template.PolicyModel"
			produces="application/json">
			<route>
				<removeHeaders pattern="*"
					excludePattern="policyModelType|policyModelVersion" />
				<doTry>
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'GET Tosca Policy Model by Name/Version')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'tosca','','read')" />
					<to
						uri="bean:org.onap.clamp.loop.template.PolicyModelsService?method=getPolicyModelByType(${header.policyModelType},${header.policyModelVersion})" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>true</constant>
						</handled>
						<setHeader headerName="CamelHttpResponseCode">
							<constant>500</constant>
						</setHeader>
						<transform>
							<simple>ERROR: ${exception.message}</simple>
						</transform>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</get>
		<get uri="/v2/policyToscaModels/yaml/{policyModelType}/{policyModelVersion}"
			outType="java.lang.String" produces="application/json">
			<route>
				<removeHeaders pattern="*"
					excludePattern="policyModelType|policyModelVersion" />
				<doTry>
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'GET Tosca Policy Model Yaml String by Name/Version')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'tosca','','read')" />
					<to
						uri="bean:org.onap.clamp.loop.template.PolicyModelsService?method=getPolicyModelTosca(${header.policyModelType},${header.policyModelVersion})" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>true</constant>
						</handled>
						<setHeader headerName="CamelHttpResponseCode">
							<constant>500</constant>
						</setHeader>
						<transform>
							<simple>ERROR: ${exception.message}</simple>
						</transform>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</get>

		<post uri="/v2/policyToscaModels/{policyModelType}"
			type="java.lang.String"
			outType="org.onap.clamp.loop.template.PolicyModel"
			consumes="plain/text" produces="application/json">
			<route>
				<removeHeaders pattern="*"
					excludePattern="policyModelType" />
				<doTry>
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'Upload New or Update Tosca Policy Model')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'tosca','','update')" />
					<setProperty propertyName="PolicyModelTosca">
						<simple>${body}</simple>
					</setProperty>
					<to
						uri="bean:org.onap.clamp.loop.template.PolicyModelsService?method=createNewPolicyModelFromTosca(${header.policyModelType},${exchangeProperty[PolicyModelTosca]})" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>true</constant>
						</handled>
						<setHeader headerName="CamelHttpResponseCode">
							<constant>404</constant>
						</setHeader>
						<transform>
							<simple>ERROR: ${exception.message}</simple>
						</transform>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</post>
		<put uri="/v2/policyToscaModels/{policyModelType}/{policyModelVersion}"
			  type="java.lang.String"
			  outType="org.onap.clamp.loop.template.PolicyModel"
			  consumes="plain/text" produces="application/json">
			<route>
				<removeHeaders pattern="*"
							   excludePattern="policyModelType|policyModelVersion" />
				<doTry>
					<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'Upload New or Update Tosca Policy Model')" />
					<to
							uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'tosca','','update')" />
					<setProperty propertyName="PolicyModelTosca">
						<simple>${body}</simple>
					</setProperty>
					<to
							uri="bean:org.onap.clamp.loop.template.PolicyModelsService?method=updatePolicyModelTosca(${header.policyModelType},${policyModelVersion},${exchangeProperty[PolicyModelTosca]})" />
					<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>true</constant>
						</handled>
						<setHeader headerName="CamelHttpResponseCode">
							<constant>404</constant>
						</setHeader>
						<transform>
							<simple>ERROR: ${exception.message}</simple>
						</transform>
						<to
								uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</put>

		<get uri="/v2/templates"
			outType="org.onap.clamp.loop.template.LoopTemplate"
			produces="application/json">
			<route>
				<removeHeaders pattern="*" />
				<doTry>
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'GET ALL Templates')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'template','','read')" />
					<to
						uri="bean:org.onap.clamp.loop.template.LoopTemplatesService?method=getAllLoopTemplates()" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>true</constant>
						</handled>
						<setHeader headerName="CamelHttpResponseCode">
							<constant>500</constant>
						</setHeader>
						<transform>
							<simple>ERROR: ${exception.message}</simple>
						</transform>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</get>
		<get uri="/v2/templates/{templateName}"
			outType="org.onap.clamp.loop.template.LoopTemplate"
			produces="application/json">
			<route>
				<removeHeaders pattern="*"
					excludePattern="templateName" />
				<doTry>
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'GET a Template by NAME')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'template','','read')" />
					<to
						uri="bean:org.onap.clamp.loop.template.LoopTemplatesService?method=getLoopTemplate(${header.templateName})" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>true</constant>
						</handled>
						<setHeader headerName="CamelHttpResponseCode">
							<constant>500</constant>
						</setHeader>
						<transform>
							<simple>ERROR: ${exception.message}</simple>
						</transform>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</get>
		<get uri="/v2/templates/names" outType="java.lang.String[]"
			produces="application/json">
			<route>
				<removeHeaders pattern="*" />
				<doTry>
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'GET ALL Loop Template Names')" />
					<to
						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'template','','read')" />
					<to
						uri="bean:org.onap.clamp.loop.template.LoopTemplatesService?method=getLoopTemplateNames()" />
					<to
						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</get>
		<get uri="/v2/templates/{templateName}/svgRepresentation"
			 outType="java.lang.String" produces="application/xml">
			<route>
				<removeHeaders pattern="*" excludePattern="templateName" />
				<doTry>
					<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'Get SVG Representation for Loop template')" />
					<to
							uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'template','','read')" />
					<to
							uri="bean:org.onap.clamp.loop.template.LoopTemplatesService?method=getSvgRepresentation(${header.templateName})" />
					<to
							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
					<doCatch>
						<exception>java.lang.Exception</exception>
						<handled>
							<constant>false</constant>
						</handled>
						<to
								uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
					</doCatch>
				</doTry>
			</route>
		</get>
		<get uri="/v2/clampInformation" outType="org.onap.clamp.clds.model.ClampInformation"
			 produces="application/json">
			<to
					uri="bean:org.onap.clamp.authorization.AuthorizationController?method=getClampInformation()" />
		</get>
	</rest>
</rests>