ate         2004/11/26 17:04:12

  Modified:    portals-bridges/struts/src/java/org/apache/portals/bridges/struts
                        StrutsPortlet.java PortletServlet.java
                        PortletServletRequestDispatcher.java
  Log:
  Support for multiple struts portlets (from one PA) on one page:
  Each portlet now uses a unique StrutsPortletRenderContext session key.
  Patch submitted by Andreas Steffan.
  
  Revision  Changes    Path
  1.7       +3 -1      
jakarta-jetspeed-2/portals-bridges/struts/src/java/org/apache/portals/bridges/struts/StrutsPortlet.java
  
  Index: StrutsPortlet.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/portals-bridges/struts/src/java/org/apache/portals/bridges/struts/StrutsPortlet.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- StrutsPortlet.java        15 Oct 2004 21:47:25 -0000      1.6
  +++ StrutsPortlet.java        27 Nov 2004 01:04:12 -0000      1.7
  @@ -98,6 +98,7 @@
       public static final String REDIRECT_URL = 
"org.apache.portals.bridges.struts.redirect_url";
       public static final String RENDER_CONTEXT = 
"org.apache.portals.bridges.struts.render_context";
       public static final String ERROR_CONTEXT = 
"org.apache.portals.bridges.struts.error_context";
  +    public static final String PORTLET_NAME = 
"org.apache.portals.bridges.struts.portlet_name";
       public static final String ACTION_REQUEST = "ACTION";
       public static final String VIEW_REQUEST = "VIEW";
       public static final String CUSTOM_REQUEST = "CUSTOM";
  @@ -228,6 +229,7 @@
                   this, request);
           HttpServletResponse res = servletContextProvider
                   .getHttpServletResponse(this, response);
  +        req.setAttribute(PORTLET_NAME, 
this.getPortletConfig().getPortletName());
           boolean actionRequest = (request instanceof ActionRequest);
           try
           {
  
  
  
  1.2       +28 -8     
jakarta-jetspeed-2/portals-bridges/struts/src/java/org/apache/portals/bridges/struts/PortletServlet.java
  
  Index: PortletServlet.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/portals-bridges/struts/src/java/org/apache/portals/bridges/struts/PortletServlet.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PortletServlet.java       29 Jul 2004 22:16:40 -0000      1.1
  +++ PortletServlet.java       27 Nov 2004 01:04:12 -0000      1.2
  @@ -55,18 +55,38 @@
           if (!request.getAttribute(StrutsPortlet.REQUEST_TYPE).equals(
                   StrutsPortlet.ACTION_REQUEST))
           {
  -            StrutsPortletRenderContext context = 
(StrutsPortletRenderContext) request
  +            StrutsPortletRenderContext context = null;
  +             
  +            String portletName = (String) 
request.getAttribute(StrutsPortlet.PORTLET_NAME);
  +             
  +                     String contextKey = StrutsPortlet.RENDER_CONTEXT + "_" 
+ portletName;
  +            context = (StrutsPortletRenderContext) request
                       .getSession(true)
  -                    .getAttribute(StrutsPortlet.RENDER_CONTEXT);
  +                    .getAttribute(contextKey);
               if (context != null)
               {
                   if (log.isDebugEnabled())
  +                {
                       log.debug("render context path: " + context.getPath());
  -                request.getSession().removeAttribute(
  -                        StrutsPortlet.RENDER_CONTEXT);
  -                if (context.getActionForm() != null)
  -                    request.setAttribute(mapping.getAttribute(), context
  -                            .getActionForm());
  +                }
  +                request.getSession().removeAttribute(contextKey);
  +                if (context.getActionForm() != null) {
  +                     String attribute = mapping.getAttribute();
  +                     if (attribute != null) {
  +                         if (log.isDebugEnabled())
  +                         {
  +                             log.debug("Putting form " + 
context.getActionForm().getClass().getName() + 
  +                                     " into request as " + attribute + " for 
mapping " + mapping.getName());
  +                         }
  +                     request.setAttribute(mapping.getAttribute(), context
  +                                .getActionForm());
  +                     } 
  +                     else if (log.isWarnEnabled())
  +                     {
  +                         log.warn("Attribute is null for form " + 
context.getActionForm().getClass().getName() + 
  +                                 ", won't put it into request for mapping " 
+ mapping.getName());
  +                     }
  +                }
                   if (context.isRequestCancelled())
                       request.setAttribute(Globals.CANCEL_KEY, Boolean.TRUE);
                   if (context.getMessages() != null)
  
  
  
  1.2       +3 -3      
jakarta-jetspeed-2/portals-bridges/struts/src/java/org/apache/portals/bridges/struts/PortletServletRequestDispatcher.java
  
  Index: PortletServletRequestDispatcher.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/portals-bridges/struts/src/java/org/apache/portals/bridges/struts/PortletServletRequestDispatcher.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PortletServletRequestDispatcher.java      29 Jul 2004 22:16:40 -0000      
1.1
  +++ PortletServletRequestDispatcher.java      27 Nov 2004 01:04:12 -0000      
1.2
  @@ -98,8 +98,8 @@
                               originURL);
                   }
               }
  -            req.getSession(true).setAttribute(StrutsPortlet.RENDER_CONTEXT,
  -                    context);
  +            String portletName = (String) 
req.getAttribute(StrutsPortlet.PORTLET_NAME);
  +            req.getSession(true).setAttribute(StrutsPortlet.RENDER_CONTEXT + 
"_" + portletName, context);
           } 
           else
           {
  
  
  

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

Reply via email to