svn commit: r589640 - in /lenya/trunk/src/modules-core/linking/java: src/org/apache/lenya/cms/linking/OutgoingLinkRewriter.java test/org/apache/lenya/cms/linking/OutgoingLinkRewriterTest.java

[email protected]
Newsgroups gmane.comp.cms.lenya.cvs
Message-ID <[email protected]>
Author: andreas
Date: Mon Oct 29 07:38:32 2007
New Revision: 589640

URL: http://svn.apache.org/viewvc?rev=589640&view=rev
Log:
Fixed generation of relative URLs, updated test accordingly

Modified:
    lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/OutgoingLinkRewriter.java
    lenya/trunk/src/modules-core/linking/java/test/org/apache/lenya/cms/linking/OutgoingLinkRewriterTest.java

Modified: lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/OutgoingLinkRewriter.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/OutgoingLinkRewriter.java?rev=589640&r1=589639&r2=589640&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/OutgoingLinkRewriter.java (original)
+++ lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/OutgoingLinkRewriter.java Mon Oct 29 07:38:32 2007
@@ -236,7 +236,7 @@
     protected String getRelativeUrlTo(String webappUrl) {
         String relativeUrl;
         if (this.requestUrl.equals(webappUrl)) {
-            relativeUrl = webappUrl.substring(webappUrl.lastIndexOf("/") + 1);
+            relativeUrl = getLastStep(webappUrl);
         }
         else {
             List sourceSteps = toList(this.requestUrl);
@@ -253,10 +253,10 @@
                 prefix = generateUpDots(sourceSteps.size());
             }
             else if (sourceSteps.isEmpty()) {
-                prefix = "./";
+                prefix = getLastStep(this.requestUrl) + "/";
             }
             else if (sourceSteps.size() > 1) {
-                prefix = generateUpDots(sourceSteps.size()) + "/";
+                prefix = generateUpDots(sourceSteps.size() - 1) + "/";
             }
 
             String[] targetArray = (String[]) targetSteps.toArray(new String[targetSteps.size()]);
@@ -264,6 +264,10 @@
             relativeUrl = prefix + targetPath;
         }
         return relativeUrl;
+    }
+
+    protected String getLastStep(String url) {
+        return url.substring(url.lastIndexOf("/") + 1);
     }
 
     protected String generateUpDots(int length) {

Modified: lenya/trunk/src/modules-core/linking/java/test/org/apache/lenya/cms/linking/OutgoingLinkRewriterTest.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/linking/java/test/org/apache/lenya/cms/linking/OutgoingLinkRewriterTest.java?rev=589640&r1=589639&r2=589640&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/linking/java/test/org/apache/lenya/cms/linking/OutgoingLinkRewriterTest.java (original)
+++ lenya/trunk/src/modules-core/linking/java/test/org/apache/lenya/cms/linking/OutgoingLinkRewriterTest.java Mon Oct 29 07:38:32 2007
@@ -29,10 +29,11 @@
         
         assertEquals(rewriter.rewrite("/aaa/bbb/foo"), "foo");
         assertEquals(rewriter.rewrite("/aaa/bbb"), "..");
-        assertEquals(rewriter.rewrite("/aaa/bbb/ccc/ddd"), "./ddd");
-        assertEquals(rewriter.rewrite("/aaa/foo"), "../../foo");
-        assertEquals(rewriter.rewrite("/aaa/foo/bar"), "../../foo/bar");
-        assertEquals(rewriter.rewrite("/foo/bar"), "../../../foo/bar");
+        assertEquals(rewriter.rewrite("/aaa/bbb/ccc/ddd"), "ccc/ddd");
+        assertEquals(rewriter.rewrite("/aaa/foo"), "../foo");
+        assertEquals(rewriter.rewrite("/aaa/foo/bar"), "../foo/bar");
+        assertEquals(rewriter.rewrite("/foo/bar"), "../../foo/bar");
+        assertEquals(rewriter.rewrite("/aaa/foo/bar/baz"), "../foo/bar/baz");
     }
     
 }
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.