HTTPClientPolicy.java

//
// This file was generated by the Eclipse Implementation of JAXB, v4.0.5 
// See https://eclipse-ee4j.github.io/jaxb-ri 
// Any modifications to this file will be lost upon recompilation of the source schema. 
//


package org.apache.cxf.transports.http.configuration;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.util.HashMap;
import java.util.Map;
import javax.xml.namespace.QName;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAnyAttribute;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlTransient;
import jakarta.xml.bind.annotation.XmlType;


/**
 * Properties used to configure a client-side HTTP port
 * 
 * <p>Java class for HTTPClientPolicy complex type</p>.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.</p>
 * 
 * <pre>{@code
 * <complexType name="HTTPClientPolicy">
 *   <complexContent>
 *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       <sequence>
 *       </sequence>
 *       <attribute name="ConnectionTimeout" type="{http://cxf.apache.org/configuration/parameterized-types}ParameterizedUInt" default="30000" />
 *       <attribute name="ReceiveTimeout" type="{http://cxf.apache.org/configuration/parameterized-types}ParameterizedUInt" default="60000" />
 *       <attribute name="ConnectionRequestTimeout" type="{http://cxf.apache.org/configuration/parameterized-types}ParameterizedUInt" default="60000" />
 *       <attribute name="AsyncExecuteTimeout" type="{http://cxf.apache.org/configuration/parameterized-types}ParameterizedUInt" default="5000" />
 *       <attribute name="AsyncExecuteTimeoutRejection" type="{http://cxf.apache.org/configuration/parameterized-types}ParameterizedBoolean" default="false" />
 *       <attribute name="AutoRedirect" type="{http://cxf.apache.org/configuration/parameterized-types}ParameterizedBoolean" default="false" />
 *       <attribute name="MaxRetransmits" type="{http://cxf.apache.org/configuration/parameterized-types}ParameterizedInt" default="-1" />
 *       <attribute name="AllowChunking" type="{http://cxf.apache.org/configuration/parameterized-types}ParameterizedBoolean" default="true" />
 *       <attribute name="ChunkingThreshold" type="{http://cxf.apache.org/configuration/parameterized-types}ParameterizedInt" default="4096" />
 *       <attribute name="ChunkLength" type="{http://cxf.apache.org/configuration/parameterized-types}ParameterizedInt" default="-1" />
 *       <attribute name="Accept" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       <attribute name="AcceptLanguage" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       <attribute name="AcceptEncoding" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       <attribute name="ContentType" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       <attribute name="Host" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       <attribute name="Connection" type="{http://cxf.apache.org/transports/http/configuration}connectionType" default="Keep-Alive" />
 *       <attribute name="CacheControl" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       <attribute name="Version" type="{http://www.w3.org/2001/XMLSchema}string" default="auto" />
 *       <attribute name="Cookie" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       <attribute name="BrowserType" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       <attribute name="Referer" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       <attribute name="DecoupledEndpoint" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       <attribute name="ProxyServer" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       <attribute name="ProxyServerPort" type="{http://cxf.apache.org/configuration/parameterized-types}ParameterizedInt" />
 *       <attribute name="NonProxyHosts" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       <attribute name="ProxyServerType" type="{http://cxf.apache.org/transports/http/configuration}proxyServerType" default="HTTP" />
 *       <anyAttribute namespace='http://schemas.xmlsoap.org/wsdl/'/>
 *     </restriction>
 *   </complexContent>
 * </complexType>
 * }</pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "HTTPClientPolicy")
public class HTTPClientPolicy {

    /**
     * Specifies the amount of time, in milliseconds, that the consumer will attempt to establish a connection before it times out. 0 is infinite.
     * 
     */
    @XmlAttribute(name = "ConnectionTimeout")
    protected Long connectionTimeout;
    /**
     * Specifies the amount of time, in milliseconds, that the consumer will wait for a response before it times out. 0 is infinite.
     * 
     */
    @XmlAttribute(name = "ReceiveTimeout")
    protected Long receiveTimeout;
    /**
     * Specifies the amount of time, in milliseconds, used when requesting a connection from the connection manager(if appliable). 0 is infinite.
     * 
     */
    @XmlAttribute(name = "ConnectionRequestTimeout")
    protected Long connectionRequestTimeout;
    /**
     * Specifies the amount of time, in milliseconds, that a conduit will try and enqueue the response on the workqueue.
     * 
     */
    @XmlAttribute(name = "AsyncExecuteTimeout")
    protected Long asyncExecuteTimeout;
    /**
     * Specifies whether the conduit should throw and exception if it fails to enqueue the async response handling onto the workqueue. 
     *                 By default, if the conduit fails to enqueue the response handling on the workqueue, it will process the response on the current thread.  Set this to true to raise and exception instead.
     * 
     */
    @XmlAttribute(name = "AsyncExecuteTimeoutRejection")
    protected Boolean asyncExecuteTimeoutRejection;
    /**
     * Specifies if the consumer will automatically follow a server issued redirection.
     *                 (name is not part of standard)
     * 
     */
    @XmlAttribute(name = "AutoRedirect")
    protected Boolean autoRedirect;
    /**
     * Specifies the maximum amount of retransmits that are allowed for redirects. Retransmits for 
     *                 authorization is included in the retransmit count. Each redirect may cause another 
     *                 retransmit for a UNAUTHORIZED response code, ie. 401. 
     *                 Any negative number indicates unlimited retransmits,
     *                 although, loop protection is provided. 
     *                 The default is unlimited. 
     *                 (name is not part of standard)
     * 
     */
    @XmlAttribute(name = "MaxRetransmits")
    protected Integer maxRetransmits;
    /**
     * If true, the client is free to use chunking streams if it wants, but it is not 
     *                 required to use chunking streams. If false, the client 
     *                 must use regular, non-chunked requests in all cases.
     * 
     */
    @XmlAttribute(name = "AllowChunking")
    protected Boolean allowChunking;
    /**
     * If AllowChunking is true, this sets the threshold at which messages start
     *                 getting chunked. Messages under this limit do not get chunked.
     * 
     */
    @XmlAttribute(name = "ChunkingThreshold")
    protected Integer chunkingThreshold;
    /**
     * Specifies the chunk length for a HttpURLConnection. This value is used in java.net.HttpURLConnection.setChunkedStreamingMode(int chunklen). chunklen indicates the number of bytes to write in each chunk. If chunklen is less than or equal to zero, a default value will be used.
     * 
     */
    @XmlAttribute(name = "ChunkLength")
    protected Integer chunkLength;
    /**
     * Specifies the MIME types the client is prepared to handle (e.g., HTML, JPEG, GIF, etc.)
     * 
     */
    @XmlAttribute(name = "Accept")
    protected String accept;
    /**
     * Specifies the language the client desires (e.g., English, French, etc.)
     * 
     */
    @XmlAttribute(name = "AcceptLanguage")
    protected String acceptLanguage;
    /**
     * Specifies the encoding the client is prepared to handle (e.g., gzip)
     * 
     */
    @XmlAttribute(name = "AcceptEncoding")
    protected String acceptEncoding;
    /**
     * Specifies the content type of the stream being sent in a post request. 
     *                 (this should be text/xml for web services, or can be set to 
     *                 application/x-www-form-urlencoded if the client is sending form data).
     * 
     */
    @XmlAttribute(name = "ContentType")
    protected String contentType;
    /**
     * Specifies the Internet host and port number of the resource on which the request is being invoked.
     *                 This is sent by default based upon the URL. Certain DNS scenarios or
     *                 application designs may request you to set this, but typically it is
     *                 not required.
     * 
     */
    @XmlAttribute(name = "Host")
    protected String host;
    /**
     * The connection disposition. If close the connection to the server is closed 
     *                 after each request/response dialog. If Keep-Alive the client requests the server 
     *                 to keep the connection open, and if the server honors the keep alive request, 
     *                 the connection is reused. Many servers and proxies do not honor keep-alive requests.
     * 
     */
    @XmlAttribute(name = "Connection")
    protected ConnectionType connection;
    /**
     * Most commonly used to specify no-cache, however the standard supports a 
     *                 dozen or so caching related directives for requests
     * 
     */
    @XmlAttribute(name = "CacheControl")
    protected String cacheControl;
    /**
     * HTTP Version used for the connection.  The "auto" default will use whatever the default is
     *                 for the HTTPConduit implementation.
     * 
     */
    @XmlAttribute(name = "Version")
    protected String version;
    /**
     * Specifies a cookie to send to the server. Some stateful session designs will use cookies to identify a session.
     *                 If the cookie is static, you can supply it here. If it is dynamic,
     *                 it will need to be set by the server on first access, and can be handled
     *                 automatically by the runtime.
     * 
     */
    @XmlAttribute(name = "Cookie")
    protected String cookie;
    /**
     * aka User-Agent
     *                 Specifies the type of browser is sending the request. This is usually only 
     *                 needed when sites have HTML customized to Netscape vs IE, etc, but can
     *                 also be used to optimize for different SOAP stacks.
     * 
     */
    @XmlAttribute(name = "BrowserType")
    protected String browserType;
    /**
     * Specifies the URL that referred us to this URL. This is 
     *                 sent automatically with auto redirect.
     * 
     *                 May allow the server to optimize processing based upon
     *                 previous task flow.  However, typically not used in 
     *                 web services applications.
     * 
     */
    @XmlAttribute(name = "Referer")
    protected String referer;
    /**
     * Specifies the URL of a decoupled endpoint for the receipt of responses over a separate provider->consumer connection.
     * 
     */
    @XmlAttribute(name = "DecoupledEndpoint")
    protected String decoupledEndpoint;
    /**
     * Specifies the address of proxy server if one is used.
     * 
     */
    @XmlAttribute(name = "ProxyServer")
    protected String proxyServer;
    /**
     * Specifies the port number used by the proxy server.
     * 
     */
    @XmlAttribute(name = "ProxyServerPort")
    protected Integer proxyServerPort;
    /**
     * Specifies the list of hostnames that will not use the proxy configuration.
     *                 Examples of value:
     *                   * "localhost" -> A single hostname
     *                   * "localhost|www.google.com" -> 2 hostnames that will not use the proxy configuration
     *                   * "localhost|www.google.*|*.apache.org" -> It's also possible to use a pattern-like value
     * 
     */
    @XmlAttribute(name = "NonProxyHosts")
    protected String nonProxyHosts;
    /**
     * Specifies the type of the proxy server. Can be either HTTP or SOCKS.
     * 
     */
    @XmlAttribute(name = "ProxyServerType")
    protected ProxyServerType proxyServerType;
    @XmlAnyAttribute
    private Map<QName, String> otherAttributes = new HashMap<>();
    @XmlTransient
    protected PropertyChangeSupport propertyListener = new PropertyChangeSupport(this);

    /**
     * Specifies the MIME types the client is prepared to handle (e.g., HTML, JPEG, GIF, etc.)
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getAccept() {
        return accept;
    }

    /**
     * Sets the value of the accept property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     * @see #getAccept()
     */
    public void setAccept(String value) {
        propertyListener.firePropertyChange("accept", this.accept, value);
        this.accept = value;
    }

    public boolean isSetAccept() {
        return (this.accept!= null);
    }

    /**
     * Specifies the language the client desires (e.g., English, French, etc.)
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getAcceptLanguage() {
        return acceptLanguage;
    }

    /**
     * Sets the value of the acceptLanguage property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     * @see #getAcceptLanguage()
     */
    public void setAcceptLanguage(String value) {
        propertyListener.firePropertyChange("acceptLanguage", this.acceptLanguage, value);
        this.acceptLanguage = value;
    }

    public boolean isSetAcceptLanguage() {
        return (this.acceptLanguage!= null);
    }

    /**
     * Specifies the encoding the client is prepared to handle (e.g., gzip)
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getAcceptEncoding() {
        return acceptEncoding;
    }

    /**
     * Sets the value of the acceptEncoding property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     * @see #getAcceptEncoding()
     */
    public void setAcceptEncoding(String value) {
        propertyListener.firePropertyChange("acceptEncoding", this.acceptEncoding, value);
        this.acceptEncoding = value;
    }

    public boolean isSetAcceptEncoding() {
        return (this.acceptEncoding!= null);
    }

    /**
     * Specifies the content type of the stream being sent in a post request. 
     *                 (this should be text/xml for web services, or can be set to 
     *                 application/x-www-form-urlencoded if the client is sending form data).
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getContentType() {
        return contentType;
    }

    /**
     * Sets the value of the contentType property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     * @see #getContentType()
     */
    public void setContentType(String value) {
        propertyListener.firePropertyChange("contentType", this.contentType, value);
        this.contentType = value;
    }

    public boolean isSetContentType() {
        return (this.contentType!= null);
    }

    /**
     * Specifies the Internet host and port number of the resource on which the request is being invoked.
     *                 This is sent by default based upon the URL. Certain DNS scenarios or
     *                 application designs may request you to set this, but typically it is
     *                 not required.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getHost() {
        return host;
    }

    /**
     * Sets the value of the host property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     * @see #getHost()
     */
    public void setHost(String value) {
        propertyListener.firePropertyChange("host", this.host, value);
        this.host = value;
    }

    public boolean isSetHost() {
        return (this.host!= null);
    }

    /**
     * Sets the value of the connection property.
     * 
     * @param value
     *     allowed object is
     *     {@link ConnectionType }
     *     
     * @see #getConnection()
     */
    public void setConnection(ConnectionType value) {
        propertyListener.firePropertyChange("connection", this.connection, value);
        this.connection = value;
    }

    public boolean isSetConnection() {
        return (this.connection!= null);
    }

    /**
     * Most commonly used to specify no-cache, however the standard supports a 
     *                 dozen or so caching related directives for requests
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getCacheControl() {
        return cacheControl;
    }

    /**
     * Sets the value of the cacheControl property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     * @see #getCacheControl()
     */
    public void setCacheControl(String value) {
        propertyListener.firePropertyChange("cacheControl", this.cacheControl, value);
        this.cacheControl = value;
    }

    public boolean isSetCacheControl() {
        return (this.cacheControl!= null);
    }

    /**
     * Specifies a cookie to send to the server. Some stateful session designs will use cookies to identify a session.
     *                 If the cookie is static, you can supply it here. If it is dynamic,
     *                 it will need to be set by the server on first access, and can be handled
     *                 automatically by the runtime.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getCookie() {
        return cookie;
    }

    /**
     * Sets the value of the cookie property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     * @see #getCookie()
     */
    public void setCookie(String value) {
        propertyListener.firePropertyChange("cookie", this.cookie, value);
        this.cookie = value;
    }

    public boolean isSetCookie() {
        return (this.cookie!= null);
    }

    /**
     * aka User-Agent
     *                 Specifies the type of browser is sending the request. This is usually only 
     *                 needed when sites have HTML customized to Netscape vs IE, etc, but can
     *                 also be used to optimize for different SOAP stacks.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getBrowserType() {
        return browserType;
    }

    /**
     * Sets the value of the browserType property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     * @see #getBrowserType()
     */
    public void setBrowserType(String value) {
        propertyListener.firePropertyChange("browserType", this.browserType, value);
        this.browserType = value;
    }

    public boolean isSetBrowserType() {
        return (this.browserType!= null);
    }

    /**
     * Specifies the URL that referred us to this URL. This is 
     *                 sent automatically with auto redirect.
     * 
     *                 May allow the server to optimize processing based upon
     *                 previous task flow.  However, typically not used in 
     *                 web services applications.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getReferer() {
        return referer;
    }

    /**
     * Sets the value of the referer property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     * @see #getReferer()
     */
    public void setReferer(String value) {
        propertyListener.firePropertyChange("referer", this.referer, value);
        this.referer = value;
    }

    public boolean isSetReferer() {
        return (this.referer!= null);
    }

    /**
     * Specifies the URL of a decoupled endpoint for the receipt of responses over a separate provider->consumer connection.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getDecoupledEndpoint() {
        return decoupledEndpoint;
    }

    /**
     * Sets the value of the decoupledEndpoint property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     * @see #getDecoupledEndpoint()
     */
    public void setDecoupledEndpoint(String value) {
        propertyListener.firePropertyChange("decoupledEndpoint", this.decoupledEndpoint, value);
        this.decoupledEndpoint = value;
    }

    public boolean isSetDecoupledEndpoint() {
        return (this.decoupledEndpoint!= null);
    }

    /**
     * Specifies the address of proxy server if one is used.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getProxyServer() {
        return proxyServer;
    }

    /**
     * Sets the value of the proxyServer property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     * @see #getProxyServer()
     */
    public void setProxyServer(String value) {
        propertyListener.firePropertyChange("proxyServer", this.proxyServer, value);
        this.proxyServer = value;
    }

    public boolean isSetProxyServer() {
        return (this.proxyServer!= null);
    }

    /**
     * Specifies the port number used by the proxy server.
     * 
     * @return
     *     possible object is
     *     {@link Integer }
     *     
     */
    public Integer getProxyServerPort() {
        return proxyServerPort;
    }

    /**
     * Sets the value of the proxyServerPort property.
     * 
     * @param value
     *     allowed object is
     *     {@link Integer }
     *     
     * @see #getProxyServerPort()
     */
    public void setProxyServerPort(Integer value) {
        propertyListener.firePropertyChange("proxyServerPort", this.proxyServerPort, value);
        this.proxyServerPort = value;
    }

    public boolean isSetProxyServerPort() {
        return (this.proxyServerPort!= null);
    }

    /**
     * Specifies the list of hostnames that will not use the proxy configuration.
     *                 Examples of value:
     *                   * "localhost" -> A single hostname
     *                   * "localhost|www.google.com" -> 2 hostnames that will not use the proxy configuration
     *                   * "localhost|www.google.*|*.apache.org" -> It's also possible to use a pattern-like value
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getNonProxyHosts() {
        return nonProxyHosts;
    }

    /**
     * Sets the value of the nonProxyHosts property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     * @see #getNonProxyHosts()
     */
    public void setNonProxyHosts(String value) {
        propertyListener.firePropertyChange("nonProxyHosts", this.nonProxyHosts, value);
        this.nonProxyHosts = value;
    }

    public boolean isSetNonProxyHosts() {
        return (this.nonProxyHosts!= null);
    }

    /**
     * Sets the value of the proxyServerType property.
     * 
     * @param value
     *     allowed object is
     *     {@link ProxyServerType }
     *     
     * @see #getProxyServerType()
     */
    public void setProxyServerType(ProxyServerType value) {
        propertyListener.firePropertyChange("proxyServerType", this.proxyServerType, value);
        this.proxyServerType = value;
    }

    public boolean isSetProxyServerType() {
        return (this.proxyServerType!= null);
    }

    /**
     * Gets a map that contains attributes that aren't bound to any typed property on this class.
     * 
     * <p>
     * the map is keyed by the name of the attribute and 
     * the value is the string value of the attribute.
     * 
     * the map returned by this method is live, and you can add new attribute
     * by updating the map directly. Because of this design, there's no setter.
     * 
     * 
     * @return
     *     always non-null
     */
    public Map<QName, String> getOtherAttributes() {
        return otherAttributes;
    }

    /**
     * Sets the value of the connectionTimeout property.
     * 
     */
    public void setConnectionTimeout(long value) {
        propertyListener.firePropertyChange("connectionTimeout", connectionTimeout, value);
        connectionTimeout = value;
    }

    public void unsetConnectionTimeout() {
        connectionTimeout = null;
    }

    public boolean isSetConnectionTimeout() {
        return (this.connectionTimeout!= null);
    }

    /**
     * Specifies the amount of time, in milliseconds, that the consumer will attempt to establish a connection before it times out. 0 is infinite.
     * 
     */
    public long getConnectionTimeout() {
        if (null == connectionTimeout) {
            return  30000L;
        }
        return connectionTimeout;
    }

    /**
     * Sets the value of the receiveTimeout property.
     * 
     */
    public void setReceiveTimeout(long value) {
        propertyListener.firePropertyChange("receiveTimeout", receiveTimeout, value);
        receiveTimeout = value;
    }

    public void unsetReceiveTimeout() {
        receiveTimeout = null;
    }

    public boolean isSetReceiveTimeout() {
        return (this.receiveTimeout!= null);
    }

    /**
     * Specifies the amount of time, in milliseconds, that the consumer will wait for a response before it times out. 0 is infinite.
     * 
     */
    public long getReceiveTimeout() {
        if (null == receiveTimeout) {
            return  60000L;
        }
        return receiveTimeout;
    }

    /**
     * Sets the value of the connectionRequestTimeout property.
     * 
     */
    public void setConnectionRequestTimeout(long value) {
        propertyListener.firePropertyChange("connectionRequestTimeout", connectionRequestTimeout, value);
        connectionRequestTimeout = value;
    }

    public void unsetConnectionRequestTimeout() {
        connectionRequestTimeout = null;
    }

    public boolean isSetConnectionRequestTimeout() {
        return (this.connectionRequestTimeout!= null);
    }

    /**
     * Specifies the amount of time, in milliseconds, used when requesting a connection from the connection manager(if appliable). 0 is infinite.
     * 
     */
    public long getConnectionRequestTimeout() {
        if (null == connectionRequestTimeout) {
            return  60000L;
        }
        return connectionRequestTimeout;
    }

    /**
     * Sets the value of the asyncExecuteTimeout property.
     * 
     */
    public void setAsyncExecuteTimeout(long value) {
        propertyListener.firePropertyChange("asyncExecuteTimeout", asyncExecuteTimeout, value);
        asyncExecuteTimeout = value;
    }

    public void unsetAsyncExecuteTimeout() {
        asyncExecuteTimeout = null;
    }

    public boolean isSetAsyncExecuteTimeout() {
        return (this.asyncExecuteTimeout!= null);
    }

    /**
     * Specifies the amount of time, in milliseconds, that a conduit will try and enqueue the response on the workqueue.
     * 
     */
    public long getAsyncExecuteTimeout() {
        if (null == asyncExecuteTimeout) {
            return  5000L;
        }
        return asyncExecuteTimeout;
    }

    /**
     * Sets the value of the asyncExecuteTimeoutRejection property.
     * 
     */
    public void setAsyncExecuteTimeoutRejection(boolean value) {
        propertyListener.firePropertyChange("asyncExecuteTimeoutRejection", asyncExecuteTimeoutRejection, ((Boolean) value));
        asyncExecuteTimeoutRejection = value;
    }

    public void unsetAsyncExecuteTimeoutRejection() {
        asyncExecuteTimeoutRejection = null;
    }

    public boolean isSetAsyncExecuteTimeoutRejection() {
        return (this.asyncExecuteTimeoutRejection!= null);
    }

    /**
     * Specifies whether the conduit should throw and exception if it fails to enqueue the async response handling onto the workqueue. 
     *                 By default, if the conduit fails to enqueue the response handling on the workqueue, it will process the response on the current thread.  Set this to true to raise and exception instead.
     * 
     */
    public boolean isAsyncExecuteTimeoutRejection() {
        if (null == asyncExecuteTimeoutRejection) {
            return false;
        }
        return asyncExecuteTimeoutRejection;
    }

    /**
     * Sets the value of the autoRedirect property.
     * 
     */
    public void setAutoRedirect(boolean value) {
        propertyListener.firePropertyChange("autoRedirect", autoRedirect, ((Boolean) value));
        autoRedirect = value;
    }

    public void unsetAutoRedirect() {
        autoRedirect = null;
    }

    public boolean isSetAutoRedirect() {
        return (this.autoRedirect!= null);
    }

    /**
     * Specifies if the consumer will automatically follow a server issued redirection.
     *                 (name is not part of standard)
     * 
     */
    public boolean isAutoRedirect() {
        if (null == autoRedirect) {
            return false;
        }
        return autoRedirect;
    }

    /**
     * Sets the value of the maxRetransmits property.
     * 
     */
    public void setMaxRetransmits(int value) {
        propertyListener.firePropertyChange("maxRetransmits", maxRetransmits, ((Integer) value));
        maxRetransmits = value;
    }

    public void unsetMaxRetransmits() {
        maxRetransmits = null;
    }

    public boolean isSetMaxRetransmits() {
        return (this.maxRetransmits!= null);
    }

    /**
     * Specifies the maximum amount of retransmits that are allowed for redirects. Retransmits for 
     *                 authorization is included in the retransmit count. Each redirect may cause another 
     *                 retransmit for a UNAUTHORIZED response code, ie. 401. 
     *                 Any negative number indicates unlimited retransmits,
     *                 although, loop protection is provided. 
     *                 The default is unlimited. 
     *                 (name is not part of standard)
     * 
     */
    public int getMaxRetransmits() {
        if (null == maxRetransmits) {
            return -1;
        }
        return maxRetransmits;
    }

    /**
     * Sets the value of the allowChunking property.
     * 
     */
    public void setAllowChunking(boolean value) {
        propertyListener.firePropertyChange("allowChunking", allowChunking, ((Boolean) value));
        allowChunking = value;
    }

    public void unsetAllowChunking() {
        allowChunking = null;
    }

    public boolean isSetAllowChunking() {
        return (this.allowChunking!= null);
    }

    /**
     * If true, the client is free to use chunking streams if it wants, but it is not 
     *                 required to use chunking streams. If false, the client 
     *                 must use regular, non-chunked requests in all cases.
     * 
     */
    public boolean isAllowChunking() {
        if (null == allowChunking) {
            return true;
        }
        return allowChunking;
    }

    /**
     * Sets the value of the chunkingThreshold property.
     * 
     */
    public void setChunkingThreshold(int value) {
        propertyListener.firePropertyChange("chunkingThreshold", chunkingThreshold, ((Integer) value));
        chunkingThreshold = value;
    }

    public void unsetChunkingThreshold() {
        chunkingThreshold = null;
    }

    public boolean isSetChunkingThreshold() {
        return (this.chunkingThreshold!= null);
    }

    /**
     * If AllowChunking is true, this sets the threshold at which messages start
     *                 getting chunked. Messages under this limit do not get chunked.
     * 
     */
    public int getChunkingThreshold() {
        if (null == chunkingThreshold) {
            return  4096;
        }
        return chunkingThreshold;
    }

    /**
     * Sets the value of the chunkLength property.
     * 
     */
    public void setChunkLength(int value) {
        propertyListener.firePropertyChange("chunkLength", chunkLength, ((Integer) value));
        chunkLength = value;
    }

    public void unsetChunkLength() {
        chunkLength = null;
    }

    public boolean isSetChunkLength() {
        return (this.chunkLength!= null);
    }

    /**
     * Specifies the chunk length for a HttpURLConnection. This value is used in java.net.HttpURLConnection.setChunkedStreamingMode(int chunklen). chunklen indicates the number of bytes to write in each chunk. If chunklen is less than or equal to zero, a default value will be used.
     * 
     */
    public int getChunkLength() {
        if (null == chunkLength) {
            return -1;
        }
        return chunkLength;
    }

    /**
     * The connection disposition. If close the connection to the server is closed 
     *                 after each request/response dialog. If Keep-Alive the client requests the server 
     *                 to keep the connection open, and if the server honors the keep alive request, 
     *                 the connection is reused. Many servers and proxies do not honor keep-alive requests.
     * 
     */
    public ConnectionType getConnection() {
        if (null == connection) {
            return ConnectionType.fromValue("Keep-Alive");
        }
        return connection;
    }

    /**
     * Sets the value of the version property.
     * 
     */
    public void setVersion(String value) {
        propertyListener.firePropertyChange("version", version, value);
        version = value;
    }

    public void unsetVersion() {
        version = null;
    }

    public boolean isSetVersion() {
        return (this.version!= null);
    }

    /**
     * HTTP Version used for the connection.  The "auto" default will use whatever the default is
     *                 for the HTTPConduit implementation.
     * 
     */
    public String getVersion() {
        if (null == version) {
            return "auto";
        }
        return version;
    }

    /**
     * Specifies the type of the proxy server. Can be either HTTP or SOCKS.
     * 
     */
    public ProxyServerType getProxyServerType() {
        if (null == proxyServerType) {
            return ProxyServerType.fromValue("HTTP");
        }
        return proxyServerType;
    }

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        propertyListener.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        propertyListener.removePropertyChangeListener(listener);
    }

}