You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by im...@apache.org on 2008/04/09 07:49:06 UTC
svn commit: r646193 - in /myfaces/orchestra/trunk/core/src:
main/java/org/apache/myfaces/orchestra/requestParameterProvider/
test/java/org/apache/myfaces/orchestra/requestParameterProvider/
Author: imario
Date: Tue Apr 8 22:49:05 2008
New Revision: 646193
URL: http://svn.apache.org/viewvc?rev=646193&view=rev
Log:
ORCHESTRA-21: deal with relative urls too
Modified:
myfaces/orchestra/trunk/core/src/main/java/org/apache/myfaces/orchestra/requestParameterProvider/RequestParameterProviderManager.java
myfaces/orchestra/trunk/core/src/test/java/org/apache/myfaces/orchestra/requestParameterProvider/TestRequestParameterProviderManager.java
Modified: myfaces/orchestra/trunk/core/src/main/java/org/apache/myfaces/orchestra/requestParameterProvider/RequestParameterProviderManager.java
URL: http://svn.apache.org/viewvc/myfaces/orchestra/trunk/core/src/main/java/org/apache/myfaces/orchestra/requestParameterProvider/RequestParameterProviderManager.java?rev=646193&r1=646192&r2=646193&view=diff
==============================================================================
--- myfaces/orchestra/trunk/core/src/main/java/org/apache/myfaces/orchestra/requestParameterProvider/RequestParameterProviderManager.java (original)
+++ myfaces/orchestra/trunk/core/src/main/java/org/apache/myfaces/orchestra/requestParameterProvider/RequestParameterProviderManager.java Tue Apr 8 22:49:05 2008
@@ -25,8 +25,10 @@
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Set;
/**
* The manager which manage all the attached providers and add their fields to the url.
@@ -51,7 +53,7 @@
private static final String PAGE_LINK_SEP = "#";
- private static final String SCHEME_HTTP = "http";
+ private static final Set SCHEMES_TO_EXCLUDE = new HashSet();
private static final String PAGE_PARAMETER_SEP = "?";
private static final String PARAMETER_SEP = "&";
@@ -63,6 +65,13 @@
// should not be...
private transient List providers;
+ static
+ {
+ SCHEMES_TO_EXCLUDE.add("javascript");
+ SCHEMES_TO_EXCLUDE.add("ftp");
+ SCHEMES_TO_EXCLUDE.add("mailto");
+ }
+
private RequestParameterProviderManager()
{
}
@@ -127,11 +136,15 @@
return url;
}
- if (url.length() < SCHEME_HTTP.length()
- || !url.substring(0,SCHEME_HTTP.length()).equalsIgnoreCase(SCHEME_HTTP))
+ int pos = url.indexOf(":");
+ if (pos > 0)
{
- // not http (or https, we just check for http, https would match that too)
- return url;
+ String probablyScheme = url.substring(0, pos);
+ if (SCHEMES_TO_EXCLUDE.contains(probablyScheme))
+ {
+ // a scheme we know to not encode to
+ return url;
+ }
}
StringBuffer sb = new StringBuffer();
Modified: myfaces/orchestra/trunk/core/src/test/java/org/apache/myfaces/orchestra/requestParameterProvider/TestRequestParameterProviderManager.java
URL: http://svn.apache.org/viewvc/myfaces/orchestra/trunk/core/src/test/java/org/apache/myfaces/orchestra/requestParameterProvider/TestRequestParameterProviderManager.java?rev=646193&r1=646192&r2=646193&view=diff
==============================================================================
--- myfaces/orchestra/trunk/core/src/test/java/org/apache/myfaces/orchestra/requestParameterProvider/TestRequestParameterProviderManager.java (original)
+++ myfaces/orchestra/trunk/core/src/test/java/org/apache/myfaces/orchestra/requestParameterProvider/TestRequestParameterProviderManager.java Tue Apr 8 22:49:05 2008
@@ -52,6 +52,8 @@
assertEquals("http://domain/path?FIELD=VALUE#22", man.encodeAndAttachParameters("http://domain/path#22"));
assertEquals("http://domain/path?ab=cd&FIELD=VALUE#22", man.encodeAndAttachParameters("http://domain/path?ab=cd#22"));
assertEquals("javascript:anyMethod(anyUrl)", man.encodeAndAttachParameters("javascript:anyMethod(anyUrl)"));
+ assertEquals("relative/url?FIELD=VALUE", man.encodeAndAttachParameters("relative/url"));
+ assertEquals("useless:/url?FIELD=VALUE", man.encodeAndAttachParameters("useless:/url"));
assertEquals("#", man.encodeAndAttachParameters("#"));
}
}