You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2012/12/05 11:34:48 UTC

svn commit: r1417343 [1/3] - in /httpcomponents/httpclient/trunk/httpclient-cache/src: main/java/org/apache/http/impl/client/cache/ test/java/org/apache/http/impl/client/cache/

Author: olegk
Date: Wed Dec  5 10:34:46 2012
New Revision: 1417343

URL: http://svn.apache.org/viewvc?rev=1417343&view=rev
Log:
Ported internal caching classes to the new execution chain API

Modified:
    httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/AsynchronousValidationRequest.java
    httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/AsynchronousValidator.java
    httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachingHttpClient.java
    httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ConditionalRequestBuilder.java
    httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/OptionsHttp11Response.java
    httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/RequestProtocolCompliance.java
    httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ResponseProtocolCompliance.java
    httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/AbstractProtocolTest.java
    httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidationRequest.java
    httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidator.java
    httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachingHttpClient.java
    httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestConditionalRequestBuilder.java
    httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestProtocolRecommendations.java
    httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestProtocolRequirements.java
    httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestRequestProtocolCompliance.java
    httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseProtocolCompliance.java

Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/AsynchronousValidationRequest.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/AsynchronousValidationRequest.java?rev=1417343&r1=1417342&r2=1417343&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/AsynchronousValidationRequest.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/AsynchronousValidationRequest.java Wed Dec  5 10:34:46 2012
@@ -30,9 +30,9 @@ import java.io.IOException;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.http.HttpHost;
-import org.apache.http.HttpRequest;
 import org.apache.http.ProtocolException;
 import org.apache.http.client.cache.HttpCacheEntry;
+import org.apache.http.client.methods.HttpRequestWrapper;
 import org.apache.http.protocol.HttpContext;
 
 /**
@@ -43,7 +43,7 @@ class AsynchronousValidationRequest impl
     private final AsynchronousValidator parent;
     private final CachingHttpClient cachingClient;
     private final HttpHost target;
-    private final HttpRequest request;
+    private final HttpRequestWrapper request;
     private final HttpContext context;
     private final HttpCacheEntry cacheEntry;
     private final String identifier;
@@ -63,7 +63,7 @@ class AsynchronousValidationRequest impl
      */
     AsynchronousValidationRequest(AsynchronousValidator parent,
             CachingHttpClient cachingClient, HttpHost target,
-            HttpRequest request, HttpContext context,
+            HttpRequestWrapper request, HttpContext context,
             HttpCacheEntry cacheEntry,
             String identifier) {
         this.parent = parent;

Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/AsynchronousValidator.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/AsynchronousValidator.java?rev=1417343&r1=1417342&r2=1417343&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/AsynchronousValidator.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/AsynchronousValidator.java Wed Dec  5 10:34:46 2012
@@ -38,8 +38,8 @@ import java.util.concurrent.TimeUnit;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.http.HttpHost;
-import org.apache.http.HttpRequest;
 import org.apache.http.client.cache.HttpCacheEntry;
+import org.apache.http.client.methods.HttpRequestWrapper;
 import org.apache.http.protocol.HttpContext;
 
 /**
@@ -101,7 +101,7 @@ class AsynchronousValidator {
      * @param entry
      */
     public synchronized void revalidateCacheEntry(HttpHost target,
-            HttpRequest request, HttpContext context, HttpCacheEntry entry) {
+            HttpRequestWrapper request, HttpContext context, HttpCacheEntry entry) {
         // getVariantURI will fall back on getURI if no variants exist
         String uri = cacheKeyGenerator.getVariantURI(target, request, entry);
 

Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachingHttpClient.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachingHttpClient.java?rev=1417343&r1=1417342&r2=1417343&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachingHttpClient.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachingHttpClient.java Wed Dec  5 10:34:46 2012
@@ -58,6 +58,7 @@ import org.apache.http.client.cache.Head
 import org.apache.http.client.cache.HttpCacheEntry;
 import org.apache.http.client.cache.HttpCacheStorage;
 import org.apache.http.client.cache.ResourceFactory;
+import org.apache.http.client.methods.HttpRequestWrapper;
 import org.apache.http.client.methods.HttpUriRequest;
 import org.apache.http.conn.ClientConnectionManager;
 import org.apache.http.impl.client.DefaultHttpClient;
@@ -403,14 +404,20 @@ public class CachingHttpClient implement
         return backend.getParams();
     }
 
-    public HttpResponse execute(HttpHost target, HttpRequest request, HttpContext context)
+    public HttpResponse execute(HttpHost target, HttpRequest originalRequest, HttpContext context)
             throws IOException {
 
+        HttpRequestWrapper request;
+        if (originalRequest instanceof HttpRequestWrapper) {
+            request = ((HttpRequestWrapper) originalRequest);
+        } else {
+            request = HttpRequestWrapper.wrap(originalRequest);
+        }
+        String via = generateViaHeader(originalRequest);
+
         // default response context
         setResponseStatus(context, CacheResponseStatus.CACHE_MISS);
 
-        String via = generateViaHeader(request);
-
         if (clientRequestsOurOptions(request)) {
             setResponseStatus(context, CacheResponseStatus.CACHE_MODULE_RESPONSE);
             return new OptionsHttp11Response();
@@ -420,7 +427,7 @@ public class CachingHttpClient implement
                 request, context);
         if (fatalErrorResponse != null) return fatalErrorResponse;
 
-        request = requestCompliance.makeRequestCompliant(request);
+        requestCompliance.makeRequestCompliant(request);
         request.addHeader("Via",via);
 
         flushEntriesInvalidatedByRequest(target, request);
@@ -439,7 +446,7 @@ public class CachingHttpClient implement
         return handleCacheHit(target, request, context, entry);
     }
 
-    private HttpResponse handleCacheHit(HttpHost target, HttpRequest request,
+    private HttpResponse handleCacheHit(HttpHost target, HttpRequestWrapper request,
             HttpContext context, HttpCacheEntry entry)
             throws ClientProtocolException, IOException {
         recordCacheHit(target, request);
@@ -468,7 +475,7 @@ public class CachingHttpClient implement
     }
 
     private HttpResponse revalidateCacheEntry(HttpHost target,
-            HttpRequest request, HttpContext context, HttpCacheEntry entry,
+            HttpRequestWrapper request, HttpContext context, HttpCacheEntry entry,
             Date now) throws ClientProtocolException {
 
         try {
@@ -490,7 +497,7 @@ public class CachingHttpClient implement
         }
     }
 
-    private HttpResponse handleCacheMiss(HttpHost target, HttpRequest request,
+    private HttpResponse handleCacheMiss(HttpHost target, HttpRequestWrapper request,
             HttpContext context) throws IOException {
         recordCacheMiss(target, request);
 
@@ -508,7 +515,7 @@ public class CachingHttpClient implement
         return callBackend(target, request, context);
     }
 
-    private HttpCacheEntry satisfyFromCache(HttpHost target, HttpRequest request) {
+    private HttpCacheEntry satisfyFromCache(HttpHost target, HttpRequestWrapper request) {
         HttpCacheEntry entry = null;
         try {
             entry = responseCache.getCacheEntry(target, request);
@@ -518,7 +525,7 @@ public class CachingHttpClient implement
         return entry;
     }
 
-    private HttpResponse getFatallyNoncompliantResponse(HttpRequest request,
+    private HttpResponse getFatallyNoncompliantResponse(HttpRequestWrapper request,
             HttpContext context) {
         HttpResponse fatalErrorResponse = null;
         List<RequestProtocolError> fatalError = requestCompliance.requestIsFatallyNonCompliant(request);
@@ -531,7 +538,7 @@ public class CachingHttpClient implement
     }
 
     private Map<String, Variant> getExistingCacheVariants(HttpHost target,
-            HttpRequest request) {
+            HttpRequestWrapper request) {
         Map<String,Variant> variants = null;
         try {
             variants = responseCache.getVariantCacheEntriesWithEtags(target, request);
@@ -541,7 +548,7 @@ public class CachingHttpClient implement
         return variants;
     }
 
-    private void recordCacheMiss(HttpHost target, HttpRequest request) {
+    private void recordCacheMiss(HttpHost target, HttpRequestWrapper request) {
         cacheMisses.getAndIncrement();
         if (log.isTraceEnabled()) {
             RequestLine rl = request.getRequestLine();
@@ -549,7 +556,7 @@ public class CachingHttpClient implement
         }
     }
 
-    private void recordCacheHit(HttpHost target, HttpRequest request) {
+    private void recordCacheHit(HttpHost target, HttpRequestWrapper request) {
         cacheHits.getAndIncrement();
         if (log.isTraceEnabled()) {
             RequestLine rl = request.getRequestLine();
@@ -563,7 +570,7 @@ public class CachingHttpClient implement
     }
 
     private void flushEntriesInvalidatedByRequest(HttpHost target,
-            HttpRequest request) {
+            HttpRequestWrapper request) {
         try {
             responseCache.flushInvalidatedCacheEntriesFor(target, request);
         } catch (IOException ioe) {
@@ -571,7 +578,7 @@ public class CachingHttpClient implement
         }
     }
 
-    private HttpResponse generateCachedResponse(HttpRequest request,
+    private HttpResponse generateCachedResponse(HttpRequestWrapper request,
             HttpContext context, HttpCacheEntry entry, Date now) {
         final HttpResponse cachedResponse;
         if (request.containsHeader(HeaderConstants.IF_NONE_MATCH)
@@ -587,7 +594,7 @@ public class CachingHttpClient implement
         return cachedResponse;
     }
 
-    private HttpResponse handleRevalidationFailure(HttpRequest request,
+    private HttpResponse handleRevalidationFailure(HttpRequestWrapper request,
             HttpContext context, HttpCacheEntry entry, Date now) {
         if (staleResponseNotAllowed(request, entry, now)) {
             return generateGatewayTimeout(context);
@@ -610,14 +617,14 @@ public class CachingHttpClient implement
         return cachedResponse;
     }
 
-    private boolean staleResponseNotAllowed(HttpRequest request,
+    private boolean staleResponseNotAllowed(HttpRequestWrapper request,
             HttpCacheEntry entry, Date now) {
         return validityPolicy.mustRevalidate(entry)
             || (isSharedCache() && validityPolicy.proxyRevalidate(entry))
             || explicitFreshnessRequest(request, entry, now);
     }
 
-    private boolean mayCallBackend(HttpRequest request) {
+    private boolean mayCallBackend(HttpRequestWrapper request) {
         for (Header h: request.getHeaders(HeaderConstants.CACHE_CONTROL)) {
             for (HeaderElement elt : h.getElements()) {
                 if ("only-if-cached".equals(elt.getName())) {
@@ -629,7 +636,7 @@ public class CachingHttpClient implement
         return true;
     }
 
-    private boolean explicitFreshnessRequest(HttpRequest request, HttpCacheEntry entry, Date now) {
+    private boolean explicitFreshnessRequest(HttpRequestWrapper request, HttpCacheEntry entry, Date now) {
         for(Header h : request.getHeaders(HeaderConstants.CACHE_CONTROL)) {
             for(HeaderElement elt : h.getElements()) {
                 if (HeaderConstants.CACHE_CONTROL_MAX_STALE.equals(elt.getName())) {
@@ -718,7 +725,7 @@ public class CachingHttpClient implement
         return true;
     }
 
-    HttpResponse callBackend(HttpHost target, HttpRequest request, HttpContext context)
+    HttpResponse callBackend(HttpHost target, HttpRequestWrapper request, HttpContext context)
             throws IOException {
 
         Date requestDate = getCurrentDate();
@@ -751,9 +758,10 @@ public class CachingHttpClient implement
     }
 
     HttpResponse negotiateResponseFromVariants(HttpHost target,
-            HttpRequest request, HttpContext context,
+            HttpRequestWrapper request, HttpContext context,
             Map<String, Variant> variants) throws IOException {
-        HttpRequest conditionalRequest = conditionalRequestBuilder.buildConditionalRequestFromVariants(request, variants);
+        HttpRequestWrapper conditionalRequest = conditionalRequestBuilder
+            .buildConditionalRequestFromVariants(request, variants);
 
         Date requestDate = getCurrentDate();
         HttpResponse backendResponse = backend.execute(target, conditionalRequest, context);
@@ -803,15 +811,15 @@ public class CachingHttpClient implement
     }
 
     private HttpResponse retryRequestUnconditionally(HttpHost target,
-            HttpRequest request, HttpContext context,
+            HttpRequestWrapper request, HttpContext context,
             HttpCacheEntry matchedEntry) throws IOException {
-        HttpRequest unconditional = conditionalRequestBuilder
+        HttpRequestWrapper unconditional = conditionalRequestBuilder
             .buildUnconditionalRequest(request, matchedEntry);
         return callBackend(target, unconditional, context);
     }
 
     private HttpCacheEntry getUpdatedVariantEntry(HttpHost target,
-            HttpRequest conditionalRequest, Date requestDate,
+            HttpRequestWrapper conditionalRequest, Date requestDate,
             Date responseDate, HttpResponse backendResponse,
             Variant matchingVariant, HttpCacheEntry matchedEntry) {
         HttpCacheEntry responseEntry = matchedEntry;
@@ -824,7 +832,7 @@ public class CachingHttpClient implement
         return responseEntry;
     }
 
-    private void tryToUpdateVariantMap(HttpHost target, HttpRequest request,
+    private void tryToUpdateVariantMap(HttpHost target, HttpRequestWrapper request,
             Variant matchingVariant) {
         try {
             responseCache.reuseVariantEntryFor(target, request, matchingVariant);
@@ -833,7 +841,7 @@ public class CachingHttpClient implement
         }
     }
 
-    private boolean shouldSendNotModifiedResponse(HttpRequest request,
+    private boolean shouldSendNotModifiedResponse(HttpRequestWrapper request,
             HttpCacheEntry responseEntry) {
         return (suitabilityChecker.isConditional(request)
                 && suitabilityChecker.allConditionalsMatch(request, responseEntry, new Date()));
@@ -841,11 +849,11 @@ public class CachingHttpClient implement
 
     HttpResponse revalidateCacheEntry(
             HttpHost target,
-            HttpRequest request,
+            HttpRequestWrapper request,
             HttpContext context,
             HttpCacheEntry cacheEntry) throws IOException, ProtocolException {
 
-        HttpRequest conditionalRequest = conditionalRequestBuilder.buildConditionalRequest(request, cacheEntry);
+        HttpRequestWrapper conditionalRequest = conditionalRequestBuilder.buildConditionalRequest(request, cacheEntry);
 
         Date requestDate = getCurrentDate();
         HttpResponse backendResponse = backend.execute(target, conditionalRequest, context);
@@ -900,7 +908,7 @@ public class CachingHttpClient implement
 
     HttpResponse handleBackendResponse(
             HttpHost target,
-            HttpRequest request,
+            HttpRequestWrapper request,
             Date requestDate,
             Date responseDate,
             HttpResponse backendResponse) throws IOException {
@@ -929,7 +937,7 @@ public class CachingHttpClient implement
         return backendResponse;
     }
 
-    private boolean alreadyHaveNewerCacheEntry(HttpHost target, HttpRequest request,
+    private boolean alreadyHaveNewerCacheEntry(HttpHost target, HttpRequestWrapper request,
             HttpResponse backendResponse) {
         HttpCacheEntry existing = null;
         try {

Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ConditionalRequestBuilder.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ConditionalRequestBuilder.java?rev=1417343&r1=1417342&r2=1417343&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ConditionalRequestBuilder.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ConditionalRequestBuilder.java Wed Dec  5 10:34:46 2012
@@ -28,8 +28,6 @@ package org.apache.http.impl.client.cach
 
 import java.util.Map;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.http.Header;
 import org.apache.http.HeaderElement;
 import org.apache.http.HttpRequest;
@@ -37,7 +35,7 @@ import org.apache.http.ProtocolException
 import org.apache.http.annotation.Immutable;
 import org.apache.http.client.cache.HeaderConstants;
 import org.apache.http.client.cache.HttpCacheEntry;
-import org.apache.http.impl.client.RequestWrapper;
+import org.apache.http.client.methods.HttpRequestWrapper;
 
 /**
  * @since 4.1
@@ -45,8 +43,6 @@ import org.apache.http.impl.client.Reque
 @Immutable
 class ConditionalRequestBuilder {
 
-    private static final Log log = LogFactory.getLog(ConditionalRequestBuilder.class);
-
     /**
      * When a {@link HttpCacheEntry} is stale but 'might' be used as a response
      * to an {@link HttpRequest} we will attempt to revalidate the entry with
@@ -57,17 +53,17 @@ class ConditionalRequestBuilder {
      * @return the wrapped request
      * @throws ProtocolException when I am unable to build a new origin request.
      */
-    public HttpRequest buildConditionalRequest(HttpRequest request, HttpCacheEntry cacheEntry)
+    public HttpRequestWrapper buildConditionalRequest(HttpRequestWrapper request, HttpCacheEntry cacheEntry)
             throws ProtocolException {
-        RequestWrapper wrapperRequest = new RequestWrapper(request);
-        wrapperRequest.resetHeaders();
+        HttpRequestWrapper newRequest = HttpRequestWrapper.wrap(request.getOriginal());
+        newRequest.setHeaders(request.getAllHeaders());
         Header eTag = cacheEntry.getFirstHeader(HeaderConstants.ETAG);
         if (eTag != null) {
-            wrapperRequest.setHeader(HeaderConstants.IF_NONE_MATCH, eTag.getValue());
+            newRequest.setHeader(HeaderConstants.IF_NONE_MATCH, eTag.getValue());
         }
         Header lastModified = cacheEntry.getFirstHeader(HeaderConstants.LAST_MODIFIED);
         if (lastModified != null) {
-            wrapperRequest.setHeader(HeaderConstants.IF_MODIFIED_SINCE, lastModified.getValue());
+            newRequest.setHeader(HeaderConstants.IF_MODIFIED_SINCE, lastModified.getValue());
         }
         boolean mustRevalidate = false;
         for(Header h : cacheEntry.getHeaders(HeaderConstants.CACHE_CONTROL)) {
@@ -80,9 +76,9 @@ class ConditionalRequestBuilder {
             }
         }
         if (mustRevalidate) {
-            wrapperRequest.addHeader(HeaderConstants.CACHE_CONTROL, HeaderConstants.CACHE_CONTROL_MAX_AGE + "=0");
+            newRequest.addHeader(HeaderConstants.CACHE_CONTROL, HeaderConstants.CACHE_CONTROL_MAX_AGE + "=0");
         }
-        return wrapperRequest;
+        return newRequest;
 
     }
 
@@ -96,16 +92,10 @@ class ConditionalRequestBuilder {
      * @param variants
      * @return the wrapped request
      */
-    public HttpRequest buildConditionalRequestFromVariants(HttpRequest request,
+    public HttpRequestWrapper buildConditionalRequestFromVariants(HttpRequestWrapper request,
             Map<String, Variant> variants) {
-        RequestWrapper wrapperRequest;
-        try {
-            wrapperRequest = new RequestWrapper(request);
-        } catch (ProtocolException pe) {
-            log.warn("unable to build conditional request", pe);
-            return request;
-        }
-        wrapperRequest.resetHeaders();
+        HttpRequestWrapper newRequest = HttpRequestWrapper.wrap(request.getOriginal());
+        newRequest.setHeaders(request.getAllHeaders());
 
         // we do not support partial content so all etags are used
         StringBuilder etags = new StringBuilder();
@@ -118,8 +108,8 @@ class ConditionalRequestBuilder {
             etags.append(etag);
         }
 
-        wrapperRequest.setHeader(HeaderConstants.IF_NONE_MATCH, etags.toString());
-        return wrapperRequest;
+        newRequest.setHeader(HeaderConstants.IF_NONE_MATCH, etags.toString());
+        return newRequest;
     }
 
     /**
@@ -133,23 +123,17 @@ class ConditionalRequestBuilder {
      * @param entry existing cache entry we are trying to validate
      * @return an unconditional validation request
      */
-    public HttpRequest buildUnconditionalRequest(HttpRequest request, HttpCacheEntry entry) {
-        RequestWrapper wrapped;
-        try {
-            wrapped = new RequestWrapper(request);
-        } catch (ProtocolException e) {
-            log.warn("unable to build proper unconditional request", e);
-            return request;
-        }
-        wrapped.resetHeaders();
-        wrapped.addHeader(HeaderConstants.CACHE_CONTROL,HeaderConstants.CACHE_CONTROL_NO_CACHE);
-        wrapped.addHeader(HeaderConstants.PRAGMA,HeaderConstants.CACHE_CONTROL_NO_CACHE);
-        wrapped.removeHeaders(HeaderConstants.IF_RANGE);
-        wrapped.removeHeaders(HeaderConstants.IF_MATCH);
-        wrapped.removeHeaders(HeaderConstants.IF_NONE_MATCH);
-        wrapped.removeHeaders(HeaderConstants.IF_UNMODIFIED_SINCE);
-        wrapped.removeHeaders(HeaderConstants.IF_MODIFIED_SINCE);
-        return wrapped;
+    public HttpRequestWrapper buildUnconditionalRequest(HttpRequestWrapper request, HttpCacheEntry entry) {
+        HttpRequestWrapper newRequest = HttpRequestWrapper.wrap(request.getOriginal());
+        newRequest.setHeaders(request.getAllHeaders());
+        newRequest.addHeader(HeaderConstants.CACHE_CONTROL,HeaderConstants.CACHE_CONTROL_NO_CACHE);
+        newRequest.addHeader(HeaderConstants.PRAGMA,HeaderConstants.CACHE_CONTROL_NO_CACHE);
+        newRequest.removeHeaders(HeaderConstants.IF_RANGE);
+        newRequest.removeHeaders(HeaderConstants.IF_MATCH);
+        newRequest.removeHeaders(HeaderConstants.IF_NONE_MATCH);
+        newRequest.removeHeaders(HeaderConstants.IF_UNMODIFIED_SINCE);
+        newRequest.removeHeaders(HeaderConstants.IF_MODIFIED_SINCE);
+        return newRequest;
     }
 
 }

Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/OptionsHttp11Response.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/OptionsHttp11Response.java?rev=1417343&r1=1417342&r2=1417343&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/OptionsHttp11Response.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/OptionsHttp11Response.java Wed Dec  5 10:34:46 2012
@@ -45,6 +45,7 @@ import org.apache.http.params.HttpParams
 /**
  * @since 4.1
  */
+@SuppressWarnings("deprecation")
 @Immutable
 final class OptionsHttp11Response extends AbstractHttpMessage implements HttpResponse {
 

Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/RequestProtocolCompliance.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/RequestProtocolCompliance.java?rev=1417343&r1=1417342&r2=1417343&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/RequestProtocolCompliance.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/RequestProtocolCompliance.java Wed Dec  5 10:34:46 2012
@@ -37,14 +37,13 @@ import org.apache.http.HttpRequest;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
 import org.apache.http.HttpVersion;
-import org.apache.http.ProtocolException;
 import org.apache.http.ProtocolVersion;
 import org.apache.http.annotation.Immutable;
 import org.apache.http.client.ClientProtocolException;
 import org.apache.http.client.cache.HeaderConstants;
+import org.apache.http.client.methods.HttpRequestWrapper;
 import org.apache.http.entity.AbstractHttpEntity;
 import org.apache.http.entity.ContentType;
-import org.apache.http.impl.client.RequestWrapper;
 import org.apache.http.message.BasicHeader;
 import org.apache.http.message.BasicHttpResponse;
 import org.apache.http.message.BasicStatusLine;
@@ -95,7 +94,7 @@ class RequestProtocolCompliance {
      * @return the updated request
      * @throws ClientProtocolException when we have trouble making the request compliant
      */
-    public HttpRequest makeRequestCompliant(HttpRequest request)
+    public void makeRequestCompliant(HttpRequestWrapper request)
         throws ClientProtocolException {
 
         if (requestMustNotHaveEntity(request)) {
@@ -107,15 +106,10 @@ class RequestProtocolCompliance {
         decrementOPTIONSMaxForwardsIfGreaterThen0(request);
         stripOtherFreshnessDirectivesWithNoCache(request);
 
-        if (requestVersionIsTooLow(request)) {
-            return upgradeRequestTo(request, HttpVersion.HTTP_1_1);
+        if (requestVersionIsTooLow(request)
+                || requestMinorVersionIsTooHighMajorVersionsMatch(request)) {
+            request.setProtocolVersion(HttpVersion.HTTP_1_1);
         }
-
-        if (requestMinorVersionIsTooHighMajorVersionsMatch(request)) {
-            return downgradeRequestTo(request, HttpVersion.HTTP_1_1);
-        }
-
-        return request;
     }
 
     private void stripOtherFreshnessDirectivesWithNoCache(HttpRequest request) {
@@ -248,32 +242,6 @@ class RequestProtocolCompliance {
         }
     }
 
-    private HttpRequest upgradeRequestTo(HttpRequest request, ProtocolVersion version)
-            throws ClientProtocolException {
-        RequestWrapper newRequest;
-        try {
-            newRequest = new RequestWrapper(request);
-        } catch (ProtocolException pe) {
-            throw new ClientProtocolException(pe);
-        }
-        newRequest.setProtocolVersion(version);
-
-        return newRequest;
-    }
-
-    private HttpRequest downgradeRequestTo(HttpRequest request, ProtocolVersion version)
-            throws ClientProtocolException {
-        RequestWrapper newRequest;
-        try {
-            newRequest = new RequestWrapper(request);
-        } catch (ProtocolException pe) {
-            throw new ClientProtocolException(pe);
-        }
-        newRequest.setProtocolVersion(version);
-
-        return newRequest;
-    }
-
     protected boolean requestMinorVersionIsTooHighMajorVersionsMatch(HttpRequest request) {
         ProtocolVersion requestProtocol = request.getProtocolVersion();
         if (requestProtocol.getMajor() != HttpVersion.HTTP_1_1.getMajor()) {

Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ResponseProtocolCompliance.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ResponseProtocolCompliance.java?rev=1417343&r1=1417342&r2=1417343&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ResponseProtocolCompliance.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ResponseProtocolCompliance.java Wed Dec  5 10:34:46 2012
@@ -39,11 +39,10 @@ import org.apache.http.HttpRequest;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
 import org.apache.http.HttpVersion;
-import org.apache.http.ProtocolVersion;
 import org.apache.http.annotation.Immutable;
 import org.apache.http.client.ClientProtocolException;
 import org.apache.http.client.cache.HeaderConstants;
-import org.apache.http.impl.client.RequestWrapper;
+import org.apache.http.client.methods.HttpRequestWrapper;
 import org.apache.http.impl.cookie.DateParseException;
 import org.apache.http.impl.cookie.DateUtils;
 import org.apache.http.message.BasicHeader;
@@ -69,7 +68,7 @@ class ResponseProtocolCompliance {
      * @param response The {@link HttpResponse} from the origin server
      * @throws IOException Bad things happened
      */
-    public void ensureProtocolCompliance(HttpRequest request, HttpResponse response)
+    public void ensureProtocolCompliance(HttpRequestWrapper request, HttpResponse response)
             throws IOException {
         if (backendResponseMustNotHaveBody(request, response)) {
             consumeBody(response);
@@ -213,14 +212,13 @@ class ResponseProtocolCompliance {
                 || backendResponse.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_MODIFIED;
     }
 
-    private void requestDidNotExpect100ContinueButResponseIsOne(HttpRequest request,
+    private void requestDidNotExpect100ContinueButResponseIsOne(HttpRequestWrapper request,
             HttpResponse response) throws IOException {
         if (response.getStatusLine().getStatusCode() != HttpStatus.SC_CONTINUE) {
             return;
         }
 
-        HttpRequest originalRequest = requestWasWrapped(request) ?
-                ((RequestWrapper)request).getOriginal() : request;
+        HttpRequest originalRequest = request.getOriginal();
         if (originalRequest instanceof HttpEntityEnclosingRequest) {
             if (((HttpEntityEnclosingRequest)originalRequest).expectContinue()) return;
         }
@@ -228,14 +226,10 @@ class ResponseProtocolCompliance {
         throw new ClientProtocolException(UNEXPECTED_100_CONTINUE);
     }
 
-    private void transferEncodingIsNotReturnedTo1_0Client(HttpRequest request, HttpResponse response) {
-        if (!requestWasWrapped(request)) {
-            return;
-        }
-
-        ProtocolVersion originalProtocol = getOriginalRequestProtocol((RequestWrapper) request);
-
-        if (originalProtocol.compareToVersion(HttpVersion.HTTP_1_1) >= 0) {
+    private void transferEncodingIsNotReturnedTo1_0Client(HttpRequestWrapper request,
+            HttpResponse response) {
+        HttpRequest originalRequest = request.getOriginal();
+        if (originalRequest.getProtocolVersion().compareToVersion(HttpVersion.HTTP_1_1) >= 0) {
             return;
         }
 
@@ -247,12 +241,4 @@ class ResponseProtocolCompliance {
         response.removeHeaders(HTTP.TRANSFER_ENCODING);
     }
 
-    private ProtocolVersion getOriginalRequestProtocol(RequestWrapper request) {
-        return request.getOriginal().getProtocolVersion();
-    }
-
-    private boolean requestWasWrapped(HttpRequest request) {
-        return request instanceof RequestWrapper;
-    }
-
 }

Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/AbstractProtocolTest.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/AbstractProtocolTest.java?rev=1417343&r1=1417342&r2=1417343&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/AbstractProtocolTest.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/AbstractProtocolTest.java Wed Dec  5 10:34:46 2012
@@ -33,6 +33,7 @@ import org.apache.http.HttpRequest;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpVersion;
 import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpRequestWrapper;
 import org.apache.http.message.BasicHttpRequest;
 import org.apache.http.protocol.HttpContext;
 import org.easymock.IExpectationSetters;
@@ -48,7 +49,7 @@ public abstract class AbstractProtocolTe
     protected HttpEntity body;
     protected HttpClient mockBackend;
     protected HttpCache mockCache;
-    protected HttpRequest request;
+    protected HttpRequestWrapper request;
     protected HttpResponse originResponse;
     protected CacheConfig config;
     protected CachingHttpClient impl;
@@ -65,7 +66,7 @@ public abstract class AbstractProtocolTe
 
         body = HttpTestUtils.makeBody(entityLength);
 
-        request = new BasicHttpRequest("GET", "/foo", HttpVersion.HTTP_1_1);
+        request = HttpRequestWrapper.wrap(new BasicHttpRequest("GET", "/foo", HttpVersion.HTTP_1_1));
 
         originResponse = HttpTestUtils.make200Response();
 

Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidationRequest.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidationRequest.java?rev=1417343&r1=1417342&r2=1417343&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidationRequest.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidationRequest.java Wed Dec  5 10:34:46 2012
@@ -29,10 +29,10 @@ package org.apache.http.impl.client.cach
 import java.io.IOException;
 
 import org.apache.http.HttpHost;
-import org.apache.http.HttpRequest;
 import org.apache.http.ProtocolException;
 import org.apache.http.client.cache.HttpCacheEntry;
 import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpRequestWrapper;
 import org.apache.http.protocol.HttpContext;
 import org.easymock.classextension.EasyMock;
 import org.junit.Before;
@@ -43,7 +43,7 @@ public class TestAsynchronousValidationR
     private AsynchronousValidator mockParent;
     private CachingHttpClient mockClient;
     private HttpHost target;
-    private HttpRequest request;
+    private HttpRequestWrapper request;
     private HttpContext mockContext;
     private HttpCacheEntry mockCacheEntry;
 
@@ -52,7 +52,7 @@ public class TestAsynchronousValidationR
         mockParent = EasyMock.createNiceMock(AsynchronousValidator.class);
         mockClient = EasyMock.createNiceMock(CachingHttpClient.class);
         target = new HttpHost("foo.example.com");
-        request = new HttpGet("/");
+        request = HttpRequestWrapper.wrap(new HttpGet("/"));
         mockContext = EasyMock.createNiceMock(HttpContext.class);
         mockCacheEntry = EasyMock.createNiceMock(HttpCacheEntry.class);
     }

Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidator.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidator.java?rev=1417343&r1=1417342&r2=1417343&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidator.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidator.java Wed Dec  5 10:34:46 2012
@@ -40,6 +40,7 @@ import org.apache.http.ProtocolException
 import org.apache.http.client.cache.HeaderConstants;
 import org.apache.http.client.cache.HttpCacheEntry;
 import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpRequestWrapper;
 import org.apache.http.message.BasicHeader;
 import org.apache.http.protocol.HttpContext;
 import org.easymock.Capture;
@@ -53,7 +54,7 @@ public class TestAsynchronousValidator {
 
     private CachingHttpClient mockClient;
     private HttpHost target;
-    private HttpRequest request;
+    private HttpRequestWrapper request;
     private HttpContext mockContext;
     private HttpCacheEntry mockCacheEntry;
 
@@ -63,7 +64,7 @@ public class TestAsynchronousValidator {
     public void setUp() {
         mockClient = EasyMock.createNiceMock(CachingHttpClient.class);
         target = new HttpHost("foo.example.com");
-        request = new HttpGet("/");
+        request = HttpRequestWrapper.wrap(new HttpGet("/"));
         mockContext = EasyMock.createNiceMock(HttpContext.class);
         mockCacheEntry = EasyMock.createNiceMock(HttpCacheEntry.class);
 
@@ -156,8 +157,8 @@ public class TestAsynchronousValidator {
         EasyMock.expectLastCall().times(2);
 
         replayMocks();
-        impl.revalidateCacheEntry(target, req1, mockContext, mockCacheEntry);
-        impl.revalidateCacheEntry(target, req2, mockContext, mockCacheEntry);
+        impl.revalidateCacheEntry(target, HttpRequestWrapper.wrap(req1), mockContext, mockCacheEntry);
+        impl.revalidateCacheEntry(target, HttpRequestWrapper.wrap(req2), mockContext, mockCacheEntry);
         verifyMocks();
 
         Assert.assertEquals(2, impl.getScheduledIdentifiers().size());

Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachingHttpClient.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachingHttpClient.java?rev=1417343&r1=1417342&r2=1417343&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachingHttpClient.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachingHttpClient.java Wed Dec  5 10:34:46 2012
@@ -26,6 +26,22 @@
  */
 package org.apache.http.impl.client.cache;
 
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.capture;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
+import static org.easymock.EasyMock.isA;
+import static org.easymock.EasyMock.isNull;
+import static org.easymock.EasyMock.same;
+import static org.easymock.classextension.EasyMock.createMockBuilder;
+import static org.easymock.classextension.EasyMock.createNiceMock;
+import static org.easymock.classextension.EasyMock.replay;
+import static org.easymock.classextension.EasyMock.verify;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.net.URI;
@@ -34,6 +50,7 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+
 import org.apache.http.Header;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpHost;
@@ -50,6 +67,7 @@ import org.apache.http.client.cache.Cach
 import org.apache.http.client.cache.HttpCacheEntry;
 import org.apache.http.client.cache.HttpCacheStorage;
 import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpRequestWrapper;
 import org.apache.http.client.methods.HttpUriRequest;
 import org.apache.http.conn.ClientConnectionManager;
 import org.apache.http.entity.InputStreamEntity;
@@ -57,15 +75,10 @@ import org.apache.http.impl.cookie.DateU
 import org.apache.http.message.BasicHeader;
 import org.apache.http.message.BasicHttpRequest;
 import org.apache.http.message.BasicHttpResponse;
-import org.apache.http.params.BasicHttpParams;
-import org.apache.http.params.HttpParams;
 import org.apache.http.protocol.BasicHttpContext;
 import org.apache.http.protocol.ExecutionContext;
 import org.apache.http.protocol.HttpContext;
 import org.easymock.Capture;
-import static org.easymock.classextension.EasyMock.*;
-import static org.junit.Assert.*;
-
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -106,9 +119,8 @@ public class TestCachingHttpClient {
     private Date requestDate;
     private Date responseDate;
     private HttpHost host;
-    private HttpRequest request;
+    private HttpRequestWrapper request;
     private HttpContext context;
-    private HttpParams params;
     private HttpCacheEntry entry;
     private ConsumableInputStream cis;
 
@@ -138,9 +150,9 @@ public class TestCachingHttpClient {
         requestDate = new Date(System.currentTimeMillis() - 1000);
         responseDate = new Date();
         host = new HttpHost("foo.example.com");
-        request = new BasicHttpRequest("GET", "/stuff", HttpVersion.HTTP_1_1);
+        request = HttpRequestWrapper.wrap(
+                new BasicHttpRequest("GET", "/stuff", HttpVersion.HTTP_1_1));
         context = new BasicHttpContext();
-        params = new BasicHttpParams();
         entry = HttpTestUtils.makeCacheEntry();
         impl = new CachingHttpClient(
                 mockBackend,
@@ -304,7 +316,6 @@ public class TestCachingHttpClient {
         mockImplMethods(CALL_BACKEND);
 
         callBackendReturnsResponse(mockBackendResponse);
-        requestProtocolValidationIsCalled();
         requestIsFatallyNonCompliant(null);
 
         replayMocks();
@@ -332,7 +343,6 @@ public class TestCachingHttpClient {
         getCacheEntryReturns(null);
         getVariantCacheEntriesReturns(new HashMap<String,Variant>());
 
-        requestProtocolValidationIsCalled();
         requestIsFatallyNonCompliant(null);
 
         callBackendReturnsResponse(mockBackendResponse);
@@ -352,7 +362,6 @@ public class TestCachingHttpClient {
         mockImplMethods(CALL_BACKEND);
         cacheInvalidatorWasCalled();
         requestPolicyAllowsCaching(true);
-        requestProtocolValidationIsCalled();
         requestIsFatallyNonCompliant(null);
 
         getCacheEntryReturns(mockCacheEntry);
@@ -375,7 +384,6 @@ public class TestCachingHttpClient {
         mockImplMethods(REVALIDATE_CACHE_ENTRY);
         cacheInvalidatorWasCalled();
         requestPolicyAllowsCaching(true);
-        requestProtocolValidationIsCalled();
         requestIsFatallyNonCompliant(null);
 
         getCacheEntryReturns(mockCacheEntry);
@@ -400,8 +408,8 @@ public class TestCachingHttpClient {
     public void testRevalidationCallsHandleBackEndResponseWhenNot200Or304() throws Exception {
         mockImplMethods(GET_CURRENT_DATE, HANDLE_BACKEND_RESPONSE);
 
-        HttpRequest validate =
-            new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1);
+        HttpRequestWrapper validate =
+            HttpRequestWrapper.wrap(new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1));
         HttpResponse originResponse =
             new BasicHttpResponse(HttpVersion.HTTP_1_1,
                     HttpStatus.SC_NOT_FOUND, "Not Found");
@@ -429,8 +437,8 @@ public class TestCachingHttpClient {
 
         mockImplMethods(GET_CURRENT_DATE);
 
-        HttpRequest validate =
-            new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1);
+        HttpRequestWrapper validate =
+            HttpRequestWrapper.wrap(new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1));
         HttpResponse originResponse =
             new BasicHttpResponse(HttpVersion.HTTP_1_1,
                     HttpStatus.SC_NOT_MODIFIED, "Not Modified");
@@ -455,7 +463,6 @@ public class TestCachingHttpClient {
     public void testSuitableCacheEntryDoesNotCauseBackendRequest() throws Exception {
         cacheInvalidatorWasCalled();
         requestPolicyAllowsCaching(true);
-        requestProtocolValidationIsCalled();
         getCacheEntryReturns(mockCacheEntry);
         cacheEntrySuitable(true);
         responseIsGeneratedFromCache();
@@ -836,29 +843,9 @@ public class TestCachingHttpClient {
     }
 
     @Test
-    public void testUsesBackendsConnectionManager() {
-        expect(mockBackend.getConnectionManager()).andReturn(
-                mockConnectionManager);
-        replayMocks();
-        ClientConnectionManager result = impl.getConnectionManager();
-        verifyMocks();
-        Assert.assertSame(result, mockConnectionManager);
-    }
-
-    @Test
-    public void testUsesBackendsHttpParams() {
-        expect(mockBackend.getParams()).andReturn(params);
-        replayMocks();
-        HttpParams result = impl.getParams();
-        verifyMocks();
-        Assert.assertSame(params, result);
-    }
-
-    @Test
     public void testResponseIsGeneratedWhenCacheEntryIsUsable() throws Exception {
 
         requestIsFatallyNonCompliant(null);
-        requestProtocolValidationIsCalled();
         cacheInvalidatorWasCalled();
         requestPolicyAllowsCaching(true);
         cacheEntrySuitable(true);
@@ -877,7 +864,8 @@ public class TestCachingHttpClient {
         ClientProtocolException expected = new ClientProtocolException("ouch");
 
         requestIsFatallyNonCompliant(null);
-        requestCannotBeMadeCompliantThrows(expected);
+        mockRequestProtocolCompliance.makeRequestCompliant((HttpRequestWrapper)anyObject());
+        expectLastCall().andThrow(expected);
 
         boolean gotException = false;
         replayMocks();
@@ -1839,7 +1827,6 @@ public class TestCachingHttpClient {
         entry = HttpTestUtils.makeCacheEntry(new Header[]{new BasicHeader("Cache-Control", "must-revalidate")});
 
         requestIsFatallyNonCompliant(null);
-        requestProtocolValidationIsCalled();
         cacheInvalidatorWasCalled();
         requestPolicyAllowsCaching(true);
         getCacheEntryReturns(entry);
@@ -1858,7 +1845,6 @@ public class TestCachingHttpClient {
         request.setHeader("Cache-Control", "only-if-cached");
 
         requestIsFatallyNonCompliant(null);
-        requestProtocolValidationIsCalled();
         cacheInvalidatorWasCalled();
         requestPolicyAllowsCaching(true);
         getCacheEntryReturns(entry);
@@ -2033,7 +2019,7 @@ public class TestCachingHttpClient {
     private void callBackendReturnsResponse(HttpResponse response) throws IOException {
         expect(impl.callBackend(
                 (HttpHost)anyObject(),
-                (HttpRequest)anyObject(),
+                (HttpRequestWrapper)anyObject(),
                 (HttpContext)anyObject())).andReturn(response);
     }
 
@@ -2042,7 +2028,7 @@ public class TestCachingHttpClient {
         expect(
                 impl.revalidateCacheEntry(
                         (HttpHost)anyObject(),
-                        (HttpRequest)anyObject(),
+                        (HttpRequestWrapper)anyObject(),
                         (HttpContext)anyObject(),
                         (HttpCacheEntry)anyObject())).andReturn(response);
     }
@@ -2067,7 +2053,7 @@ public class TestCachingHttpClient {
                 (HttpCacheEntry)anyObject(), (Date)anyObject())).andReturn(b);
     }
 
-    private void conditionalRequestBuilderReturns(HttpRequest validate)
+    private void conditionalRequestBuilderReturns(HttpRequestWrapper validate)
             throws Exception {
         expect(mockConditionalRequestBuilder
         .buildConditionalRequest(request, entry))
@@ -2117,7 +2103,7 @@ public class TestCachingHttpClient {
                 (HttpCacheEntry)anyObject())).andReturn(mockCachedResponse);
     }
 
-    private void handleBackendResponseReturnsResponse(HttpRequest request, HttpResponse response)
+    private void handleBackendResponseReturnsResponse(HttpRequestWrapper request, HttpResponse response)
             throws IOException {
         expect(
                 impl.handleBackendResponse(
@@ -2128,18 +2114,6 @@ public class TestCachingHttpClient {
                         (HttpResponse)anyObject())).andReturn(response);
     }
 
-    private void requestProtocolValidationIsCalled() throws Exception {
-        expect(
-                mockRequestProtocolCompliance.makeRequestCompliant(
-                        (HttpRequest)anyObject())).andReturn(request);
-    }
-
-    private void requestCannotBeMadeCompliantThrows(ClientProtocolException exception) throws Exception {
-        expect(
-                mockRequestProtocolCompliance.makeRequestCompliant(
-                        (HttpRequest)anyObject())).andThrow(exception);
-    }
-
     private HttpEntity makeStreamingEntity() {
         byte[] body = HttpTestUtils.getRandomBytes(101);
         ByteArrayInputStream buf = new ByteArrayInputStream(body);

Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestConditionalRequestBuilder.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestConditionalRequestBuilder.java?rev=1417343&r1=1417342&r2=1417343&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestConditionalRequestBuilder.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestConditionalRequestBuilder.java Wed Dec  5 10:34:46 2012
@@ -36,6 +36,7 @@ import org.apache.http.HttpVersion;
 import org.apache.http.ProtocolException;
 import org.apache.http.client.cache.HeaderConstants;
 import org.apache.http.client.cache.HttpCacheEntry;
+import org.apache.http.client.methods.HttpRequestWrapper;
 import org.apache.http.impl.cookie.DateUtils;
 import org.apache.http.message.BasicHeader;
 import org.apache.http.message.BasicHttpRequest;
@@ -46,13 +47,14 @@ import org.junit.Test;
 public class TestConditionalRequestBuilder {
 
     private ConditionalRequestBuilder impl;
-    private HttpRequest request;
+    private HttpRequestWrapper request;
     private HttpCacheEntry entry;
 
     @Before
     public void setUp() throws Exception {
         impl = new ConditionalRequestBuilder();
-        request = new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1);
+        request = HttpRequestWrapper.wrap(
+                new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1));
         entry = HttpTestUtils.makeCacheEntry();
     }
 
@@ -64,13 +66,14 @@ public class TestConditionalRequestBuild
 
         HttpRequest request = new BasicHttpRequest(theMethod, theUri);
         request.addHeader("Accept-Encoding", "gzip");
+        HttpRequestWrapper requestWrapper = HttpRequestWrapper.wrap(request);
 
         Header[] headers = new Header[] {
                 new BasicHeader("Date", DateUtils.formatDate(new Date())),
                 new BasicHeader("Last-Modified", lastModified) };
 
         HttpCacheEntry cacheEntry = HttpTestUtils.makeCacheEntry(headers);
-        HttpRequest newRequest = impl.buildConditionalRequest(request, cacheEntry);
+        HttpRequestWrapper newRequest = impl.buildConditionalRequest(requestWrapper, cacheEntry);
 
         Assert.assertNotSame(request, newRequest);
 
@@ -101,8 +104,9 @@ public class TestConditionalRequestBuild
             new BasicHeader("ETag", etag)
         };
         HttpRequest request = new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1);
+        HttpRequestWrapper requestWrapper = HttpRequestWrapper.wrap(request);
         HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(headers);
-        HttpRequest result = impl.buildConditionalRequest(request, entry);
+        HttpRequest result = impl.buildConditionalRequest(requestWrapper, entry);
         Assert.assertEquals(lmDate,
                 result.getFirstHeader("If-Modified-Since").getValue());
         Assert.assertEquals(etag,
@@ -117,6 +121,7 @@ public class TestConditionalRequestBuild
 
         HttpRequest request = new BasicHttpRequest(theMethod, theUri);
         request.addHeader("Accept-Encoding", "gzip");
+        HttpRequestWrapper requestWrapper = HttpRequestWrapper.wrap(request);
 
         Header[] headers = new Header[] {
                 new BasicHeader("Date", DateUtils.formatDate(new Date())),
@@ -125,7 +130,7 @@ public class TestConditionalRequestBuild
 
         HttpCacheEntry cacheEntry = HttpTestUtils.makeCacheEntry(headers);
 
-        HttpRequest newRequest = impl.buildConditionalRequest(request, cacheEntry);
+        HttpRequest newRequest = impl.buildConditionalRequest(requestWrapper, cacheEntry);
 
         Assert.assertNotSame(request, newRequest);
 
@@ -146,6 +151,7 @@ public class TestConditionalRequestBuild
     @Test
     public void testCacheEntryWithMustRevalidateDoesEndToEndRevalidation() throws Exception {
         HttpRequest request = new BasicHttpRequest("GET","/",HttpVersion.HTTP_1_1);
+        HttpRequestWrapper requestWrapper = HttpRequestWrapper.wrap(request);
         Date now = new Date();
         Date elevenSecondsAgo = new Date(now.getTime() - 11 * 1000L);
         Date tenSecondsAgo = new Date(now.getTime() - 10 * 1000L);
@@ -157,7 +163,7 @@ public class TestConditionalRequestBuild
                 new BasicHeader("Cache-Control","max-age=5, must-revalidate") };
         HttpCacheEntry cacheEntry = HttpTestUtils.makeCacheEntry(elevenSecondsAgo, nineSecondsAgo, cacheEntryHeaders);
 
-        HttpRequest result = impl.buildConditionalRequest(request, cacheEntry);
+        HttpRequest result = impl.buildConditionalRequest(requestWrapper, cacheEntry);
 
         boolean foundMaxAge0 = false;
         for(Header h : result.getHeaders("Cache-Control")) {
@@ -174,6 +180,7 @@ public class TestConditionalRequestBuild
     @Test
     public void testCacheEntryWithProxyRevalidateDoesEndToEndRevalidation() throws Exception {
         HttpRequest request = new BasicHttpRequest("GET","/",HttpVersion.HTTP_1_1);
+        HttpRequestWrapper requestWrapper = HttpRequestWrapper.wrap(request);
         Date now = new Date();
         Date elevenSecondsAgo = new Date(now.getTime() - 11 * 1000L);
         Date tenSecondsAgo = new Date(now.getTime() - 10 * 1000L);
@@ -185,7 +192,7 @@ public class TestConditionalRequestBuild
                 new BasicHeader("Cache-Control","max-age=5, proxy-revalidate") };
         HttpCacheEntry cacheEntry = HttpTestUtils.makeCacheEntry(elevenSecondsAgo, nineSecondsAgo, cacheEntryHeaders);
 
-        HttpRequest result = impl.buildConditionalRequest(request, cacheEntry);
+        HttpRequest result = impl.buildConditionalRequest(requestWrapper, cacheEntry);
 
         boolean foundMaxAge0 = false;
         for(Header h : result.getHeaders("Cache-Control")) {
@@ -210,7 +217,7 @@ public class TestConditionalRequestBuild
     public void testBuildUnconditionalRequestUsesRequestUri()
         throws Exception {
         final String uri = "/theURI";
-        request = new BasicHttpRequest("GET", uri, HttpVersion.HTTP_1_1);
+        request = HttpRequestWrapper.wrap(new BasicHttpRequest("GET", uri, HttpVersion.HTTP_1_1));
         HttpRequest result = impl.buildUnconditionalRequest(request, entry);
         Assert.assertEquals(uri, result.getRequestLine().getUri());
     }

Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestProtocolRecommendations.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestProtocolRecommendations.java?rev=1417343&r1=1417342&r2=1417343&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestProtocolRecommendations.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestProtocolRecommendations.java Wed Dec  5 10:34:46 2012
@@ -46,6 +46,7 @@ import static org.apache.http.impl.cooki
 
 import org.apache.http.client.ClientProtocolException;
 import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpRequestWrapper;
 import org.apache.http.message.BasicHttpEntityEnclosingRequest;
 import org.apache.http.message.BasicHttpRequest;
 import org.apache.http.message.BasicHttpResponse;
@@ -672,7 +673,7 @@ public class TestProtocolRecommendations
             new BasicHttpEntityEnclosingRequest("POST", "/", HttpVersion.HTTP_1_1);
         post.setEntity(HttpTestUtils.makeBody(128));
         post.setHeader("Content-Length","128");
-        request = post;
+        request = HttpRequestWrapper.wrap(post);
         testDoesNotModifyHeaderOnRequests("Content-Length");
     }
 
@@ -692,7 +693,7 @@ public class TestProtocolRecommendations
         post.setEntity(HttpTestUtils.makeBody(128));
         post.setHeader("Content-Length","128");
         post.setHeader("Content-MD5","Q2hlY2sgSW50ZWdyaXR5IQ==");
-        request = post;
+        request = HttpRequestWrapper.wrap(post);
         testDoesNotModifyHeaderOnRequests("Content-MD5");
     }
 
@@ -712,7 +713,7 @@ public class TestProtocolRecommendations
         put.setEntity(HttpTestUtils.makeBody(128));
         put.setHeader("Content-Length","128");
         put.setHeader("Content-Range","bytes 0-127/256");
-        request = put;
+        request = HttpRequestWrapper.wrap(put);
         testDoesNotModifyHeaderOnRequests("Content-Range");
     }
 
@@ -735,7 +736,7 @@ public class TestProtocolRecommendations
         post.setEntity(HttpTestUtils.makeBody(128));
         post.setHeader("Content-Length","128");
         post.setHeader("Content-Type","application/octet-stream");
-        request = post;
+        request = HttpRequestWrapper.wrap(post);
         testDoesNotModifyHeaderOnRequests("Content-Type");
     }
 
@@ -784,7 +785,7 @@ public class TestProtocolRecommendations
     @Test
     public void testDoesNotModifyIfMatchOnRequests()
         throws Exception {
-        request = new BasicHttpRequest("DELETE", "/", HttpVersion.HTTP_1_1);
+        request = HttpRequestWrapper.wrap(new BasicHttpRequest("DELETE", "/", HttpVersion.HTTP_1_1));
         request.setHeader("If-Match", "\"etag\"");
         testDoesNotModifyHeaderOnRequests("If-Match");
     }
@@ -814,7 +815,7 @@ public class TestProtocolRecommendations
     @Test
     public void testDoesNotModifyIfUnmodifiedSinceOnRequests()
         throws Exception {
-        request = new BasicHttpRequest("DELETE", "/", HttpVersion.HTTP_1_1);
+        request = HttpRequestWrapper.wrap(new BasicHttpRequest("DELETE", "/", HttpVersion.HTTP_1_1));
         request.setHeader("If-Unmodified-Since", formatDate(new Date()));
         testDoesNotModifyHeaderOnRequests("If-Unmodified-Since");
     }