Author: andreas
Date: Wed Jul 1 17:31:33 2009
New Revision: 790285
URL: http://svn.apache.org/viewvc?rev=790285&view=rev
Log:
Use regexp matching instead of enumerating example protocols in RelativeToAbsoluteLinkRewriter.
Modified:
lenya/branches/BRANCH_2_0_X/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/RelativeToAbsoluteLinkRewriter.java
lenya/branches/BRANCH_2_0_X/src/modules-core/linking/java/test/org/apache/lenya/cms/linking/RelativeToAbsoluteLinkRewriterTest.java
Modified: lenya/branches/BRANCH_2_0_X/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/RelativeToAbsoluteLinkRewriter.java
URL: http://svn.apache.org/viewvc/lenya/branches/BRANCH_2_0_X/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/RelativeToAbsoluteLinkRewriter.java?rev=790285&r1=790284&r2=790285&view=diff
==============================================================================
--- lenya/branches/BRANCH_2_0_X/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/RelativeToAbsoluteLinkRewriter.java (original)
+++ lenya/branches/BRANCH_2_0_X/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/RelativeToAbsoluteLinkRewriter.java Wed Jul 1 17:31:33 2009
@@ -19,16 +19,16 @@
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.regex.Pattern;
import org.apache.lenya.util.Assert;
public class RelativeToAbsoluteLinkRewriter implements LinkRewriter {
private String sourceUri;
-
- protected static final String[] PROTOCOLS = { "/", "http:", "https:", "ftp:", "ftps:",
- "mailto:", "file:" };
-
+
+ protected static final Pattern PROTOCOL_REGEX = Pattern.compile("[A-Za-z0-9\\-]+\\:");
+
public RelativeToAbsoluteLinkRewriter(String sourceUri) {
Assert.notNull("source URI", sourceUri);
this.sourceUri = sourceUri;
@@ -36,12 +36,7 @@
public boolean matches(String url) {
Assert.notNull("url", url);
- for (int i = 0; i < PROTOCOLS.length; i++) {
- if (url.startsWith(PROTOCOLS[i])) {
- return false;
- }
- }
- return true;
+ return !url.startsWith("/") && !PROTOCOL_REGEX.matcher(url).find();
}
public String rewrite(final String url) {
Modified: lenya/branches/BRANCH_2_0_X/src/modules-core/linking/java/test/org/apache/lenya/cms/linking/RelativeToAbsoluteLinkRewriterTest.java
URL: http://svn.apache.org/viewvc/lenya/branches/BRANCH_2_0_X/src/modules-core/linking/java/test/org/apache/lenya/cms/linking/RelativeToAbsoluteLinkRewriterTest.java?rev=790285&r1=790284&r2=790285&view=diff
==============================================================================
--- lenya/branches/BRANCH_2_0_X/src/modules-core/linking/java/test/org/apache/lenya/cms/linking/RelativeToAbsoluteLinkRewriterTest.java (original)
+++ lenya/branches/BRANCH_2_0_X/src/modules-core/linking/java/test/org/apache/lenya/cms/linking/RelativeToAbsoluteLinkRewriterTest.java Wed Jul 1 17:31:33 2009
@@ -17,24 +17,32 @@
*/
package org.apache.lenya.cms.linking;
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
+import junit.framework.TestCase;
/**
* Test case for relative-to-absolute link rewriting.
*/
-public class RelativeToAbsoluteLinkRewriterTest extends AbstractAccessControlTest {
+public class RelativeToAbsoluteLinkRewriterTest extends TestCase {
private static final String SOURCE_URI = "/foo/bar";
+ private final LinkRewriter rewriter = new RelativeToAbsoluteLinkRewriter(SOURCE_URI);
/**
* Test case for relative-to-absolute link rewriting.
*/
public void testLinks() {
- RelativeToAbsoluteLinkRewriter rewriter = new RelativeToAbsoluteLinkRewriter(SOURCE_URI);
- assertEquals(rewriter.rewrite("baz"), "/foo/baz");
- assertEquals(rewriter.rewrite("bar/baz"), "/foo/bar/baz");
- assertEquals(rewriter.rewrite("../baz"), "/baz");
- assertEquals(rewriter.rewrite(".."), "/");
+ assertEquals(rewrite("baz"), "/foo/baz");
+ assertEquals(rewrite("bar/baz"), "/foo/bar/baz");
+ assertEquals(rewrite("../baz"), "/baz");
+ assertEquals(rewrite(".."), "/");
+
+ assertEquals(rewrite("/foo/bar"), "/foo/bar");
+ assertEquals(rewrite("lenya-document:123"), "lenya-document:123");
+ assertEquals(rewrite("http://apache.org"), "http://apache.org");
+ }
+
+ protected String rewrite(String input) {
+ return this.rewriter.matches(input) ? this.rewriter.rewrite(input) : input;
}
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.