mcconnell 2002/12/16 20:57:21 Modified: assembly/src/java/org/apache/avalon/assembly/lifestyle AbstractLifestyleHandler.java LifestyleHandler.java SingletonLifestyleHandler.java ThreadLocalLifestyleHandler.java TransientLifestyleHandler.java Log: Added support for handler termination and associated object decommissioning. Revision Changes Path 1.9 +22 -4 avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/AbstractLifestyleHandler.java Index: AbstractLifestyleHandler.java =================================================================== RCS file: /home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/AbstractLifestyleHandler.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- AbstractLifestyleHandler.java 14 Dec 2002 21:04:41 -0000 1.8 +++ AbstractLifestyleHandler.java 17 Dec 2002 04:57:20 -0000 1.9 @@ -220,11 +220,20 @@ public abstract Object access( StageDescriptor stage ) throws LifestyleException; /** - * Release an a service or handler established by the appliance. + * Release an a service or handler established by the appliance. The + * default implementation irreversably decommissions the supplied object. * @param object the service to be released */ - public abstract void release( Object object ); - + public void release( Object object ) + { + if( getLogger().isDebugEnabled() ) + { + final String debug = "release: " + getAppliance(); + getLogger().debug( debug ); + } + processReleaseStage( object ); + m_deployment.decommission( getAppliance(), object ); + } //============================================================== // Disposable @@ -470,4 +479,13 @@ } return table; } + + /** + * Terminate the appliance. + */ + public void terminate() + { + dispose(); + } + } 1.4 +6 -1 avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/LifestyleHandler.java Index: LifestyleHandler.java =================================================================== RCS file: /home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/LifestyleHandler.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- LifestyleHandler.java 14 Dec 2002 21:04:41 -0000 1.3 +++ LifestyleHandler.java 17 Dec 2002 04:57:20 -0000 1.4 @@ -85,4 +85,9 @@ */ void release( Object object ); + /** + * Terminate the handler. + */ + void terminate(); + } 1.7 +2 -10 avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/SingletonLifestyleHandler.java Index: SingletonLifestyleHandler.java =================================================================== RCS file: /home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/SingletonLifestyleHandler.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- SingletonLifestyleHandler.java 14 Dec 2002 21:04:41 -0000 1.6 +++ SingletonLifestyleHandler.java 17 Dec 2002 04:57:20 -0000 1.7 @@ -126,7 +126,6 @@ { } - //============================================================== // Disposable //============================================================== @@ -138,14 +137,7 @@ { if( m_instance != null ) { - if( getLogger().isDebugEnabled() ) - { - final String debug = - "release in appliance: " - + getAppliance().getProfile().getName(); - getLogger().debug( debug ); - } - super.processReleaseStage( m_instance ); + super.release( m_instance ); m_instance = null; } super.dispose(); 1.5 +9 -0 avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/ThreadLocalLifestyleHandler.java Index: ThreadLocalLifestyleHandler.java =================================================================== RCS file: /home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/ThreadLocalLifestyleHandler.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- ThreadLocalLifestyleHandler.java 12 Dec 2002 00:32:32 -0000 1.4 +++ ThreadLocalLifestyleHandler.java 17 Dec 2002 04:57:20 -0000 1.5 @@ -156,4 +156,13 @@ } } } + + public void terminate() + { + if( m_instance != null ) + { + super.release( m_instance.get() ); + m_instance = null; + } + } } 1.5 +2 -2 avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/TransientLifestyleHandler.java Index: TransientLifestyleHandler.java =================================================================== RCS file: /home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/lifestyle/TransientLifestyleHandler.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- TransientLifestyleHandler.java 14 Dec 2002 21:04:41 -0000 1.4 +++ TransientLifestyleHandler.java 17 Dec 2002 04:57:20 -0000 1.5 @@ -125,7 +125,7 @@ */ public void release( Object object ) { - super.processReleaseStage( object ); + super.release( object ); synchronized( m_instances ) { m_instances.remove( object );
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>