Module java.desktop
Package java.beans.beancontext

# Interface BeanContext

All Superinterfaces:
  `BeanContextChild`, `Collection`, `DesignMode`, `Iterable`, `Visibility`

All Known Subinterfaces:
  `BeanContextServices`

All Known Implementing Classes:
  `BeanContextServicesSupport`, `BeanContextSupport`

public interface BeanContext extends BeanContextChild, Collection, DesignMode, Visibility

The BeanContext acts a logical hierarchical container for JavaBeans.

Since:
  1.2
See Also:
  - `Beans`
  - `BeanContextChild`
  - `BeanContextMembershipListener`
  - `PropertyChangeEvent`
  - `DesignMode`
  - `Visibility`
  - `Collection`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final Object`
`globalHierarchyLock`
This global lock is used by both `BeanContext` and `BeanContextServices` implementors to serialize changes in a `BeanContext` hierarchy and any service requests etc.

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

`PROPERTYNAME`

## Method Summary

Modifier and Type
Method
Description
`void`
`addBeanContextMembershipListener(BeanContextMembershipListener bcml)`
Adds the specified `BeanContextMembershipListener` to receive `BeanContextMembershipEvents` from this `BeanContext` whenever it adds or removes a child `Component`(s).
`URL`
`getResource(String name, BeanContextChild bcc)`
Analogous to `java.lang.ClassLoader.getResource()`, this method allows a `BeanContext` implementation to interpose behavior between the child `Component` and underlying `ClassLoader`.
`InputStream`
`getResourceAsStream(String name, BeanContextChild bcc)`
Analogous to `java.lang.ClassLoader.getResourceAsStream()`, this method allows a `BeanContext` implementation to interpose behavior between the child `Component` and underlying `ClassLoader`.
`Object`
`instantiateChild(String beanName)`
Instantiate the javaBean named as a child of this `BeanContext`.
`void`
`removeBeanContextMembershipListener(BeanContextMembershipListener bcml)`
Removes the specified `BeanContextMembershipListener` so that it no longer receives `BeanContextMembershipEvent`s when the child `Component`(s) are added or removed.

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

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

### 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`

## Field Details

### globalHierarchyLock

static final Object globalHierarchyLock
This global lock is used by both `BeanContext` and `BeanContextServices` implementors to serialize changes in a `BeanContext` hierarchy and any service requests etc.

## Method Details

### instantiateChild

Object instantiateChild(String beanName) throws IOException, ClassNotFoundException
Instantiate the javaBean named as a child of this `BeanContext`. The implementation of the JavaBean is derived from the value of the beanName parameter, and is defined by the `java.beans.Beans.instantiate()` method.

Parameters:
  `beanName` - The name of the JavaBean to instantiate as a child of this `BeanContext`
Returns:
  a javaBean named as a child of this `BeanContext`
Throws:
  `IOException` - if an IO problem occurs
  `ClassNotFoundException` - if the class identified by the beanName parameter is not found

### getResourceAsStream

InputStream getResourceAsStream(String name, BeanContextChild bcc) throws IllegalArgumentException
Analogous to `java.lang.ClassLoader.getResourceAsStream()`, this method allows a `BeanContext` implementation to interpose behavior between the child `Component` and underlying `ClassLoader`.

Parameters:
  `name` - the resource name
  `bcc` - the specified child
Returns:
  an `InputStream` for reading the resource, or `null` if the resource could not be found.
Throws:
  `IllegalArgumentException` - if the resource is not valid

### getResource

URL getResource(String name, BeanContextChild bcc) throws IllegalArgumentException
Analogous to `java.lang.ClassLoader.getResource()`, this method allows a `BeanContext` implementation to interpose behavior between the child `Component` and underlying `ClassLoader`.

Parameters:
  `name` - the resource name
  `bcc` - the specified child
Returns:
  a `URL` for the named resource for the specified child
Throws:
  `IllegalArgumentException` - if the resource is not valid

### addBeanContextMembershipListener

void addBeanContextMembershipListener(BeanContextMembershipListener bcml)
Adds the specified `BeanContextMembershipListener` to receive `BeanContextMembershipEvents` from this `BeanContext` whenever it adds or removes a child `Component`(s).

Parameters:
  `bcml` - the BeanContextMembershipListener to be added

### removeBeanContextMembershipListener

void removeBeanContextMembershipListener(BeanContextMembershipListener bcml)
Removes the specified `BeanContextMembershipListener` so that it no longer receives `BeanContextMembershipEvent`s when the child `Component`(s) are added or removed.

Parameters:
  `bcml` - the `BeanContextMembershipListener` to be removed