/**
   * Get the addressURl from the Extensibility element
   *
   * @param exElement - {@link ExtensibilityElement}
   * @return {@link String}
   * @throws APIManagementException
   */
  private void setAddressUrl(ExtensibilityElement exElement) throws APIManagementException {

    if (exElement instanceof SOAP12AddressImpl) {
      ((SOAP12AddressImpl) exElement).setLocationURI(APIUtil.getGatewayendpoint());
    } else if (exElement instanceof SOAPAddressImpl) {
      ((SOAPAddressImpl) exElement).setLocationURI(APIUtil.getGatewayendpoint());
    } else if (exElement instanceof HTTPAddressImpl) {
      ((HTTPAddressImpl) exElement).setLocationURI(APIUtil.getGatewayendpoint());
    } else {
      String msg = "Unsupported WSDL errors!";
      log.error(msg);
      throw new APIManagementException(msg);
    }
  }
  private void setServiceDefinitionForWSDL2(org.apache.woden.wsdl20.Description definition, API api)
      throws APIManagementException {
    org.apache.woden.wsdl20.Service[] serviceMap = definition.getServices();
    URL addressURI;
    try {
      for (org.apache.woden.wsdl20.Service svc : serviceMap) {
        Endpoint[] portMap = svc.getEndpoints();
        for (Endpoint endpoint : portMap) {
          EndpointElement element = endpoint.toElement();

          addressURI = endpoint.getAddress().toURL();
          if (addressURI == null) {
            break;
          } else {
            String endpointTransport =
                determineURLTransport(endpoint.getAddress().getScheme(), api.getTransports());
            setAddressUrl(
                element,
                new URI(
                    APIUtil.getGatewayendpoint(endpointTransport)
                        + api.getContext()
                        + "/"
                        + api.getId().getVersion()));
          }
        }
      }

    } catch (Exception e) {
      log.error("Error occured while getting the wsdl address location", e);
      throw new APIManagementException(e);
    }
  }