mcconnell    2003/09/08 19:15:28

  Modified:    merlin/kernel/impl/src/java/org/apache/avalon/merlin/kernel/impl
                        CLIKernelLoader.java DefaultKernel.java
                        DefaultKernelContext.java
               merlin/kernel/spi/src/java/org/apache/avalon/merlin/kernel
                        Controller.java
  Log:
  Updating to support the passing of a MBeanServer to the kernel.
  
  Revision  Changes    Path
  1.15      +9 -8      
avalon-sandbox/merlin/kernel/impl/src/java/org/apache/avalon/merlin/kernel/impl/CLIKernelLoader.java
  
  Index: CLIKernelLoader.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/merlin/kernel/impl/src/java/org/apache/avalon/merlin/kernel/impl/CLIKernelLoader.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- CLIKernelLoader.java      7 Sep 2003 11:34:14 -0000       1.14
  +++ CLIKernelLoader.java      9 Sep 2003 02:15:27 -0000       1.15
  @@ -167,7 +167,6 @@
           try
           {
               //mx4j.log.Log.setDefaultPriority( mx4j.log.Logger.DEBUG );
  -
               Logger logger = context.getKernelLogger().getChildLogger( "jmx" );
               JRMPKernelAdaptor adapter = new JRMPKernelAdaptor( logger, server );
               setShutdownHook( adapter );
  @@ -186,14 +185,12 @@
           Kernel kernel = null;
           try
           {
  -            kernel = createKernel( context );
  -            ObjectName name = new ObjectName( "merlin.kernel:type=kernel" );
  -            server.registerMBean( kernel, name );
  +            kernel = createKernel( server, context );
           }
           catch( Throwable e )
           {
               final String error = 
  -              "Could not establish or registering the kernel.";
  +              "Could not establish the kernel.";
               String message = ExceptionHelper.packException( error, e );
               System.err.println( message );
               return false;
  @@ -267,12 +264,16 @@
   
       private Kernel createKernel( KernelContext context ) throws KernelException
       {
  -        Kernel kernel = new DefaultKernel( context );
  +        return createKernel( null, context );
  +    }
  +
  +    private Kernel createKernel( MBeanServer server, KernelContext context ) 
  +      throws KernelException
  +    {
  +        Kernel kernel = new DefaultKernel( server, context );
           setShutdownHook( kernel );
           return kernel;
       }
  -
  -
   
       //--------------------------------------------------------------------------
       // implementation
  
  
  
  1.13      +36 -2     
avalon-sandbox/merlin/kernel/impl/src/java/org/apache/avalon/merlin/kernel/impl/DefaultKernel.java
  
  Index: DefaultKernel.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/merlin/kernel/impl/src/java/org/apache/avalon/merlin/kernel/impl/DefaultKernel.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- DefaultKernel.java        7 Sep 2003 11:34:14 -0000       1.12
  +++ DefaultKernel.java        9 Sep 2003 02:15:27 -0000       1.13
  @@ -55,11 +55,14 @@
   import java.net.URL;
   import javax.management.NotificationBroadcasterSupport;
   import javax.management.AttributeChangeNotification;
  +import javax.management.MBeanServer;
  +import javax.management.ObjectName;
   
   import org.apache.avalon.merlin.kernel.Kernel;
   import org.apache.avalon.merlin.kernel.KernelContext;
   import org.apache.avalon.merlin.kernel.KernelException;
   import org.apache.avalon.merlin.kernel.KernelRuntimeException;
  +import org.apache.avalon.activation.appliance.Appliance;
   import org.apache.avalon.activation.appliance.Block;
   import org.apache.avalon.activation.appliance.Composite;
   import org.apache.avalon.activation.appliance.ServiceContext;
  @@ -135,6 +138,8 @@
   
       private long m_stateChangeSequenceId = 0;
   
  +    private final MBeanServer m_server;
  +
       //--------------------------------------------------------------
       // constructor
       //--------------------------------------------------------------
  @@ -147,9 +152,33 @@
       public DefaultKernel( final KernelContext context ) 
         throws KernelException
       {
  +        this( null, context );
  +    }
  +
  +   /**
  +    * Creation of a new Merlin Kernel.
  +    * @param context the kernel context
  +    * @exception KernelException if a kernel creation error occurs
  +    */
  +    public DefaultKernel( final MBeanServer server, final KernelContext context ) 
  +      throws KernelException
  +    {
           if( context == null ) throw new NullPointerException( "context" );
   
           m_context = context;
  +        m_server = server;
  +
  +        if( m_server != null ) try
  +        {
  +            ObjectName name = new ObjectName( "merlin.kernel:type=kernel" );
  +            m_server.registerMBean( this, name );
  +        }
  +        catch( Throwable e )
  +        {
  +            final String error =
  +              "\nInternal error during kernel registration.";
  +            throw new KernelException( error, e );
  +        }
   
           //
           // create the root block into which we install application blocks
  @@ -288,7 +317,8 @@
       */
       public int getMemoryVariableRatio()
       {
  -        return (int) ((Runtime.getRuntime().freeMemory() * 100) / 
Runtime.getRuntime().totalMemory());
  +        return (int) ((Runtime.getRuntime().freeMemory() * 100) / 
  +          Runtime.getRuntime().totalMemory());
       }
   
      /**
  @@ -441,6 +471,10 @@
                   DefaultServiceContext services = new DefaultServiceContext();
                   services.put( PoolManager.ROLE, m_context.getPoolManager() );
                   services.put( LoggingManager.KEY, m_context.getLoggingManager() );
  +                if( m_server != null )
  +                {
  +                    services.put( Appliance.MBEAN_SERVER_KEY, m_server );
  +                }
                   m_block = DefaultBlock.createRootBlock( services, m_model );
               }
               catch( Throwable e )
  
  
  
  1.24      +2 -2      
avalon-sandbox/merlin/kernel/impl/src/java/org/apache/avalon/merlin/kernel/impl/DefaultKernelContext.java
  
  Index: DefaultKernelContext.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/merlin/kernel/impl/src/java/org/apache/avalon/merlin/kernel/impl/DefaultKernelContext.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- DefaultKernelContext.java 7 Sep 2003 11:34:14 -0000       1.23
  +++ DefaultKernelContext.java 9 Sep 2003 02:15:27 -0000       1.24
  @@ -353,7 +353,7 @@
           //
           // setup the pool manager
           // TODO: an implementation following more thinking (pools should
  -        // probably be declared at the component direective level)
  +        // probably be declared at the component directive level)
   
           m_pool = null;
   
  
  
  
  1.3       +1 -5      
avalon-sandbox/merlin/kernel/spi/src/java/org/apache/avalon/merlin/kernel/Controller.java
  
  Index: Controller.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/merlin/kernel/spi/src/java/org/apache/avalon/merlin/kernel/Controller.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Controller.java   7 Sep 2003 11:34:15 -0000       1.2
  +++ Controller.java   9 Sep 2003 02:15:27 -0000       1.3
  @@ -63,10 +63,6 @@
    */
   public interface Controller
   {
  -    //=======================================================================
  -    // static
  -    //=======================================================================
  -
      /**
       * Initiate the establishment of the root container.
       */
  
  
  

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

Reply via email to