コード例 #1
0
ファイル: DescriptionImpl.java プロジェクト: vitlav/siu
  public Binding createDefaultSoapBinding(
      String bindingName, Endpoint endpoint, InterfaceType itf) {
    // create binding
    Binding binding = (Binding) ((AbstractInterfaceTypeImpl) itf).getDescription().createBinding();
    binding.setQName(
        new QName(
            ((AbstractInterfaceTypeImpl) itf).getDescription().getTargetNamespace(), bindingName));
    binding.setInterface(itf);
    binding.setTransportProtocol(
        org.ow2.easywsdl.wsdl.impl.wsdl11.Constants.HTTP_SCHEMAS_XMLSOAP_ORG_SOAP_HTTP);

    for (Operation operation : itf.getOperations()) {
      BindingOperation bindingOperation = binding.createBindingOperation();
      bindingOperation.setQName(operation.getQName());

      // We set soapAction attribut as an URI build from the operation
      // qualified name.
      bindingOperation.setSoapAction(
          operation.getQName().getNamespaceURI()
              + (operation.getQName().getNamespaceURI().endsWith("/") ? "" : "/")
              + operation.getQName().getLocalPart());

      // input
      if (operation.getInput() != null) {
        BindingInput binput = bindingOperation.createInput();
        bindingOperation.setInput(binput);
        SOAP11Binding4Wsdl11 soap11binding = binput.createSOAP11Binding4Wsdl11();

        SOAP11Body body = soap11binding.createBody();
        body.setUse(UseConstants.LITERAL);
        try {
          soap11binding.setBody(body);
        } catch (WSDLException e) {
          // do nothing
        }
        binput.setSOAP11Binding4Wsdl11(soap11binding);
      }

      // output
      if (operation.getOutput() != null) {
        BindingOutput boutput = bindingOperation.createOutput();
        bindingOperation.setOutput(boutput);
        SOAP11Binding4Wsdl11 soap11binding = boutput.createSOAP11Binding4Wsdl11();

        SOAP11Body body = soap11binding.createBody();
        body.setUse(UseConstants.LITERAL);
        try {
          soap11binding.setBody(body);
        } catch (WSDLException e) {
          // do nothing
        }
        boutput.setSOAP11Binding4Wsdl11(soap11binding);
      }

      // fault
      if (operation.getFaults() != null) {
        for (Fault faultop : operation.getFaults()) {
          BindingFault bfault = bindingOperation.createFault();
          bfault.setName(faultop.getName());
          bindingOperation.addFault(bfault);
          SOAP11Binding4Wsdl11 soap11binding = bfault.createSOAP11Binding4Wsdl11();

          SOAP11Fault soap11fault = soap11binding.createFault();
          soap11fault.setName(faultop.getName());
          soap11fault.setUse(UseConstants.LITERAL);
          try {
            soap11binding.setFault(soap11fault);
          } catch (WSDLException e) {
            // do nothing
          }
          bfault.setSOAP11Binding4Wsdl11(soap11binding);
        }
      }

      binding.addBindingOperation(bindingOperation);
    }

    // set the binding to endpoint
    endpoint.setBinding(binding);

    return binding;
  }