donaldp     02/02/01 04:47:15

  Modified:    src/java/org/apache/avalon/phoenix/components/embeddor
                        DefaultEmbeddor.java
  Log:
  Made it so that the embeddor will stop running if there are zero applications 
in the kernel. It will wake up once a second to check for this condition.
  
  Revision  Changes    Path
  1.41      +25 -10    
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/embeddor/DefaultEmbeddor.java
  
  Index: DefaultEmbeddor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/embeddor/DefaultEmbeddor.java,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- DefaultEmbeddor.java      11 Dec 2001 10:13:33 -0000      1.40
  +++ DefaultEmbeddor.java      1 Feb 2002 12:47:15 -0000       1.41
  @@ -182,20 +182,35 @@
           deployDefaultApplications();
   
           // loop until <code>Shutdown</code> is created.
  -        while( !m_shutdown )
  +        while( true )
           {
               // wait() for shutdown() to take action...
  -            try
  +            if( m_shutdown || emptyKernel() )
               {
  -                synchronized( this )
  -                {
  -                    wait();
  -                }
  +                break;
               }
  -            catch( final InterruptedException e )
  +            gotoSleep();
  +        }
  +    }
  +
  +    private boolean emptyKernel()
  +    {
  +        final String[] names = m_kernel.getApplicationNames();
  +        return ( 0 == names.length );
  +    }
  +
  +    private void gotoSleep()
  +    {
  +        try
  +        {
  +            synchronized( this )
               {
  +                wait( 1000 );
               }
           }
  +        catch( final InterruptedException e )
  +        {
  +        }
       }
   
       /**
  @@ -246,7 +261,7 @@
   
       /**
        * Ask the embeddor to restart itself if this operation is supported.
  -     * 
  +     *
        * @exception UnsupportedOperationException if restart not supported
        */
       public void restart()
  @@ -254,10 +269,10 @@
       {
           try
           {
  -            //Pass a message back to original invoker. 
  +            //Pass a message back to original invoker.
               //We use an ActionListener rather than operating on some more 
meaningful
               //event system as ActionListener and friends can be loaded from 
system
  -            //ClassLoader and thus the Embeddor does not have to share a 
common 
  +            //ClassLoader and thus the Embeddor does not have to share a 
common
               //classloader ancestor with invoker
               final ActionListener listener =
                   (ActionListener)m_context.get( 
ActionListener.class.getName() );
  
  
  

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

Reply via email to