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 String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
Fields inherited from class org.frankframework.soap.SoapWrapperPipe
DEFAULT_SOAP_HEADER_SESSION_KEY, DEFAULT_SOAP_NAMESPACE_SESSION_KEY, DEFAULT_SOAP_VERSION_FOR_WRAPPING
Fields inherited from class org.frankframework.pipes.AbstractPipe
parameterNamesMustBeUnique
Fields inherited from class org.frankframework.core.TransactionAttributes
log
Fields 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 TypeMethodDescriptionvoid
Checks for correct configuration of forward.static String
static boolean
isEsbDestinationWithoutServiceContext
(String destination) static boolean
isEsbNamespaceWithoutServiceContext
(String namespace) static boolean
isValidNamespace
(String namespace) boolean
retrievePhysicalDestinationFromListener
(IListener<?> listener) boolean
void
setAddOutputNamespace
(boolean b) (only used whendirection=wrap
) whentrue
,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')void
setCmhVersion
(int i) Only used whenmode=reg
!void
setEsbAlias
(String esbAlias) When the messagingLayer part of the destination has this value interpret it as ESBvoid
setFixResultNamespace
(boolean b) (only used whendirection=wrap
) whentrue
and the Result tag already exists, the namespace is changedvoid
void
setP2pAlias
(String p2pAlias) When the messagingLayer part of the destination has this value interpret it as P2Pvoid
setRetrievePhysicalDestination
(boolean b) (only used whendirection=wrap
) whentrue
, the physical destination is retrieved from the queue instead of using the parameterdestination
void
setUseFixedValues
(boolean b) Iftrue
, the fields CorrelationId, MessageId and Timestamp will have a fixed value (for testing purposes only)void
validateListenerDestinations
(PipeLine pipeLine) void
validateSenderDestination
(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, wrapMessage
Methods inherited from class org.frankframework.pipes.FixedForwardPipe
getParameterValue, setIfParam, setIfValue, setOnlyIfSessionKey, setOnlyIfValue, setSkipOnEmptyInput, setUnlessSessionKey, setUnlessValue, skipPipe
Methods 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, throwEvent
Methods inherited from class org.frankframework.core.TransactionAttributes
configureTransactionAttributes, isTransacted, isTransacted, setTransacted, setTransactionTimeout
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.context.ApplicationContextAware
setApplicationContext
Methods inherited from interface org.frankframework.core.HasApplicationContext
getApplicationContext, getConfigurationClassLoader
Methods inherited from interface org.frankframework.core.HasTransactionAttribute
getTransactionAttribute, getTransactionTimeout, getTxDef, setTransactionAttribute
Methods inherited from interface org.frankframework.core.IForwardTarget
getName
Methods 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, throwEvent
Methods inherited from interface org.frankframework.core.IWrapperPipe
setName
Methods 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:FixedForwardPipe
Checks for correct configuration of forward.- Specified by:
configure
in interfaceIConfigurable
- Overrides:
configure
in 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
,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')- 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
) whentrue
and 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:
validateListenerDestinations
in interfaceDestinationValidator
- Throws:
ConfigurationException
-
validateSenderDestination
- Specified by:
validateSenderDestination
in interfaceDestinationValidator
- Throws:
ConfigurationException
-