donaldp 02/05/14 05:47:25
Modified: src/java/org/apache/avalon/phoenix/components/application
BlockEntry.java LifecycleHelper.java
Log:
Reworked LifecycleHelper/BlockEntry such that the Block objects are no longer
required to implement marker interface Block. (However other parts of Avalon
still demand it).
This also means you need to issue errrors when incompatabilities between
applications exist (ie Block A is composable but some dependencies are not
instances of Component)
Revision Changes Path
1.9 +1 -12
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/application/BlockEntry.java
Index: BlockEntry.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/application/BlockEntry.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- BlockEntry.java 14 May 2002 12:02:49 -0000 1.8
+++ BlockEntry.java 14 May 2002 12:47:25 -0000 1.9
@@ -35,16 +35,6 @@
return m_blockMetaData;
}
- public synchronized Block getBlock()
- {
- return (Block)getObject();
- }
-
- public synchronized void setBlock( final Block block )
- {
- setObject( block );
- }
-
public synchronized void setObject( final Object object )
{
invalidate();
@@ -53,10 +43,9 @@
{
final BlockInfo blockInfo = getMetaData().getBlockInfo();
final Class[] interfaces = getServiceClasses( object,
blockInfo.getServices() );
-
m_invocationHandler = new BlockInvocationHandler( object,
interfaces );
- super.setObject( object );
}
+ super.setObject( object );
}
public synchronized Block getProxy()
1.39 +28 -13
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/application/LifecycleHelper.java
Index: LifecycleHelper.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/application/LifecycleHelper.java,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- LifecycleHelper.java 14 May 2002 12:02:49 -0000 1.38
+++ LifecycleHelper.java 14 May 2002 12:47:25 -0000 1.39
@@ -13,6 +13,7 @@
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.activity.Startable;
+import org.apache.avalon.framework.component.Component;
import org.apache.avalon.framework.component.ComponentManager;
import org.apache.avalon.framework.component.Composable;
import org.apache.avalon.framework.component.DefaultComponentManager;
@@ -32,7 +33,6 @@
import org.apache.avalon.framework.service.Serviceable;
import org.apache.avalon.phoenix.ApplicationEvent;
import org.apache.avalon.phoenix.ApplicationListener;
-import org.apache.avalon.phoenix.Block;
import org.apache.avalon.phoenix.BlockContext;
import org.apache.avalon.phoenix.BlockEvent;
import org.apache.avalon.phoenix.BlockListener;
@@ -211,7 +211,7 @@
//Creation stage
stage = STAGE_CREATE;
notice( name, stage );
- final Block block = createBlock( metaData );
+ final Object block = createBlock( metaData );
//LogEnabled stage
stage = STAGE_LOGGER;
@@ -278,11 +278,11 @@
}
entry.setState( State.STARTED );
- entry.setBlock( block );
+ entry.setObject( block );
exportBlock( metaData, block );
- final Block proxy = entry.getProxy();
+ final Object proxy = entry.getProxy();
final BlockEvent event =
new BlockEvent( name, proxy, metaData.getBlockInfo() );
m_blockListenerSupport.blockAdded( event );
@@ -294,7 +294,9 @@
}
}
- private void setupLogging( final String name, final Block block, int
stage )
+ private void setupLogging( final String name,
+ final Object block,
+ int stage )
throws Exception
{
if( block instanceof Loggable )
@@ -328,7 +330,7 @@
new BlockEvent( name, entry.getProxy(), metaData.getBlockInfo()
);
m_blockListenerSupport.blockRemoved( event );
- final Block block = entry.getBlock();
+ final Object block = entry.getObject();
//Remove block from Management system
unexportBlock( metaData, block );
@@ -380,7 +382,7 @@
* services, into management system.
*/
private void exportBlock( final BlockMetaData metaData,
- final Block block )
+ final Object block )
throws CascadingException
{
final ServiceDescriptor[] services =
metaData.getBlockInfo().getManagementAccessPoints();
@@ -411,7 +413,7 @@
* services, into management system.
*/
private void unexportBlock( final BlockMetaData metaData,
- final Block block )
+ final Object block )
{
final ServiceDescriptor[] services =
metaData.getBlockInfo().getManagementAccessPoints();
final String name = metaData.getName();
@@ -443,12 +445,12 @@
* @return the newly created Block object
* @throws Exception if an error occurs
*/
- private Block createBlock( final BlockMetaData metaData )
+ private Object createBlock( final BlockMetaData metaData )
throws Exception
{
final ClassLoader classLoader = m_context.getClassLoader();
final Class clazz = classLoader.loadClass( metaData.getClassname() );
- return (Block)clazz.newInstance();
+ return clazz.newInstance();
}
/**
@@ -501,6 +503,7 @@
* @return the created ComponentManager
*/
private ComponentManager createComponentManager( final BlockMetaData
metaData )
+ throws Exception
{
final DefaultComponentManager componentManager = new
DefaultComponentManager();
final DependencyMetaData[] roles = metaData.getDependencies();
@@ -508,8 +511,20 @@
for( int i = 0; i < roles.length; i++ )
{
final DependencyMetaData role = roles[ i ];
- final Block dependency = m_application.getBlock( role.getName()
);
- componentManager.put( role.getRole(), dependency );
+ final Object dependency = m_application.getBlock( role.getName()
);
+ if( dependency instanceof Component )
+ {
+ componentManager.put( role.getRole(), (Component)dependency
);
+ }
+ else
+ {
+ final String message =
+ REZ.getString( "lifecycle.nota-component.error",
+ metaData.getName(),
+ role.getRole(),
+ role.getName() );
+ throw new Exception( message );
+ }
}
return componentManager;
@@ -523,7 +538,7 @@
for( int i = 0; i < roles.length; i++ )
{
final DependencyMetaData role = roles[ i ];
- final Block dependency = m_application.getBlock( role.getName()
);
+ final Object dependency = m_application.getBlock( role.getName()
);
manager.put( role.getRole(), dependency );
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>