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/08/02 11:39:40 UTC
cvs commit: jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/kernel SimpleServiceKernel.java SimpleResourceProvider.java
donaldp 2002/08/02 02:39:40
Modified: containerkit/src/java/org/apache/excalibur/containerkit/kernel/components
Main.java
containerkit/src/java/org/apache/excalibur/containerkit/kernel
SimpleServiceKernel.java
SimpleResourceProvider.java
Log:
Use MetaData loader abstraction
Revision Changes Path
1.2 +8 -10 jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/kernel/components/Main.java
Index: Main.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/kernel/components/Main.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Main.java 25 Jun 2002 07:43:24 -0000 1.1
+++ Main.java 2 Aug 2002 09:39:40 -0000 1.2
@@ -7,14 +7,12 @@
*/
package org.apache.excalibur.containerkit.kernel.components;
+import java.net.URL;
import org.apache.avalon.framework.container.ContainerUtil;
import org.apache.avalon.framework.logger.ConsoleLogger;
import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
-import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.parameters.Parameters;
import org.apache.excalibur.containerkit.kernel.SimpleServiceKernel;
-import org.xml.sax.InputSource;
-import java.io.InputStream;
/**
*
@@ -30,12 +28,12 @@
SimpleServiceKernel serviceKernel = new SimpleServiceKernel();
final Logger logger = new ConsoleLogger( ConsoleLogger.LEVEL_DEBUG );
ContainerUtil.enableLogging( serviceKernel, logger );
- DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
- final InputStream resourceAsStream = Main.class.getResourceAsStream( "config.xml" );
- final InputSource input = new InputSource( resourceAsStream );
- final Configuration configuration = builder.build( input );
- ContainerUtil.configure( serviceKernel, configuration );
+ final URL resource = Main.class.getResource( "config.xml" );
+ final Parameters parameters = new Parameters();
+ parameters.setParameter( "config-url", resource.toExternalForm() );
+ ContainerUtil.parameterize( serviceKernel, parameters );
ContainerUtil.initialize( serviceKernel );
Thread.sleep( 2000 );
+ ContainerUtil.shutdown( serviceKernel );
}
}
1.7 +35 -76 jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/kernel/SimpleServiceKernel.java
Index: SimpleServiceKernel.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/kernel/SimpleServiceKernel.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- SimpleServiceKernel.java 19 Jul 2002 01:05:22 -0000 1.6
+++ SimpleServiceKernel.java 2 Aug 2002 09:39:40 -0000 1.7
@@ -7,17 +7,15 @@
*/
package org.apache.excalibur.containerkit.kernel;
-import java.util.ArrayList;
-import java.util.HashMap;
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.excalibur.containerkit.infobuilder.ComponentInfoBuilder;
+import org.apache.avalon.excalibur.i18n.ResourceManager;
+import org.apache.avalon.excalibur.i18n.Resources;
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.excalibur.containerkit.factory.ComponentFactory;
+import org.apache.excalibur.containerkit.factory.DefaultComponentFactory;
import org.apache.excalibur.containerkit.lifecycle.ResourceProvider;
import org.apache.excalibur.containerkit.metadata.ComponentMetaData;
-import org.apache.excalibur.containerkit.metadata.DependencyMetaData;
-import org.apache.excalibur.containerkit.metainfo.ComponentInfo;
/**
* This is a simple ServiceKernel.
@@ -31,100 +29,61 @@
*/
public class SimpleServiceKernel
extends AbstractServiceKernel
- implements Configurable
+ implements Parameterizable
{
- private final ComponentInfoBuilder m_infoBuilder = new ComponentInfoBuilder();
+ private final static Resources REZ =
+ ResourceManager.getPackageResources( SimpleServiceKernel.class );
- private Configuration m_configuration;
- private final HashMap m_infos = new HashMap();
+ private ComponentFactory m_factory;
+ private MetaDataBuilder m_metaDataBuilder;
+ private String m_configURL;
- public void configure( final Configuration configuration )
- throws ConfigurationException
+ public void parameterize( final Parameters parameters )
+ throws ParameterException
{
- m_configuration = configuration;
- }
-
- public void enableLogging( final Logger logger )
- {
- super.enableLogging( logger );
- setupLogger( m_infoBuilder, "infobuilder" );
+ m_configURL = parameters.getParameter( "config-url" );
}
public void initialize()
throws Exception
{
- super.initialize();
+ m_factory = new DefaultComponentFactory( getClass().getClassLoader() );
+ setupLogger( m_factory, "factory" );
- final Configuration[] children =
- m_configuration.getChildren( "component" );
- loadComponentDatas( children );
+ m_metaDataBuilder = new SimpleMetaDataBuilder();
+ setupLogger( m_factory, "builder" );
- startupAllComponents();
- }
+ super.initialize();
- private void loadComponentDatas( final Configuration[] components )
- throws Exception
- {
+ final ComponentMetaData[] components = m_metaDataBuilder.loadMetaData( m_configURL, m_factory );
for( int i = 0; i < components.length; i++ )
{
- loadComponentData( components[ i ] );
+ final ComponentMetaData component = components[ i ];
+ addComponent( component );
}
- }
- private void loadComponentData( final Configuration component )
- throws Exception
- {
- final String name = component.getAttribute( "name" );
- final String impl = component.getAttribute( "impl" );
- final Configuration config = component.getChild( "config" );
- final ComponentInfo info = getComponentInfo( impl );
- final DependencyMetaData[] dependencies =
- parseAssociations( component.getChildren( "provide" ) );
-
- final ComponentMetaData profile =
- new ComponentMetaData( name, dependencies, null, config, info );
- addComponent( profile );
+ startupAllComponents();
}
- private DependencyMetaData[] parseAssociations( final Configuration[] provides )
- throws ConfigurationException
+ public void dispose()
{
- final ArrayList associations = new ArrayList();
- for( int i = 0; i < provides.length; i++ )
+ try
{
- final Configuration provide = provides[ i ];
- final String role = provide.getAttribute( "role" );
- final String provider = provide.getAttribute( "name" );
- final DependencyMetaData association = new DependencyMetaData( role, provider );
- associations.add( association );
+ shutdownAllComponents();
}
- return (DependencyMetaData[])associations.toArray( new DependencyMetaData[ associations.size() ] );
- }
-
- private ComponentInfo getComponentInfo( final String impl )
- throws Exception
- {
- ComponentInfo info = (ComponentInfo)m_infos.get( impl );
- if( null == info )
+ catch( final Exception e )
{
- info = createComponentInfo( impl );
- m_infos.put( impl, info );
+ final String message =
+ REZ.getString( "provider-shutdown.error" );
+ getLogger().warn( message, e );
}
-
- return info;
- }
-
- private ComponentInfo createComponentInfo( final String impl )
- throws Exception
- {
- final Class clazz = Class.forName( impl );
- return m_infoBuilder.build( clazz );
+ super.dispose();
}
protected ResourceProvider prepareResourceProvider()
{
final SimpleResourceProvider resourceProvider =
- new SimpleResourceProvider( this );
+ new SimpleResourceProvider( this, m_factory );
setupLogger( resourceProvider, "provider" );
return resourceProvider;
}
1.5 +13 -10 jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/kernel/SimpleResourceProvider.java
Index: SimpleResourceProvider.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/kernel/SimpleResourceProvider.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- SimpleResourceProvider.java 19 Jul 2002 01:05:22 -0000 1.4
+++ SimpleResourceProvider.java 2 Aug 2002 09:39:40 -0000 1.5
@@ -7,11 +7,12 @@
*/
package org.apache.excalibur.containerkit.kernel;
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.excalibur.containerkit.factory.ComponentFactory;
import org.apache.excalibur.containerkit.lifecycle.impl.AbstractResourceProvider;
import org.apache.excalibur.containerkit.metadata.ComponentMetaData;
-import org.apache.excalibur.containerkit.metainfo.ComponentInfo;
import org.apache.excalibur.containerkit.metainfo.ComponentDescriptor;
-import org.apache.avalon.framework.logger.Logger;
+import org.apache.excalibur.containerkit.metainfo.ComponentInfo;
/**
*
@@ -23,15 +24,18 @@
extends AbstractResourceProvider
{
private final AbstractServiceKernel m_serviceKernel;
+ private final ComponentFactory m_factory;
- public SimpleResourceProvider( final AbstractServiceKernel serviceKernel )
+ public SimpleResourceProvider( final AbstractServiceKernel serviceKernel,
+ final ComponentFactory factory )
{
m_serviceKernel = serviceKernel;
+ m_factory = factory;
}
- protected ComponentMetaData getProfile( Object entry )
+ protected ComponentMetaData getMetaData( final Object entry )
{
- return ( (ComponentEntry)entry ).getProfile();
+ return ((ComponentEntry)entry).getProfile();
}
protected Object getService( final String name,
@@ -50,18 +54,17 @@
public Object createObject( final Object entry )
throws Exception
{
- final ComponentMetaData component = getProfile( entry );
+ final ComponentMetaData component = getMetaData( entry );
final ComponentInfo info = component.getComponentInfo();
final ComponentDescriptor descriptor = info.getComponentDescriptor();
final String implementationKey = descriptor.getImplementationKey();
- final Class clazz = Class.forName( implementationKey );
- return clazz.newInstance();
+ return m_factory.createComponent( implementationKey );
}
public Logger createLogger( final Object entry )
throws Exception
{
- final ComponentMetaData component = getProfile( entry );
+ final ComponentMetaData component = getMetaData( entry );
return getLogger().getChildLogger( component.getName() );
}
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>