Class XPathTransformer
java.lang.Object
org.springframework.integration.context.IntegrationObjectSupport
org.springframework.integration.transformer.AbstractTransformer
org.springframework.integration.xml.transformer.XPathTransformer
- All Implemented Interfaces:
Aware
,BeanFactoryAware
,BeanNameAware
,InitializingBean
,ApplicationContextAware
,ExpressionCapable
,NamedComponent
,GenericTransformer<Message<?>,Message<?>>
,Transformer
public class XPathTransformer extends AbstractTransformer
Transformer implementation that evaluates an XPath expression against the inbound
Message payload and returns a Message whose payload is the result of that evaluation.
Prior to evaluation, the payload may be converted by the configured
XmlPayloadConverter
instance. The default converter type is DefaultXmlPayloadConverter
.
The evaluation result type will depend on either the enumeration value provided to
setEvaluationType(XPathEvaluationType)
or the presence of a NodeMapper
,
which takes precedence. If no NodeMapper
or evaluation type is configured explicitly,
the default evaluation type is XPathEvaluationType.STRING_RESULT
.
- Since:
- 2.0
- Author:
- Mark Fisher
-
Field Summary
Fields inherited from class org.springframework.integration.context.IntegrationObjectSupport
EXPRESSION_PARSER, logger
-
Constructor Summary
Constructors Constructor Description XPathTransformer(String expression)
Create anXPathTransformer
that will create an XPath expression from the given String to be evaluated against converted inbound Message payloads.XPathTransformer(XPathExpression expression)
Create anXPathTransformer
that will evaluate the givenXPathExpression
against converted inbound Message payloads. -
Method Summary
Modifier and Type Method Description protected Object
doTransform(Message<?> message)
Subclasses must implement this method to provide the transformation logic.String
getComponentType()
Subclasses may implement this method to provide component type information.void
setConverter(XmlPayloadConverter converter)
Specify theXmlPayloadConverter
to use when converting a Message payload prior to XPath evaluation.void
setEvaluationType(XPathEvaluationType evaluationType)
Specify the expectedXPathEvaluationType
.void
setNodeMapper(NodeMapper<?> nodeMapper)
Set aNodeMapper
to use for generating the result object.Methods inherited from class org.springframework.integration.transformer.AbstractTransformer
transform
Methods inherited from class org.springframework.integration.context.IntegrationObjectSupport
afterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentName, getConversionService, getExpression, getIntegrationProperties, getIntegrationProperty, getMessageBuilderFactory, getTaskScheduler, isInitialized, onInit, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toString
-
Constructor Details
-
XPathTransformer
Create anXPathTransformer
that will create an XPath expression from the given String to be evaluated against converted inbound Message payloads.- Parameters:
expression
- The expression.
-
XPathTransformer
Create anXPathTransformer
that will evaluate the givenXPathExpression
against converted inbound Message payloads.- Parameters:
expression
- The expression.
-
-
Method Details
-
setEvaluationType
Specify the expectedXPathEvaluationType
. The default isXPathEvaluationType.STRING_RESULT
.- Parameters:
evaluationType
- The evaluation type.
-
setNodeMapper
Set aNodeMapper
to use for generating the result object. By default the NodeMapper is null, but if explicitly set, type determination is the responsibility of the NodeMapper, taking precedence over any configured evaluationType.- Parameters:
nodeMapper
- The node mapper.
-
setConverter
Specify theXmlPayloadConverter
to use when converting a Message payload prior to XPath evaluation.- Parameters:
converter
- The payload converter.
-
getComponentType
Description copied from class:IntegrationObjectSupport
Subclasses may implement this method to provide component type information.- Specified by:
getComponentType
in interfaceNamedComponent
- Overrides:
getComponentType
in classIntegrationObjectSupport
-
doTransform
Description copied from class:AbstractTransformer
Subclasses must implement this method to provide the transformation logic. If the return value is itself a Message, it will be used as the result. Otherwise, any non-null return value will be used as the payload of the result Message.- Specified by:
doTransform
in classAbstractTransformer
- Parameters:
message
- The message.- Returns:
- The result of the transformation.
-