[prev in list] [next in list] [prev in thread] [next in thread]
List: xml-cocoon-cvs
Subject: svn commit: r746648 - in /cocoon/trunk/core:
From: joerg () apache ! org
Date: 2009-02-22 8:49:26
Message-ID: 20090222084926.D259E2388995 () eris ! apache ! org
[Download RAW message or body]
Author: joerg
Date: Sun Feb 22 08:49:25 2009
New Revision: 746648
URL: http://svn.apache.org/viewvc?rev=746648&view=rev
Log:
COCOON-1887: Change HostSelector to be case-insensitive according to RFC3986 section \
3.2.2.
Modified:
cocoon/trunk/core/cocoon-core/src/test/java/org/apache/cocoon/selection/HostSelectorTestCase.java
cocoon/trunk/core/cocoon-core/src/test/resources/org/apache/cocoon/selection/HostSelectorTestCase.xtest
cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-components/src/changes/changes.xml
cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-components/src/main/java/org/apache/cocoon/selection/HostSelector.java
cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/selection/NamedPatternsSelector.java
Modified: cocoon/trunk/core/cocoon-core/src/test/java/org/apache/cocoon/selection/HostSelectorTestCase.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/test/java/org/apac \
he/cocoon/selection/HostSelectorTestCase.java?rev=746648&r1=746647&r2=746648&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/test/java/org/apache/cocoon/selection/HostSelectorTestCase.java \
(original)
+++ cocoon/trunk/core/cocoon-core/src/test/java/org/apache/cocoon/selection/HostSelectorTestCase.java \
Sun Feb 22 08:49:25 2009 @@ -19,13 +19,14 @@
import junit.framework.Test;
import junit.framework.TestSuite;
import junit.textui.TestRunner;
+
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.SitemapComponentTestCase;
public class HostSelectorTestCase extends SitemapComponentTestCase {
- private final String HOST_SELECTOR = "host";
+ private static final String HOST_SELECTOR = "host";
/**
* Run this test suite from commandline
@@ -92,4 +93,30 @@
System.out.println(result);
assertTrue( "Test if host is not " + expectedHostName, !result );
}
+
+ /**
+ * Test the host selector matches regardless of whether the hostname and
+ * value are upper or lower case.
+ */
+ public void testHostCaseInsensitive() throws Exception {
+ final String hostLower = "myhost-dns-name";
+ final String hostUpper = "MYHOST-DNS-NAME-IN-A-EUROPE-COUNTRY";
+ String expectedHostName;
+
+ Parameters parameters = new Parameters();
+ boolean result;
+
+ getRequest().setHeader("Host", hostUpper);
+ expectedHostName = "myhost-eu";
+ result = this.select(HOST_SELECTOR, expectedHostName, parameters);
+ System.out.println(result);
+ assertTrue("Test upper case host doesn't match lower case value as \
expected.", result); +
+ getRequest().setHeader("Host", hostLower);
+ expectedHostName = "myhost-uppercase";
+ result = this.select(HOST_SELECTOR, expectedHostName, parameters);
+ System.out.println(result);
+ assertTrue("Test lower case host doesn't match upper case value as \
expected.", result); + }
+
}
Modified: cocoon/trunk/core/cocoon-core/src/test/resources/org/apache/cocoon/selection/HostSelectorTestCase.xtest
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/test/resources/org \
/apache/cocoon/selection/HostSelectorTestCase.xtest?rev=746648&r1=746647&r2=746648&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/test/resources/org/apache/cocoon/selection/HostSelectorTestCase.xtest \
(original)
+++ cocoon/trunk/core/cocoon-core/src/test/resources/org/apache/cocoon/selection/HostSelectorTestCase.xtest \
Sun Feb 22 08:49:25 2009 @@ -28,6 +28,7 @@
name="host">
<host name="myhost-eu" value="myhost-dns-name-in-a-europe-country"/>
<host name="myhost-us" value="myhost-dns-name-in-a-us-state"/>
+ <host name="myhost-uppercase" value="MYHOST-DNS-NAME"/>
</component-instance>
</selectors>
</components>
Modified: cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-components/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-components/src/changes/changes.xml?rev=746648&r1=746647&r2=746648&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-components/src/changes/changes.xml \
(original)
+++ cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-components/src/changes/changes.xml \
Sun Feb 22 08:49:25 2009 @@ -24,6 +24,11 @@
+-->
<document>
<body>
+ <release version="1.0.1" date="TBD" description="to be done">
+ <action dev="joerg" type="update" fixes-bug="COCOON-1887" due-to="Andrew \
Stevens" due-to-email="stevensa@users.sourceforge.net"> + Change HostSelector \
to be case-insensitive according to RFC3986 section 3.2.2. + </action>
+ </release>
<release version="1.0.0" date="TBA" description="released">
<action dev="rgoers" type="fix" issue="COCOON-1574">
Created XPathXMLFileModule to fix problems with XMLFileModule. Added \
getAttributeValue to JXPathHelper
Modified: cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-components/src/main/java/org/apache/cocoon/selection/HostSelector.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-comp \
onents/src/main/java/org/apache/cocoon/selection/HostSelector.java?rev=746648&r1=746647&r2=746648&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-components/src/main/java/org/apache/cocoon/selection/HostSelector.java \
(original)
+++ cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-components/src/main/java/org/apache/cocoon/selection/HostSelector.java \
Sun Feb 22 08:49:25 2009 @@ -16,12 +16,13 @@
*/
package org.apache.cocoon.selection;
+import java.util.Map;
+
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import java.util.Map;
+import org.apache.cocoon.environment.ObjectModelHelper;
/**
* A <code>Selector</code> that matches a string from within the host parameter
@@ -68,6 +69,6 @@
return false;
}
- return checkPatterns(expression, host);
+ return checkPatterns(expression, host, false);
}
}
Modified: cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/selection/NamedPatternsSelector.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl \
/src/main/java/org/apache/cocoon/selection/NamedPatternsSelector.java?rev=746648&r1=746647&r2=746648&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/selection/NamedPatternsSelector.java \
(original)
+++ cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/selection/NamedPatternsSelector.java \
Sun Feb 22 08:49:25 2009 @@ -95,7 +95,7 @@
}
/**
- * Checks if <code>value</code> is a substring of one of the patterns associated
+ * Checks if <code>value</code> is a (case-sensitive) substring of one of the \
patterns associated
* to <code>expression</code>
*
* @param expression the expression that is selected
@@ -103,6 +103,19 @@
* @return true if <code>value</code> matches one of the patterns
*/
protected boolean checkPatterns(String expression, String value) {
+ return checkPatterns(expression, value, true);
+ }
+
+ /**
+ * Checks if <code>value</code> is a substring of one of the patterns associated
+ * to <code>expression</code>
+ *
+ * @param expression the expression that is selected
+ * @param value the value to check
+ * @param caseSensitive boolean switch whether comparison is done case-sensitive \
+ * @return true if <code>value</code> matches one of the patterns
+ */
+ protected boolean checkPatterns(String expression, String value, boolean \
caseSensitive) { if (value == null) {
getLogger().debug("No value given -- failing.");
return false;
@@ -114,9 +127,14 @@
return false;
}
+ if (!caseSensitive) {
+ value = value.toLowerCase();
+ }
+
// Does a pattern match 'value' ?
for (int i = 0; i < patterns.length; i++) {
- if (value.indexOf(patterns[i]) != -1) {
+ if ((caseSensitive && value.indexOf(patterns[i]) != -1)
+ || (!caseSensitive && value.indexOf(patterns[i].toLowerCase()) != \
-1)) {
getLogger().debug(expression + " selected value " + value);
return true;
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic