java.beans.beancontext

Class BeanContextSupport

Implemented Interfaces:
BeanContext, BeanContextChild, BeanContextServiceRevokedListener, BeanContextServicesListener, Collection<E>, DesignMode, EventListener, Iterable<T>, PropertyChangeListener, Serializable, VetoableChangeListener, Visibility
Known Direct Subclasses:
BeanContextServicesSupport

public class BeanContextSupport
extends BeanContextChildSupport
implements BeanContext, Serializable, PropertyChangeListener, VetoableChangeListener

This helper class provides a utility implementation of the java.beans.beancontext.BeanContext interface.

Since this class directly implements the BeanContext interface, the class can, and is intended to be used either by subclassing this implementation, or via ad-hoc delegation of an instance of this class from another.

Since:
1.2
See Also:
Serialized Form

Nested Class Summary

protected class
BeanContextSupport.BCSChild
protected static class
BeanContextSupport.BCSIterator
protected final subclass that encapsulates an iterator but implements a noop remove() method.

Field Summary

protected ArrayList<E>
bcmListeners
all accesses to the protected ArrayList bcmListeners field shall be synchronized on that object.
protected HashMap<K,V>
children
all accesses to the protected HashMap children field shall be synchronized on that object.
protected boolean
designTime
A boolean indicating whether or not this object is currently in design time mode.
protected Locale
locale
The current locale of this BeanContext.
protected boolean
okToUseGui
A boolean indicating if this instance may now render a GUI.

Fields inherited from class java.beans.beancontext.BeanContextChildSupport

beanContext, beanContextChildPeer, pcSupport, rejectedSetBCOnce, vcSupport

Fields inherited from interface java.beans.beancontext.BeanContext

globalHierarchyLock

Fields inherited from interface java.beans.DesignMode

PROPERTYNAME

Constructor Summary

BeanContextSupport()
Create an instance that is not a delegate of another object
BeanContextSupport(BeanContext peer)
Create an instance using with a default locale
BeanContextSupport(BeanContext peer, Locale lcle)
Create an instance using the specified locale
BeanContextSupport(BeanContext peer, Locale lcle, boolean dtime)
Create an instance using the specified Locale and design mode.
BeanContextSupport(BeanContext peer, Locale lcle, boolean dTime, boolean visible)
Construct a BeanContextSupport instance

Method Summary

boolean
add(Object targetChild)
Adds/nests a child within this BeanContext.
boolean
addAll(Collection<E> c)
add Collection to set of Children (Unsupported) implementations must synchronized on the hierarchy lock and "children" protected field
void
addBeanContextMembershipListener(BeanContextMembershipListener bcml)
Adds a BeanContextMembershipListener
boolean
avoidingGui()
Used to determine if the BeanContext child is avoiding using its GUI.
protected Iterator<E>
bcsChildren()
Returns an iterator of all children of this BeanContext.
protected void
bcsPreDeserializationHook(ObjectInputStream ois)
called by readObject after defaultReadObject() but prior to deserialization of any children.
protected void
bcsPreSerializationHook(ObjectOutputStream oos)
called by writeObject after defaultWriteObject() but prior to serialization of currently serializable children.
protected void
childDeserializedHook(Object child, BeanContextSupport.BCSChild bcsc)
Called by readObject with the newly deserialized child and BCSChild.
protected void
childJustAddedHook(Object child, BeanContextSupport.BCSChild bcsc)
subclasses may override this method to simply extend add() semantics after the child has been added and before the event notification has occurred.
protected void
childJustRemovedHook(Object child, BeanContextSupport.BCSChild bcsc)
subclasses may override this method to simply extend remove() semantics after the child has been removed and before the event notification has occurred.
protected static boolean
classEquals(Class<T> first, Class<T> second)
Tests to see if two class objects, or their names are equal.
void
clear()
clear the children (Unsupported) implementations must synchronized on the hierarchy lock and "children" protected field
boolean
contains(Object o)
Determines whether or not the specified object is currently a child of this BeanContext.
boolean
containsAll(Collection<E> c)
Tests to see if all objects in the specified Collection are children of this BeanContext.
boolean
containsKey(Object o)
Determines whether or not the specified object is currently a child of this BeanContext.
protected Object[]
copyChildren()
Gets a copy of the this BeanContext's children.
protected BeanContextSupport.BCSChild
createBCSChild(Object targetChild, Object peer)
Subclasses can override this method to insert their own subclass of Child without having to override add() or the other Collection methods that add children to the set.
protected void
deserialize(ObjectInputStream ois, Collection<E> coll)
used by readObject to deserialize a collection.
void
dontUseGui()
notify this instance that it may no longer render a GUI.
protected void
fireChildrenAdded(BeanContextMembershipEvent bcme)
Fire a BeanContextshipEvent on the BeanContextMembershipListener interface
protected void
fireChildrenRemoved(BeanContextMembershipEvent bcme)
Fire a BeanContextshipEvent on the BeanContextMembershipListener interface
BeanContext
getBeanContextPeer()
Gets the instance of BeanContext that this object is providing the implementation for.
protected static BeanContextChild
getChildBeanContextChild(Object child)
Gets the BeanContextChild (if any) of the specified child
protected static BeanContextMembershipListener
getChildBeanContextMembershipListener(Object child)
Gets the BeanContextMembershipListener (if any) of the specified child
protected static PropertyChangeListener
getChildPropertyChangeListener(Object child)
Gets the PropertyChangeListener (if any) of the specified child
protected static Serializable
getChildSerializable(Object child)
Gets the Serializable (if any) associated with the specified Child
protected static VetoableChangeListener
getChildVetoableChangeListener(Object child)
Gets the VetoableChangeListener (if any) of the specified child
protected static Visibility
getChildVisibility(Object child)
Gets the Component (if any) associated with the specified child.
Locale
getLocale()
Gets the locale for this BeanContext.
URL
getResource(String name, BeanContextChild bcc)
InputStream
getResourceAsStream(String name, BeanContextChild bcc)
protected void
initialize()
protected method called from constructor and readObject to initialize transient state of BeanContextSupport instance.
Object
instantiateChild(String beanName)
The instantiateChild method is a convenience hook in BeanContext to simplify the task of instantiating a Bean, nested, into a BeanContext.
boolean
isDesignTime()
Reports whether or not this object is in currently in design time mode.
boolean
isEmpty()
Reports whether or not this BeanContext is empty.
boolean
isSerializing()
Is this BeanContext in the process of being serialized?
Iterator<E>
iterator()
Gets all JavaBean or BeanContext instances currently nested in this BeanContext.
boolean
needsGui()
This method is typically called from the environment in order to determine if the implementor "needs" a GUI.
void
okToUseGui()
Notify this instance that it may now render a GUI
void
propertyChange(PropertyChangeEvent pce)
subclasses may envelope to monitor child property changes.
void
readChildren(ObjectInputStream ois)
When an instance of this class is used as a delegate for the implementation of the BeanContext protocols (and its subprotocols) there exists a 'chicken and egg' problem during deserialization
boolean
remove(Object targetChild)
Removes a child from this BeanContext.
protected boolean
remove(Object targetChild, boolean callChildSetBC)
internal remove used when removal caused by unexpected setBeanContext or by remove() invocation.
boolean
removeAll(Collection<E> c)
remove all specified children (Unsupported) implementations must synchronized on the hierarchy lock and "children" protected field
void
removeBeanContextMembershipListener(BeanContextMembershipListener bcml)
Removes a BeanContextMembershipListener
boolean
retainAll(Collection<E> c)
retain only specified children (Unsupported) implementations must synchronized on the hierarchy lock and "children" protected field
protected void
serialize(ObjectOutputStream oos, Collection<E> coll)
Used by writeObject to serialize a Collection.
void
setDesignTime(boolean dTime)
Sets the new design time value for this BeanContext.
void
setLocale(Locale newLocale)
Sets the locale of this BeanContext.
int
size()
Gets the number of children currently nested in this BeanContext.
Object[]
toArray()
Gets all JavaBean or BeanContext instances currently nested in this BeanContext.
Object[]
toArray(Object[] arry)
Gets an array containing all children of this BeanContext that match the types contained in arry.
protected boolean
validatePendingAdd(Object targetChild)
Subclasses of this class may override, or envelope, this method to add validation behavior for the BeanContext to examine child objects immediately prior to their being added to the BeanContext.
protected boolean
validatePendingRemove(Object targetChild)
Subclasses of this class may override, or envelope, this method to add validation behavior for the BeanContext to examine child objects immediately prior to their being removed from the BeanContext.
void
vetoableChange(PropertyChangeEvent pce)
subclasses may envelope to monitor veto child property changes.
void
writeChildren(ObjectOutputStream oos)
Used to serialize all children of this BeanContext.

Methods inherited from class java.beans.beancontext.BeanContextChildSupport

addPropertyChangeListener, addVetoableChangeListener, firePropertyChange, fireVetoableChange, getBeanContext, getBeanContextChildPeer, initializeBeanContextResources, isDelegated, releaseBeanContextResources, removePropertyChangeListener, removeVetoableChangeListener, serviceAvailable, serviceRevoked, setBeanContext, validatePendingSetBeanContext

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Details

bcmListeners

protected ArrayList<E> bcmListeners
all accesses to the protected ArrayList bcmListeners field shall be synchronized on that object.

children

protected HashMap<K,V> children
all accesses to the protected HashMap children field shall be synchronized on that object.

designTime

protected boolean designTime
A boolean indicating whether or not this object is currently in design time mode.

locale

protected Locale locale
The current locale of this BeanContext.

okToUseGui

protected boolean okToUseGui
A boolean indicating if this instance may now render a GUI.

Constructor Details

BeanContextSupport

public BeanContextSupport()
Create an instance that is not a delegate of another object
Usages and Demos :

View More Examples of BeanContextSupport()

BeanContextSupport

public BeanContextSupport(BeanContext peer)
Create an instance using with a default locale
Parameters:
peer - The peer BeanContext we are supplying an implementation for, or null if this object is its own peer

BeanContextSupport

public BeanContextSupport(BeanContext peer,
                          Locale lcle)
Create an instance using the specified locale
Parameters:
peer - The peer BeanContext we are supplying an implementation for, or null if this object is its own peer
lcle - The current Locale for this BeanContext. If lcle is null, the default locale is assigned to the BeanContext instance.

BeanContextSupport

public BeanContextSupport(BeanContext peer,
                          Locale lcle,
                          boolean dtime)
Create an instance using the specified Locale and design mode.
Parameters:
peer - The peer BeanContext we are supplying an implementation for, or null if this object is its own peer
lcle - The current Locale for this BeanContext. If lcle is null, the default locale is assigned to the BeanContext instance.
dtime - The initial state, true if in design mode, false if runtime.

BeanContextSupport

public BeanContextSupport(BeanContext peer,
                          Locale lcle,
                          boolean dTime,
                          boolean visible)
Construct a BeanContextSupport instance
Parameters:
peer - The peer BeanContext we are supplying an implementation for, or null if this object is its own peer
lcle - The current Locale for this BeanContext. If lcle is null, the default locale is assigned to the BeanContext instance.
dTime - The initial state, true if in design mode, false if runtime.
visible - The initial visibility.

Method Details

add

public boolean add(Object targetChild)
Adds/nests a child within this BeanContext.

Invoked as a side effect of java.beans.Beans.instantiate(). If the child object is not valid for adding then this method throws an IllegalStateException.

Parameters:
targetChild - The child objects to nest within this BeanContext
Returns:
true if the child was added successfully.
Usages and Demos :

View More Examples of add(Object targetChild)
   1:         MyMembershipListener listener = new MyMembershipListener(); 
   2:         context.add(bean);
   3:         context.remove(bean);
   4:     }
   5: }

View Full Code Here

addAll

public boolean addAll(Collection<E> c)
add Collection to set of Children (Unsupported) implementations must synchronized on the hierarchy lock and "children" protected field

addBeanContextMembershipListener

public void addBeanContextMembershipListener(BeanContextMembershipListener bcml)
Adds a BeanContextMembershipListener
Specified by:
addBeanContextMembershipListener in interface BeanContext
Parameters:
bcml - the BeanContextMembershipListener to add
Usages and Demos :

View More Examples of addBeanContextMembershipListener(BeanContextMembershipListener bcml)

avoidingGui

public boolean avoidingGui()
Used to determine if the BeanContext child is avoiding using its GUI.
Specified by:
avoidingGui in interface Visibility
Returns:
is this instance avoiding using its GUI?
See Also:
Visibility

bcsChildren

protected Iterator<E> bcsChildren()
Returns an iterator of all children of this BeanContext.
Returns:
an iterator for all the current BCSChild values

bcsPreDeserializationHook

protected void bcsPreDeserializationHook(ObjectInputStream ois)
            throws IOException,
                   ClassNotFoundException
called by readObject after defaultReadObject() but prior to deserialization of any children. This method may be overridden by subclasses to perform custom deserialization of their state prior to this superclass deserializing the children. This method should not however be used by subclasses to replace their own implementation (if any) of readObject().

bcsPreSerializationHook

protected void bcsPreSerializationHook(ObjectOutputStream oos)
            throws IOException
called by writeObject after defaultWriteObject() but prior to serialization of currently serializable children. This method may be overridden by subclasses to perform custom serialization of their state prior to this superclass serializing the children. This method should not however be used by subclasses to replace their own implementation (if any) of writeObject().

childDeserializedHook

protected void childDeserializedHook(Object child,
                                     BeanContextSupport.BCSChild bcsc)
Called by readObject with the newly deserialized child and BCSChild.
Parameters:
child - the newly deserialized child
bcsc - the newly deserialized BCSChild

childJustAddedHook

protected void childJustAddedHook(Object child,
                                  BeanContextSupport.BCSChild bcsc)
subclasses may override this method to simply extend add() semantics after the child has been added and before the event notification has occurred. The method is called with the child synchronized.

childJustRemovedHook

protected void childJustRemovedHook(Object child,
                                    BeanContextSupport.BCSChild bcsc)
subclasses may override this method to simply extend remove() semantics after the child has been removed and before the event notification has occurred. The method is called with the child synchronized.

classEquals

protected static final boolean classEquals(Class<T> first,
                                           Class<T> second)
Tests to see if two class objects, or their names are equal.
Parameters:
first - the first object
second - the second object
Returns:
true if equal, false if not

clear

public void clear()
clear the children (Unsupported) implementations must synchronized on the hierarchy lock and "children" protected field
Specified by:
clear in interface Collection<E>

contains

public boolean contains(Object o)
Determines whether or not the specified object is currently a child of this BeanContext.
Specified by:
contains in interface Collection<E>
Parameters:
o - the Object in question
Returns:
if this object is a child

containsAll

public boolean containsAll(Collection<E> c)
Tests to see if all objects in the specified Collection are children of this BeanContext.
Parameters:
c - the specified Collection
Returns:
true if all objects in the collection are children of this BeanContext, false if not.

containsKey

public boolean containsKey(Object o)
Determines whether or not the specified object is currently a child of this BeanContext.
Parameters:
o - the Object in question
Returns:
if this object is a child

copyChildren

protected final Object[] copyChildren()
Gets a copy of the this BeanContext's children.
Returns:
a copy of the current nested children

createBCSChild

protected BeanContextSupport.BCSChild createBCSChild(Object targetChild,
                                                     Object peer)
Subclasses can override this method to insert their own subclass of Child without having to override add() or the other Collection methods that add children to the set.
Parameters:
targetChild - the child to create the Child on behalf of
peer - the peer if the tragetChild and the peer are related by an implementation of BeanContextProxy

deserialize

protected final void deserialize(ObjectInputStream ois,
                                 Collection<E> coll)
            throws IOException,
                   ClassNotFoundException
used by readObject to deserialize a collection.
Parameters:
ois - the ObjectInputStream to use
coll - the Collection

dontUseGui

public void dontUseGui()
notify this instance that it may no longer render a GUI.
Specified by:
dontUseGui in interface Visibility

fireChildrenAdded

protected final void fireChildrenAdded(BeanContextMembershipEvent bcme)
Fire a BeanContextshipEvent on the BeanContextMembershipListener interface

fireChildrenRemoved

protected final void fireChildrenRemoved(BeanContextMembershipEvent bcme)
Fire a BeanContextshipEvent on the BeanContextMembershipListener interface

getBeanContextPeer

public BeanContext getBeanContextPeer()
Gets the instance of BeanContext that this object is providing the implementation for.
Returns:
the BeanContext instance

getChildBeanContextChild

protected static final BeanContextChild getChildBeanContextChild(Object child)
Gets the BeanContextChild (if any) of the specified child
Parameters:
child - the specified child
Returns:
the BeanContextChild (if any) of the specified child
Throws:
IllegalArgumentException - if child implements both BeanContextChild and BeanContextProxy

getChildBeanContextMembershipListener

protected static final BeanContextMembershipListener getChildBeanContextMembershipListener(Object child)
Gets the BeanContextMembershipListener (if any) of the specified child
Parameters:
child - the specified child
Returns:
the BeanContextMembershipListener (if any) of the specified child

getChildPropertyChangeListener

protected static final PropertyChangeListener getChildPropertyChangeListener(Object child)
Gets the PropertyChangeListener (if any) of the specified child
Parameters:
child - the specified child
Returns:
the PropertyChangeListener (if any) of the specified child

getChildSerializable

protected static final Serializable getChildSerializable(Object child)
Gets the Serializable (if any) associated with the specified Child
Parameters:
child - the specified child
Returns:
the Serializable (if any) associated with the specified Child

getChildVetoableChangeListener

protected static final VetoableChangeListener getChildVetoableChangeListener(Object child)
Gets the VetoableChangeListener (if any) of the specified child
Parameters:
child - the specified child
Returns:
the VetoableChangeListener (if any) of the specified child

getChildVisibility

protected static final Visibility getChildVisibility(Object child)
Gets the Component (if any) associated with the specified child.
Parameters:
child - the specified child
Returns:
the Component (if any) associated with the specified child.

getLocale

public Locale getLocale()
Gets the locale for this BeanContext.
Returns:
the current Locale of the BeanContext

getResource

public URL getResource(String name,
                       BeanContextChild bcc)
Specified by:
getResource in interface BeanContext
Parameters:
name - the name of the resource requested.
bcc - the child object making the request.
Returns:
the requested resource as an InputStream

getResourceAsStream

public InputStream getResourceAsStream(String name,
                                       BeanContextChild bcc)
Specified by:
getResourceAsStream in interface BeanContext
Parameters:
name - the name of the resource requested.
bcc - the child object making the request.
Returns:
the requested resource as an InputStream

initialize

protected void initialize()
protected method called from constructor and readObject to initialize transient state of BeanContextSupport instance. This class uses this method to instantiate inner class listeners used to monitor PropertyChange and VetoableChange events on children. subclasses may envelope this method to add their own initialization behavior

instantiateChild

public Object instantiateChild(String beanName)
            throws IOException,
                   ClassNotFoundException
The instantiateChild method is a convenience hook in BeanContext to simplify the task of instantiating a Bean, nested, into a BeanContext.

The semantics of the beanName parameter are defined by java.beans.Beans.instantate.

Specified by:
instantiateChild in interface BeanContext
Parameters:
beanName - the name of the Bean to instantiate within this BeanContext
Returns:
the new object
Throws:
IOException - if there is an I/O error when the bean is being deserialized
ClassNotFoundException - if the class identified by the beanName parameter is not found

isDesignTime

public boolean isDesignTime()
Reports whether or not this object is in currently in design time mode.
Specified by:
isDesignTime in interface DesignMode
Returns:
true if in design time mode, false if not

isEmpty

public boolean isEmpty()
Reports whether or not this BeanContext is empty. A BeanContext is considered empty when it contains zero nested children.
Specified by:
isEmpty in interface Collection<E>
Returns:
if there are not children

isSerializing

public boolean isSerializing()
Is this BeanContext in the process of being serialized?
Returns:
if this BeanContext is currently being serialized

iterator

public Iterator<E> iterator()
Gets all JavaBean or BeanContext instances currently nested in this BeanContext.
Specified by:
iterator in interface Collection<E>
iterator in interface Iterable<T>
Returns:
an Iterator of the nested children

needsGui

public boolean needsGui()
This method is typically called from the environment in order to determine if the implementor "needs" a GUI.

The algorithm used herein tests the BeanContextPeer, and its current children to determine if they are either Containers, Components, or if they implement Visibility and return needsGui() == true.

Specified by:
needsGui in interface Visibility
Returns:
true if the implementor needs a GUI

okToUseGui

public void okToUseGui()
Notify this instance that it may now render a GUI
Specified by:
okToUseGui in interface Visibility

propertyChange

public void propertyChange(PropertyChangeEvent pce)
subclasses may envelope to monitor child property changes.
Specified by:
propertyChange in interface PropertyChangeListener

readChildren

public final void readChildren(ObjectInputStream ois)
            throws IOException,
                   ClassNotFoundException
When an instance of this class is used as a delegate for the implementation of the BeanContext protocols (and its subprotocols) there exists a 'chicken and egg' problem during deserialization

remove

public boolean remove(Object targetChild)
Removes a child from this BeanContext. If the child object is not for adding then this method throws an IllegalStateException.
Specified by:
remove in interface Collection<E>
Parameters:
targetChild - The child objects to remove
Usages and Demos :

View More Examples of remove(Object targetChild)
   1:         context.add(bean);
   2:         context.remove(bean);
   3:     }
   4: }

View Full Code Here

remove

protected boolean remove(Object targetChild,
                         boolean callChildSetBC)
internal remove used when removal caused by unexpected setBeanContext or by remove() invocation.
Parameters:
targetChild - the JavaBean, BeanContext, or Object to be removed
callChildSetBC - used to indicate that the child should be notified that it is no longer nested in this BeanContext.

removeAll

public boolean removeAll(Collection<E> c)
remove all specified children (Unsupported) implementations must synchronized on the hierarchy lock and "children" protected field

removeBeanContextMembershipListener

public void removeBeanContextMembershipListener(BeanContextMembershipListener bcml)
Removes a BeanContextMembershipListener
Specified by:
removeBeanContextMembershipListener in interface BeanContext
Parameters:
bcml - the BeanContextMembershipListener to remove

retainAll

public boolean retainAll(Collection<E> c)
retain only specified children (Unsupported) implementations must synchronized on the hierarchy lock and "children" protected field

serialize

protected final void serialize(ObjectOutputStream oos,
                               Collection<E> coll)
            throws IOException
Used by writeObject to serialize a Collection.
Parameters:
oos - the ObjectOutputStream to use during serialization
coll - the Collection to serialize
Throws:
IOException - if serialization failed

setDesignTime

public void setDesignTime(boolean dTime)
Sets the new design time value for this BeanContext.
Specified by:
setDesignTime in interface DesignMode
Parameters:
dTime - the new designTime value

setLocale

public void setLocale(Locale newLocale)
            throws PropertyVetoException
Sets the locale of this BeanContext.
Parameters:
newLocale - the new locale. This method call will have no effect if newLocale is null.
Throws:
PropertyVetoException - if the new value is rejected

size

public int size()
Gets the number of children currently nested in this BeanContext.
Specified by:
size in interface Collection<E>
Returns:
number of children

toArray

public Object[] toArray()
Gets all JavaBean or BeanContext instances currently nested in this BeanContext.
Specified by:
toArray in interface Collection<E>

toArray

public Object[] toArray(Object[] arry)
Gets an array containing all children of this BeanContext that match the types contained in arry.
Parameters:
arry - The array of object types that are of interest.
Returns:
an array of children

validatePendingAdd

protected boolean validatePendingAdd(Object targetChild)
Subclasses of this class may override, or envelope, this method to add validation behavior for the BeanContext to examine child objects immediately prior to their being added to the BeanContext.
Returns:
true iff the child may be added to this BeanContext, otherwise false.

validatePendingRemove

protected boolean validatePendingRemove(Object targetChild)
Subclasses of this class may override, or envelope, this method to add validation behavior for the BeanContext to examine child objects immediately prior to their being removed from the BeanContext.
Returns:
true iff the child may be removed from this BeanContext, otherwise false.

vetoableChange

public void vetoableChange(PropertyChangeEvent pce)
            throws PropertyVetoException
subclasses may envelope to monitor veto child property changes.
Specified by:
vetoableChange in interface VetoableChangeListener

writeChildren

public final void writeChildren(ObjectOutputStream oos)
            throws IOException
Used to serialize all children of this BeanContext.
Parameters:
oos - the ObjectOutputStream to use during serialization
Throws:
IOException - if serialization failed