class WebServiceMeta extends BaseTransformMeta implements ITransformMeta<WebService, WebServiceData> {

  public void loadXml( Node transformNode, IHopMetadataProvider metadataProvider ) throws HopXmlException {
    // Load the URL
    //
    setUrl( XmlHandler.getTagValue( transformNode, "wsURL" ) );

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

    // Load the input fields mapping
    //
    getFieldsIn().clear();
    Node fields = XmlHandler.getSubNode( transformNode, "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( transformNode, "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  WebServiceMeta();
  public  WebServiceMeta( Node transformNode, IHopMetadataProvider metadataProvider );

}