You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by do...@apache.org on 2002/05/28 05:29:57 UTC

cvs commit: jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/interfaces/service MultiSourceServiceManager.java

donaldp     02/05/27 20:29:57

  Modified:    container/src/test/org/apache/myrmidon/components
                        AbstractComponentTest.java
               container/src/java/org/apache/myrmidon/components/embeddor
                        DefaultEmbeddor.java
               container/src/java/org/apache/myrmidon/interfaces/executor
                        DefaultExecutionFrame.java ExecutionFrame.java
               container/src/java/org/apache/myrmidon/interfaces/service
                        MultiSourceServiceManager.java
  Log:
  ExecutionFrame no longer needs to store a Logger.
  
  It also chooses to extract the PropertyStore and TaskEventManager from the ServiceManager rather than requiring them be passed in. This means that PropertyStore is now a Service.
  
  This also highlights the need for a real service kernel to be implemented and soon.
  
  Revision  Changes    Path
  1.43      +9 -14     jakarta-ant-myrmidon/container/src/test/org/apache/myrmidon/components/AbstractComponentTest.java
  
  Index: AbstractComponentTest.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant-myrmidon/container/src/test/org/apache/myrmidon/components/AbstractComponentTest.java,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- AbstractComponentTest.java	27 May 2002 08:30:30 -0000	1.42
  +++ AbstractComponentTest.java	28 May 2002 03:29:56 -0000	1.43
  @@ -23,7 +23,6 @@
   import org.apache.avalon.framework.logger.LogEnabled;
   import org.apache.avalon.framework.logger.Logger;
   import org.apache.avalon.framework.service.DefaultServiceManager;
  -import org.apache.avalon.framework.service.ServiceManager;
   import org.apache.avalon.framework.service.Serviceable;
   import org.apache.myrmidon.AbstractContainerTestCase;
   import org.apache.myrmidon.api.TaskContext;
  @@ -62,7 +61,7 @@
    * A base class for tests for the default components.
    *
    * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
  - * @version $Revision: 1.42 $ $Date: 2002/05/27 08:30:30 $
  + * @version $Revision: 1.43 $ $Date: 2002/05/28 03:29:56 $
    */
   public abstract class AbstractComponentTest
       extends AbstractContainerTestCase
  @@ -77,7 +76,7 @@
       /**
        * Returns the component manager containing the components to test.
        */
  -    protected final ServiceManager getServiceManager() throws Exception
  +    protected final DefaultServiceManager getServiceManager() throws Exception
       {
           if( m_serviceManager == null )
           {
  @@ -226,11 +225,8 @@
       protected TaskContext createContext()
           throws Exception
       {
  -        ExecutionFrame frame = createExecutionFrame( null );
  -
  -        final TaskContext context =
  -            new DefaultTaskContext( frame, "test", "gen:///test:0:0" );
  -        return context;
  +        final ExecutionFrame frame = createExecutionFrame( null );
  +        return new DefaultTaskContext( frame, "test", "gen:///test:0:0" );
       }
   
       /**
  @@ -239,18 +235,16 @@
       protected ExecutionFrame createExecutionFrame( PropertyStore props )
           throws Exception
       {
  -        final ServiceManager serviceManager = getServiceManager();
  -        final TaskEventManager eventManager = (TaskEventManager)serviceManager.lookup( TaskEventManager.ROLE );
  +        final DefaultServiceManager serviceManager = getServiceManager();
   
           if( props == null )
           {
               props = new DefaultPropertyStore();
           }
  +        serviceManager.put( PropertyStore.ROLE, props );
   
           final File baseDir = getTestDirectory();
  -        final ExecutionFrame frame =
  -            new DefaultExecutionFrame( "", baseDir, getLogger(), props, serviceManager, eventManager );
  -        return frame;
  +        return new DefaultExecutionFrame( "", baseDir, serviceManager );
       }
   
       /**
  @@ -259,7 +253,8 @@
       protected void registerRole( final RoleInfo roleInfo )
           throws Exception
       {
  -        RoleRegistry roleRegistry = (RoleRegistry)getServiceManager().lookup( RoleRegistry.ROLE );
  +        final RoleRegistry roleRegistry =
  +            (RoleRegistry)getServiceManager().lookup( RoleRegistry.ROLE );
           roleRegistry.addRole( roleInfo );
       }
   
  
  
  
  1.77      +19 -23    jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java
  
  Index: DefaultEmbeddor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java,v
  retrieving revision 1.76
  retrieving revision 1.77
  diff -u -r1.76 -r1.77
  --- DefaultEmbeddor.java	27 May 2002 08:30:30 -0000	1.76
  +++ DefaultEmbeddor.java	28 May 2002 03:29:56 -0000	1.77
  @@ -63,7 +63,7 @@
    * Instantiate this to embed inside other applications.
    *
    * @author <a href="mailto:peter@apache.org">Peter Donald</a>
  - * @version $Revision: 1.76 $ $Date: 2002/05/27 08:30:30 $
  + * @version $Revision: 1.77 $ $Date: 2002/05/28 03:29:56 $
    */
   public class DefaultEmbeddor
       extends AbstractLogEnabled
  @@ -81,7 +81,6 @@
       private Deployer m_deployer;
       private TypeManager m_typeManager;
       private LibraryManager m_libraryManager;
  -    private MultiSourceServiceManager m_workspaceServiceManager;
   
       private List m_components = new ArrayList();
       private DefaultServiceManager m_serviceManager = new DefaultServiceManager();
  @@ -143,19 +142,28 @@
       public ExecutionFrame createExecutionFrame( final Map properties )
           throws Exception
       {
  +        // setup a service manager that creates the project services
  +        final ServiceManager projServiceManager =
  +            (ServiceManager)createService( ServiceManager.class,
  +                                           PREFIX + "service.InstantiatingServiceManager" );
  +        setupObject( projServiceManager, m_serviceManager, null );
  +        m_components.add( projServiceManager );
  +
  +        final MultiSourceServiceManager msServiceManager =
  +            new MultiSourceServiceManager();
  +        msServiceManager.add( projServiceManager );
  +        msServiceManager.add( m_serviceManager );
  +
  +        final DefaultServiceManager manager =
  +            new DefaultServiceManager( msServiceManager );
  +
           // Create the property store
           final PropertyStore propStore = createBaseStore( properties );
  -
  -        // Create an execution frame, and attach it to the workspace
  -        final TaskEventManager eventManager =
  -            (TaskEventManager)m_workspaceServiceManager.lookup( TaskEventManager.ROLE );
  +        manager.put( PropertyStore.ROLE, propStore );
   
           return new DefaultExecutionFrame( "",
                                             new File( "." ),
  -                                          getLogger(),
  -                                          propStore,
  -                                          m_workspaceServiceManager,
  -                                          eventManager );
  +                                          manager );
       }
   
       /**
  @@ -166,7 +174,7 @@
       {
           final Workspace workspace =
               (Workspace)createService( Workspace.class, PREFIX + "workspace.DefaultWorkspace" );
  -        setupObject( workspace, m_workspaceServiceManager, null );
  +        setupObject( workspace, null, null );
   
           return workspace;
       }
  @@ -200,18 +208,6 @@
           m_deployer = (Deployer)m_serviceManager.lookup( Deployer.ROLE );
           m_typeManager = (TypeManager)m_serviceManager.lookup( TypeManager.ROLE );
           m_libraryManager = (LibraryManager)m_serviceManager.lookup( LibraryManager.ROLE );
  -
  -        // setup a service manager that creates the project services
  -        final ServiceManager projServiceManager =
  -            (ServiceManager)createService( ServiceManager.class,
  -                                           PREFIX + "service.InstantiatingServiceManager" );
  -        setupObject( projServiceManager, m_serviceManager, null );
  -        m_components.add( projServiceManager );
  -
  -        // setup a service manager to be used by workspaces
  -        m_workspaceServiceManager = new MultiSourceServiceManager();
  -        m_workspaceServiceManager.add( projServiceManager );
  -        m_workspaceServiceManager.add( m_serviceManager );
       }
   
       public void start()
  
  
  
  1.4       +30 -42    jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/interfaces/executor/DefaultExecutionFrame.java
  
  Index: DefaultExecutionFrame.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/interfaces/executor/DefaultExecutionFrame.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DefaultExecutionFrame.java	28 May 2002 02:00:30 -0000	1.3
  +++ DefaultExecutionFrame.java	28 May 2002 03:29:56 -0000	1.4
  @@ -8,8 +8,8 @@
   package org.apache.myrmidon.interfaces.executor;
   
   import java.io.File;
  -import org.apache.avalon.framework.logger.Logger;
   import org.apache.avalon.framework.service.ServiceManager;
  +import org.apache.avalon.framework.service.ServiceException;
   import org.apache.avalon.framework.service.DefaultServiceManager;
   import org.apache.myrmidon.interfaces.event.TaskEventManager;
   import org.apache.myrmidon.interfaces.property.PropertyStore;
  @@ -18,32 +18,31 @@
    * Frames in which tasks are executed.
    *
    * @author <a href="mailto:peter@apache.org">Peter Donald</a>
  - * @version $Revision: 1.3 $ $Date: 2002/05/28 02:00:30 $
  + * @version $Revision: 1.4 $ $Date: 2002/05/28 03:29:56 $
    */
   public class DefaultExecutionFrame
       implements ExecutionFrame
   {
       private final String m_name;
       private final File m_baseDirectory;
  -    private final Logger m_logger;
  -    private final PropertyStore m_propertyStore;
       private final ServiceManager m_serviceManager;
       private final TaskEventManager m_eventManager;
   
       public DefaultExecutionFrame( final String name,
                                     final File baseDirectory,
  -                                  final Logger logger,
  -                                  final PropertyStore propertyStore,
  -                                  final ServiceManager serviceManager,
  -                                  final TaskEventManager eventManager )
  +                                  final ServiceManager serviceManager )
       {
           m_name = name;
           m_baseDirectory = baseDirectory;
  -        m_logger = logger;
  -        m_propertyStore = propertyStore;
           m_serviceManager = serviceManager;
  -        m_eventManager = eventManager;
  -        ( (DefaultServiceManager)serviceManager ).put( PropertyStore.ROLE, propertyStore );
  +        try
  +        {
  +            m_eventManager = (TaskEventManager)serviceManager.lookup( TaskEventManager.ROLE );
  +        }
  +        catch( final ServiceException se )
  +        {
  +            throw new IllegalStateException( se.toString() );
  +        }
       }
   
       /**
  @@ -64,14 +63,6 @@
       }
   
       /**
  -     * Returns the logger which is to be supplied to tasks.
  -     */
  -    public Logger getLogger()
  -    {
  -        return m_logger;
  -    }
  -
  -    /**
        * Returns the set of services to use to create, configure, and execute
        * tasks.
        */
  @@ -81,15 +72,7 @@
       }
   
       /**
  -     * Returns the set of properties to be supplied to tasks.
  -     */
  -    public PropertyStore getPropertyStore()
  -    {
  -        return m_propertyStore;
  -    }
  -
  -    /**
  -     * Returns the {@link org.apache.myrmidon.interfaces.event.TaskEventManager} that can be used to fire events
  +     * Returns the {@link TaskEventManager} that can be used to fire events
        * or to register listeners.
        */
       public TaskEventManager getTaskEventManager()
  @@ -117,31 +100,36 @@
               dir = getBaseDirectory();
           }
   
  -        PropertyStore propertyStore;
  -        if( partition )
  +        ServiceManager serviceManager;
  +        if( newServiceManager != null )
           {
  -            propertyStore = getPropertyStore().createChildStore();
  +            serviceManager = newServiceManager;
           }
           else
           {
  -            propertyStore = getPropertyStore();
  +            serviceManager = getServiceManager();
           }
   
  -        ServiceManager serviceManager;
  -        if( newServiceManager != null )
  +        try
           {
  -            serviceManager = newServiceManager;
  +            if( partition )
  +            {
  +                //What an UGLY Hack!!!
  +                final PropertyStore basePropertyStore =
  +                    (PropertyStore)serviceManager.lookup( PropertyStore.ROLE );
  +                final PropertyStore propertyStore = basePropertyStore.createChildStore();
  +                final DefaultServiceManager defaultServiceManager = new DefaultServiceManager( serviceManager );
  +                defaultServiceManager.put( PropertyStore.ROLE, propertyStore );
  +                serviceManager = defaultServiceManager;
  +            }
           }
  -        else
  +        catch( final ServiceException se )
           {
  -            serviceManager = getServiceManager();
  +            //throw new IllegalStateException( se.toString() );
           }
   
           return new DefaultExecutionFrame( newName,
                                             dir,
  -                                          getLogger(),
  -                                          propertyStore,
  -                                          serviceManager,
  -                                          getTaskEventManager() );
  +                                          serviceManager );
       }
   }
  
  
  
  1.16      +1 -13     jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/interfaces/executor/ExecutionFrame.java
  
  Index: ExecutionFrame.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/interfaces/executor/ExecutionFrame.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- ExecutionFrame.java	11 May 2002 12:44:00 -0000	1.15
  +++ ExecutionFrame.java	28 May 2002 03:29:56 -0000	1.16
  @@ -7,7 +7,6 @@
    */
   package org.apache.myrmidon.interfaces.executor;
   
  -import org.apache.avalon.framework.logger.Logger;
   import org.apache.avalon.framework.service.ServiceManager;
   import org.apache.myrmidon.interfaces.event.TaskEventManager;
   import org.apache.myrmidon.interfaces.property.PropertyStore;
  @@ -23,7 +22,7 @@
    * a logger.
    *
    * @author <a href="mailto:peter@apache.org">Peter Donald</a>
  - * @version $Revision: 1.15 $ $Date: 2002/05/11 12:44:00 $
  + * @version $Revision: 1.16 $ $Date: 2002/05/28 03:29:56 $
    */
   public interface ExecutionFrame
   {
  @@ -51,17 +50,6 @@
        * tasks.
        */
       ServiceManager getServiceManager();
  -
  -    /**
  -     * Returns the logger which is to be supplied to tasks.
  -     * @todo Remove me
  -     */
  -    Logger getLogger();
  -
  -    /**
  -     * Returns the {@link PropertyStore} to be supplied to tasks.
  -     */
  -    PropertyStore getPropertyStore();
   
       /**
        * Returns the {@link TaskEventManager} that can be used to fire events
  
  
  
  1.7       +3 -3      jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/interfaces/service/MultiSourceServiceManager.java
  
  Index: MultiSourceServiceManager.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/interfaces/service/MultiSourceServiceManager.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- MultiSourceServiceManager.java	1 Apr 2002 09:56:27 -0000	1.6
  +++ MultiSourceServiceManager.java	28 May 2002 03:29:57 -0000	1.7
  @@ -18,13 +18,13 @@
    * {@link ServiceManager} objects.
    *
    * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
  - * @version $Revision: 1.6 $ $Date: 2002/04/01 09:56:27 $
  + * @version $Revision: 1.7 $ $Date: 2002/05/28 03:29:57 $
    */
   public class MultiSourceServiceManager
       implements ServiceManager
   {
  -    private static final Resources REZ
  -        = ResourceManager.getPackageResources( MultiSourceServiceManager.class );
  +    private static final Resources REZ =
  +        ResourceManager.getPackageResources( MultiSourceServiceManager.class );
   
       /** The source service managers, in order. */
       private final ArrayList m_sources = new ArrayList();
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>