Author: hlship
Date: Fri Nov 11 19:28:09 2005
New Revision: 332724

URL: http://svn.apache.org/viewcvs?rev=332724&view=rev
Log:
TAPESTRY-741: PopupLinkRenderer overrides wrong method of DefaultLinkRenderer

Added:
    
jakarta/tapestry/trunk/examples/Workbench/src/java/org/apache/tapestry/workbench/ExceptionTab.java
    
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/TapestryUtilsTest.java
      - copied, changed from r332478, 
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/TestTapestryUtils.java
Removed:
    
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/TestTapestryUtils.java
Modified:
    
jakarta/tapestry/trunk/contrib/src/java/org/apache/tapestry/contrib/link/PopupLinkRenderer.java
    jakarta/tapestry/trunk/examples/Workbench/src/context/ExceptionTab.html
    
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/TapestryUtils.java
    jakarta/tapestry/trunk/status.xml

Modified: 
jakarta/tapestry/trunk/contrib/src/java/org/apache/tapestry/contrib/link/PopupLinkRenderer.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/contrib/src/java/org/apache/tapestry/contrib/link/PopupLinkRenderer.java?rev=332724&r1=332723&r2=332724&view=diff
==============================================================================
--- 
jakarta/tapestry/trunk/contrib/src/java/org/apache/tapestry/contrib/link/PopupLinkRenderer.java
 (original)
+++ 
jakarta/tapestry/trunk/contrib/src/java/org/apache/tapestry/contrib/link/PopupLinkRenderer.java
 Fri Nov 11 19:28:09 2005
@@ -19,6 +19,7 @@
 import org.apache.tapestry.IRequestCycle;
 import org.apache.tapestry.PageRenderSupport;
 import org.apache.tapestry.TapestryUtils;
+import org.apache.tapestry.components.ILinkComponent;
 import org.apache.tapestry.engine.ILink;
 import org.apache.tapestry.link.DefaultLinkRenderer;
 
@@ -57,14 +58,14 @@
      * @see DefaultLinkRenderer#constructURL(org.apache.tapestry.engine.ILink, 
String,
      *      org.apache.tapestry.IRequestCycle)
      */
-    protected String constructURL(ILink link, String anchor, IRequestCycle 
cycle)
+    protected String constructURL(ILinkComponent component, IRequestCycle 
cycle)
     {
-        String url = link.getURL(anchor, true);
+        String anchor = component.getAnchor();
+        ILink link = component.getLink(cycle);
 
-        PageRenderSupport support = (PageRenderSupport) cycle
-                .getAttribute(TapestryUtils.PAGE_RENDER_SUPPORT_ATTRIBUTE);
+        String url = link.getURL(anchor, true);
 
-        // TODO: Error if no Body!
+        PageRenderSupport support = TapestryUtils.getPageRenderSupport(cycle, 
component);
 
         String functionName = support.getUniqueString("popup_window");
 
@@ -74,47 +75,15 @@
         builder.begin();
         builder.addln(
                 "var newWindow = window.open({0}, {1}, {2});",
-                normalizeString(url),
-                normalizeString(getWindowName()),
-                normalizeString(getFeatures()));
+                TapestryUtils.enquote(url),
+                TapestryUtils.enquote(getWindowName()),
+                TapestryUtils.enquote(getFeatures()));
         builder.addln("newWindow.focus();");
         builder.end();
 
         support.addBodyScript(builder.toString());
 
         return "javascript:" + functionName + "();";
-    }
-
-    private static final String QUOTE = "\"";
-
-    static String normalizeString(String str)
-    {
-        if (HiveMind.isBlank(str))
-            return QUOTE + QUOTE;
-
-        int length = str.length();
-
-        // Doing this char by char is inefficient but Good Enough
-
-        StringBuffer buffer = new StringBuffer(length + 2);
-
-        buffer.append(QUOTE);
-
-        for (int i = 0; i < length; i++)
-        {
-            char ch = str.charAt(i);
-
-            // Embedded quotes and backslashes are escaped with a backslash.
-
-            if (ch == '"' || ch == '\\')
-                buffer.append('\\');
-
-            buffer.append(ch);
-        }
-
-        buffer.append(QUOTE);
-
-        return buffer.toString();
     }
 
     public String getWindowName()

Modified: 
jakarta/tapestry/trunk/examples/Workbench/src/context/ExceptionTab.html
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/examples/Workbench/src/context/ExceptionTab.html?rev=332724&r1=332723&r2=332724&view=diff
==============================================================================
--- jakarta/tapestry/trunk/examples/Workbench/src/context/ExceptionTab.html 
(original)
+++ jakarta/tapestry/trunk/examples/Workbench/src/context/ExceptionTab.html Fri 
Nov 11 19:28:09 2005
@@ -13,7 +13,7 @@
 The look and feel of the exception reporting page can be customized by 
applications.
 
 <p>
-Click <a href="ErrorFest.page">this link</a> for 
+Click <a jwcid="link">this link</a> for 
 a demonstration.  The specification of the target page
 has deliberate errors.
 

Added: 
jakarta/tapestry/trunk/examples/Workbench/src/java/org/apache/tapestry/workbench/ExceptionTab.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/examples/Workbench/src/java/org/apache/tapestry/workbench/ExceptionTab.java?rev=332724&view=auto
==============================================================================
--- 
jakarta/tapestry/trunk/examples/Workbench/src/java/org/apache/tapestry/workbench/ExceptionTab.java
 (added)
+++ 
jakarta/tapestry/trunk/examples/Workbench/src/java/org/apache/tapestry/workbench/ExceptionTab.java
 Fri Nov 11 19:28:09 2005
@@ -0,0 +1,38 @@
+// Copyright 2005 The Apache Software Foundation

+//

+// Licensed under the Apache License, Version 2.0 (the "License");

+// you may not use this file except in compliance with the License.

+// You may obtain a copy of the License at

+//

+//     http://www.apache.org/licenses/LICENSE-2.0

+//

+// Unless required by applicable law or agreed to in writing, software

+// distributed under the License is distributed on an "AS IS" BASIS,

+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+// See the License for the specific language governing permissions and

+// limitations under the License.

+

+package org.apache.tapestry.workbench;

+

+import org.apache.tapestry.IComponent;

+import org.apache.tapestry.annotations.Bean;

+import org.apache.tapestry.annotations.Component;

+import org.apache.tapestry.contrib.link.PopupLinkRenderer;

+import org.apache.tapestry.html.BasePage;

+import org.apache.tapestry.link.ILinkRenderer;

+

+/**

+ * Page used to raise a popup window containing the ErrorFest page, which has 
errors.

+ * 

+ * @author Howard M. Lewis Ship

+ * @since 4.0

+ */

+public abstract class ExceptionTab extends BasePage

+{

+    @Bean(PopupLinkRenderer.class)

+    public abstract ILinkRenderer getLinkRenderer();

+

+    @Component(type = "PageLink", bindings =

+    { "page=literal:ErrorFest", "renderer=bean:linkRenderer" })

+    public abstract IComponent getLink();

+}


Modified: 
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/TapestryUtils.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/TapestryUtils.java?rev=332724&r1=332723&r2=332724&view=diff
==============================================================================
--- 
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/TapestryUtils.java
 (original)
+++ 
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/TapestryUtils.java
 Fri Nov 11 19:28:09 2005
@@ -34,6 +34,8 @@
 
     private static final char BACKSLASH = '\\';
 
+    private static final String EMPTY_QUOTES = "''";
+
     /**
      * Stores an attribute into the request cycle, verifying that no object 
with that key is already
      * present.
@@ -221,7 +223,8 @@
 
     public static String enquote(String input)
     {
-        Defense.notNull(input, "input");
+        if (input == null)
+            return EMPTY_QUOTES;
 
         char[] chars = input.toCharArray();
 

Copied: 
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/TapestryUtilsTest.java
 (from r332478, 
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/TestTapestryUtils.java)
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/TapestryUtilsTest.java?p2=jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/TapestryUtilsTest.java&p1=jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/TestTapestryUtils.java&r1=332478&r2=332724&rev=332724&view=diff
==============================================================================
--- 
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/TestTapestryUtils.java
 (original)
+++ 
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/TapestryUtilsTest.java
 Fri Nov 11 19:28:09 2005
@@ -24,7 +24,7 @@
  * @author Howard M. Lewis Ship
  * @since 4.0
  */
-public class TestTapestryUtils extends BaseComponentTestCase
+public class TapestryUtilsTest extends BaseComponentTestCase
 {
 
     private IRequestCycle newCycle(String key, Object attribute)
@@ -249,6 +249,11 @@
 
         assertEquals("'this is a \\'single quote\\''", TapestryUtils
                 .enquote("this is a 'single quote'"));
+    }
+
+    public void testEnquoteNull()
+    {
+        assertEquals("''", TapestryUtils.enquote(null));
     }
 
     public void testConvertTapestryIdToNMToken()

Modified: jakarta/tapestry/trunk/status.xml
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/status.xml?rev=332724&r1=332723&r2=332724&view=diff
==============================================================================
--- jakarta/tapestry/trunk/status.xml (original)
+++ jakarta/tapestry/trunk/status.xml Fri Nov 11 19:28:09 2005
@@ -62,6 +62,7 @@
       <action type="fix" dev="HLS" fixes-bug="TAPESTRY-298">Wrong 
org.apache.tapestry.specification-path in javadoc</action>
       <action type="fix" dev="HLS" fixes-bug="TAPESTRY-302">Palette component 
select arrows appear enabled on load</action>
       <action type="fix" dev="HLS" fixes-bug="TAPESTRY-359">Localization 
directive cuts trailing space</action>
+      <action type="fix" dev="HLS" fixes-bug="TAPESTRY-741">PopupLinkRenderer 
overrides wrong method of DefaultLinkRenderer</action>
     </release>
     <release version="4.0-beta-12" date="Oct 30 2005">
       <action type="fix" dev="HLS" fixes-bug="TAPESTRY-718">Asset injection 
makes assets appear as null inside finishLoad()</action>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to