You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by do...@apache.org on 2002/06/22 06:27:33 UTC

cvs commit: jakarta-turbine-stratum/src/test/org/apache/stratum/messenger MessengerComponentTest.java

dobbs       2002/06/21 21:27:33

  Modified:    .        project.xml
  Added:       src/java/org/apache/stratum/messenger
                        MessengerComponent.java
               src/test/org/apache/stratum/messenger
                        MessengerComponentTest.java
  Log:
  adding component for use with Commons Messenger
  
  Revision  Changes    Path
  1.27      +18 -0     jakarta-turbine-stratum/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-stratum/project.xml,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- project.xml	17 Jun 2002 13:04:08 -0000	1.26
  +++ project.xml	22 Jun 2002 04:27:33 -0000	1.27
  @@ -74,6 +74,12 @@
         <email>mpoeschl@marmot.at</email>
         <organization>Tucana</organization>
       </developer>
  +    <developer>
  +      <name>Eric Dobbs</name>
  +      <id>dobbs</id>
  +      <email>eric@dobbse.net</email>
  +      <organization/>
  +    </developer>
     </developers>
   
     <dependencies>
  @@ -146,6 +152,18 @@
       <dependency>
         <id>ojb</id>
         <version>0.5.200</version>
  +    </dependency>
  +    <dependency>
  +      <id>commons-messenger</id>
  +      <version>1.0-dev</version>
  +    </dependency>
  +    <dependency>
  +      <id>jms</id>
  +      <version>1.0.2b</version>
  +    </dependency>
  +    <dependency>
  +      <id>mockobjects</id>
  +      <version>0.1</version>
       </dependency>
     </dependencies>
   
  
  
  
  1.1                  jakarta-turbine-stratum/src/java/org/apache/stratum/messenger/MessengerComponent.java
  
  Index: MessengerComponent.java
  ===================================================================
  package org.apache.stratum.messenger;
  
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001-2002 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 apache@apache.org.
   *
   * 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.configuration.Configuration;
  import org.apache.commons.lang.exception.NestableException;
  
  import org.apache.stratum.lifecycle.Configurable;
  import org.apache.stratum.lifecycle.Initializable;
  
  import org.apache.commons.messenger.MessengerManager;
  
  /**
   * This class is the Messenger component.  It is an adaptor that
   * allows the ComponentLoader to startup MessengerManager.  Client
   * code wishing to use Messenger should ask MessengerManager directly
   * for Messenger instances.
   *
   * @see org.apache.commons.messenger.MessengerManager
   * @see org.apache.commons.messenger.Messenger
   *
   * @author <a href="mailto:eric@dobbse.net">Eric Dobbs</a>
   * @version $Id: MessengerComponent.java,v 1.1 2002/06/22 04:27:33 dobbs Exp $
   */
  public class MessengerComponent
      implements Configurable, Initializable
  {
      /** The key for property 'messenger.xml.url' */
      private static final String MESSENGER_XML_URL = "messenger.xml.url";
      
      /** The location of the Messenger.xml file */ 
      private String messengerXmlUrl;
  
      /**
       * Configure MessengerManager.  MessengerManager requires a URL to
       * a Messenger.xml file.  The messenger.properties file should
       * define one property named 'messenger.xml.url' identifying the
       * location of Messenger.xml.
       * @param configuration Configuration object containing the
       * 'messenger.xml.url' property
       */
      public void configure(Configuration configuration) 
      {
          messengerXmlUrl = configuration.getString(MESSENGER_XML_URL);
      }
  
      /**
       * Initialize the MessengerManager.
       * @exception Exception is thrown if the file defined in
       * 'messenger.xml.url' can't be found.  JMSException will be
       * thrown if MessengerManager.configure is unhappy with the value
       * from 'messenger.xml.url'
       */
      public void initialize() throws Exception
      {
          if (messengerXmlUrl == null)
          {
              throw new Exception("Can't find property '"
                                  + MESSENGER_XML_URL
                                  + "' in the properties file");
          }
          MessengerManager.configure(messengerXmlUrl);
      }
  }
  
  
  
  1.1                  jakarta-turbine-stratum/src/test/org/apache/stratum/messenger/MessengerComponentTest.java
  
  Index: MessengerComponentTest.java
  ===================================================================
  package org.apache.stratum.messenger;
  
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001-2002 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 apache@apache.org.
   *
   * 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.IOException;
  import junit.framework.Test;
  import junit.framework.TestCase;
  import junit.framework.TestSuite;
  import com.mockobjects.ExpectationCounter;
  import com.mockobjects.ExpectationValue;
  import com.mockobjects.Verifiable;
  import com.mockobjects.util.Verifier;
  import org.apache.log4j.Category;
  import org.apache.commons.configuration.Configuration;
  import org.apache.commons.configuration.PropertiesConfiguration;
  import org.apache.stratum.component.ComponentLoader;
  
  /**
   * Test cases to exercise the MessengerComponent.
   * @see MessengerComponent
   * @author <a href="mailto:eric@dobbse.net">Eric Dobbs</a>
   * @version $Id: MessengerComponentTest.java,v 1.1 2002/06/22 04:27:33 dobbs Exp $
   */
  public class MessengerComponentTest extends TestCase
  {
      private static Category log  = Category.getInstance(MessengerComponentTest.class);
      private static MessengerComponent messengerComponent =
          new MessengerComponent();
      private static String CONFIG = "src/test-conf/Messenger.properties";
      private static Configuration config;
  
      /**
       * Constructor.
       * @param name String name of the method to be tested.
       */
      public MessengerComponentTest(String name)
      {
          super(name);
      }
  
      /**
       * Verify that MessengerComponent.configure() only asks for one
       * value from the given Configuration, and that the property
       * requested is "messenger.xml.url"
       */
      public void testConfigure()
      {
          MockConfiguration mockConfiguration = new MockConfiguration();
          mockConfiguration.setExpectedGetStringCalls(1);
          mockConfiguration.setExpectedGetStringValue("messenger.xml.url");
  
          try
          {
              messengerComponent.configure(mockConfiguration);
          }
          catch (Exception e)
          {
              String errorMessage = "Exception should not have been thrown: "
                  + e.getMessage();
              log.error(errorMessage,e);
              fail(errorMessage);
          }
  
          mockConfiguration.verify();
      }
  
      /**
       * Verify that a null value in the configuration will cause an
       * Exception to be thrown.  That's about all that makes sense to
       * test for MessengerComponent.initialize().  Other testing would
       * only repeat tests already covered in the Messenger test code.
       */
      public void testInitialize()
      {
          MockConfiguration mockConfiguration = new MockConfiguration();
          mockConfiguration.setupGetString(null);
          try
          {
              messengerComponent.configure(mockConfiguration);
              messengerComponent.initialize();
              fail("Exception should have been thrown");
          }
          catch (Exception e)
          {
              //this space intentionally left blank
          }
      }
  
  
      /**
       * Need to mock the Configuration.getString() method for testing
       * the configure method.  See
       * <a href="http://www.mockobjects.com">www.mockobjects.com</a>
       * for more information about mock objects.
       */
      static class MockConfiguration
          extends PropertiesConfiguration
          implements Verifiable
      {
          private ExpectationCounter getStringCalls =
              new ExpectationCounter("mockConfiguration.getString");
          private ExpectationValue getStringValue =
              new ExpectationValue("mockConfiguration.getString");
          private String getStringReturnValue = null;
          
          public void setExpectedGetStringCalls(int callCount)
          {
              getStringCalls.setExpected(callCount);
          }
          public void setExpectedGetStringValue(String key)
          {
              getStringValue.setExpected(key);
          }
          public void setupGetString(String getString)
          {
              getStringReturnValue = getString;
          }
          
          public void verify()
          {
              Verifier.verifyObject(this);
          }
          
          public String getString(String key)
          {
              getStringCalls.inc();
              getStringValue.setActual(key);
              return getStringReturnValue;
          }
      }
  }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: cvs commit: jakarta-turbine-stratum/src/test/org/apache/stratum/messenger MessengerComponentTest.java

Posted by Eric Dobbs <er...@dobbse.net>.
On Saturday, June 22, 2002, at 10:48  AM, Jason van Zyl wrote:

> On Sat, 2002-06-22 at 00:27, dobbs@apache.org wrote:
>> dobbs       2002/06/21 21:27:33
>>
>>   Modified:    .        project.xml
>>   Added:       src/java/org/apache/stratum/messenger
>>                         MessengerComponent.java
>>                src/test/org/apache/stratum/messenger
>>                         MessengerComponentTest.java
>>   Log:
>>   adding component for use with Commons Messenger
>
> Eric, you going to do more work on this? I want to move it over to
> plexus. I renamed a component so that 'messenger' wouldn't clash with
> the transaction engine I made.

Cool about the renaming.  I'm interested in moving this
code to plexus, but I suspect you'll beat me to it.  8^)
The main thing I care about is being able to use
Messenger within Turbine2.  I put it in Stratum just in
case something happens to delay or complicate the move
to plexus (for those listening in who don't know about
plexus, it's an Avalon container that Jason has been
working on intended for use with Turbine).

-Eric


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: cvs commit: jakarta-turbine-stratum/src/test/org/apache/stratum/messenger MessengerComponentTest.java

Posted by Jason van Zyl <ja...@zenplex.com>.
On Sat, 2002-06-22 at 00:27, dobbs@apache.org wrote:
> dobbs       2002/06/21 21:27:33
> 
>   Modified:    .        project.xml
>   Added:       src/java/org/apache/stratum/messenger
>                         MessengerComponent.java
>                src/test/org/apache/stratum/messenger
>                         MessengerComponentTest.java
>   Log:
>   adding component for use with Commons Messenger

Eric, you going to do more work on this? I want to move it over to
plexus. I renamed a component so that 'messenger' wouldn't clash with
the transaction engine I made.

-- 
jvz.

Jason van Zyl
jason@apache.org
http://tambora.zenplex.org

In short, man creates for himself a new religion of a rational
and technical order to justify his work and to be justified in it.
  
  -- Jacques Ellul, The Technological Society


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>