hlship      2003/08/11 10:45:28

  Modified:    hivemind/src/java/org/apache/commons/hivemind/service/impl
                        AbstractLoggingInterceptor.java
               hivemind/src/test/hivemind/test/services TestServices.java
               hivemind/src/java/org/apache/commons/hivemind/impl
                        ExtensionPointImpl.java
                        InvokeFactoryServiceConstructor.java
               hivemind/src/test/hivemind/test/config
                        TestExtensionPoint.java Symbols.xml
               hivemind/src/test/hivemind/test/parse
                        TestDescriptorParser.java
               hivemind/src/META-INF hivemodule.xml
               hivemind/src/test/hivemind/test HiveMindTestCase.java
               hivemind/src/test/hivemind/test/rules
                        TestClassTranslator.java
                        TestEnumerationTranslator.java
                        TestExtensionPointTranslator.java
               hivemind/src/test/hivemind/test/config/impl test.properties
  Added:       hivemind/src/java/org/apache/commons/hivemind/service/impl
                        FactoryDefaultsSymbolSource.java
                        FactoryDefault.java
               hivemind/src/test/hivemind/test/services ArrayResult.xml
                        ArrayService.java
               hivemind/src/test/hivemind/test/services/impl
                        ArrayServiceImpl.java
  Log:
  Add a "FactoryDefaults" extension point for registering values for symbols.
  Improve how the LoggingInterceptor logs Object arrays (as parameters or result 
values).
  
  Revision  Changes    Path
  1.2       +43 -3     
jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/service/impl/AbstractLoggingInterceptor.java
  
  Index: AbstractLoggingInterceptor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/service/impl/AbstractLoggingInterceptor.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractLoggingInterceptor.java   9 Jul 2003 11:27:24 -0000       1.1
  +++ AbstractLoggingInterceptor.java   11 Aug 2003 17:45:27 -0000      1.2
  @@ -95,7 +95,7 @@
               if (i > 0)
                   buffer.append(", ");
   
  -            buffer.append(arg);
  +            convert(buffer, arg);
           }
   
           buffer.append(")");
  @@ -103,6 +103,44 @@
           _log.debug(buffer.toString());
       }
   
  +    private void convert(StringBuffer buffer, Object input)
  +    {
  +        if (input == null)
  +        {
  +            buffer.append("<null>");
  +            return;
  +        }
  +
  +        // Primitive types, and non-object arrays
  +        // use toString().  Less than ideal for int[], etc., but
  +        // that's a lot of work for a rare case.
  +
  +        if (!(input instanceof Object[]))
  +        {
  +            buffer.append(input.toString());
  +            return;
  +        }
  +
  +        buffer.append("(");
  +        buffer.append(ClassFabUtils.getJavaClassName(input.getClass()));
  +        buffer.append("){");
  +
  +        Object[] array = (Object[]) input;
  +        int count = array.length;
  +
  +        for (int i = 0; i < count; i++)
  +        {
  +            if (i > 0)
  +                buffer.append(", ");
  +
  +            // We use convert() again, because it could be a multi-dimensional array
  +            // (god help us) where each element must be converted.
  +            convert(buffer, array[i]);
  +        }
  +
  +        buffer.append("}");
  +    }
  +
       protected void _logExit(String methodName, Object result)
       {
           StringBuffer buffer = new StringBuffer(BUFFER_SIZE);
  @@ -110,7 +148,9 @@
           buffer.append("END ");
           buffer.append(methodName);
           buffer.append("() [");
  -        buffer.append(result);
  +
  +        convert(buffer, result);
  +
           buffer.append("]");
   
           _log.debug(buffer.toString());
  
  
  
  1.1                  
jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/service/impl/FactoryDefaultsSymbolSource.java
  
  Index: FactoryDefaultsSymbolSource.java
  ===================================================================
  /*
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999-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 acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Commons", and "Apache Software
   *    Foundation" 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"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * 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/>.
   *
   */
  
  package org.apache.commons.hivemind.service.impl;
  
  import java.util.HashMap;
  import java.util.List;
  import java.util.Map;
  
  import org.apache.commons.hivemind.Initializable;
  import org.apache.commons.hivemind.ServiceExtensionPoint;
  import org.apache.commons.hivemind.SymbolSource;
  import org.apache.commons.hivemind.impl.BaseLocatable;
  
  /**
   * Implementation of [EMAIL PROTECTED] org.apache.commons.hivemind.SymbolSource} 
driven
   * off of the <code>hivemind.FactoryDefaults</code> extension point.
   *
   * @author Howard Lewis Ship
   * @version $Id: FactoryDefaultsSymbolSource.java,v 1.1 2003/08/11 17:45:27 hlship 
Exp $
   */
  public class FactoryDefaultsSymbolSource
      extends BaseLocatable
      implements SymbolSource, Initializable
  {
      private List _factoryDefaults;
      private Map _symbols = new HashMap();
  
      public String valueForSymbol(String name)
      {
          return (String) _symbols.get(name);
      }
  
      public void initializeService(ServiceExtensionPoint point, Object service)
      {
          int count = _factoryDefaults.size();
          for (int i = 0; i < count; i++)
          {
              FactoryDefault fd = (FactoryDefault) _factoryDefaults.get(i);
  
              _symbols.put(fd.getSymbol(), fd.getValue());
          }
      }
  
      public List getFactoryDefaults()
      {
          return _factoryDefaults;
      }
  
      public void setFactoryDefaults(List list)
      {
          _factoryDefaults = list;
      }
  
  }
  
  
  
  1.1                  
jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/service/impl/FactoryDefault.java
  
  Index: FactoryDefault.java
  ===================================================================
  /*
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999-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 acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Commons", and "Apache Software
   *    Foundation" 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"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * 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/>.
   *
   */
  
  package org.apache.commons.hivemind.service.impl;
  
  /**
   * Default symbol value defined by the 
   * <code>hivemind.FactoryDefaults</code> extension point.
   *
   * @author Howard Lewis Ship
   * @version $Id: FactoryDefault.java,v 1.1 2003/08/11 17:45:27 hlship Exp $
   */
  public class FactoryDefault
  {
        private String _symbol;
        private String _value;
        
      public String getSymbol()
      {
          return _symbol;
      }
  
      public String getValue()
      {
          return _value;
      }
  
      public void setSymbol(String string)
      {
          _symbol = string;
      }
  
      public void setValue(String string)
      {
          _value = string;
      }
  
  }
  
  
  
  1.19      +25 -6     
jakarta-commons-sandbox/hivemind/src/test/hivemind/test/services/TestServices.java
  
  Index: TestServices.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/hivemind/src/test/hivemind/test/services/TestServices.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- TestServices.java 8 Aug 2003 13:51:10 -0000       1.18
  +++ TestServices.java 11 Aug 2003 17:45:27 -0000      1.19
  @@ -371,11 +371,12 @@
           assertEquals("ToStringImpl of toString()", ts.toString());
   
           List events = getInterceptedLogEvents();
  -        checkLoggingEvent("hivemind.test.services.ToString", "BEGIN 
toString\\(\\)", events);
  +        checkLoggingEvent("hivemind.test.services.ToString", "BEGIN toString()", 
events, true);
           checkLoggingEvent(
               "hivemind.test.services.ToString",
  -            "END toString\\(\\) \\[ToStringImpl of toString\\(\\)\\]",
  -            events);
  +            "END toString() [ToStringImpl of toString()]",
  +            events,
  +            true);
   
       }
   
  @@ -396,7 +397,7 @@
   
           s.logMessage("This is a test.");
   
  -        checkLoggingEvent("hivemind.test.services.BuilderAccess", "This is a 
test\\.");
  +        checkLoggingEvent("hivemind.test.services.BuilderAccess", "This is a 
test.", true);
       }
   
       public void testBuilderAccessFailure() throws Exception
  @@ -414,6 +415,24 @@
   
           checkLoggingEvent(
               BuilderFactory.class.getName(),
  -            "Unable to set property EVIL of [EMAIL PROTECTED]: Unknown property 
'EVIL'");
  +            "Unable to set property EVIL of [EMAIL PROTECTED]: Unknown property 
'EVIL'",
  +            false);
       }
  +
  +    public void testArrayResult() throws Exception
  +    {
  +        Registry r = buildRegistry("ArrayResult.xml");
  +
  +        ArrayService s =
  +            (ArrayService) r.getService("hivemind.test.services.ArrayResult", 
ArrayService.class);
  +
  +        interceptLogging("hivemind.test.services.ArrayResult");
  +
  +        String[] result = s.returnArrayType();
  +
  +        checkList(new String[] { "alpha", "beta" }, result);
  +
  +        checkLoggingEvent(null, "END returnArrayType() [(java.lang.String[]){alpha, 
beta}]", true);
  +    }
  +
   }
  
  
  
  1.1                  
jakarta-commons-sandbox/hivemind/src/test/hivemind/test/services/ArrayResult.xml
  
  Index: ArrayResult.xml
  ===================================================================
  <?xml version="1.0" encoding="UTF-8"?>
  <!-- $Id: ArrayResult.xml,v 1.1 2003/08/11 17:45:27 hlship Exp $ -->
  <module
        id="hivemind.test.services" 
        version="1.0.0">
        <service id="ArrayResult" interface="hivemind.test.services.ArrayService">
          <create-instance class="hivemind.test.services.impl.ArrayServiceImpl"/>
          <interceptor service-id="hivemind.LoggingInterceptor"/>
        </service>
  </module>
  
  
  1.1                  
jakarta-commons-sandbox/hivemind/src/test/hivemind/test/services/ArrayService.java
  
  Index: ArrayService.java
  ===================================================================
  /*
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999-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 acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Commons", and "Apache Software
   *    Foundation" 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"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * 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/>.
   *
   */
  
  package hivemind.test.services;
  
  /**
   * Used to test code that ensures a return type that is an array works properly.
   *
   * @author Howard Lewis Ship
   * @version $Id: ArrayService.java,v 1.1 2003/08/11 17:45:27 hlship Exp $
   */
  public interface ArrayService
  {
      public String[] returnArrayType();
  }
  
  
  
  1.5       +18 -10    
jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/impl/ExtensionPointImpl.java
  
  Index: ExtensionPointImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/impl/ExtensionPointImpl.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ExtensionPointImpl.java   8 Aug 2003 13:51:08 -0000       1.4
  +++ ExtensionPointImpl.java   11 Aug 2003 17:45:27 -0000      1.5
  @@ -98,12 +98,28 @@
           builder.append("schema", _schema);
       }
   
  +    /**
  +     * Returns the number of contributions; it is expected
  +     * that each top-level [EMAIL PROTECTED] org.apache.commons.hivemind.Element}
  +     * in each [EMAIL PROTECTED] Extension} will convert to one element instance;
  +     * the value returned is the total number of top-level elements
  +     * in all contributed Extensions. 
  +     */
       public int getContributionCount()
       {
           if (_extensions == null)
               return 0;
   
  -        return _extensions.size();
  +        int total = 0;
  +
  +        int count = _extensions.size();
  +        for (int i = 0; i < count; i++)
  +        {
  +            Extension e = (Extension) _extensions.get(i);
  +            total += e.getElements().size();
  +        }
  +
  +        return total;
       }
   
       public void addExtension(Extension extension)
  @@ -112,14 +128,6 @@
               _extensions = new ArrayList();
   
           _extensions.add(extension);
  -    }
  -
  -    public void addExtensions(List extensions)
  -    {
  -        if (_extensions == null)
  -            _extensions = new ArrayList(extensions);
  -        else
  -            _extensions.addAll(extensions);
       }
   
       public Occurances getExpectedCount()
  
  
  
  1.3       +6 -4      
jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/impl/InvokeFactoryServiceConstructor.java
  
  Index: InvokeFactoryServiceConstructor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/impl/InvokeFactoryServiceConstructor.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- InvokeFactoryServiceConstructor.java      8 Aug 2003 13:51:08 -0000       1.2
  +++ InvokeFactoryServiceConstructor.java      11 Aug 2003 17:45:27 -0000      1.3
  @@ -89,10 +89,12 @@
       {
           Registry registry = _contributingModule.getRegistry();
   
  -        String factoryModuleId = RegistryImpl.split(_factoryServiceId);
  +        String qualifiedFactoryId = HiveMind.qualify(_contributingModule, 
_factoryServiceId);
  +
  +        String factoryModuleId = RegistryImpl.split(qualifiedFactoryId);
           Module factoryModule = registry.getModule(factoryModuleId);
           ServiceExtensionPoint factoryPoint =
  -            factoryModule.getServiceExtensionPoint(_factoryServiceId);
  +            factoryModule.getServiceExtensionPoint(qualifiedFactoryId);
   
           ServiceImplementationFactory factory =
               (ServiceImplementationFactory) factoryPoint.getService(
  @@ -100,7 +102,7 @@
   
           if (factory == null)
               throw new ApplicationRuntimeException(
  -                HiveMind.format("InvokeFactoryDescriptor.factory-is-null", 
_factoryServiceId),
  +                HiveMind.format("InvokeFactoryDescriptor.factory-is-null", 
qualifiedFactoryId),
                   getLocation(),
                   null);
   
  
  
  
  1.7       +38 -25    
jakarta-commons-sandbox/hivemind/src/test/hivemind/test/config/TestExtensionPoint.java
  
  Index: TestExtensionPoint.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/hivemind/src/test/hivemind/test/config/TestExtensionPoint.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- TestExtensionPoint.java   5 Aug 2003 15:41:44 -0000       1.6
  +++ TestExtensionPoint.java   11 Aug 2003 17:45:28 -0000      1.7
  @@ -201,7 +201,8 @@
   
           checkLoggingEvent(
               BooleanTranslator.class.getName(),
  -            "'maybe' \\(in element flag at .*\\) is not a boolean value");
  +            "'maybe' \\(in element flag at .*\\) is not a boolean value",
  +            false);
   
           assertEquals(3, l.size());
   
  @@ -226,12 +227,21 @@
   
           List events = getInterceptedLogEvents();
   
  -        checkLoggingEvent(null, "Value 2 \\(at .*\\) is less than minimum value 
5\\.", events);
  -        checkLoggingEvent(null, "Value 12 \\(at .*\\) is greater than maximum value 
10\\.", events);
  +        checkLoggingEvent(
  +            null,
  +            "Value 2 \\(at .*\\) is less than minimum value 5\\.",
  +            events,
  +            false);
  +        checkLoggingEvent(
  +            null,
  +            "Value 12 \\(at .*\\) is greater than maximum value 10\\.",
  +            events,
  +            false);
           checkLoggingEvent(
               null,
               "'fred' \\(in element int at .*\\) is not an integer value\\.",
  -            events);
  +            events,
  +            false);
   
           assertEquals(5, l.size());
   
  @@ -245,14 +255,14 @@
           h = (IntHolder) l.get(2);
   
           assertEquals(10, h.getValue());
  -        
  -        h = (IntHolder)l.get(3);
  -        
  +
  +        h = (IntHolder) l.get(3);
  +
  +        assertEquals(6, h.getValue());
  +
  +        h = (IntHolder) l.get(3);
  +
           assertEquals(6, h.getValue());
  -        
  -             h = (IntHolder)l.get(3);
  -        
  -             assertEquals(6, h.getValue());        
   
       }
   
  @@ -297,7 +307,10 @@
           assertEquals("work", d.getKey());
           assertEquals("${work}", d.getValue());
   
  -        checkLoggingEvent(RegistryImpl.class.getName(), "No value available for 
symbol 'work'");
  +        checkLoggingEvent(
  +            RegistryImpl.class.getName(),
  +            "No value available for symbol 'work'",
  +            true);
       }
   
       public void testNoSchema() throws Exception
  @@ -334,24 +347,24 @@
           assertEquals("message", d.getKey());
           assertEquals("Some Damn Thing", d.getValue());
       }
  -    
  +
       public void testTranslatorClass() throws Exception
  -       {
  -               Registry r = buildRegistry("TranslatorClass.xml");
  +    {
  +        Registry r = buildRegistry("TranslatorClass.xml");
   
  -               List l = 
r.getExtensionPointElements("hivemind.test.config.TranslatorClass");
  +        List l = 
r.getExtensionPointElements("hivemind.test.config.TranslatorClass");
   
  -               assertEquals(2, l.size());
  +        assertEquals(2, l.size());
   
  -               Datum d = (Datum) l.get(0);
  +        Datum d = (Datum) l.get(0);
   
  -               assertEquals("key1", d.getKey());
  -               assertEquals("VALUE1", d.getValue());
  -               assertNotNull(d.getLocation());
  +        assertEquals("key1", d.getKey());
  +        assertEquals("VALUE1", d.getValue());
  +        assertNotNull(d.getLocation());
   
  -               d = (Datum) l.get(1);
  +        d = (Datum) l.get(1);
   
  -               assertEquals("key2", d.getKey());
  -               assertEquals("VALUE2", d.getValue());
  -       }
  +        assertEquals("key2", d.getKey());
  +        assertEquals("VALUE2", d.getValue());
  +    }
   }
  
  
  
  1.5       +6 -1      
jakarta-commons-sandbox/hivemind/src/test/hivemind/test/config/Symbols.xml
  
  Index: Symbols.xml
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/hivemind/src/test/hivemind/test/config/Symbols.xml,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Symbols.xml       31 Jul 2003 21:06:25 -0000      1.4
  +++ Symbols.xml       11 Aug 2003 17:45:28 -0000      1.5
  @@ -24,4 +24,9 @@
        <extension point-id="hivemind.SymbolSource">
                <source class="hivemind.test.config.impl.MockSymbolSource"/>
        </extension>
  +     
  +     <extension point-id="hivemind.FactoryDefaults">
  +             <default symbol="dog" value="dino"/>
  +             <default symbol="friend" value="george"/>       
  +     </extension>
   </module>
  
  
  
  1.1                  
jakarta-commons-sandbox/hivemind/src/test/hivemind/test/services/impl/ArrayServiceImpl.java
  
  Index: ArrayServiceImpl.java
  ===================================================================
  /*
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999-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 acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Commons", and "Apache Software
   *    Foundation" 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"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * 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/>.
   *
   */
  
  package hivemind.test.services.impl;
  
  import hivemind.test.services.ArrayService;
  
  /**
   * Used to test code that ensures a return type that is an array works properly.
   *
   * @author Howard Lewis Ship
   * @version $Id: ArrayServiceImpl.java,v 1.1 2003/08/11 17:45:28 hlship Exp $
   */
  public class ArrayServiceImpl implements ArrayService
  {
  
      public String[] returnArrayType()
      {
          return new String[] { "alpha", "beta" };
      }
  }
  
  
  
  1.20      +3 -2      
jakarta-commons-sandbox/hivemind/src/test/hivemind/test/parse/TestDescriptorParser.java
  
  Index: TestDescriptorParser.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/hivemind/src/test/hivemind/test/parse/TestDescriptorParser.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- TestDescriptorParser.java 8 Aug 2003 13:51:10 -0000       1.19
  +++ TestDescriptorParser.java 11 Aug 2003 17:45:28 -0000      1.20
  @@ -359,7 +359,8 @@
   
           checkLoggingEvent(
               DescriptorParser.class.getName(),
  -            "Unknown attribute 'bad-attribute' in element 
module/extension-point/schema \\(at .*\\)");
  +            "Unknown attribute 'bad-attribute' in element 
module/extension-point/schema \\(at .*\\)",
  +            false);
   
       }
   
  
  
  
  1.14      +57 -1     jakarta-commons-sandbox/hivemind/src/META-INF/hivemodule.xml
  
  Index: hivemodule.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/src/META-INF/hivemodule.xml,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- hivemodule.xml    7 Aug 2003 15:51:43 -0000       1.13
  +++ hivemodule.xml    11 Aug 2003 17:45:28 -0000      1.14
  @@ -40,6 +40,62 @@
                
        </extension-point>
        
  +     <extension point-id="SymbolSource">
  +             
  +             <source order="1000000" service-id="FactoryDefaultsSymbolSource"/>
  +             
  +     </extension>
  +     
  +     <extension-point id="FactoryDefaults">
  +     
  +             <description>
  +             Extension point for setting "factory defaults" for symbol values.
  +             </description>  
  +             
  +             <schema>
  +             
  +                     <element name="default">
  +                     
  +                             <description>
  +                             Provides a default symbol value.
  +                             </description>  
  +                             
  +                             <attribute name="symbol" required="true">
  +                                     <description>
  +                                     The id of the symbol to define a default value 
for.     
  +                                     </description>  
  +                             </attribute>
  +                             
  +                             <attribute name="value" required="true">
  +                                     <description>
  +                                     The value for the symbol.       
  +                                     </description>  
  +                             </attribute>
  +                             
  +                             <rules>
  +                                     <create-object 
class="org.apache.commons.hivemind.service.impl.FactoryDefault"/>
  +                                     <read-attribute attribute="symbol" 
property="symbol"/>
  +                                     <read-attribute attribute="value" 
property="value"/>
  +                                     <invoke-parent method="addElement"/>    
  +                             </rules>
  +                     </element>      
  +             
  +             </schema>
  +             
  +     </extension-point>
  +     
  +     <service id="FactoryDefaultsSymbolSource" 
interface="org.apache.commons.hivemind.SymbolSource">
  +             <description>
  +             SymbolSource implementation driven by the FactoryDefaults extension 
point.      
  +             </description>
  +             
  +             <invoke-factory service-id="BuilderFactory">
  +                     <construct 
class="org.apache.commons.hivemind.service.impl.FactoryDefaultsSymbolSource">
  +                       <set-extension-point point-id="FactoryDefaults" 
property="factoryDefaults"/>
  +                     </construct>
  +             </invoke-factory>
  +     </service>
  +     
        
        <service id="ClassFactory" 
interface="org.apache.commons.hivemind.service.ClassFactory">
                <description>Wrapper around Javassist used to dynamically create 
classes such as service interceptors.</description>
  
  
  
  1.16      +17 -6     
jakarta-commons-sandbox/hivemind/src/test/hivemind/test/HiveMindTestCase.java
  
  Index: HiveMindTestCase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/hivemind/src/test/hivemind/test/HiveMindTestCase.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- HiveMindTestCase.java     8 Aug 2003 13:51:09 -0000       1.15
  +++ HiveMindTestCase.java     11 Aug 2003 17:45:28 -0000      1.16
  @@ -277,25 +277,28 @@
       /**
        * Checks to see if any logging event matches a given regexp pattern.
        */
  -    protected void checkLoggingEvent(String name, String pattern) throws Exception
  +    protected void checkLoggingEvent(String name, String pattern, boolean exact) 
throws Exception
       {
  -        checkLoggingEvent(name, pattern, getInterceptedLogEvents());
  +        checkLoggingEvent(name, pattern, getInterceptedLogEvents(), exact);
       }
   
       /**
        * Checks to see if any LoggingEvent in the list of events matches the name and 
message pattern.
        * @param name logger name to match or null to match all
  -     * @param pattern regexp pattern to search for
  +     * @param pattern regexp pattern or string to search for
        * @param event list of LoggingEvent to search.
  +     * @param exact if true, then the actual message must exactly match the pattern 
(which is NOT a regexp pattern). If true,
  +     * the message must match against pattern as a regexp pattern.
        */
  -    protected void checkLoggingEvent(String name, String pattern, List events) 
throws Exception
  +    protected void checkLoggingEvent(String name, String pattern, List events, 
boolean exact)
  +        throws Exception
       {
           if (_compiler == null)
               _compiler = new Perl5Compiler();
   
           Pattern compiled = null;
   
  -        if (_matcher == null)
  +        if (_matcher == null & !exact)
               _matcher = new Perl5Matcher();
   
           int count = events.size();
  @@ -308,6 +311,14 @@
                   continue;
   
               String eventMessage = e.getMessage().toString();
  +
  +            if (exact)
  +            {
  +                if (eventMessage.indexOf(pattern) >= 0)
  +                    return;
  +
  +                continue;
  +            }
   
               if (compiled == null)
                   compiled = _compiler.compile(pattern);
  
  
  
  1.5       +5 -3      
jakarta-commons-sandbox/hivemind/src/test/hivemind/test/rules/TestClassTranslator.java
  
  Index: TestClassTranslator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/hivemind/src/test/hivemind/test/rules/TestClassTranslator.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TestClassTranslator.java  8 Aug 2003 13:51:10 -0000       1.4
  +++ TestClassTranslator.java  11 Aug 2003 17:45:28 -0000      1.5
  @@ -107,7 +107,8 @@
   
           checkLoggingEvent(
               null,
  -            "'bad.class.Name' is not a valid class name \\(at .*\\): Could not load 
class bad.class.Name");
  +            "'bad.class.Name' is not a valid class name \\(at .*\\): Could not load 
class bad.class.Name",
  +            false);
       }
   
       public void testLocatable() throws Exception
  @@ -137,6 +138,7 @@
   
           checkLoggingEvent(
               RuleUtils.class.getName(),
  -            "Unable to set property value of [EMAIL PROTECTED] to {} \\(at 
datum/value\\): ");
  +            "Unable to set property value of [EMAIL PROTECTED] to {} \\(at 
datum/value\\): ",
  +            false);
       }
   }
  
  
  
  1.3       +5 -3      
jakarta-commons-sandbox/hivemind/src/test/hivemind/test/rules/TestEnumerationTranslator.java
  
  Index: TestEnumerationTranslator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/hivemind/src/test/hivemind/test/rules/TestEnumerationTranslator.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestEnumerationTranslator.java    8 Aug 2003 13:51:10 -0000       1.2
  +++ TestEnumerationTranslator.java    11 Aug 2003 17:45:28 -0000      1.3
  @@ -144,7 +144,8 @@
   
           checkLoggingEvent(
               EnumerationTranslator.class.getName(),
  -            "'fred' \\(at .*\\) is not a recognized enumerated value\\.");
  +            "'fred' \\(at .*\\) is not a recognized enumerated value\\.",
  +            false);
   
       }
   
  @@ -161,7 +162,8 @@
   
           checkLoggingEvent(
               EnumerationTranslator.class.getName(),
  -            "Unable to obtain value for static field 
java\\.lang\\.Boolean\\.HONEST_TO_GOD_TRUE:");
  +            "Unable to obtain value for static field 
java.lang.Boolean.HONEST_TO_GOD_TRUE:",
  +            true);
       }
   
   }
  
  
  
  1.2       +3 -2      
jakarta-commons-sandbox/hivemind/src/test/hivemind/test/rules/TestExtensionPointTranslator.java
  
  Index: TestExtensionPointTranslator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/hivemind/src/test/hivemind/test/rules/TestExtensionPointTranslator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TestExtensionPointTranslator.java 5 Aug 2003 00:50:36 -0000       1.1
  +++ TestExtensionPointTranslator.java 11 Aug 2003 17:45:28 -0000      1.2
  @@ -111,7 +111,8 @@
           checkLoggingEvent(
               ExtensionPointTranslator.class.getName(),
               "Error accessing extension point hivemind\\.test\\.rules\\.missing 
\\(at .*\\): "
  -                + "Extension point hivemind\\.test\\.rules\\.missing does not 
exist\\.");
  +                + "Extension point hivemind\\.test\\.rules\\.missing does not 
exist\\.",
  +            false);
   
           assertNull(h.getDatums());
       }
  
  
  
  1.2       +1 -2      
jakarta-commons-sandbox/hivemind/src/test/hivemind/test/config/impl/test.properties
  
  Index: test.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/hivemind/src/test/hivemind/test/config/impl/test.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- test.properties   29 Jul 2003 22:20:49 -0000      1.1
  +++ test.properties   11 Aug 2003 17:45:28 -0000      1.2
  @@ -3,4 +3,3 @@
   wife=wilma
   husband=fred
   friend=barney
  -dog=dino
  
  
  

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

Reply via email to