epugh       2003/11/02 13:51:28

  Modified:    .        project.xml project.properties
               xdocs    changes.xml
  Added:       conf/test MerlinComponentServiceTest.properties
               src/java/org/apache/turbine/services/avaloncomponent
                        TurbineMerlinComponentService.java
               src/test/org/apache/turbine/services/avaloncomponent
                        MerlinComponentServiceTest.java
               conf/test/merlin/BLOCK-INF block.xml
               conf/test/merlin kernel.xml
  Log:
  Merlin based Component Service.  Thanks to Peter.  Plus a unit test.  I will be going
  through the project.xml list of dependencies once I understand better which are 
  required and which are not.
  
  Revision  Changes    Path
  1.1                  
jakarta-turbine-2/conf/test/MerlinComponentServiceTest.properties
  
  Index: MerlinComponentServiceTest.properties
  ===================================================================
  # -------------------------------------------------------------------
  # $Id: MerlinComponentServiceTest.properties,v 1.1 2003/11/02 21:51:28 epugh Exp $
  #
  # This is the configuration file for the Torque Load tests of the
  # Turbine 2 project. Do not remove!
  #
  # -------------------------------------------------------------------
  
  log4j.file = /conf/test/Log4j.properties
  
  
services.FactoryService.classname=org.apache.turbine.services.factory.TurbineFactoryService
  services.PoolService.classname=org.apache.turbine.services.pool.TurbinePoolService
  
services.RunDataService.classname=org.apache.turbine.services.rundata.TurbineRunDataService
  
services.ServletService.classname=org.apache.turbine.services.servlet.TurbineServletService
  
services.AssemblerBrokerService.classname=org.apache.turbine.services.assemblerbroker.TurbineAssemblerBrokerService
  
services.GlobalCacheService.classname=org.apache.turbine.services.cache.TurbineGlobalCacheService
  
services.TemplateService.classname=org.apache.turbine.services.template.TurbineTemplateService
  
services.MerlinComponentService.classname=org.apache.turbine.services.avaloncomponent.TurbineMerlinComponentService
  
  services.MerlinComponentService.earlyInit=true
  services.MerlinComponentService.block.path=conf/test/merlin
  services.MerlinComponentService.kernel=conf/test/merlin/kernel.xml
  
  
  
  
  1.144     +153 -16   jakarta-turbine-2/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-2/project.xml,v
  retrieving revision 1.143
  retrieving revision 1.144
  diff -u -r1.143 -r1.144
  --- project.xml       29 Oct 2003 04:50:53 -0000      1.143
  +++ project.xml       2 Nov 2003 21:51:28 -0000       1.144
  @@ -310,11 +310,144 @@
   
     <dependencies>
       <dependency>
  -      <id>avalon-framework</id>
  -      <version>4.1.4</version>
  -      <url>http://jakarta.apache.org/avalon/</url>
  +      <groupId>mx4j</groupId>
  +      <artifactId>mx4j-jmx</artifactId>
  +      <version>1.1.1</version>
  +    </dependency>
  +    <dependency>
  +      <groupId>mx4j</groupId>
  +      <artifactId>mx4j-tools</artifactId>
  +      <version>1.1.1</version>
  +    </dependency>    
  +    <dependency>
  +      <groupId>avalon-framework</groupId>
  +      <artifactId>avalon-framework-api</artifactId>
  +      <version>4.1.5</version>
  +    </dependency>
  +    <dependency>
  +      <groupId>avalon-framework</groupId>
  +      <artifactId>avalon-framework-impl</artifactId>
  +      <version>4.1.5</version>
  +    </dependency>
  +     <dependency>
  +      <groupId>merlin</groupId>
  +      <artifactId>merlin-kernel-spi</artifactId>
  +      <version>3.2-dev</version>
  +    </dependency>
  +    <dependency>
  +      <groupId>merlin</groupId>
  +      <artifactId>merlin-kernel-impl</artifactId>
  +      <version>3.2-dev</version>
  +    </dependency>
  +
  +    <dependency>
  +      <groupId>avalon-activation</groupId>
  +      <artifactId>avalon-activation-api</artifactId>
  +      <version>1.2-dev</version>
  +    </dependency>
  +    <dependency>
  +      <groupId>avalon-activation</groupId>
  +      <artifactId>avalon-activation-spi</artifactId>
  +      <version>1.2-dev</version>
  +    </dependency>
  +    <dependency>
  +      <groupId>avalon-activation</groupId>
  +      <artifactId>avalon-activation-impl</artifactId>
  +      <version>1.2-dev</version>
  +    </dependency>
  +
  +    <dependency>
  +      <groupId>avalon-composition</groupId>
  +      <artifactId>avalon-composition-api</artifactId>
  +      <version>1.2-dev</version>
  +    </dependency>
  +    <dependency>
  +      <groupId>avalon-composition</groupId>
  +      <artifactId>avalon-composition-spi</artifactId>
  +      <version>1.2-dev</version>
  +    </dependency>
  +    <dependency>
  +      <groupId>avalon-composition</groupId>
  +      <artifactId>avalon-composition-impl</artifactId>
  +      <version>1.2-dev</version>
  +    </dependency>
  +
  +    <dependency>
  +      <groupId>avalon-extension</groupId>
  +      <artifactId>avalon-extension-spi</artifactId>
  +      <version>1.0</version>
  +    </dependency>
  +    <dependency>
  +      <groupId>avalon-extension</groupId>
  +      <artifactId>avalon-extension-impl</artifactId>
  +      <version>1.0</version>
  +    </dependency>
  +
  +    <dependency>
  +      <groupId>avalon-meta</groupId>
  +      <artifactId>avalon-meta-api</artifactId>
  +      <version>1.2.1-dev</version>
  +    </dependency>
  +    <dependency>
  +      <groupId>avalon-meta</groupId>
  +      <artifactId>avalon-meta-spi</artifactId>
  +      <version>1.2.1-dev</version>
  +    </dependency>
  +    <dependency>
  +      <groupId>avalon-meta</groupId>
  +      <artifactId>avalon-meta-impl</artifactId>
  +      <version>1.2.1-dev</version>
  +    </dependency>
  +
  +    <dependency>
  +      <groupId>avalon-repository</groupId>
  +      <artifactId>avalon-repository-spi</artifactId>
  +      <version>1.0b1</version>
       </dependency>
       <dependency>
  +      <groupId>avalon-repository</groupId>
  +      <artifactId>avalon-repository-impl</artifactId>
  +      <version>1.0b1</version>
  +    </dependency>    
  +      <dependency>
  +      <id>logkit</id>
  +      <version>1.2</version>
  +      <url>http://jakarta.apache.org/avalon/logkit/</url>
  +    </dependency>
  +
  +    <dependency>
  +      <groupId>excalibur-lifecycle</groupId>
  +      <artifactId>excalibur-lifecycle-api</artifactId>
  +      <version>1.0</version>
  +    </dependency>
  +
  +    <dependency>
  +      <id>excalibur-i18n</id>
  +      <version>1.1</version>
  +    </dependency>
  +
  +    <dependency>
  +      <id>excalibur-thread</id>
  +      <version>1.1.1</version>
  +    </dependency>
  +    
  +    <dependency>
  +      <id>excalibur-event</id>
  +      <version>1.0.3</version>
  +    </dependency>
  +    
  +    <dependency>
  +      <groupId>excalibur</groupId>
  +      <artifactId>excalibur-util-concurrent</artifactId>
  +      <version>1.3.1</version>
  +    </dependency>
  +
  +    <dependency>
  +      <id>excalibur-configuration</id>
  +      <version>1.1</version>
  +    </dependency>
  +        
  +    <dependency>
         <id>commons-beanutils</id>
         <version>1.6.1</version>
         <url>http://jakarta.apache.org/commons/beanutils.html</url>
  @@ -495,11 +628,6 @@
         <url>http://jakarta.apache.org/log4j/</url>
       </dependency>
       <dependency>
  -      <id>logkit</id>
  -      <version>1.0.1</version>
  -      <url>http://jakarta.apache.org/avalon/logkit/</url>
  -    </dependency>
  -    <dependency>
         <id>servletapi</id>
         <version>2.3</version>
         <url>http://java.sun.com/products/servlet/</url>
  @@ -562,7 +690,14 @@
         <groupId>mockobjects</groupId>
         <artifactId>mockobjects-core</artifactId>
         <version>0.09</version>
  -    </dependency>     
  +    </dependency>  
  +    
  +    <!-- Needed for testing -->
  +    <!--dependency>
  +      <groupId>merlin</groupId>
  +      <artifactId>merlin-hello-tutorial</artifactId>
  +      <version>1.0</version>
  +    </dependency-->   
     </dependencies>
   
     <build>
  @@ -578,22 +713,24 @@
       <aspectSourceDirectory/>
     </build>
   
  -  <reports>
  -    <!--
  -    <report>maven-jdepend-plugin</report>
  -    -->
  +  <reports>    
  +    <report>maven-jdepend-plugin</report>    
       <report>maven-checkstyle-plugin</report>
       <report>maven-changelog-plugin</report>
       <report>maven-developer-activity-plugin</report>
       <report>maven-file-activity-plugin</report>
  -   <!-- <report>maven-javadoc-plugin</report>-->
  +    <!--<report>maven-javadoc-plugin</report>-->
       <report>maven-jxr-plugin</report>
  +     <report>maven-pmd-plugin</report>
  +     <report>maven-jcoverage-plugin</report>
  +     <report>maven-simian-plugin</report>
  +     <report>maven-multiproject-plugin</report>
  +     <report>maven-junit-report-plugin</report>
       <!--
  -    <report>maven-junit-report-plugin</report>
       <report>maven-linkcheck-plugin</report>
       -->
       <report>maven-tasklist-plugin</report>
  -    <report>maven-jcoverage-plugin</report>
  +    
   
     </reports>
   
  
  
  
  1.26      +2 -2      jakarta-turbine-2/project.properties
  
  Index: project.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-2/project.properties,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- project.properties        24 Oct 2003 15:15:08 -0000      1.25
  +++ project.properties        2 Nov 2003 21:51:28 -0000       1.26
  @@ -14,7 +14,7 @@
   # contain all the jars needed to build Turbine, even if a jar
   # is missing on ibiblio
   #========================================================================
  
-#maven.repo.remote=http://www.ibiblio.org/maven/,http://jakarta.apache.org/turbine/repo
  
+maven.repo.remote=http://www.ibiblio.org/maven/,http://jakarta.apache.org/turbine/repo,http://dpml.net/
   
   maven.checkstyle.format = turbine
   #maven.home = ${user.home}/maven
  
  
  
  1.1                  
jakarta-turbine-2/src/java/org/apache/turbine/services/avaloncomponent/TurbineMerlinComponentService.java
  
  Index: TurbineMerlinComponentService.java
  ===================================================================
  package org.apache.turbine.services.avaloncomponent;
  
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001-2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Turbine" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Turbine", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  import java.io.File;
  import java.net.URL;
  
  import org.apache.avalon.activation.appliance.Block;
  import org.apache.avalon.composition.util.ExceptionHelper;
  import org.apache.avalon.framework.activity.Disposable;
  import org.apache.avalon.framework.activity.Initializable;
  import org.apache.avalon.merlin.kernel.impl.DefaultKernel;
  import org.apache.avalon.merlin.kernel.impl.DefaultKernelContext;
  import org.apache.avalon.repository.impl.DefaultFileRepository;
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
  import org.apache.turbine.Turbine;
  import org.apache.turbine.services.InitializationException;
  import org.apache.turbine.services.TurbineBaseService;
  
  /**
   * An implementation of AvalonComponentService based on the avalon Merlin 3.2 
container.
   * 
   * @author <a mailto="[EMAIL PROTECTED]">Peter Courcoux</a>
   * @author <a mailto="[EMAIL PROTECTED]">Eric Pugh</a>
   */
  public class TurbineMerlinComponentService
      extends TurbineBaseService
      implements MerlinComponentService, Initializable, Disposable
  {
      /** Logging */
      private static Log log = LogFactory.getLog(TurbineMerlinComponentService.class);
  
      /** Merlin kernel */
      private DefaultKernel m_kernel = null;
  
      // -------------------------------------------------------------
      // Service initialization
      // -------------------------------------------------------------
  
      /**
         * Load all configured components and initialize them. This is a zero 
parameter variant which
         * queries the Turbine Servlet for its config.
         * 
         * @throws InitializationException Something went wrong in the init stage
         */
      public void init() throws InitializationException
      {
          try
          {
              initialize();
  
              setInit(true);
          }
          catch (Exception e)
          {
              log.error("Exception caught initialising service: ", e);
              throw new InitializationException("init failed", e);
          }
      }
  
      /**
         * Shuts the Component Service down, calls dispose on the components that 
implement this
         * interface
         *  
         */
      public void shutdown()
      {
          dispose();
          setInit(false);
      }
  
      // -------------------------------------------------------------
      // Avalon lifecycle interfaces
      // -------------------------------------------------------------
  
      /**
         * Initializes the container
         * 
         * @throws Exception generic exception
         */
      public void initialize() throws Exception
      {
                org.apache.commons.configuration.Configuration conf 
                                           = getConfiguration();
                
          String homePath = Turbine.getApplicationRoot();
          File home = new File(homePath);
          // Eric. The next thing to do is to decide how to create the blocks array.
          // Steve suggested listing all the block URL's in WEB.xml as initialisation 
params.
          // I think it needs to come from some local config. while we are keeping 
everything
          // in the webapp context.
          
                String blockPath = Turbine.getRealPath(
                                                conf.getString(BLOCK_CONFIG_KEY, 
BLOCK_CONFIG_PATH));
                File kernal = new File(Turbine.getRealPath(
                                                                
conf.getString(KERNAL_CONFIG_KEY, KERNAL_CONFIG_PATH)));
                //File userDir = new File(Turbine.getRealPath("target/test-classes"));
                if(!kernal.exists()){
                    throw new Exception("Kernal file " + kernal + " doesn't exist.  
You must provide a " +
                                "valid kernal file.");
                }
                
          URL block = new File(blockPath).toURL();
          URL[] blocks = new URL[1];
          blocks[0] = block;
          // Create the kernel context
          try
          {
                  DefaultKernelContext context =
                      new DefaultKernelContext(
                          new DefaultFileRepository(new 
File(Turbine.getRealPath("merlin/dud"))),
              // system repo
          null, //new File( Turbine.getRealPath("merlin/repository")), // user repo 
directory
          null, //new File( Turbine.getRealPath("merlin/ext")), // ext directory
          home, // home
          kernal.toURL(), // kernel config
          blocks, // block urls
          null, // config override
          true, // server
          true, // info
          true // debug
      );
              m_kernel = new DefaultKernel(context);
              m_kernel.startup();
              log.info("kernel established");
  
              log.info("Application Root is " + homePath);
          }
          catch (Exception e)
          {
              final String message = "Turbine/Merlin problem.";
              final String error = ExceptionHelper.packException(message, e, true);
              log.info(error);
              System.out.println(error);
          }
  
      }
  
      /**
         * Disposes of the container and releases resources
         */
      public void dispose()
      {
          if (m_kernel != null)
          {
              m_kernel.shutdown();
              m_kernel = null;
          }
      }
  
      /**
         * Returns an instance of the named component
         * 
         * @param roleName Name of the role the component fills.
         * @return an instance of the named component
         * @throws Exception generic exception
         */
      public Object lookup(String path) throws Exception
      {
          Block root = m_kernel.getRootBlock();
          return root.locate(path);
      }
  
      /**
         * 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)
      {
          Block root = m_kernel.getRootBlock();
          root.release(component);
      }
  
  }
  
  
  
  1.76      +4 -0      jakarta-turbine-2/xdocs/changes.xml
  
  Index: changes.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-2/xdocs/changes.xml,v
  retrieving revision 1.75
  retrieving revision 1.76
  diff -u -r1.75 -r1.76
  --- changes.xml       31 Oct 2003 01:22:28 -0000      1.75
  +++ changes.xml       2 Nov 2003 21:51:28 -0000       1.76
  @@ -63,6 +63,10 @@
   <p>
     <ul>
        <li>
  +        Added first cut of the MerlinComponentService which uses the Avalon Merlin
  +        container.  Merlin has many many features to help with dealing with 
components.  Thanks to Peter for this!
  +     </li>
  +     <li>
           The cache, crypto, mimetype services have now been deprecated in favor
           of the Fulcrum versions as well.  Turbine security now uses the Fulcrum
           crypto component.
  
  
  
  1.1                  
jakarta-turbine-2/src/test/org/apache/turbine/services/avaloncomponent/MerlinComponentServiceTest.java
  
  Index: MerlinComponentServiceTest.java
  ===================================================================
  package org.apache.turbine.services.avaloncomponent;
  
  /*
   * ==================================================================== The Apache 
Software
   * License, Version 1.1
   * 
   * Copyright (c) 2001-2003 The Apache Software Foundation. All rights reserved.
   * 
   * Redistribution and use in source and binary forms, with or without modification, 
are permitted
   * provided that the following conditions are met: 1. Redistributions of source code 
must retain
   * the above copyright notice, this list of conditions and the following disclaimer. 
2.
   * Redistributions in binary form must reproduce the above copyright notice, this 
list of
   * conditions and the following disclaimer in the documentation and/or other 
materials provided
   * with the distribution. 3. The end-user documentation included with the 
redistribution, if any,
   * must include the following acknowledgment: "This product includes software 
developed by the
   * Apache Software Foundation (http://www.apache.org/)." Alternately, this 
acknowledgment may
   * appear in the software itself, if and wherever such third-party acknowledgments 
normally appear. 4.
   * The names "Apache" and "Apache Software Foundation" and "Apache Turbine" must not 
be used to
   * endorse or promote products derived from this software without prior written 
permission. For
   * written permission, please contact [EMAIL PROTECTED] 5. Products derived from 
this software may
   * not be called "Apache", "Apache Turbine", nor may "Apache" appear in their name, 
without prior
   * written permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, 
INCLUDING, BUT NOT
   * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
PARTICULAR PURPOSE ARE
   * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS 
BE LIABLE FOR
   * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
(INCLUDING, BUT
   * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
OR PROFITS; OR
   * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
CONTRACT,
   * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
OUT OF THE USE
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many individuals on 
behalf of the
   * Apache Software Foundation. For more information on the Apache Software 
Foundation, please see
   * <http://www.apache.org/> .
   */
  
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
  import org.apache.turbine.services.TurbineServices;
  import org.apache.turbine.test.BaseTestCase;
  import org.apache.turbine.util.TurbineConfig;
  
  /**
   * Simple test to make sure that the AvalonComponentService can be initialized.
   * 
   * @author <a href="mailto:[EMAIL PROTECTED]">Quinton McCombs</a>
   * @version $Id: MerlinComponentServiceTest.java,v 1.1 2003/11/02 21:51:28 epugh Exp 
$
   */
  public class MerlinComponentServiceTest extends BaseTestCase
  {
      private static final Log log = 
LogFactory.getLog(MerlinComponentServiceTest.class);
  
      public MerlinComponentServiceTest(String name) throws Exception
      {
          super(name);
      }
      private MerlinComponentService getService()
      {
          return (MerlinComponentService) TurbineServices.getInstance().getService(
              MerlinComponentService.SERVICE_NAME);
      }
  
      /**
       * Test that we successfully download and install the HelloComponent form the 
       * Merlin tutorial.  Currently pulling from 
http://jakarta.apache.org/turbine/repo/merlin
       * @throws Exception
       */
      public void testMerlinWithHelloComponent() throws Exception
      {
  
          TurbineConfig tc =
              new TurbineConfig(".", 
"/conf/test/MerlinComponentServiceTest.properties");
  
          try
          {
              tc.initialize();
  
              Object appliance = getService().lookup("/tutorial/hello"); // just to 
test
              assertNotNull(appliance);
              assertEquals("appliance:/tutorial/hello", appliance.toString());
              log.info("Looked up appliance: " + appliance.toString());
              getService().release(appliance);
  
   
          }
          catch (Exception e)
          {
              throw e;
          }
          finally
          {
              tc.dispose();
          }
      }
      
      /**
       * Test that a locally compiled component can be loaded and used.  Currently not
       * working because the org.apache.turbine.test.TestComponent is in this 
classloader,
       * not in a downloaded jar.  
       * @throws Exception
       */
        public void OFF_testMerlinWithTestComponent() throws Exception
                {
  
                        TurbineConfig tc =
                                new TurbineConfig(".", 
"/conf/test/MerlinComponentServiceTest.properties");
  
                        try
                        {
                                tc.initialize();
  
                                Object appliance = 
getService().lookup("/local/testcomponent"); // just to test
                                assertNotNull(appliance);
                                assertEquals("appliance:/local/testcomponent", 
appliance.toString());
                                log.info("Looked up appliance: " + 
appliance.toString());
                                getService().release(appliance);
  
   
                        }
                        catch (Exception e)
                        {
                                throw e;
                        }
                        finally
                        {
                                tc.dispose();
                        }
                }
  }
  
  
  
  1.1                  jakarta-turbine-2/conf/test/merlin/BLOCK-INF/block.xml
  
  Index: block.xml
  ===================================================================
  
  <container name="tutorial">
     <classloader>
       <classpath>
         <repository>
           <resource id="merlin:merlin-hello-tutorial" version="1.0"/>
         </repository>
       </classpath>
     </classloader>
     <component name="hello" class="tutorial.HelloComponent"/>
  
  </container>
  
  <!-- Not working, dont' know how to load wit local path...
  <container name="local">
   
     <component name="testcomponent" class="org.apache.turbine.test.TestComponent"/>
  
  </container>
  -->
  
  
  
  1.1                  jakarta-turbine-2/conf/test/merlin/kernel.xml
  
  Index: kernel.xml
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <kernel> 
  
     <logging priority="INFO" name="kernel">
        <category name="/logger" priority="WARN"/>
     </logging>
  
     <repository>
       <hosts>
         <host path="http://jakarta.apache.org/turbine/repo/"/>
         <host path="http://dpml.net/"/>
         <host path="http://www.ibiblio.org/maven/"/>
       </hosts>
     </repository>
  
  </kernel>
  
  
  
  

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

Reply via email to