Removed deprecated APIs.

This commit is contained in:
Simone Bordet 2015-04-08 18:40:32 +02:00
parent 3f3e7391a6
commit 18938047e9
6 changed files with 62 additions and 164 deletions

View File

@ -22,11 +22,11 @@ import java.net.URI;
import java.util.List; import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import javax.servlet.RequestDispatcher; import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig; import javax.servlet.ServletConfig;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.client.HttpClient; import org.eclipse.jetty.client.HttpClient;
import org.eclipse.jetty.client.api.Request; import org.eclipse.jetty.client.api.Request;
@ -104,7 +104,7 @@ public class FastCGIProxyServlet extends AsyncProxyServlet.Transparent
} }
@Override @Override
protected void customizeProxyRequest(Request proxyRequest, HttpServletRequest request) protected void sendProxyRequest(HttpServletRequest request, HttpServletResponse proxyResponse, Request proxyRequest)
{ {
proxyRequest.attribute(REMOTE_ADDR_ATTRIBUTE, request.getRemoteAddr()); proxyRequest.attribute(REMOTE_ADDR_ATTRIBUTE, request.getRemoteAddr());
proxyRequest.attribute(REMOTE_PORT_ATTRIBUTE, String.valueOf(request.getRemotePort())); proxyRequest.attribute(REMOTE_PORT_ATTRIBUTE, String.valueOf(request.getRemotePort()));
@ -157,7 +157,7 @@ public class FastCGIProxyServlet extends AsyncProxyServlet.Transparent
proxyRequest.header(HttpHeader.COOKIE, builder.toString()); proxyRequest.header(HttpHeader.COOKIE, builder.toString());
} }
super.customizeProxyRequest(proxyRequest, request); super.sendProxyRequest(request, proxyResponse, proxyRequest);
} }
protected void customizeFastCGIHeaders(Request proxyRequest, HttpFields fastCGIHeaders) protected void customizeFastCGIHeaders(Request proxyRequest, HttpFields fastCGIHeaders)

View File

@ -19,13 +19,11 @@
package org.eclipse.jetty.fcgi.server.proxy; package org.eclipse.jetty.fcgi.server.proxy;
import java.io.IOException; import java.io.IOException;
import java.net.URI;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Random; import java.util.Random;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -85,9 +83,9 @@ public class FastCGIProxyServletTest
FastCGIProxyServlet fcgiServlet = new FastCGIProxyServlet() FastCGIProxyServlet fcgiServlet = new FastCGIProxyServlet()
{ {
@Override @Override
protected URI rewriteURI(HttpServletRequest request) protected String rewriteTarget(HttpServletRequest request)
{ {
return URI.create("http://localhost:" + fcgiConnector.getLocalPort() + servletPath + request.getServletPath()); return "http://localhost:" + fcgiConnector.getLocalPort() + servletPath + request.getServletPath();
} }
}; };
ServletHolder fcgiServletHolder = new ServletHolder(fcgiServlet); ServletHolder fcgiServletHolder = new ServletHolder(fcgiServlet);

View File

@ -19,10 +19,8 @@
package org.eclipse.jetty.proxy; package org.eclipse.jetty.proxy;
import java.io.IOException; import java.io.IOException;
import java.net.URI;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.channels.WritePendingException; import java.nio.channels.WritePendingException;
import javax.servlet.ReadListener; import javax.servlet.ReadListener;
import javax.servlet.ServletConfig; import javax.servlet.ServletConfig;
import javax.servlet.ServletException; import javax.servlet.ServletException;
@ -39,22 +37,27 @@ import org.eclipse.jetty.client.util.DeferredContentProvider;
import org.eclipse.jetty.util.Callback; import org.eclipse.jetty.util.Callback;
import org.eclipse.jetty.util.IteratingCallback; import org.eclipse.jetty.util.IteratingCallback;
/**
* <p>Proxy servlet based on Servlet 3.1 async I/O.</p>
*
* @see AsyncMiddleManServlet
*/
public class AsyncProxyServlet extends ProxyServlet public class AsyncProxyServlet extends ProxyServlet
{ {
private static final String WRITE_LISTENER_ATTRIBUTE = AsyncProxyServlet.class.getName() + ".writeListener"; private static final String WRITE_LISTENER_ATTRIBUTE = AsyncProxyServlet.class.getName() + ".writeListener";
@Override @Override
protected ContentProvider proxyRequestContent(Request proxyRequest, HttpServletRequest request) throws IOException protected ContentProvider proxyRequestContent(HttpServletRequest request, HttpServletResponse response, Request proxyRequest) throws IOException
{ {
ServletInputStream input = request.getInputStream(); ServletInputStream input = request.getInputStream();
DeferredContentProvider provider = new DeferredContentProvider(); DeferredContentProvider provider = new DeferredContentProvider();
input.setReadListener(newReadListener(proxyRequest, request, provider)); input.setReadListener(newReadListener(request, response, proxyRequest, provider));
return provider; return provider;
} }
protected ReadListener newReadListener(Request proxyRequest, HttpServletRequest request, DeferredContentProvider provider) protected ReadListener newReadListener(HttpServletRequest request, HttpServletResponse response, Request proxyRequest, DeferredContentProvider provider)
{ {
return new StreamReader(proxyRequest, request, provider); return new StreamReader(request, response, proxyRequest, provider);
} }
@Override @Override
@ -108,23 +111,25 @@ public class AsyncProxyServlet extends ProxyServlet
} }
@Override @Override
protected URI rewriteURI(HttpServletRequest request) protected String rewriteTarget(HttpServletRequest clientRequest)
{ {
return delegate.rewriteURI(request); return delegate.rewriteTarget(clientRequest);
} }
} }
protected class StreamReader extends IteratingCallback implements ReadListener protected class StreamReader extends IteratingCallback implements ReadListener
{ {
private final byte[] buffer = new byte[getHttpClient().getRequestBufferSize()]; private final byte[] buffer = new byte[getHttpClient().getRequestBufferSize()];
private final Request proxyRequest;
private final HttpServletRequest request; private final HttpServletRequest request;
private final HttpServletResponse response;
private final Request proxyRequest;
private final DeferredContentProvider provider; private final DeferredContentProvider provider;
protected StreamReader(Request proxyRequest, HttpServletRequest request, DeferredContentProvider provider) protected StreamReader(HttpServletRequest request, HttpServletResponse response, Request proxyRequest, DeferredContentProvider provider)
{ {
this.proxyRequest = proxyRequest;
this.request = request; this.request = request;
this.response = response;
this.proxyRequest = proxyRequest;
this.provider = provider; this.provider = provider;
} }
@ -145,7 +150,7 @@ public class AsyncProxyServlet extends ProxyServlet
@Override @Override
public void onError(Throwable t) public void onError(Throwable t)
{ {
onClientRequestFailure(proxyRequest, request, t); onClientRequestFailure(request, proxyRequest, response, t);
} }
@Override @Override
@ -165,7 +170,7 @@ public class AsyncProxyServlet extends ProxyServlet
{ {
if (_log.isDebugEnabled()) if (_log.isDebugEnabled())
_log.debug("{} proxying content to upstream: {} bytes", requestId, read); _log.debug("{} proxying content to upstream: {} bytes", requestId, read);
onRequestContent(proxyRequest, request, provider, buffer, 0, read, this); onRequestContent(request, proxyRequest, provider, buffer, 0, read, this);
return Action.SCHEDULED; return Action.SCHEDULED;
} }
} }
@ -184,7 +189,7 @@ public class AsyncProxyServlet extends ProxyServlet
} }
} }
protected void onRequestContent(Request proxyRequest, HttpServletRequest request, DeferredContentProvider provider, byte[] buffer, int offset, int length, Callback callback) protected void onRequestContent(HttpServletRequest request, Request proxyRequest, DeferredContentProvider provider, byte[] buffer, int offset, int length, Callback callback)
{ {
provider.offer(ByteBuffer.wrap(buffer, offset, length), callback); provider.offer(ByteBuffer.wrap(buffer, offset, length), callback);
} }

View File

@ -26,12 +26,12 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicLong;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.UnavailableException; import javax.servlet.UnavailableException;
import javax.servlet.http.Cookie; import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.eclipse.jetty.client.api.Response;
import org.eclipse.jetty.util.URIUtil; import org.eclipse.jetty.util.URIUtil;
public class BalancerServlet extends ProxyServlet public class BalancerServlet extends ProxyServlet
@ -130,7 +130,7 @@ public class BalancerServlet extends ProxyServlet
} }
@Override @Override
protected URI rewriteURI(HttpServletRequest request) protected String rewriteTarget(HttpServletRequest request)
{ {
BalancerMember balancerMember = selectBalancerMember(request); BalancerMember balancerMember = selectBalancerMember(request);
if (_log.isDebugEnabled()) if (_log.isDebugEnabled())
@ -139,7 +139,7 @@ public class BalancerServlet extends ProxyServlet
String query = request.getQueryString(); String query = request.getQueryString();
if (query != null) if (query != null)
path += "?" + query; path += "?" + query;
return URI.create(balancerMember.getProxyTo() + "/" + path).normalize(); return URI.create(balancerMember.getProxyTo() + "/" + path).normalize().toString();
} }
private BalancerMember selectBalancerMember(HttpServletRequest request) private BalancerMember selectBalancerMember(HttpServletRequest request)
@ -215,7 +215,7 @@ public class BalancerServlet extends ProxyServlet
} }
@Override @Override
protected String filterResponseHeader(HttpServletRequest request, String headerName, String headerValue) protected String filterServerResponseHeader(HttpServletRequest request, Response serverResponse, String headerName, String headerValue)
{ {
if (_proxyPassReverse && REVERSE_PROXY_HEADERS.contains(headerName)) if (_proxyPassReverse && REVERSE_PROXY_HEADERS.contains(headerName))
{ {

View File

@ -23,7 +23,6 @@ import java.io.InputStream;
import java.net.URI; import java.net.URI;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.servlet.AsyncContext; import javax.servlet.AsyncContext;
import javax.servlet.ServletConfig; import javax.servlet.ServletConfig;
import javax.servlet.ServletContext; import javax.servlet.ServletContext;
@ -42,25 +41,21 @@ import org.eclipse.jetty.http.HttpVersion;
import org.eclipse.jetty.util.Callback; import org.eclipse.jetty.util.Callback;
/** /**
* Asynchronous ProxyServlet. * <p>Proxy servlet based on Servlet 3.0 asynchronous request/response.</p>
* <p/> * <p>Forwards requests to another server either as a standard web reverse proxy
* Forwards requests to another server either as a standard web reverse proxy * (as defined by RFC2616) or as a transparent reverse proxy.</p>
* (as defined by RFC2616) or as a transparent reverse proxy. * <p>To facilitate JMX monitoring, the {@link HttpClient} instance is set as
* <p/> * context attribute, prefixed with the servlet's name and exposed by the
* To facilitate JMX monitoring, the {@link HttpClient} instance is set as context attribute, * mechanism provided by {@link ServletContext#setAttribute(String, Object)}.</p>
* prefixed with the servlet's name and exposed by the mechanism provided by * <p>The following init parameters may be used to configure the servlet:</p>
* {@link ServletContext#setAttribute(String, Object)}.
* <p/>
* The following init parameters may be used to configure the servlet:
* <ul> * <ul>
* <li>hostHeader - forces the host header to a particular value</li> * <li>hostHeader - forces the host header to a particular value</li>
* <li>viaHost - the name to use in the Via header: Via: http/1.1 &lt;viaHost&gt;</li> * <li>viaHost - the name to use in the Via header: Via: http/1.1 &lt;viaHost&gt;</li>
* <li>whiteList - comma-separated list of allowed proxy hosts</li> * <li>whiteList - comma-separated list of allowed proxy hosts</li>
* <li>blackList - comma-separated list of forbidden proxy hosts</li> * <li>blackList - comma-separated list of forbidden proxy hosts</li>
* </ul> * </ul>
* <p/> * <p>In addition, see {@link #createHttpClient()} for init parameters used to configure
* In addition, see {@link #createHttpClient()} for init parameters used to configure * the {@link HttpClient} instance.</p>
* the {@link HttpClient} instance.
* *
* @see ConnectHandler * @see ConnectHandler
*/ */
@ -71,7 +66,7 @@ public class ProxyServlet extends AbstractProxyServlet
{ {
final int requestId = getRequestId(request); final int requestId = getRequestId(request);
URI rewrittenURI = rewriteURI(request); String rewrittenTarget = rewriteTarget(request);
if (_log.isDebugEnabled()) if (_log.isDebugEnabled())
{ {
@ -79,20 +74,20 @@ public class ProxyServlet extends AbstractProxyServlet
if (request.getQueryString() != null) if (request.getQueryString() != null)
uri.append("?").append(request.getQueryString()); uri.append("?").append(request.getQueryString());
if (_log.isDebugEnabled()) if (_log.isDebugEnabled())
_log.debug("{} rewriting: {} -> {}", requestId, uri, rewrittenURI); _log.debug("{} rewriting: {} -> {}", requestId, uri, rewrittenTarget);
} }
if (rewrittenURI == null) if (rewrittenTarget == null)
{ {
onRewriteFailed(request, response); onProxyRewriteFailed(request, response);
return; return;
} }
final Request proxyRequest = getHttpClient().newRequest(rewrittenURI) final Request proxyRequest = getHttpClient().newRequest(rewrittenTarget)
.method(request.getMethod()) .method(request.getMethod())
.version(HttpVersion.fromString(request.getProtocol())); .version(HttpVersion.fromString(request.getProtocol()));
copyHeaders(request, proxyRequest); copyRequestHeaders(request, proxyRequest);
addProxyHeaders(request, proxyRequest); addProxyHeaders(request, proxyRequest);
@ -102,25 +97,14 @@ public class ProxyServlet extends AbstractProxyServlet
proxyRequest.timeout(getTimeout(), TimeUnit.MILLISECONDS); proxyRequest.timeout(getTimeout(), TimeUnit.MILLISECONDS);
if (hasContent(request)) if (hasContent(request))
proxyRequest.content(proxyRequestContent(proxyRequest, request)); proxyRequest.content(proxyRequestContent(request, response, proxyRequest));
customizeProxyRequest(proxyRequest, request);
sendProxyRequest(request, response, proxyRequest); sendProxyRequest(request, response, proxyRequest);
} }
/** protected ContentProvider proxyRequestContent(HttpServletRequest request, HttpServletResponse response, Request proxyRequest) throws IOException
* @deprecated use {@link #copyRequestHeaders(HttpServletRequest, Request)} instead
*/
@Deprecated
protected void copyHeaders(HttpServletRequest clientRequest, Request proxyRequest)
{ {
copyRequestHeaders(clientRequest, proxyRequest); return new ProxyInputStreamContentProvider(request, response, proxyRequest, request.getInputStream());
}
protected ContentProvider proxyRequestContent(final Request proxyRequest, final HttpServletRequest request) throws IOException
{
return new ProxyInputStreamContentProvider(proxyRequest, request, request.getInputStream());
} }
protected Response.Listener newProxyResponseListener(HttpServletRequest request, HttpServletResponse response) protected Response.Listener newProxyResponseListener(HttpServletRequest request, HttpServletResponse response)
@ -128,38 +112,6 @@ public class ProxyServlet extends AbstractProxyServlet
return new ProxyResponseListener(request, response); return new ProxyResponseListener(request, response);
} }
protected void onClientRequestFailure(Request proxyRequest, HttpServletRequest request, Throwable failure)
{
if (_log.isDebugEnabled())
_log.debug(getRequestId(request) + " client request failure", failure);
proxyRequest.abort(failure);
}
/**
* @deprecated use {@link #onProxyRewriteFailed(HttpServletRequest, HttpServletResponse)}
*/
@Deprecated
protected void onRewriteFailed(HttpServletRequest request, HttpServletResponse response) throws IOException
{
onProxyRewriteFailed(request, response);
}
/**
* @deprecated use {@link #onServerResponseHeaders(HttpServletRequest, HttpServletResponse, Response)}
*/
@Deprecated
protected void onResponseHeaders(HttpServletRequest request, HttpServletResponse response, Response proxyResponse)
{
onServerResponseHeaders(request, response, proxyResponse);
}
// TODO: remove in Jetty 9.3, only here for backward compatibility.
@Override
protected String filterServerResponseHeader(HttpServletRequest clientRequest, Response serverResponse, String headerName, String headerValue)
{
return filterResponseHeader(clientRequest, headerName, headerValue);
}
protected void onResponseContent(HttpServletRequest request, HttpServletResponse response, Response proxyResponse, byte[] buffer, int offset, int length, Callback callback) protected void onResponseContent(HttpServletRequest request, HttpServletResponse response, Response proxyResponse, byte[] buffer, int offset, int length, Callback callback)
{ {
try try
@ -175,59 +127,6 @@ public class ProxyServlet extends AbstractProxyServlet
} }
} }
/**
* @deprecated Use {@link #onProxyResponseSuccess(HttpServletRequest, HttpServletResponse, Response)}
*/
@Deprecated
protected void onResponseSuccess(HttpServletRequest request, HttpServletResponse response, Response proxyResponse)
{
onProxyResponseSuccess(request, response, proxyResponse);
}
/**
* @deprecated Use {@link #onProxyResponseFailure(HttpServletRequest, HttpServletResponse, Response, Throwable)}
*/
@Deprecated
protected void onResponseFailure(HttpServletRequest request, HttpServletResponse response, Response proxyResponse, Throwable failure)
{
onProxyResponseFailure(request, response, proxyResponse, failure);
}
/**
* @deprecated use {@link #rewriteTarget(HttpServletRequest)}
*/
@Deprecated
protected URI rewriteURI(HttpServletRequest request)
{
String newTarget = rewriteTarget(request);
return newTarget == null ? null : URI.create(newTarget);
}
/**
* @deprecated use {@link #sendProxyRequest(HttpServletRequest, HttpServletResponse, Request)}
*/
@Deprecated
protected void customizeProxyRequest(Request proxyRequest, HttpServletRequest request)
{
}
/**
* Extension point for remote server response header filtering.
* The default implementation returns the header value as is.
* If null is returned, this header won't be forwarded back to the client.
*
* @param headerName the header name
* @param headerValue the header value
* @param request the request to proxy
* @return filteredHeaderValue the new header value
* @deprecated use {@link #filterServerResponseHeader(HttpServletRequest, Response, String, String)} instead
*/
@Deprecated
protected String filterResponseHeader(HttpServletRequest request, String headerName, String headerValue)
{
return headerValue;
}
/** /**
* This convenience extension to {@link ProxyServlet} configures the servlet as a transparent proxy. * This convenience extension to {@link ProxyServlet} configures the servlet as a transparent proxy.
* This servlet is configured with the following init parameters: * This servlet is configured with the following init parameters:
@ -251,9 +150,9 @@ public class ProxyServlet extends AbstractProxyServlet
} }
@Override @Override
protected URI rewriteURI(HttpServletRequest request) protected String rewriteTarget(HttpServletRequest request)
{ {
return delegate.rewriteURI(request); return delegate.rewriteTarget(request);
} }
} }
@ -290,7 +189,7 @@ public class ProxyServlet extends AbstractProxyServlet
proxyServlet._log.debug(config.getServletName() + " @ " + _prefix + " to " + _proxyTo); proxyServlet._log.debug(config.getServletName() + " @ " + _prefix + " to " + _proxyTo);
} }
protected URI rewriteURI(HttpServletRequest request) protected String rewriteTarget(HttpServletRequest request)
{ {
String path = request.getRequestURI(); String path = request.getRequestURI();
if (!path.startsWith(_prefix)) if (!path.startsWith(_prefix))
@ -311,7 +210,7 @@ public class ProxyServlet extends AbstractProxyServlet
if (!proxyServlet.validateDestination(rewrittenURI.getHost(), rewrittenURI.getPort())) if (!proxyServlet.validateDestination(rewrittenURI.getHost(), rewrittenURI.getPort()))
return null; return null;
return rewrittenURI; return rewrittenURI.toString();
} }
} }
@ -335,7 +234,7 @@ public class ProxyServlet extends AbstractProxyServlet
@Override @Override
public void onHeaders(Response proxyResponse) public void onHeaders(Response proxyResponse)
{ {
onResponseHeaders(request, response, proxyResponse); onServerResponseHeaders(request, response, proxyResponse);
} }
@Override @Override
@ -377,9 +276,9 @@ public class ProxyServlet extends AbstractProxyServlet
public void onComplete(Result result) public void onComplete(Result result)
{ {
if (result.isSucceeded()) if (result.isSucceeded())
onResponseSuccess(request, response, result.getResponse()); onProxyResponseSuccess(request, response, result.getResponse());
else else
onResponseFailure(request, response, result.getResponse(), result.getFailure()); onProxyResponseFailure(request, response, result.getResponse(), result.getFailure());
if (_log.isDebugEnabled()) if (_log.isDebugEnabled())
_log.debug("{} proxying complete", getRequestId(request)); _log.debug("{} proxying complete", getRequestId(request));
} }
@ -387,14 +286,16 @@ public class ProxyServlet extends AbstractProxyServlet
protected class ProxyInputStreamContentProvider extends InputStreamContentProvider protected class ProxyInputStreamContentProvider extends InputStreamContentProvider
{ {
private final HttpServletResponse response;
private final Request proxyRequest; private final Request proxyRequest;
private final HttpServletRequest request; private final HttpServletRequest request;
protected ProxyInputStreamContentProvider(Request proxyRequest, HttpServletRequest request, InputStream input) protected ProxyInputStreamContentProvider(HttpServletRequest request, HttpServletResponse response, Request proxyRequest, InputStream input)
{ {
super(input); super(input);
this.proxyRequest = proxyRequest;
this.request = request; this.request = request;
this.response = response;
this.proxyRequest = proxyRequest;
} }
@Override @Override
@ -408,10 +309,10 @@ public class ProxyServlet extends AbstractProxyServlet
{ {
if (_log.isDebugEnabled()) if (_log.isDebugEnabled())
_log.debug("{} proxying content to upstream: {} bytes", getRequestId(request), length); _log.debug("{} proxying content to upstream: {} bytes", getRequestId(request), length);
return onRequestContent(proxyRequest, request, buffer, offset, length); return onRequestContent(request, proxyRequest, buffer, offset, length);
} }
protected ByteBuffer onRequestContent(Request proxyRequest, final HttpServletRequest request, byte[] buffer, int offset, int length) protected ByteBuffer onRequestContent(HttpServletRequest request, Request proxyRequest, byte[] buffer, int offset, int length)
{ {
return super.onRead(buffer, offset, length); return super.onRead(buffer, offset, length);
} }
@ -419,7 +320,7 @@ public class ProxyServlet extends AbstractProxyServlet
@Override @Override
protected void onReadFailure(Throwable failure) protected void onReadFailure(Throwable failure)
{ {
onClientRequestFailure(proxyRequest, request, failure); onClientRequestFailure(request, proxyRequest, response, failure);
} }
} }
} }

View File

@ -30,7 +30,6 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -263,7 +262,7 @@ public class ProxyServletFailureTest
proxyServlet = new AsyncProxyServlet() proxyServlet = new AsyncProxyServlet()
{ {
@Override @Override
protected ContentProvider proxyRequestContent(Request proxyRequest, HttpServletRequest request) throws IOException protected ContentProvider proxyRequestContent(HttpServletRequest request, HttpServletResponse response, Request proxyRequest) throws IOException
{ {
return new DeferredContentProvider() return new DeferredContentProvider()
{ {
@ -282,7 +281,7 @@ public class ProxyServletFailureTest
proxyServlet = new ProxyServlet() proxyServlet = new ProxyServlet()
{ {
@Override @Override
protected ContentProvider proxyRequestContent(Request proxyRequest, HttpServletRequest request) throws IOException protected ContentProvider proxyRequestContent(HttpServletRequest request, HttpServletResponse response, Request proxyRequest) throws IOException
{ {
return new BytesContentProvider(content) return new BytesContentProvider(content)
{ {
@ -412,9 +411,4 @@ public class ProxyServletFailureTest
((StdErrLog)Log.getLogger(ServletHandler.class)).setHideStacks(false); ((StdErrLog)Log.getLogger(ServletHandler.class)).setHideStacks(false);
} }
} }
private interface Function<T, R>
{
public R apply(T arg);
}
} }