Module java.desktop
Package java.beans.beancontext

# Interface BeanContextServices

All Superinterfaces:
  `BeanContext`, `BeanContextChild`, `BeanContextServiceRevokedListener`, `BeanContextServicesListener`, `Collection`, `DesignMode`, `EventListener`, `Iterable`, `Visibility`

All Known Implementing Classes:
  `BeanContextServicesSupport`

public interface BeanContextServices extends BeanContext, BeanContextServicesListener

The BeanContextServices interface provides a mechanism for a BeanContext to expose generic "services" to the BeanContextChild objects within.

## Field Summary

### Fields declared in interface java.beans.beancontext.BeanContext

`globalHierarchyLock`

### Fields declared in interface java.beans.DesignMode

`PROPERTYNAME`

## Method Summary

Modifier and Type
Method
Description
`void`
`addBeanContextServicesListener(BeanContextServicesListener bcsl)`
Adds a `BeanContextServicesListener` to this BeanContext
`boolean`
`addService(Class<?> serviceClass, BeanContextServiceProvider serviceProvider)`
Adds a service to this BeanContext.
`Iterator<?>`
`getCurrentServiceClasses()`
Gets the currently available services for this context.
`Iterator<?>`
`getCurrentServiceSelectors(Class<?> serviceClass)`
Gets the list of service dependent service parameters (Service Selectors) for the specified service, by calling getCurrentServiceSelectors() on the underlying BeanContextServiceProvider.
`Object`
`getService(BeanContextChild child, Object requestor, Class<?> serviceClass, Object serviceSelector, BeanContextServiceRevokedListener bcsrl)`
A `BeanContextChild`, or any arbitrary object associated with a `BeanContextChild`, may obtain a reference to a currently registered service from its nesting `BeanContextServices` via invocation of this method.
`boolean`
`hasService(Class<?> serviceClass)`
Reports whether or not a given service is currently available from this context.
`void`
`releaseService(BeanContextChild child, Object requestor, Object service)`
Releases a `BeanContextChild`'s (or any arbitrary object associated with a BeanContextChild) reference to the specified service by calling releaseService() on the underlying `BeanContextServiceProvider`.
`void`
`removeBeanContextServicesListener(BeanContextServicesListener bcsl)`
Removes a `BeanContextServicesListener` from this `BeanContext`
`void`
`revokeService(Class<?> serviceClass, BeanContextServiceProvider serviceProvider, boolean revokeCurrentServicesNow)`
BeanContextServiceProviders wishing to remove a currently registered service from this context may do so via invocation of this method.

### Methods declared in interface java.beans.beancontext.BeanContext

`addBeanContextMembershipListener, getResource, getResourceAsStream, instantiateChild, removeBeanContextMembershipListener`

### Methods declared in interface java.beans.beancontext.BeanContextChild

`addPropertyChangeListener, addVetoableChangeListener, getBeanContext, removePropertyChangeListener, removeVetoableChangeListener, setBeanContext`

### Methods declared in interface java.beans.beancontext.BeanContextServiceRevokedListener

`serviceRevoked`

### Methods declared in interface java.beans.beancontext.BeanContextServicesListener

`serviceAvailable`

### Methods declared in interface java.util.Collection

`add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, parallelStream, remove, removeAll, removeIf, retainAll, size, spliterator, stream, toArray, toArray, toArray`

### Methods declared in interface java.beans.DesignMode

`isDesignTime, setDesignTime`

### Methods declared in interface java.lang.Iterable

`forEach`

### Methods declared in interface java.beans.Visibility

`avoidingGui, dontUseGui, needsGui, okToUseGui`

## Method Details

### addService

boolean addService(Class<?> serviceClass, BeanContextServiceProvider serviceProvider)
Adds a service to this BeanContext. `BeanContextServiceProvider`s call this method to register a particular service with this context. If the service has not previously been added, the `BeanContextServices` associates the service with the `BeanContextServiceProvider` and fires a `BeanContextServiceAvailableEvent` to all currently registered `BeanContextServicesListeners`. The method then returns `true`, indicating that the addition of the service was successful. If the given service has already been added, this method simply returns `false`.

Parameters:
  `serviceClass` - the service to add
  `serviceProvider` - the `BeanContextServiceProvider` associated with the service
Returns:
  true if the service was successful added, false otherwise

### revokeService

void revokeService(Class<?> serviceClass, BeanContextServiceProvider serviceProvider, boolean revokeCurrentServicesNow)
BeanContextServiceProviders wishing to remove a currently registered service from this context may do so via invocation of this method. Upon revocation of the service, the `BeanContextServices` fires a `BeanContextServiceRevokedEvent` to its list of currently registered `BeanContextServiceRevokedListeners` and `BeanContextServicesListeners`.

Parameters:
  `serviceClass` - the service to revoke from this BeanContextServices
  `serviceProvider` - the BeanContextServiceProvider associated with this particular service that is being revoked
  `revokeCurrentServicesNow` - a value of `true` indicates an exceptional circumstance where the `BeanContextServiceProvider` or `BeanContextServices` wishes to immediately terminate service to all currently outstanding references to the specified service.

### hasService

boolean hasService(Class<?> serviceClass)
Reports whether or not a given service is currently available from this context.

Parameters:
  `serviceClass` - the service in question
Returns:
  true if the service is available

### getService

Object getService(BeanContextChild child, Object requestor, Class<?> serviceClass, Object serviceSelector, BeanContextServiceRevokedListener bcsrl) throws TooManyListenersException
A `BeanContextChild`, or any arbitrary object associated with a `BeanContextChild`, may obtain a reference to a currently registered service from its nesting `BeanContextServices` via invocation of this method. When invoked, this method gets the service by calling the getService() method on the underlying `BeanContextServiceProvider`.

Parameters:
  `child` - the `BeanContextChild` associated with this request
  `requestor` - the object requesting the service
  `serviceClass` - class of the requested service
  `serviceSelector` - the service dependent parameter
  `bcsrl` - the `BeanContextServiceRevokedListener` to notify if the service should later become revoked
Returns:
  a reference to this context's named Service as requested or `null`
Throws:
  `TooManyListenersException` - if there are too many listeners

### releaseService

void releaseService(BeanContextChild child, Object requestor, Object service)
Releases a `BeanContextChild`'s (or any arbitrary object associated with a BeanContextChild) reference to the specified service by calling releaseService() on the underlying `BeanContextServiceProvider`.

Parameters:
  `child` - the `BeanContextChild`
  `requestor` - the requestor
  `service` - the service

### getCurrentServiceClasses

Iterator<?> getCurrentServiceClasses()
Gets the currently available services for this context.

Returns:
  an `Iterator` consisting of the currently available services

### getCurrentServiceSelectors

Iterator<?> getCurrentServiceSelectors(Class<?> serviceClass)
Gets the list of service dependent service parameters (Service Selectors) for the specified service, by calling getCurrentServiceSelectors() on the underlying BeanContextServiceProvider.

Parameters:
  `serviceClass` - the specified service
Returns:
  the currently available service selectors for the named serviceClass

### addBeanContextServicesListener

void addBeanContextServicesListener(BeanContextServicesListener bcsl)
Adds a `BeanContextServicesListener` to this BeanContext

Parameters:
  `bcsl` - the `BeanContextServicesListener` to add

### removeBeanContextServicesListener

void removeBeanContextServicesListener(BeanContextServicesListener bcsl)
Removes a `BeanContextServicesListener` from this `BeanContext`

Parameters:
  `bcsl` - the `BeanContextServicesListener` to remove from this context