cziegeler    2004/01/27 01:56:51

  Modified:    src/blocks/portal/java/org/apache/cocoon/portal/pluto/factory
                        PortletInvokerFactoryImpl.java AbstractFactory.java
                        LocalPortletInvokerImpl.java
               
src/blocks/portal/java/org/apache/cocoon/portal/pluto/services/factory
                        FactoryManagerServiceImpl.java
  Log:
  Factories can now use avalon components
  
  Revision  Changes    Path
  1.2       +39 -3     
cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/pluto/factory/PortletInvokerFactoryImpl.java
  
  Index: PortletInvokerFactoryImpl.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/pluto/factory/PortletInvokerFactoryImpl.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PortletInvokerFactoryImpl.java    27 Jan 2004 08:05:35 -0000      1.1
  +++ PortletInvokerFactoryImpl.java    27 Jan 2004 09:56:37 -0000      1.2
  @@ -45,6 +45,13 @@
   */
   package org.apache.cocoon.portal.pluto.factory;
   
  +import org.apache.avalon.framework.container.ContainerUtil;
  +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.avalon.framework.service.Serviceable;
   import org.apache.cocoon.portal.pluto.om.PortletDefinitionImpl;
   import org.apache.pluto.factory.PortletInvokerFactory;
   import org.apache.pluto.invoker.PortletInvoker;
  @@ -60,7 +67,27 @@
    */
   public class PortletInvokerFactoryImpl 
   extends AbstractFactory
  -implements PortletInvokerFactory {
  +implements PortletInvokerFactory, Serviceable, Contextualizable {
  +
  +    /** The avalon context */
  +    protected Context context;
  +    
  +    /** The service manager */
  +    protected ServiceManager manager;
  +    
  +    /* (non-Javadoc)
  +     * @see 
org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
  +     */
  +    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 {
  +        this.manager = manager;
  +    }
   
       /* (non-Javadoc)
        * @see 
org.apache.pluto.factory.PortletInvokerFactory#getPortletInvoker(org.apache.pluto.om.portlet.PortletDefinition)
  @@ -77,17 +104,26 @@
               if ( invoker == null ) {
                   invoker = new LocalPortletInvokerImpl(portletDefinition, 
this.servletConfig);
                   
((PortletDefinitionImpl)portletDefinition).setLocalPortletInvoker(invoker);
  +                try {
  +                    ContainerUtil.enableLogging(invoker, this.getLogger());
  +                    ContainerUtil.contextualize(invoker, this.context);
  +                    ContainerUtil.service(invoker, this.manager);
  +                    ContainerUtil.initialize(invoker);
  +                } catch (Exception ignore) {
  +                    this.getLogger().warn("Unable to initialize local 
portlet invoker.", ignore);
  +                }
               }
           } else {
               invoker = new PortletInvokerImpl(portletDefinition, 
this.servletConfig);
           }
  +        
           return invoker;
       }
   
       /* (non-Javadoc)
        * @see 
org.apache.pluto.factory.PortletInvokerFactory#releasePortletInvoker(org.apache.pluto.invoker.PortletInvoker)
        */
  -    public void releasePortletInvoker(PortletInvoker arg0) {
  +    public void releasePortletInvoker(PortletInvoker invoker) {
           // nothing to do here
       }
   
  
  
  
  1.2       +4 -1      
cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/pluto/factory/AbstractFactory.java
  
  Index: AbstractFactory.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/pluto/factory/AbstractFactory.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractFactory.java      22 Jan 2004 14:01:22 -0000      1.1
  +++ AbstractFactory.java      27 Jan 2004 09:56:37 -0000      1.2
  @@ -47,6 +47,8 @@
   
   import java.util.Map;
   import javax.servlet.ServletConfig;
  +
  +import org.apache.avalon.framework.logger.AbstractLogEnabled;
   import org.apache.pluto.factory.Factory;
   
   
  @@ -58,6 +60,7 @@
    * @version CVS $Id$
    */
   public abstract class AbstractFactory 
  +extends AbstractLogEnabled
   implements Factory {
   
       /** The servlet config */
  
  
  
  1.2       +53 -3     
cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/pluto/factory/LocalPortletInvokerImpl.java
  
  Index: LocalPortletInvokerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/pluto/factory/LocalPortletInvokerImpl.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- LocalPortletInvokerImpl.java      27 Jan 2004 08:05:35 -0000      1.1
  +++ LocalPortletInvokerImpl.java      27 Jan 2004 09:56:38 -0000      1.2
  @@ -58,6 +58,15 @@
   import javax.portlet.RenderResponse;
   import javax.servlet.ServletConfig;
   
  +import org.apache.avalon.framework.activity.Initializable;
  +import org.apache.avalon.framework.container.ContainerUtil;
  +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.logger.AbstractLogEnabled;
  +import org.apache.avalon.framework.service.ServiceException;
  +import org.apache.avalon.framework.service.ServiceManager;
  +import org.apache.avalon.framework.service.Serviceable;
   import org.apache.cocoon.util.ClassUtils;
   import org.apache.pluto.factory.PortletObjectAccess;
   import org.apache.pluto.invoker.PortletInvoker;
  @@ -70,17 +79,57 @@
    * 
    * @version CVS $Id$
    */
  -public class LocalPortletInvokerImpl 
  -implements PortletInvoker {
  +public class LocalPortletInvokerImpl
  +extends AbstractLogEnabled
  +implements PortletInvoker, Contextualizable, Serviceable, Initializable {
       
       /** servlet configuration */
       protected final ServletConfig servletConfig;
  +
       /** The portlet definition */
       protected final PortletDefinition portletDefinition;
   
       /** The portlet */
       protected Portlet portlet;
       
  +    /** The avalon context */
  +    protected Context context;
  +    
  +    /** The service manager */
  +    protected ServiceManager manager;
  +    
  +    /* (non-Javadoc)
  +     * @see 
org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
  +     */
  +    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 {
  +        this.manager = manager;
  +    }
  +
  +    /* (non-Javadoc)
  +     * @see org.apache.avalon.framework.activity.Initializable#initialize()
  +     */
  +    public void initialize() throws Exception {
  +        if (this.portlet != null) {
  +            try {
  +                ContainerUtil.enableLogging(this.portlet, this.getLogger());
  +                ContainerUtil.contextualize(this.portlet, this.context);
  +                ContainerUtil.service(this.portlet, this.manager);
  +                ContainerUtil.initialize(this.portlet);
  +            } catch (Exception ignore) {
  +                // we ignore the exception here and throw later on a portlet 
exception
  +                this.getLogger().warn("Unable to initialize local portlet 
invoker.", ignore);
  +                this.portlet = null;
  +            }
  +        }
  +    }
  +
       /**
        * Constructor
        */
  @@ -94,6 +143,7 @@
               this.portlet = (Portlet)ClassUtils.newInstance(clazzName);
           } catch (Exception ignore) {
               // we ignore the exception here and throw later on a portlet 
exception
  +            this.getLogger().warn("Unable to initialize local portlet 
invoker.", ignore);
           }
       }
   
  
  
  
  1.4       +30 -4     
cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/pluto/services/factory/FactoryManagerServiceImpl.java
  
  Index: FactoryManagerServiceImpl.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/pluto/services/factory/FactoryManagerServiceImpl.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FactoryManagerServiceImpl.java    27 Jan 2004 08:05:35 -0000      1.3
  +++ FactoryManagerServiceImpl.java    27 Jan 2004 09:56:51 -0000      1.4
  @@ -65,9 +65,14 @@
   
   import org.apache.avalon.framework.activity.Disposable;
   import org.apache.avalon.framework.activity.Initializable;
  +import org.apache.avalon.framework.container.ContainerUtil;
   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.logger.AbstractLogEnabled;
  +import org.apache.avalon.framework.service.ServiceException;
  +import org.apache.avalon.framework.service.ServiceManager;
  +import org.apache.avalon.framework.service.Serviceable;
   import org.apache.cocoon.portal.pluto.factory.ControllerFactoryImpl;
   import org.apache.cocoon.portal.pluto.factory.ObjectIDFactoryImpl;
   import org.apache.cocoon.portal.pluto.factory.PortletInvokerFactoryImpl;
  @@ -103,18 +108,34 @@
    * @version CVS $Id$
    */
   public class FactoryManagerServiceImpl 
  -implements FactoryManagerService, Initializable, Contextualizable, 
Disposable {
  +extends AbstractLogEnabled
  +implements FactoryManagerService, Initializable, Contextualizable, 
Serviceable, Disposable {
   
  +    /** The servlet configuration */
       protected ServletConfig servletConfig;
       
  +    /** The avalon context */
  +    protected Context context;
  +    
  +    /** The service manager */
  +    protected ServiceManager manager;
  +    
       /* (non-Javadoc)
        * @see 
org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
        */
       public void contextualize(Context context) throws ContextException {
  +        this.context = context;
           this.servletConfig = (ServletConfig) 
context.get(CocoonServlet.CONTEXT_SERVLET_CONFIG);
       }
       
       /* (non-Javadoc)
  +     * @see 
org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
  +     */
  +    public void service(ServiceManager manager) throws ServiceException {
  +        this.manager = manager;
  +    }
  +
  +    /* (non-Javadoc)
        * @see org.apache.avalon.framework.activity.Initializable#initialize()
        */
       public void initialize()
  @@ -153,9 +174,14 @@
               Class factoryImpl = Class.forName (factoryImplName);
               Factory factory = (Factory) factoryImpl.newInstance ();
   
  +            ContainerUtil.enableLogging(factory, this.getLogger());
  +            ContainerUtil.contextualize(factory, this.context);
  +            ContainerUtil.service(factory, this.manager);
  +            ContainerUtil.initialize(factory);
  +            
               factory.init(this.servletConfig, new HashMap());
   
  -            factoryMap.put (factoryInterface, factory);
  +            factoryMap.put (factoryInterface.getName(), factory);
   
               // build up list in reverse order for later destruction
               factoryList.add (0, factory);
  @@ -195,7 +221,7 @@
       public Factory getFactory (Class theClass) {
           // at this state the services map is read-only,
           // therefore we can go without synchronization
  -        return ((Factory) factoryMap.get (theClass));
  +        return ((Factory) factoryMap.get (theClass.getName()));
       }
   
       private Map  factoryMap  = new HashMap();
  
  
  

Reply via email to