From portal-commits at lists.jboss.org Mon Apr 2 19:11:59 2007 Content-Type: multipart/mixed; boundary="===============5240886704559206137==" MIME-Version: 1.0 From: portal-commits at lists.jboss.org To: portal-commits at lists.jboss.org Subject: [portal-commits] JBoss Portal SVN: r6903 - in trunk/portlet/src: main/org/jboss/portal/test/portlet/jsr168/ext/dispatcher and 4 other directories. Date: Mon, 02 Apr 2007 19:11:59 -0400 Message-ID: --===============5240886704559206137== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Author: julien(a)jboss.com Date: 2007-04-02 19:11:59 -0400 (Mon, 02 Apr 2007) New Revision: 6903 Added: trunk/portlet/src/main/org/jboss/portal/test/portlet/jsr168/ext/dispatch= er/DispatchingFilter.java trunk/portlet/src/resources/test/jsr168/ext/dispatcher-war/dispatchedFro= mFilter.jsp Modified: trunk/portlet/src/main/org/jboss/portal/portlet/impl/jsr168/DispatchedHt= tpServletRequest.java trunk/portlet/src/main/org/jboss/portal/test/portlet/jsr168/ext/dispatch= er/DispatcherSequenceBuilder.java trunk/portlet/src/main/org/jboss/portal/test/portlet/jsr168/tck/dispatch= er/DispatcherSequenceBuilder.java trunk/portlet/src/resources/test/jsr168/ext/dispatcher-war/WEB-INF/portl= et.xml trunk/portlet/src/resources/test/jsr168/ext/dispatcher-war/WEB-INF/web.x= ml trunk/portlet/src/resources/test/jsr168/tck/dispatcher-war/WEB-INF/web.x= ml Log: - improving implementation request dispatching from portlet to servlet - added more test cases for the request dispatching from portlet to servlet Modified: trunk/portlet/src/main/org/jboss/portal/portlet/impl/jsr168/Dispa= tchedHttpServletRequest.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/portlet/src/main/org/jboss/portal/portlet/impl/jsr168/DispatchedH= ttpServletRequest.java 2007-04-02 21:41:23 UTC (rev 6902) +++ trunk/portlet/src/main/org/jboss/portal/portlet/impl/jsr168/DispatchedH= ttpServletRequest.java 2007-04-02 23:11:59 UTC (rev 6903) @@ -37,12 +37,9 @@ import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.Principal; -import java.util.Collections; import java.util.Enumeration; -import java.util.HashMap; import java.util.Locale; import java.util.Map; -import java.util.Iterator; = /** * @author Julien Viet @@ -60,7 +57,6 @@ private RenderRequestImpl rreq; private HttpServletRequest dreq; = - private final Map attrs; private final Map parameters; = public DispatchedHttpServletRequest( @@ -77,8 +73,6 @@ // if (path !=3D null) { - String servletPath; - String pathInfo; String queryString; = int endOfServletPath =3D path.indexOf('/', 1); @@ -87,44 +81,27 @@ endOfServletPath =3D path.indexOf('?', 1); if (endOfServletPath =3D=3D -1) { - servletPath =3D path; - pathInfo =3D ""; queryString =3D ""; } else { - servletPath =3D path.substring(0, endOfServletPath); - pathInfo =3D ""; queryString =3D path.substring(endOfServletPath + 1); } } else { - servletPath =3D path.substring(0, endOfServletPath); int endOfPathInfo =3D path.indexOf('?', endOfServletPath + 1); if (endOfPathInfo =3D=3D -1) { - pathInfo =3D path.substring(endOfServletPath); queryString =3D ""; } else { - pathInfo =3D path.substring(endOfServletPath, endOfPathInfo= ); queryString =3D path.substring(endOfPathInfo + 1); } } - String requestURI =3D rreq.getContextPath() + servletPath + pathI= nfo; = // - Map attrs =3D new HashMap(5); - attrs.put(CONTEXT_PATH, rreq.getContextPath()); - attrs.put(SERVLET_PATH, servletPath); - attrs.put(PATH_INFO, pathInfo); - attrs.put(QUERY_STRING, queryString); - attrs.put(REQUEST_URI, requestURI); - this.attrs =3D Collections.unmodifiableMap(attrs); - - // if (queryString.length() > 0) { this.parameters =3D new PortletParameters(rreq.getParameterMap= ()); @@ -137,7 +114,6 @@ } else { - this.attrs =3D Collections.EMPTY_MAP; this.parameters =3D rreq.getParameterMap(); } } @@ -173,22 +149,22 @@ = public String getPathInfo() { - return (String)attrs.get(PATH_INFO); + return (String)getAttribute(PATH_INFO); } = public String getQueryString() { - return (String)attrs.get(QUERY_STRING); + return (String)getAttribute(QUERY_STRING); } = public String getServletPath() { - return (String)attrs.get(SERVLET_PATH); + return (String)getAttribute(SERVLET_PATH); } = public String getRequestURI() { - return (String)attrs.get(REQUEST_URI); + return (String)getAttribute(REQUEST_URI); } = public String getPathTranslated() @@ -216,11 +192,11 @@ public Object getAttribute(String s) { // First try the special values - Object value =3D attrs.get(s); - if (value !=3D null) - { - return value; - } +// Object value =3D attrs.get(s); +// if (value !=3D null) +// { +// return value; +// } = // Otherwise try the render request modified attributes return rreq.getAttributes().getAttribute(s, (HttpServletRequest)getR= equest()); @@ -228,49 +204,49 @@ = public Enumeration getAttributeNames() { - final Iterator i =3D rreq.getAttributes().getAttributeNames((HttpSer= vletRequest)getRequest()); - return new Enumeration() - { - // The next element - Object next; - - { - next(); - } - - public boolean hasMoreElements() - { - return next !=3D null; - } - - public Object nextElement() - { - Object next =3D this.next; - next(); - return next; - } - - private void next() - { - next =3D null; - while (true) - { - if (i.hasNext()) - { - Object next =3D i.next(); - if (attrs !=3D null && !attrs.containsKey(next)) - { - this.next =3D next; - break; - } - } - else - { - break; - } - } - } - }; + return Tools.toEnumeration(rreq.getAttributes().getAttributeNames((H= ttpServletRequest)getRequest())); +// return new Enumeration() +// { +// // The next element +// Object next; +// +// { +// next(); +// } +// +// public boolean hasMoreElements() +// { +// return next !=3D null; +// } +// +// public Object nextElement() +// { +// Object next =3D this.next; +// next(); +// return next; +// } +// +// private void next() +// { +// next =3D null; +// while (true) +// { +// if (i.hasNext()) +// { +// Object next =3D i.next(); +// if (attrs !=3D null && !attrs.containsKey(next)) +// { +// this.next =3D next; +// break; +// } +// } +// else +// { +// break; +// } +// } +// } +// }; } = public void setAttribute(String s, Object o) @@ -305,7 +281,7 @@ = public String getContextPath() { - return (String)attrs.get(CONTEXT_PATH); + return (String)getAttribute(CONTEXT_PATH); } = public String getRemoteUser() Modified: trunk/portlet/src/main/org/jboss/portal/test/portlet/jsr168/ext/d= ispatcher/DispatcherSequenceBuilder.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/portlet/src/main/org/jboss/portal/test/portlet/jsr168/ext/dispatc= her/DispatcherSequenceBuilder.java 2007-04-02 21:41:23 UTC (rev 6902) +++ trunk/portlet/src/main/org/jboss/portal/test/portlet/jsr168/ext/dispatc= her/DispatcherSequenceBuilder.java 2007-04-02 23:11:59 UTC (rev 6903) @@ -37,6 +37,7 @@ import org.jboss.portal.test.portlet.framework.UTP1; import org.jboss.portal.test.portlet.framework.UTS1; import org.jboss.portal.test.portlet.framework.UTP2; +import org.jboss.portal.test.portlet.framework.UTP3; = import javax.portlet.Portlet; import javax.portlet.PortletException; @@ -140,10 +141,10 @@ }); } = - public void createBlah(PortletTestDriver registry) + public void createFilters(PortletTestDriver registry) { PortletTest seq =3D new PortletTest(); - registry.addSequence("Blah", seq); + registry.addSequence("Filters", seq); seq.addAction(0, UTP2.RENDER_JOINPOINT, new PortletRenderTestAction() { protected DriverResponse run(Portlet portlet, RenderRequest reque= st, RenderResponse response, PortletTestContext context) throws IOException= , PortletException @@ -166,4 +167,32 @@ } }); } + + public void createDispatchingFilter(PortletTestDriver registry) + { + PortletTest seq =3D new PortletTest(); + registry.addSequence("DispatchingFilter", seq); + seq.addAction(0, UTP3.RENDER_JOINPOINT, new PortletRenderTestAction() + { + protected DriverResponse run(Portlet portlet, RenderRequest reque= st, RenderResponse response, PortletTestContext context) throws IOException= , PortletException + { + + // Need to set content type as we will include a JSP that will= produce output + response.setContentType("text/html"); + + // + PortletRequestDispatcher prd =3D request.getPortletSession().g= etPortletContext().getNamedDispatcher("TargetForIncludeNamedDispatchingFilt= er"); + assertNotNull(prd); + prd.include(request, response); + + // + prd =3D request.getPortletSession().getPortletContext().getReq= uestDispatcher("/TargetForIncludeURLPatternDispatchingFilter"); + assertNotNull(prd); + prd.include(request, response); + + // + return new EndTestResponse(); + } + }); + } } Added: trunk/portlet/src/main/org/jboss/portal/test/portlet/jsr168/ext/disp= atcher/DispatchingFilter.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/portlet/src/main/org/jboss/portal/test/portlet/jsr168/ext/dispatc= her/DispatchingFilter.java (rev 0) +++ trunk/portlet/src/main/org/jboss/portal/test/portlet/jsr168/ext/dispatc= her/DispatchingFilter.java 2007-04-02 23:11:59 UTC (rev 6903) @@ -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.portlet.jsr168.ext.dispatcher; + +import javax.servlet.Filter; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.FilterChain; +import javax.servlet.RequestDispatcher; +import java.io.IOException; + +/** + * @author Julien Viet + * @version $Revision: 1.1 $ + */ +public class DispatchingFilter implements Filter +{ + + private FilterConfig cfg; + + public void init(FilterConfig cfg) throws ServletException + { + this.cfg =3D cfg; + } + + public void doFilter(ServletRequest req, ServletResponse resp, FilterCh= ain chain) throws IOException, ServletException + { + + System.out.println("In the CHAIN " + cfg.getFilterName()); + System.out.println("In the CHAIN " + cfg.getFilterName()); + System.out.println("In the CHAIN " + cfg.getFilterName()); + System.out.println("In the CHAIN " + cfg.getFilterName()); + System.out.println("In the CHAIN " + cfg.getFilterName()); + System.out.println("In the CHAIN " + cfg.getFilterName()); + + RequestDispatcher rd =3D cfg.getServletContext().getRequestDispatche= r("/dispatchedFromFilter.jsp"); + rd.include(req, resp); + + } + + public void destroy() + { + this.cfg =3D null; + } +} Modified: trunk/portlet/src/main/org/jboss/portal/test/portlet/jsr168/tck/d= ispatcher/DispatcherSequenceBuilder.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/portlet/src/main/org/jboss/portal/test/portlet/jsr168/tck/dispatc= her/DispatcherSequenceBuilder.java 2007-04-02 21:41:23 UTC (rev 6902) +++ trunk/portlet/src/main/org/jboss/portal/test/portlet/jsr168/tck/dispatc= her/DispatcherSequenceBuilder.java 2007-04-02 23:11:59 UTC (rev 6903) @@ -274,18 +274,18 @@ { protected DriverResponse run(Portlet portlet, RenderRequest reque= st, RenderResponse response, PortletTestContext context) throws IOException= , PortletException { - PortletRequestDispatcher dispatcher =3D ((AbstractUniversalTes= tPortlet)portlet).getPortletContext().getRequestDispatcher("/universalServl= etA"); + PortletRequestDispatcher dispatcher =3D ((AbstractUniversalTes= tPortlet)portlet).getPortletContext().getRequestDispatcher("/universalServl= etA/pathinfo?foo=3Dbar"); assertNotNull(dispatcher); = //assert that servlet HAS access to specific request attributes try { dispatcher.include(request, response); - assertNotNull(UTP1.local1.get()); - assertNotNull(UTP1.local2.get()); - assertNotNull(UTP1.local3.get()); - // assertNotNull(IncludedRequestParametersPortlet.local4.ge= t()); - // assertNotNull(IncludedRequestParametersPortlet.local5.ge= t()); + assertEquals("/test-jsr168-dispatcher/universalServletA/pat= hinfo", UTP1.local1.get()); + assertEquals("/test-jsr168-dispatcher", UTP1.local2.get()); + assertEquals("/universalServletA", UTP1.local3.get()); + assertEquals("/pathinfo", UTP1.local4.get()); + assertEquals("foo=3Dbar", UTP1.local5.get()); } finally { @@ -296,25 +296,12 @@ UTP1.local5.set(null); } = - //assert that keys are present in request properties - Enumeration names =3D request.getPropertyNames(); - List namesList =3D new LinkedList(); - while (names.hasMoreElements()) - { - namesList.add(names.nextElement()); - } - /*assertTrue(namesList.contains("javax.servlet.include.request= _uri")); - assertTrue(namesList.contains("javax.servlet.include.context_p= ath")); - assertTrue(namesList.contains("javax.servlet.include.servlet_p= ath")); - assertTrue(namesList.contains("javax.servlet.include.path_info= ")); - assertTrue(namesList.contains("javax.servlet.include.query_str= ing"));*/ - - + // dispatcher =3D ((AbstractUniversalTestPortlet)portlet).getPort= letContext().getNamedDispatcher("UniversalServletA"); assertNotNull(dispatcher); = - //assert that servlet has NO access to specific request attrib= utes - //it shouldn't access that attributes because getNamedDispatch= er was used + // Assert that servlet has NO access to specific request attri= butes + // it shouldn't access that attributes because getNamedDispatc= her was used try { dispatcher.include(request, response); @@ -333,18 +320,6 @@ UTP1.local5.set(null); } = - //assert that keys are not present in request properties - names =3D request.getPropertyNames(); - namesList =3D new LinkedList(); - while (names.hasMoreElements()) - { - namesList.add(names.nextElement()); - } - assertTrue(!namesList.contains("javax.servlet.include.request_= uri")); - assertTrue(!namesList.contains("javax.servlet.include.context_= path")); - assertTrue(!namesList.contains("javax.servlet.include.servlet_= path")); - assertTrue(!namesList.contains("javax.servlet.include.path_inf= o")); - assertTrue(!namesList.contains("javax.servlet.include.query_st= ring")); return new EndTestResponse(); } }); @@ -480,7 +455,7 @@ assertNull(request.getRequestURL()); = //SPEC:130 - assertEquals("", request.getPathInfo()); + assertEquals(null, request.getPathInfo()); //TODO:I'm not sure what this should return - but it's not imp= lemented now so it fails //assertEquals("",request.getPathTranslated()); assertEquals("key1=3Dk1value1&key2=3Dk2value1", request.getQue= ryString()); Modified: trunk/portlet/src/resources/test/jsr168/ext/dispatcher-war/WEB-IN= F/portlet.xml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/portlet/src/resources/test/jsr168/ext/dispatcher-war/WEB-INF/port= let.xml 2007-04-02 21:41:23 UTC (rev 6902) +++ trunk/portlet/src/resources/test/jsr168/ext/dispatcher-war/WEB-INF/port= let.xml 2007-04-02 23:11:59 UTC (rev 6903) @@ -50,4 +50,15 @@ = + + TestUniversalPortletC + org.jboss.portal.test.portlet.framework.UTP3 + + text/html + + + + + + Modified: trunk/portlet/src/resources/test/jsr168/ext/dispatcher-war/WEB-IN= F/web.xml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/portlet/src/resources/test/jsr168/ext/dispatcher-war/WEB-INF/web.= xml 2007-04-02 21:41:23 UTC (rev 6902) +++ trunk/portlet/src/resources/test/jsr168/ext/dispatcher-war/WEB-INF/web.= xml 2007-04-02 23:11:59 UTC (rev 6903) @@ -82,6 +82,24 @@ = + + IncludeNamedJSPDispatchingFilter + org.jboss.portal.test.portlet.jsr168.ext.dispatcher.Di= spatchingFilter + + id + INCLUDE_NAMED_FILTER + + + + + IncludeURLPatternJSPDispatchingFilter + org.jboss.portal.test.portlet.jsr168.ext.dispatcher.Di= spatchingFilter + + id + INCLUDE_URL_PATTERN_FILTER + + + IncludeURLPatternFilter /noop @@ -118,6 +136,18 @@ REQUEST = + + IncludeNamedJSPDispatchingFilter + TargetForIncludeNamedDispatchingFilter + INCLUDE + + + + IncludeURLPatternJSPDispatchingFilter + /TargetForIncludeURLPatternDispatchingFilter + INCLUDE + + org.jboss.portal.test.portlet.jsr168.ext.dispatch= er.DispatcherSequenceBuilder @@ -132,6 +162,16 @@ org.jboss.portal.test.portlet.framework.NoopServlet = + + TargetForIncludeNamedDispatchingFilter + org.jboss.portal.test.portlet.framework.NoopServlet + + + + TargetForIncludeURLPatternDispatchingFilter + org.jboss.portal.test.portlet.framework.NoopServlet + + UniversalServletA /universalServletA @@ -142,4 +182,9 @@ /noop = + + TargetForIncludeURLPatternDispatchingFilter + /TargetForIncludeURLPatternDispatchingFilter + + Added: trunk/portlet/src/resources/test/jsr168/ext/dispatcher-war/dispatche= dFromFilter.jsp =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/portlet/src/resources/test/jsr168/ext/dispatcher-war/dispatchedFr= omFilter.jsp (rev 0) +++ trunk/portlet/src/resources/test/jsr168/ext/dispatcher-war/dispatchedFr= omFilter.jsp 2007-04-02 23:11:59 UTC (rev 6903) @@ -0,0 +1,8 @@ +<%@ page language=3D"java" %> + +<% + System.out.println("HELLO FROM JSP"); + System.out.println("HELLO FROM JSP"); + System.out.println("HELLO FROM JSP"); + System.out.println("HELLO FROM JSP"); +%> \ No newline at end of file Modified: trunk/portlet/src/resources/test/jsr168/tck/dispatcher-war/WEB-IN= F/web.xml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/portlet/src/resources/test/jsr168/tck/dispatcher-war/WEB-INF/web.= xml 2007-04-02 21:41:23 UTC (rev 6902) +++ trunk/portlet/src/resources/test/jsr168/tck/dispatcher-war/WEB-INF/web.= xml 2007-04-02 23:11:59 UTC (rev 6903) @@ -36,21 +36,9 @@ org.jboss.portal.test.portlet.framework.UTS1 = - - UniversalServletB - org.jboss.portal.test.portlet.framework.UTS2 - - UniversalServletA - /universalServletA + /universalServletA/* = - - UniversalServletB - /universalServletB - - - - --===============5240886704559206137==--