donaldp 01/03/21 20:51:16 Modified: src/java/org/apache/phoenix/engine/facilities DefaultComponentManagerBuilder.java Log: Updated facility to do dynamic type checking rather than BlockDAG class. Revision Changes Path 1.2 +19 -2 jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/facilities/DefaultComponentManagerBuilder.java Index: DefaultComponentManagerBuilder.java =================================================================== RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/facilities/DefaultComponentManagerBuilder.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DefaultComponentManagerBuilder.java 2001/03/18 08:35:04 1.1 +++ DefaultComponentManagerBuilder.java 2001/03/22 04:51:14 1.2 @@ -18,6 +18,9 @@ import org.apache.phoenix.engine.ServerApplication; import org.apache.phoenix.engine.blocks.BlockEntry; import org.apache.phoenix.engine.blocks.RoleEntry; +import org.apache.phoenix.metainfo.BlockInfo; +import org.apache.phoenix.metainfo.BlockUtil; +import org.apache.phoenix.metainfo.ServiceInfo; /** * Component responsible for building componentManager information for entry. @@ -47,12 +50,16 @@ public ComponentManager createComponentManager( String name, Entry entry ) throws ComponentManagerException { - final DefaultComponentManager componentManager = new DefaultComponentManager(); - final RoleEntry[] roleEntrys = ((BlockEntry)entry).getRoleEntrys(); + final DefaultComponentManager componentManager = new DefaultComponentManager(); + final BlockEntry blockEntry = (BlockEntry)entry; + final BlockInfo info = (BlockInfo)blockEntry.getInfo(); + final RoleEntry[] roleEntrys = blockEntry.getRoleEntrys(); for( int i = 0; i < roleEntrys.length; i++ ) { final String dependencyName = roleEntrys[ i ].getName(); + final ServiceInfo serviceInfo = + info.getDependency( roleEntrys[ i ].getRole() ).getService(); try { @@ -60,6 +67,16 @@ //is validated at entry time final BlockEntry dependency = (BlockEntry)m_serverApplication.getEntry( dependencyName ); + + //make sure that the block offers service it supposed to be providing + final ServiceInfo[] services = dependency.getBlockInfo().getServices(); + if( !BlockUtil.hasMatchingService( services, serviceInfo ) ) + { + throw new ComponentManagerException( "Dependency " + name + + " does not offer service required: " + + serviceInfo ); + } + componentManager.put( roleEntrys[ i ].getRole(), dependency.getBlock() ); } catch( final ContainerException ce ) {} --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]