Class ThreadSafeXsltConverter<SOURCE,TARGET>
- java.lang.Object
-
- org.ikasan.component.converter.xml.ThreadSafeXsltConverter<SOURCE,TARGET>
-
- All Implemented Interfaces:
org.ikasan.spec.component.transformation.Converter<SOURCE,TARGET>,org.ikasan.spec.configuration.Configured<XsltConverterConfiguration>,org.ikasan.spec.configuration.ConfiguredResource<XsltConverterConfiguration>,org.ikasan.spec.management.ManagedResource
public class ThreadSafeXsltConverter<SOURCE,TARGET> extends java.lang.Object implements org.ikasan.spec.component.transformation.Converter<SOURCE,TARGET>, org.ikasan.spec.configuration.ConfiguredResource<XsltConverterConfiguration>, org.ikasan.spec.management.ManagedResource
/** This class is a Thread Safe XSLT Transformer component that acts on all anEvent'sPayloads, transforming them using the supplied style sheet. This implementation is notable for the following reasons:- This implementaiton is threadsafe! It create a converter per thread.It also creates a
Transformeras a new instance is created for every payload. Each instance of this class will associate to one and only one style sheet during its life, and as such instances will be good for only one type of transformation only. - Is is intended to be capable of transforming non-xml
Payloads through the configuration of a content specificXMLReader; e.g. anXMLReaderimplementation capable of reading fixed length flat files can be setter-injected thus allowing flat file (fixed length) payloads to be directly transformed with XSLT. SeeXsltConverter.setXmlReader(XMLReader) - It is designed to allow a set of externally sourced (injected) java objects to be supplied scoped to the
underlying transformer. This allows for such function as database calls from the XSLT to be supported indirectly
through the injection of externally managed supporting beans. See
XsltConverter.setExternalResources(Map) - Rather than relying on the default
ErrorListenerthis transformer supplies its own implementation designed to propagate the exceptions thrown for parse time errors and warnings. This can be overridden by usingsetErrorListener(ErrorListener). - The ability to configure its properties at runtime through implementation of
ConfiguredResourcecontract. The configuration object allows for configuring use of translets (compiling a stylesheet) and the stylesheet's location - Configured stylesheets can either be loaded off of application's classpath, file system, web server ..etc. However, mixing them is not possible.
Gotchas to be aware of...
- When loading stylehsheets off of classpath, if the stylesheet tries to embed other stylesheets via
xsl:importand/orxsl:includeelements, then a customURIResolverimplementation capable of loading resources from classpath must be set on constructor-injectedTransformerFactory. Also, if any of stylesheets load files usingdocument()function, the customeURIResolvermust also be set on theTransformerobject created. This dictated byjavax.xml.transformAPI peculiar design!
- Author:
- Ikasan Development Team
- See Also:
XsltConverterConfiguration,ExceptionThrowingErrorListener
-
-
Constructor Summary
Constructors Constructor Description ThreadSafeXsltConverter(javax.xml.transform.TransformerFactory transformerFactory)Constructor
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description TARGETconvert(SOURCE s)protected XsltConverter<SOURCE,TARGET>createNewXsltConverter()XsltConverterConfigurationgetConfiguration()org.ikasan.spec.component.transformation.Converter<XsltConverterConfiguration,java.util.Map<java.lang.String,java.lang.String>>getConfigurationParameterConverter()java.lang.StringgetConfiguredResourceId()javax.xml.transform.ErrorListenergetErrorListener()java.util.Map<java.lang.String,java.lang.Object>getExternalResources()java.util.Map<java.lang.String,java.lang.String>getTransformationParameters()javax.xml.transform.URIResolvergetURIResolver()org.xml.sax.XMLReadergetXmlReader()booleanisCriticalOnStartup()voidsetConfiguration(XsltConverterConfiguration xsltConverterConfiguration)voidsetConfigurationParameterConverter(org.ikasan.spec.component.transformation.Converter<XsltConverterConfiguration,java.util.Map<java.lang.String,java.lang.String>> configurationParameterConverter)voidsetConfiguredResourceId(java.lang.String configuredResourceId)voidsetCriticalOnStartup(boolean b)voidsetErrorListener(javax.xml.transform.ErrorListener errorListener)voidsetExternalResources(java.util.Map<java.lang.String,java.lang.Object> externalResources)voidsetManagedResourceRecoveryManager(org.ikasan.spec.management.ManagedResourceRecoveryManager managedResourceRecoveryManager)voidsetParameterExtractor(org.ikasan.spec.component.transformation.Converter<java.lang.Object,java.util.Map<java.lang.String,java.lang.String>> parameterExtractor)voidsetTransformationParameters(java.util.Map<java.lang.String,java.lang.String> transformationParameters)voidsetURIResolver(javax.xml.transform.URIResolver uriResolver)voidsetXmlExtractor(org.ikasan.spec.component.transformation.Converter<java.lang.Object,java.lang.String> xmlExtractor)voidsetXmlReader(org.xml.sax.XMLReader xmlReader)voidstartManagedResource()voidstopManagedResource()
-
-
-
Method Detail
-
convert
public TARGET convert(SOURCE s) throws org.ikasan.spec.component.transformation.TransformationException
-
createNewXsltConverter
protected XsltConverter<SOURCE,TARGET> createNewXsltConverter()
-
getConfiguredResourceId
public java.lang.String getConfiguredResourceId()
- Specified by:
getConfiguredResourceIdin interfaceorg.ikasan.spec.configuration.ConfiguredResource<SOURCE>
-
setConfiguredResourceId
public void setConfiguredResourceId(java.lang.String configuredResourceId)
- Specified by:
setConfiguredResourceIdin interfaceorg.ikasan.spec.configuration.ConfiguredResource<SOURCE>
-
getConfiguration
public XsltConverterConfiguration getConfiguration()
- Specified by:
getConfigurationin interfaceorg.ikasan.spec.configuration.Configured<SOURCE>
-
setConfiguration
public void setConfiguration(XsltConverterConfiguration xsltConverterConfiguration)
- Specified by:
setConfigurationin interfaceorg.ikasan.spec.configuration.Configured<SOURCE>
-
startManagedResource
public void startManagedResource()
- Specified by:
startManagedResourcein interfaceorg.ikasan.spec.management.ManagedResource
-
stopManagedResource
public void stopManagedResource()
- Specified by:
stopManagedResourcein interfaceorg.ikasan.spec.management.ManagedResource
-
setManagedResourceRecoveryManager
public void setManagedResourceRecoveryManager(org.ikasan.spec.management.ManagedResourceRecoveryManager managedResourceRecoveryManager)
- Specified by:
setManagedResourceRecoveryManagerin interfaceorg.ikasan.spec.management.ManagedResource
-
isCriticalOnStartup
public boolean isCriticalOnStartup()
- Specified by:
isCriticalOnStartupin interfaceorg.ikasan.spec.management.ManagedResource
-
setCriticalOnStartup
public void setCriticalOnStartup(boolean b)
- Specified by:
setCriticalOnStartupin interfaceorg.ikasan.spec.management.ManagedResource
-
getTransformationParameters
public java.util.Map<java.lang.String,java.lang.String> getTransformationParameters()
-
setTransformationParameters
public void setTransformationParameters(java.util.Map<java.lang.String,java.lang.String> transformationParameters)
-
getXmlReader
public org.xml.sax.XMLReader getXmlReader()
-
setXmlReader
public void setXmlReader(org.xml.sax.XMLReader xmlReader)
-
getErrorListener
public javax.xml.transform.ErrorListener getErrorListener()
-
setErrorListener
public void setErrorListener(javax.xml.transform.ErrorListener errorListener)
-
getURIResolver
public javax.xml.transform.URIResolver getURIResolver()
-
setURIResolver
public void setURIResolver(javax.xml.transform.URIResolver uriResolver)
-
getConfigurationParameterConverter
public org.ikasan.spec.component.transformation.Converter<XsltConverterConfiguration,java.util.Map<java.lang.String,java.lang.String>> getConfigurationParameterConverter()
-
setConfigurationParameterConverter
public void setConfigurationParameterConverter(org.ikasan.spec.component.transformation.Converter<XsltConverterConfiguration,java.util.Map<java.lang.String,java.lang.String>> configurationParameterConverter)
-
getExternalResources
public java.util.Map<java.lang.String,java.lang.Object> getExternalResources()
-
setExternalResources
public void setExternalResources(java.util.Map<java.lang.String,java.lang.Object> externalResources)
-
setXmlExtractor
public void setXmlExtractor(org.ikasan.spec.component.transformation.Converter<java.lang.Object,java.lang.String> xmlExtractor)
-
setParameterExtractor
public void setParameterExtractor(org.ikasan.spec.component.transformation.Converter<java.lang.Object,java.util.Map<java.lang.String,java.lang.String>> parameterExtractor)
-
-