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]