You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by ni...@apache.org on 2008/11/21 21:37:49 UTC
svn commit: r719704 - in /struts/struts2/trunk:
core/src/main/java/org/apache/struts2/components/
plugins/portlet/src/main/java/org/apache/struts2/components/
plugins/portlet/src/test/java/org/apache/struts2/components/
Author: nilsga
Date: Fri Nov 21 12:37:49 2008
New Revision: 719704
URL: http://svn.apache.org/viewvc?rev=719704&view=rev
Log:
WW-2783 Evaluate anchor. Fix suggested by Ralf Fischer.
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java
struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/components/PortletUrlRenderer.java
struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/components/PortletUrlRendererTest.java
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java?rev=719704&r1=719703&r2=719704&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java Fri Nov 21 12:37:49 2008
@@ -82,7 +82,7 @@
result = UrlHelper.buildUrl(_value, urlComponent.req, urlComponent.res, urlComponent.parameters, scheme, urlComponent.includeContext, urlComponent.encode, urlComponent.forceAddSchemeHostAndPort, urlComponent.escapeAmp);
}
if ( urlComponent.anchor != null && urlComponent.anchor.length() > 0 ) {
- result += '#' + urlComponent.anchor;
+ result += '#' + urlComponent.findString(urlComponent.anchor);
}
String var = urlComponent.getVar();
Modified: struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/components/PortletUrlRenderer.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/components/PortletUrlRenderer.java?rev=719704&r1=719703&r2=719704&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/components/PortletUrlRenderer.java (original)
+++ struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/components/PortletUrlRenderer.java Fri Nov 21 12:37:49 2008
@@ -43,6 +43,10 @@
* {@inheritDoc}
*/
public void renderUrl(Writer writer, URL urlComponent) {
+ String action = null;
+ if(urlComponent.action != null) {
+ action = urlComponent.findString(urlComponent.action);
+ }
String scheme = urlComponent.req.getScheme();
if (urlComponent.scheme != null) {
@@ -52,7 +56,7 @@
String result;
urlComponent.namespace = urlComponent.determineNamespace(urlComponent.namespace, urlComponent.stack, urlComponent.req);
if (onlyActionSpecified(urlComponent)) {
- result = PortletUrlHelper.buildUrl(urlComponent.action, urlComponent.namespace, urlComponent.method, urlComponent.parameters, urlComponent.portletUrlType, urlComponent.portletMode, urlComponent.windowState);
+ result = PortletUrlHelper.buildUrl(action, urlComponent.namespace, urlComponent.method, urlComponent.parameters, urlComponent.portletUrlType, urlComponent.portletMode, urlComponent.windowState);
} else if(onlyValueSpecified(urlComponent)){
result = PortletUrlHelper.buildResourceUrl(urlComponent.value, urlComponent.parameters);
}
@@ -60,7 +64,7 @@
result = createDefaultUrl(urlComponent);
}
if ( urlComponent.anchor != null && urlComponent.anchor.length() > 0 ) {
- result += '#' + urlComponent.anchor;
+ result += '#' + urlComponent.findString(urlComponent.anchor);
}
String var = urlComponent.getVar();
Modified: struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/components/PortletUrlRendererTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/components/PortletUrlRendererTest.java?rev=719704&r1=719703&r2=719704&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/components/PortletUrlRendererTest.java (original)
+++ struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/components/PortletUrlRendererTest.java Fri Nov 21 12:37:49 2008
@@ -44,11 +44,43 @@
public class PortletUrlRendererTest extends StrutsTestCase {
- PortletUrlRenderer renderer;
+ PortletUrlRenderer renderer;
+ MockPortletURL renderUrl;
+ MockPortletURL actionUrl;
+ MockRenderRequest request;
+ MockRenderResponse response;
+ ActionContext ctx;
+ ValueStack stack;
public void setUp() throws Exception {
super.setUp();
- renderer = new PortletUrlRenderer();
+ renderer = new PortletUrlRenderer();
+ renderUrl = new MockPortletURL(
+ new MockPortalContext(), "render");
+ actionUrl = new MockPortletURL(
+ new MockPortalContext(), "action");
+ request = new MockRenderRequest();
+ response = new MockRenderResponse() {
+ @Override
+ public PortletURL createActionURL() {
+ return actionUrl;
+ }
+ @Override
+ public PortletURL createRenderURL() {
+ return renderUrl;
+ }
+ };
+
+ ctx = ActionContext.getContext();
+ ctx.put(PortletActionConstants.PHASE,
+ PortletActionConstants.RENDER_PHASE);
+ ctx.put(PortletActionConstants.REQUEST, request);
+ ctx.put(PortletActionConstants.RESPONSE, response);
+
+ Map<PortletMode, String> modeMap = new HashMap<PortletMode, String>();
+ modeMap.put(PortletMode.VIEW, "/view");
+ ctx.put(PortletActionConstants.MODE_NAMESPACE_MAP, modeMap);
+ stack = ctx.getValueStack();
}
/**
@@ -57,26 +89,7 @@
*/
public void testShouldIncludeCurrentNamespaceIfNoNamespaceSpecifiedForRenderUrl()
throws Exception {
- final MockPortletURL portletUrl = new MockPortletURL(
- new MockPortalContext(), "render");
- MockRenderRequest request = new MockRenderRequest();
- MockRenderResponse response = new MockRenderResponse() {
- @Override
- public PortletURL createRenderURL() {
- return portletUrl;
- }
- };
-
- ActionContext ctx = ActionContext.getContext();
- ctx.put(PortletActionConstants.PHASE,
- PortletActionConstants.RENDER_PHASE);
- ctx.put(PortletActionConstants.REQUEST, request);
- ctx.put(PortletActionConstants.RESPONSE, response);
-
- Map<PortletMode, String> modeMap = new HashMap<PortletMode, String>();
- modeMap.put(PortletMode.VIEW, "/view");
- ctx.put(PortletActionConstants.MODE_NAMESPACE_MAP, modeMap);
- ValueStack stack = ctx.getValueStack();
+
URL url = new URL(stack, new PortletServletRequest(request, null),
new PortletServletResponse(response));
@@ -92,7 +105,7 @@
StringWriter renderOutput = new StringWriter();
renderer.renderUrl(renderOutput, url);
- String action = portletUrl
+ String action = renderUrl
.getParameter(PortletActionConstants.ACTION_PARAM);
assertEquals("/view/current_namespace/testAction", action);
}
@@ -103,26 +116,7 @@
*/
public void testShouldIncludeCurrentNamespaceIfNoNamespaceSpecifiedForRenderFormUrl()
throws Exception {
- final MockPortletURL portletUrl = new MockPortletURL(
- new MockPortalContext(), "render");
- MockRenderRequest request = new MockRenderRequest();
- MockRenderResponse response = new MockRenderResponse() {
- @Override
- public PortletURL createActionURL() {
- return portletUrl;
- }
- };
-
- ActionContext ctx = ActionContext.getContext();
- ctx.put(PortletActionConstants.PHASE,
- PortletActionConstants.RENDER_PHASE);
- ctx.put(PortletActionConstants.REQUEST, request);
- ctx.put(PortletActionConstants.RESPONSE, response);
-
- Map<PortletMode, String> modeMap = new HashMap<PortletMode, String>();
- modeMap.put(PortletMode.VIEW, "/view");
- ctx.put(PortletActionConstants.MODE_NAMESPACE_MAP, modeMap);
- ValueStack stack = ctx.getValueStack();
+
Form form = new Form(stack, new PortletServletRequest(request, null),
new PortletServletResponse(response));
@@ -135,11 +129,65 @@
ai.setAction(new Object());
ctx.setActionInvocation(ai);
- StringWriter renderOutput = new StringWriter();
renderer.renderFormUrl(form);
- String action = portletUrl
+ String action = actionUrl
.getParameter(PortletActionConstants.ACTION_PARAM);
assertEquals("/view/current_namespace/testAction", action);
- }
+ }
+
+ public void testShouldEvaluateActionAsOGNLExpression() throws Exception {
+
+ TestObject obj = new TestObject();
+ obj.someProperty = "EvaluatedProperty";
+ stack.push(obj);
+ MockActionInvocation ai = new MockActionInvocation();
+ MockActionProxy ap = new MockActionProxy();
+ ap.setActionName("testAction");
+ ap.setNamespace("");
+ ai.setProxy(ap);
+ ai.setStack(stack);
+ ctx.setActionInvocation(ai);
+
+ URL url = new URL(stack, new PortletServletRequest(request, null),
+ new PortletServletResponse(response));
+ url.setAction("%{someProperty}");
+
+ StringWriter renderOutput = new StringWriter();
+ renderer.renderUrl(renderOutput, url);
+
+ String action = renderUrl
+ .getParameter(PortletActionConstants.ACTION_PARAM);
+ assertEquals("/view/EvaluatedProperty", action);
+
+ }
+
+ public void testShouldEvaluateAnchorAsOGNLExpression() throws Exception {
+
+ TestObject obj = new TestObject();
+ obj.someProperty = "EvaluatedProperty";
+ stack.push(obj);
+ MockActionInvocation ai = new MockActionInvocation();
+ MockActionProxy ap = new MockActionProxy();
+ ap.setActionName("testAction");
+ ap.setNamespace("");
+ ai.setProxy(ap);
+ ai.setStack(stack);
+ ctx.setActionInvocation(ai);
+
+ URL url = new URL(stack, new PortletServletRequest(request, null),
+ new PortletServletResponse(response));
+ url.setAnchor("%{someProperty}");
+
+ StringWriter renderOutput = new StringWriter();
+ renderer.renderUrl(renderOutput, url);
+ assertTrue(renderOutput.toString().indexOf("#EvaluatedProperty") != -1);
+
+ }
+
+ private final static class TestObject {
+ public String someProperty;
+ }
+
+
}