cziegeler    2004/02/06 05:07:17

  Modified:    src/blocks/portal/java/org/apache/cocoon/portal/impl
                        PortletPortalManager.java
               
src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl
                        PortletWindowAspect.java
               
src/blocks/portal/java/org/apache/cocoon/portal/coplet/adapter/impl
                        PortletAdapter.java
  Log:
  No direct cast from a component to it's implementation - this will not work 
with Fortress :(
  
  Revision  Changes    Path
  1.3       +10 -1     
cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/impl/PortletPortalManager.java
  
  Index: PortletPortalManager.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/impl/PortletPortalManager.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- PortletPortalManager.java 23 Jan 2004 12:34:31 -0000      1.2
  +++ PortletPortalManager.java 6 Feb 2004 13:07:17 -0000       1.3
  @@ -66,6 +66,7 @@
   import org.apache.cocoon.ProcessingException;
   import org.apache.cocoon.components.ContextHelper;
   import org.apache.cocoon.environment.http.HttpEnvironment;
  +import org.apache.cocoon.portal.PortalManager;
   import org.apache.cocoon.portal.event.Event;
   import org.apache.cocoon.portal.event.EventManager;
   import org.apache.cocoon.portal.event.Filter;
  @@ -116,6 +117,10 @@
        */
       public void contextualize(Context context) throws ContextException {
           this.servletConfig = (ServletConfig) 
context.get(CocoonServlet.CONTEXT_SERVLET_CONFIG);
  +        // we have to somehow pass this component down to other components!
  +        // This is ugly, but it's the only chance for sofisticated component 
containers
  +        // that wrap component implementations!
  +        
this.servletConfig.getServletContext().setAttribute(PortalManager.ROLE, this);
           this.context = context;
       }
   
  @@ -146,6 +151,10 @@
               this.portletContainerEnvironment = null;
           } catch (Throwable t) {
               this.getLogger().error("Destruction failed!", t);
  +        }
  +        if ( this.servletConfig != null ) {
  +            
this.servletConfig.getServletContext().removeAttribute(PortalManager.ROLE);
  +            this.servletConfig = null;
           }
       }
   
  
  
  
  1.2       +26 -16    
cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/PortletWindowAspect.java
  
  Index: PortletWindowAspect.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/PortletWindowAspect.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PortletWindowAspect.java  22 Jan 2004 14:01:22 -0000      1.1
  +++ PortletWindowAspect.java  6 Feb 2004 13:07:17 -0000       1.2
  @@ -52,11 +52,14 @@
   
   import javax.portlet.PortletMode;
   import javax.portlet.WindowState;
  +import javax.servlet.ServletConfig;
   import javax.servlet.http.HttpServletRequest;
   
  +import org.apache.avalon.framework.context.Context;
  +import org.apache.avalon.framework.context.ContextException;
  +import org.apache.avalon.framework.context.Contextualizable;
   import org.apache.avalon.framework.parameters.ParameterException;
   import org.apache.avalon.framework.parameters.Parameters;
  -import org.apache.avalon.framework.service.ServiceException;
   import org.apache.cocoon.portal.PortalManager;
   import org.apache.cocoon.portal.PortalService;
   import org.apache.cocoon.portal.coplet.CopletInstanceData;
  @@ -69,6 +72,7 @@
   import org.apache.cocoon.portal.layout.impl.CopletLayout;
   import org.apache.cocoon.portal.layout.renderer.aspect.RendererAspectContext;
   import org.apache.cocoon.portal.pluto.PortletURLProviderImpl;
  +import org.apache.cocoon.servlet.CocoonServlet;
   import org.apache.cocoon.xml.XMLUtils;
   import org.apache.pluto.om.portlet.PortletDefinition;
   import org.apache.pluto.om.window.PortletWindow;
  @@ -85,7 +89,24 @@
    * 
    * @version CVS $Id$
    */
  -public final class PortletWindowAspect extends AbstractAspect {
  +public final class PortletWindowAspect 
  +extends AbstractAspect 
  +implements Contextualizable {
  +
  +    /** The environment */
  +    protected PortletContainerEnvironment environment;
  +    
  +    /* (non-Javadoc)
  +     * @see 
org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
  +     */
  +    public void contextualize(Context context) throws ContextException {
  +        // now get the portal manager
  +        ServletConfig servletConfig = (ServletConfig) 
context.get(CocoonServlet.CONTEXT_SERVLET_CONFIG);
  +        PortletPortalManager portalManager = (PortletPortalManager) 
servletConfig.getServletContext().getAttribute(PortalManager.ROLE);
  +        if ( portalManager != null ) {
  +            this.environment = 
portalManager.getPortletContainerEnvironment();
  +        }
  +    }
   
       /* (non-Javadoc)
        * @see 
org.apache.cocoon.portal.layout.renderer.RendererAspect#toSAX(org.apache.cocoon.portal.layout.renderer.RendererAspectContext,
 org.apache.cocoon.portal.layout.Layout, 
org.apache.cocoon.portal.PortalService, org.xml.sax.ContentHandler)
  @@ -118,19 +139,8 @@
               XMLUtils.createElement(contenthandler, "title", title);          
  
           
   
  -            PortletContainerEnvironment env = null;
  -            PortletPortalManager portalManager = null;
  -            try {
  -                portalManager = (PortletPortalManager) 
this.manager.lookup(PortalManager.ROLE);
  -                env = portalManager.getPortletContainerEnvironment();
  -            } catch (ServiceException ignore) {
  -                // if this fails something is *really* wrong, so we ignore it
  -            } finally {
  -                this.manager.release(portalManager);
  -            }
  -
  -            if ( env != null ) {
  -                InformationProviderService ips = 
(InformationProviderService) 
env.getContainerService(InformationProviderService.class);
  +            if ( this.environment != null ) {
  +                InformationProviderService ips = 
(InformationProviderService) 
this.environment.getContainerService(InformationProviderService.class);
                   DynamicInformationProvider dip = 
ips.getDynamicProvider((HttpServletRequest) 
context.getObjectModel().get("portlet-request"));
                   
                   Event event;    
  
  
  
  1.4       +9 -18     
cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/coplet/adapter/impl/PortletAdapter.java
  
  Index: PortletAdapter.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/coplet/adapter/impl/PortletAdapter.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- PortletAdapter.java       27 Jan 2004 08:05:34 -0000      1.3
  +++ PortletAdapter.java       6 Feb 2004 13:07:17 -0000       1.4
  @@ -47,14 +47,13 @@
   
   import java.util.Map;
   
  +import javax.servlet.ServletConfig;
   import javax.servlet.http.HttpServletRequest;
   import javax.servlet.http.HttpServletResponse;
   
   import org.apache.avalon.framework.context.Context;
   import org.apache.avalon.framework.context.ContextException;
   import org.apache.avalon.framework.context.Contextualizable;
  -import org.apache.avalon.framework.service.ServiceException;
  -import org.apache.avalon.framework.service.ServiceManager;
   import org.apache.cocoon.components.ContextHelper;
   import org.apache.cocoon.environment.http.HttpEnvironment;
   import org.apache.cocoon.portal.PortalManager;
  @@ -67,6 +66,7 @@
   import org.apache.cocoon.portal.pluto.servlet.ServletRequestImpl;
   import org.apache.cocoon.portal.pluto.servlet.ServletResponseImpl;
   import org.apache.cocoon.portal.serialization.IncludingHTMLSerializer;
  +import org.apache.cocoon.servlet.CocoonServlet;
   import org.apache.cocoon.xml.AttributesImpl;
   import org.apache.pluto.PortletContainer;
   import org.apache.pluto.om.entity.PortletApplicationEntity;
  @@ -105,21 +105,12 @@
        */
       public void contextualize(Context context) throws ContextException {
           this.context = context;
  -    }
  -
  -    /* (non-Javadoc)
  -     * @see 
org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
  -     */
  -    public void service(ServiceManager manager) throws ServiceException {
  -        super.service(manager);
  -        PortletPortalManager portalManager = null;
  -        try {
  -            portalManager = (PortletPortalManager) 
this.manager.lookup(PortalManager.ROLE);
  -            this.portletContainer = portalManager.getPortletContainer();
  -            this.environment = 
portalManager.getPortletContainerEnvironment();
  -        } finally {
  -            this.manager.release(portalManager);
  -        }
  +        // now get the portal manager
  +        ServletConfig servletConfig = (ServletConfig) 
context.get(CocoonServlet.CONTEXT_SERVLET_CONFIG);
  +        PortletPortalManager portalManager = (PortletPortalManager) 
servletConfig.getServletContext().getAttribute(PortalManager.ROLE);
  +        
  +        this.portletContainer = portalManager.getPortletContainer();
  +        this.environment = portalManager.getPortletContainerEnvironment();
       }
   
       /* (non-Javadoc)
  
  
  

Reply via email to