Module java.desktop
Package java.beans.beancontext

# Interface BeanContextChild

All Known Subinterfaces:
  `BeanContext`, `BeanContextServices`

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

public interface BeanContextChild

JavaBeans wishing to be nested within, and obtain a reference to their execution environment, or context, as defined by the BeanContext sub-interface shall implement this interface.

Conformant BeanContexts shall as a side effect of adding a BeanContextChild object shall pass a reference to itself via the setBeanContext() method of this interface.

Note that a BeanContextChild may refuse a change in state by throwing PropertyVetoedException in response.

In order for persistence mechanisms to function properly on BeanContextChild instances across a broad variety of scenarios, implementing classes of this interface are required to define as transient, any or all fields, or instance variables, that may contain, or represent, references to the nesting BeanContext instance or other resources obtained from the BeanContext via any unspecified mechanisms.

Since:
  1.2
See Also:
  - `BeanContext`
  - `PropertyChangeEvent`
  - `PropertyChangeListener`
  - `PropertyVetoException`
  - `VetoableChangeListener`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addPropertyChangeListener(String name, PropertyChangeListener pcl)`
  Adds a `PropertyChangeListener` to this `BeanContextChild` in order to receive a `PropertyChangeEvent` whenever the specified property has changed.
  `void`
  `addVetoableChangeListener(String name, VetoableChangeListener vcl)`
  Adds a `VetoableChangeListener` to this `BeanContextChild` to receive events whenever the specified property changes.
  `BeanContext`
  `getBeanContext()`
  Gets the `BeanContext` associated with this `BeanContextChild`.
  `void`
  `removePropertyChangeListener(String name, PropertyChangeListener pcl)`
  Removes a `PropertyChangeListener` from this `BeanContextChild` so that it no longer receives `PropertyChangeEvents` when the specified property is changed.
  `void`
  `removeVetoableChangeListener(String name, VetoableChangeListener vcl)`
  Removes a `VetoableChangeListener` from this `BeanContextChild` so that it no longer receives events when the specified property changes.
  `void`
  `setBeanContext(BeanContext bc)`
  Objects that implement this interface, shall fire a java.beans.PropertyChangeEvent, with parameters: propertyName "beanContext", oldValue (the previous nesting `BeanContext` instance, or `null`), newValue (the current nesting `BeanContext` instance, or `null`).

- ## Method Details

  - ### setBeanContext

    void setBeanContext(BeanContext bc) throws PropertyVetoException

    Objects that implement this interface, shall fire a java.beans.PropertyChangeEvent, with parameters: propertyName "beanContext", oldValue (the previous nesting `BeanContext` instance, or `null`), newValue (the current nesting `BeanContext` instance, or `null`).

    A change in the value of the nesting BeanContext property of this BeanContextChild may be vetoed by throwing the appropriate exception.

    Parameters:
      `bc` - The `BeanContext` with which to associate this `BeanContextChild`.
    Throws:
      `PropertyVetoException` - if the addition of the specified `BeanContext` is refused.

  - ### getBeanContext

    BeanContext getBeanContext()
    Gets the `BeanContext` associated with this `BeanContextChild`.
    Returns:
      the `BeanContext` associated with this `BeanContextChild`.

  - ### addPropertyChangeListener

    void addPropertyChangeListener(String name, PropertyChangeListener pcl)
    Adds a `PropertyChangeListener` to this `BeanContextChild` in order to receive a `PropertyChangeEvent` whenever the specified property has changed.
    Parameters:
      `name` - the name of the property to listen on
      `pcl` - the `PropertyChangeListener` to add

  - ### removePropertyChangeListener

    void removePropertyChangeListener(String name, PropertyChangeListener pcl)
    Removes a `PropertyChangeListener` from this `BeanContextChild` so that it no longer receives `PropertyChangeEvents` when the specified property is changed.
    Parameters:
      `name` - the name of the property that was listened on
      `pcl` - the `PropertyChangeListener` to remove

  - ### addVetoableChangeListener

    void addVetoableChangeListener(String name, VetoableChangeListener vcl)
    Adds a `VetoableChangeListener` to this `BeanContextChild` to receive events whenever the specified property changes.
    Parameters:
      `name` - the name of the property to listen on
      `vcl` - the `VetoableChangeListener` to add

  - ### removeVetoableChangeListener

    void removeVetoableChangeListener(String name, VetoableChangeListener vcl)
    Removes a `VetoableChangeListener` from this `BeanContextChild` so that it no longer receives events when the specified property changes.
    Parameters:
      `name` - the name of the property that was listened on.
      `vcl` - the `VetoableChangeListener` to remove.