Skip navigation links
SAP NetWeaver 7.50 SP 13 Process Integration

Package com.sap.aii.mapping.api

API for Java mapping programs.

See: Description

Package com.sap.aii.mapping.api Description

API for Java mapping programs. The API works with an InputStream that is mapped to an OutputStream. Depending on the use case, application developers can choose additional APIs to do the actual mapping (for example SAXParser or DocumentBuilder to parse the InputStream). Additionally the mapping API provides classes to map a special header of the XI message that allows adapters to transport adapter specific information (classes DynamicConfiguration and DynamicConfigurationKey).

Although following example just copies the input payload to the output payload, it essentially shows how to use the mapping API. For more information see the details in the corresponding interfaces and classes.

Example:

package exampleMapping;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.xml.sax.SAXException;

import com.sap.aii.mapping.api.MappingTrace;
import com.sap.aii.mapping.api.StreamTransformation;
import com.sap.aii.mapping.api.StreamTransformationConstants;
import com.sap.aii.mapping.api.StreamTransformationException;

/**
 * Copy XML with a DOM.
 */
public class DomCopy implements StreamTransformation {

  private MappingTrace trace;

  /**
   * Constructor for DomCopy.
   */
  public DomCopy() {
    super();
  }

  /**
   * @see com.sap.aii.mapping.api.StreamTransformation#setParameter(Map)
   */
  public void setParameter(Map param) {
    trace = (MappingTrace) param.get(StreamTransformationConstants.MAPPING_TRACE);
  }

  /**
   * @see com.sap.aii.mapping.api.StreamTransformation#execute(InputStream,
   *      OutputStream)
   */
  public void execute(InputStream in, OutputStream out) throws StreamTransformationException {
    try {
      // read XML
      DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
      DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
      Document xml = documentBuilder.parse(in);
            
      // write XML
      TransformerFactory transformerFactory = TransformerFactory.newInstance();
      Transformer transformer = transformerFactory.newTransformer();
      Result result = new StreamResult(out);
      Source domSource = new DOMSource(xml);
      transformer.transform(domSource, result);
    } catch (ParserConfigurationException e) {
      trace.addWarning(e.getMessage());
      throw new StreamTransformationException("Can not create DocumentBuilder.", e);
    } catch (SAXException e) {
      trace.addWarning(e.getMessage());
      throw new StreamTransformationException("Can not read XML.", e);
    } catch (IOException e) {
      trace.addWarning(e.getMessage());
      throw new StreamTransformationException("Can not read XML.", e);
    } catch (TransformerConfigurationException e) {
      trace.addWarning(e.getMessage());
      throw new StreamTransformationException("Can not create Transformer.", e);
    } catch (TransformerException e) {
      trace.addWarning(e.getMessage());
      throw new StreamTransformationException("Can not write XML.", e);
    }
  }
}
Skip navigation links
SAP NetWeaver 7.50 SP 13 Process Integration

Copyright 2018 SAP AG Complete Copyright Notice