All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.pentaho.di.trans.steps.webservices.WebServiceMeta Maven / Gradle / Ivy

The newest version!
/*! ******************************************************************************
 *
 * Pentaho Data Integration
 *
 * Copyright (C) 2002-2017 by Hitachi Vantara : http://www.pentaho.com
 *
 *******************************************************************************
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 ******************************************************************************/

package org.pentaho.di.trans.steps.webservices;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.pentaho.di.core.CheckResult;
import org.pentaho.di.core.CheckResultInterface;
import org.pentaho.di.core.Const;
import org.pentaho.di.core.util.Utils;
import org.pentaho.di.core.database.DatabaseMeta;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.exception.KettleStepException;
import org.pentaho.di.core.exception.KettleXMLException;
import org.pentaho.di.core.row.RowMetaInterface;
import org.pentaho.di.core.row.ValueMetaInterface;
import org.pentaho.di.core.row.value.ValueMetaFactory;
import org.pentaho.di.core.variables.VariableSpace;
import org.pentaho.di.core.xml.XMLHandler;
import org.pentaho.di.repository.ObjectId;
import org.pentaho.di.repository.Repository;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
import org.pentaho.di.trans.step.BaseStepMeta;
import org.pentaho.di.trans.step.StepDataInterface;
import org.pentaho.di.trans.step.StepInterface;
import org.pentaho.di.trans.step.StepMeta;
import org.pentaho.di.trans.step.StepMetaInterface;
import org.pentaho.metastore.api.IMetaStore;
import org.w3c.dom.Node;

public class WebServiceMeta extends BaseStepMeta implements StepMetaInterface {
  public static final String XSD_NS_URI = "http://www.w3.org/2001/XMLSchema";

  public static final int DEFAULT_STEP = 1000;

  /** The input web service fields */
  private List fieldsIn;

  /** The output web service fields */
  private List fieldsOut;

  /** Web service URL */
  private String url;

  /** Name of the web service operation to use */
  private String operationName;

  /** Name of the operation request name: optional, can be different from the operation name */
  private String operationRequestName;

  /** The name-space of the operation */
  private String operationNamespace;

  /** The name of the object that encapsulates the input fields in case we're dealing with a table */
  private String inFieldContainerName;

  /** Name of the input object */
  private String inFieldArgumentName;

  /** Name of the object that encapsulates the output fields in case we're dealing with a table */
  private String outFieldContainerName;

  /** Name of the output object */
  private String outFieldArgumentName;

  private String proxyHost;

  private String proxyPort;

  private String httpLogin;

  private String httpPassword;

  /** Flag to allow input data to pass to the output */
  private boolean passingInputData;

  /** The number of rows to send with each call */
  private int callStep = DEFAULT_STEP;

  /** Use the 2.5/3.0 parsing logic (available for compatibility reasons) */
  private boolean compatible;

  /** The name of the repeating element name. Empty = a single row return */
  private String repeatingElementName;

  /** Is this step giving back the complete reply from the service as an XML string? */
  private boolean returningReplyAsString;

  public WebServiceMeta() {
    super();
    fieldsIn = new ArrayList();
    fieldsOut = new ArrayList();
  }

  public WebServiceMeta( Node stepnode, List databases, IMetaStore metaStore ) throws KettleXMLException {
    this();
    loadXML( stepnode, databases, metaStore );
  }

  public WebServiceMeta( Repository rep, IMetaStore metaStore, ObjectId id_step, List databases ) throws KettleException {
    this();
    readRep( rep, metaStore, id_step, databases );
  }

  @Override
  public void getFields( RowMetaInterface r, String name, RowMetaInterface[] info, StepMeta nextStep,
    VariableSpace space, Repository repository, IMetaStore metaStore ) throws KettleStepException {
    // Input rows and output rows are different in the webservice step
    //
    if ( !isPassingInputData() ) {
      r.clear();
    }

    // Add the output fields...
    //
    for ( WebServiceField field : getFieldsOut() ) {
      int valueType = field.getType();

      // If the type is unrecognized we give back the XML as a String...
      //
      if ( field.getType() == ValueMetaInterface.TYPE_NONE ) {
        valueType = ValueMetaInterface.TYPE_STRING;
      }

      try {
        ValueMetaInterface vValue = ValueMetaFactory.createValueMeta( field.getName(), valueType );
        vValue.setOrigin( name );
        r.addValueMeta( vValue );
      } catch ( Exception e ) {
        throw new KettleStepException( e );
      }
    }
  }

  public WebServiceMeta clone() {
    WebServiceMeta retval = (WebServiceMeta) super.clone();
    retval.fieldsIn = new ArrayList();
    for ( WebServiceField field : fieldsIn ) {
      retval.fieldsIn.add( field.clone() );
    }
    retval.fieldsOut = new ArrayList();
    for ( WebServiceField field : fieldsOut ) {
      retval.fieldsOut.add( field.clone() );
    }
    return retval;
  }

  public void setDefault() {
    passingInputData = true; // Pass input data by default.
  }

  public void check( List remarks, TransMeta transMeta, StepMeta stepMeta,
    RowMetaInterface prev, String[] input, String[] output, RowMetaInterface info, VariableSpace space,
    Repository repository, IMetaStore metaStore ) {
    CheckResult cr;
    if ( prev == null || prev.size() == 0 ) {
      cr =
        new CheckResult(
          CheckResult.TYPE_RESULT_WARNING, "Not receiving any fields from previous steps!", stepMeta );
      remarks.add( cr );
    } else {
      cr =
        new CheckResult( CheckResult.TYPE_RESULT_OK, "Step is connected to previous one, receiving "
          + prev.size() + " fields", stepMeta );
      remarks.add( cr );
    }

    // See if we have input streams leading to this step!
    if ( input.length > 0 ) {
      cr = new CheckResult( CheckResult.TYPE_RESULT_OK, "Step is receiving info from other steps.", stepMeta );
      remarks.add( cr );
    } else if ( getInFieldArgumentName() != null || getInFieldContainerName() != null ) {
      cr = new CheckResult( CheckResult.TYPE_RESULT_ERROR, "No input received from other steps!", stepMeta );
      remarks.add( cr );
    }
  }

  public String getXML() {
    StringBuilder retval = new StringBuilder();

    // Store the WebService URL
    //
    retval.append( "    " + XMLHandler.addTagValue( "wsURL", getUrl() ) );

    // Store the operation
    //
    retval.append( "    " + XMLHandler.addTagValue( "wsOperation", getOperationName() ) );
    retval.append( "    " + XMLHandler.addTagValue( "wsOperationRequest", getOperationRequestName() ) );
    retval.append( "    " + XMLHandler.addTagValue( "wsOperationNamespace", getOperationNamespace() ) );
    retval.append( "    " + XMLHandler.addTagValue( "wsInFieldContainer", getInFieldContainerName() ) );
    retval.append( "    " + XMLHandler.addTagValue( "wsInFieldArgument", getInFieldArgumentName() ) );
    retval.append( "    " + XMLHandler.addTagValue( "wsOutFieldContainer", getOutFieldContainerName() ) );
    retval.append( "    " + XMLHandler.addTagValue( "wsOutFieldArgument", getOutFieldArgumentName() ) );
    retval.append( "    " + XMLHandler.addTagValue( "proxyHost", getProxyHost() ) );
    retval.append( "    " + XMLHandler.addTagValue( "proxyPort", getProxyPort() ) );
    retval.append( "    " + XMLHandler.addTagValue( "httpLogin", getHttpLogin() ) );
    retval.append( "    " + XMLHandler.addTagValue( "httpPassword", getHttpPassword() ) );
    retval.append( "    " + XMLHandler.addTagValue( "callStep", getCallStep() ) );
    retval.append( "    " + XMLHandler.addTagValue( "passingInputData", isPassingInputData() ) );
    retval.append( "    " + XMLHandler.addTagValue( "compatible", isCompatible() ) );
    retval.append( "    " + XMLHandler.addTagValue( "repeating_element", getRepeatingElementName() ) );
    retval.append( "    " + XMLHandler.addTagValue( "reply_as_string", isReturningReplyAsString() ) );

    // Store the field parameters
    //

    // Store the link between the input fields and the WebService input
    //
    retval.append( "    " + Const.CR );
    for ( int i = 0; i < getFieldsIn().size(); i++ ) {
      WebServiceField vField = getFieldsIn().get( i );
      retval.append( "    " + Const.CR );
      retval.append( "        " + XMLHandler.addTagValue( "name", vField.getName() ) );
      retval.append( "        " + XMLHandler.addTagValue( "wsName", vField.getWsName() ) );
      retval.append( "        " + XMLHandler.addTagValue( "xsdType", vField.getXsdType() ) );
      retval.append( "    " + Const.CR );
    }
    retval.append( "      " + Const.CR );

    // Store the link between the input fields and the WebService output
    //
    retval.append( "    " + Const.CR );
    for ( int i = 0; i < getFieldsOut().size(); i++ ) {
      WebServiceField vField = getFieldsOut().get( i );
      retval.append( "    " + Const.CR );
      retval.append( "        " + XMLHandler.addTagValue( "name", vField.getName() ) );
      retval.append( "        " + XMLHandler.addTagValue( "wsName", vField.getWsName() ) );
      retval.append( "        " + XMLHandler.addTagValue( "xsdType", vField.getXsdType() ) );
      retval.append( "    " + Const.CR );
    }
    retval.append( "      " + Const.CR );

    return retval.toString();
  }

  public void loadXML( Node stepnode, List databases, IMetaStore metaStore ) throws KettleXMLException {
    // Load the URL
    //
    setUrl( XMLHandler.getTagValue( stepnode, "wsURL" ) );

    // Load the operation
    //
    setOperationName( XMLHandler.getTagValue( stepnode, "wsOperation" ) );
    setOperationRequestName( XMLHandler.getTagValue( stepnode, "wsOperationRequest" ) );
    setOperationNamespace( XMLHandler.getTagValue( stepnode, "wsOperationNamespace" ) );
    setInFieldContainerName( XMLHandler.getTagValue( stepnode, "wsInFieldContainer" ) );
    setInFieldArgumentName( XMLHandler.getTagValue( stepnode, "wsInFieldArgument" ) );
    setOutFieldContainerName( XMLHandler.getTagValue( stepnode, "wsOutFieldContainer" ) );
    setOutFieldArgumentName( XMLHandler.getTagValue( stepnode, "wsOutFieldArgument" ) );
    setProxyHost( XMLHandler.getTagValue( stepnode, "proxyHost" ) );
    setProxyPort( XMLHandler.getTagValue( stepnode, "proxyPort" ) );
    setHttpLogin( XMLHandler.getTagValue( stepnode, "httpLogin" ) );
    setHttpPassword( XMLHandler.getTagValue( stepnode, "httpPassword" ) );
    setCallStep( Const.toInt( XMLHandler.getTagValue( stepnode, "callStep" ), DEFAULT_STEP ) );
    setPassingInputData( "Y".equalsIgnoreCase( XMLHandler.getTagValue( stepnode, "passingInputData" ) ) );
    String compat = XMLHandler.getTagValue( stepnode, "compatible" );
    setCompatible( Utils.isEmpty( compat ) || "Y".equalsIgnoreCase( compat ) );
    setRepeatingElementName( XMLHandler.getTagValue( stepnode, "repeating_element" ) );
    setReturningReplyAsString( "Y".equalsIgnoreCase( XMLHandler.getTagValue( stepnode, "reply_as_string" ) ) );

    // Load the input fields mapping
    //
    getFieldsIn().clear();
    Node fields = XMLHandler.getSubNode( stepnode, "fieldsIn" );
    int nrfields = XMLHandler.countNodes( fields, "field" );

    for ( int i = 0; i < nrfields; ++i ) {
      Node fnode = XMLHandler.getSubNodeByNr( fields, "field", i );

      WebServiceField field = new WebServiceField();
      field.setName( XMLHandler.getTagValue( fnode, "name" ) );
      field.setWsName( XMLHandler.getTagValue( fnode, "wsName" ) );
      field.setXsdType( XMLHandler.getTagValue( fnode, "xsdType" ) );
      getFieldsIn().add( field );

    }

    // Load the output fields mapping
    //
    getFieldsOut().clear();

    fields = XMLHandler.getSubNode( stepnode, "fieldsOut" );
    nrfields = XMLHandler.countNodes( fields, "field" );

    for ( int i = 0; i < nrfields; ++i ) {
      Node fnode = XMLHandler.getSubNodeByNr( fields, "field", i );

      WebServiceField field = new WebServiceField();
      field.setName( XMLHandler.getTagValue( fnode, "name" ) );
      field.setWsName( XMLHandler.getTagValue( fnode, "wsName" ) );
      field.setXsdType( XMLHandler.getTagValue( fnode, "xsdType" ) );
      getFieldsOut().add( field );
    }
  }

  public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, List databases ) throws KettleException {
    // Load the URL
    //
    setUrl( rep.getStepAttributeString( id_step, "wsUrl" ) );

    // Load the operation
    //
    setOperationName( rep.getStepAttributeString( id_step, "wsOperation" ) );
    setOperationRequestName( rep.getStepAttributeString( id_step, "wsOperationRequest" ) );
    setOperationNamespace( rep.getStepAttributeString( id_step, "wsOperationNamespace" ) );
    setInFieldContainerName( rep.getStepAttributeString( id_step, "wsInFieldContainer" ) );
    setInFieldArgumentName( rep.getStepAttributeString( id_step, "wsInFieldArgument" ) );
    setOutFieldContainerName( rep.getStepAttributeString( id_step, "wsOutFieldContainer" ) );
    setOutFieldArgumentName( rep.getStepAttributeString( id_step, "wsOutFieldArgument" ) );
    setProxyHost( rep.getStepAttributeString( id_step, "proxyHost" ) );
    setProxyPort( rep.getStepAttributeString( id_step, "proxyPort" ) );
    setHttpLogin( rep.getStepAttributeString( id_step, "httpLogin" ) );
    setHttpPassword( rep.getStepAttributeString( id_step, "httpPassword" ) );
    setCallStep( (int) rep.getStepAttributeInteger( id_step, "callStep" ) );
    setPassingInputData( rep.getStepAttributeBoolean( id_step, "passingInputData" ) );
    setCompatible( rep.getStepAttributeBoolean( id_step, 0, "compatible", true ) ); // Default to true for backward
                                                                                    // compatibility
    setRepeatingElementName( rep.getStepAttributeString( id_step, "repeating_element" ) );
    setReturningReplyAsString( rep.getStepAttributeBoolean( id_step, 0, "reply_as_string" ) );

    // Load the input fields mapping
    //
    int nb = rep.countNrStepAttributes( id_step, "fieldIn_ws_name" );
    getFieldsIn().clear();
    for ( int i = 0; i < nb; ++i ) {
      WebServiceField field = new WebServiceField();
      field.setName( rep.getStepAttributeString( id_step, i, "fieldIn_name" ) );
      field.setWsName( rep.getStepAttributeString( id_step, i, "fieldIn_ws_name" ) );
      field.setXsdType( rep.getStepAttributeString( id_step, i, "fieldIn_xsd_type" ) );
      getFieldsIn().add( field );
    }

    // Load the output fields mapping
    //
    nb = rep.countNrStepAttributes( id_step, "fieldOut_ws_name" );
    getFieldsOut().clear();
    for ( int i = 0; i < nb; ++i ) {
      WebServiceField field = new WebServiceField();
      field.setName( rep.getStepAttributeString( id_step, i, "fieldOut_name" ) );
      field.setWsName( rep.getStepAttributeString( id_step, i, "fieldOut_ws_name" ) );
      field.setXsdType( rep.getStepAttributeString( id_step, i, "fieldOut_xsd_type" ) );
      getFieldsOut().add( field );
    }

  }

  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
    // Store the URL
    //
    rep.saveStepAttribute( id_transformation, id_step, "wsUrl", getUrl() );

    // Store the WS Operation
    //
    rep.saveStepAttribute( id_transformation, id_step, "wsOperation", getOperationName() );
    rep.saveStepAttribute( id_transformation, id_step, "wsOperationRequest", getOperationRequestName() );
    rep.saveStepAttribute( id_transformation, id_step, "wsOperationNamespace", getOperationNamespace() );
    rep.saveStepAttribute( id_transformation, id_step, "wsInFieldContainer", getInFieldContainerName() );
    rep.saveStepAttribute( id_transformation, id_step, "wsInFieldArgument", getInFieldArgumentName() );
    rep.saveStepAttribute( id_transformation, id_step, "wsOutFieldContainer", getOutFieldContainerName() );
    rep.saveStepAttribute( id_transformation, id_step, "wsOutFieldArgument", getOutFieldArgumentName() );
    rep.saveStepAttribute( id_transformation, id_step, "proxyHost", getProxyHost() );
    rep.saveStepAttribute( id_transformation, id_step, "proxyPort", getProxyPort() );
    rep.saveStepAttribute( id_transformation, id_step, "httpLogin", getHttpLogin() );
    rep.saveStepAttribute( id_transformation, id_step, "httpPassword", getHttpPassword() );
    rep.saveStepAttribute( id_transformation, id_step, "callStep", getCallStep() );
    rep.saveStepAttribute( id_transformation, id_step, "passingInputData", isPassingInputData() );
    rep.saveStepAttribute( id_transformation, id_step, "compatible", isCompatible() );
    rep.saveStepAttribute( id_transformation, id_step, "repeating_element", getRepeatingElementName() );
    rep.saveStepAttribute( id_transformation, id_step, "reply_as_string", isReturningReplyAsString() );

    // Load the input fields mapping
    //
    for ( int i = 0; i < getFieldsIn().size(); ++i ) {
      WebServiceField vField = getFieldsIn().get( i );
      rep.saveStepAttribute( id_transformation, id_step, i, "fieldIn_name", vField.getName() );
      rep.saveStepAttribute( id_transformation, id_step, i, "fieldIn_ws_name", vField.getWsName() );
      rep.saveStepAttribute( id_transformation, id_step, i, "fieldIn_xsd_type", vField.getXsdType() );
    }

    // Load the output fields mapping
    //
    for ( int i = 0; i < getFieldsOut().size(); ++i ) {
      WebServiceField vField = getFieldsOut().get( i );
      rep.saveStepAttribute( id_transformation, id_step, i, "fieldOut_name", vField.getName() );
      rep.saveStepAttribute( id_transformation, id_step, i, "fieldOut_ws_name", vField.getWsName() );
      rep.saveStepAttribute( id_transformation, id_step, i, "fieldOut_xsd_type", vField.getXsdType() );
    }
  }

  public String getOperationName() {
    return operationName;
  }

  public void setOperationName( String operationName ) {
    this.operationName = operationName;
  }

  public StepInterface getStep( StepMeta stepMeta, StepDataInterface stepDataInterface, int cnr,
    TransMeta transMeta, Trans disp ) {
    return new WebService( stepMeta, stepDataInterface, cnr, transMeta, disp );
  }

  public StepDataInterface getStepData() {
    return new WebServiceData();
  }

  public WebServiceField getFieldInFromName( String name ) {
    WebServiceField param = null;
    for ( Iterator iter = getFieldsIn().iterator(); iter.hasNext(); ) {
      WebServiceField paramCour = iter.next();
      if ( name.equals( paramCour.getName() ) ) {
        param = paramCour;
        break;
      }
    }
    return param;
  }

  /**
   * Returns the WebServicesField for the given wsName.
   *
   * @param wsName
   *          The name of the WebServiceField to return
   * @param ignoreWsNsPrefix
   *          If true the lookup of the cache of WebServiceFields will not include the target namespace prefix.
   * @return
   */
  public WebServiceField getFieldOutFromWsName( String wsName, boolean ignoreWsNsPrefix ) {
    WebServiceField param = null;

    if ( Utils.isEmpty( wsName ) ) {
      return param;
    }

    // if we are ignoring the name space prefix
    if ( ignoreWsNsPrefix ) {

      // we split the wsName and set it to the last element of what was parsed
      String[] wsNameParsed = wsName.split( ":" );
      wsName = wsNameParsed[wsNameParsed.length - 1];
    }

    // we now look for the wsname
    for ( Iterator iter = getFieldsOut().iterator(); iter.hasNext(); ) {
      WebServiceField paramCour = iter.next();
      if ( paramCour.getWsName().equals( wsName ) ) {
        param = paramCour;
        break;
      }
    }
    return param;
  }

  public List getFieldsIn() {
    return fieldsIn;
  }

  public void setFieldsIn( List fieldsIn ) {
    this.fieldsIn = fieldsIn;
  }

  public boolean hasFieldsIn() {
    return fieldsIn != null && !fieldsIn.isEmpty();
  }

  public void addFieldIn( WebServiceField field ) {
    fieldsIn.add( field );
  }

  public List getFieldsOut() {
    return fieldsOut;
  }

  public void setFieldsOut( List fieldsOut ) {
    this.fieldsOut = fieldsOut;
  }

  public void addFieldOut( WebServiceField field ) {
    fieldsOut.add( field );
  }

  public String getInFieldArgumentName() {
    return inFieldArgumentName;
  }

  public void setInFieldArgumentName( String inFieldArgumentName ) {
    this.inFieldArgumentName = inFieldArgumentName;
  }

  public String getOutFieldArgumentName() {
    return outFieldArgumentName;
  }

  public void setOutFieldArgumentName( String outFieldArgumentName ) {
    this.outFieldArgumentName = outFieldArgumentName;
  }

  public String getUrl() {
    return url;
  }

  public void setUrl( String url ) {
    this.url = url;
  }

  public int getCallStep() {
    return callStep;
  }

  public void setCallStep( int callStep ) {
    this.callStep = callStep;
  }

  public String getOperationNamespace() {
    return operationNamespace;
  }

  public void setOperationNamespace( String operationNamespace ) {
    this.operationNamespace = operationNamespace;
  }

  public String getHttpLogin() {
    return httpLogin;
  }

  public void setHttpLogin( String httpLogin ) {
    this.httpLogin = httpLogin;
  }

  public String getHttpPassword() {
    return httpPassword;
  }

  public void setHttpPassword( String httpPassword ) {
    this.httpPassword = httpPassword;
  }

  public String getProxyHost() {
    return proxyHost;
  }

  public void setProxyHost( String proxyHost ) {
    this.proxyHost = proxyHost;
  }

  public String getProxyPort() {
    return proxyPort;
  }

  public void setProxyPort( String proxyPort ) {
    this.proxyPort = proxyPort;
  }

  public String getInFieldContainerName() {
    return inFieldContainerName;
  }

  public void setInFieldContainerName( String inFieldContainerName ) {
    this.inFieldContainerName = inFieldContainerName;
  }

  public String getOutFieldContainerName() {
    return outFieldContainerName;
  }

  public void setOutFieldContainerName( String outFieldContainerName ) {
    this.outFieldContainerName = outFieldContainerName;
  }

  /**
   * @return the passingInputData
   */
  public boolean isPassingInputData() {
    return passingInputData;
  }

  /**
   * @param passingInputData
   *          the passingInputData to set
   */
  public void setPassingInputData( boolean passingInputData ) {
    this.passingInputData = passingInputData;
  }

  /**
   * @return the compatible
   */
  public boolean isCompatible() {
    return compatible;
  }

  /**
   * @param compatible
   *          the compatible to set
   */
  public void setCompatible( boolean compatible ) {
    this.compatible = compatible;
  }

  /**
   * @return the repeatingElementName
   */
  public String getRepeatingElementName() {
    return repeatingElementName;
  }

  /**
   * @param repeatingElementName
   *          the repeatingElementName to set
   */
  public void setRepeatingElementName( String repeatingElementName ) {
    this.repeatingElementName = repeatingElementName;
  }

  /**
   * @return true if the reply from the service is simply passed on as a String, mostly in XML
   */
  public boolean isReturningReplyAsString() {
    return returningReplyAsString;
  }

  /**
   * @param returningReplyAsString
   *          true if the reply from the service is simply passed on as a String, mostly in XML
   */
  public void setReturningReplyAsString( boolean returningReplyAsString ) {
    this.returningReplyAsString = returningReplyAsString;
  }

  /**
   * @return the operationRequestName
   */
  public String getOperationRequestName() {
    return operationRequestName;
  }

  /**
   * @param operationRequestName
   *          the operationRequestName to set
   */
  public void setOperationRequestName( String operationRequestName ) {
    this.operationRequestName = operationRequestName;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy