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();
+    }
 }


Reply via email to