hlship      2004/07/17 16:50:39

  Modified:    framework/src/test/hivemind/test/services
                        AutowireTarget.java ClassResolverHolder.java
               src/documentation/content/xdocs index.xml
               framework/src/test/hivemind/test/config
                        TestConfigurationPoint.java
               framework/src/java/org/apache/hivemind/impl
                        ImplStrings.properties ImplMessages.java
                        RegistryImpl.java
               framework/src/java/org/apache/hivemind/service/impl
                        BuilderClassResolverFacet.java
                        ServicePropertyObjectProvider.java
               .        status.xml
               framework/src/test/hivemind/test/services/impl
                        ClassResolverHolderImpl.java
               framework/src/java/org/apache/hivemind Registry.java
  Added:       framework/src/test/hivemind/test MultipleServiceImpl.java
                        UniqueServiceImpl.java NonExistentServiceImpl.java
                        TestServicesByInterface.java IUniqueService.java
                        INonExistentService.java servicesByInterface.sdl
                        IMultipleService.java
  Log:
  HIVEMIND-20:  Add a version of Registry.getService() that omits the service 
id (but requires that exactly one service point implements the service 
interface).
  
  Revision  Changes    Path
  1.1                  
jakarta-hivemind/framework/src/test/hivemind/test/MultipleServiceImpl.java
  
  Index: MultipleServiceImpl.java
  ===================================================================
  //  Copyright 2004 The Apache Software Foundation
  //
  // Licensed under the Apache License, Version 2.0 (the "License");
  // you may not use this file except in compliance with the License.
  // You may obtain a copy of the License at
  //
  //     http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing, software
  // distributed under the License is distributed on an "AS IS" BASIS,
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  // See the License for the specific language governing permissions and
  // limitations under the License.
  
  package hivemind.test;
  
  /**
   * Used when testing Registry.getService(java.lang.Class)
   *
   * @author Marcus Brito
   */
  public class MultipleServiceImpl implements IMultipleService
  {
  }
  
  
  
  1.1                  
jakarta-hivemind/framework/src/test/hivemind/test/UniqueServiceImpl.java
  
  Index: UniqueServiceImpl.java
  ===================================================================
  //  Copyright 2004 The Apache Software Foundation
  //
  // Licensed under the Apache License, Version 2.0 (the "License");
  // you may not use this file except in compliance with the License.
  // You may obtain a copy of the License at
  //
  //     http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing, software
  // distributed under the License is distributed on an "AS IS" BASIS,
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  // See the License for the specific language governing permissions and
  // limitations under the License.
  
  package hivemind.test;
  
  /**
   * Used when testing Registry.getService(java.lang.Class)
   *
   * @author Marcus Brito
   */
  public class UniqueServiceImpl implements IUniqueService
  {
  }
  
  
  
  1.1                  
jakarta-hivemind/framework/src/test/hivemind/test/NonExistentServiceImpl.java
  
  Index: NonExistentServiceImpl.java
  ===================================================================
  //  Copyright 2004 The Apache Software Foundation
  //
  // Licensed under the Apache License, Version 2.0 (the "License");
  // you may not use this file except in compliance with the License.
  // You may obtain a copy of the License at
  //
  //     http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing, software
  // distributed under the License is distributed on an "AS IS" BASIS,
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  // See the License for the specific language governing permissions and
  // limitations under the License.
  
  package hivemind.test;
  
  /**
   * Used when testing Registry.getService(java.lang.Class)
   *
   * @author Marcus Brito
   */
  public class NonExistentServiceImpl implements INonExistentService
  {
  }
  
  
  
  1.1                  
jakarta-hivemind/framework/src/test/hivemind/test/TestServicesByInterface.java
  
  Index: TestServicesByInterface.java
  ===================================================================
  //  Copyright 2004 The Apache Software Foundation
  //
  // Licensed under the Apache License, Version 2.0 (the "License");
  // you may not use this file except in compliance with the License.
  // You may obtain a copy of the License at
  //
  //     http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing, software
  // distributed under the License is distributed on an "AS IS" BASIS,
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  // See the License for the specific language governing permissions and
  // limitations under the License.
  
  package hivemind.test;
  
  import org.apache.hivemind.Registry;
  import org.apache.hivemind.ApplicationRuntimeException;
  
  /**
   * Tests the Registry.getService(java.lang.Class) functionality.
   *
   * @author Marcus Brito
   */
  public class TestServicesByInterface extends FrameworkTestCase
  {
      private Registry registry;
  
      protected void setUp() throws Exception
      {
          registry = buildFrameworkRegistry("servicesByInterface.sdl");
      }
  
      protected void tearDown() throws Exception
      {
          registry.shutdown();
      }
  
      public void testUniqueGetServiceByInterface()
      {
          IUniqueService service = (IUniqueService) 
registry.getService(IUniqueService.class);
  
          assertNotNull(service);
      }
  
      public void testNonExistentGetServiceByInterface()
      {
          try
          {
              registry.getService(INonExistentService.class);
              unreachable();
          }
          catch (ApplicationRuntimeException ex)
          {
              assertExceptionSubstring(
                  ex,
                  "There is no service point for interface 
hivemind.test.INonExistentService.");
          }
      }
  
      public void testMultipleExistentGetServiceByInterface()
      {
          try
          {
              registry.getService(IMultipleService.class);
              unreachable();
          }
          catch (ApplicationRuntimeException ex)
          {
              assertExceptionSubstring(
                  ex,
                  "There are multiple service points for interface 
hivemind.test.IMultipleService: "
                      + "{hivemind.tests.serviceByInterface.multipleServiceOne,"
                      + " 
hivemind.tests.serviceByInterface.multipleServiceTwo}.");
          }
      }
  }
  
  
  
  1.1                  
jakarta-hivemind/framework/src/test/hivemind/test/IUniqueService.java
  
  Index: IUniqueService.java
  ===================================================================
  //  Copyright 2004 The Apache Software Foundation
  //
  // Licensed under the Apache License, Version 2.0 (the "License");
  // you may not use this file except in compliance with the License.
  // You may obtain a copy of the License at
  //
  //     http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing, software
  // distributed under the License is distributed on an "AS IS" BASIS,
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  // See the License for the specific language governing permissions and
  // limitations under the License.
  
  package hivemind.test;
  
  /**
   * Used when testing Registry.getService(java.lang.Class)
   *
   * @author Marcus Brito
   */
  public interface IUniqueService
  {
  }
  
  
  
  1.1                  
jakarta-hivemind/framework/src/test/hivemind/test/INonExistentService.java
  
  Index: INonExistentService.java
  ===================================================================
  //  Copyright 2004 The Apache Software Foundation
  //
  // Licensed under the Apache License, Version 2.0 (the "License");
  // you may not use this file except in compliance with the License.
  // You may obtain a copy of the License at
  //
  //     http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing, software
  // distributed under the License is distributed on an "AS IS" BASIS,
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  // See the License for the specific language governing permissions and
  // limitations under the License.
  
  package hivemind.test;
  
  /**
   * Used when testing Registry.getService(java.lang.Class)
   *
   * @author Marcus Brito
   */
  public interface INonExistentService
  {
  }
  
  
  
  1.1                  
jakarta-hivemind/framework/src/test/hivemind/test/servicesByInterface.sdl
  
  Index: servicesByInterface.sdl
  ===================================================================
  module (id=hivemind.tests.serviceByInterface version="1.0.0")
  {
      service-point (id=uniqueService interface=hivemind.test.IUniqueService)
      {
          create-instance (class=hivemind.test.UniqueServiceImpl)
      }
  
      service-point (id=multipleServiceOne 
interface=hivemind.test.IMultipleService)
      {
          create-instance (class=hivemind.test.MultipleServiceImpl)
      }
  
      service-point (id=multipleServiceTwo 
interface=hivemind.test.IMultipleService)
      {
          create-instance (class=hivemind.test.MultipleServiceImpl)
      }
  }
  
  
  
  1.1                  
jakarta-hivemind/framework/src/test/hivemind/test/IMultipleService.java
  
  Index: IMultipleService.java
  ===================================================================
  //  Copyright 2004 The Apache Software Foundation
  //
  // Licensed under the Apache License, Version 2.0 (the "License");
  // you may not use this file except in compliance with the License.
  // You may obtain a copy of the License at
  //
  //     http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing, software
  // distributed under the License is distributed on an "AS IS" BASIS,
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  // See the License for the specific language governing permissions and
  // limitations under the License.
  
  package hivemind.test;
  
  /**
   * Used when testing Registry.getService(java.lang.Class)
   *
   * @author Marcus Brito
   */
  public interface IMultipleService
  {
  }
  
  
  
  1.2       +2 -2      
jakarta-hivemind/framework/src/test/hivemind/test/services/AutowireTarget.java
  
  Index: AutowireTarget.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-hivemind/framework/src/test/hivemind/test/services/AutowireTarget.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AutowireTarget.java       18 Jun 2004 21:39:00 -0000      1.1
  +++ AutowireTarget.java       17 Jul 2004 23:50:38 -0000      1.2
  @@ -1,10 +1,10 @@
  -// Copyright 2004 The Apache Software Foundation
  +//  Copyright 2004 The Apache Software Foundation
   //
   // Licensed under the Apache License, Version 2.0 (the "License");
   // you may not use this file except in compliance with the License.
   // You may obtain a copy of the License at
   //
  -//   http://www.apache.org/licenses/LICENSE-2.0
  +//     http://www.apache.org/licenses/LICENSE-2.0
   //
   // Unless required by applicable law or agreed to in writing, software
   // distributed under the License is distributed on an "AS IS" BASIS,
  
  
  
  1.2       +2 -2      
jakarta-hivemind/framework/src/test/hivemind/test/services/ClassResolverHolder.java
  
  Index: ClassResolverHolder.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-hivemind/framework/src/test/hivemind/test/services/ClassResolverHolder.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ClassResolverHolder.java  18 Jun 2004 21:39:00 -0000      1.1
  +++ ClassResolverHolder.java  17 Jul 2004 23:50:38 -0000      1.2
  @@ -1,10 +1,10 @@
  -// Copyright 2004 The Apache Software Foundation
  +//  Copyright 2004 The Apache Software Foundation
   //
   // Licensed under the Apache License, Version 2.0 (the "License");
   // you may not use this file except in compliance with the License.
   // You may obtain a copy of the License at
   //
  -//   http://www.apache.org/licenses/LICENSE-2.0
  +//     http://www.apache.org/licenses/LICENSE-2.0
   //
   // Unless required by applicable law or agreed to in writing, software
   // distributed under the License is distributed on an "AS IS" BASIS,
  
  
  
  1.13      +7 -0      
jakarta-hivemind/src/documentation/content/xdocs/index.xml
  
  Index: index.xml
  ===================================================================
  RCS file: 
/home/cvs/jakarta-hivemind/src/documentation/content/xdocs/index.xml,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- index.xml 25 Jun 2004 20:20:01 -0000      1.12
  +++ index.xml 17 Jul 2004 23:50:38 -0000      1.13
  @@ -142,6 +142,13 @@
                                <li>Operating in a completely thread-safe 
manner</li>
                                <li>Reporting any errors in a useful, verbose 
fashion</li>
                        </ul>
  +      
  +      <note>
  +        In the not-unusual case that only a single service within the entire 
Registry
  +        implements a particular service interface, 
  +        then you may omit the service id, i.e. 
<code>getService(MyService.class)</code>.
  +      </note>
  +      
                        <p>However, a much more common case is for services to 
collaborate: that's
                                much simpler, since HiveMind will connect the 
two services together for
                                you. You'll just need to provide an instance 
variable and either a
  
  
  
  1.16      +3 -3      
jakarta-hivemind/framework/src/test/hivemind/test/config/TestConfigurationPoint.java
  
  Index: TestConfigurationPoint.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-hivemind/framework/src/test/hivemind/test/config/TestConfigurationPoint.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- TestConfigurationPoint.java       16 Jul 2004 23:15:40 -0000      1.15
  +++ TestConfigurationPoint.java       17 Jul 2004 23:50:38 -0000      1.16
  @@ -337,7 +337,7 @@
   
           r.getConfiguration("hivemind.test.config.TooFew");
   
  -        assertLoggedMessage("Configuration extension point 
hivemind.test.config.TooFew contains no contributions but expects at least one 
contribution.");
  +        assertLoggedMessage("Configuration point hivemind.test.config.TooFew 
contains no contributions but expects at least one contribution.");
   
       }
   
  @@ -349,7 +349,7 @@
   
           r.getConfiguration("hivemind.test.config.TooMany");
   
  -        assertLoggedMessage("Configuration extension point 
hivemind.test.config.TooMany contains 2 contributions but expects an optional 
contribution.");
  +        assertLoggedMessage("Configuration point 
hivemind.test.config.TooMany contains 2 contributions but expects an optional 
contribution.");
       }
   
       public void testBadAttributes() throws Exception
  @@ -547,7 +547,7 @@
           buildFrameworkRegistry("UnknownContribution.xml");
   
           assertLoggedMessagePattern(
  -            "Module hivemind\\.test\\.config has contributed to unknown 
configuration extension point UnresolvedSchema\\. "
  +            "Module hivemind\\.test\\.config has contributed to unknown 
configuration point UnresolvedSchema\\. "
                   + "The contribution has been ignored\\.");
   
       }
  
  
  
  1.6       +11 -9     
jakarta-hivemind/framework/src/java/org/apache/hivemind/impl/ImplStrings.properties
  
  Index: ImplStrings.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/impl/ImplStrings.properties,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ImplStrings.properties    16 Jul 2004 23:15:40 -0000      1.5
  +++ ImplStrings.properties    17 Jul 2004 23:50:38 -0000      1.6
  @@ -22,25 +22,27 @@
   duplicate-translator-name=Translator ''{0}'' duplicates a previous 
definition at {1} and has been ignored.
   translator-instantiation-failure=Unable to instantiate translator class {0}: 
{1}
   registry-shutdown=The HiveMind Registry has been shutdown.
  -no-such-service-point=Service extension point {0} does not exist.
  +no-such-service-point=Service point {0} does not exist.
  +no-service-point-for-interface=There is no service point for interface {0}.
  +multiple-service-points-for-interface=There are multiple service points for 
interface {0}: {1}.
   registry-already-started=The HiveMind Registry has been started.
   unable-to-load-class=Could not load class {0} from {1}: {2}
  -null-interceptor=Service {0} generated a null interceptor (for service 
extension point {1}).
  -interceptor-does-not-implement-interface=The service interceptor ({0}) 
generated by service {1} for service extension point {2} does not implement the 
{3} interface defined by the extension point.
  +null-interceptor=Service {0} generated a null interceptor (for service point 
{1}).
  +interceptor-does-not-implement-interface=The service interceptor ({0}) 
generated by service {1} for service point {2} does not implement the {3} 
interface defined by the service point.
   unable-to-read-messages=Unable to read message properties from {0}.
   duplicate-schema=Schema {0} conflicts with existing schema at {1}.
   unable-to-parse=Unable to parse module deployment descriptor {0}: {1}
   unable-to-find-modules=Unable to locate HiveMind module deployment 
descriptors in {0}: {1}
   duplicate-module-id=Module {0} is duplicated!  Definition in {2} has been 
ignored in favor of existing definition from {1}.
  -unknown-configuration-extension-point=Module {0} has contributed to unknown 
configuration extension point {1}. The contribution has been ignored.
  -unknown-service-extension-point=Module {0} contributed to unknown service 
extension point {1}. The contribution has been ignored.
  -missing-service=No module has contributed a service constructor for service 
extension point {0}.
  -duplicate-factory=Module {0} has contributed a instance builder to service 
extension point {1}, which conflicts with an existing contribution by module 
{2}. The duplicate contribution has been ignored.  
  +unknown-configuration-extension-point=Module {0} has contributed to unknown 
configuration point {1}. The contribution has been ignored.
  +unknown-service-extension-point=Module {0} contributed to unknown service 
point {1}. The contribution has been ignored.
  +missing-service=No module has contributed a service constructor for service 
point {0}.
  +duplicate-factory=Module {0} has contributed a instance builder to service 
point {1}, which conflicts with an existing contribution by module {2}. The 
duplicate contribution has been ignored.  
   
   optional=an optional
   required=exactly one
   one-or-more=at least one
  -wrong-number-of-contributions=Configuration extension point {0} contains 
{1,choice,0#no contributions|1#one contribution|1<{1,number,integer} 
contributions} but expects {2} contribution.
  +wrong-number-of-contributions=Configuration point {0} contains 
{1,choice,0#no contributions|1#one contribution|1<{1,number,integer} 
contributions} but expects {2} contribution.
   
   no-such-configuration=Configuration point {0} does not exist.
   no-such-symbol=No value available for symbol ''{0}''.
  @@ -50,7 +52,7 @@
   element-errors=Element {0} (at {1}) contains errors:
   unknown-element=Element {0} is not allowed here.
   bad-interface=Unable to find interface {0} (for service {1}).
  -interface-required=Service extension points must provide an interface type: 
{0} is a class (for service {1}).
  +interface-required=Service points must provide an interface type: {0} is a 
class (for service {1}).
   service-wrong-interface=Service {0} does not implement the requested 
interface ({1}).  The declared service interface type is {2}.
   shutdown-coordinator-failure=Unable to shutdown {0}: {1}
   
  
  
  
  1.12      +36 -0     
jakarta-hivemind/framework/src/java/org/apache/hivemind/impl/ImplMessages.java
  
  Index: ImplMessages.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/impl/ImplMessages.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ImplMessages.java 16 Jul 2004 23:15:40 -0000      1.11
  +++ ImplMessages.java 17 Jul 2004 23:50:38 -0000      1.12
  @@ -15,6 +15,8 @@
   package org.apache.hivemind.impl;
   
   import java.net.URL;
  +import java.util.Collection;
  +import java.util.Iterator;
   
   import org.apache.hivemind.ClassResolver;
   import org.apache.hivemind.Element;
  @@ -293,6 +295,40 @@
       public static String registryAlreadyStarted()
       {
           return _formatter.getMessage("registry-already-started");
  +    }
  +
  +    public static String noServicePointForInterface(Class interfaceClass)
  +    {
  +        return _formatter.format("no-service-point-for-interface", 
interfaceClass.getName());
  +    }
  +
  +    public static String multipleServicePointsForInterface(
  +        Class interfaceClass,
  +        Collection matchingPoints)
  +    {
  +        StringBuffer buffer = new StringBuffer("{");
  +
  +        boolean following = false;
  +
  +        Iterator i = matchingPoints.iterator();
  +        while (i.hasNext())
  +        {
  +            if (following)
  +                buffer.append(", ");
  +
  +            ServicePoint p = (ServicePoint) i.next();
  +
  +            buffer.append(p.getExtensionPointId());
  +
  +            following = true;
  +        }
  +        
  +        buffer.append("}");
  +
  +        return _formatter.format(
  +            "multiple-service-points-for-interface",
  +            interfaceClass.getName(),
  +            buffer);
       }
   
       public static String incompleteTranslator(TranslatorContribution c)
  
  
  
  1.14      +48 -0     
jakarta-hivemind/framework/src/java/org/apache/hivemind/impl/RegistryImpl.java
  
  Index: RegistryImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/impl/RegistryImpl.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- RegistryImpl.java 16 Jul 2004 23:15:40 -0000      1.13
  +++ RegistryImpl.java 17 Jul 2004 23:50:38 -0000      1.14
  @@ -17,6 +17,7 @@
   import java.lang.reflect.Constructor;
   import java.util.HashMap;
   import java.util.Iterator;
  +import java.util.LinkedList;
   import java.util.List;
   import java.util.Locale;
   import java.util.Map;
  @@ -54,7 +55,19 @@
       private static final String SYMBOL_SOURCES = "hivemind.SymbolSources";
       private static final Log LOG = LogFactory.getLog(RegistryImpl.class);
   
  +    /**
  +     * Map of [EMAIL PROTECTED] ServicePoint} keyed on fully qualified 
service id.
  +     */
       private Map _servicePoints = new HashMap();
  +
  +    /**
  +     * Map of List (of [EMAIL PROTECTED] ServicePoint}, keyed on service 
interface.
  +     */
  +    private Map _servicePointsByInterface = new HashMap();
  +
  +    /**
  +     * Map of [EMAIL PROTECTED] ConfigurationPoint} keyed on fully qualified 
configuration id.
  +     */
       private Map _configurationPoints = new HashMap();
   
       private SymbolSource[] _variableSources;
  @@ -92,6 +105,23 @@
           checkStarted();
   
           _servicePoints.put(point.getExtensionPointId(), point);
  +
  +        addServicePointByInterface(point);
  +    }
  +
  +    private void addServicePointByInterface(ServicePoint point)
  +    {
  +        Class key = point.getServiceInterface();
  +
  +        List l = (List) _servicePointsByInterface.get(key);
  +
  +        if (l == null)
  +        {
  +            l = new LinkedList();
  +            _servicePointsByInterface.put(key, l);
  +        }
  +
  +        l.add(point);
       }
   
       public void addConfigurationPoint(ConfigurationPoint point)
  @@ -120,6 +150,23 @@
           return point.getService(serviceInterface);
       }
   
  +    public Object getService(Class serviceInterface)
  +    {
  +        List servicePoints = (List) 
_servicePointsByInterface.get(serviceInterface);
  +
  +        if (servicePoints == null)
  +            throw new ApplicationRuntimeException(
  +                ImplMessages.noServicePointForInterface(serviceInterface));
  +
  +        if (servicePoints.size() > 1)
  +            throw new ApplicationRuntimeException(
  +                
ImplMessages.multipleServicePointsForInterface(serviceInterface, 
servicePoints));
  +
  +        ServicePoint sp = (ServicePoint) servicePoints.get(0);
  +
  +        return sp.getService(serviceInterface);
  +    }
  +
       public ConfigurationPoint getConfigurationPoint(String configurationId)
       {
           checkShutdown();
  @@ -381,6 +428,7 @@
           _shutdownCoordinator.shutdown();
   
           _servicePoints = null;
  +        _servicePointsByInterface = null;
           _configurationPoints = null;
           _shutdownCoordinator = null;
           _variableSources = null;
  
  
  
  1.2       +2 -2      
jakarta-hivemind/framework/src/java/org/apache/hivemind/service/impl/BuilderClassResolverFacet.java
  
  Index: BuilderClassResolverFacet.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/service/impl/BuilderClassResolverFacet.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BuilderClassResolverFacet.java    18 Jun 2004 21:39:01 -0000      1.1
  +++ BuilderClassResolverFacet.java    17 Jul 2004 23:50:39 -0000      1.2
  @@ -1,10 +1,10 @@
  -// Copyright 2004 The Apache Software Foundation
  +//  Copyright 2004 The Apache Software Foundation
   //
   // Licensed under the Apache License, Version 2.0 (the "License");
   // you may not use this file except in compliance with the License.
   // You may obtain a copy of the License at
   //
  -//   http://www.apache.org/licenses/LICENSE-2.0
  +//     http://www.apache.org/licenses/LICENSE-2.0
   //
   // Unless required by applicable law or agreed to in writing, software
   // distributed under the License is distributed on an "AS IS" BASIS,
  
  
  
  1.2       +14 -0     
jakarta-hivemind/framework/src/java/org/apache/hivemind/service/impl/ServicePropertyObjectProvider.java
  
  Index: ServicePropertyObjectProvider.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/service/impl/ServicePropertyObjectProvider.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ServicePropertyObjectProvider.java        17 Jul 2004 21:32:16 -0000      
1.1
  +++ ServicePropertyObjectProvider.java        17 Jul 2004 23:50:39 -0000      
1.2
  @@ -1,3 +1,17 @@
  +//  Copyright 2004 The Apache Software Foundation
  +//
  +// Licensed under the Apache License, Version 2.0 (the "License");
  +// you may not use this file except in compliance with the License.
  +// You may obtain a copy of the License at
  +//
  +//     http://www.apache.org/licenses/LICENSE-2.0
  +//
  +// Unless required by applicable law or agreed to in writing, software
  +// distributed under the License is distributed on an "AS IS" BASIS,
  +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  +// See the License for the specific language governing permissions and
  +// limitations under the License.
  +
   package org.apache.hivemind.service.impl;
   
   import org.apache.hivemind.ApplicationRuntimeException;
  
  
  
  1.26      +4 -0      jakarta-hivemind/status.xml
  
  Index: status.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-hivemind/status.xml,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- status.xml        17 Jul 2004 21:32:16 -0000      1.25
  +++ status.xml        17 Jul 2004 23:50:39 -0000      1.26
  @@ -59,6 +59,10 @@
         <action type="update" dev="HLS">
           Created service-property object translator.
         </action>
  +      <action type="update" dev="HLS" fixes-bug="HIVEMIND-20" due-to="Marcus 
Brito">
  +       Add a version of <code>Registry.getService()</code> that omits the 
service id
  +       (but requires that exactly one service point implements the service 
interface).
  +      </action>
       </release>
     
       <release version="1.0-beta-1" date="Jun 26 2004">
  
  
  
  1.2       +2 -2      
jakarta-hivemind/framework/src/test/hivemind/test/services/impl/ClassResolverHolderImpl.java
  
  Index: ClassResolverHolderImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-hivemind/framework/src/test/hivemind/test/services/impl/ClassResolverHolderImpl.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ClassResolverHolderImpl.java      18 Jun 2004 21:39:01 -0000      1.1
  +++ ClassResolverHolderImpl.java      17 Jul 2004 23:50:39 -0000      1.2
  @@ -1,10 +1,10 @@
  -// Copyright 2004 The Apache Software Foundation
  +//  Copyright 2004 The Apache Software Foundation
   //
   // Licensed under the Apache License, Version 2.0 (the "License");
   // you may not use this file except in compliance with the License.
   // You may obtain a copy of the License at
   //
  -//   http://www.apache.org/licenses/LICENSE-2.0
  +//     http://www.apache.org/licenses/LICENSE-2.0
   //
   // Unless required by applicable law or agreed to in writing, software
   // distributed under the License is distributed on an "AS IS" BASIS,
  
  
  
  1.6       +13 -0     
jakarta-hivemind/framework/src/java/org/apache/hivemind/Registry.java
  
  Index: Registry.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/Registry.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Registry.java     25 Jun 2004 20:20:01 -0000      1.5
  +++ Registry.java     17 Jul 2004 23:50:39 -0000      1.6
  @@ -72,6 +72,19 @@
       public Object getService(String serviceId, Class serviceInterface);
   
       /**
  +     * Convenience method to obtain a service with a single implementation 
from the registry.
  +     * Exactly one service point must implement the service.
  +     *
  +     * @param serviceInterface the class to which the service will be cast.
  +     * @return the service implementing the given interface.
  +     * @throws ApplicationRuntimeException if there are no service extension 
points implementing
  +     * the given interface, or if there multiple service points implementing 
it.
  +     * @see #getService(String, Class)
  +     */
  +
  +    public Object getService(Class serviceInterface);
  +
  +    /**
        * Returns the locale for which the registry was created.
        */
   
  
  
  

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

Reply via email to