You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by do...@apache.org on 2002/11/08 00:46:48 UTC
cvs commit: jakarta-avalon-excalibur/fortress/src/java/org/apache/excalibur/fortress/handler AbstractComponentHandler.java FactoryComponentHandler.java PerThreadComponentHandler.java PoolableComponentHandler.java ThreadSafeComponentHandler.java
donaldp 2002/11/07 15:46:48
Modified: fortress/src/java/org/apache/excalibur/fortress/handler
AbstractComponentHandler.java
FactoryComponentHandler.java
PerThreadComponentHandler.java
PoolableComponentHandler.java
ThreadSafeComponentHandler.java
Log:
Rework how the handlers implement get so that they now overide an abstract method in AbstractComponentHandler rather than calling parent get() method and ignoring return value.
Revision Changes Path
1.17 +26 -17 jakarta-avalon-excalibur/fortress/src/java/org/apache/excalibur/fortress/handler/AbstractComponentHandler.java
Index: AbstractComponentHandler.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/fortress/src/java/org/apache/excalibur/fortress/handler/AbstractComponentHandler.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- AbstractComponentHandler.java 2 Oct 2002 01:52:21 -0000 1.16
+++ AbstractComponentHandler.java 7 Nov 2002 23:46:48 -0000 1.17
@@ -55,6 +55,7 @@
import org.apache.avalon.framework.context.Context;
import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.container.ContainerUtil;
import org.apache.excalibur.fortress.Container;
import org.apache.excalibur.fortress.lifecycle.LifecycleExtensionManager;
import org.apache.excalibur.instrument.AbstractInstrumentable;
@@ -178,31 +179,41 @@
{
if( !m_initialized )
{
- throw new IllegalStateException(
- "You cannot get a component from an uninitialized holder"
- );
+ final String message =
+ "You cannot get a component from an uninitialized holder";
+ throw new IllegalStateException( message );
}
if( m_disposed )
{
- throw new IllegalStateException(
- "You cannot get a component from a disposed holder"
- );
+ final String message =
+ "You cannot get a component from a disposed holder";
+ throw new IllegalStateException( message );
}
- return null; // value not used, satisfies compiler
+ return doGet();
}
/**
+ * Subclasses should actually overide this to do the work
+ * of retrieving a service.
+ *
+ * @return the service
+ * @throws Exception if unable to aquire service
+ */
+ protected abstract Object doGet()
+ throws Exception;
+
+ /**
* Return a reference of the desired Component
*/
public void put( final Object component )
{
if( !m_initialized )
{
- throw new IllegalStateException(
- "You cannot put a component in an uninitialized holder"
- );
+ final String message =
+ "You cannot put a component in an uninitialized holder";
+ throw new IllegalStateException( message );
}
}
@@ -213,17 +224,15 @@
{
try
{
- if( m_factory instanceof Disposable )
- {
- ( (Disposable)m_factory ).dispose();
- }
+ ContainerUtil.dispose( m_factory );
}
catch( final Exception e )
{
if( m_logger.isWarnEnabled() )
{
- m_logger.warn( "Error decommissioning component: " +
- m_factory.getCreatedClass().getName(), e );
+ final String message = "Error decommissioning component: " +
+ m_factory.getCreatedClass().getName();
+ m_logger.warn( message, e );
}
}
1.27 +2 -4 jakarta-avalon-excalibur/fortress/src/java/org/apache/excalibur/fortress/handler/FactoryComponentHandler.java
Index: FactoryComponentHandler.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/fortress/src/java/org/apache/excalibur/fortress/handler/FactoryComponentHandler.java,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- FactoryComponentHandler.java 2 Oct 2002 01:47:00 -0000 1.26
+++ FactoryComponentHandler.java 7 Nov 2002 23:46:48 -0000 1.27
@@ -105,11 +105,9 @@
/**
* Get a reference of the desired Component
*/
- public Object get()
+ protected Object doGet()
throws Exception
{
- super.get();
-
return m_factory.newInstance();
}
1.30 +4 -7 jakarta-avalon-excalibur/fortress/src/java/org/apache/excalibur/fortress/handler/PerThreadComponentHandler.java
Index: PerThreadComponentHandler.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/fortress/src/java/org/apache/excalibur/fortress/handler/PerThreadComponentHandler.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- PerThreadComponentHandler.java 7 Nov 2002 23:28:59 -0000 1.29
+++ PerThreadComponentHandler.java 7 Nov 2002 23:46:48 -0000 1.30
@@ -119,14 +119,11 @@
/**
* Get a reference of the desired Component
*/
- public final Object get()
+ protected Object doGet()
throws Exception
{
- super.get();
-
- Object instance = m_instance.get();
-
- if( instance == null )
+ final Object instance = m_instance.get();
+ if( null == instance )
{
throw new IllegalStateException( "Instance is unavailable" );
}
1.31 +2 -4 jakarta-avalon-excalibur/fortress/src/java/org/apache/excalibur/fortress/handler/PoolableComponentHandler.java
Index: PoolableComponentHandler.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/fortress/src/java/org/apache/excalibur/fortress/handler/PoolableComponentHandler.java,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- PoolableComponentHandler.java 2 Oct 2002 01:47:00 -0000 1.30
+++ PoolableComponentHandler.java 7 Nov 2002 23:46:48 -0000 1.31
@@ -122,11 +122,9 @@
/**
* Get a reference of the desired Component
*/
- public Object get()
+ protected Object doGet()
throws Exception
{
- super.get();
-
return m_pool.acquire();
}
1.29 +18 -21 jakarta-avalon-excalibur/fortress/src/java/org/apache/excalibur/fortress/handler/ThreadSafeComponentHandler.java
Index: ThreadSafeComponentHandler.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/fortress/src/java/org/apache/excalibur/fortress/handler/ThreadSafeComponentHandler.java,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- ThreadSafeComponentHandler.java 7 Nov 2002 23:29:42 -0000 1.28
+++ ThreadSafeComponentHandler.java 7 Nov 2002 23:46:48 -0000 1.29
@@ -54,6 +54,7 @@
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.context.Context;
import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.container.ContainerUtil;
import org.apache.excalibur.fortress.lifecycle.LifecycleExtensionManager;
/**
@@ -65,7 +66,8 @@
* @version CVS $Revision$ $Date$
* @since 4.0
*/
-public final class ThreadSafeComponentHandler extends AbstractComponentHandler
+public final class ThreadSafeComponentHandler
+ extends AbstractComponentHandler
{
private Object m_instance;
@@ -100,20 +102,22 @@
if( m_instance == null )
{
- m_instance = this.m_factory.newInstance();
+ m_instance = m_factory.newInstance();
}
if( m_logger.isDebugEnabled() )
{
- if( this.m_factory != null )
+ if( null != m_factory )
{
- m_logger.debug( "ComponentHandler initialized for: "
- + this.m_factory.getCreatedClass().getName() );
+ final String message = "ComponentHandler initialized for: " +
+ m_factory.getCreatedClass().getName();
+ m_logger.debug( message );
}
else
{
- m_logger.debug( "ComponentHandler initialized for: "
- + this.m_instance.getClass().getName() );
+ final String message =
+ "ComponentHandler initialized for: " + m_instance.getClass().getName();
+ m_logger.debug( message );
}
}
@@ -121,13 +125,13 @@
}
/**
- * Get a reference of the desired Component
+ * Return instance for a get.
+ *
+ * @return the instance
*/
- public final Object get()
+ protected Object doGet()
throws Exception
{
- super.get();
-
return m_instance;
}
@@ -144,15 +148,8 @@
}
else
{
- if( m_instance instanceof Startable )
- {
- ( (Startable)m_instance ).stop();
- }
-
- if( m_instance instanceof Disposable )
- {
- ( (Disposable)m_instance ).dispose();
- }
+ ContainerUtil.stop( m_instance );
+ ContainerUtil.dispose( m_instance );
}
m_instance = null;
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>