Class WSDLHelper


  • public class WSDLHelper
    extends Object
    For now I use DOM for WSDLHelper, but it would be more efficient to use JAXB to generate an object model for WSDL and use it to perform serialization and deserialization. It also makes it easier to traverse the WSDL to get necessary information.

    Created on: Jun 3, 2003

    • Method Detail

      • getURL

        public URL getURL()
        Returns the URL
        Returns:
        the URL
      • getProtocol

        public String getProtocol()
        Return the protocol from the URL. this is needed, so that HTTPS works as expected.
        Returns:
        protocol extracted from url
      • getBindingHost

        public String getBindingHost()
        Return the host in the WSDL binding address
        Returns:
        host extracted from url
      • getBindingPath

        public String getBindingPath()
        Return the path in the WSDL for the binding address
        Returns:
        path extracted from url
      • getBindingPort

        public int getBindingPort()
        Return the port for the binding address
        Returns:
        port extracted from url
      • getBinding

        public String getBinding()
        Returns the binding point for the webservice. Right now it naively assumes there's only one binding point with numerous soap operations.
        Returns:
        String
      • connect

        protected void connect()
                        throws IOException
        Method is used internally to connect to the URL. It's protected; therefore external classes should use parse to get the resource at the given location.
        Throws:
        IOException - when I/O error occurs
      • close

        protected void close()
        We try to close the connection to make sure it doesn't hang around.
      • parse

        public void parse()
                   throws WSDLException
        Call this method to retrieve the WSDL. This method must be called, otherwise a connection to the URL won't be made and the stream won't be parsed.
        Throws:
        WSDLException - when parsing fails
      • getWebMethods

        public String[] getWebMethods()
        Get a list of the web methods as a string array.
        Returns:
        list of web methods
      • getSoapAction

        public String getSoapAction​(String key)
        Return the soap action matching the operation name.
        Parameters:
        key - name of the operation
        Returns:
        associated action
      • getWSDLDocument

        public Document getWSDLDocument()
        Get the wsdl document.
        Returns:
        wsdl document
      • getSOAPBindings

        public Object[] getSOAPBindings()
        Method will look at the binding nodes and see if the first child is a soap:binding. If it is, it adds it to an array.
        Returns:
        Node[]
      • getOperations

        public Object[] getOperations()
        Look at the bindings with soap operations and get the soap operations. Since WSDL may describe multiple bindings and each binding may have multiple soap operations, we iterate through the binding nodes with a first child that is a soap binding. If a WSDL doesn't use the same formatting convention, it is possible we may not get a list of all the soap operations. If that is the case, getSOAPBindings() will need to be changed. I should double check the WSDL spec to see what the official requirement is. Another option is to get all operation nodes and check to see if the first child is a soap:operation. The benefit of not getting all operation nodes is WSDL could contain duplicate operations that are not SOAP methods. If there are a large number of methods and half of them are HTTP operations, getting all operations could slow things down.
        Returns:
        Node[]
      • getSoapActionName

        public String getSoapActionName​(String soapAction)
        return the "wsdl method name" from a soap action
        Parameters:
        soapAction - the soap action
        Returns:
        the associated "wsdl method name" or null if not found
      • main

        public static void main​(String[] args)
        Simple test for the class uses bidbuy.wsdl from Apache's soap driver examples.
        Parameters:
        args - standard arguments for a main class (not used here)