You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by do...@apache.org on 2001/04/14 14:08:03 UTC
cvs commit: jakarta-avalon/src/java/org/apache/avalon/atlantis Embeddor.java AbstractKernel.java Application.java Kernel.java
donaldp 01/04/14 05:08:03
Modified: src/java/org/apache/avalon/atlantis AbstractKernel.java
Application.java Kernel.java
Added: src/java/org/apache/avalon/atlantis Embeddor.java
Log:
Migrate Embeddor from Phoenix to atlantis
Revision Changes Path
1.2 +85 -89 jakarta-avalon/src/java/org/apache/avalon/atlantis/AbstractKernel.java
Index: AbstractKernel.java
===================================================================
RCS file: /home/cvs/jakarta-avalon/src/java/org/apache/avalon/atlantis/AbstractKernel.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractKernel.java 2001/02/24 04:00:50 1.1
+++ AbstractKernel.java 2001/04/14 12:08:03 1.2
@@ -18,8 +18,8 @@
import org.apache.avalon.DefaultContext;
import org.apache.avalon.camelot.AbstractContainer;
import org.apache.avalon.camelot.Container;
-import org.apache.avalon.camelot.Entry;
import org.apache.avalon.camelot.ContainerException;
+import org.apache.avalon.camelot.Entry;
import org.apache.avalon.camelot.FactoryException;
import org.apache.avalon.camelot.Locator;
@@ -40,12 +40,10 @@
extends AbstractContainer
implements Kernel
{
- protected boolean m_initialised = false;
- protected boolean m_running = false;
- protected Class m_applicationClass;
+ protected boolean m_initialised;
- public void init()
- throws Exception
+ public void init()
+ throws Exception
{
final Iterator names = list();
while( names.hasNext() )
@@ -54,7 +52,7 @@
final Entry entry = getEntry( name );
initializeEntry( name, entry );
}
- }
+ }
public void start()
throws Exception
@@ -67,24 +65,10 @@
startEntry( name, entry );
}
}
-
- public void run()
- {
- m_running = true;
-
- while( m_running )
- {
- try { synchronized( this ) { wait(); } }
- catch (InterruptedException e) {}
- }
- }
- public void stop()
+ public void stop()
throws Exception
{
- m_running = false;
- synchronized( this ) { notifyAll(); }
-
final Iterator names = list();
while( names.hasNext() )
{
@@ -93,12 +77,12 @@
stopEntry( name, entry );
}
}
-
- public void dispose()
+
+ public void dispose()
throws Exception
{
m_initialised = false;
-
+
final Iterator names = list();
while( names.hasNext() )
{
@@ -109,85 +93,115 @@
}
/**
- * Retrieve Application from container.
- * The Application that is returned must be initialized
+ * Retrieve Application from container.
+ * The Application that is returned must be initialized
* and prepared for manipulation.
*
* @param name the name of application
* @return the application
- * @exception ContainerException if an error occurs
+ * @exception ContainerException if an error occurs
*/
public Application getApplication( String name )
throws ContainerException
{
final Entry entry = getEntry( name );
- try { initializeEntry( name, entry ); }
- catch( final Exception e )
- {
- throw new ContainerException( "Error prepareing entry", e );
- }
+ initializeEntry( name, entry );
return (Application)entry.getInstance();
}
- protected void initializeEntry( final String name, final Entry entry )
- throws Exception
+ /**
+ * Create and initialize the application instance if it is not already initialized.
+ *
+ * @param name the name of application
+ * @param entry the entry for application
+ * @exception ContainerException if an error occurs
+ */
+ private void initializeEntry( final String name, final Entry entry )
+ throws ContainerException
{
Application application = (Application)entry.getInstance();
if( null == application )
{
+ //Give sub-class chance to do some validation
+ //by overiding preInitialize
preInitializeEntry( name, entry );
+
application = createApplicationFor( name, entry );
- entry.setInstance( application );
- prepareApplication( name, entry, application );
- application.init();
+ try
+ {
+ entry.setInstance( application );
+
+ //Give sub-class chance to prepare entry
+ //This performs process required before the application
+ //is ready to be initialized
+ prepareApplication( name, entry );
+
+ application.init();
+ }
+ catch( final Throwable t )
+ {
+ //Initialization failed so clean entry
+ //so invalid instance is not used
+ entry.setInstance( null );
+ }
+
+ //Give sub-class chance to do something post
+ //initialisation
postInitializeEntry( name, entry );
}
}
- protected void startEntry( final String name, final Entry entry )
+ private void startEntry( final String name, final Entry entry )
throws Exception
{
final Application application = (Application)entry.getInstance();
- if( null != application )
+ if( null != application )
{
application.start();
}
else
{
getLogger().warn( "Failed to start application " + name +
- " as it is not initialized" );
+ " as it is not initialized" );
}
}
- protected void stopEntry( final String name, final Entry entry )
+ private void stopEntry( final String name, final Entry entry )
throws Exception
{
final Application application = (Application)entry.getInstance();
- if( null != application )
+ if( null != application )
{
application.stop();
}
else
{
getLogger().warn( "Failed to stop application " + name +
- " as it is not initialized/started" );
+ " as it is not initialized/started" );
}
}
- protected void disposeEntry( final String name, final Entry entry )
- throws Exception
+ private void disposeEntry( final String name, final Entry entry )
+ throws ContainerException
{
- Application application = (Application)entry.getInstance();
+ final Application application = (Application)entry.getInstance();
if( null != application )
{
preDisposeEntry( name, entry );
entry.setInstance( null );
- application.dispose();
+
+ try { application.dispose(); }
+ catch( final Exception e )
+ {
+ throw new ContainerException( "Failed to dispose application " + name,
+ e );
+ }
+
postDisposeEntry( name, entry );
}
}
@@ -198,11 +212,11 @@
*
* @param name the name of the entry
* @param entry the entry
- * @exception Exception if an error occurs
+ * @exception ContainerException if an error occurs
*/
protected void preInitializeEntry( final String name, final Entry entry )
- throws Exception
- {
+ throws ContainerException
+ {
}
/**
@@ -211,11 +225,9 @@
*
* @param name the name of the entry
* @param entry the entry
- * @exception Exception if an error occurs
*/
protected void postInitializeEntry( final String name, final Entry entry )
- throws Exception
- {
+ {
}
/**
@@ -224,11 +236,11 @@
*
* @param name the name of the entry
* @param entry the entry
- * @exception Exception if an error occurs
+ * @exception ContainerException if an error occurs
*/
protected void preDisposeEntry( final String name, final Entry entry )
- throws Exception
- {
+ throws ContainerException
+ {
}
/**
@@ -237,49 +249,33 @@
*
* @param name the name of the entry
* @param entry the entry
- * @exception Exception if an error occurs
*/
protected void postDisposeEntry( final String name, final Entry entry )
- throws Exception
- {
+ {
}
/**
* Prepare an application before it is initialized.
- * Overide to provide functionality.
+ * Overide to provide functionality.
* Usually used to setLogger(), contextualize, compose, configure.
*
* @param name the name of application
- * @param entry the application entry
- * @param application the application instance
- * @exception Exception if an error occurs
+ * @param entry the application entry
+ * @exception ContainerException if an error occurs
*/
- protected void prepareApplication( final String name,
- final Entry entry,
- final Application application )
- throws Exception
- {
- }
-
- protected Application createApplicationFor( final String name, final Entry entry )
- throws Exception
+ protected void prepareApplication( final String name, final Entry entry )
+ throws ContainerException
{
- final Application application = newApplication( name, entry );
-
- if( !m_applicationClass.isInstance( application ) )
- {
- throw new IllegalArgumentException( "Created an application that is not " +
- "of type " + m_applicationClass.getName() +
- " but of type " +
- application.getClass().getName() );
- }
-
- return application;
}
- protected Application newApplication( final String name, final Entry entry )
- throws Exception
- {
- return (Application)m_applicationClass.newInstance();
- }
+ /**
+ * Create a new application for kernel.
+ *
+ * @param name the name of application
+ * @param entry the entry corresponding to application
+ * @return the new Application
+ * @exception ContainerException if an error occurs
+ */
+ protected abstract Application createApplicationFor( String name, Entry entry )
+ throws ContainerException;
}
1.2 +1 -1 jakarta-avalon/src/java/org/apache/avalon/atlantis/Application.java
Index: Application.java
===================================================================
RCS file: /home/cvs/jakarta-avalon/src/java/org/apache/avalon/atlantis/Application.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Application.java 2001/02/24 04:00:50 1.1
+++ Application.java 2001/04/14 12:08:03 1.2
@@ -24,6 +24,6 @@
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public interface Application
- extends Initializable, Startable, Stoppable, Disposable, Container
+ extends Container, Initializable, Startable, Stoppable, Disposable
{
}
1.2 +1 -1 jakarta-avalon/src/java/org/apache/avalon/atlantis/Kernel.java
Index: Kernel.java
===================================================================
RCS file: /home/cvs/jakarta-avalon/src/java/org/apache/avalon/atlantis/Kernel.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Kernel.java 2001/02/24 04:00:50 1.1
+++ Kernel.java 2001/04/14 12:08:03 1.2
@@ -23,7 +23,7 @@
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public interface Kernel
- extends Application, Runnable
+ extends Application
{
/**
* Retrieve Application from container.
1.1 jakarta-avalon/src/java/org/apache/avalon/atlantis/Embeddor.java
Index: Embeddor.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
package org.apache.avalon.atlantis;
import org.apache.avalon.Disposable;
import org.apache.avalon.Initializable;
import org.apache.avalon.configuration.ConfigurationException;
import org.apache.avalon.configuration.Parameters;
/**
* This is the object that is interacted with to create, manage and
* dispose of the kernel and related resources.
*
* @author <a href="mail@leosimons.com">Leo Simons</a>
* @author <a href="donaldp@apache.org">Peter Donald</a>
*/
public interface Embeddor
extends Initializable, Disposable
{
/**
* Kset parameters for this component.
* This must be called before initialize()
*
* @param parameters the Parameters for embeddor
* @exception ConfigurationException if an error occurs
*/
void setParameters( Parameters parameters )
throws ConfigurationException;
/**
* After the Embeddor is initialized, this method is called to actually
* do the work. It will return when the embeddor is ready to be disposed.
*
* @exception Exception if an error occurs
*/
void execute()
throws Exception;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: avalon-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: avalon-dev-help@jakarta.apache.org