You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-dev@portals.apache.org by st...@apache.org on 2004/02/22 16:19:48 UTC

cvs commit: jakarta-pluto/container/src/java/org/apache/pluto PortletContainerImpl.java

sthepper    2004/02/22 07:19:48

  Modified:    container/src/java/org/apache/pluto
                        PortletContainerImpl.java
  Log:
  fixed bug 27042: integrated Ken's patch to factor out the redirect in a separate method
  
  Revision  Changes    Path
  1.4       +61 -54    jakarta-pluto/container/src/java/org/apache/pluto/PortletContainerImpl.java
  
  Index: PortletContainerImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-pluto/container/src/java/org/apache/pluto/PortletContainerImpl.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- PortletContainerImpl.java	17 Feb 2004 14:23:57 -0000	1.3
  +++ PortletContainerImpl.java	22 Feb 2004 15:19:48 -0000	1.4
  @@ -207,59 +207,7 @@
           {
               try
               {
  -                if (location == null && _actionResponse != null)
  -                {
  -                    DynamicInformationProvider provider = InformationProviderAccess.getDynamicProvider(servletRequest);
  -
  -                    //ToDo: don't send changes in case of exception -> PORTLET:SPEC:17
  -
  -                    // get the changings of this portlet entity that might be set during action handling
  -                    // change portlet mode
  -                    if (_actionResponse.getChangedPortletMode() != null)
  -                    {
  -                        InformationProviderAccess.getDynamicProvider(servletRequest)
  -                            .getPortletActionProvider(portletWindow)
  -                            .changePortletMode(_actionResponse.getChangedPortletMode());
  -                    }
  -                    // change window state
  -                    if (_actionResponse.getChangedWindowState() != null)
  -                    {
  -                        InformationProviderAccess.getDynamicProvider(servletRequest)
  -                            .getPortletActionProvider(portletWindow)
  -                            .changePortletWindowState(_actionResponse.getChangedWindowState());
  -                    }
  -                    // get render parameters
  -                    Map renderParameter = _actionResponse.getRenderParameters();
  -
  -                    PortletURLProvider redirectURL = provider.getPortletURLProvider(portletWindow);
  -
  -                    if (provider.getPortletMode(portletWindow)!=null)
  -                    {
  -                        redirectURL.setPortletMode(provider.getPortletMode(portletWindow));
  -                    }
  -                    if (provider.getWindowState(portletWindow)!=null)
  -                    {
  -                        redirectURL.setWindowState(provider.getWindowState(portletWindow));
  -                    }
  -                    //            if (secure)
  -                    //            {
  -                    //                redirectURL.setSecure(); // TBD
  -                    //            }
  -                    redirectURL.clearParameters();
  -                    redirectURL.setParameters(renderParameter);
  -
  -                    //servletResponse.sendRedirect(servletResponse.encodeRedirectURL(redirectURL.toString()));
  -                    location = servletResponse.encodeRedirectURL(redirectURL.toString());
  -                }
  -                //servletResponse.sendRedirect(location);
  -
  -                javax.servlet.http.HttpServletResponse redirectResponse = servletResponse;
  -                while (redirectResponse instanceof javax.servlet.http.HttpServletResponseWrapper)
  -                {
  -                    redirectResponse = (javax.servlet.http.HttpServletResponse)
  -                                       ((javax.servlet.http.HttpServletResponseWrapper)redirectResponse).getResponse();
  -                }
  -                redirectResponse.sendRedirect(location);
  +				redirect(location, portletWindow, servletRequest, servletResponse, _actionResponse);
               }
               finally
               {
  @@ -307,4 +255,63 @@
           return initialized;
       }
   
  +    protected void redirect(String location, 
  +                              PortletWindow portletWindow, 
  +                              HttpServletRequest servletRequest, 
  +                              HttpServletResponse servletResponse, 
  +                              InternalActionResponse _actionResponse) 
  +    throws IOException {
  +	    if (location == null && _actionResponse != null)
  +	    {
  +	        DynamicInformationProvider provider = InformationProviderAccess.getDynamicProvider(servletRequest);
  +	
  +	        //TODO: don't send changes in case of exception -> PORTLET:SPEC:17
  +	
  +	        // get the changings of this portlet entity that might be set during action handling
  +	        // change portlet mode
  +	        if (_actionResponse.getChangedPortletMode() != null)
  +	        {
  +	            InformationProviderAccess.getDynamicProvider(servletRequest)
  +	                .getPortletActionProvider(portletWindow)
  +	                .changePortletMode(_actionResponse.getChangedPortletMode());
  +	        }
  +	        // change window state
  +	        if (_actionResponse.getChangedWindowState() != null)
  +	        {
  +	            InformationProviderAccess.getDynamicProvider(servletRequest)
  +	                .getPortletActionProvider(portletWindow)
  +	                .changePortletWindowState(_actionResponse.getChangedWindowState());
  +	        }
  +	        // get render parameters
  +	        Map renderParameter = _actionResponse.getRenderParameters();
  +	
  +	        PortletURLProvider redirectURL = provider.getPortletURLProvider(portletWindow);
  +	
  +	        if (provider.getPortletMode(portletWindow)!=null)
  +	        {
  +	            redirectURL.setPortletMode(provider.getPortletMode(portletWindow));
  +	        }
  +	        if (provider.getWindowState(portletWindow)!=null)
  +	        {
  +	            redirectURL.setWindowState(provider.getWindowState(portletWindow));
  +	        }
  +	        //            if (secure)
  +	        //            {
  +	        //                redirectURL.setSecure(); // TBD
  +	        //            }
  +	        redirectURL.clearParameters();
  +	        redirectURL.setParameters(renderParameter);
  +	
  +	        location = servletResponse.encodeRedirectURL(redirectURL.toString());
  +	    }
  +	
  +	    javax.servlet.http.HttpServletResponse redirectResponse = servletResponse;
  +	    while (redirectResponse instanceof javax.servlet.http.HttpServletResponseWrapper)
  +	    {
  +	        redirectResponse = (javax.servlet.http.HttpServletResponse)
  +	                           ((javax.servlet.http.HttpServletResponseWrapper)redirectResponse).getResponse();
  +	    }
  +	    redirectResponse.sendRedirect(location);
  +	
  +	    }
   }