org.mule.transport.legstar.transformer
Class AbstractHostToXmlMuleTransformer

java.lang.Object
  extended by org.mule.transformer.AbstractTransformer
      extended by org.mule.transformer.AbstractMessageTransformer
          extended by org.mule.transport.legstar.transformer.AbstractHostMuleTransformer
              extended by org.mule.transport.legstar.transformer.AbstractHostXmlMuleTransformer
                  extended by org.mule.transport.legstar.transformer.AbstractHostToXmlMuleTransformer
All Implemented Interfaces:
org.mule.api.AnnotatedObject, org.mule.api.context.MuleContextAware, org.mule.api.lifecycle.Disposable, org.mule.api.lifecycle.Initialisable, org.mule.api.NameableObject, org.mule.api.NamedObject, org.mule.api.processor.MessageProcessor, org.mule.api.transformer.MessageTransformer, org.mule.api.transformer.Transformer, org.mule.endpoint.EndpointAware

public abstract class AbstractHostToXmlMuleTransformer
extends AbstractHostXmlMuleTransformer

This ESB Transformer converts host data into XML using the regular LegStar binding transformers.


Nested Class Summary
 
Nested classes/interfaces inherited from class org.mule.transport.legstar.transformer.AbstractHostMuleTransformer
AbstractHostMuleTransformer.HolderGetter, AbstractHostMuleTransformer.HolderSetter
 
Field Summary
 
Fields inherited from class org.mule.transformer.AbstractTransformer
encoding, endpoint, logger, mimeType, MULE_MESSAGE_DATA_TYPE, muleContext, name, returnType, sourceTypes
 
Fields inherited from interface org.mule.api.lifecycle.Initialisable
PHASE_NAME
 
Fields inherited from interface org.mule.api.lifecycle.Disposable
PHASE_NAME
 
Fields inherited from interface org.mule.api.AnnotatedObject
PROPERTY_NAME
 
Constructor Summary
AbstractHostToXmlMuleTransformer(com.legstar.coxb.transform.AbstractXmlTransformers xmlBindingTransformers)
          Constructor for single part transformers.
AbstractHostToXmlMuleTransformer(List<com.legstar.coxb.transform.AbstractTransformers> bindingTransformersList, AbstractHostMuleTransformer.HolderSetter holderSetter)
          Constructor for multi-structures transformers.
AbstractHostToXmlMuleTransformer(Map<String,com.legstar.coxb.transform.AbstractXmlTransformers> xmlBindingTransformersMap)
          Constructor for multi-part transformers.
 
Method Summary
 Object createXmlHolder(Map<String,String> transformedParts)
          When multiple part were received from the host, each transformed parts XML is stored in a map.
 QName getHolderQName()
          Generated classes must implement this method for multi part messages.
 Object hostTransform(org.mule.api.MuleMessage esbMessage, String encoding)
          Specialized classes perform the actual transformation.
 void mergeXml(DocumentBuilder docBuilder, String partXml, String partID, Document docResult, Element elHolder)
          Merges an XML fragment as a child of a holder element.
 Object toXml(byte[] hostBytes, String hostCharset)
          Host is sending a byte sequence so when apply either a single transformer or a list of transformers to the entire payload.
 Object toXml(List<com.legstar.coxb.transform.AbstractTransformers> transformers, byte[] hostBytes, String hostCharset)
          Host is sending a single byte sequence but multiple transformers must be applied to decode the complete byte stream.
 Object toXml(Map<String,byte[]> hostParts, String hostCharset)
          When the host is sending an multiple parts part, this code transforms each part.
 
Methods inherited from class org.mule.transport.legstar.transformer.AbstractHostXmlMuleTransformer
getBindingTransformersList, getXmlBindingTransformers, getXmlBindingTransformersMap
 
Methods inherited from class org.mule.transport.legstar.transformer.AbstractHostMuleTransformer
getHostCharset, getHostCharset, getI18NMessages, setHostCharset, transformMessage
 
Methods inherited from class org.mule.transformer.AbstractMessageTransformer
checkReturnClass, doTransform, isSourceDataTypeSupported, transform, transform, transform
 
Methods inherited from class org.mule.transformer.AbstractTransformer
dispose, generateTransformerName, getAnnotation, getAnnotations, getEncoding, getEncoding, getEndpoint, getMimeType, getName, getReturnClass, getReturnDataType, getSourceDataTypes, getSourceTypes, initialise, isAcceptNull, isAllowNullReturn, isConsumed, isIgnoreBadInput, isSourceDataTypeSupported, isSourceTypeSupported, isSourceTypeSupported, process, registerSourceType, registerSourceType, setAllowNullReturn, setAnnotations, setEncoding, setEndpoint, setIgnoreBadInput, setMimeType, setMuleContext, setName, setReturnClass, setReturnDataType, toString, transform, unregisterSourceType, unregisterSourceType
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.mule.api.transformer.Transformer
getEncoding, getEndpoint, getMimeType, getReturnClass, getReturnDataType, getSourceDataTypes, getSourceTypes, isAcceptNull, isIgnoreBadInput, isSourceDataTypeSupported, isSourceTypeSupported, setReturnClass, setReturnDataType, transform
 
Methods inherited from interface org.mule.api.processor.MessageProcessor
process
 
Methods inherited from interface org.mule.api.lifecycle.Initialisable
initialise
 
Methods inherited from interface org.mule.api.lifecycle.Disposable
dispose
 
Methods inherited from interface org.mule.api.NameableObject
setName
 
Methods inherited from interface org.mule.api.NamedObject
getName
 
Methods inherited from interface org.mule.api.context.MuleContextAware
setMuleContext
 
Methods inherited from interface org.mule.endpoint.EndpointAware
setEndpoint
 

Constructor Detail

AbstractHostToXmlMuleTransformer

public AbstractHostToXmlMuleTransformer(com.legstar.coxb.transform.AbstractXmlTransformers xmlBindingTransformers)
Constructor for single part transformers.

Host to XML transformers expect byte array sources corresponding to mainframe raw data. Alternatively, source can be an inputStream in which case, it is assumed to stream a byte array. The returned XML is serialized in a String.

Parameters:
xmlBindingTransformers - a set of transformers for the part type.

AbstractHostToXmlMuleTransformer

public AbstractHostToXmlMuleTransformer(Map<String,com.legstar.coxb.transform.AbstractXmlTransformers> xmlBindingTransformersMap)
Constructor for multi-part transformers.

Host to XML transformers expects a map of byte arrays for multi part payloads. The XML is serialized in a String.

Parameters:
xmlBindingTransformersMap - map of transformer sets, one for each part type.

AbstractHostToXmlMuleTransformer

public AbstractHostToXmlMuleTransformer(List<com.legstar.coxb.transform.AbstractTransformers> bindingTransformersList,
                                        AbstractHostMuleTransformer.HolderSetter holderSetter)
Constructor for multi-structures transformers.

Host to Java transformers expects byte array sources. Inheriting classes will set the return class.

Parameters:
bindingTransformersList - ordered list of transformers to be applied in sequence.
holderSetter - a helper class to set holder objects from inner objects
Method Detail

hostTransform

public Object hostTransform(org.mule.api.MuleMessage esbMessage,
                            String encoding)
                     throws org.mule.api.transformer.TransformerException
Specialized classes perform the actual transformation. Detect if client is using LegStar messaging. If he does, store that information in the ESB message properties so that downstream actions know that the caller is expecting a LegStarMessage reply.

Specified by:
hostTransform in class AbstractHostMuleTransformer
Parameters:
esbMessage - the Mule message
encoding - the payload encoding
Returns:
the transformed payload
Throws:
org.mule.api.transformer.TransformerException - if transform fails

toXml

public Object toXml(byte[] hostBytes,
                    String hostCharset)
             throws com.legstar.coxb.transform.HostTransformException
Host is sending a byte sequence so when apply either a single transformer or a list of transformers to the entire payload.

Parameters:
hostBytes - the byte sequence returned from the host
hostCharset - the host character set
Returns:
an XML representation
Throws:
com.legstar.coxb.transform.HostTransformException - if tranformation failed

toXml

public Object toXml(Map<String,byte[]> hostParts,
                    String hostCharset)
             throws org.mule.api.transformer.TransformerException
When the host is sending an multiple parts part, this code transforms each part. Each part is transformed individually then they are all wrapped in a holder XML which is returned.

Parameters:
hostParts - a map of byte arrays, one for each part
hostCharset - the host character set
Returns:
an XML representation
Throws:
org.mule.api.transformer.TransformerException - if transformation failed

toXml

public Object toXml(List<com.legstar.coxb.transform.AbstractTransformers> transformers,
                    byte[] hostBytes,
                    String hostCharset)
             throws com.legstar.coxb.transform.HostTransformException
Host is sending a single byte sequence but multiple transformers must be applied to decode the complete byte stream.

Parameters:
transformers - ordered list of transformers that need to be applied
hostBytes - the single host bytes sequence
hostCharset - the host character set
Returns:
an XML representation
Throws:
com.legstar.coxb.transform.HostTransformException

createXmlHolder

public Object createXmlHolder(Map<String,String> transformedParts)
                       throws org.mule.api.transformer.TransformerException
When multiple part were received from the host, each transformed parts XML is stored in a map.

Here we merge the XML fragments as children of a holder element.

Parameters:
transformedParts - a map of transformed types
Returns:
a holder XML
Throws:
org.mule.api.transformer.TransformerException - if creating holder fails

mergeXml

public void mergeXml(DocumentBuilder docBuilder,
                     String partXml,
                     String partID,
                     Document docResult,
                     Element elHolder)
              throws org.mule.api.transformer.TransformerException
Merges an XML fragment as a child of a holder element.

Parameters:
docBuilder - the document builder for DOM documents
partXml - the XML representation of the part to merge
partID - a part identifier
docResult - the result DOM document
elHolder - the holder DOM element
Throws:
org.mule.api.transformer.TransformerException - if merge operation fails

getHolderQName

public QName getHolderQName()
                     throws org.mule.api.transformer.TransformerException
Generated classes must implement this method for multi part messages.

Returns:
the qualified XML name of the holder element
Throws:
org.mule.api.transformer.TransformerException - if qualified name cannot be returned


Copyright © 2013 LegSem. All Rights Reserved.