refactor: move convertHeaderFromJetty to ProxHandler (only used with active proxy

not needed for standard servlets)
pull/93/head
reger 9 years ago
parent 20c9b0138e
commit d525967999

@ -65,7 +65,7 @@ public class ProxyCacheHandler extends AbstractRemoteHandler implements Handler
ResponseHeader cachedResponseHeader = Cache.getResponseHeader(url.hash());
if (cachedResponseHeader != null) {
RequestHeader proxyHeaders = YaCyDefaultServlet.convertHeaderFromJetty(request);
RequestHeader proxyHeaders = ProxyHandler.convertHeaderFromJetty(request);
// TODO: this convertion is only necessary
final net.yacy.crawler.retrieval.Request yacyRequest = new net.yacy.crawler.retrieval.Request(
null,

@ -30,6 +30,7 @@ import java.io.IOException;
import java.io.OutputStream;
import java.net.SocketException;
import java.util.Date;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
@ -43,10 +44,9 @@ import net.yacy.cora.protocol.HeaderFramework;
import net.yacy.cora.protocol.RequestHeader;
import net.yacy.cora.protocol.ResponseHeader;
import net.yacy.cora.protocol.http.HTTPClient;
import net.yacy.document.TextParser;
import net.yacy.crawler.data.Cache;
import net.yacy.crawler.retrieval.Response;
import net.yacy.http.servlets.YaCyDefaultServlet;
import net.yacy.document.TextParser;
import net.yacy.server.http.HTTPDProxyHandler;
import net.yacy.server.http.MultiOutputStream;
@ -129,7 +129,7 @@ public class ProxyHandler extends AbstractRemoteHandler implements Handler {
sb.proxyLastAccess = System.currentTimeMillis();
RequestHeader proxyHeaders = YaCyDefaultServlet.convertHeaderFromJetty(request);
RequestHeader proxyHeaders = ProxyHandler.convertHeaderFromJetty(request);
setProxyHeaderForClient(request, proxyHeaders);
final HTTPClient client = new HTTPClient(ClientIdentification.yacyProxyAgent);
@ -227,7 +227,27 @@ public class ProxyHandler extends AbstractRemoteHandler implements Handler {
logProxyAccess(request);
baseRequest.setHandled(true);
}
/**
* Convert ServletRequest header to modifiable YaCy RequestHeader
*
* @param request ServletRequest
* @return RequestHeader created from ServletRequest
*/
public static RequestHeader convertHeaderFromJetty(HttpServletRequest request) {
RequestHeader result = new RequestHeader();
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
Enumeration<String> headers = request.getHeaders(headerName);
while (headers.hasMoreElements()) {
String header = headers.nextElement();
result.add(headerName, header);
}
}
return result;
}
/**
* adds specific header elements for the connection of the internal
* httpclient to the remote server according to local config

@ -26,6 +26,7 @@ import net.yacy.cora.protocol.HeaderFramework;
import net.yacy.cora.protocol.RequestHeader;
import net.yacy.cora.protocol.ResponseHeader;
import net.yacy.cora.util.ConcurrentLog;
import net.yacy.http.ProxyHandler;
import net.yacy.kelondro.util.FileUtils;
import net.yacy.search.Switchboard;
import net.yacy.server.http.ChunkedInputStream;
@ -144,7 +145,7 @@ public class UrlProxyServlet extends HttpServlet implements Servlet {
hostwithport += ":" + proxyurl.getPort();
}
// 4 - get target url
RequestHeader yacyRequestHeader = YaCyDefaultServlet.convertHeaderFromJetty(request);
RequestHeader yacyRequestHeader = ProxyHandler.convertHeaderFromJetty(request);
yacyRequestHeader.remove(RequestHeader.KEEP_ALIVE);
yacyRequestHeader.remove(HeaderFramework.CONTENT_LENGTH);

@ -675,27 +675,6 @@ public class YaCyDefaultServlet extends HttpServlet {
protected Object invokeServlet(final File targetClass, final RequestHeader request, final serverObjects args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
return rewriteMethod(targetClass).invoke(null, new Object[]{request, args, Switchboard.getSwitchboard()}); // add switchboard
}
/**
* Convert ServletRequest header to YaCy RequestHeader
* @param request ServletRequest
* @return RequestHeader created from ServletRequest
* @deprecated use RequestHeader(HttpServletRequest); but .remove(key) can't be used after switch to new instance
*/
@Deprecated // TODO: only used for proxy, should be handled there
public static RequestHeader convertHeaderFromJetty(HttpServletRequest request) {
RequestHeader result = new RequestHeader();
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
Enumeration<String> headers = request.getHeaders(headerName);
while (headers.hasMoreElements()) {
String header = headers.nextElement();
result.add(headerName, header);
}
}
return result;
}
/**
* Returns the URL base for this peer, determined from request HTTP header "Host" when present. Use this when absolute URL rendering is required,

@ -31,6 +31,7 @@ import net.yacy.cora.protocol.HeaderFramework;
import net.yacy.cora.protocol.RequestHeader;
import net.yacy.cora.protocol.ResponseHeader;
import net.yacy.cora.util.ConcurrentLog;
import net.yacy.http.ProxyHandler;
import net.yacy.kelondro.util.FileUtils;
import net.yacy.search.Switchboard;
import net.yacy.server.http.ChunkedInputStream;
@ -116,7 +117,7 @@ public class YaCyProxyServlet extends HttpServlet implements Servlet {
if (proxyurl.getPort() != -1) {
hostwithport += ":" + proxyurl.getPort();
}
RequestHeader yacyRequestHeader = YaCyDefaultServlet.convertHeaderFromJetty(request);
RequestHeader yacyRequestHeader = ProxyHandler.convertHeaderFromJetty(request);
yacyRequestHeader.remove(RequestHeader.KEEP_ALIVE);
yacyRequestHeader.remove(HeaderFramework.CONTENT_LENGTH);

Loading…
Cancel
Save