Author: chris.laprun(a)jboss.com
Date: 2007-03-09 00:24:06 -0500 (Fri, 09 Mar 2007)
New Revision: 6613
Added:
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/consumer/behaviors/ResourceMarkupBehavior.java
Modified:
trunk/wsrp/build.xml
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/portlet/ResourcePortlet.java
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/consumer/MarkupTestCase.java
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/consumer/V1ConsumerBaseTest.java
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/MarkupTestCase.java
trunk/wsrp/src/main/org/jboss/portal/wsrp/invocation/WSRPPortletInvocationContext.java
Log:
- JBPORTAL-1298: encodeResourceURL will now get the host name from the request to
properly build an absolute URL for the resource and add the WSRP rewrite tokens.
- Added test cases.
Modified: trunk/wsrp/build.xml
===================================================================
--- trunk/wsrp/build.xml 2007-03-09 05:21:12 UTC (rev 6612)
+++ trunk/wsrp/build.xml 2007-03-09 05:24:06 UTC (rev 6613)
@@ -630,7 +630,7 @@
<test todir="${test.reports}"
name="org.jboss.portal.test.wsrp.v1.producer.MarkupTestRunner"/>
<test todir="${test.reports}"
name="org.jboss.portal.test.wsrp.v1.producer.RegistrationTestRunner"/>
<test todir="${test.reports}"
name="org.jboss.portal.test.wsrp.v1.producer.PortletManagementTestRunner"/>
- </x-test>
+ </x-test>
<x-sysproperty>
<!--
<jvmarg value="-Xdebug"/>
Modified: trunk/wsrp/src/main/org/jboss/portal/test/wsrp/portlet/ResourcePortlet.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/test/wsrp/portlet/ResourcePortlet.java 2007-03-09
05:21:12 UTC (rev 6612)
+++ trunk/wsrp/src/main/org/jboss/portal/test/wsrp/portlet/ResourcePortlet.java 2007-03-09
05:24:06 UTC (rev 6613)
@@ -34,7 +34,7 @@
/**
* @author <a href="mailto:chris.laprun@jboss.com">Chris
Laprun</a>
* @version $Revision$
- * @since 2.4 (May 6, 2006)
+ * @since 2.6
*/
public class ResourcePortlet extends GenericPortlet
{
@@ -42,6 +42,6 @@
{
response.setContentType("text/html");
Writer writer = response.getWriter();
- writer.write("<img src=\"" +
response.encodeURL(request.getContextPath() + "/gif/logo.gif") +
"\"/>");
+ writer.write("<img src='" +
response.encodeURL(request.getContextPath() + "/gif/logo.gif") +
"'/>");
}
}
\ No newline at end of file
Modified: trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/consumer/MarkupTestCase.java
===================================================================
---
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/consumer/MarkupTestCase.java 2007-03-09
05:21:12 UTC (rev 6612)
+++
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/consumer/MarkupTestCase.java 2007-03-09
05:24:06 UTC (rev 6613)
@@ -44,6 +44,7 @@
import org.jboss.portal.test.wsrp.v1.consumer.behaviors.EmptyMarkupBehavior;
import org.jboss.portal.test.wsrp.v1.consumer.behaviors.InitCookieMarkupBehavior;
import org.jboss.portal.test.wsrp.v1.consumer.behaviors.NullMarkupBehavior;
+import org.jboss.portal.test.wsrp.v1.consumer.behaviors.ResourceMarkupBehavior;
import org.jboss.portal.test.wsrp.v1.consumer.behaviors.SessionMarkupBehavior;
import org.jboss.portal.wsrp.consumer.ProducerSessionInformation;
import org.jboss.portal.wsrp.core.CookieProtocol;
@@ -163,6 +164,14 @@
}
+ public void testResource() throws PortletInvokerException
+ {
+ RenderInvocation render =
createRenderInvocation(ResourceMarkupBehavior.PORTLET_HANDLE);
+ PortletInvocationResponse response = consumer.invoke(render);
+
+ checkRenderResult(response, "<img
src='http://localhost:8080/test-resource-portlet/gif/logo.gif'/>");
+ }
+
private FragmentResponse checkRenderResult(PortletInvocationResponse response, String
markup)
{
ExtendedAssert.assertNotNull(response);
Modified:
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/consumer/V1ConsumerBaseTest.java
===================================================================
---
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/consumer/V1ConsumerBaseTest.java 2007-03-09
05:21:12 UTC (rev 6612)
+++
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/consumer/V1ConsumerBaseTest.java 2007-03-09
05:24:06 UTC (rev 6613)
@@ -35,6 +35,7 @@
import org.jboss.portal.test.wsrp.v1.consumer.behaviors.EmptyMarkupBehavior;
import org.jboss.portal.test.wsrp.v1.consumer.behaviors.InitCookieMarkupBehavior;
import org.jboss.portal.test.wsrp.v1.consumer.behaviors.NullMarkupBehavior;
+import org.jboss.portal.test.wsrp.v1.consumer.behaviors.ResourceMarkupBehavior;
import org.jboss.portal.test.wsrp.v1.consumer.behaviors.SessionMarkupBehavior;
/**
@@ -75,6 +76,7 @@
registry.registerMarkupBehavior(new InitCookieMarkupBehavior(registry));
registry.registerMarkupBehavior(new NullMarkupBehavior(registry));
registry.registerMarkupBehavior(new SessionMarkupBehavior(registry));
+ registry.registerMarkupBehavior(new ResourceMarkupBehavior(registry));
// use a fresh ConsumerRegistry
consumer.getProducerInfo().setRegistry(new MockConsumerRegistry());
Added:
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/consumer/behaviors/ResourceMarkupBehavior.java
===================================================================
---
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/consumer/behaviors/ResourceMarkupBehavior.java
(rev 0)
+++
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/consumer/behaviors/ResourceMarkupBehavior.java 2007-03-09
05:24:06 UTC (rev 6613)
@@ -0,0 +1,67 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+*/
+
+package org.jboss.portal.test.wsrp.v1.consumer.behaviors;
+
+import org.jboss.portal.Mode;
+import org.jboss.portal.WindowState;
+import org.jboss.portal.test.wsrp.framework.BehaviorRegistry;
+import org.jboss.portal.test.wsrp.framework.MarkupBehavior;
+import org.jboss.portal.wsrp.core.AccessDeniedFault;
+import org.jboss.portal.wsrp.core.GetMarkup;
+import org.jboss.portal.wsrp.core.InconsistentParametersFault;
+import org.jboss.portal.wsrp.core.InvalidCookieFault;
+import org.jboss.portal.wsrp.core.InvalidHandleFault;
+import org.jboss.portal.wsrp.core.InvalidRegistrationFault;
+import org.jboss.portal.wsrp.core.InvalidSessionFault;
+import org.jboss.portal.wsrp.core.InvalidUserCategoryFault;
+import org.jboss.portal.wsrp.core.MissingParametersFault;
+import org.jboss.portal.wsrp.core.OperationFailedFault;
+import org.jboss.portal.wsrp.core.UnsupportedLocaleFault;
+import org.jboss.portal.wsrp.core.UnsupportedMimeTypeFault;
+import org.jboss.portal.wsrp.core.UnsupportedModeFault;
+import org.jboss.portal.wsrp.core.UnsupportedWindowStateFault;
+
+import java.rmi.RemoteException;
+
+/**
+ * @author <a href="mailto:chris.laprun@jboss.com">Chris
Laprun</a>
+ * @version $Revision$
+ * @since 2.6
+ */
+public class ResourceMarkupBehavior extends MarkupBehavior
+{
+ public static final String PORTLET_HANDLE = "resource";
+
+
+ public ResourceMarkupBehavior(BehaviorRegistry registry)
+ {
+ super(registry);
+ registerHandle(PORTLET_HANDLE);
+ }
+
+ protected String getMarkupString(Mode mode, WindowState windowState, String
navigationalState, GetMarkup getMarkup) throws UnsupportedWindowStateFault,
InvalidCookieFault, InvalidSessionFault, AccessDeniedFault, InconsistentParametersFault,
InvalidHandleFault, UnsupportedLocaleFault, UnsupportedModeFault, OperationFailedFault,
MissingParametersFault, InvalidUserCategoryFault, InvalidRegistrationFault,
UnsupportedMimeTypeFault, RemoteException
+ {
+ return "<img
src='wsrp_rewrite?wsrp-urlType=resource&wsrp-url=http%3A%2F%2Flocalhost%3A8080"
+
+
"%2Ftest-resource-portlet%2Fgif%2Flogo.gif&wsrp-requiresRewrite=true/wsrp_rewrite'/>";
+ }
+}
Property changes on:
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/consumer/behaviors/ResourceMarkupBehavior.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Modified: trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/MarkupTestCase.java
===================================================================
---
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/MarkupTestCase.java 2007-03-09
05:21:12 UTC (rev 6612)
+++
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/MarkupTestCase.java 2007-03-09
05:24:06 UTC (rev 6613)
@@ -436,6 +436,22 @@
undeploy(archiveName);
}
+ public void testGetMarkupWithResource() throws Exception
+ {
+ undeploy(DEFAULT_MARKUP_PORTLET_WAR);
+ String archive = "test-resource-portlet.war";
+ deploy(archive);
+
+ GetMarkup gm = createMarkupRequestForCurrentlyDeployedPortlet();
+ MarkupResponse res = markupService.getMarkup(gm);
+ String markupString = res.getMarkupContext().getMarkupString();
+ ExtendedAssert.assertEquals("<img
src='wsrp_rewrite?wsrp-urlType=resource&" +
+
"wsrp-url=http%3A%2F%2Flocalhost%3A8080%2Ftest-resource-portlet%2Fgif%2Flogo.gif&"
+
+ "wsrp-requiresRewrite=true/wsrp_rewrite'/>", markupString);
+
+ undeploy(archive);
+ }
+
private String checkPBIAndGetNavigationalState(String symbol) throws Exception
{
PerformBlockingInteraction performBlockingInteraction =
Modified:
trunk/wsrp/src/main/org/jboss/portal/wsrp/invocation/WSRPPortletInvocationContext.java
===================================================================
---
trunk/wsrp/src/main/org/jboss/portal/wsrp/invocation/WSRPPortletInvocationContext.java 2007-03-09
05:21:12 UTC (rev 6612)
+++
trunk/wsrp/src/main/org/jboss/portal/wsrp/invocation/WSRPPortletInvocationContext.java 2007-03-09
05:24:06 UTC (rev 6613)
@@ -25,6 +25,7 @@
import org.jboss.portal.Mode;
import org.jboss.portal.WindowState;
import org.jboss.portal.common.invocation.EmptyAttributeResolver;
+import org.jboss.portal.common.util.URLTools;
import org.jboss.portal.portlet.PortletURL;
import org.jboss.portal.portlet.StateString;
import org.jboss.portal.portlet.impl.spi.AbstractPortletInvocationContext;
@@ -36,8 +37,8 @@
import org.jboss.portal.portlet.spi.SecurityContext;
import org.jboss.portal.portlet.spi.UserContext;
import org.jboss.portal.portlet.spi.WindowContext;
+import org.jboss.portal.server.impl.MapAttributeResolver;
import org.jboss.portal.server.impl.RequestAttributeResolver;
-import org.jboss.portal.server.impl.MapAttributeResolver;
import org.jboss.portal.server.util.HTTPStreamInfo;
import org.jboss.portal.wsrp.WSRPPortletURL;
import org.jboss.portal.wsrp.WSRPRewritingConstants;
@@ -61,6 +62,12 @@
private InstanceContext instanceContext;
private WindowContext windowContext;
+ private static final String SCH_END = "://";
+ private static final String PORT_END = ":";
+ private static final String EQ = "=";
+ private static final String AMP = "&";
+ private static final String EQ_TRUE = "=true";
+
public WSRPPortletInvocationContext(StateString navigationalState, SecurityContext
securityContext,
HTTPStreamInfo streamInfo, PortalContext
portalContext, UserContext userContext,
InstanceContext instanceContext, WindowContext
windowContext, Mode mode, WindowState windowState)
@@ -94,15 +101,42 @@
/** Override the default behavior in order to avoid to encode when it is producer
written URL. */
public String encodeResourceURL(String url)
{
- if (url != null &&
url.startsWith(WSRPRewritingConstants.BEGIN_WSRP_REWRITE))
+ if (url != null)
{
- // We don't encode URL through this API when it is a wsrp URL
- return url;
+ if (url.startsWith(WSRPRewritingConstants.BEGIN_WSRP_REWRITE))
+ {
+ // We don't encode URL through this API when it is a wsrp URL
+ return url;
+ }
+ else
+ {
+ StringBuffer sb;
+ if (!URLTools.isNetworkURL(url))
+ {
+ // URL is not an absolute URL so we need to build one
+ HttpServletRequest req = getClientRequest();
+ String scheme = req.getScheme();
+ String host = req.getServerName();
+ int port = req.getServerPort();
+ sb = new StringBuffer(url.length() * 2);
+
sb.append(scheme).append(SCH_END).append(host).append(PORT_END).append(port).append(url);
+ url = sb.toString();
+ }
+
+ url = URLTools.encodeXWWWFormURL(url);
+
+ // build the WSRP resource URL with rewrite tokens
+ sb = new StringBuffer(url.length() * 2);
+
sb.append(WSRPRewritingConstants.BEGIN_WSRP_REWRITE).append(WSRPRewritingConstants.URL_TYPE_NAME)
+ .append(EQ).append(WSRPRewritingConstants.URL_TYPE_RESOURCE).append(AMP)
+ .append(WSRPRewritingConstants.RESOURCE_URL).append(EQ).append(url)
+ .append(AMP).append(WSRPRewritingConstants.RESOURCE_REQUIRES_REWRITE)
+ .append(EQ_TRUE).append(WSRPRewritingConstants.END_WSRP_REWRITE);
+ return sb.toString();
+ }
}
- else
- {
- return super.encodeResourceURL(url);
- }
+
+ return null;
}
/**