Class EsbSoapWrapperPipe
java.lang.Object
org.frankframework.core.TransactionAttributes
org.frankframework.pipes.AbstractPipe
org.frankframework.pipes.FixedForwardPipe
org.frankframework.soap.SoapWrapperPipe
org.frankframework.extensions.esb.EsbSoapWrapperPipe
- All Implemented Interfaces:
DestinationValidator,FrankElement,HasApplicationContext,HasName,HasTransactionAttribute,IConfigurable,IForwardTarget,IPipe,IScopeProvider,IWithParameters,IWrapperPipe,NameAware,EventThrowing,org.springframework.beans.factory.Aware,org.springframework.context.ApplicationContextAware,org.springframework.context.Lifecycle
- Direct Known Subclasses:
FxfWrapperPipe
@Category(NN_SPECIAL)
public class EsbSoapWrapperPipe
extends SoapWrapperPipe
implements DestinationValidator
Extension to SoapWrapperPipe for separate modes.
Parameters:
Parameters:
Parameters:
Parameters:
Configuration (where deviating from SoapWrapperPipe):
| attributes | description | default |
|---|---|---|
mode | either i2t (ifsa2tibco), reg (regular) or bis (Business Integration Services) | reg |
cmhVersion | (only used when mode=reg) Common Message Header version (1 or 2) | 1 when mode=reg, 0 otherwise |
soapHeaderSessionKey | if direction=unwrap: | soapHeader |
soapHeaderStyleSheet | if direction=wrap and mode=i2t: | /xml/xsl/esb/soapHeader.xsl |
if direction=wrap and mode=reg: | TODO (for now identical to the "i2t" SOAP Header) | |
if direction=wrap and mode=bis: | /xml/xsl/esb/bisSoapHeader.xsl | |
soapBodyStyleSheet | if direction=wrap and mode=reg: | /xml/xsl/esb/soapBody.xsl |
if direction=wrap and mode=bis: | /xml/xsl/esb/bisSoapBody.xsl | |
addOutputNamespace | (only used when direction=wrap) when true, outputNamespace is automatically set using the parameters (if $messagingLayer='P2P' then 'http://nn.nl/XSD/$businessDomain/$applicationName/$applicationFunction' else is serviceContext is not empty 'http://nn.nl/XSD/$businessDomain/$serviceName/$serviceContext/$serviceContextVersion/$operationName/$operationVersion' else 'http://nn.nl/XSD/$businessDomain/$serviceName/$serviceVersion/$operationName/$operationVersion') | false |
retrievePhysicalDestination | (only used when direction=wrap) when true, the physical destination is retrieved from the queue instead of using the parameter destination | true |
useFixedValues | If true, the fields CorrelationId, MessageId and Timestamp will have a fixed value (for testing purposes only) | false |
fixResultNamespace | (only used when direction=wrap) when true and the Result tag already exists, the namespace is changed | false |
p2pAlias | When the messagingLayer part of the destination has this value interpret it as P2P | |
esbAlias | When the messagingLayer part of the destination has this value interpret it as ESB | |
/xml/xsl/esb/soapHeader.xsl:
| element | level | value |
|---|---|---|
| MessageHeader | 0 | |
| xmlns=$namespace | ||
| From | 1 | |
| Id | 2 | $fromId |
| To | 1 | |
| Location | 2 | if $messagingLayer='P2P' then $messagingLayer.$businessDomain.$applicationName.$applicationFunction.$paradigm else if $serviceContext is not empty then $messagingLayer.$businessDomain.$serviceLayer.$serviceName.$serviceContext.$serviceContextVersion.$operationName.$operationVersion.$paradigm else $messagingLayer.$businessDomain.$serviceLayer.$serviceName.$serviceVersion.$operationName.$operationVersion.$paradigm |
| HeaderFields | 1 | |
| CPAId | 2 | $cpaId |
| ConversationId | 2 | $conversationId |
| CorrelationId | 2 | $correlationId (if empty then skip this element) |
| MessageId | 2 | $messageId |
| ExternalRefToMessageId | 2 | $externalRefToMessageId (if empty then skip this element) |
| Timestamp | 2 | $timestamp |
| TransactionId | 2 | $transactionId (only used when $mode=reg and $cmhVersion=2; if empty then skip this element) |
| Service | 1 | |
| Name | 2 | $serviceName |
| Context | 2 | $serviceContext |
| Action | 2 | |
| Paradigm | 3 | $paradigm |
| Name | 3 | $operationName |
| Version | 3 | $operationVersion |
| name | default |
|---|---|
| mode | copied from mode |
| cmhVersion | copied from cmhVersion |
| namespace | "http://nn.nl/XSD/Generic/MessageHeader/2" (only when $mode=reg and $cmhVersion=2) "http://nn.nl/XSD/Generic/MessageHeader/1" (otherwise) |
| businessDomain | |
| serviceName | |
| serviceContext | |
| service(Context)Version | 1 |
| operationName | |
| operationVersion | 1 |
| paradigm | |
| applicationName | |
| applicationFunction | |
| messagingLayer | ESB |
| serviceLayer | |
| destination | if not empty this parameter contains the preceding parameters as described in 'Location' in the table above |
| fromId | property 'instance.name' |
| cpaId | if applicable, copied from the original (received) SOAP Header, else 'n/a' |
| conversationId | if applicable, copied from the original (received) SOAP Header, else parameter pattern '{hostname}_{uid}' |
| messageId | parameter pattern '{hostname}_{uid}' |
| correlationId | if $paradigm equals 'Response' then copied from MessageId in the original (received) SOAP Header |
| externalRefToMessageId | if applicable, copied from the original (received) SOAP Header |
| timestamp | parameter pattern '{now,date,yyyy-MM-dd'T'HH:mm:ss}' |
| transactionId | if applicable, copied from the original (received) SOAP Header |
/xml/xsl/esb/bisSoapHeader.xsl:
| element | level | value |
|---|---|---|
| MessageHeader | 0 | |
| xmlns=$namespace | ||
| From | 1 | |
| Id | 2 | $fromId |
| HeaderFields | 1 | |
| ConversationId | 2 | $conversationId |
| MessageId | 2 | $messageId |
| ExternalRefToMessageId | 2 | $externalRefToMessageId (if empty then skip this element) |
| Timestamp | 2 | $timestamp |
| name | default |
|---|---|
| namespace | "http://www.ing.com/CSP/XSD/General/Message_2" |
| fromId | property 'instance.name' |
| conversationId | if applicable, copied from the original (received) SOAP Header, else parameter pattern '{hostname}_{uid}' |
| messageId | parameter pattern '{hostname}_{uid}' |
| externalRefToMessageId | if applicable, copied from MessageId in the original (received) SOAP Header |
| timestamp | parameter pattern '{now,date,yyyy-MM-dd'T'HH:mm:ss}' |
/xml/xsl/esb/soapBody.xsl:
| element | level | value | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| [Payload] | 0 | if $errorCode is empty then the complete payload will be copied and if not already existing a Result tag will be added else only the root tag will be copied | ||||||||||||
| Result | 1 | this element will be the last child in the copied root tag (only applicable for $paradigm 'Response'); if $errorCode is empty and a Result tag already exists then skip this element including its child elements | ||||||||||||
| xmlns=$namespace | ||||||||||||||
| Status | 2 | if $errorCode is empty then 'OK' else 'ERROR' | ||||||||||||
| ErrorList | 2 | if $errorCode is empty then skip this element including its child elements | ||||||||||||
| Error | 3 | |||||||||||||
| Code | 4 | $errorCode | ||||||||||||
| Reason | 4 | if $errorReason is not empty then $errorReason else it will be derived from $errorCode:
| ||||||||||||
| Service | 4 | |||||||||||||
| Name | 5 | $serviceName | ||||||||||||
| Context | 5 | $serviceContext | ||||||||||||
| Action | 5 | |||||||||||||
| Paradigm | 6 | $paradigm | ||||||||||||
| Name | 6 | $operationName | ||||||||||||
| Version | 6 | $operationVersion | ||||||||||||
| DetailList | 4 | if $errorDetailCode is empty then skip this element including its child elements | ||||||||||||
| Detail | 5 | |||||||||||||
| Code | 6 | $errorDetailCode | ||||||||||||
| Text | 6 | $errorDetailText (if empty then skip this element) |
| name | default |
|---|---|
| mode | copied from mode |
| cmhVersion | copied from cmhVersion |
| namespace | "http://nn.nl/XSD/Generic/MessageHeader/2" (only when $mode=reg and $cmhVersion=2) "http://nn.nl/XSD/Generic/MessageHeader/1" (otherwise) |
| errorCode | |
| errorReason | |
| errorDetailCode | |
| errorDetailText | |
| serviceName | |
| serviceContext | |
| operationName | |
| operationVersion | 1 |
| paradigm | |
| fixResultNamespace | false |
/xml/xsl/esb/bisSoapBody.xsl:
| element | level | value | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| [Payload] | 0 | if $errorCode is empty then the complete payload will be copied and if not already existing a Result tag will be added else only the root tag will be copied | ||||||||||||
| Result | 1 | this element will be the last child in the copied root tag (only applicable for $paradigm 'Response' and 'Reply'); if $errorCode is empty and a Result tag already exists then skip this element including its child elements | ||||||||||||
| xmlns=$namespace | ||||||||||||||
| Status | 2 | if $errorCode is empty then 'OK' else 'ERROR' | ||||||||||||
| ErrorList | 2 | if $errorCode is empty then skip this element including its child elements | ||||||||||||
| Error | 3 | |||||||||||||
| Code | 4 | $errorCode | ||||||||||||
| Reason | 4 | if $errorReason is not empty then $errorReason else it will be derived from $errorCode:
| ||||||||||||
| Service | 4 | |||||||||||||
| Name | 5 | $serviceName | ||||||||||||
| Context | 5 | $serviceContext | ||||||||||||
| Action | 5 | |||||||||||||
| Name | 6 | $operationName | ||||||||||||
| Version | 6 | $operationVersion | ||||||||||||
| DetailList | 4 | if $errorDetailCode is empty then skip this element including its child elements | ||||||||||||
| Detail | 5 | |||||||||||||
| Code | 6 | $errorDetailCode | ||||||||||||
| Text | 6 | $errorDetailText (if empty then skip this element) |
| name | default |
|---|---|
| namespace | "http://www.ing.com/CSP/XSD/General/Message_2" |
| errorCode | |
| errorReason | |
| errorDetailCode | |
| errorDetailText | |
| serviceName | |
| serviceContext | |
| operationName | |
| operationVersion | 1 |
| paradigm |
- Author:
- Peter Leeuwenburgh
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface org.frankframework.core.IWrapperPipe
IWrapperPipe.Direction -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final StringFields inherited from class org.frankframework.soap.SoapWrapperPipe
DEFAULT_SOAP_HEADER_SESSION_KEY, DEFAULT_SOAP_NAMESPACE_SESSION_KEY, DEFAULT_SOAP_VERSION_FOR_WRAPPINGFields inherited from class org.frankframework.pipes.AbstractPipe
parameterNamesMustBeUniqueFields inherited from class org.frankframework.core.TransactionAttributes
logFields inherited from interface org.frankframework.core.IPipe
LONG_DURATION_MONITORING_EVENT, MESSAGE_SIZE_MONITORING_EVENT, PIPE_EXCEPTION_MONITORING_EVENT -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidChecks for correct configuration of forward.static Stringstatic booleanisEsbDestinationWithoutServiceContext(String destination) static booleanisEsbNamespaceWithoutServiceContext(String namespace) static booleanisValidNamespace(String namespace) booleanretrievePhysicalDestinationFromListener(IListener<?> listener) booleanvoidsetAddOutputNamespace(boolean b) (only used whendirection=wrap) whentrue,outputNamespaceis automatically set using the parameters (if $messagingLayer='P2P' then 'http://nn.nl/XSD/$businessDomain/$applicationName/$applicationFunction' else is serviceContext is not empty 'http://nn.nl/XSD/$businessDomain/$serviceName/$serviceContext/$serviceContextVersion/$operationName/$operationVersion' else 'http://nn.nl/XSD/$businessDomain/$serviceName/$serviceVersion/$operationName/$operationVersion')voidsetCmhVersion(int i) Only used whenmode=reg!voidsetEsbAlias(String esbAlias) When the messagingLayer part of the destination has this value interpret it as ESBvoidsetFixResultNamespace(boolean b) (only used whendirection=wrap) whentrueand the Result tag already exists, the namespace is changedvoidvoidsetP2pAlias(String p2pAlias) When the messagingLayer part of the destination has this value interpret it as P2PvoidsetRetrievePhysicalDestination(boolean b) (only used whendirection=wrap) whentrue, the physical destination is retrieved from the queue instead of using the parameterdestinationvoidsetUseFixedValues(boolean b) Iftrue, the fields CorrelationId, MessageId and Timestamp will have a fixed value (for testing purposes only)voidvalidateListenerDestinations(PipeLine pipeLine) voidvalidateSenderDestination(ISender sender) Methods inherited from class org.frankframework.soap.SoapWrapperPipe
doPipe, setAllowPlainXml, setDirection, setEncodingStyle, setIgnoreSoapFault, setOmitXmlDeclaration, setOutputNamespace, setRemoveOutputNamespaces, setRemoveUnusedOutputNamespaces, setRoot, setServiceNamespace, setSoapBodyStyleSheet, setSoapHeaderSessionKey, setSoapHeaderStyleSheet, setSoapNamespace, setSoapNamespaceSessionKey, setSoapVersion, setWssAuthAlias, setWssPassword, setWssPasswordDigest, setWssUserName, start, stop, unwrapMessage, wrapMessageMethods inherited from class org.frankframework.pipes.FixedForwardPipe
getParameterValue, setIfParam, setIfValue, setOnlyIfSessionKey, setOnlyIfValue, setSkipOnEmptyInput, setUnlessSessionKey, setUnlessValue, skipPipeMethods inherited from class org.frankframework.pipes.AbstractPipe
addForward, addParameter, consumesSessionVariable, createBean, findForward, getAdapter, getEventSourceName, getForwards, getParameterList, hasRegisteredForward, isRunning, registerEvent, setApplicationContext, setChompCharSize, setDurationThreshold, setElementToMove, setElementToMoveChain, setElementToMoveSessionKey, setEmptyInputReplacement, setGetInputFromFixedValue, setGetInputFromSessionKey, setHideRegex, setLocker, setLogIntermediaryResults, setMaxThreads, setName, setPreserveInput, setRemoveCompactMsgNamespaces, setRestoreMovedElements, setSecLogSessionKeys, setSizeStatistics, setStoreResultInSessionKey, setWriteToSecLog, sizeStatisticsEnabled, throwEventMethods inherited from class org.frankframework.core.TransactionAttributes
configureTransactionAttributes, isTransacted, isTransacted, setTransacted, setTransactionTimeoutMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.context.ApplicationContextAware
setApplicationContextMethods inherited from interface org.frankframework.core.FrankElement
addConfigWarningMethods inherited from interface org.frankframework.core.HasApplicationContext
getApplicationContext, getConfigurationClassLoaderMethods inherited from interface org.frankframework.core.HasTransactionAttribute
getTransactionAttribute, getTransactionTimeout, getTxDef, setTransactionAttributeMethods inherited from interface org.frankframework.core.IForwardTarget
getNameMethods inherited from interface org.frankframework.core.IPipe
addForward, consumesSessionVariable, getChompCharSize, getDurationThreshold, getElementToMove, getElementToMoveChain, getElementToMoveSessionKey, getEmptyInputReplacement, getForwards, getGetInputFromFixedValue, getGetInputFromSessionKey, getHideRegex, getLocker, getLogIntermediaryResults, getMaxThreads, getSecLogSessionKeys, getStoreResultInSessionKey, isPreserveInput, isRemoveCompactMsgNamespaces, isRestoreMovedElements, isWriteToSecLog, registerEvent, setChompCharSize, setDurationThreshold, setElementToMove, setElementToMoveChain, setElementToMoveSessionKey, setEmptyInputReplacement, setGetInputFromFixedValue, setGetInputFromSessionKey, setHideRegex, setLocker, setLogIntermediaryResults, setPipeLine, setPreserveInput, setRemoveCompactMsgNamespaces, setRestoreMovedElements, setSecLogSessionKeys, setStoreResultInSessionKey, setWriteToSecLog, sizeStatisticsEnabled, throwEvent, throwEventMethods inherited from interface org.frankframework.core.IWrapperPipe
setNameMethods inherited from interface org.springframework.context.Lifecycle
isRunning
-
Field Details
-
OUTPUTNAMESPACEBASEURI
- See Also:
-
BUSINESSDOMAIN_PARAMETER_NAME
- See Also:
-
SERVICENAME_PARAMETER_NAME
- See Also:
-
SERVICECONTEXT_PARAMETER_NAME
- See Also:
-
SERVICECONTEXTVERSION_PARAMETER_NAME
- See Also:
-
OPERATIONNAME_PARAMETER_NAME
- See Also:
-
OPERATIONVERSION_PARAMETER_NAME
- See Also:
-
PARADIGM_PARAMETER_NAME
- See Also:
-
APPLICATIONNAME_PARAMETER_NAME
- See Also:
-
APPLICATIONFUNCTION_PARAMETER_NAME
- See Also:
-
MESSAGINGLAYER_PARAMETER_NAME
- See Also:
-
SERVICELAYER_PARAMETER_NAME
- See Also:
-
DESTINATION_PARAMETER_NAME
- See Also:
-
PHYSICALDESTINATION_PARAMETER_NAME
- See Also:
-
FROMID_PARAMETER_NAME
- See Also:
-
CPAID_PARAMETER_NAME
- See Also:
-
CONVERSATIONID_PARAMETER_NAME
- See Also:
-
MESSAGEID_PARAMETER_NAME
- See Also:
-
CORRELATIONID_PARAMETER_NAME
- See Also:
-
EXTERNALREFTOMESSAGEID_PARAMETER_NAME
- See Also:
-
TIMESTAMP_PARAMETER_NAME
- See Also:
-
FIXRESULTNAMESPACE_PARAMETER_NAME
- See Also:
-
TRANSACTIONID_PARAMETER_NAME
- See Also:
-
MODE_PARAMETER_NAME
- See Also:
-
CMHVERSION_PARAMETER_NAME
- See Also:
-
-
Constructor Details
-
EsbSoapWrapperPipe
public EsbSoapWrapperPipe()
-
-
Method Details
-
configure
Description copied from class:FixedForwardPipeChecks for correct configuration of forward.- Specified by:
configurein interfaceIConfigurable- Overrides:
configurein classSoapWrapperPipe- Throws:
ConfigurationException- in case it was not able to configure the component.
-
getOutputNamespaceBaseUri
-
getBusinessDomain
-
getServiceName
-
getServiceContext
-
getServiceContextVersion
-
getOperationName
-
getOperationVersion
-
getDestination
-
getMessagingLayer
-
getServiceLayer
-
getParadigm
-
getApplicationName
-
getApplicationFunction
-
isValidNamespace
-
retrievePhysicalDestinationFromSender
-
retrievePhysicalDestinationFromListener
- Throws:
JmsException
-
isEsbDestinationWithoutServiceContext
-
isEsbNamespaceWithoutServiceContext
-
setMode
- Default value
- REG
-
setCmhVersion
public void setCmhVersion(int i) Only used whenmode=reg! Sets the Common Message Header version. 1 or 2- Default value
- 1
-
setAddOutputNamespace
public void setAddOutputNamespace(boolean b) (only used whendirection=wrap) whentrue,outputNamespaceis automatically set using the parameters (if $messagingLayer='P2P' then 'http://nn.nl/XSD/$businessDomain/$applicationName/$applicationFunction' else is serviceContext is not empty 'http://nn.nl/XSD/$businessDomain/$serviceName/$serviceContext/$serviceContextVersion/$operationName/$operationVersion' else 'http://nn.nl/XSD/$businessDomain/$serviceName/$serviceVersion/$operationName/$operationVersion')- Default value
- false
-
setRetrievePhysicalDestination
public void setRetrievePhysicalDestination(boolean b) (only used whendirection=wrap) whentrue, the physical destination is retrieved from the queue instead of using the parameterdestination- Default value
- true
-
setUseFixedValues
public void setUseFixedValues(boolean b) Iftrue, the fields CorrelationId, MessageId and Timestamp will have a fixed value (for testing purposes only)- Default value
- false
-
setFixResultNamespace
public void setFixResultNamespace(boolean b) (only used whendirection=wrap) whentrueand the Result tag already exists, the namespace is changed- Default value
- false
-
setP2pAlias
When the messagingLayer part of the destination has this value interpret it as P2P -
setEsbAlias
When the messagingLayer part of the destination has this value interpret it as ESB -
validateListenerDestinations
- Specified by:
validateListenerDestinationsin interfaceDestinationValidator- Throws:
ConfigurationException
-
validateSenderDestination
- Specified by:
validateSenderDestinationin interfaceDestinationValidator- Throws:
ConfigurationException
-