org.glassfish.hk2.utilities
Class ServiceLocatorUtilities

java.lang.Object
  extended by org.glassfish.hk2.utilities.ServiceLocatorUtilities

public abstract class ServiceLocatorUtilities
extends Object

This is a set of useful utilities for working with ServiceLocator.

Author:
jwells

Constructor Summary
ServiceLocatorUtilities()
           
 
Method Summary
static
<T> ActiveDescriptor<T>
addOneConstant(ServiceLocator locator, Object constant)
          This method adds one existing object to the given service locator.
static
<T> ActiveDescriptor<T>
addOneConstant(ServiceLocator locator, Object constant, String name, Type... contracts)
          This method adds one existing object to the given service locator.
static
<T> ActiveDescriptor<T>
addOneDescriptor(ServiceLocator locator, Descriptor descriptor)
          It is very often the case that one wishes to add a single descriptor to a service locator.
static ServiceLocator bind(Binder... binders)
          This method will create or find a ServiceLocator with the name "default" and bind all of the binders given together in a single config transaction.
static void bind(ServiceLocator locator, Binder... binders)
          This method will bind all of the binders given together in a single config transaction.
static ServiceLocator bind(String name, Binder... binders)
          This method will create or find a ServiceLocator with the given name and bind all of the binders given together in a single config transaction.
static void enablePerThreadScope(ServiceLocator locator)
          This method will add the ability to use the PerThread scope to the given locator.
static void removeOneDescriptor(ServiceLocator locator, Descriptor descriptor)
          This method will attempt to remove descriptors matching the passed in descriptor from the given locator.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ServiceLocatorUtilities

public ServiceLocatorUtilities()
Method Detail

enablePerThreadScope

public static void enablePerThreadScope(ServiceLocator locator)
This method will add the ability to use the PerThread scope to the given locator. If the locator already has a Context implementation that handles the PerThread scope this method does nothing.

Parameters:
locator - The non-null locator to enable the PerThread scope on
Throws:
MultiException - if there were errors when committing the service

bind

public static void bind(ServiceLocator locator,
                        Binder... binders)
This method will bind all of the binders given together in a single config transaction.

Parameters:
locator - The non-null locator to use for the configuration action
binders - The non-null list of binders to be added to the locator
Throws:
MultiException - if any error was encountered while binding services

bind

public static ServiceLocator bind(String name,
                                  Binder... binders)
This method will create or find a ServiceLocator with the given name and bind all of the binders given together in a single config transaction.

Parameters:
name - The non-null name of the locator to use for the configuration action
binders - The non-null list of binders to be added to the locator
Returns:
The service locator that was either found or created
Throws:
MultiException - if any error was encountered while binding services

bind

public static ServiceLocator bind(Binder... binders)
This method will create or find a ServiceLocator with the name "default" and bind all of the binders given together in a single config transaction.

Parameters:
binders - The non-null list of binders to be added to the locator
Returns:
The service locator that was either found or created
Throws:
MultiException - if any error was encountered while binding services

addOneConstant

public static <T> ActiveDescriptor<T> addOneConstant(ServiceLocator locator,
                                                     Object constant)
This method adds one existing object to the given service locator. The caller of this will not get a chance to customize the descriptor that goes into the locator, and hence must rely completely on the analysis of the system to determine the set of contracts and metadata associated with the descriptor. The same algorithm is used in this method as in the BuilderHelper.createConstantDescriptor(Object) method.

Parameters:
locator - The non-null locator to add this descriptor to
constant - The non-null constant to add to the service locator
Returns:
The descriptor that was added to the service locator

addOneConstant

public static <T> ActiveDescriptor<T> addOneConstant(ServiceLocator locator,
                                                     Object constant,
                                                     String name,
                                                     Type... contracts)
This method adds one existing object to the given service locator. The caller of this will not get a chance to customize the descriptor that goes into the locator, and hence must rely completely on the analysis of the system to determine the set of contracts and metadata associated with the descriptor. The same algorithm is used in this method as in the BuilderHelper.createConstantDescriptor(Object) method.

Parameters:
locator - The non-null locator to add this descriptor to
constant - The non-null constant to add to the service locator
name - The name this descriptor should take (may be null)
contracts - The full set of contracts this descriptor should take
Returns:
The descriptor that was added to the service locator

addOneDescriptor

public static <T> ActiveDescriptor<T> addOneDescriptor(ServiceLocator locator,
                                                       Descriptor descriptor)
It is very often the case that one wishes to add a single descriptor to a service locator. This method adds that one descriptor. If the descriptor is an ActiveDescriptor and is reified, it will be added as an ActiveDescriptor. Otherwise it will be bound as a Descriptor.

Parameters:
locator - The non-null locator to add this descriptor to
descriptor - The non-null descriptor to add to this locator
Throws:
MultiException - On a commit failure

removeOneDescriptor

public static void removeOneDescriptor(ServiceLocator locator,
                                       Descriptor descriptor)
This method will attempt to remove descriptors matching the passed in descriptor from the given locator. If the descriptor has its locatorId and serviceId values set then only a descriptor matching those exact locatorId and serviceId will be removed. Otherwise any descriptor that returns true from the DescriptorImpl.equals(Object) method will be removed from the locator. Note that if more than one descriptor matches they will all be removed. Hence more than one descriptor may be removed by this method.

Parameters:
locator - The non-null locator to remove the descriptor from
descriptor - The non-null descriptor to remove from the locator


Copyright © 2012 Oracle Corporation. All Rights Reserved.