You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by dr...@apache.org on 2010/01/11 21:57:06 UTC

svn commit: r898062 - in /tapestry/tapestry5/trunk/tapestry-core/src: main/java/org/apache/tapestry5/internal/services/LinkImpl.java test/java/org/apache/tapestry5/internal/services/LinkImplTest.java

Author: drobiazko
Date: Mon Jan 11 20:57:05 2010
New Revision: 898062

URL: http://svn.apache.org/viewvc?rev=898062&view=rev
Log:
TAP5-937: LinkImpl does not handle parameters properly when passed into the constructor

Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkImpl.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkImplTest.java

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkImpl.java?rev=898062&r1=898061&r2=898062&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkImpl.java Mon Jan 11 20:57:05 2010
@@ -131,7 +131,7 @@
 
         builder.append(absoluteURI);
 
-        String sep = "?";
+        String sep = absoluteURI.contains("?") ? "&" : "?";
 
         for (String name : getParameterNames())
         {

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkImplTest.java?rev=898062&r1=898061&r2=898062&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkImplTest.java Mon Jan 11 20:57:05 2010
@@ -16,9 +16,7 @@
 
 import org.apache.tapestry5.Link;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.ContextPathEncoder;
 import org.apache.tapestry5.services.Response;
-import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 public class LinkImplTest extends InternalBaseTestCase
@@ -29,14 +27,6 @@
 
     private static final String ENCODED = "*encoded*";
 
-    private ContextPathEncoder contextPathEncoder;
-
-    @BeforeClass
-    public void setup()
-    {
-        contextPathEncoder = getService(ContextPathEncoder.class);
-    }
-
     @Test
     public void simple_redirect()
     {
@@ -131,4 +121,25 @@
 
         verify();
     }
+
+    @Test
+    public void to_uri_with_added_parameters_and_on_construction_uri()
+    {
+    	RequestPathOptimizer optimizer = mockRequestPathOptimizer();
+    	Response response = mockResponse();
+    	
+    	String expectedURI = "/ctx/foo?foo=bar&baz=barney";
+		train_encodeURL(response, expectedURI, expectedURI);
+    	
+    	replay();
+    	
+    	
+    	Link link = new LinkImpl("/ctx/foo?foo=bar", false, false, response, optimizer);
+    	link.addParameter("baz", "barney");
+    	
+    	assertEquals(link.toURI(), expectedURI);
+    	
+    	
+    	verify();
+    }
 }