Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Erdfelt2015-11-13 22:19:38 +0000
committerJoakim Erdfelt2015-11-13 22:19:38 +0000
commit2cac0b0052bb2fff37e1c315d84f74cf4245ead9 (patch)
treebb2259fd4ac2eda5c61791b26f6d02b30403548c
parentdac1c56e79434523dcf0d5c33f23ae7354df40c6 (diff)
downloadorg.eclipse.jetty.project-2cac0b0052bb2fff37e1c315d84f74cf4245ead9.tar.gz
org.eclipse.jetty.project-2cac0b0052bb2fff37e1c315d84f74cf4245ead9.tar.xz
org.eclipse.jetty.project-2cac0b0052bb2fff37e1c315d84f74cf4245ead9.zip
482173 - Track original Query string in Rewrite RuleContainer too
-rw-r--r--jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RuleContainer.java14
1 files changed, 13 insertions, 1 deletions
diff --git a/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RuleContainer.java b/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RuleContainer.java
index 34ae2b7574..08f0e9e3ff 100644
--- a/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RuleContainer.java
+++ b/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RuleContainer.java
@@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.server.AbstractHttpConnection;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.util.LazyList;
+import org.eclipse.jetty.util.URIUtil;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
@@ -38,11 +39,13 @@ import org.eclipse.jetty.util.log.Logger;
public class RuleContainer extends Rule
{
+ public static final String ORIGINAL_QUERYSTRING_ATTRIBUTE_SUFFIX = ".QUERYSTRING";
private static final Logger LOG = Log.getLogger(RuleContainer.class);
protected Rule[] _rules;
protected String _originalPathAttribute;
+ protected String _originalQueryStringAttribute;
protected boolean _rewriteRequestURI=true;
protected boolean _rewritePathInfo=true;
@@ -172,6 +175,7 @@ public class RuleContainer extends Rule
public void setOriginalPathAttribute(String originalPathAttribte)
{
_originalPathAttribute=originalPathAttribte;
+ _originalQueryStringAttribute = originalPathAttribte + ORIGINAL_QUERYSTRING_ATTRIBUTE_SUFFIX;
}
/**
@@ -195,18 +199,26 @@ public class RuleContainer extends Rule
protected String apply(String target, HttpServletRequest request, HttpServletResponse response) throws IOException
{
boolean original_set=_originalPathAttribute==null;
+
+ target = URIUtil.compactPath(target);
for (Rule rule : _rules)
{
String applied=rule.matchAndApply(target,request, response);
if (applied!=null)
- {
+ {
+ applied = URIUtil.compactPath(applied);
+
LOG.debug("applied {}",rule);
LOG.debug("rewrote {} to {}",target,applied);
if (!original_set)
{
original_set=true;
request.setAttribute(_originalPathAttribute, target);
+
+ String query = request.getQueryString();
+ if (query != null)
+ request.setAttribute(_originalQueryStringAttribute,query);
}
if (_rewriteRequestURI)

Back to the top