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.
Modifier and Type | Class and Description |
---|---|
protected class |
BeanContextSupport.BCSChild |
protected static class |
BeanContextSupport.BCSIterator protected final subclass that encapsulates an iterator but implements a noop remove() method. |
protected transient HashMap children
all accesses to the protected HashMap children
field shall be synchronized on that object.
protected transient ArrayList bcmListeners
all accesses to the protected ArrayList bcmListeners
field shall be synchronized on that object.
protected Locale locale
The current locale of this BeanContext.
protected boolean okToUseGui
A boolean
indicating if this instance may now render a GUI.
protected boolean designTime
A boolean
indicating whether or not this object is currently in design time mode.
public BeanContextSupport(BeanContext peer, Locale lcle, boolean dTime, boolean visible)
Construct a BeanContextSupport instance
peer
- The peer BeanContext
we are supplying an implementation for, or null
if this object is its own peerlcle
- 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.Locale.getDefault()
, Locale.setDefault(java.util.Locale)
public BeanContextSupport(BeanContext peer, Locale lcle, boolean dtime)
Create an instance using the specified Locale and design mode.
peer
- The peer BeanContext
we are supplying an implementation for, or null
if this object is its own peerlcle
- 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.Locale.getDefault()
, Locale.setDefault(java.util.Locale)
public BeanContextSupport(BeanContext peer, Locale lcle)
Create an instance using the specified locale
peer
- The peer BeanContext we are supplying an implementation for, or null
if this object is its own peerlcle
- The current Locale for this BeanContext
. If lcle
is null
, the default locale is assigned to the BeanContext
instance.Locale.getDefault()
, Locale.setDefault(java.util.Locale)
public BeanContextSupport(BeanContext peer)
Create an instance using with a default locale
peer
- The peer BeanContext
we are supplying an implementation for, or null
if this object is its own peerpublic BeanContextSupport()
Create an instance that is not a delegate of another object
public BeanContext getBeanContextPeer()
Gets the instance of BeanContext
that this object is providing the implementation for.
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.instantiate.
instantiateChild
in interface BeanContext
beanName
- the name of the Bean to instantiate within this BeanContextIOException
- if there is an I/O error when the bean is being deserializedClassNotFoundException
- if the class identified by the beanName parameter is not foundpublic int size()
Gets the number of children currently nested in this BeanContext.
size
in interface Collection
public boolean isEmpty()
Reports whether or not this BeanContext
is empty. A BeanContext
is considered empty when it contains zero nested children.
isEmpty
in interface Collection
public boolean contains(Object o)
Determines whether or not the specified object is currently a child of this BeanContext
.
contains
in interface Collection
o
- the Object in questionpublic boolean containsKey(Object o)
Determines whether or not the specified object is currently a child of this BeanContext
.
o
- the Object in questionpublic Iterator iterator()
Gets all JavaBean or BeanContext
instances currently nested in this BeanContext
.
iterator
in interface Iterable
iterator
in interface Collection
Iterator
of the nested childrenpublic Object[] toArray()
Gets all JavaBean or BeanContext
instances currently nested in this BeanContext.
toArray
in interface Collection
public Object[] toArray(Object[] arry)
Gets an array containing all children of this BeanContext
that match the types contained in arry.
toArray
in interface Collection
arry
- The array of object types that are of interest.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.
targetChild
- the child to create the Child on behalf ofpeer
- the peer if the tragetChild and the peer are related by an implementation of BeanContextProxy * @return Subtype-specific subclass of Child without overriding collection methodspublic 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.
add
in interface Collection
targetChild
- The child objects to nest within this BeanContext
validatePendingAdd(java.lang.Object)
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.
remove
in interface Collection
targetChild
- The child objects to removetrue
if an element was removed as a result of this callvalidatePendingRemove(java.lang.Object)
protected boolean remove(Object targetChild, boolean callChildSetBC)
internal remove used when removal caused by unexpected setBeanContext
or by remove()
invocation.
targetChild
- the JavaBean, BeanContext, or Object to be removedcallChildSetBC
- used to indicate that the child should be notified that it is no longer nested in this BeanContext
.public boolean containsAll(Collection c)
Tests to see if all objects in the specified Collection
are children of this BeanContext
.
containsAll
in interface Collection
c
- the specified Collection
true
if all objects in the collection are children of this BeanContext
, false if not.Collection.contains(Object)
public boolean addAll(Collection c)
add Collection to set of Children (Unsupported) implementations must synchronized on the hierarchy lock and "children" protected field
addAll
in interface Collection
c
- collection containing elements to be added to this collectionUnsupportedOperationException
UnsupportedOperationException
- thrown unconditionally by this implementationCollection.add(Object)
public boolean removeAll(Collection c)
remove all specified children (Unsupported) implementations must synchronized on the hierarchy lock and "children" protected field
removeAll
in interface Collection
c
- collection containing elements to be removed from this collectionUnsupportedOperationException
UnsupportedOperationException
- thrown unconditionally by this implementationCollection.remove(Object)
, Collection.contains(Object)
public boolean retainAll(Collection c)
retain only specified children (Unsupported) implementations must synchronized on the hierarchy lock and "children" protected field
retainAll
in interface Collection
c
- collection containing elements to be retained in this collectionUnsupportedOperationException
UnsupportedOperationException
- thrown unconditionally by this implementationCollection.remove(Object)
, Collection.contains(Object)
public void clear()
clear the children (Unsupported) implementations must synchronized on the hierarchy lock and "children" protected field
clear
in interface Collection
UnsupportedOperationException
- thrown unconditionally by this implementationpublic void addBeanContextMembershipListener(BeanContextMembershipListener bcml)
Adds a BeanContextMembershipListener
addBeanContextMembershipListener
in interface BeanContext
bcml
- the BeanContextMembershipListener to addNullPointerException
- if the argument is nullpublic void removeBeanContextMembershipListener(BeanContextMembershipListener bcml)
Removes a BeanContextMembershipListener
removeBeanContextMembershipListener
in interface BeanContext
bcml
- the BeanContextMembershipListener to removeNullPointerException
- if the argument is nullpublic InputStream getResourceAsStream(String name, BeanContextChild bcc)
Description copied from interface: BeanContext
Analagous to java.lang.ClassLoader.getResourceAsStream()
, this method allows a BeanContext
implementation to interpose behavior between the child Component
and underlying ClassLoader
.
getResourceAsStream
in interface BeanContext
name
- the name of the resource requested.bcc
- the child object making the request.NullPointerException
- if the argument is nullpublic URL getResource(String name, BeanContextChild bcc)
Description copied from interface: BeanContext
Analagous to java.lang.ClassLoader.getResource()
, this method allows a BeanContext
implementation to interpose behavior between the child Component
and underlying ClassLoader
.
getResource
in interface BeanContext
name
- the name of the resource requested.bcc
- the child object making the request.public void setDesignTime(boolean dTime)
Sets the new design time value for this BeanContext
.
setDesignTime
in interface DesignMode
dTime
- the new designTime valueBeanContext
, BeanContextMembershipListener
, PropertyChangeEvent
public boolean isDesignTime()
Reports whether or not this object is in currently in design time mode.
isDesignTime
in interface DesignMode
true
if in design time mode, false
if notpublic void setLocale(Locale newLocale) throws PropertyVetoException
Sets the locale of this BeanContext.
newLocale
- the new locale. This method call will have no effect if newLocale is null
.PropertyVetoException
- if the new value is rejectedpublic Locale getLocale()
Gets the locale for this BeanContext
.
BeanContext
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.
needsGui
in interface Visibility
true
if the implementor needs a GUIpublic void dontUseGui()
notify this instance that it may no longer render a GUI.
dontUseGui
in interface Visibility
public void okToUseGui()
Notify this instance that it may now render a GUI
okToUseGui
in interface Visibility
public boolean avoidingGui()
Used to determine if the BeanContext
child is avoiding using its GUI.
avoidingGui
in interface Visibility
Visibility
public boolean isSerializing()
Is this BeanContext
in the process of being serialized?
BeanContext
is currently being serializedprotected Iterator bcsChildren()
Returns an iterator of all children of this BeanContext
.
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().
oos
- the ObjectOutputStream
to use during serializationIOException
- if serialization failedprotected 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().
ois
- the ObjectInputStream
to use during deserializationIOException
- if deserialization failedClassNotFoundException
- if needed classes are not foundprotected void childDeserializedHook(Object child, BeanContextSupport.BCSChild bcsc)
Called by readObject with the newly deserialized child and BCSChild.
child
- the newly deserialized childbcsc
- the newly deserialized BCSChildprotected final void serialize(ObjectOutputStream oos, Collection coll) throws IOException
Used by writeObject to serialize a Collection.
oos
- the ObjectOutputStream
to use during serializationcoll
- the Collection
to serializeIOException
- if serialization failedprotected final void deserialize(ObjectInputStream ois, Collection coll) throws IOException, ClassNotFoundException
used by readObject to deserialize a collection.
ois
- the ObjectInputStream to usecoll
- the CollectionIOException
- if deserialization failedClassNotFoundException
- if needed classes are not foundpublic final void writeChildren(ObjectOutputStream oos) throws IOException
Used to serialize all children of this BeanContext
.
oos
- the ObjectOutputStream
to use during serializationIOException
- if serialization failedpublic 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
ois
- the ObjectInputStream to useIOException
- if deserialization failedClassNotFoundException
- if needed classes are not foundpublic void vetoableChange(PropertyChangeEvent pce) throws PropertyVetoException
subclasses may envelope to monitor veto child property changes.
vetoableChange
in interface VetoableChangeListener
pce
- a PropertyChangeEvent
object describing the event source and the property that has changed.PropertyVetoException
- if the recipient wishes the property change to be rolled back.public void propertyChange(PropertyChangeEvent pce)
subclasses may envelope to monitor child property changes.
propertyChange
in interface PropertyChangeListener
pce
- A PropertyChangeEvent object describing the event source and the property that has changed.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.
targetChild
- the child to create the Child on behalf ofprotected 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.
targetChild
- the child to create the Child on behalf ofprotected 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.
child
- the childbcsc
- the BCSChildprotected 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.
child
- the childbcsc
- the BCSChildprotected static final Visibility getChildVisibility(Object child)
Gets the Component (if any) associated with the specified child.
child
- the specified childprotected static final Serializable getChildSerializable(Object child)
Gets the Serializable (if any) associated with the specified Child
child
- the specified childprotected static final PropertyChangeListener getChildPropertyChangeListener(Object child)
Gets the PropertyChangeListener (if any) of the specified child
child
- the specified childprotected static final VetoableChangeListener getChildVetoableChangeListener(Object child)
Gets the VetoableChangeListener (if any) of the specified child
child
- the specified childprotected static final BeanContextMembershipListener getChildBeanContextMembershipListener(Object child)
Gets the BeanContextMembershipListener (if any) of the specified child
child
- the specified childprotected static final BeanContextChild getChildBeanContextChild(Object child)
Gets the BeanContextChild (if any) of the specified child
child
- the specified childIllegalArgumentException
- if child implements both BeanContextChild and BeanContextProxyprotected final void fireChildrenAdded(BeanContextMembershipEvent bcme)
Fire a BeanContextshipEvent on the BeanContextMembershipListener interface
bcme
- the event to fireprotected final void fireChildrenRemoved(BeanContextMembershipEvent bcme)
Fire a BeanContextshipEvent on the BeanContextMembershipListener interface
bcme
- the event to fireprotected 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
protected final Object[] copyChildren()
Gets a copy of the this BeanContext's children.
protected static final boolean classEquals(Class first, Class second)
Tests to see if two class objects, or their names are equal.
first
- the first objectsecond
- the second object
© 1993–2017, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.