Hi Siegfried,

Siegfried Goeschl wrote:
please send me the patch regarding the TurbineYaafiService ... or what was wrong with the implementation?

Here we go. I implemented AvalonComponentService and changed the return types, parameter types and exception types to comply with that. Then I shifted the logger creation into the configuration creation. The logger uses "avalon" now as category which is the value of AVALON_LOG_CATEGORY as defined in the interface.

I hope everything I did is ok with you. I look forward to your comments.

Bye, Thomas.

Index: /yaafi/contrib/TurbineYaafiComponentService.java
===================================================================
--- /yaafi/contrib/TurbineYaafiComponentService.java    (revision 388478)
+++ /yaafi/contrib/TurbineYaafiComponentService.java    (working copy)
@@ -22,7 +22,10 @@
 
 import org.apache.avalon.framework.activity.Disposable;
 import org.apache.avalon.framework.activity.Initializable;
+import org.apache.avalon.framework.component.Component;
+import org.apache.avalon.framework.component.ComponentException;
 import org.apache.avalon.framework.logger.Log4JLogger;
+import org.apache.avalon.framework.service.ServiceException;
 import org.apache.commons.configuration.Configuration;
 import org.apache.fulcrum.yaafi.framework.container.ServiceContainer;
 import 
org.apache.fulcrum.yaafi.framework.factory.ServiceContainerConfiguration;
@@ -31,28 +34,30 @@
 import org.apache.turbine.Turbine;
 import org.apache.turbine.services.InitializationException;
 import org.apache.turbine.services.TurbineBaseService;
+import org.apache.turbine.services.avaloncomponent.AvalonComponentService;
 import org.apache.turbine.services.servlet.TurbineServlet;
 
 /**
  * An implementation of Turbine service initializing the YAAFI container
  *
  * @author <a href="mailto:[EMAIL PROTECTED]">Siegfried Goeschl</a>
+ * @author <a href="mailto:[EMAIL PROTECTED]">Thomas Vandahl</a>
  */
 public class TurbineYaafiComponentService
         extends TurbineBaseService
-        implements YaafiComponentService, Initializable, Disposable
+        implements AvalonComponentService, Initializable, Disposable
 {
-       /** property to lookup the container configuration file */
-       public final String CONTAINER_CONFIGURATION_KEY = 
"containerConfiguration";
+    /** property to lookup the container configuration file */
+    public final String CONTAINER_CONFIGURATION_KEY = "containerConfiguration";
 
-       /** the default value for the container configuration file */
-       public final String CONTAINER_CONFIGURATION_VALUE = 
"/WEB-INF/conf/containerConfiguration.xml";
+    /** the default value for the container configuration file */
+    public final String CONTAINER_CONFIGURATION_VALUE = 
"/WEB-INF/conf/containerConfiguration.xml";
 
     /** property to lookup the properties file */
-       public final String COMPONENT_PARAMETERS_KEY = "parameters";
+    public final String COMPONENT_PARAMETERS_KEY = "parameters";
 
-       /** the default value for the parameter file */
-       public final String COMPONENT_PARAMETERS_VALUE = 
"/WEB-INF/conf/parameters.properties";
+    /** the default value for the parameter file */
+    public final String COMPONENT_PARAMETERS_VALUE = 
"/WEB-INF/conf/parameters.properties";
 
     /** YAFFI container */
     private ServiceContainer container;
@@ -75,7 +80,7 @@
      *
      * @throws InitializationException Something went wrong in the init stage
      */
-    public void init( Object data )
+    public void init()
         throws InitializationException
     {
         try
@@ -134,22 +139,15 @@
         this.logger.info( "Using the following home : " + 
home.getAbsolutePath() );
 
         // create the configuration for YAAFI
-        
-        ServiceContainerConfiguration config = 
this.createServiceContainerConfiguration(conf);
-        
-        config.setLogger( this.createAvalonLogger( "yaafi" ) );
-        config.setApplicationRootDir( home );
+        ServiceContainerConfiguration config = 
this.createServiceContainerConfiguration(conf, home.getAbsolutePath());
 
         try
         {
-            this.container = ServiceContainerFactory.create(
-                config
-                );
+            this.container = ServiceContainerFactory.create(config);
         }
         catch (Throwable t)
         {
-            String msg = "Initializing YAAFI failed";
-            this.logger.error(msg,t);
+            this.logger.error("Initializing YAAFI failed", t);
         }
     }
 
@@ -172,90 +170,98 @@
      * @return an instance of the named component
      * @throws Exception generic exception
      */
-    public Object lookup(String path) throws Exception
+    public Component lookup(String path) throws ComponentException
     {
-        return this.container.lookup(path);
+        try
+        {
+            return (Component)this.container.lookup(path);
+        }
+        catch (ServiceException e)
+        {
+            throw new ComponentException(e.getKey(), e.getMessage(), e);
+        }
     }
 
     /**
      * Releases the component
      *
-     * @param source. The path to the handler for this component For example, 
if the object is a
-     *            java.sql.Connection object sourced from the 
"/turbine-merlin/datasource"
-     *            component, the call would be :- 
release("/turbine-merlin/datasource", conn);
      * @param component the component to release
      */
-    public void release(Object component)
+    public void release(Component component)
     {
         this.container.release( component );
     }
-    
+
     /**
      * Create a ServiceContainerConfiguration based on the Turbine 
configuration
-     * 
+     *
      * @param conf the Turbine configuration
+     * @param appRoot the absolute path to the application root directory
      * @return the YAAFI configuration
      * @throws IOException creating the YAAFI configuration failed
      */
-    protected ServiceContainerConfiguration 
createServiceContainerConfiguration( Configuration conf )
-       throws IOException
+    protected ServiceContainerConfiguration 
createServiceContainerConfiguration( Configuration conf, String appRoot )
+        throws IOException
     {
         ServiceContainerConfiguration result = new 
ServiceContainerConfiguration();
 
+        result.setLogger( this.createAvalonLogger(AVALON_LOG_CATEGORY));
+        result.setApplicationRootDir(appRoot);
+
         // are we using a "containerConfiguration.xml" ?!
-        
+
         if( conf.containsKey(CONTAINER_CONFIGURATION_KEY) )
         {
-               // determine the container configuration file
-               
-               String containerConfiguration = conf.getString(
-                   CONTAINER_CONFIGURATION_KEY
-                   );
-               
-               result.loadContainerConfiguration(containerConfiguration);
-        }    
-           else if( conf.containsKey(COMPONENT_ROLE_KEY) )
-           {                    
-               // determine the location of the role configuraton file
-       
-               String roleConfigurationFileName = conf.getString(
-                   COMPONENT_ROLE_KEY,
-                   COMPONENT_ROLE_VALUE
-                   );
-       
-               // determine the location of component configuration file
-       
-               String componentConfigurationFileName = conf.getString(
-                   COMPONENT_CONFIG_KEY,
-                   COMPONENT_CONFIG_VALUE
-                   );
-       
-               // determine the location of parameters file
-       
-               String parametersFileName = conf.getString(
-                   COMPONENT_PARAMETERS_KEY,
-                   COMPONENT_PARAMETERS_VALUE
-                   );
-               
-               result.setComponentRolesLocation( roleConfigurationFileName );
-               result.setComponentConfigurationLocation( 
componentConfigurationFileName );
-               result.setParametersLocation( parametersFileName );
-           }
-           else
+            // determine the container configuration file
+
+            String containerConfiguration = conf.getString(
+                CONTAINER_CONFIGURATION_KEY
+                );
+
+            result.loadContainerConfiguration(containerConfiguration);
+        }
+        else if( conf.containsKey(COMPONENT_ROLE_KEY) )
         {
-               // determine the container configuration file
-               
-               String containerConfiguration = conf.getString(
-                   CONTAINER_CONFIGURATION_KEY,
-                   CONTAINER_CONFIGURATION_VALUE
-                   );
-               
-               result.loadContainerConfiguration(containerConfiguration);
-        }    
-        
+            // determine the location of the role configuraton file
+
+            String roleConfigurationFileName = conf.getString(
+                COMPONENT_ROLE_KEY,
+                COMPONENT_ROLE_VALUE
+                );
+
+            // determine the location of component configuration file
+
+            String componentConfigurationFileName = conf.getString(
+                COMPONENT_CONFIG_KEY,
+                COMPONENT_CONFIG_VALUE
+                );
+
+            // determine the location of parameters file
+
+            String parametersFileName = conf.getString(
+                COMPONENT_PARAMETERS_KEY,
+                COMPONENT_PARAMETERS_VALUE
+                );
+
+            result.setComponentRolesLocation( roleConfigurationFileName );
+            result.setComponentConfigurationLocation( 
componentConfigurationFileName );
+            result.setParametersLocation( parametersFileName );
+        }
+        else
+        {
+            // determine the container configuration file
+
+            String containerConfiguration = conf.getString(
+                CONTAINER_CONFIGURATION_KEY,
+                CONTAINER_CONFIGURATION_VALUE
+                );
+
+            result.loadContainerConfiguration(containerConfiguration);
+        }
+
         return result;
     }
-    
+
     /**
      * Create the Avalon logger to be passed to YAAFI
      * @param name the name of the logger
@@ -263,6 +269,6 @@
      */
     protected org.apache.avalon.framework.logger.Logger createAvalonLogger( 
String name )
     {
-        return new Log4JLogger( Logger.getLogger( name ) );        
+        return new Log4JLogger( Logger.getLogger( name ) );
     }
 }

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to