# Class BeanContextServicesSupport.BCSSProxyServiceProvider

java.lang.Object
java.beans.beancontext.BeanContextServicesSupport.BCSSProxyServiceProvider

All Implemented Interfaces:
  `BeanContextServiceProvider, BeanContextServiceRevokedListener, EventListener`

Enclosing class:
  `BeanContextServicesSupport`

protected class BeanContextServicesSupport.BCSSProxyServiceProvider extends Object implements BeanContextServiceProvider, BeanContextServiceRevokedListener
Subclasses may subclass this nested class to represent a proxy for each BeanContextServiceProvider.

Since:
  1.2

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Iterator<?>`
  `getCurrentServiceSelectors(BeanContextServices bcs, Class<?> serviceClass)`
  Invoked by `BeanContextServices`, this method gets the current service selectors for the specified service.
  `Object`
  `getService(BeanContextServices bcs, Object requestor, Class<?> serviceClass, Object serviceSelector)`
  Invoked by `BeanContextServices`, this method requests an instance of a service from this `BeanContextServiceProvider`.
  `void`
  `releaseService(BeanContextServices bcs, Object requestor, Object service)`
  Invoked by `BeanContextServices`, this method releases a nested `BeanContextChild`'s (or any arbitrary object associated with a `BeanContextChild`) reference to the specified service.
  `void`
  `serviceRevoked(BeanContextServiceRevokedEvent bcsre)`
  The service named has been revoked. getService requests for this service will no longer be satisfied.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Method Details

  - ### getService

    public Object getService(BeanContextServices bcs, Object requestor, Class<?> serviceClass, Object serviceSelector)
    Description copied from interface: `BeanContextServiceProvider`
    Invoked by `BeanContextServices`, this method requests an instance of a service from this `BeanContextServiceProvider`.
    Specified by:
      `getService` in interface `BeanContextServiceProvider`
    Parameters:
      `bcs` - The `BeanContextServices` associated with this particular request. This parameter enables the `BeanContextServiceProvider` to distinguish service requests from multiple sources.
      `requestor` - The object requesting the service
      `serviceClass` - The service requested
      `serviceSelector` - the service dependent parameter for a particular service, or `null` if not applicable.
    Returns:
      a reference to the requested service

  - ### releaseService

    public void releaseService(BeanContextServices bcs, Object requestor, Object service)
    Description copied from interface: `BeanContextServiceProvider`
    Invoked by `BeanContextServices`, this method releases a nested `BeanContextChild`'s (or any arbitrary object associated with a `BeanContextChild`) reference to the specified service.
    Specified by:
      `releaseService` in interface `BeanContextServiceProvider`
    Parameters:
      `bcs` - the `BeanContextServices` associated with this particular release request
      `requestor` - the object requesting the service to be released
      `service` - the service that is to be released

  - ### getCurrentServiceSelectors

    public Iterator<?> getCurrentServiceSelectors(BeanContextServices bcs, Class<?> serviceClass)
    Description copied from interface: `BeanContextServiceProvider`
    Invoked by `BeanContextServices`, this method gets the current service selectors for the specified service. A service selector is a service specific parameter, typical examples of which could include: a parameter to a constructor for the service implementation class, a value for a particular service's property, or a key into a map of existing implementations.
    Specified by:
      `getCurrentServiceSelectors` in interface `BeanContextServiceProvider`
    Parameters:
      `bcs` - the `BeanContextServices` for this request
      `serviceClass` - the specified service
    Returns:
      the current service selectors for the specified serviceClass

  - ### serviceRevoked

    public void serviceRevoked(BeanContextServiceRevokedEvent bcsre)
    Description copied from interface: `BeanContextServiceRevokedListener`
    The service named has been revoked. getService requests for this service will no longer be satisfied.
    Specified by:
      `serviceRevoked` in interface `BeanContextServiceRevokedListener`
    Parameters:
      `bcsre` - the `BeanContextServiceRevokedEvent` received by this listener.