AbstractTransformerParser now creates the actual endpoint rather than requiring a "ref" to an object that implements Transformer. Therefore the element being parsed must provide 'input-channel' and 'output-channel'.
This commit is contained in:
@@ -16,25 +16,27 @@
|
||||
|
||||
package org.springframework.integration.xml.config;
|
||||
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
|
||||
import org.springframework.beans.factory.xml.ParserContext;
|
||||
import org.springframework.integration.transformer.AbstractPayloadTransformer;
|
||||
import org.springframework.integration.transformer.config.AbstractPayloadTransformerParser;
|
||||
import org.springframework.integration.transformer.Transformer;
|
||||
import org.springframework.integration.transformer.config.AbstractTransformerParser;
|
||||
import org.springframework.integration.xml.transformer.XmlPayloadMarshallingTransformer;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
/**
|
||||
* @author Jonas Partner
|
||||
* @author Mark Fisher
|
||||
*/
|
||||
public class XmlMarshallingTransformerParser extends AbstractPayloadTransformerParser {
|
||||
public class XmlMarshallingTransformerParser extends AbstractTransformerParser {
|
||||
|
||||
private ResultFactoryResultTypeHelper resultFactoryHelper = new ResultFactoryResultTypeHelper();
|
||||
|
||||
|
||||
@Override
|
||||
protected Class<? extends AbstractPayloadTransformer<?, ?>> getTransformerClass() {
|
||||
protected Class<? extends Transformer> getTransformerClass() {
|
||||
return XmlPayloadMarshallingTransformer.class;
|
||||
}
|
||||
|
||||
@@ -45,7 +47,6 @@ public class XmlMarshallingTransformerParser extends AbstractPayloadTransformerP
|
||||
String marshaller = element.getAttribute("marshaller");
|
||||
String resultTransformer = element.getAttribute("result-transformer");
|
||||
Assert.hasText(marshaller, "the 'marshaller' attribute is required");
|
||||
|
||||
builder.addConstructorArgReference(marshaller);
|
||||
if (StringUtils.hasText(resultTransformer)) {
|
||||
builder.addConstructorArgReference(resultTransformer);
|
||||
|
||||
@@ -20,8 +20,8 @@ import org.w3c.dom.Element;
|
||||
|
||||
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
|
||||
import org.springframework.beans.factory.xml.ParserContext;
|
||||
import org.springframework.integration.transformer.AbstractPayloadTransformer;
|
||||
import org.springframework.integration.transformer.config.AbstractPayloadTransformerParser;
|
||||
import org.springframework.integration.transformer.Transformer;
|
||||
import org.springframework.integration.transformer.config.AbstractTransformerParser;
|
||||
import org.springframework.integration.xml.transformer.XmlPayloadUnmarshallingTransformer;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
@@ -29,10 +29,10 @@ import org.springframework.util.Assert;
|
||||
* @author Jonas Partner
|
||||
* @author Mark Fisher
|
||||
*/
|
||||
public class XmlUnmarshallingTransformerParser extends AbstractPayloadTransformerParser {
|
||||
public class XmlUnmarshallingTransformerParser extends AbstractTransformerParser {
|
||||
|
||||
@Override
|
||||
protected Class<? extends AbstractPayloadTransformer<?, ?>> getTransformerClass() {
|
||||
protected Class<? extends Transformer> getTransformerClass() {
|
||||
return XmlPayloadUnmarshallingTransformer.class;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,25 +16,27 @@
|
||||
|
||||
package org.springframework.integration.xml.config;
|
||||
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
|
||||
import org.springframework.beans.factory.xml.ParserContext;
|
||||
import org.springframework.integration.transformer.AbstractPayloadTransformer;
|
||||
import org.springframework.integration.transformer.config.AbstractPayloadTransformerParser;
|
||||
import org.springframework.integration.transformer.Transformer;
|
||||
import org.springframework.integration.transformer.config.AbstractTransformerParser;
|
||||
import org.springframework.integration.xml.transformer.XsltPayloadTransformer;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
/**
|
||||
* @author Jonas Partner
|
||||
* @author Mark Fisher
|
||||
*/
|
||||
public class XsltPayloadTransformerParser extends AbstractPayloadTransformerParser {
|
||||
public class XsltPayloadTransformerParser extends AbstractTransformerParser {
|
||||
|
||||
private ResultFactoryResultTypeHelper resultFactoryHelper = new ResultFactoryResultTypeHelper();
|
||||
|
||||
|
||||
@Override
|
||||
protected Class<? extends AbstractPayloadTransformer<?, ?>> getTransformerClass() {
|
||||
protected Class<? extends Transformer> getTransformerClass() {
|
||||
return XsltPayloadTransformer.class;
|
||||
}
|
||||
|
||||
@@ -45,7 +47,6 @@ public class XsltPayloadTransformerParser extends AbstractPayloadTransformerPars
|
||||
String resultTransformer = element.getAttribute("result-transformer");
|
||||
String resultFactory = element.getAttribute("result-factory");
|
||||
String resultType = element.getAttribute("result-type");
|
||||
|
||||
boolean bothHaveText = StringUtils.hasText(xslResource) && StringUtils.hasText(xslTemplates);
|
||||
boolean oneHasText = StringUtils.hasText(xslResource) || StringUtils.hasText(xslTemplates);
|
||||
Assert.state(!bothHaveText && oneHasText, "Exactly one of 'xsl-resource' or 'xsl-templates' is required.");
|
||||
@@ -61,7 +62,6 @@ public class XsltPayloadTransformerParser extends AbstractPayloadTransformerPars
|
||||
}
|
||||
resultFactoryHelper.assertResultFactoryAndTypeValid(resultFactory, resultType);
|
||||
resultFactoryHelper.addResultFactory(builder, resultType, resultFactory);
|
||||
|
||||
if (StringUtils.hasText(resultTransformer)) {
|
||||
builder.addConstructorArgReference(resultTransformer);
|
||||
}
|
||||
|
||||
@@ -22,18 +22,21 @@
|
||||
Defines an XML marshalling transformer.
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:attribute name="id" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="marshaller" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="result-type" use="optional">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:enumeration value="DOMResult"/>
|
||||
<xsd:enumeration value="StringResult"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:attribute>
|
||||
<xsd:attribute name="result-factory" use="optional"/>
|
||||
<xsd:attribute name="result-transformer" type="xsd:string" use="optional"/>
|
||||
<xsd:complexContent>
|
||||
<xsd:extension base="transformerType">
|
||||
<xsd:attribute name="marshaller" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="result-type" use="optional">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:enumeration value="DOMResult"/>
|
||||
<xsd:enumeration value="StringResult"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:attribute>
|
||||
<xsd:attribute name="result-factory" use="optional"/>
|
||||
<xsd:attribute name="result-transformer" type="xsd:string" use="optional"/>
|
||||
</xsd:extension>
|
||||
</xsd:complexContent>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
@@ -44,8 +47,11 @@
|
||||
Defines an XML unmarshalling transformer.
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:attribute name="id" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="unmarshaller" type="xsd:string" use="required"/>
|
||||
<xsd:complexContent>
|
||||
<xsd:extension base="transformerType">
|
||||
<xsd:attribute name="unmarshaller" type="xsd:string" use="required"/>
|
||||
</xsd:extension>
|
||||
</xsd:complexContent>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
@@ -56,20 +62,23 @@
|
||||
Defines an XSLT transformer.
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:attribute name="id" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="xsl-resource" type="xsd:string" use="optional"/>
|
||||
<xsd:attribute name="xsl-templates" type="xsd:string" use="optional"/>
|
||||
<xsd:attribute name="source-factory" type="xsd:string" use="optional"/>
|
||||
<xsd:attribute name="result-factory" type="xsd:string" use="optional"/>
|
||||
<xsd:attribute name="result-type" use="optional">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:enumeration value="DOMResult"/>
|
||||
<xsd:enumeration value="StringResult"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:attribute>
|
||||
<xsd:attribute name="result-transformer" type="xsd:string" use="optional"/>
|
||||
<xsd:complexContent>
|
||||
<xsd:extension base="transformerType">
|
||||
<xsd:attribute name="xsl-resource" type="xsd:string" use="optional"/>
|
||||
<xsd:attribute name="xsl-templates" type="xsd:string" use="optional"/>
|
||||
<xsd:attribute name="source-factory" type="xsd:string" use="optional"/>
|
||||
<xsd:attribute name="result-factory" type="xsd:string" use="optional"/>
|
||||
<xsd:attribute name="result-type" use="optional">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:enumeration value="DOMResult"/>
|
||||
<xsd:enumeration value="StringResult"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:attribute>
|
||||
<xsd:attribute name="result-transformer" type="xsd:string" use="optional"/>
|
||||
</xsd:extension>
|
||||
</xsd:complexContent>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
@@ -87,4 +96,10 @@
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<xsd:complexType name="transformerType">
|
||||
<xsd:attribute name="id" type="xsd:string" use="optional"/>
|
||||
<xsd:attribute name="input-channel" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="output-channel" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
|
||||
</xsd:schema>
|
||||
Reference in New Issue
Block a user