ENTAXY-374 release 1.8.2
This commit is contained in:
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>ru.entaxy.esb.platform.runtime.modules</groupId>
|
||||
<artifactId>uniform-service</artifactId>
|
||||
<version>1.8.1</version>
|
||||
<version>1.8.2</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
@ -24,13 +24,12 @@
|
||||
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
|
||||
|
||||
<!--template in connector-->
|
||||
<bean id="inTemplate" class="ru.entaxy.esb.system.core.template.TemplateImpl">
|
||||
<bean id="inActiveTemplate" class="ru.entaxy.esb.system.core.template.TemplateImpl">
|
||||
<property name="bundleContext" ref="blueprintBundleContext"/>
|
||||
<property name="templateName" value="uniform-service-in-connector"/>
|
||||
<property name="templateFileName" value="uniform-service-in-connector"/>
|
||||
<property name="templateName" value="uniform-service-active-in-connector"/>
|
||||
<property name="templateFileName" value="uniform-service-active-in-connector"/>
|
||||
<property name="params">
|
||||
<map>
|
||||
<entry key="isActive" value="false"/>
|
||||
<entry key="period" value="1m"/>
|
||||
<entry key="username" value="admin"/>
|
||||
<entry key="password" value=""/>
|
||||
@ -40,16 +39,23 @@
|
||||
</map>
|
||||
</property>
|
||||
</bean>
|
||||
<service interface="ru.entaxy.esb.system.core.template.Template" ref="inTemplate"/>
|
||||
<service interface="ru.entaxy.esb.system.core.template.Template" ref="inActiveTemplate"/>
|
||||
|
||||
<!--template in connector-->
|
||||
<bean id="inPassiveTemplate" class="ru.entaxy.esb.system.core.template.TemplateImpl">
|
||||
<property name="bundleContext" ref="blueprintBundleContext"/>
|
||||
<property name="templateName" value="uniform-service-passive-in-connector"/>
|
||||
<property name="templateFileName" value="uniform-service-passive-in-connector"/>
|
||||
</bean>
|
||||
<service interface="ru.entaxy.esb.system.core.template.Template" ref="inPassiveTemplate"/>
|
||||
|
||||
<!--template out connector-->
|
||||
<bean id="outTemplate" class="ru.entaxy.esb.system.core.template.TemplateImpl">
|
||||
<bean id="outActiveTemplate" class="ru.entaxy.esb.system.core.template.TemplateImpl">
|
||||
<property name="bundleContext" ref="blueprintBundleContext"/>
|
||||
<property name="templateName" value="uniform-service-out-connector"/>
|
||||
<property name="templateFileName" value="uniform-service-out-connector"/>
|
||||
<property name="templateName" value="uniform-service-active-out-connector"/>
|
||||
<property name="templateFileName" value="uniform-service-active-out-connector"/>
|
||||
<property name="params">
|
||||
<map>
|
||||
<entry key="isActive" value="false"/>
|
||||
<entry key="username" value="admin"/>
|
||||
<entry key="password" value=""/>
|
||||
<entry key="endpointUrl" value=""/>
|
||||
@ -58,6 +64,14 @@
|
||||
</map>
|
||||
</property>
|
||||
</bean>
|
||||
<service interface="ru.entaxy.esb.system.core.template.Template" ref="outTemplate"/>
|
||||
<service interface="ru.entaxy.esb.system.core.template.Template" ref="outActiveTemplate"/>
|
||||
|
||||
<!--template out connector-->
|
||||
<bean id="outPassiveTemplate" class="ru.entaxy.esb.system.core.template.TemplateImpl">
|
||||
<property name="bundleContext" ref="blueprintBundleContext"/>
|
||||
<property name="templateName" value="uniform-service-passive-out-connector"/>
|
||||
<property name="templateFileName" value="uniform-service-passive-out-connector"/>
|
||||
</bean>
|
||||
<service interface="ru.entaxy.esb.system.core.template.Template" ref="outPassiveTemplate"/>
|
||||
|
||||
</blueprint>
|
||||
|
@ -42,15 +42,17 @@
|
||||
</cm:default-properties>
|
||||
</cm:property-placeholder>
|
||||
|
||||
<reference id="entaxy-broker" interface="org.apache.camel.Component"
|
||||
filter="(connection.name=entaxy-broker)"/>
|
||||
<reference id="entaxy-broker" interface="org.apache.camel.Component"
|
||||
filter="(connection.name=entaxy-broker)"/>
|
||||
|
||||
<bean id="inConnector" class="ru.entaxy.esb.system.profile.commons.connectors.in.DirectVMInConnectorImpl">
|
||||
<property name="endpointName" value="uniform-service"/>
|
||||
<property name="endpointName" value="uniform-active-service"/>
|
||||
<property name="systemName" value="[=systemName]"/>
|
||||
<property name="params">
|
||||
<map>
|
||||
<entry key="isActive" value="[=isActive]"/>
|
||||
<entry key="role" value="default"/>
|
||||
<entry key="type" value="uniform-service"/>
|
||||
<entry key="subtype" value="active"/>
|
||||
<entry key="period" value="[=period]"/>
|
||||
<entry key="username" value="[=username]"/>
|
||||
<entry key="password" value="[=password]"/>
|
||||
@ -62,7 +64,7 @@
|
||||
</bean>
|
||||
<service ref="inConnector" auto-export="interfaces">
|
||||
<service-properties>
|
||||
<entry key="endpointName" value="uniform-service"/>
|
||||
<entry key="endpointName" value="uniform-active-service"/>
|
||||
<entry key="systemName" value="[=systemName]"/>
|
||||
</service-properties>
|
||||
</service>
|
||||
@ -78,208 +80,190 @@
|
||||
<property name="customHeaders" value="NTX_CustomHeaders"/>
|
||||
<property name="customHeaderPrefix" value="NTX_UNIFORM_EXCHANGE_CustomHeader"/>
|
||||
</bean>
|
||||
|
||||
|
||||
<bean id="headerMergeAggregator" class="ru.entaxy.esb.system.common.aggregation.HeaderMergeAggregatorImpl"/>
|
||||
|
||||
<camelContext id="uniform-service-in-connector-[=systemName]-context" xmlns="http://camel.apache.org/schema/blueprint"
|
||||
<camelContext id="uniform-service-in-connector-[=systemName]-context"
|
||||
xmlns="http://camel.apache.org/schema/blueprint"
|
||||
errorHandlerRef="commonErrorHandler">
|
||||
|
||||
<errorHandler id="commonErrorHandler" redeliveryPolicyRef="noRedelivery"
|
||||
type="DeadLetterChannel" deadLetterUri="direct-vm:commonErrorEndpoint"/>
|
||||
<redeliveryPolicyProfile id="noRedelivery" disableRedelivery="true"/>
|
||||
|
||||
[#if isActive == "true"]
|
||||
<route id="uniform-service-active-in-connector">
|
||||
<from uri="timer://get-package?synchronous=true&period=[=period]"/>
|
||||
<setHeader name="ENTAXY_SystemId">
|
||||
<constant>[=systemName]</constant>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_SystemEndpoint">
|
||||
<constant>[=endpointUrl]</constant>
|
||||
</setHeader>
|
||||
<to uri="direct:uniform-service-connector-get-package-active?block=true&timeout=60000"/>
|
||||
</route>
|
||||
<route id="uniform-service-active-in-connector">
|
||||
<from uri="timer://get-package?synchronous=true&period=[=period]"/>
|
||||
<setHeader name="NTX_SystemId">
|
||||
<constant>[=systemName]</constant>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_SystemEndpoint">
|
||||
<constant>[=endpointUrl]</constant>
|
||||
</setHeader>
|
||||
<to uri="direct:uniform-service-connector-get-package-active?block=true&timeout=60000"/>
|
||||
</route>
|
||||
|
||||
<!--In-->
|
||||
<route id="get-package-active" streamCache="true" >
|
||||
<from uri="direct:uniform-service-connector-get-package-active"/>
|
||||
<when>
|
||||
<simple>${headers.ENTAXY_SystemEndpoint} == null || ${headers.ENTAXY_SystemId} == null</simple>
|
||||
<log message="ENTAXY_SystemEndpoint is not set" loggingLevel="ERROR"/>
|
||||
<stop/>
|
||||
</when>
|
||||
<setHeader name="SystemHasMessages">
|
||||
<constant>true</constant>
|
||||
</setHeader>
|
||||
<!--In-->
|
||||
<route id="get-package-active" streamCache="true">
|
||||
<from uri="direct:uniform-service-connector-get-package-active"/>
|
||||
<when>
|
||||
<simple>${headers.ENTAXY_SystemEndpoint} == null || ${headers.NTX_SystemId} == null</simple>
|
||||
<log message="ENTAXY_SystemEndpoint is not set" loggingLevel="ERROR"/>
|
||||
<stop/>
|
||||
</when>
|
||||
<setHeader name="SystemHasMessages">
|
||||
<constant>true</constant>
|
||||
</setHeader>
|
||||
|
||||
<setHeader name="operationNamespace">
|
||||
<constant>http://www.entaxy.ru/connector/universal/system/1.0</constant>
|
||||
</setHeader>
|
||||
<setHeader name="CamelDestinationOverrideUrl">
|
||||
<simple>${headers.ENTAXY_SystemEndpoint}</simple>
|
||||
</setHeader>
|
||||
<setHeader name="operationNamespace">
|
||||
<constant>http://www.entaxy.ru/connector/universal/system/1.0</constant>
|
||||
</setHeader>
|
||||
<setHeader name="CamelDestinationOverrideUrl">
|
||||
<simple>${headers.ENTAXY_SystemEndpoint}</simple>
|
||||
</setHeader>
|
||||
|
||||
<loop doWhile="true" copy="true">
|
||||
<to uri="direct:get-package"/>
|
||||
</loop>
|
||||
</route>
|
||||
|
||||
<route id="direct:get-package">
|
||||
<from uri="direct:get-package"/>
|
||||
<loop doWhile="true" copy="true">
|
||||
<simple resultType="Boolean">${headers.SystemHasMessages} == 'true'</simple>
|
||||
<to uri="direct:get-package"/>
|
||||
</loop>
|
||||
</route>
|
||||
|
||||
<setHeader name="NTX_BusUUID">
|
||||
<constant>{{bus.id}}</constant>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_Destination">
|
||||
<constant>{{get.destination}}</constant>
|
||||
</setHeader>
|
||||
<to uri="xslt:ru/entaxy/esb/platform/runtime/modules/uniform-service/xslt/GetPacketRequest.xsl?failOnNullBody=false"/>
|
||||
<removeHeader headerName="NTX_BusUUID"/>
|
||||
<removeHeader headerName="ENTAXY_Destination"/>
|
||||
<route id="direct:get-package">
|
||||
<from uri="direct:get-package"/>
|
||||
|
||||
<setHeader name="operationName">
|
||||
<constant>GetPackets</constant>
|
||||
</setHeader>
|
||||
<to uri="direct-vm:uniform-service-send-package-active"/>
|
||||
<removeHeader headerName="SOAPAction"/>
|
||||
<setHeader name="NTX_BusUUID">
|
||||
<constant>{{bus.id}}</constant>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_Destination">
|
||||
<constant>{{get.destination}}</constant>
|
||||
</setHeader>
|
||||
<to uri="xslt:ru/entaxy/esb/platform/runtime/modules/uniform-service/xslt/GetPacketRequest.xsl?failOnNullBody=false"/>
|
||||
<removeHeader headerName="NTX_BusUUID"/>
|
||||
<removeHeader headerName="ENTAXY_Destination"/>
|
||||
|
||||
<setBody>
|
||||
<xpath>//soap-type:response/soap-type:packets</xpath>
|
||||
</setBody>
|
||||
<setHeader name="operationName">
|
||||
<constant>GetPackets</constant>
|
||||
</setHeader>
|
||||
<to uri="direct-vm:uniform-service-send-package-active"/>
|
||||
<removeHeader headerName="SOAPAction"/>
|
||||
|
||||
<choice>
|
||||
<when>
|
||||
<xpath>//soap-type:packets/soap-type:packet[1]/soap-type:message/soap-type:content/node()
|
||||
</xpath>
|
||||
<setBody>
|
||||
<xpath>//soap-type:packets/soap-type:packet[1]</xpath>
|
||||
</setBody>
|
||||
<setBody>
|
||||
<xpath>//soap-type:response/soap-type:packets</xpath>
|
||||
</setBody>
|
||||
|
||||
<to uri="entaxy-broker:queue:entaxy.uniform.service.exchange.send.to.profile?exchangePattern=InOnly"/>
|
||||
|
||||
<setHeader name="NTX_UUID">
|
||||
<simple>${headers.ENTAXY_MessageUUID}</simple>
|
||||
</setHeader>
|
||||
<to uri="xslt:ru/entaxy/esb/platform/runtime/modules/uniform-service/xslt/ConfirmGettingPacketRequest.xsl?failOnNullBody=false"/>
|
||||
<setHeader name="operationName">
|
||||
<constant>ConfirmGettingPackets</constant>
|
||||
</setHeader>
|
||||
|
||||
<to uri="direct-vm:uniform-service-send-package-active"/>
|
||||
<removeHeader headerName="SOAPAction"/>
|
||||
|
||||
<when>
|
||||
<xpath>not(//soap-type:status/text() = '200')</xpath>
|
||||
<log message="ConfirmGettingPacket fail" loggingLevel="ERROR"/>
|
||||
<!-- TODO что делать с сообщением в очереди ? -->
|
||||
</when>
|
||||
<setHeader name="SystemHasMessages">
|
||||
<constant>true</constant>
|
||||
</setHeader>
|
||||
</when>
|
||||
<otherwise>
|
||||
<setHeader name="SystemHasMessages">
|
||||
<constant>false</constant>
|
||||
</setHeader>
|
||||
<log message="System ${headers.NTX_SystemId} does not have messages" loggingLevel="INFO"/>
|
||||
</otherwise>
|
||||
</choice>
|
||||
</route>
|
||||
|
||||
<route id="soap-send-to-profile">
|
||||
<from uri="entaxy-broker:queue:entaxy.uniform.service.exchange.send.to.profile"/>
|
||||
<setHeader name="ENTAXY_MessageUUID">
|
||||
<xpath resultType="String">//soap-type:packet/soap-type:message/soap-type:messageUUID/text()</xpath>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_Destination">
|
||||
<xpath resultType="String">
|
||||
//soap-type:packet/soap-type:header/soap-type:destination/soap-type:id/text()
|
||||
</xpath>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_DestinationType">
|
||||
<xpath resultType="String">
|
||||
//soap-type:packet/soap-type:header/soap-type:destination/soap-type:type/text()
|
||||
</xpath>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_Source">
|
||||
<xpath resultType="String">//soap-type:packet/soap-type:message/soap-type:source/soap-type:id/text()
|
||||
</xpath>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_SourceType">
|
||||
<xpath resultType="String">//soap-type:packet/soap-type:message/soap-type:source/soap-type:type/text()
|
||||
</xpath>
|
||||
</setHeader>
|
||||
|
||||
<choice>
|
||||
<when>
|
||||
<simple>${headers.ENTAXY_Source} == ''</simple>
|
||||
<setHeader name="ENTAXY_Source">
|
||||
<simple>${headers.X-SystemName}</simple>
|
||||
</setHeader>
|
||||
</when>
|
||||
<when>
|
||||
<simple>${headers.NTX_SystemId} != ${headers.ENTAXY_Source}</simple>
|
||||
<log message="Source name header and SystemId is not equals!" loggingLevel="WARN"/>
|
||||
</when>
|
||||
</choice>
|
||||
<setHeader name="ENTAXY_MessageType">
|
||||
<xpath resultType="String">//soap-type:packet/soap-type:message/soap-type:messageType/text()</xpath>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_Priority">
|
||||
<xpath resultType="Integer">//soap-type:packet/soap-type:message/soap-type:priority/text()</xpath>
|
||||
</setHeader>
|
||||
<choice>
|
||||
<when>
|
||||
<simple>${headers.ENTAXY_Priority} == null || ${headers.ENTAXY_Priority} == ""</simple>
|
||||
<setHeader name="ENTAXY_Priority">
|
||||
<simple resultType="Integer">4</simple>
|
||||
<xpath>//soap-type:packets/soap-type:packet[1]/soap-type:message/soap-type:content/node()
|
||||
</xpath>
|
||||
<setBody>
|
||||
<xpath>//soap-type:packets/soap-type:packet[1]</xpath>
|
||||
</setBody>
|
||||
|
||||
<to uri="entaxy-broker:queue:entaxy.uniform.service.exchange.send.to.profile?exchangePattern=InOnly"/>
|
||||
|
||||
<setHeader name="NTX_UUID">
|
||||
<simple>${headers.ENTAXY_MessageUUID}</simple>
|
||||
</setHeader>
|
||||
<to uri="xslt:ru/entaxy/esb/platform/runtime/modules/uniform-service/xslt/ConfirmGettingPacketRequest.xsl?failOnNullBody=false"/>
|
||||
<setHeader name="operationName">
|
||||
<constant>ConfirmGettingPackets</constant>
|
||||
</setHeader>
|
||||
|
||||
<to uri="direct-vm:uniform-service-send-package-active"/>
|
||||
<removeHeader headerName="SOAPAction"/>
|
||||
|
||||
<when>
|
||||
<xpath>not(//soap-type:status/text() = '200')</xpath>
|
||||
<log message="ConfirmGettingPacket fail" loggingLevel="ERROR"/>
|
||||
<!-- TODO что делать с сообщением в очереди ? -->
|
||||
</when>
|
||||
<setHeader name="SystemHasMessages">
|
||||
<constant>true</constant>
|
||||
</setHeader>
|
||||
</when>
|
||||
<otherwise>
|
||||
<setHeader name="SystemHasMessages">
|
||||
<constant>false</constant>
|
||||
</setHeader>
|
||||
<log message="System ${headers.NTX_SystemId} does not have messages" loggingLevel="INFO"/>
|
||||
</otherwise>
|
||||
</choice>
|
||||
</route>
|
||||
|
||||
<setHeader name="NTX_CustomHeaders">
|
||||
<xpath>//soap-type:packet/soap-type:message/soap-type:customHeader</xpath>
|
||||
</setHeader>
|
||||
<route id="soap-send-to-profile">
|
||||
<from uri="entaxy-broker:queue:entaxy.uniform.service.exchange.send.to.profile"/>
|
||||
<setHeader name="ENTAXY_MessageUUID">
|
||||
<xpath resultType="String">//soap-type:packet/soap-type:message/soap-type:messageUUID/text()</xpath>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_Destination">
|
||||
<xpath resultType="String">
|
||||
//soap-type:packet/soap-type:header/soap-type:destination/soap-type:id/text()
|
||||
</xpath>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_DestinationType">
|
||||
<xpath resultType="String">
|
||||
//soap-type:packet/soap-type:header/soap-type:destination/soap-type:type/text()
|
||||
</xpath>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_Source">
|
||||
<xpath resultType="String">//soap-type:packet/soap-type:message/soap-type:source/soap-type:id/text()
|
||||
</xpath>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_SourceType">
|
||||
<xpath resultType="String">//soap-type:packet/soap-type:message/soap-type:source/soap-type:type/text()
|
||||
</xpath>
|
||||
</setHeader>
|
||||
|
||||
<to uri="direct:get-content-and-content-type"/>
|
||||
<choice>
|
||||
<when>
|
||||
<simple>${body} == null</simple>
|
||||
<log message="Content is invalid" loggingLevel="ERROR"/>
|
||||
<throwException ref="forced"/>
|
||||
<simple>${headers.ENTAXY_Source} == ''</simple>
|
||||
<setHeader name="ENTAXY_Source">
|
||||
<simple>${headers.X-SystemName}</simple>
|
||||
</setHeader>
|
||||
</when>
|
||||
<removeHeaders pattern="*" excludePattern="NTX_.+|CamelJms.+|ENTAXY_.+"/>
|
||||
<to uri="direct-vm:profile-[=systemName]-exit-dispatcher?block=false"/>
|
||||
</route>
|
||||
|
||||
[#else]
|
||||
<route id="uniform-service-in-connector">
|
||||
<from uri="direct-vm:uniform-service-in-connector-[=systemName]"/>
|
||||
<log message="Start uniform exchange connector ${headers.operationName}" loggingLevel="DEBUG"/>
|
||||
<setHeader name="ENTAXY_ConnectorType">
|
||||
<simple>uniform-service</simple>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_ConnectorName">
|
||||
<simple>uniform-service-in-connector-[=systemName]</simple>
|
||||
<when>
|
||||
<simple>${headers.NTX_SystemId} != ${headers.ENTAXY_Source}</simple>
|
||||
<log message="Source name header and SystemId is not equals!" loggingLevel="WARN"/>
|
||||
</when>
|
||||
</choice>
|
||||
<setHeader name="ENTAXY_MessageType">
|
||||
<xpath resultType="String">//soap-type:packet/soap-type:message/soap-type:messageType/text()</xpath>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_Priority">
|
||||
<xpath resultType="Integer">//soap-type:packet/soap-type:message/soap-type:priority/text()</xpath>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_ExchangePattern">
|
||||
<xpath resultType="String">/soap-type:packet/soap-type:message/soap-type:exchangePattern/text()
|
||||
</xpath>
|
||||
</setHeader>
|
||||
<when>
|
||||
<simple>${headers.ENTAXY_ExchangePattern} == 'InOnly'</simple>
|
||||
<setExchangePattern pattern="InOnly"/>
|
||||
</when>
|
||||
<when>
|
||||
<simple>${headers.ENTAXY_ExchangePattern} == 'InOut'</simple>
|
||||
<setExchangePattern pattern="InOut"/>
|
||||
</when>
|
||||
<when>
|
||||
<simple>${headers.ENTAXY_Priority} == null || ${headers.ENTAXY_Priority} == ""</simple>
|
||||
<setHeader name="ENTAXY_Priority">
|
||||
<simple resultType="Integer">4</simple>
|
||||
</setHeader>
|
||||
</when>
|
||||
|
||||
<setHeader name="NTX_CustomHeaders">
|
||||
<xpath>//soap-type:packet/soap-type:message/soap-type:customHeader</xpath>
|
||||
</setHeader>
|
||||
|
||||
<to uri="direct:get-content-and-content-type"/>
|
||||
<when>
|
||||
<simple>${body} == null</simple>
|
||||
<log message="Content is invalid" loggingLevel="ERROR"/>
|
||||
<throwException ref="forced"/>
|
||||
</when>
|
||||
<removeHeaders pattern="*" excludePattern="NTX_.+|CamelJms.+|ENTAXY_.+"/>
|
||||
<to uri="direct-vm:profile-[=systemName]-exit-dispatcher?block=false"/>
|
||||
</route>
|
||||
|
||||
<choice>
|
||||
<when>
|
||||
<simple>${headers.operationName} == 'PutPackets'</simple>
|
||||
<to uri="direct:send-packets"/>
|
||||
</when>
|
||||
<when>
|
||||
<simple>${headers.operationName} == 'ConfirmGettingPackets'</simple>
|
||||
<to uri="direct:confirm-packets"/>
|
||||
</when>
|
||||
<when>
|
||||
<simple>${headers.operationName} == 'GetPackets'</simple>
|
||||
<to uri="direct:get-packets"/>
|
||||
</when>
|
||||
<otherwise>
|
||||
<log message="uniform-service unknown operation: ${headers.operationName}" loggingLevel="WARN"/>
|
||||
</otherwise>
|
||||
</choice>
|
||||
</route>
|
||||
[/#if]
|
||||
<route id="send-packets">
|
||||
<from uri="direct:send-packets"/>
|
||||
|
||||
@ -302,10 +286,13 @@
|
||||
<choice>
|
||||
<when>
|
||||
<simple>${headers.ENTAXY_MessageUUID} == "00000000-0000-0000-0000-000000000000"</simple>
|
||||
[#-- health check --]
|
||||
[#-- health check --]
|
||||
<removeHeaders pattern="ENTAXY_.+|NTX_.+|X-.+"/>
|
||||
<setBody>
|
||||
<simple><![CDATA[<test/>]]></simple>
|
||||
<simple><![CDATA[
|
||||
<test/>
|
||||
]]>
|
||||
</simple>
|
||||
</setBody>
|
||||
<to uri="xslt:ru/entaxy/esb/platform/runtime/modules/uniform-service/xslt/PutPacketResponse.xsl?failOnNullBody=false"/>
|
||||
</when>
|
||||
@ -351,6 +338,18 @@
|
||||
<xpath resultType="Integer">/soap-type:packet/soap-type:message/soap-type:priority/text()
|
||||
</xpath>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_ExchangePattern">
|
||||
<xpath resultType="String">/soap-type:packet/soap-type:message/soap-type:exchangePattern/text()
|
||||
</xpath>
|
||||
</setHeader>
|
||||
<when>
|
||||
<simple>${headers.ENTAXY_ExchangePattern} == 'InOnly'</simple>
|
||||
<setExchangePattern pattern="InOnly"/>
|
||||
</when>
|
||||
<when>
|
||||
<simple>${headers.ENTAXY_ExchangePattern} == 'InOut'</simple>
|
||||
<setExchangePattern pattern="InOut"/>
|
||||
</when>
|
||||
<setHeader name="NTX_CustomHeaders">
|
||||
<xpath>/soap-type:packet/soap-type:message/soap-type:customHeader</xpath>
|
||||
</setHeader>
|
||||
@ -369,7 +368,10 @@
|
||||
<to uri="direct-vm:profile-[=systemName]-exit-dispatcher"/>
|
||||
<removeHeaders pattern="ENTAXY_.+|NTX_.+|X-.+"/>
|
||||
<setBody>
|
||||
<simple><![CDATA[<test/>]]></simple>
|
||||
<simple><![CDATA[
|
||||
<test/>
|
||||
]]>
|
||||
</simple>
|
||||
</setBody>
|
||||
|
||||
<to uri="xslt:ru/entaxy/esb/platform/runtime/modules/uniform-service/xslt/PutPacketResponse.xsl?failOnNullBody=false"/>
|
||||
@ -442,7 +444,10 @@
|
||||
<otherwise>
|
||||
<setBody>
|
||||
<constant>
|
||||
<![CDATA[<emptyContent xmlns="http://www.entaxy.ru/connector/universal/internal"/>]]></constant>
|
||||
<![CDATA[
|
||||
<emptyContent xmlns="http://www.entaxy.ru/connector/universal/internal"/>
|
||||
]]>
|
||||
</constant>
|
||||
</setBody>
|
||||
</otherwise>
|
||||
</choice>
|
||||
@ -458,119 +463,14 @@
|
||||
<otherwise>
|
||||
<setBody>
|
||||
<constant>
|
||||
<![CDATA[<empty xmlns="http://www.entaxy.ru/connector/universal/internal"/>]]></constant>
|
||||
<![CDATA[
|
||||
<empty xmlns="http://www.entaxy.ru/connector/universal/internal"/>
|
||||
]]>
|
||||
</constant>
|
||||
</setBody>
|
||||
</otherwise>
|
||||
</choice>
|
||||
</route>
|
||||
|
||||
<route id="get-packets">
|
||||
<from uri="direct:get-packets"/>
|
||||
<setHeader name="NTX_SystemId">
|
||||
<xpath>/soap-type:getPacketsRequest/soap-type:destination/soap-type:id/text()</xpath>
|
||||
</setHeader>
|
||||
<choice>
|
||||
<when>
|
||||
<simple>${headers.NTX_SystemId} == ''</simple>
|
||||
<setHeader name="NTX_SystemId">
|
||||
<simple>${headers.X-SystemName}</simple>
|
||||
</setHeader>
|
||||
</when>
|
||||
<when>
|
||||
<simple>${headers.NTX_SystemId} != ${headers.X-SystemName}</simple>
|
||||
<log message="Source name header and SystemId is not equals!" loggingLevel="WARN"/>
|
||||
<throwException exceptionType="java.security.AccessControlException" message="Unauthorized"/>
|
||||
</when>
|
||||
</choice>
|
||||
|
||||
<setHeader name="NTX_OutQueue">
|
||||
<simple>entaxy.uniform.service.exchange.[=systemName]</simple>
|
||||
</setHeader>
|
||||
<setHeader name="NTX_LimitCount">
|
||||
<xpath resultType="Integer">/soap-type:getPacketsRequest/soap-type:limitCount/text()</xpath>
|
||||
</setHeader>
|
||||
<setHeader name="NTX_LimitSize">
|
||||
<xpath resultType="Integer">/soap-type:getPacketsRequest/soap-type:limitSize/text()</xpath>
|
||||
</setHeader>
|
||||
<when>
|
||||
<simple>${headers.NTX_LimitCount} > 1 || ${headers.NTX_LimitSize} > 0</simple>
|
||||
<throwException exceptionType="java.lang.UnsupportedOperationException"
|
||||
message="Not supported limitation mode! Only default values."/>
|
||||
</when>
|
||||
|
||||
<log message="Fetch From JMS queue: ${headers.NTX_OutQueue}; SystemId=${headers.NTX_SystemId}"
|
||||
loggingLevel="INFO"/>
|
||||
|
||||
<setBody>
|
||||
<simple>${null}</simple>
|
||||
</setBody>
|
||||
|
||||
<pollEnrich timeout="0" strategyRef="headerMergeAggregator">
|
||||
<simple>entaxy-broker:queue:${headers.NTX_OutQueue}</simple>
|
||||
</pollEnrich>
|
||||
|
||||
<choice>
|
||||
<when>
|
||||
<simple>${body} == null</simple>
|
||||
<log message="No Messages" loggingLevel="WARN"/>
|
||||
<setHeader name="NTX_Status">
|
||||
<constant>204</constant>
|
||||
</setHeader>
|
||||
<to uri="xslt:ru/entaxy/esb/platform/runtime/modules/uniform-service/xslt/GetPacketResponse.xsl?failOnNullBody=false"/>
|
||||
<removeHeaders pattern="NTX_Status"/>
|
||||
</when>
|
||||
<otherwise>
|
||||
<log message="Get Message ${body}" loggingLevel="DEBUG"/>
|
||||
|
||||
<bean ref="headersConverter" method="json2xml"/>
|
||||
<setHeader name="ENTAXY_AcknowledgeMsgID">
|
||||
<simple>${bean:uuidGenerator.toString}</simple>
|
||||
</setHeader>
|
||||
|
||||
<to uri="direct-vm:uniform-service-common-save-acknowledge?block=true&timeout=70000"/>
|
||||
<when>
|
||||
<simple>${headers.CamelJms_IntMessageType} == 'String'</simple>
|
||||
<bean beanType="org.apache.commons.lang3.StringEscapeUtils"
|
||||
method="escapeXml(${body})"/>
|
||||
</when>
|
||||
<setBody>
|
||||
<simple><![CDATA[<body>${body}</body>]]></simple>
|
||||
</setBody>
|
||||
|
||||
<to uri="xslt:ru/entaxy/esb/platform/runtime/modules/uniform-service/xslt/GetPacketResponse.xsl"/>
|
||||
<to uri="direct-vm:uniform-service-transform-body?block=true&timeout=30000"/>
|
||||
<log message="Send message ${headers.ENTAXY_MessageUUID} for ${headers.NTX_SystemId} ackId ${headers.ENTAXY_AcknowledgeMsgID}"
|
||||
loggingLevel="INFO"/>
|
||||
<removeHeaders pattern="JMS.+|NTX_.+|ENTAXY_.+"/>
|
||||
</otherwise>
|
||||
</choice>
|
||||
</route>
|
||||
|
||||
<route id="confirm-packets">
|
||||
<from uri="direct:confirm-packets"/>
|
||||
|
||||
<setHeader name="NTX_UuidCount">
|
||||
<xpath resultType="Integer">count(/soap-type:uuids/soap-type:uuid)</xpath>
|
||||
</setHeader>
|
||||
<when>
|
||||
<simple>${headers.NTX_UuidCount} > 1</simple>
|
||||
<throwException exceptionType="java.lang.UnsupportedOperationException"
|
||||
message="Not supported more then 1 uuid"/>
|
||||
</when>
|
||||
<setBody>
|
||||
<xpath resultType="org.w3c.dom.Document">/soap-type:uuids/soap-type:uuid[1]</xpath>
|
||||
</setBody>
|
||||
|
||||
<setHeader name="ENTAXY_AcknowledgeMsgID">
|
||||
<xpath resultType="String">/soap-type:uuid/text()</xpath>
|
||||
</setHeader>
|
||||
<to uri="direct-vm:uniform-service-receive-acknowledge"/>
|
||||
<setHeader name="NTX_UUID">
|
||||
<simple>${headers.ENTAXY_AcknowledgeMsgID}</simple>
|
||||
</setHeader>
|
||||
<to uri="xslt:ru/entaxy/esb/platform/runtime/modules/uniform-service/xslt/ConfirmGettingPacketResponse.xsl?failOnNullBody=false"/>
|
||||
<removeHeaders pattern="Authorization|breadcrumbId|NTX_.+|ENTAXY_.+"/>
|
||||
</route>
|
||||
</camelContext>
|
||||
|
||||
</blueprint>
|
@ -42,15 +42,17 @@
|
||||
</cm:default-properties>
|
||||
</cm:property-placeholder>
|
||||
|
||||
<reference id="entaxy-broker" interface="org.apache.camel.Component"
|
||||
filter="(connection.name=entaxy-broker)"/>
|
||||
<reference id="entaxy-broker" interface="org.apache.camel.Component"
|
||||
filter="(connection.name=entaxy-broker)"/>
|
||||
|
||||
<bean id="soapOutConnector" class="ru.entaxy.esb.system.profile.commons.connectors.out.DirectVMOutConnectorImpl">
|
||||
<property name="endpointName" value="uniform-service"/>
|
||||
<property name="endpointName" value="uniform-active-service"/>
|
||||
<property name="systemName" value="[=systemName]"/>
|
||||
<property name="params">
|
||||
<map>
|
||||
<entry key="isActive" value="[=isActive]"/>
|
||||
<entry key="role" value="default"/>
|
||||
<entry key="type" value="uniform-service"/>
|
||||
<entry key="subtype" value="active"/>
|
||||
<entry key="username" value="[=username]"/>
|
||||
<entry key="password" value="[=password]"/>
|
||||
<entry key="endpointUrl" value="[=endpointUrl]"/>
|
||||
@ -62,7 +64,7 @@
|
||||
|
||||
<service ref="soapOutConnector" auto-export="interfaces">
|
||||
<service-properties>
|
||||
<entry key="endpointName" value="uniform-service"/>
|
||||
<entry key="endpointName" value="uniform-active-service"/>
|
||||
<entry key="systemName" value="[=systemName]"/>
|
||||
</service-properties>
|
||||
</service>
|
||||
@ -83,71 +85,69 @@
|
||||
type="DeadLetterChannel" deadLetterUri="direct-vm:commonErrorEndpoint"/>
|
||||
<redeliveryPolicyProfile id="noRedelivery" disableRedelivery="true"/>
|
||||
|
||||
[#if isActive == "true"]
|
||||
<route id="soap-out-active-connector" streamCache="true">
|
||||
<from uri="entaxy-broker:queue:entaxy.uniform.service.exchange.[=systemName]?exchangePattern=InOnly"/>
|
||||
<log message="Message ${headers} send to system" loggingLevel="TRACE"/>
|
||||
<setHeader name="NTX_SystemId">
|
||||
<constant>[=systemName]</constant>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_SystemEndpoint">
|
||||
<constant>[=endpointUrl]</constant>
|
||||
</setHeader>
|
||||
<route id="soap-out-active-connector" streamCache="true">
|
||||
<from uri="entaxy-broker:queue:entaxy.uniform.service.exchange.active.[=systemName]"/>
|
||||
<log message="Message ${headers} send to system" loggingLevel="TRACE"/>
|
||||
<setHeader name="NTX_SystemId">
|
||||
<constant>[=systemName]</constant>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_SystemEndpoint">
|
||||
<constant>[=endpointUrl]</constant>
|
||||
</setHeader>
|
||||
|
||||
<log message="ACTIVE-CONSUMER: Message for system ${headers.NTX_SystemId} to ${headers.ENTAXY_SystemEndpoint}"
|
||||
loggingLevel="DEBUG"/>
|
||||
<log message="ACTIVE-CONSUMER: Message for system ${headers.NTX_SystemId} to ${headers.ENTAXY_SystemEndpoint}"
|
||||
loggingLevel="DEBUG"/>
|
||||
<when>
|
||||
<simple>${headers.ENTAXY_SystemEndpoint} == null || ${headers.NTX_SystemId} == null</simple>
|
||||
<log message="ENTAXY_SystemEndpoint for ${headers.NTX_SystemId} is not set"
|
||||
loggingLevel="ERROR"/>
|
||||
<stop/>
|
||||
</when>
|
||||
<bean ref="headersConverter" method="json2xml"/>
|
||||
|
||||
<setHeader name="NTX_OutQueue">
|
||||
<simple>entaxy.uniform.service.exchange.active.[=systemName]</simple>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_AcknowledgeMsgID">
|
||||
<simple>${bean:uuidGenerator.toString}</simple>
|
||||
</setHeader>
|
||||
|
||||
<to uri="direct-vm:uniform-service-common-save-acknowledge?block=true&timeout=70000"/>
|
||||
|
||||
<setBody>
|
||||
<simple><![CDATA[
|
||||
<body>${body}</body>
|
||||
]]>
|
||||
</simple>
|
||||
</setBody>
|
||||
<to uri="xslt:ru/entaxy/esb/platform/runtime/modules/uniform-service/xslt/PutPacketRequest.xsl"/>
|
||||
<setHeader name="operationNamespace">
|
||||
<constant>http://www.entaxy.ru/connector/universal/system/1.0</constant>
|
||||
</setHeader>
|
||||
<setHeader name="operationName">
|
||||
<constant>PutPackets</constant>
|
||||
</setHeader>
|
||||
<setHeader name="CamelDestinationOverrideUrl">
|
||||
<simple>${headers.ENTAXY_SystemEndpoint}</simple>
|
||||
</setHeader>
|
||||
|
||||
<to uri="direct-vm:uniform-service-send-package-active"/>
|
||||
<choice>
|
||||
<when>
|
||||
<simple>${headers.ENTAXY_SystemEndpoint} == null || ${headers.NTX_SystemId} == null</simple>
|
||||
<log message="ENTAXY_SystemEndpoint for ${headers.NTX_SystemId} is not set"
|
||||
loggingLevel="ERROR"/>
|
||||
<stop/>
|
||||
<xpath>not(//soap-type:status/text() = '200')</xpath>
|
||||
<log message="PutPackets fail" loggingLevel="ERROR"/>
|
||||
</when>
|
||||
<bean ref="headersConverter" method="xml2Json"/>
|
||||
<otherwise>
|
||||
<setHeader name="NTX_AckMessage">
|
||||
<simple>true</simple>
|
||||
</setHeader>
|
||||
<to uri="entaxy-broker:queue:entaxy.uniform.service.exchange.aggregate?exchangePattern=InOnly&asyncConsumer=true"/>
|
||||
</otherwise>
|
||||
</choice>
|
||||
</route>
|
||||
|
||||
<setHeader name="NTX_OutQueue">
|
||||
<simple>entaxy.uniform.service.exchange.[=systemName]</simple>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_AcknowledgeMsgID">
|
||||
<simple>${bean:uuidGenerator.toString}</simple>
|
||||
</setHeader>
|
||||
|
||||
<to uri="direct-vm:uniform-service-common-save-acknowledge?block=true&timeout=70000"/>
|
||||
|
||||
<setBody>
|
||||
<simple><![CDATA[
|
||||
<body>${body}</body>
|
||||
]]>
|
||||
</simple>
|
||||
</setBody>
|
||||
<to uri="xslt:ru/entaxy/esb/platform/runtime/modules/uniform-service/xslt/PutPacketRequest.xsl"/>
|
||||
<setHeader name="operationNamespace">
|
||||
<constant>http://www.entaxy.ru/connector/universal/system/1.0</constant>
|
||||
</setHeader>
|
||||
<setHeader name="operationName">
|
||||
<constant>PutPackets</constant>
|
||||
</setHeader>
|
||||
<setHeader name="CamelDestinationOverrideUrl">
|
||||
<simple>${headers.ENTAXY_SystemEndpoint}</simple>
|
||||
</setHeader>
|
||||
|
||||
<to uri="direct-vm:uniform-service-send-package-active"/>
|
||||
<choice>
|
||||
<when>
|
||||
<xpath>not(//soap-type:status/text() = '200')</xpath>
|
||||
<log message="PutPackets fail" loggingLevel="ERROR"/>
|
||||
</when>
|
||||
<otherwise>
|
||||
<setHeader name="NTX_AckMessage">
|
||||
<simple>true</simple>
|
||||
</setHeader>
|
||||
<to uri="entaxy-broker:queue:entaxy.uniform.service.exchange.aggregate?exchangePattern=InOnly&asyncConsumer=true"/>
|
||||
</otherwise>
|
||||
</choice>
|
||||
</route>
|
||||
[/#if]
|
||||
|
||||
<route id="uniform-service-out-connector">
|
||||
<from uri="direct-vm:uniform-service-out-connector-[=systemName]"/>
|
||||
<route id="uniform-active-service-out-connector">
|
||||
<from uri="direct-vm:uniform-active-service-out-connector-[=systemName]"/>
|
||||
<log message="Message ${headers} send to system" loggingLevel="TRACE"/>
|
||||
<when>
|
||||
<simple>${headers.ENTAXY_Priority} == null || ${headers.ENTAXY_Priority} == ""</simple>
|
||||
@ -156,10 +156,10 @@
|
||||
</setHeader>
|
||||
</when>
|
||||
<setHeader name="NTX_OutQueue">
|
||||
<simple>entaxy.uniform.service.exchange.[=systemName]</simple>
|
||||
<simple>entaxy.uniform.service.exchange.active.[=systemName]</simple>
|
||||
</setHeader>
|
||||
<removeHeaders pattern="X-.+"/>
|
||||
<toD uri="entaxy-broker:queue:${headers.NTX_OutQueue}?exchangePattern=InOnly&priority=${headers.ENTAXY_Priority}"/>
|
||||
<toD uri="entaxy-broker:queue:${headers.NTX_OutQueue}?priority=${headers.ENTAXY_Priority}"/>
|
||||
</route>
|
||||
</camelContext>
|
||||
|
@ -0,0 +1,305 @@
|
||||
[#ftl attributes={"generated.type":"blueprint"}]
|
||||
[#--
|
||||
|
||||
~~~~~~licensing~~~~~~
|
||||
connector
|
||||
==========
|
||||
Copyright (C) 2020 - 2021 EmDev LLC
|
||||
==========
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
~~~~~~/licensing~~~~~~
|
||||
|
||||
--]
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
|
||||
xmlns:soap-type="http://www.entaxy.ru/ExchangeTypes/1.0"
|
||||
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
|
||||
|
||||
<cm:property-placeholder persistent-id="uniform.service.support"
|
||||
update-strategy="reload">
|
||||
<cm:default-properties>
|
||||
<cm:property name="redelivery.maximumRedeliveries" value="2"/>
|
||||
<cm:property name="redelivery.deadLetterQueue" value="revert.message.dead"/>
|
||||
<cm:property name="acknowledge.completion.timeout" value="600000"/>
|
||||
|
||||
<cm:property name="bus.id" value="FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF"/>
|
||||
<cm:property name="get.destination" value=""/>
|
||||
<cm:property name="test.empty.rate" value="20"/>
|
||||
<cm:property name="acknowledge.aggregation.repository" value="jdbcAggregationRepository"/>
|
||||
<cm:property name="error.system.name" value="error"/>
|
||||
</cm:default-properties>
|
||||
</cm:property-placeholder>
|
||||
|
||||
<reference id="entaxy-broker" interface="org.apache.camel.Component"
|
||||
filter="(connection.name=entaxy-broker)"/>
|
||||
|
||||
<bean id="inConnector" class="ru.entaxy.esb.system.profile.commons.connectors.in.DirectVMInConnectorImpl">
|
||||
<property name="endpointName" value="uniform-passive-service"/>
|
||||
<property name="systemName" value="[=systemName]"/>
|
||||
<property name="params">
|
||||
<map>
|
||||
<entry key="role" value="default"/>
|
||||
<entry key="type" value="uniform-service"/>
|
||||
<entry key="subtype" value="passive"/>
|
||||
</map>
|
||||
</property>
|
||||
</bean>
|
||||
<service ref="inConnector" auto-export="interfaces">
|
||||
<service-properties>
|
||||
<entry key="endpointName" value="uniform-passive-service"/>
|
||||
<entry key="systemName" value="[=systemName]"/>
|
||||
</service-properties>
|
||||
</service>
|
||||
|
||||
<bean id="forced" class="java.lang.IllegalArgumentException">
|
||||
<argument index="0" value="Content is invalid"/>
|
||||
</bean>
|
||||
|
||||
<bean id="headersConverter" class="ru.entaxy.esb.system.common.util.HeadersConverter">
|
||||
<property name="namespace" value="http://www.entaxy.ru/ExchangeTypes/1.0"/>
|
||||
<property name="customHeaders" value="NTX_CustomHeaders"/>
|
||||
<property name="customHeaderPrefix" value="NTX_UNIFORM_EXCHANGE_CustomHeader"/>
|
||||
</bean>
|
||||
|
||||
<camelContext id="uniform-service-in-connector-[=systemName]-context"
|
||||
xmlns="http://camel.apache.org/schema/blueprint"
|
||||
errorHandlerRef="commonErrorHandler">
|
||||
|
||||
<errorHandler id="commonErrorHandler" redeliveryPolicyRef="noRedelivery"
|
||||
type="DeadLetterChannel" deadLetterUri="direct-vm:commonErrorEndpoint"/>
|
||||
<redeliveryPolicyProfile id="noRedelivery" disableRedelivery="true"/>
|
||||
|
||||
<route id="uniform-passive-service-in-connector">
|
||||
<from uri="direct-vm:uniform-passive-service-in-connector-[=systemName]"/>
|
||||
<log message="Start uniform exchange connector ${headers.operationName}" loggingLevel="DEBUG"/>
|
||||
<setHeader name="ENTAXY_ConnectorType">
|
||||
<simple>uniform-service</simple>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_ConnectorName">
|
||||
<simple>uniform-service-in-connector-[=systemName]</simple>
|
||||
</setHeader>
|
||||
<to uri="direct:send-packets"/>
|
||||
</route>
|
||||
|
||||
<route id="send-packets">
|
||||
<from uri="direct:send-packets"/>
|
||||
|
||||
<setHeader name="NTX_UNIFORM_EXCHANGE_PacketCount">
|
||||
<xpath resultType="Integer">count(/soap-type:packets/soap-type:packet)</xpath>
|
||||
</setHeader>
|
||||
<when>
|
||||
<simple>${headers.NTX_UNIFORM_EXCHANGE_PacketCount} > 1</simple>
|
||||
<throwException exceptionType="java.lang.UnsupportedOperationException"
|
||||
message="Not supported more then 1 packet"/>
|
||||
</when>
|
||||
|
||||
<setBody>
|
||||
<xpath resultType="org.w3c.dom.Document">/soap-type:packets/soap-type:packet[1]</xpath>
|
||||
</setBody>
|
||||
|
||||
<setHeader name="ENTAXY_MessageUUID">
|
||||
<xpath resultType="String">/soap-type:packet/soap-type:message/soap-type:messageUUID/text()</xpath>
|
||||
</setHeader>
|
||||
<choice>
|
||||
<when>
|
||||
<simple>${headers.ENTAXY_MessageUUID} == "00000000-0000-0000-0000-000000000000"</simple>
|
||||
[#-- health check --]
|
||||
<removeHeaders pattern="ENTAXY_.+|NTX_.+|X-.+"/>
|
||||
<setBody>
|
||||
<simple><![CDATA[
|
||||
<test/>
|
||||
]]>
|
||||
</simple>
|
||||
</setBody>
|
||||
<to uri="xslt:ru/entaxy/esb/platform/runtime/modules/uniform-service/xslt/PutPacketResponse.xsl?failOnNullBody=false"/>
|
||||
</when>
|
||||
<otherwise>
|
||||
<setHeader name="ENTAXY_Destination">
|
||||
<xpath resultType="String">
|
||||
/soap-type:packet/soap-type:header/soap-type:destination/soap-type:id/text()
|
||||
</xpath>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_DestinationType">
|
||||
<xpath resultType="String">
|
||||
/soap-type:packet/soap-type:header/soap-type:destination/soap-type:type/text()
|
||||
</xpath>
|
||||
</setHeader>
|
||||
|
||||
<log message="Receive message ${headers.ENTAXY_MessageUUID} for ${headers.ENTAXY_Destination}"
|
||||
loggingLevel="INFO"/>
|
||||
<setHeader name="ENTAXY_Source">
|
||||
<xpath resultType="String">
|
||||
/soap-type:packet/soap-type:message/soap-type:source/soap-type:id/text()
|
||||
</xpath>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_SourceType">
|
||||
<xpath resultType="String">
|
||||
/soap-type:packet/soap-type:message/soap-type:source/soap-type:type/text()
|
||||
</xpath>
|
||||
</setHeader>
|
||||
<when>
|
||||
<simple>${headers.X-SystemName} != ${headers.ENTAXY_Source}</simple>
|
||||
<log message="Source name header and auth username is not equals!" loggingLevel="WARN"/>
|
||||
<when>
|
||||
<simple>${headers.ENTAXY_Source} == ''</simple>
|
||||
<setHeader name="ENTAXY_Source">
|
||||
<simple>${headers.X-SystemName}</simple>
|
||||
</setHeader>
|
||||
</when>
|
||||
</when>
|
||||
<setHeader name="ENTAXY_MessageType">
|
||||
<xpath resultType="String">/soap-type:packet/soap-type:message/soap-type:messageType/text()
|
||||
</xpath>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_Priority">
|
||||
<xpath resultType="Integer">/soap-type:packet/soap-type:message/soap-type:priority/text()
|
||||
</xpath>
|
||||
</setHeader>
|
||||
<setHeader name="ENTAXY_ExchangePattern">
|
||||
<xpath resultType="String">/soap-type:packet/soap-type:message/soap-type:exchangePattern/text()
|
||||
</xpath>
|
||||
</setHeader>
|
||||
<when>
|
||||
<simple>${headers.ENTAXY_ExchangePattern} == 'InOnly'</simple>
|
||||
<setExchangePattern pattern="InOnly"/>
|
||||
</when>
|
||||
<when>
|
||||
<simple>${headers.ENTAXY_ExchangePattern} == 'InOut'</simple>
|
||||
<setExchangePattern pattern="InOut"/>
|
||||
</when>
|
||||
<setHeader name="NTX_CustomHeaders">
|
||||
<xpath>/soap-type:packet/soap-type:message/soap-type:customHeader</xpath>
|
||||
</setHeader>
|
||||
<bean ref="headersConverter" method="xml2Json"/>
|
||||
<log message="Headers converted: ${headers}" loggingLevel="DEBUG"/>
|
||||
|
||||
<to uri="direct:get-content-and-content-type"/>
|
||||
|
||||
<when>
|
||||
<simple>${body} == null</simple>
|
||||
<log message="Content is invalid" loggingLevel="ERROR"/>
|
||||
<throwException ref="forced"/>
|
||||
</when>
|
||||
<removeHeaders pattern="*" excludePattern="NTX_.+|CamelJms.+|ENTAXY_.+|X-.+"/>
|
||||
|
||||
<to uri="direct-vm:profile-[=systemName]-exit-dispatcher"/>
|
||||
<removeHeaders pattern="ENTAXY_.+|NTX_.+|X-.+"/>
|
||||
<setBody>
|
||||
<simple><![CDATA[
|
||||
<test/>
|
||||
]]>
|
||||
</simple>
|
||||
</setBody>
|
||||
|
||||
<to uri="xslt:ru/entaxy/esb/platform/runtime/modules/uniform-service/xslt/PutPacketResponse.xsl?failOnNullBody=false"/>
|
||||
</otherwise>
|
||||
</choice>
|
||||
</route>
|
||||
|
||||
<route id="get-content-and-content-type">
|
||||
<from uri="direct:get-content-and-content-type"/>
|
||||
|
||||
<setHeader name="ENTAXY_ContentType">
|
||||
<xpath resultType="String">/soap-type:packet/soap-type:message/soap-type:contentType/text()
|
||||
</xpath>
|
||||
</setHeader>
|
||||
<choice>
|
||||
<when>
|
||||
<xpath>count(/soap-type:packet/soap-type:message/soap-type:content) = 1</xpath>
|
||||
<setHeader name="CamelJms_IntContentXsiType">
|
||||
<xpath resultType="String">
|
||||
/soap-type:packet/soap-type:message/soap-type:content/@xsi:type
|
||||
</xpath>
|
||||
</setHeader>
|
||||
<setHeader name="NTX_ContentHasNotEmptyText">
|
||||
<xpath resultType="Boolean">
|
||||
boolean(normalize-space(/soap-type:packet/soap-type:message/soap-type:content/text()))
|
||||
</xpath>
|
||||
</setHeader>
|
||||
<setHeader name="NTX_ContentChildNodesCount">
|
||||
<xpath resultType="Integer">
|
||||
count(/soap-type:packet/soap-type:message/soap-type:content/child::*)
|
||||
</xpath>
|
||||
</setHeader>
|
||||
<choice>
|
||||
<when>
|
||||
<simple>${headers.NTX_ContentChildNodesCount} == 1</simple>
|
||||
<setBody>
|
||||
<xpath resultType="org.w3c.dom.Document">
|
||||
/soap-type:packet/soap-type:message/soap-type:content/*
|
||||
</xpath>
|
||||
</setBody>
|
||||
<setHeader name="CamelJms_IntMessageType">
|
||||
<constant>Document</constant>
|
||||
</setHeader>
|
||||
</when>
|
||||
<when>
|
||||
<simple>${headers.NTX_ContentChildNodesCount} > 1</simple>
|
||||
<setBody>
|
||||
<xpath resultType="org.w3c.dom.NodeList">
|
||||
/soap-type:packet/soap-type:message/soap-type:content/*
|
||||
</xpath>
|
||||
</setBody>
|
||||
<setHeader name="CamelJms_IntMessageType">
|
||||
<constant>NodeList</constant>
|
||||
</setHeader>
|
||||
</when>
|
||||
<when>
|
||||
<simple>${headers.NTX_ContentChildNodesCount} == 0</simple>
|
||||
<choice>
|
||||
<when>
|
||||
<simple>${headers.NTX_ContentHasNotEmptyText}</simple>
|
||||
<setBody>
|
||||
<xpath resultType="String">
|
||||
/soap-type:packet/soap-type:message/soap-type:content/text()
|
||||
</xpath>
|
||||
</setBody>
|
||||
<setHeader name="CamelJms_IntMessageType">
|
||||
<constant>String</constant>
|
||||
</setHeader>
|
||||
</when>
|
||||
<otherwise>
|
||||
<setBody>
|
||||
<constant>
|
||||
<![CDATA[
|
||||
<emptyContent xmlns="http://www.entaxy.ru/connector/universal/internal"/>
|
||||
]]>
|
||||
</constant>
|
||||
</setBody>
|
||||
</otherwise>
|
||||
</choice>
|
||||
</when>
|
||||
<otherwise>
|
||||
<log message="Content is invalid" loggingLevel="ERROR"/>
|
||||
<throwException ref="forced"/>
|
||||
</otherwise>
|
||||
</choice>
|
||||
<removeHeader headerName="NTX_ContentHasNotEmptyText"/>
|
||||
<removeHeader headerName="NTX_ContentChildNodesCount"/>
|
||||
</when>
|
||||
<otherwise>
|
||||
<setBody>
|
||||
<constant>
|
||||
<![CDATA[
|
||||
<empty xmlns="http://www.entaxy.ru/connector/universal/internal"/>
|
||||
]]>
|
||||
</constant>
|
||||
</setBody>
|
||||
</otherwise>
|
||||
</choice>
|
||||
</route>
|
||||
</camelContext>
|
||||
|
||||
</blueprint>
|
@ -0,0 +1,226 @@
|
||||
[#ftl attributes={"generated.type":"blueprint"}]
|
||||
[#--
|
||||
|
||||
~~~~~~licensing~~~~~~
|
||||
connector
|
||||
==========
|
||||
Copyright (C) 2020 - 2021 EmDev LLC
|
||||
==========
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
~~~~~~/licensing~~~~~~
|
||||
|
||||
--]
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
|
||||
xmlns:soap-type="http://www.entaxy.ru/ExchangeTypes/1.0"
|
||||
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
|
||||
|
||||
<cm:property-placeholder persistent-id="uniform.service.support"
|
||||
update-strategy="reload">
|
||||
<cm:default-properties>
|
||||
<cm:property name="redelivery.maximumRedeliveries" value="2"/>
|
||||
<cm:property name="redelivery.deadLetterQueue" value="revert.message.dead"/>
|
||||
<cm:property name="acknowledge.completion.timeout" value="600000"/>
|
||||
|
||||
<cm:property name="bus.id" value="FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF"/>
|
||||
<cm:property name="get.destination" value=""/>
|
||||
<cm:property name="test.empty.rate" value="20"/>
|
||||
<cm:property name="acknowledge.aggregation.repository" value="jdbcAggregationRepository"/>
|
||||
<cm:property name="error.system.name" value="error"/>
|
||||
</cm:default-properties>
|
||||
</cm:property-placeholder>
|
||||
|
||||
<reference id="entaxy-broker" interface="org.apache.camel.Component"
|
||||
filter="(connection.name=entaxy-broker)"/>
|
||||
|
||||
<bean id="soapOutConnector" class="ru.entaxy.esb.system.profile.commons.connectors.out.DirectVMOutConnectorImpl">
|
||||
<property name="endpointName" value="uniform-passive-service"/>
|
||||
<property name="systemName" value="[=systemName]"/>
|
||||
<property name="params">
|
||||
<map>
|
||||
<entry key="role" value="default"/>
|
||||
<entry key="type" value="uniform-service"/>
|
||||
<entry key="subtype" value="passive"/>
|
||||
</map>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<service ref="soapOutConnector" auto-export="interfaces">
|
||||
<service-properties>
|
||||
<entry key="endpointName" value="uniform-passive-service"/>
|
||||
<entry key="systemName" value="[=systemName]"/>
|
||||
</service-properties>
|
||||
</service>
|
||||
|
||||
<bean id="uuidGenerator" class="java.util.UUID" scope="prototype" factory-method="randomUUID"/>
|
||||
|
||||
<bean id="headersConverter" class="ru.entaxy.esb.system.common.util.HeadersConverter">
|
||||
<property name="namespace" value="http://www.entaxy.ru/ExchangeTypes/1.0"/>
|
||||
<property name="customHeaders" value="NTX_CustomHeaders"/>
|
||||
<property name="customHeaderPrefix" value="NTX_UNIFORM_EXCHANGE_CustomHeader"/>
|
||||
</bean>
|
||||
|
||||
<bean id="headerMergeAggregator" class="ru.entaxy.esb.system.common.aggregation.HeaderMergeAggregatorImpl"/>
|
||||
|
||||
<camelContext id="uniform-service-out-connector-[=systemName]-context"
|
||||
xmlns="http://camel.apache.org/schema/blueprint"
|
||||
errorHandlerRef="commonErrorHandler">
|
||||
|
||||
<errorHandler id="commonErrorHandler" redeliveryPolicyRef="noRedelivery"
|
||||
type="DeadLetterChannel" deadLetterUri="direct-vm:commonErrorEndpoint"/>
|
||||
<redeliveryPolicyProfile id="noRedelivery" disableRedelivery="true"/>
|
||||
|
||||
<route id="uniform-passive-service-out-connector">
|
||||
<from uri="direct-vm:uniform-passive-service-out-connector-[=systemName]"/>
|
||||
<choice>
|
||||
<when>
|
||||
<simple>${headers.operationName} == 'ConfirmGettingPackets'</simple>
|
||||
<to uri="direct:confirm-packets"/>
|
||||
</when>
|
||||
<when>
|
||||
<simple>${headers.operationName} == 'GetPackets'</simple>
|
||||
<to uri="direct:get-packets"/>
|
||||
</when>
|
||||
<otherwise>
|
||||
<to uri="direct:sent-message"/>
|
||||
</otherwise>
|
||||
</choice>
|
||||
</route>
|
||||
|
||||
<route id="sent-message">
|
||||
<from uri="direct:sent-message"/>
|
||||
<log message="Message ${headers} send to system" loggingLevel="TRACE"/>
|
||||
<when>
|
||||
<simple>${headers.ENTAXY_Priority} == null || ${headers.ENTAXY_Priority} == ""</simple>
|
||||
<setHeader name="ENTAXY_Priority">
|
||||
<simple resultType="Integer">4</simple>
|
||||
</setHeader>
|
||||
</when>
|
||||
<setHeader name="NTX_OutQueue">
|
||||
<simple>entaxy.uniform.service.exchange.[=systemName]</simple>
|
||||
</setHeader>
|
||||
<removeHeaders pattern="X-.+"/>
|
||||
<toD uri="entaxy-broker:queue:${headers.NTX_OutQueue}?priority=${headers.ENTAXY_Priority}"/>
|
||||
</route>
|
||||
|
||||
<route id="confirm-packets">
|
||||
<from uri="direct:confirm-packets"/>
|
||||
|
||||
<setHeader name="NTX_UuidCount">
|
||||
<xpath resultType="Integer">count(/soap-type:uuids/soap-type:uuid)</xpath>
|
||||
</setHeader>
|
||||
<when>
|
||||
<simple>${headers.NTX_UuidCount} > 1</simple>
|
||||
<throwException exceptionType="java.lang.UnsupportedOperationException"
|
||||
message="Not supported more then 1 uuid"/>
|
||||
</when>
|
||||
<setBody>
|
||||
<xpath resultType="org.w3c.dom.Document">/soap-type:uuids/soap-type:uuid[1]</xpath>
|
||||
</setBody>
|
||||
|
||||
<setHeader name="ENTAXY_AcknowledgeMsgID">
|
||||
<xpath resultType="String">/soap-type:uuid/text()</xpath>
|
||||
</setHeader>
|
||||
<to uri="direct-vm:uniform-service-receive-acknowledge"/>
|
||||
<setHeader name="NTX_UUID">
|
||||
<simple>${headers.ENTAXY_AcknowledgeMsgID}</simple>
|
||||
</setHeader>
|
||||
<to uri="xslt:ru/entaxy/esb/platform/runtime/modules/uniform-service/xslt/ConfirmGettingPacketResponse.xsl?failOnNullBody=false"/>
|
||||
<removeHeaders pattern="Authorization|breadcrumbId|NTX_.+|ENTAXY_.+"/>
|
||||
</route>
|
||||
|
||||
<route id="get-packets">
|
||||
<from uri="direct:get-packets"/>
|
||||
<setHeader name="NTX_SystemId">
|
||||
<xpath>/soap-type:getPacketsRequest/soap-type:destination/soap-type:id/text()</xpath>
|
||||
</setHeader>
|
||||
<choice>
|
||||
<when>
|
||||
<simple>${headers.NTX_SystemId} == ''</simple>
|
||||
<setHeader name="NTX_SystemId">
|
||||
<simple>${headers.X-SystemName}</simple>
|
||||
</setHeader>
|
||||
</when>
|
||||
<when>
|
||||
<simple>${headers.NTX_SystemId} != ${headers.X-SystemName}</simple>
|
||||
<log message="Source name header and SystemId is not equals!" loggingLevel="WARN"/>
|
||||
<throwException exceptionType="java.security.AccessControlException" message="Unauthorized"/>
|
||||
</when>
|
||||
</choice>
|
||||
|
||||
<setHeader name="NTX_OutQueue">
|
||||
<simple>entaxy.uniform.service.exchange.[=systemName]</simple>
|
||||
</setHeader>
|
||||
<setHeader name="NTX_LimitCount">
|
||||
<xpath resultType="Integer">/soap-type:getPacketsRequest/soap-type:limitCount/text()</xpath>
|
||||
</setHeader>
|
||||
<setHeader name="NTX_LimitSize">
|
||||
<xpath resultType="Integer">/soap-type:getPacketsRequest/soap-type:limitSize/text()</xpath>
|
||||
</setHeader>
|
||||
<when>
|
||||
<simple>${headers.NTX_LimitCount} > 1 || ${headers.NTX_LimitSize} > 0</simple>
|
||||
<throwException exceptionType="java.lang.UnsupportedOperationException"
|
||||
message="Not supported limitation mode! Only default values."/>
|
||||
</when>
|
||||
|
||||
<log message="Fetch From JMS queue: ${headers.NTX_OutQueue}; SystemId=${headers.NTX_SystemId}"
|
||||
loggingLevel="INFO"/>
|
||||
|
||||
<setBody>
|
||||
<simple>${null}</simple>
|
||||
</setBody>
|
||||
|
||||
<pollEnrich timeout="0" strategyRef="headerMergeAggregator">
|
||||
<simple>entaxy-broker:queue:${headers.NTX_OutQueue}</simple>
|
||||
</pollEnrich>
|
||||
|
||||
<choice>
|
||||
<when>
|
||||
<simple>${body} == null</simple>
|
||||
<log message="No Messages" loggingLevel="WARN"/>
|
||||
<setHeader name="NTX_Status">
|
||||
<constant>204</constant>
|
||||
</setHeader>
|
||||
<to uri="xslt:ru/entaxy/esb/platform/runtime/modules/uniform-service/xslt/GetPacketResponse.xsl?failOnNullBody=false"/>
|
||||
<removeHeaders pattern="NTX_Status"/>
|
||||
</when>
|
||||
<otherwise>
|
||||
<log message="Get Message ${body}" loggingLevel="DEBUG"/>
|
||||
<setHeader name="ENTAXY_AcknowledgeMsgID">
|
||||
<simple>${bean:uuidGenerator.toString}</simple>
|
||||
</setHeader>
|
||||
<to uri="direct-vm:uniform-service-common-save-acknowledge?block=true&timeout=70000"/>
|
||||
|
||||
<bean ref="headersConverter" method="json2xml"/>
|
||||
<when>
|
||||
<simple>${headers.CamelJms_IntMessageType} == 'String'</simple>
|
||||
<bean beanType="org.apache.commons.lang3.StringEscapeUtils"
|
||||
method="escapeXml(${body})"/>
|
||||
</when>
|
||||
<setBody>
|
||||
<simple><![CDATA[<body>${body}</body>]]></simple>
|
||||
</setBody>
|
||||
|
||||
<to uri="xslt:ru/entaxy/esb/platform/runtime/modules/uniform-service/xslt/GetPacketResponse.xsl"/>
|
||||
<to uri="direct-vm:uniform-service-transform-body?block=true&timeout=30000"/>
|
||||
<log message="Send message ${headers.ENTAXY_MessageUUID} for ${headers.NTX_SystemId} ackId ${headers.ENTAXY_AcknowledgeMsgID}"
|
||||
loggingLevel="INFO"/>
|
||||
<removeHeaders pattern="JMS.+|NTX_.+|ENTAXY_.+"/>
|
||||
</otherwise>
|
||||
</choice>
|
||||
</route>
|
||||
</camelContext>
|
||||
|
||||
</blueprint>
|
Reference in New Issue
Block a user