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

org.mule.runtime.soap.api.client.SoapClientConfigurationBuilder Maven / Gradle / Ivy

There is a newer version: 4.1.1
Show newest version
/*
 * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
 * The software in this package is published under the terms of the CPAL v1.0
 * license, a copy of which has been included with this distribution in the
 * LICENSE.txt file.
 */
package org.mule.runtime.soap.api.client;

import static org.mule.runtime.api.util.Preconditions.checkNotNull;
import static org.mule.runtime.soap.api.SoapVersion.SOAP11;

import org.mule.runtime.extension.api.soap.message.MessageDispatcher;
import org.mule.runtime.extension.api.soap.security.DecryptSecurityStrategy;
import org.mule.runtime.extension.api.soap.security.EncryptSecurityStrategy;
import org.mule.runtime.extension.api.soap.security.SecurityStrategy;
import org.mule.runtime.extension.api.soap.security.SignSecurityStrategy;
import org.mule.runtime.extension.api.soap.security.TimestampSecurityStrategy;
import org.mule.runtime.extension.api.soap.security.UsernameTokenSecurityStrategy;
import org.mule.runtime.extension.api.soap.security.VerifySignatureSecurityStrategy;
import org.mule.runtime.soap.api.SoapVersion;
import org.mule.runtime.soap.api.message.SoapMessage;
import org.mule.runtime.soap.api.transport.NullTransportResourceLocator;
import org.mule.runtime.soap.api.transport.TransportResourceLocator;

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

/**
 * Builder pattern implementation that creates {@link SoapClientConfiguration} instances.
 *
 * @since 4.0
 */
public class SoapClientConfigurationBuilder {

  private String wsdlLocation;
  private String address;
  private String service;
  private String port;
  private SoapVersion version = SOAP11;
  private boolean mtomEnabled;
  private List securities = new ArrayList<>();
  private MessageDispatcher dispatcher;
  private String encoding;
  private TransportResourceLocator locator = new NullTransportResourceLocator();

  SoapClientConfigurationBuilder() {}

  /**
   * Sets the location of the WSDL that describes the SOAP web service. This can be an URL to an
   * external resource (e.g http://somewsdl.com/hit?wsdl), just a reference to a local file or an application resource name.
   *
   * @return this builder.
   */
  public SoapClientConfigurationBuilder withWsdlLocation(String wsdlLocation) {
    this.wsdlLocation = wsdlLocation;
    return this;
  }

  /**
   * Sets the address of the Web Service, if none specified it will be fetched from the wsdl file, if possible.
   *
   * @return this builder.
   */
  public SoapClientConfigurationBuilder withAddress(String address) {
    this.address = address;
    return this;
  }

  /**
   * Sets the service of the WSDL we want to perform operations from.
   *
   * @return this builder.
   */
  public SoapClientConfigurationBuilder withService(String service) {
    this.service = service;
    return this;
  }

  /**
   * Sets the port of the service that describes the set of operations that can be performed.
   *
   * @return this builder.
   */
  public SoapClientConfigurationBuilder withPort(String port) {
    this.port = port;
    return this;
  }

  /**
   * Sets the encoding of the messages send and retrieved by the .
   *
   * @return this builder.
   */
  public SoapClientConfigurationBuilder withEncoding(String encoding) {
    this.encoding = encoding;
    return this;
  }

  /**
   * Sets the {@link SoapVersion} of the Web Service. defaults to SOAP 1.1
   *
   * @return this builder.
   */
  public SoapClientConfigurationBuilder withVersion(SoapVersion version) {
    this.version = version;
    return this;
  }

  /**
   * Specifies that the Web Service is MTOM enabled.
   *
   * @return this builder.
   */
  public SoapClientConfigurationBuilder enableMtom(boolean mtomEnabled) {
    this.mtomEnabled = mtomEnabled;
    return this;
  }

  /**
   * Sets a new {@link SecurityStrategy} to connect with a Secured Soap Web Service.
   * 

* One of: {@link DecryptSecurityStrategy}, {@link EncryptSecurityStrategy}, {@link SignSecurityStrategy}, * {@link TimestampSecurityStrategy}, {@link UsernameTokenSecurityStrategy} or {@link VerifySignatureSecurityStrategy}. *

* Multiple {@link SecurityStrategy Security Strategies} can be configured. * * @return this builder. */ public SoapClientConfigurationBuilder withSecurity(SecurityStrategy security) { this.securities.add(security); return this; } /** * Sets a list of {@link SecurityStrategy SecurityStrategies} to connect with a Secured Soap Web Service. * * @return this builder. */ public SoapClientConfigurationBuilder withSecurities(List security) { this.securities.addAll(security); return this; } /** * Sets a custom {@link MessageDispatcher} that enables the send and retrieve of {@link SoapMessage}s using a custom underlying * transport. * * @return this builder */ public SoapClientConfigurationBuilder withDispatcher(MessageDispatcher dispatcher) { this.dispatcher = dispatcher; return this; } /** * Sets a {@link TransportResourceLocator} instance to fetch the wsdl resources. * * @return this builder */ public SoapClientConfigurationBuilder withResourceLocator(TransportResourceLocator locator) { this.locator = locator; return this; } /** * @return a new {@link SoapClientConfiguration} instance with the attributes specified. */ public SoapClientConfiguration build() { checkNotNull(wsdlLocation, "WSDL location cannot be null"); checkNotNull(service, "Service cannot be null"); checkNotNull(port, "Port cannot be null"); checkNotNull(dispatcher, "Message Dispatcher cannot be null"); return new SoapClientConfiguration(wsdlLocation, address, service, port, version, mtomEnabled, securities, dispatcher, locator, encoding); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy