http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ab15d45b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
----------------------------------------------------------------------
diff --git 
a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
 
b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
deleted file mode 100644
index 66a0f65..0000000
--- 
a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
+++ /dev/null
@@ -1,2110 +0,0 @@
-// 
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
-// * with the License.  You may obtain a copy of the License at                
                                              *
-// *                                                                           
                                              *
-// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
-// *                                                                           
                                              *
-// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-// * specific language governing permissions and limitations under the 
License.                                              *
-// 
***************************************************************************************************************************
-package org.apache.juneau.rest.client;
-
-import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.parser.ParserContext.*;
-import static org.apache.juneau.serializer.SerializerContext.*;
-
-import java.lang.reflect.*;
-import java.net.*;
-import java.security.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.util.logging.*;
-
-import javax.net.ssl.*;
-
-import org.apache.http.*;
-import org.apache.http.auth.*;
-import org.apache.http.client.*;
-import org.apache.http.client.CookieStore;
-import org.apache.http.client.config.*;
-import org.apache.http.client.entity.*;
-import org.apache.http.config.*;
-import org.apache.http.conn.*;
-import org.apache.http.conn.routing.*;
-import org.apache.http.conn.socket.*;
-import org.apache.http.conn.ssl.*;
-import org.apache.http.conn.util.*;
-import org.apache.http.cookie.*;
-import org.apache.http.impl.client.*;
-import org.apache.http.impl.conn.*;
-import org.apache.http.protocol.*;
-import org.apache.juneau.*;
-import org.apache.juneau.http.*;
-import org.apache.juneau.json.*;
-import org.apache.juneau.parser.*;
-import org.apache.juneau.serializer.*;
-import org.apache.juneau.uon.*;
-import org.apache.juneau.urlencoding.*;
-
-/**
- * Builder class for the {@link RestClient} class.
- */
-@SuppressWarnings({"hiding"})
-public class RestClientBuilder extends CoreObjectBuilder {
-
-       private HttpClientConnectionManager httpClientConnectionManager;
-       private HttpClientBuilder httpClientBuilder = createHttpClientBuilder();
-       private CloseableHttpClient httpClient;
-       private boolean keepHttpClientOpen;
-
-       private Class<? extends Serializer> serializerClass = 
JsonSerializer.class;
-       private Class<? extends Parser> parserClass = JsonParser.class;
-       private Class<? extends PartSerializer> partSerializerClass = 
UrlEncodingSerializer.class;
-       private Serializer serializer;
-       private Parser parser;
-       private PartSerializer partSerializer;
-
-       private Map<String,String> headers = new 
TreeMap<String,String>(String.CASE_INSENSITIVE_ORDER);
-
-       private List<RestCallInterceptor> intercepters = new 
ArrayList<RestCallInterceptor>();
-
-       private String rootUrl;
-       private SSLOpts sslOpts;
-       private boolean pooled;
-
-       private int retries = 1;
-       private long retryInterval = -1;
-       private RetryOn retryOn = RetryOn.DEFAULT;
-       private boolean debug, executorServiceShutdownOnClose;
-       private ExecutorService executorService;
-
-       /**
-        * Constructor, default settings.
-        */
-       public RestClientBuilder() {
-               super();
-       }
-
-       /**
-        * Constructor, default settings.
-        *
-        * <p>
-        * Shortcut for calling <code><jk>new</jk> 
RestClientBuilder().serializer(s).parser(p);</code>
-        *
-        * @param s The serializer to use for output.
-        * @param p The parser to use for input.
-        */
-       public RestClientBuilder(Serializer s, Parser p) {
-               super();
-               serializer(s);
-               parser(p);
-       }
-
-       /**
-        * Constructor, default settings.
-        *
-        * <p>
-        * Shortcut for calling <code><jk>new</jk> 
RestClientBuilder().serializer(s).parser(p);</code>
-        *
-        * @param s The serializer class to use for output.
-        * @param p The parser class to use for input.
-        */
-       public RestClientBuilder(Class<? extends Serializer> s, Class<? extends 
Parser> p) {
-               super();
-               serializer(s);
-               parser(p);
-       }
-
-       /**
-        * Constructor.
-        *
-        * @param propertyStore The initial configuration settings for this 
builder.
-        */
-       public RestClientBuilder(PropertyStore propertyStore) {
-               super(propertyStore);
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClient build() {
-               try {
-                       CloseableHttpClient httpClient = this.httpClient;
-                       if (httpClient == null)
-                               httpClient = createHttpClient();
-
-                       Serializer s =
-                               this.serializer != null
-                               ? 
this.serializer.builder().apply(propertyStore).build()
-                               : new 
SerializerBuilder(propertyStore).build(this.serializerClass);
-
-                       Parser p =
-                               this.parser != null
-                               ? 
this.parser.builder().apply(propertyStore).build()
-                               : new 
ParserBuilder(propertyStore).build(this.parserClass);
-
-                       UrlEncodingSerializer us = new 
SerializerBuilder(propertyStore).build(UrlEncodingSerializer.class);
-
-                       PartSerializer pf = null;
-                       if (partSerializer != null)
-                               pf = partSerializer;
-                       else if (partSerializerClass != null) {
-                               if (partSerializerClass == 
UrlEncodingSerializer.class)
-                                       pf = us;
-                               else
-                                       pf = partSerializerClass.newInstance();
-                       }
-
-                       return new RestClient(propertyStore, httpClient, 
keepHttpClientOpen, s, p, us, pf, headers, intercepters, rootUrl, retryOn, 
retries, retryInterval, debug, executorService, executorServiceShutdownOnClose);
-               } catch (Exception e) {
-                       throw new RuntimeException(e);
-               }
-       }
-
-       /**
-        * Creates an instance of an {@link HttpClient} to be used to handle 
all HTTP communications with the target server.
-        *
-        * <p>
-        * This HTTP client is used when the HTTP client is not specified 
through one of the constructors or the
-        * {@link #httpClient(CloseableHttpClient, boolean)} method.
-        *
-        * <p>
-        * Subclasses can override this method to provide specially-configured 
HTTP clients to handle stuff such as
-        * SSL/TLS certificate handling, authentication, etc.
-        *
-        * <p>
-        * The default implementation returns an instance of {@link HttpClient} 
using the client builder returned by
-        * {@link #createHttpClientBuilder()}.
-        *
-        * @return The HTTP client to use.
-        * @throws Exception
-        */
-       protected CloseableHttpClient createHttpClient() throws Exception {
-               // Don't call createConnectionManager() if 
RestClient.setConnectionManager() was called.
-               if (httpClientConnectionManager == null)
-                       
httpClientBuilder.setConnectionManager(createConnectionManager());
-               return httpClientBuilder.build();
-       }
-
-       /**
-        * Creates an instance of an {@link HttpClientBuilder} to be used to 
create the {@link HttpClient}.
-        *
-        * <p>
-        * Subclasses can override this method to provide their own client 
builder.
-        *
-        * <p>
-        * The predefined method returns an {@link HttpClientBuilder} with the 
following settings:
-        * <ul>
-        *      <li>Lax redirect strategy.
-        *      <li>The connection manager returned by {@link 
#createConnectionManager()}.
-        * </ul>
-        *
-        * @return The HTTP client builder to use to create the HTTP client.
-        */
-       protected HttpClientBuilder createHttpClientBuilder() {
-               HttpClientBuilder b = HttpClientBuilder.create();
-               b.setRedirectStrategy(new AllowAllRedirects());
-               return b;
-       }
-
-       /**
-        * Creates the {@link HttpClientConnectionManager} returned by {@link 
#createConnectionManager()}.
-        *
-        * <p>
-        * Subclasses can override this method to provide their own connection 
manager.
-        *
-        * <p>
-        * The default implementation returns an instance of a {@link 
PoolingHttpClientConnectionManager}.
-        *
-        * @return The HTTP client builder to use to create the HTTP client.
-        */
-       protected HttpClientConnectionManager createConnectionManager() {
-               if (sslOpts != null) {
-                       HostnameVerifier hv = null;
-                       switch (sslOpts.getHostVerify()) {
-                               case LAX: hv = new NoopHostnameVerifier(); 
break;
-                               case DEFAULT: hv = new 
DefaultHostnameVerifier(); break;
-                               default: throw new RuntimeException("Programmer 
error");
-                       }
-
-                       for (String p : split(sslOpts.getProtocols())) {
-                               try {
-                                       TrustManager tm = new 
SimpleX509TrustManager(sslOpts.getCertValidate() == SSLOpts.CertValidate.LAX);
-
-                                       SSLContext ctx = 
SSLContext.getInstance(p);
-                                       ctx.init(null, new TrustManager[] { tm 
}, null);
-
-                                       // Create a socket to ensure this 
algorithm is acceptable.
-                                       // This will correctly disallow certain 
configurations (such as SSL_TLS under FIPS)
-                                       
ctx.getSocketFactory().createSocket().close();
-                                       SSLConnectionSocketFactory sf = new 
SSLConnectionSocketFactory(ctx, hv);
-                                       setSSLSocketFactory(sf);
-
-                                       Registry<ConnectionSocketFactory> r = 
RegistryBuilder.<ConnectionSocketFactory> create().register("https", 
sf).build();
-
-                                       return (pooled ? new 
PoolingHttpClientConnectionManager(r) : new 
BasicHttpClientConnectionManager(r));
-                               } catch (Throwable t) {}
-                       }
-               }
-
-                       // Using pooling connection so that this client is 
threadsafe.
-               return (pooled ? new PoolingHttpClientConnectionManager() : new 
BasicHttpClientConnectionManager());
-       }
-
-       /**
-        * Set a root URL for this client.
-        *
-        * <p>
-        * When set, URL strings passed in through the various rest call 
methods (e.g. {@link RestClient#doGet(Object)}
-        * will be prefixed with the specified root.
-        * This root URL is ignored on those methods if you pass in a {@link 
URL}, {@link URI}, or an absolute URL string.
-        *
-        * @param rootUrl
-        *      The root URL to prefix to relative URL strings.
-        *      Trailing slashes are trimmed.
-        *      Usually a <code>String</code> but you can also pass in 
<code>URI</code> and <code>URL</code> objects as well.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder rootUrl(Object rootUrl) {
-               String s = rootUrl.toString();
-               if (s.endsWith("/"))
-                       s = s.replaceAll("\\/$", "");
-               this.rootUrl = s;
-               return this;
-       }
-
-       /**
-        * Enable SSL support on this client.
-        *
-        * @param opts
-        *      The SSL configuration options.
-        *      See {@link SSLOpts} for details.
-        *      This method is a no-op if <code>sslConfig</code> is 
<jk>null</jk>.
-        * @return This object (for method chaining).
-        * @throws KeyStoreException
-        * @throws NoSuchAlgorithmException
-        */
-       public RestClientBuilder enableSSL(SSLOpts opts) throws 
KeyStoreException, NoSuchAlgorithmException {
-               this.sslOpts = opts;
-               return this;
-       }
-
-       /**
-        * Enable LAX SSL support.
-        *
-        * <p>
-        * Certificate chain validation and hostname verification is disabled.
-        *
-        * @return This object (for method chaining).
-        * @throws KeyStoreException
-        * @throws NoSuchAlgorithmException
-        */
-       public RestClientBuilder enableLaxSSL() throws KeyStoreException, 
NoSuchAlgorithmException {
-               return enableSSL(SSLOpts.LAX);
-       }
-
-       /**
-        * Sets the client version by setting the value for the 
<js>"X-Client-Version"</js> header.
-        *
-        * @param version The version string (e.g. <js>"1.2.3"</js>)
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder clientVersion(String version) {
-               return header("X-Client-Version", version);
-       }
-
-       /**
-        * Adds an intercepter that gets called immediately after a connection 
is made.
-        *
-        * @param intercepter The intercepter.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder intercepter(RestCallInterceptor intercepter) {
-               intercepters.add(intercepter);
-               return this;
-       }
-
-       /**
-        * Adds a {@link RestCallLogger} to the list of intercepters on this 
class.
-        *
-        * @param level The log level to log messages at.
-        * @param log The logger to log messages to.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder logTo(Level level, Logger log) {
-               intercepter(new RestCallLogger(level, log));
-               return this;
-       }
-
-       /**
-        * Make HTTP calls retryable if an error response (>=400) is received.
-        *
-        * @param retries The number of retries to attempt.
-        * @param interval The time in milliseconds between attempts.
-        * @param retryOn
-        *      Optional object used for determining whether a retry should be 
attempted.
-        *      If <jk>null</jk>, uses {@link RetryOn#DEFAULT}.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder retryable(int retries, long interval, RetryOn 
retryOn) {
-               this.retries = retries;
-               this.retryInterval = interval;
-               this.retryOn = retryOn;
-               return this;
-       }
-
-       /**
-        * When called, the {@link #createConnectionManager()} method will 
return a {@link PoolingHttpClientConnectionManager}
-        * instead of a {@link BasicHttpClientConnectionManager}.
-        *
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder pooled() {
-               this.pooled = true;
-               return this;
-       }
-
-       /**
-        * Sets the serializer used for serializing POJOs to the HTTP request 
message body.
-        *
-        * @param serializer The serializer.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder serializer(Serializer serializer) {
-               this.serializer = serializer;
-               return this;
-       }
-
-       /**
-        * Same as {@link #serializer(Serializer)}, except takes in a 
serializer class that will be instantiated through a
-        * no-arg constructor.
-        *
-        * @param serializerClass The serializer class.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder serializer(Class<? extends Serializer> 
serializerClass) {
-               this.serializerClass = serializerClass;
-               return this;
-       }
-
-       /**
-        * Sets the parser used for parsing POJOs from the HTTP response 
message body.
-        *
-        * @param parser The parser.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder parser(Parser parser) {
-               this.parser = parser;
-               return this;
-       }
-
-       /**
-        * Same as {@link #parser(Parser)}, except takes in a parser class that 
will be instantiated through a no-arg
-        * constructor.
-        *
-        * @param parserClass The parser class.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder parser(Class<? extends Parser> parserClass) {
-               this.parserClass = parserClass;
-               return this;
-       }
-
-       /**
-        * Sets the part serializer to use for converting POJOs to headers, 
query parameters, form-data parameters, and
-        * path variables.
-        *
-        * @param partSerializer The part serializer instance.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder partSerializer(PartSerializer partSerializer) {
-               this.partSerializer = partSerializer;
-               return this;
-       }
-
-       /**
-        * Sets the part formatter to use for converting POJOs to headers, 
query parameters, form-data parameters, and
-        * path variables.
-        *
-        * @param partSerializerClass
-        *      The part serializer class.
-        *      The class must have a no-arg constructor.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder partSerializer(Class<? extends PartSerializer> 
partSerializerClass) {
-               this.partSerializerClass = partSerializerClass;
-               return this;
-       }
-
-       /**
-        * Set up this client to use BASIC auth.
-        *
-        * @param host The auth scope hostname.
-        * @param port The auth scope port.
-        * @param user The username.
-        * @param pw The password.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder basicAuth(String host, int port, String user, 
String pw) {
-               AuthScope scope = new AuthScope(host, port);
-               Credentials up = new UsernamePasswordCredentials(user, pw);
-               CredentialsProvider p = new BasicCredentialsProvider();
-               p.setCredentials(scope, up);
-               setDefaultCredentialsProvider(p);
-               return this;
-       }
-
-       /**
-        * Sets the internal {@link HttpClient} to use for handling HTTP 
communications.
-        *
-        * @param httpClient The HTTP client.
-        * @param keepHttpClientOpen Don't close this client when the {@link 
RestClient#close()} method is called.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder httpClient(CloseableHttpClient httpClient, 
boolean keepHttpClientOpen) {
-               this.httpClient = httpClient;
-               this.keepHttpClientOpen = keepHttpClientOpen;
-               return this;
-       }
-
-       /**
-        * Defines the executor service to use when calling future methods on 
the {@link RestCall} class.
-        *
-        * <p>
-        * This executor service is used to create {@link Future} objects on 
the following methods:
-        * <ul>
-        *      <li>{@link RestCall#runFuture()}
-        *      <li>{@link RestCall#getResponseFuture(Class)}
-        *      <li>{@link RestCall#getResponseFuture(Type,Type...)}
-        *      <li>{@link RestCall#getResponseAsString()}
-        * </ul>
-        *
-        * <p>
-        * The default executor service is a single-threaded {@link 
ThreadPoolExecutor} with a 30 second timeout
-        * and a queue size of 10.
-        *
-        * @param executorService The executor service.
-        * @param shutdownOnClose Call {@link ExecutorService#shutdown()} when 
{@link RestClient#close()} is called.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder executorService(ExecutorService 
executorService, boolean shutdownOnClose) {
-               this.executorService = executorService;
-               this.executorServiceShutdownOnClose = shutdownOnClose;
-               return this;
-       }
-
-
-       
//--------------------------------------------------------------------------------
-       // HTTP headers
-       
//--------------------------------------------------------------------------------
-
-       /**
-        * Specifies a request header property to add to all requests created 
by this client.
-        *
-        * @param name The HTTP header name.
-        * @param value The HTTP header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder header(String name, Object value) {
-               this.headers.put(name, value == null ? null : value.toString());
-               return this;
-       }
-
-       /**
-        * Sets the value for the <code>Accept</code> request header.
-        *
-        * <p>
-        * This overrides the media type specified on the parser, but is 
overridden by calling
-        * <code>header(<js>"Accept"</js>, value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder accept(Object value) {
-               return header("Accept", value);
-       }
-
-       /**
-        * Sets the value for the <code>Accept-Charset</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling 
<code>header(<js>"Accept-Charset"</js>, value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder acceptCharset(Object value) {
-               return header("Accept-Charset", value);
-       }
-
-       /**
-        * Sets the value for the <code>Accept-Encoding</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling 
<code>header(<js>"Accept-Encoding"</js>, value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder acceptEncoding(Object value) {
-               return header("Accept-Encoding", value);
-       }
-
-       /**
-        * Sets the value for the <code>Accept-Language</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling 
<code>header(<js>"Accept-Language"</js>, value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder acceptLanguage(Object value) {
-               return header("Accept-Language", value);
-       }
-
-       /**
-        * Sets the value for the <code>Authorization</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling 
<code>header(<js>"Authorization"</js>, value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder authorization(Object value) {
-               return header("Authorization", value);
-       }
-
-       /**
-        * Sets the value for the <code>Cache-Control</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling 
<code>header(<js>"Cache-Control"</js>, value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder cacheControl(Object value) {
-               return header("Cache-Control", value);
-       }
-
-       /**
-        * Sets the value for the <code>Connection</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling <code>header(<js>"Connection"</js>, 
value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder connection(Object value) {
-               return header("Connection", value);
-       }
-
-       /**
-        * Sets the value for the <code>Content-Length</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling 
<code>header(<js>"Content-Length"</js>, value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder contentLength(Object value) {
-               return header("Content-Length", value);
-       }
-
-       /**
-        * Sets the value for the <code>Content-Type</code> request header.
-        *
-        * <p>
-        * This overrides the media type specified on the serializer, but is 
overridden by calling
-        * <code>header(<js>"Content-Type"</js>, value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder contentType(Object value) {
-               return header("Content-Type", value);
-       }
-
-       /**
-        * Sets the value for the <code>Date</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling <code>header(<js>"Date"</js>, 
value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder date(Object value) {
-               return header("Date", value);
-       }
-
-       /**
-        * Sets the value for the <code>Expect</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling <code>header(<js>"Expect"</js>, 
value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder expect(Object value) {
-               return header("Expect", value);
-       }
-
-       /**
-        * Sets the value for the <code>Forwarded</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling <code>header(<js>"Forwarded"</js>, 
value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder forwarded(Object value) {
-               return header("Forwarded", value);
-       }
-
-       /**
-        * Sets the value for the <code>From</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling <code>header(<js>"From"</js>, 
value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder from(Object value) {
-               return header("From", value);
-       }
-
-       /**
-        * Sets the value for the <code>Host</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling <code>header(<js>"Host"</js>, 
value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder host(Object value) {
-               return header("Host", value);
-       }
-
-       /**
-        * Sets the value for the <code>If-Match</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling <code>header(<js>"If-Match"</js>, 
value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder ifMatch(Object value) {
-               return header("If-Match", value);
-       }
-
-       /**
-        * Sets the value for the <code>If-Modified-Since</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling 
<code>header(<js>"If-Modified-Since"</js>, value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder ifModifiedSince(Object value) {
-               return header("If-Modified-Since", value);
-       }
-
-       /**
-        * Sets the value for the <code>If-None-Match</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling 
<code>header(<js>"If-None-Match"</js>, value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder ifNoneMatch(Object value) {
-               return header("If-None-Match", value);
-       }
-
-       /**
-        * Sets the value for the <code>If-Range</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling <code>header(<js>"If-Range"</js>, 
value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder ifRange(Object value) {
-               return header("If-Range", value);
-       }
-
-       /**
-        * Sets the value for the <code>If-Unmodified-Since</code> request 
header.
-        *
-        * <p>
-        * This is a shortcut for calling 
<code>header(<js>"If-Unmodified-Since"</js>, value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder ifUnmodifiedSince(Object value) {
-               return header("If-Unmodified-Since", value);
-       }
-
-       /**
-        * Sets the value for the <code>Max-Forwards</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling <code>header(<js>"Max-Forwards"</js>, 
value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder maxForwards(Object value) {
-               return header("If-Unmodified-Since", value);
-       }
-
-       /**
-        * Sets the value for the <code>Origin</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling <code>header(<js>"Origin"</js>, 
value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder origin(Object value) {
-               return header("If-Unmodified-Since", value);
-       }
-
-       /**
-        * Sets the value for the <code>Pragma</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling <code>header(<js>"Pragma"</js>, 
value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder pragma(Object value) {
-               return header("Pragma", value);
-       }
-
-       /**
-        * Sets the value for the <code>Proxy-Authorization</code> request 
header.
-        *
-        * <p>
-        * This is a shortcut for calling 
<code>header(<js>"Proxy-Authorization"</js>, value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder proxyAuthorization(Object value) {
-               return header("Proxy-Authorization", value);
-       }
-
-       /**
-        * Sets the value for the <code>Range</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling <code>header(<js>"Range"</js>, 
value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder range(Object value) {
-               return header("Range", value);
-       }
-
-       /**
-        * Sets the value for the <code>Referer</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling <code>header(<js>"Referer"</js>, 
value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder referer(Object value) {
-               return header("Referer", value);
-       }
-
-       /**
-        * Sets the value for the <code>TE</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling <code>header(<js>"TE"</js>, 
value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder te(Object value) {
-               return header("TE", value);
-       }
-
-       /**
-        * Sets the value for the <code>User-Agent</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling <code>header(<js>"User-Agent"</js>, 
value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder userAgent(Object value) {
-               return header("User-Agent", value);
-       }
-
-       /**
-        * Sets the value for the <code>Upgrade</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling <code>header(<js>"Upgrade"</js>, 
value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder upgrade(Object value) {
-               return header("Upgrade", value);
-       }
-
-       /**
-        * Sets the value for the <code>Via</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling <code>header(<js>"Via"</js>, 
value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder via(Object value) {
-               return header("Via", value);
-       }
-
-       /**
-        * Sets the value for the <code>Warning</code> request header.
-        *
-        * <p>
-        * This is a shortcut for calling <code>header(<js>"Warning"</js>, 
value);</code>
-        *
-        * @param value The new header value.
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder warning(Object value) {
-               return header("Warning", value);
-       }
-
-
-       
//--------------------------------------------------------------------------------
-       // CoreObject properties
-       
//--------------------------------------------------------------------------------
-
-       /**
-        * Sets the {@link SerializerContext#SERIALIZER_maxDepth} property on 
all serializers in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see SerializerContext#SERIALIZER_maxDepth
-        */
-       public RestClientBuilder maxDepth(int value) {
-               return property(SERIALIZER_maxDepth, value);
-       }
-
-       /**
-        * Sets the {@link SerializerContext#SERIALIZER_initialDepth} property 
on all serializers in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see SerializerContext#SERIALIZER_initialDepth
-        */
-       public RestClientBuilder initialDepth(int value) {
-               return property(SERIALIZER_initialDepth, value);
-       }
-
-       /**
-        * Sets the {@link SerializerContext#SERIALIZER_detectRecursions} 
property on all serializers in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see SerializerContext#SERIALIZER_detectRecursions
-        */
-       public RestClientBuilder detectRecursions(boolean value) {
-               return property(SERIALIZER_detectRecursions, value);
-       }
-
-       /**
-        * Sets the {@link SerializerContext#SERIALIZER_ignoreRecursions} 
property on all serializers in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see SerializerContext#SERIALIZER_ignoreRecursions
-        */
-       public RestClientBuilder ignoreRecursions(boolean value) {
-               return property(SERIALIZER_ignoreRecursions, value);
-       }
-
-       /**
-        * Sets the {@link SerializerContext#SERIALIZER_useWhitespace} property 
on all serializers in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see SerializerContext#SERIALIZER_useWhitespace
-        */
-       public RestClientBuilder useWhitespace(boolean value) {
-               return property(SERIALIZER_useWhitespace, value);
-       }
-
-       /**
-        * Sets the {@link SerializerContext#SERIALIZER_maxIndent} property on 
all serializers in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see SerializerContext#SERIALIZER_maxIndent
-        */
-       public RestClientBuilder maxIndent(boolean value) {
-               return property(SERIALIZER_maxIndent, value);
-       }
-
-       /**
-        * Sets the {@link SerializerContext#SERIALIZER_addBeanTypeProperties} 
property on all serializers in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see SerializerContext#SERIALIZER_addBeanTypeProperties
-        */
-       public RestClientBuilder addBeanTypeProperties(boolean value) {
-               return property(SERIALIZER_addBeanTypeProperties, value);
-       }
-
-       /**
-        * Sets the {@link SerializerContext#SERIALIZER_quoteChar} property on 
all serializers in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see SerializerContext#SERIALIZER_quoteChar
-        */
-       public RestClientBuilder quoteChar(char value) {
-               return property(SERIALIZER_quoteChar, value);
-       }
-
-       /**
-        * Sets the {@link SerializerContext#SERIALIZER_trimNullProperties} 
property on all serializers in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see SerializerContext#SERIALIZER_trimNullProperties
-        */
-       public RestClientBuilder trimNullProperties(boolean value) {
-               return property(SERIALIZER_trimNullProperties, value);
-       }
-
-       /**
-        * Sets the {@link SerializerContext#SERIALIZER_trimEmptyCollections} 
property on all serializers in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see SerializerContext#SERIALIZER_trimEmptyCollections
-        */
-       public RestClientBuilder trimEmptyCollections(boolean value) {
-               return property(SERIALIZER_trimEmptyCollections, value);
-       }
-
-       /**
-        * Sets the {@link SerializerContext#SERIALIZER_trimEmptyMaps} property 
on all serializers in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see SerializerContext#SERIALIZER_trimEmptyMaps
-        */
-       public RestClientBuilder trimEmptyMaps(boolean value) {
-               return property(SERIALIZER_trimEmptyMaps, value);
-       }
-
-       /**
-        * Sets the {@link SerializerContext#SERIALIZER_trimStrings} property 
on all serializers in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see SerializerContext#SERIALIZER_trimStrings
-        */
-       public RestClientBuilder trimStrings(boolean value) {
-               return property(SERIALIZER_trimStrings, value);
-       }
-
-       /**
-        * Sets the {@link SerializerContext#SERIALIZER_uriContext} property on 
all serializers in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see SerializerContext#SERIALIZER_uriContext
-        */
-       public RestClientBuilder uriContext(UriContext value) {
-               return property(SERIALIZER_uriContext, value);
-       }
-
-       /**
-        * Sets the {@link SerializerContext#SERIALIZER_uriResolution} property 
on all serializers in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see SerializerContext#SERIALIZER_uriResolution
-        */
-       public RestClientBuilder uriResolution(UriResolution value) {
-               return property(SERIALIZER_uriResolution, value);
-       }
-
-       /**
-        * Sets the {@link SerializerContext#SERIALIZER_uriRelativity} property 
on all serializers in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see SerializerContext#SERIALIZER_uriRelativity
-        */
-       public RestClientBuilder uriRelativity(UriRelativity value) {
-               return property(SERIALIZER_uriRelativity, value);
-       }
-
-       /**
-        * Sets the {@link SerializerContext#SERIALIZER_sortCollections} 
property on all serializers in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see SerializerContext#SERIALIZER_sortCollections
-        */
-       public RestClientBuilder sortCollections(boolean value) {
-               return property(SERIALIZER_sortCollections, value);
-       }
-
-       /**
-        * Sets the {@link SerializerContext#SERIALIZER_sortMaps} property on 
all serializers in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see SerializerContext#SERIALIZER_sortMaps
-        */
-       public RestClientBuilder sortMaps(boolean value) {
-               return property(SERIALIZER_sortMaps, value);
-       }
-
-       /**
-        * Sets the {@link SerializerContext#SERIALIZER_abridged} property on 
all serializers in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see SerializerContext#SERIALIZER_abridged
-        */
-       public RestClientBuilder abridged(boolean value) {
-               return property(SERIALIZER_abridged, value);
-       }
-
-       /**
-        * Sets the {@link SerializerContext#SERIALIZER_listener} and {@link 
ParserContext#PARSER_listener} property on all
-        *      serializers and parsers in this group.
-        *
-        * @param sl The new serializer listener.
-        * @param pl The new parser listener.
-        * @return This object (for method chaining).
-        * @see SerializerContext#SERIALIZER_abridged
-        */
-       public RestClientBuilder listeners(Class<? extends SerializerListener> 
sl, Class<? extends ParserListener> pl) {
-               property(SERIALIZER_listener, sl);
-               property(PARSER_listener, pl);
-               return this;
-       }
-
-       /**
-        * Sets the {@link ParserContext#PARSER_trimStrings} property on all 
parsers in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see ParserContext#PARSER_trimStrings
-        */
-       public RestClientBuilder trimStringsP(boolean value) {
-               return property(PARSER_trimStrings, value);
-       }
-
-       /**
-        * Sets the {@link ParserContext#PARSER_strict} property on all parsers 
in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see ParserContext#PARSER_strict
-        */
-       public RestClientBuilder strict(boolean value) {
-               return property(PARSER_strict, value);
-       }
-
-       /**
-        * Sets the {@link ParserContext#PARSER_inputStreamCharset} property on 
all parsers in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see ParserContext#PARSER_inputStreamCharset
-        */
-       public RestClientBuilder inputStreamCharset(String value) {
-               return property(PARSER_inputStreamCharset, value);
-       }
-
-       /**
-        * Sets the {@link ParserContext#PARSER_fileCharset} property on all 
parsers in this group.
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see ParserContext#PARSER_fileCharset
-        */
-       public RestClientBuilder fileCharset(String value) {
-               return property(PARSER_fileCharset, value);
-       }
-
-       /**
-        * When called, <code>No-Trace: true</code> is added to requests.
-        *
-        * <p>
-        * This gives the opportunity for the servlet to not log errors on 
invalid requests.
-        * This is useful for testing purposes when you don't want your log 
file to show lots of errors that are simply the
-        * results of testing.
-        *
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder noTrace() {
-               return header("No-Trace", true);
-       }
-
-       /**
-        * Sets the {@link UonSerializerContext#UON_paramFormat} property on 
the URL-encoding serializers in this group.
-        *
-        * <p>
-        * This overrides the behavior of the URL-encoding serializer to quote 
and escape characters in query names and
-        * values that may be confused for UON notation (e.g. 
<js>"'(foo=123)'"</js>, <js>"'@(1,2,3)'"</js>).
-        *
-        * @param value The new value for this property.
-        * @return This object (for method chaining).
-        * @see UonSerializerContext#UON_paramFormat
-        */
-       public RestClientBuilder paramFormat(String value) {
-               super.property(UonSerializerContext.UON_paramFormat, value);
-               return this;
-       }
-
-       /**
-        * Shortcut for calling <code>paramFormat(<js>"PLAINTEXT"</js>)</code>.
-        *
-        * <p>
-        * The default behavior is to serialize part values (query parameters, 
form data, headers, path variables) in UON
-        * notation.
-        * Calling this method forces plain-text to be used instead.
-        *
-        * <p>
-        * Specifically, UON notation has the following effects:
-        * <ul>
-        *      <li>Boolean strings (<js>"true"</js>/<js>"false"</js>) and 
numeric values (<js>"123"</js>) will be
-        *                      quoted (<js>"'true'"</js>, <js>"'false'"</js>, 
<js>"'123'"</js>.
-        *              <br>This allows them to be differentiated from actual 
boolean and numeric values.
-        *      <li>String such as <js>"(foo='bar')"</js> that mimic UON 
structures will be quoted and escaped to
-        *              <js>"'(foo=bar~'baz~')'"</js>.
-        * </ul>
-        * <p>
-        * The down-side to using plain text part serialization is that you 
cannot serialize arbitrary POJOs.
-        *
-        * @return This object (for method chaining).
-        */
-       public RestClientBuilder plainTextParts() {
-               super.property(UonSerializerContext.UON_paramFormat, 
"PLAINTEXT");
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder beansRequireDefaultConstructor(boolean value) {
-               super.beansRequireDefaultConstructor(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder beansRequireSerializable(boolean value) {
-               super.beansRequireSerializable(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder beansRequireSettersForGetters(boolean value) {
-               super.beansRequireSettersForGetters(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder beansRequireSomeProperties(boolean value) {
-               super.beansRequireSomeProperties(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder beanMapPutReturnsOldValue(boolean value) {
-               super.beanMapPutReturnsOldValue(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder beanConstructorVisibility(Visibility value) {
-               super.beanConstructorVisibility(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder beanClassVisibility(Visibility value) {
-               super.beanClassVisibility(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder beanFieldVisibility(Visibility value) {
-               super.beanFieldVisibility(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder methodVisibility(Visibility value) {
-               super.methodVisibility(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder useJavaBeanIntrospector(boolean value) {
-               super.useJavaBeanIntrospector(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder useInterfaceProxies(boolean value) {
-               super.useInterfaceProxies(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder ignoreUnknownBeanProperties(boolean value) {
-               super.ignoreUnknownBeanProperties(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder ignoreUnknownNullBeanProperties(boolean value) 
{
-               super.ignoreUnknownNullBeanProperties(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder ignorePropertiesWithoutSetters(boolean value) {
-               super.ignorePropertiesWithoutSetters(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder ignoreInvocationExceptionsOnGetters(boolean 
value) {
-               super.ignoreInvocationExceptionsOnGetters(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder ignoreInvocationExceptionsOnSetters(boolean 
value) {
-               super.ignoreInvocationExceptionsOnSetters(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder sortProperties(boolean value) {
-               super.sortProperties(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder notBeanPackages(String...values) {
-               super.notBeanPackages(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder notBeanPackages(Collection<String> values) {
-               super.notBeanPackages(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder setNotBeanPackages(String...values) {
-               super.setNotBeanPackages(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder setNotBeanPackages(Collection<String> values) {
-               super.setNotBeanPackages(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder removeNotBeanPackages(String...values) {
-               super.removeNotBeanPackages(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder removeNotBeanPackages(Collection<String> 
values) {
-               super.removeNotBeanPackages(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder notBeanClasses(Class<?>...values) {
-               super.notBeanClasses(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder notBeanClasses(Collection<Class<?>> values) {
-               super.notBeanClasses(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder setNotBeanClasses(Class<?>...values) {
-               super.setNotBeanClasses(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder setNotBeanClasses(Collection<Class<?>> values) 
{
-               super.setNotBeanClasses(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder removeNotBeanClasses(Class<?>...values) {
-               super.removeNotBeanClasses(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder removeNotBeanClasses(Collection<Class<?>> 
values) {
-               super.removeNotBeanClasses(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder beanFilters(Class<?>...values) {
-               super.beanFilters(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder beanFilters(Collection<Class<?>> values) {
-               super.beanFilters(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder setBeanFilters(Class<?>...values) {
-               super.setBeanFilters(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder setBeanFilters(Collection<Class<?>> values) {
-               super.setBeanFilters(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder removeBeanFilters(Class<?>...values) {
-               super.removeBeanFilters(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder removeBeanFilters(Collection<Class<?>> values) 
{
-               super.removeBeanFilters(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder pojoSwaps(Class<?>...values) {
-               super.pojoSwaps(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder pojoSwaps(Collection<Class<?>> values) {
-               super.pojoSwaps(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder setPojoSwaps(Class<?>...values) {
-               super.setPojoSwaps(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder setPojoSwaps(Collection<Class<?>> values) {
-               super.setPojoSwaps(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder removePojoSwaps(Class<?>...values) {
-               super.removePojoSwaps(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder removePojoSwaps(Collection<Class<?>> values) {
-               super.removePojoSwaps(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder implClasses(Map<Class<?>,Class<?>> values) {
-               super.implClasses(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public <T> RestClientBuilder implClass(Class<T> interfaceClass, Class<? 
extends T> implClass) {
-               super.implClass(interfaceClass, implClass);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder includeProperties(Map<String,String> values) {
-               super.includeProperties(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder includeProperties(String beanClassName, String 
properties) {
-               super.includeProperties(beanClassName, properties);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder includeProperties(Class<?> beanClass, String 
properties) {
-               super.includeProperties(beanClass, properties);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder excludeProperties(Map<String,String> values) {
-               super.excludeProperties(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder excludeProperties(String beanClassName, String 
properties) {
-               super.excludeProperties(beanClassName, properties);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder excludeProperties(Class<?> beanClass, String 
properties) {
-               super.excludeProperties(beanClass, properties);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder beanDictionary(Class<?>...values) {
-               super.beanDictionary(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder beanDictionary(Collection<Class<?>> values) {
-               super.beanDictionary(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder setBeanDictionary(Class<?>...values) {
-               super.setBeanDictionary(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder setBeanDictionary(Collection<Class<?>> values) 
{
-               super.setBeanDictionary(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder removeFromBeanDictionary(Class<?>...values) {
-               super.removeFromBeanDictionary(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder removeFromBeanDictionary(Collection<Class<?>> 
values) {
-               super.removeFromBeanDictionary(values);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder beanTypePropertyName(String value) {
-               super.beanTypePropertyName(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder defaultParser(Class<?> value) {
-               super.defaultParser(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder locale(Locale value) {
-               super.locale(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder timeZone(TimeZone value) {
-               super.timeZone(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder mediaType(MediaType value) {
-               super.mediaType(value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder debug() {
-               super.debug();
-               this.debug = true;
-               header("Debug", true);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder property(String name, Object value) {
-               super.property(name, value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder properties(Map<String,Object> properties) {
-               super.properties(properties);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder addToProperty(String name, Object value) {
-               super.addToProperty(name, value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder putToProperty(String name, Object key, Object 
value) {
-               super.putToProperty(name, key, value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder putToProperty(String name, Object value) {
-               super.putToProperty(name, value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder removeFromProperty(String name, Object value) {
-               super.removeFromProperty(name, value);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder classLoader(ClassLoader classLoader) {
-               super.classLoader(classLoader);
-               return this;
-       }
-
-       @Override /* CoreObjectBuilder */
-       public RestClientBuilder apply(PropertyStore copyFrom) {
-               super.apply(copyFrom);
-               return this;
-       }
-
-
-       
//------------------------------------------------------------------------------------------------
-       // Passthrough methods for HttpClientBuilder.
-       
//------------------------------------------------------------------------------------------------
-
-       /**
-        * @param redirectStrategy
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setRedirectStrategy(RedirectStrategy)
-        */
-       public RestClientBuilder setRedirectStrategy(RedirectStrategy 
redirectStrategy) {
-               httpClientBuilder.setRedirectStrategy(redirectStrategy);
-               return this;
-       }
-
-       /**
-        * @param cookieSpecRegistry
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setDefaultCookieSpecRegistry(Lookup)
-        */
-       public RestClientBuilder 
setDefaultCookieSpecRegistry(Lookup<CookieSpecProvider> cookieSpecRegistry) {
-               
httpClientBuilder.setDefaultCookieSpecRegistry(cookieSpecRegistry);
-               return this;
-       }
-
-       /**
-        * @param requestExec
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setRequestExecutor(HttpRequestExecutor)
-        */
-       public RestClientBuilder setRequestExecutor(HttpRequestExecutor 
requestExec) {
-               httpClientBuilder.setRequestExecutor(requestExec);
-               return this;
-       }
-
-       /**
-        * @param hostnameVerifier
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setSSLHostnameVerifier(HostnameVerifier)
-        */
-       public RestClientBuilder setSSLHostnameVerifier(HostnameVerifier 
hostnameVerifier) {
-               httpClientBuilder.setSSLHostnameVerifier(hostnameVerifier);
-               return this;
-       }
-
-       /**
-        * @param publicSuffixMatcher
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setPublicSuffixMatcher(PublicSuffixMatcher)
-        */
-       public RestClientBuilder setPublicSuffixMatcher(PublicSuffixMatcher 
publicSuffixMatcher) {
-               httpClientBuilder.setPublicSuffixMatcher(publicSuffixMatcher);
-               return this;
-       }
-
-       /**
-        * @param sslContext
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setSSLContext(SSLContext)
-        */
-       public RestClientBuilder setSSLContext(SSLContext sslContext) {
-               httpClientBuilder.setSSLContext(sslContext);
-               return this;
-       }
-
-       /**
-        * @param sslSocketFactory
-        * @return This object (for method chaining).
-        * @see 
HttpClientBuilder#setSSLSocketFactory(LayeredConnectionSocketFactory)
-        */
-       public RestClientBuilder 
setSSLSocketFactory(LayeredConnectionSocketFactory sslSocketFactory) {
-               httpClientBuilder.setSSLSocketFactory(sslSocketFactory);
-               return this;
-       }
-
-       /**
-        * @param maxConnTotal
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setMaxConnTotal(int)
-        */
-       public RestClientBuilder setMaxConnTotal(int maxConnTotal) {
-               httpClientBuilder.setMaxConnTotal(maxConnTotal);
-               return this;
-       }
-
-       /**
-        * @param maxConnPerRoute
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setMaxConnPerRoute(int)
-        */
-       public RestClientBuilder setMaxConnPerRoute(int maxConnPerRoute) {
-               httpClientBuilder.setMaxConnPerRoute(maxConnPerRoute);
-               return this;
-       }
-
-       /**
-        * @param config
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setDefaultSocketConfig(SocketConfig)
-        */
-       public RestClientBuilder setDefaultSocketConfig(SocketConfig config) {
-               httpClientBuilder.setDefaultSocketConfig(config);
-               return this;
-       }
-
-       /**
-        * @param config
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setDefaultConnectionConfig(ConnectionConfig)
-        */
-       public RestClientBuilder setDefaultConnectionConfig(ConnectionConfig 
config) {
-               httpClientBuilder.setDefaultConnectionConfig(config);
-               return this;
-       }
-
-       /**
-        * @param connTimeToLive
-        * @param connTimeToLiveTimeUnit
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setConnectionTimeToLive(long,TimeUnit)
-        */
-       public RestClientBuilder setConnectionTimeToLive(long connTimeToLive, 
TimeUnit connTimeToLiveTimeUnit) {
-               httpClientBuilder.setConnectionTimeToLive(connTimeToLive, 
connTimeToLiveTimeUnit);
-               return this;
-       }
-
-       /**
-        * @param connManager
-        * @return This object (for method chaining).
-        * @see 
HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)
-        */
-       public RestClientBuilder 
setConnectionManager(HttpClientConnectionManager connManager) {
-               this.httpClientConnectionManager = connManager;
-               httpClientBuilder.setConnectionManager(connManager);
-               return this;
-       }
-
-       /**
-        * @param shared
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setConnectionManagerShared(boolean)
-        */
-       public RestClientBuilder setConnectionManagerShared(boolean shared) {
-               httpClientBuilder.setConnectionManagerShared(shared);
-               return this;
-       }
-
-       /**
-        * @param reuseStrategy
-        * @return This object (for method chaining).
-        * @see 
HttpClientBuilder#setConnectionReuseStrategy(ConnectionReuseStrategy)
-        */
-       public RestClientBuilder 
setConnectionReuseStrategy(ConnectionReuseStrategy reuseStrategy) {
-               httpClientBuilder.setConnectionReuseStrategy(reuseStrategy);
-               return this;
-       }
-
-       /**
-        * @param keepAliveStrategy
-        * @return This object (for method chaining).
-        * @see 
HttpClientBuilder#setKeepAliveStrategy(ConnectionKeepAliveStrategy)
-        */
-       public RestClientBuilder 
setKeepAliveStrategy(ConnectionKeepAliveStrategy keepAliveStrategy) {
-               httpClientBuilder.setKeepAliveStrategy(keepAliveStrategy);
-               return this;
-       }
-
-       /**
-        * @param targetAuthStrategy
-        * @return This object (for method chaining).
-        * @see 
HttpClientBuilder#setTargetAuthenticationStrategy(AuthenticationStrategy)
-        */
-       public RestClientBuilder 
setTargetAuthenticationStrategy(AuthenticationStrategy targetAuthStrategy) {
-               
httpClientBuilder.setTargetAuthenticationStrategy(targetAuthStrategy);
-               return this;
-       }
-
-       /**
-        * @param proxyAuthStrategy
-        * @return This object (for method chaining).
-        * @see 
HttpClientBuilder#setProxyAuthenticationStrategy(AuthenticationStrategy)
-        */
-       public RestClientBuilder 
setProxyAuthenticationStrategy(AuthenticationStrategy proxyAuthStrategy) {
-               
httpClientBuilder.setProxyAuthenticationStrategy(proxyAuthStrategy);
-               return this;
-       }
-
-       /**
-        * @param userTokenHandler
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setUserTokenHandler(UserTokenHandler)
-        */
-       public RestClientBuilder setUserTokenHandler(UserTokenHandler 
userTokenHandler) {
-               httpClientBuilder.setUserTokenHandler(userTokenHandler);
-               return this;
-       }
-
-       /**
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#disableConnectionState()
-        */
-       public RestClientBuilder disableConnectionState() {
-               httpClientBuilder.disableConnectionState();
-               return this;
-       }
-
-       /**
-        * @param schemePortResolver
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setSchemePortResolver(SchemePortResolver)
-        */
-       public RestClientBuilder setSchemePortResolver(SchemePortResolver 
schemePortResolver) {
-               httpClientBuilder.setSchemePortResolver(schemePortResolver);
-               return this;
-       }
-
-       /**
-        * @param userAgent
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setUserAgent(String)
-        */
-       public RestClientBuilder setUserAgent(String userAgent) {
-               httpClientBuilder.setUserAgent(userAgent);
-               return this;
-       }
-
-       /**
-        * @param defaultHeaders
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setDefaultHeaders(Collection)
-        */
-       public RestClientBuilder setDefaultHeaders(Collection<? extends Header> 
defaultHeaders) {
-               httpClientBuilder.setDefaultHeaders(defaultHeaders);
-               return this;
-       }
-
-       /**
-        * @param itcp
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#addInterceptorFirst(HttpResponseInterceptor)
-        */
-       public RestClientBuilder addInterceptorFirst(HttpResponseInterceptor 
itcp) {
-               httpClientBuilder.addInterceptorFirst(itcp);
-               return this;
-       }
-
-       /**
-        * @param itcp
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#addInterceptorLast(HttpResponseInterceptor)
-        */
-       public RestClientBuilder addInterceptorLast(HttpResponseInterceptor 
itcp) {
-               httpClientBuilder.addInterceptorLast(itcp);
-               return this;
-       }
-
-       /**
-        * @param itcp
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#addInterceptorFirst(HttpRequestInterceptor)
-        */
-       public RestClientBuilder addInterceptorFirst(HttpRequestInterceptor 
itcp) {
-               httpClientBuilder.addInterceptorFirst(itcp);
-               return this;
-       }
-
-       /**
-        * @param itcp
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#addInterceptorLast(HttpRequestInterceptor)
-        */
-       public RestClientBuilder addInterceptorLast(HttpRequestInterceptor 
itcp) {
-               httpClientBuilder.addInterceptorLast(itcp);
-               return this;
-       }
-
-       /**
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#disableCookieManagement()
-        */
-       public RestClientBuilder disableCookieManagement() {
-               httpClientBuilder.disableCookieManagement();
-               return this;
-       }
-
-       /**
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#disableContentCompression()
-        */
-       public RestClientBuilder disableContentCompression() {
-               httpClientBuilder.disableContentCompression();
-               return this;
-       }
-
-       /**
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#disableAuthCaching()
-        */
-       public RestClientBuilder disableAuthCaching() {
-               httpClientBuilder.disableAuthCaching();
-               return this;
-       }
-
-       /**
-        * @param httpprocessor
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setHttpProcessor(HttpProcessor)
-        */
-       public RestClientBuilder setHttpProcessor(HttpProcessor httpprocessor) {
-               httpClientBuilder.setHttpProcessor(httpprocessor);
-               return this;
-       }
-
-       /**
-        * @param retryHandler
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setRetryHandler(HttpRequestRetryHandler)
-        */
-       public RestClientBuilder setRetryHandler(HttpRequestRetryHandler 
retryHandler) {
-               httpClientBuilder.setRetryHandler(retryHandler);
-               return this;
-       }
-
-       /**
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#disableAutomaticRetries()
-        */
-       public RestClientBuilder disableAutomaticRetries() {
-               httpClientBuilder.disableAutomaticRetries();
-               return this;
-       }
-
-       /**
-        * @param proxy
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setProxy(HttpHost)
-        */
-       public RestClientBuilder setProxy(HttpHost proxy) {
-               httpClientBuilder.setProxy(proxy);
-               return this;
-       }
-
-       /**
-        * @param routePlanner
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setRoutePlanner(HttpRoutePlanner)
-        */
-       public RestClientBuilder setRoutePlanner(HttpRoutePlanner routePlanner) 
{
-               httpClientBuilder.setRoutePlanner(routePlanner);
-               return this;
-       }
-
-       /**
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#disableRedirectHandling()
-        */
-       public RestClientBuilder disableRedirectHandling() {
-               httpClientBuilder.disableRedirectHandling();
-               return this;
-       }
-
-       /**
-        * @param connectionBackoffStrategy
-        * @return This object (for method chaining).
-        * @see 
HttpClientBuilder#setConnectionBackoffStrategy(ConnectionBackoffStrategy)
-        */
-       public RestClientBuilder 
setConnectionBackoffStrategy(ConnectionBackoffStrategy 
connectionBackoffStrategy) {
-               
httpClientBuilder.setConnectionBackoffStrategy(connectionBackoffStrategy);
-               return this;
-       }
-
-       /**
-        * @param backoffManager
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setBackoffManager(BackoffManager)
-        */
-       public RestClientBuilder setBackoffManager(BackoffManager 
backoffManager) {
-               httpClientBuilder.setBackoffManager(backoffManager);
-               return this;
-       }
-
-       /**
-        * @param serviceUnavailStrategy
-        * @return This object (for method chaining).
-        * @see 
HttpClientBuilder#setServiceUnavailableRetryStrategy(ServiceUnavailableRetryStrategy)
-        */
-       public RestClientBuilder 
setServiceUnavailableRetryStrategy(ServiceUnavailableRetryStrategy 
serviceUnavailStrategy) {
-               
httpClientBuilder.setServiceUnavailableRetryStrategy(serviceUnavailStrategy);
-               return this;
-       }
-
-       /**
-        * @param cookieStore
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setDefaultCookieStore(CookieStore)
-        */
-       public RestClientBuilder setDefaultCookieStore(CookieStore cookieStore) 
{
-               httpClientBuilder.setDefaultCookieStore(cookieStore);
-               return this;
-       }
-
-       /**
-        * @param credentialsProvider
-        * @return This object (for method chaining).
-        * @see 
HttpClientBuilder#setDefaultCredentialsProvider(CredentialsProvider)
-        */
-       public RestClientBuilder 
setDefaultCredentialsProvider(CredentialsProvider credentialsProvider) {
-               
httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
-               return this;
-       }
-
-       /**
-        * @param authSchemeRegistry
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setDefaultAuthSchemeRegistry(Lookup)
-        */
-       public RestClientBuilder 
setDefaultAuthSchemeRegistry(Lookup<AuthSchemeProvider> authSchemeRegistry) {
-               
httpClientBuilder.setDefaultAuthSchemeRegistry(authSchemeRegistry);
-               return this;
-       }
-
-       /**
-        * @param contentDecoderMap
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setContentDecoderRegistry(Map)
-        */
-       public RestClientBuilder 
setContentDecoderRegistry(Map<String,InputStreamFactory> contentDecoderMap) {
-               httpClientBuilder.setContentDecoderRegistry(contentDecoderMap);
-               return this;
-       }
-
-       /**
-        * @param config
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#setDefaultRequestConfig(RequestConfig)
-        */
-       public RestClientBuilder setDefaultRequestConfig(RequestConfig config) {
-               httpClientBuilder.setDefaultRequestConfig(config);
-               return this;
-       }
-
-       /**
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#useSystemProperties()
-        */
-       public RestClientBuilder useSystemProperties() {
-               httpClientBuilder.useSystemProperties();
-               return this;
-       }
-
-       /**
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#evictExpiredConnections()
-        */
-       public RestClientBuilder evictExpiredConnections() {
-               httpClientBuilder.evictExpiredConnections();
-               return this;
-       }
-
-       /**
-        * @param maxIdleTime
-        * @param maxIdleTimeUnit
-        * @return This object (for method chaining).
-        * @see HttpClientBuilder#evictIdleConnections(long,TimeUnit)
-        */
-       public RestClientBuilder evictIdleConnections(long maxIdleTime, 
TimeUnit maxIdleTimeUnit) {
-               httpClientBuilder.evictIdleConnections(maxIdleTime, 
maxIdleTimeUnit);
-               return this;
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ab15d45b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequestEntity.java
----------------------------------------------------------------------
diff --git 
a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequestEntity.java
 
b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequestEntity.java
deleted file mode 100644
index c37bb84..0000000
--- 
a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequestEntity.java
+++ /dev/null
@@ -1,93 +0,0 @@
-// 
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
-// * with the License.  You may obtain a copy of the License at                
                                              *
-// *                                                                           
                                              *
-// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
-// *                                                                           
                                              *
-// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-// * specific language governing permissions and limitations under the 
License.                                              *
-// 
***************************************************************************************************************************
-package org.apache.juneau.rest.client;
-
-import static org.apache.juneau.internal.IOUtils.*;
-
-import java.io.*;
-
-import org.apache.http.entity.*;
-import org.apache.http.message.*;
-import org.apache.juneau.serializer.*;
-import org.apache.juneau.utils.*;
-
-/**
- * HttpEntity for serializing POJOs as the body of HTTP requests.
- */
-public final class RestRequestEntity extends BasicHttpEntity {
-       final Object output;
-       final Serializer serializer;
-       byte[] outputBytes;
-
-       /**
-        * Constructor.
-        *
-        * @param input The POJO to serialize.  Can also be a {@link Reader} or 
{@link InputStream}.
-        * @param serializer The serializer to use to serialize this response.
-        */
-       public RestRequestEntity(Object input, Serializer serializer) {
-               this.output = input;
-               this.serializer = serializer;
-               if (serializer != null && serializer.getResponseContentType() 
!= null)
-                       setContentType(new BasicHeader("Content-Type", 
serializer.getResponseContentType().toString()));
-       }
-
-       @Override /* BasicHttpEntity */
-       public void writeTo(OutputStream os) throws IOException {
-               if (output instanceof InputStream) {
-                       IOPipe.create(output, os).closeOut().run();
-               } else if (output instanceof Reader) {
-                       IOPipe.create(output, new OutputStreamWriter(os, 
UTF8)).closeOut().run();
-               } else {
-                       try {
-                               if (serializer == null) {
-                                       // If no serializer specified, just 
close the stream.
-                                       os.close();
-                               } else {
-                                       SerializerSession session = 
serializer.createSession();
-                                       if (session.isWriterSerializer()) {
-                                               Writer w = new 
OutputStreamWriter(os, UTF8);
-                                               session.serialize(w, output);
-                                               w.flush();
-                                               w.close();
-                                       } else {
-                                               session.serialize(os, output);
-                                               os.flush();
-                                               os.close();
-                                       }
-                               }
-                       } catch (SerializeException e) {
-                               throw new 
org.apache.juneau.rest.client.RestCallException(e);
-                       }
-               }
-       }
-
-       @Override /* BasicHttpEntity */
-       public boolean isRepeatable() {
-               return true;
-       }
-
-       @Override /* BasicHttpEntity */
-       public InputStream getContent() {
-               if (outputBytes == null) {
-                       ByteArrayOutputStream baos = new 
ByteArrayOutputStream();
-                       try {
-                               writeTo(baos);
-                               outputBytes = baos.toByteArray();
-                       } catch (IOException e) {
-                               throw new RuntimeException(e);
-                       }
-               }
-               return new ByteArrayInputStream(outputBytes);
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ab15d45b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RetryOn.java
----------------------------------------------------------------------
diff --git 
a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RetryOn.java 
b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RetryOn.java
deleted file mode 100644
index 31e56af..0000000
--- 
a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RetryOn.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// 
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
-// * with the License.  You may obtain a copy of the License at                
                                              *
-// *                                                                           
                                              *
-// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
-// *                                                                           
                                              *
-// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-// * specific language governing permissions and limitations under the 
License.                                              *
-// 
***************************************************************************************************************************
-package org.apache.juneau.rest.client;
-
-import org.apache.http.*;
-
-/**
- * Used to determine whether a request should be retried based on the HTTP 
response code.
- *
- * <p>
- * Subclasses should override either the {@link #onCode(int)} method (if you 
only care about the HTTP status code)
- * or {@link #onResponse(HttpResponse)} (if you want full access to the HTTP 
response object.
- */
-public abstract class RetryOn {
-
-       /**
-        * Default RetryOn that returns <jk>true</jk> of any HTTP response 
&gt;= 400 is received.
-        */
-       public static final RetryOn DEFAULT = new RetryOn() {
-               @Override /* RetryOn */
-               public boolean onCode(int httpResponseCode) {
-                       return httpResponseCode <= 0 || httpResponseCode >= 400;
-               }
-       };
-
-       /**
-        * Default RetryOn that returns <jk>true</jk> if the HTTP connection 
could not be made.
-        */
-       public static final RetryOn CONNECTION_LOST = new RetryOn() {
-               @Override /* RetryOn */
-               public boolean onCode(int httpResponseCode) {
-                       return httpResponseCode <= 0;
-               }
-       };
-
-       /**
-        * Subclasses should override this method to determine whether the HTTP 
response is retryable.
-        *
-        * @param response The HTTP response object.  May be <jk>null</jk> if a 
connection could not be made.
-        * @return <jk>true</jk> if the specified response code is retryable.
-        */
-       protected boolean onResponse(HttpResponse response) {
-               return onCode(response == null || response.getStatusLine() == 
null ? -1 : response.getStatusLine().getStatusCode());
-       }
-
-       /**
-        * Subclasses should override this method to determine whether the HTTP 
response is retryable.
-        *
-        * @param httpResponseCode The HTTP response code.  <code>-1</code> if 
a connection could not be made.
-        * @return <jk>true</jk> if the specified response code is retryable.
-        */
-       protected boolean onCode(int httpResponseCode) {
-               return false;
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ab15d45b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/SSLOpts.java
----------------------------------------------------------------------
diff --git 
a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/SSLOpts.java 
b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/SSLOpts.java
deleted file mode 100644
index 0dc9676..0000000
--- 
a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/SSLOpts.java
+++ /dev/null
@@ -1,188 +0,0 @@
-// 
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
-// * with the License.  You may obtain a copy of the License at                
                                              *
-// *                                                                           
                                              *
-// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
-// *                                                                           
                                              *
-// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-// * specific language governing permissions and limitations under the 
License.                                              *
-// 
***************************************************************************************************************************
-package org.apache.juneau.rest.client;
-
-import static org.apache.juneau.internal.StringUtils.*;
-
-/**
- * SSL configuration options that get passed to {@link 
RestClientBuilder#enableSSL(SSLOpts)}.
- */
-public class SSLOpts {
-
-       private String protocols = getDefaultProtocols();
-       private CertValidate certValidate = CertValidate.DEFAULT;
-       private HostVerify hostVerify = HostVerify.DEFAULT;
-
-       /**
-        * Reusable SSL options for lenient SSL (no cert validation or hostname 
verification).
-        */
-       public static final SSLOpts LAX = new SSLOpts(null, CertValidate.LAX, 
HostVerify.LAX);
-
-       /**
-        * Reusable SSL options for normal SSL (default cert validation and 
hostname verification).
-        */
-       public static final SSLOpts DEFAULT = new SSLOpts(null, 
CertValidate.DEFAULT, HostVerify.DEFAULT);
-
-       /**
-        * Constructor.
-        */
-       public SSLOpts() {}
-
-       /**
-        * Constructor.
-        *
-        * @param protocols
-        *      A comma-delimited list of supported SSL protocols.
-        *      If <jk>null</jk>, uses the value returned by {@link 
#getDefaultProtocols()}.
-        * @param certValidate Certificate validation setting.
-        * @param hostVerify Host verification setting.
-        */
-       public SSLOpts(String protocols, CertValidate certValidate, HostVerify 
hostVerify) {
-               if (protocols != null)
-                       this.protocols = protocols;
-               this.certValidate = certValidate;
-               this.hostVerify = hostVerify;
-       }
-
-       /**
-        * Returns the default list of SSL protocols to support when the 
<code>protocols</code> parameter on the constructor
-        * is <jk>null</jk>.
-        *
-        * <p>
-        * The default value is <jk>"SSL_TLS,TLS,SSL"</js> unless overridden by 
one of the following system properties:
-        * <ul>
-        *      <li><js>"transport.client.protocol"</js>
-        * </ul>
-        *
-        * <p>
-        * Subclasses can override this method to provide their own logic for 
determining default supported protocols.
-        *
-        * @return The comma-delimited list of supported protocols.
-        */
-       protected String getDefaultProtocols() {
-               String sp = System.getProperty("transport.client.protocol");
-               if (isEmpty(sp))
-                       sp = "SSL_TLS,TLS,SSL";
-               return sp;
-       }
-
-
-       
//--------------------------------------------------------------------------------
-       // Bean properties
-       
//--------------------------------------------------------------------------------
-
-       /**
-        * Bean property getter:  <property>protocols</property>.
-        *
-        * @return The value of the <property>protocols</property> property on 
this bean, or <jk>null</jk> if it is not set.
-        */
-       public String getProtocols() {
-               return protocols;
-       }
-
-       /**
-        * Bean property setter:  <property>protocols</property>.
-        *
-        * @param protocols The new value for the 
<property>properties</property> property on this bean.
-        * @return This object (for method chaining).
-        */
-       public SSLOpts setProtocols(String protocols) {
-               this.protocols = protocols;
-               return this;
-       }
-
-       /**
-        * Bean property getter:  <property>certValidate</property>.
-        *
-        * @return The value of the <property>certValidate</property> property 
on this bean, or <jk>null</jk> if it is not set.
-        */
-       public CertValidate getCertValidate() {
-               return certValidate;
-       }
-
-       /**
-        * Bean property setter:  <property>certValidate</property>.
-        *
-        * @param certValidate The new value for the 
<property>properties</property> property on this bean.
-        * @return This object (for method chaining).
-        */
-       public SSLOpts setCertValidate(CertValidate certValidate) {
-               this.certValidate = certValidate;
-               return this;
-       }
-
-       /**
-        * Bean property getter:  <property>hostVerify</property>.
-        *
-        * @return The value of the <property>hostVerify</property> property on 
this bean, or <jk>null</jk> if it is not set.
-        */
-       public HostVerify getHostVerify() {
-               return hostVerify;
-       }
-
-       /**
-        * Bean property setter:  <property>hostVerify</property>.
-        *
-        * @param hostVerify The new value for the 
<property>properties</property> property on this bean.
-        * @return This object (for method chaining).
-        */
-       public SSLOpts setHostVerify(HostVerify hostVerify) {
-               this.hostVerify = hostVerify;
-               return this;
-       }
-
-
-       
//--------------------------------------------------------------------------------
-       // Enums
-       
//--------------------------------------------------------------------------------
-
-       /**
-        * Certificate validation options.
-        *
-        * <p>
-        * Used as enum for {@link SSLOpts#getCertValidate()} property.
-        */
-       @SuppressWarnings("hiding")
-       public static enum CertValidate {
-
-               /**
-                * Verify that the certificate is valid, but allow for 
self-signed certificates.
-                */
-               LAX,
-
-               /**
-                * Do normal certificate chain validation.
-                */
-               DEFAULT
-       }
-
-       /**
-        * Certificate host verification options.
-        *
-        * <p>
-        * Used as enum for {@link SSLOpts#getHostVerify()} property.
-        */
-       @SuppressWarnings("hiding")
-       public enum HostVerify {
-
-               /**
-                * Don't verify the hostname in the certificate.
-                */
-               LAX,
-
-               /**
-                * Do normal hostname verification.
-                */
-               DEFAULT
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ab15d45b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/SerializedNameValuePair.java
----------------------------------------------------------------------
diff --git 
a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/SerializedNameValuePair.java
 
b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/SerializedNameValuePair.java
deleted file mode 100644
index d7c9c36..0000000
--- 
a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/SerializedNameValuePair.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// 
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
-// * with the License.  You may obtain a copy of the License at                
                                              *
-// *                                                                           
                                              *
-// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
-// *                                                                           
                                              *
-// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-// * specific language governing permissions and limitations under the 
License.                                              *
-// 
***************************************************************************************************************************
-package org.apache.juneau.rest.client;
-
-import org.apache.http.*;
-import org.apache.juneau.*;
-import org.apache.juneau.serializer.*;
-import org.apache.juneau.urlencoding.*;
-
-/**
- * Subclass of {@link NameValuePair} for serializing POJOs as URL-encoded form 
post entries using the
- * {@link UrlEncodingSerializer class}.
- *
- * <h5 class='section'>Example:</h5>
- * <p class='bcode'>
- *     NameValuePairs params = <jk>new</jk> NameValuePairs()
- *             .append(<jk>new</jk> SerializedNameValuePair(<js>"myPojo"</js>, 
pojo, UrlEncodingSerializer.<jsf>DEFAULT_SIMPLE</jsf>))
- *             .append(<jk>new</jk> 
BasicNameValuePair(<js>"someOtherParam"</js>, <js>"foobar"</js>));
- *     request.setEntity(<jk>new</jk> UrlEncodedFormEntity(params));
- * </p>
- */
-public final class SerializedNameValuePair implements NameValuePair {
-       private String name;
-       private Object value;
-       private PartSerializer serializer;
-
-       /**
-        * Constructor.
-        *
-        * @param name The parameter name.
-        * @param value The POJO to serialize to the parameter value.
-        * @param serializer The serializer to use to convert the value to a 
string.
-        */
-       public SerializedNameValuePair(String name, Object value, 
PartSerializer serializer) {
-               this.name = name;
-               this.value = value;
-               this.serializer = serializer;
-       }
-
-       @Override /* NameValuePair */
-       public String getName() {
-               return name;
-       }
-
-       @Override /* NameValuePair */
-       public String getValue() {
-               return serializer.serialize(PartType.FORM_DATA, value);
-       }
-}

Reply via email to