This is a helper class for implementing a bean context. It is
intended to be used either by subclassing or by calling methods
of this implementation from another.
add
public boolean add(Object targetChild)
Add a child to the bean context. A child can be a simple
Object
, a
BeanContextChild
or another
BeanContext
.
The children of a
BeanContext
form a set. As
a result, this method returns
false
if the given
object is already a child of this context.
If the child is a
BeanContextChild
, or a proxy
for such a child, the
setBeanContext()
method
is invoked on the child. If this operation is vetoed by the
child, via throwing a
PropertyVetoException
,
then the current completion state of the
add()
operation is rolled back and a
IllegalStateException
is thrown. If the
BeanContextChild
is successfully
added, then the context registers with its
PropertyChangeListener
and
VetoableChangeListener
for "beanContext" events.
If the child implements
java.beans.Visibility
,
then its ability to use a GUI is set based on that of
this context.
A
BeanContextMembershipEvent
is fired when the
child is successfully added to the bean context.
This method is synchronized over the global hierarchy lock.
- add in interface Collection
targetChild
- the child to add.
- false if the child has already been added.
addAll
public boolean addAll(Collection c)
Add the contents of a given collection to this collection.
- addAll in interface Collection
c
- the collection to add.
- true if the collection was modified as a result of this action.
avoidingGui
public boolean avoidingGui()
throws NotImplementedException
Returns true if this bean needs a GUI
but is being prevented from using one.
- avoidingGui in interface Visibility
- true if
needsGui()
is true but the bean has been
told not to use it.
clear
public void clear()
Clear the collection, such that a subsequent call to isEmpty() would
return true.
- clear in interface Collection
contains
public boolean contains(Object o)
Test whether this collection contains a given object as one of its
elements.
- contains in interface Collection
o
- the element to look for.
- true if this collection contains at least one element e such that
o == null ? e == null : o.equals(e)
.
containsAll
public boolean containsAll(Collection c)
Test whether this collection contains every element in a given collection.
- containsAll in interface Collection
c
- the collection to test for.
- true if for every element o in c, contains(o) would return true.
getResource
public URL getResource(String name,
BeanContextChild bcc)
Get a resource. The
BeanContext
will typically
call
ClassLoader.getResource()
, but may do it any
way it wants to. This allows a
BeanContext
to
have its own set of resources separate from the rest of the
system.
Beans should call this method on their parent rather than the
associated
ClassLoader
method.
I am assuming, but am not entirely sure, that if a
BeanContext
cannot find a resource, its
responsibility is to call the
getResource
method
of its parent
BeanContext
.
- getResource in interface BeanContext
- a URL to the requested resource.
getResourceAsStream
public InputStream getResourceAsStream(String name,
BeanContextChild bcc)
Get a resource as a stream. The
BeanContext
will
typically call
ClassLoader.getResourceAsStream()
,
but may do it any way it wants to. This allows a
BeanContext
's children to have their own set of
resources separate from the rest of the system.
Beans should call this method on their parent rather than the
associated
ClassLoader
method.
I am assuming, but am not entirely sure, that if a
BeanContext
cannot find a resource, its
responsibility is to call the
getResourceAsStream
method of its parent
BeanContext
.
- getResourceAsStream in interface BeanContext
- the requested resource as a stream.
isDesignTime
public boolean isDesignTime()
This method should tell whether it is design time or runtime.
- isDesignTime in interface DesignMode
true
if design time, false
if
runtime.
isEmpty
public boolean isEmpty()
Returns true if this bean context has no children.
- isEmpty in interface Collection
- true if there are no children.
isSerializing
public boolean isSerializing()
throws NotImplementedException
propertyChange
public void propertyChange(PropertyChangeEvent pce)
Subclasses may use this method to catch property changes
arising from the children of this context. At present,
we just listen for the beans being assigned to a different
context and remove them from here if such an event occurs.
- propertyChange in interface PropertyChangeListener
pce
- the property change event.
remove
public boolean remove(Object targetChild)
Remove the specified child from the context. This is
the same as calling remove(Object,boolean)
with a request for the setBeanContext()
method
of the child to be called (i.e. the second argument is true).
- remove in interface Collection
targetChild
- the child to remove.
remove
protected boolean remove(Object targetChild,
boolean callChildSetBC)
Removes a child from the bean context. A child can be a simple
Object
, a
BeanContextChild
or another
BeanContext
. If the given child is not
a child of this context, this method returns
false
.
If the child is a
BeanContextChild
, or a proxy
for such a child, the
setBeanContext()
method
is invoked on the child (if specified). If this operation is vetoed
by the child, via throwing a
PropertyVetoException
,
then the current completion state of the
remove()
operation is rolled back and a
IllegalStateException
is thrown. If the
BeanContextChild
is successfully
removed, then the context deregisters with its
PropertyChangeListener
and
VetoableChangeListener
for "beanContext" events.
A
BeanContextMembershipEvent
is fired when the
child is successfully removed from the bean context.
This method is synchronized over the global hierarchy lock.
targetChild
- the child to add.callChildSetBC
- true if the setBeanContext()
method of the child should be called.
- false if the child doesn't exist.
removeAll
public boolean removeAll(Collection c)
Remove all elements of a given collection from this collection. That is,
remove every element e such that c.contains(e).
- removeAll in interface Collection
c
- The collection of objects to be removed.
- true if this collection was modified as a result of this call.
retainAll
public boolean retainAll(Collection c)
Remove all elements of this collection that are not contained in a given
collection. That is, remove every element e such that !c.contains(e).
- retainAll in interface Collection
c
- The collection of objects to be retained.
- true if this collection was modified as a result of this call.
setDesignTime
public void setDesignTime(boolean dtime)
The environment will call this method on your
BeanContextChild
when it is registered in a parent
BeanContext
or when behavior needs to switch from
design time to runtime behavior (or vice versa).
BeanContext
s are required to fire
PropertyChangeEvent
s when properties change.
designTime
is a property, and therefore when you
implement
setDesignTime()
, you need to fire a
PropertyChangeEvent
with the old value, the new
value and using
PROPERTYNAME
as the property name.
- setDesignTime in interface DesignMode
size
public int size()
Get the number of elements in this collection.
- size in interface Collection
- the number of elements in the collection.
toArray
public Object[] toArray()
Copy the current contents of this collection into an array.
- toArray in interface Collection
- an array of type Object[] and length equal to the size of this
collection, containing the elements currently in this collection, in
any order.
toArray
public Object[] toArray(Object[] array)
throws NotImplementedException
Copy the current contents of this collection into an array. If the array
passed as an argument has length less than the size of this collection, an
array of the same run-time type as a, and length equal to the size of this
collection, is allocated using Reflection. Otherwise, a itself is used.
The elements of this collection are copied into it, and if there is space
in the array, the following element is set to null. The resultant array is
returned.
Note: The fact that the following element is set to null is only useful
if it is known that this collection does not contain any null elements.
- toArray in interface Collection
- an array containing the elements currently in this collection, in
any order.
ArrayStoreException
- if the type of any element of the
collection is not a subtype of the element type of a.
BeanContextSupport.java --
Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version.