From 07b78716af6a9d7c9fd1e94d9baf94a52c873947 Mon Sep 17 00:00:00 2001 From: Andrew Haley Date: Fri, 30 Sep 2016 16:24:48 +0000 Subject: Makefile.def: Remove libjava. 2016-09-30 Andrew Haley * Makefile.def: Remove libjava. * Makefile.tpl: Likewise. * Makefile.in: Regenerate. * configure.ac: Likewise. * configure: Likewise. * gcc/java: Remove. * libjava: Likewise. From-SVN: r240662 --- .../java/beans/beancontext/BeanContext.java | 272 ----- .../java/beans/beancontext/BeanContextChild.java | 174 ---- .../BeanContextChildComponentProxy.java | 60 -- .../beans/beancontext/BeanContextChildSupport.java | 381 ------- .../beancontext/BeanContextContainerProxy.java | 63 -- .../java/beans/beancontext/BeanContextEvent.java | 110 -- .../beancontext/BeanContextMembershipEvent.java | 114 --- .../beancontext/BeanContextMembershipListener.java | 70 -- .../java/beans/beancontext/BeanContextProxy.java | 65 -- .../BeanContextServiceAvailableEvent.java | 97 -- .../beancontext/BeanContextServiceProvider.java | 138 --- .../BeanContextServiceProviderBeanInfo.java | 60 -- .../BeanContextServiceRevokedEvent.java | 112 -- .../BeanContextServiceRevokedListener.java | 62 -- .../beans/beancontext/BeanContextServices.java | 216 ---- .../beancontext/BeanContextServicesListener.java | 56 - .../beancontext/BeanContextServicesSupport.java | 896 ---------------- .../java/beans/beancontext/BeanContextSupport.java | 1079 -------------------- .../classpath/java/beans/beancontext/package.html | 46 - 19 files changed, 4071 deletions(-) delete mode 100644 libjava/classpath/java/beans/beancontext/BeanContext.java delete mode 100644 libjava/classpath/java/beans/beancontext/BeanContextChild.java delete mode 100644 libjava/classpath/java/beans/beancontext/BeanContextChildComponentProxy.java delete mode 100644 libjava/classpath/java/beans/beancontext/BeanContextChildSupport.java delete mode 100644 libjava/classpath/java/beans/beancontext/BeanContextContainerProxy.java delete mode 100644 libjava/classpath/java/beans/beancontext/BeanContextEvent.java delete mode 100644 libjava/classpath/java/beans/beancontext/BeanContextMembershipEvent.java delete mode 100644 libjava/classpath/java/beans/beancontext/BeanContextMembershipListener.java delete mode 100644 libjava/classpath/java/beans/beancontext/BeanContextProxy.java delete mode 100644 libjava/classpath/java/beans/beancontext/BeanContextServiceAvailableEvent.java delete mode 100644 libjava/classpath/java/beans/beancontext/BeanContextServiceProvider.java delete mode 100644 libjava/classpath/java/beans/beancontext/BeanContextServiceProviderBeanInfo.java delete mode 100644 libjava/classpath/java/beans/beancontext/BeanContextServiceRevokedEvent.java delete mode 100644 libjava/classpath/java/beans/beancontext/BeanContextServiceRevokedListener.java delete mode 100644 libjava/classpath/java/beans/beancontext/BeanContextServices.java delete mode 100644 libjava/classpath/java/beans/beancontext/BeanContextServicesListener.java delete mode 100644 libjava/classpath/java/beans/beancontext/BeanContextServicesSupport.java delete mode 100644 libjava/classpath/java/beans/beancontext/BeanContextSupport.java delete mode 100644 libjava/classpath/java/beans/beancontext/package.html (limited to 'libjava/classpath/java/beans/beancontext') diff --git a/libjava/classpath/java/beans/beancontext/BeanContext.java b/libjava/classpath/java/beans/beancontext/BeanContext.java deleted file mode 100644 index 803cb36..0000000 --- a/libjava/classpath/java/beans/beancontext/BeanContext.java +++ /dev/null @@ -1,272 +0,0 @@ -/* java.beans.beancontext.BeanContext - Copyright (C) 1999 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. */ - - -package java.beans.beancontext; - -import java.beans.DesignMode; -import java.beans.Visibility; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.util.Collection; - -/** - * Acts as a container for sub-beans and as a sub-bean, - * so that an entire hierarchy of beans can be made up of - * BeanContexts. - *

- * - * Since I can't sprinkle the Collections interface - * documentation with special information for BeanContext - * implementors, I'll have to document special requirements for - * implementors of those functions here. - *

- * - * add() or addAll(): - *
- *

    - *
  1. - * May add any Object into the hierarchy as well as a - * BeanContextChild, BeanContext or - * BeanContextProxy object. - * This way, any Bean can be in the hierarchy. - *
  2. - *
  3. - * Must synchronize on BeanContext.globalHierarchyLock. - *
  4. - *
  5. - * Don't add the Object if it's already there (only once - * per BeanContext). - *
  6. - *
  7. - * If it is a BeanContextChild implementor, call - * setBeanContext() on it. If it's a - * BeanContextProxy implementor, call - * getBeanContextProxy().setBeanContext() on it. - * If setBeanContext() vetoes the change, back out - * all changes so far and throw IllegalStateException. - *
  8. - *
  9. - * If it (or its proxy) implements Visibility, call - * dontUseGui() or okToUseGui() on it, - * depending on whether you (the BeanContext) feel like - * allowing it to use the GUI or not. - *
  10. - *
  11. - * If it implements BeanContextChild or - * BeanContextProxy, register yourself (the - * BeanContext) as both a - * PropertyChangeListener and - * VetoableChangeListener on the "beanContext" - * property (it may also add itself on any other properties it wishes - * to). - *
  12. - *
  13. - * If it is a listener or event source that you (the - * BeanContext) are interested in, you may register - * yourself to it or register it to you. - *
  14. - *
  15. - * Fire a java.beans.beancontext.BeanContextMembershipEvent - * before exiting. addAll() should wait until everything - * is done changing before firing the event (or events) so that if a - * failure occurs, the backing-out process can proceed without any - * events being fired at all. - *
  16. - *
- *

- * - * remove() or removeAll(): - *
- *

    - *
  1. - * Must synchronize on BeanContext.globalHierarchyLock. - *
  2. - *
  3. - * If the specified Object is not a child of this - * BeanContext, just exit without performing any actions. - *
  4. - *
  5. - * Remove the Object from your collection of children. - *
  6. - *
  7. - * If it is a BeanContextChild implementor, call - * setBeanContext(null) on it. If it's a - * BeanContextProxy implementor, call - * getBeanContextProxy().setBeanContext(null) on it. - * If setBeanContext() vetoes the change, back out - * all changes so far and throw IllegalStateException. - *
  8. - *
  9. - * If you registered the Object to listen to you or - * registered yourself as a listener on the Object during - * add() or addAll(), undo the registration - * bycalling the appropriate removeListener() method. - *
  10. - *
  11. - * Fire a java.beans.beancontext.BeanContextMembershipEvent - * before exiting. removeAll() should wait until - * everything is done changing before firing the event (or events) so - * that if a failure occurs, the backing-out process can proceed - * without any events being fired at all. - *
  12. - *
- *

- * - * addAll(), removeAll(), - * retainAll() and clear() do not need to be - * implemented, but may be if so desired. - *

- * - * Similarly, Visibility and DesignMode methods - * should propagate changed values to children that implement interfaces - * of the same name. - *

- * - * A hierarchy of beans is mainly useful so that different sets of beans - * can be established, each with their own set of resources. - * - * @author John Keiser - * @since JDK1.2 - */ - -public interface BeanContext - extends Collection, BeanContextChild, Visibility, DesignMode { - - /** - * The global lock on changing any BeanContext hierarchy. - * It kinda sucks that there is only one lock, since there can be - * multiple hierarchies. Oh well, I didn't design, I just code. - *

- * - * Methods that must (or do) synchronize on the global lock: - *
- *

- * @fixme fill in the rest of the methods which use the global lock. - */ - Object globalHierarchyLock = new Object(); - - /** - * Instantiate a Bean using this Bean's ClassLoader - * and this BeanContext as the parent. - *

- * - * This method exists mainly so that BeanContext - * implementations can perform extra actions on Beans that are - * created within them. - * - * @param beanName the name of the bean to instantiate - * @return the created Bean - * - * @see java.beans.Beans#instantiate(java.lang.ClassLoader,java.lang.String) - * @see java.beans.Beans#instantiate(java.lang.ClassLoader,java.lang.String,java.beans.beancontext.BeanContext) - * @exception IOException if there is an I/O problem during - * instantiation. - * @exception ClassNotFoundException if a serialized Bean's class - * is not found. - */ - Object instantiateChild(String beanName) - throws IOException, - ClassNotFoundException; - - /** - * 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. - * - * @return a URL to the requested resource. - * @param resourceName the name of the resource requested. - * @param requestor a reference to the child requesting the resource. - * @see java.lang.ClassLoader#getResource(java.lang.String) - */ - URL getResource(String resourceName, BeanContextChild requestor); - - /** - * 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. - * - * @return the requested resource as a stream. - * @param resourceName the name of the resource requested. - * @param requestor a reference to the child requesting the resource. - * @see java.lang.ClassLoader#getResourceAsStream(java.lang.String) - */ - InputStream getResourceAsStream(String resourceName, BeanContextChild requestor); - - /** - * Add a listener on changes to the membership of this - * BeanContext object. - * @param listener the listener to add. - */ - void addBeanContextMembershipListener(BeanContextMembershipListener listener); - - /** - * Remove a listener on changes to the membership of this - * BeanContext object. - * @param listener the listener to remove. - */ - void removeBeanContextMembershipListener(BeanContextMembershipListener listener); -} diff --git a/libjava/classpath/java/beans/beancontext/BeanContextChild.java b/libjava/classpath/java/beans/beancontext/BeanContextChild.java deleted file mode 100644 index e2bdcf3..0000000 --- a/libjava/classpath/java/beans/beancontext/BeanContextChild.java +++ /dev/null @@ -1,174 +0,0 @@ -/* java.beans.beancontext.BeanContextChild - Copyright (C) 1999 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. */ - - -package java.beans.beancontext; - -import java.beans.PropertyChangeListener; -import java.beans.PropertyVetoException; -import java.beans.VetoableChangeListener; - -/** - * Beans implement this to get information about the execution environment and - * its services and to be placed in the hierarchy. - *

- * - * The difference between a BeanContext and a - * BeanContextChild, mainly, is that a - * BeanContext may be a parent. - *

- * - * BeanContextChild instances will be serialized at some - * point in their life, but you need to make sure your bean context does - * not contain a serializable reference (directly or indirectly) to the - * parent BeanContext, to any of the other - * BeanContexts in the tree, or to any resources obtained - * via the BeanContextServices interface. One way to do this - * is to mark any fields that contain such references as - * transient. Another way is to use a custom serializer. - *

- * - * If you do not do this, when the BeanContext is serialized, - * all the other BeanContexts and other unnecessary things - * will be serialized along with it. - *

- * - * Before dying, a BeanContextChild should call - * getBeanContext().remove(this) to detach from the - * hierarchy and exit cleanly. - * - * @author John Keiser - * @since JDK1.2 - * @see java.beans.beancontext.BeanContext - */ - -public interface BeanContextChild { - /** - * Set the parent BeanContext. - *

- * - * This method is called from BeanContext.add() and - * should not be called directly. - *

- * - * When this Object is being added to a new BeanContext or moved - * from an old one, a non-null value will be passed in. - *

- * - * When this Object is being removed from the current - * BeanContext, setBeanContext() will - * receive the parameter null. - *

- * - * When being removed from the current BeanContext, - * it is the BeanContextChild's responsibility to - * release all services it has obtained. - *

- * - * This change should generate PropertyChangeEvent - * and VetoableChangeEvents with the property name - * "beanContext". If the change is vetoed, it must re-throw the - * exception and not change anything. In this way, the parent - * BeanContextChild, who has registered himself with - * you, will have a chance to remove this child from its - * collection. - *

- * - * If the Bean does not wish to change the parent or be removed - * from one, it may throw the PropertyVetoException. - * If you veto a setBeanContext(null) call, then you - * should try your hardest to remedy whatever problem is keeping - * you from being removed from the BeanContext so - * that you can not veto it the next time. - * Otherwise, nasty pathological recursion stuff could occur in - * certain situations. - *

- * - * If you do veto the change, you must first back out any changes - * you made prior to the veto. Best not to make any such changes - * prior to the veto in the first place. - *

- * - * This method is called from BeanContext.add() and - * should not be called directly. - * - * @param parent the new parent for the BeanContextChild, - * or null to signify removal from a tree. - * @exception PropertyVetoException if the - * BeanContextChild implementor does not - * wish to have its parent changed. - */ - void setBeanContext(BeanContext parent) - throws PropertyVetoException; - - /** - * Get the parent BeanContext. - * @return the parent BeanContext. - */ - BeanContext getBeanContext(); - - /** - * Add a listener that will be notified when a specific property changes. - * @param prop the name of the property to listen on - * @param listener the listener to listen on the property. - */ - void addPropertyChangeListener(String prop, PropertyChangeListener listener); - - /** - * Remove a listener to a certain property. - * @param prop the name of the property being listened on - * @param listener the listener listening on the property. - */ - void removePropertyChangeListener(String prop, PropertyChangeListener listener); - - /** - * Add a listener that will be notified when a specific property - * change is requested (a PropertyVetoException may be thrown) as - * well as after the change is successfully made. - * - * @param prop the name of the property to listen on - * @param listener the listener to listen on the property. - */ - void addVetoableChangeListener(String prop, VetoableChangeListener listener); - - /** - * Remove a listener to a certain property. - * @param prop the name of the property being listened on - * @param listener the listener listening on the property. - */ - void removeVetoableChangeListener(String prop, VetoableChangeListener listener); -} diff --git a/libjava/classpath/java/beans/beancontext/BeanContextChildComponentProxy.java b/libjava/classpath/java/beans/beancontext/BeanContextChildComponentProxy.java deleted file mode 100644 index cb75d50..0000000 --- a/libjava/classpath/java/beans/beancontext/BeanContextChildComponentProxy.java +++ /dev/null @@ -1,60 +0,0 @@ -/* java.beans.beancontext.BeanContextChildComponentProxy - Copyright (C) 1999 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. */ - - -package java.beans.beancontext; - -import java.awt.Component; - -/** - * Interface for BeanContextChilds which wish to associate an - * AWT component with them. The proxy is provided because the - * addPropertyChangeListener() method would conflict with - * Component if you tried to extend. - * - * @author John Keiser - * @since JDK1.2 - */ - -public interface BeanContextChildComponentProxy { - /** - * Get the Component associated with this BeanContextChild. - * @return the Component associated with this - * BeanContextChild. - */ - Component getComponent(); -} diff --git a/libjava/classpath/java/beans/beancontext/BeanContextChildSupport.java b/libjava/classpath/java/beans/beancontext/BeanContextChildSupport.java deleted file mode 100644 index 8cd887d..0000000 --- a/libjava/classpath/java/beans/beancontext/BeanContextChildSupport.java +++ /dev/null @@ -1,381 +0,0 @@ -/* java.beans.beancontext.BeanContextChildSupport - Copyright (C) 1999 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. */ - - -package java.beans.beancontext; - -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; -import java.beans.PropertyVetoException; -import java.beans.VetoableChangeListener; -import java.beans.VetoableChangeSupport; -import java.io.Serializable; - -/** - * Support for creating a BeanContextChild. - * This class contains the most common implementations of the methods in - * the BeanContextChild - * - * @specnote This class is not very well specified. I had to "fill in the - * blanks" in most places with what I thought was reasonable - * behavior. If there are problems, let me know. - * - * @author John Keiser - * @since 1.2 - * @see java.beans.beancontext.BeanContextChild - */ -public class BeanContextChildSupport - implements BeanContextChild, BeanContextServicesListener, Serializable -{ - static final long serialVersionUID = 6328947014421475877L; - - /** - * The peer on which to perform set actions. - * This is here so that this class can be used as a peer. - *

- * - * When extending this class, this variable will be set to - * this. - */ - public BeanContextChild beanContextChildPeer; - - /** - * The parent BeanContext. - */ - protected transient BeanContext beanContext; - - /** - * If setBeanContext() was vetoed once before, this - * is set to true so that the next time, vetoes will - * be ignored. - */ - protected transient boolean rejectedSetBCOnce; - - /** - * Listeners are registered here and events are fired through here. - */ - protected PropertyChangeSupport pcSupport; - - /** - * Listeners are registered here and events are fired through here. - */ - protected VetoableChangeSupport vcSupport; - - /** - * Create a new BeanContextChildSupport with itself as the peer. - * This is meant to be used when you subclass - * BeanContextChildSupport to create your child. - */ - public BeanContextChildSupport() - { - this (null); - } - - /** - * Create a new BeanContextChildSupport with the specified peer. - * @param peer the peer to use, or null to specify - * this. - */ - public BeanContextChildSupport (BeanContextChild peer) - { - if (peer == null) - { - peer = this; - } - - beanContextChildPeer = peer; - pcSupport = new PropertyChangeSupport (peer); - vcSupport = new VetoableChangeSupport (peer); - } - - /** - * Set the parent BeanContext. - *

- * - * When this Object is being added to a new BeanContext or moved - * from an old one, a non-null value will be passed in. - *

- * - * When this Object is being removed from the current - * BeanContext, setBeanContext() will - * receive the parameter null. - *

- * - * Order of events: - *

    - *
  1. - * If the new BeanContext is the same as the old - * one, nothing happens. - *
  2. - *
  3. - * If the change has not been rejected or vetoed before, call - * validatePendingSetBeanContext(). If this call - * returns false, the change is rejected and a - * PropertyVetoException is thrown. - *
  4. - *
  5. - * If the change has not been rejected or vetoed before, - * VetoableChangeEvents are fired with the name - * "beanContext", using the - * fireVetoableChange() method. If a veto - * occurs, reversion events are fired using the same method, - * the change is rejected, and the veto is rethrown. - *
  6. - *
  7. - * releaseBeanContextResources() is called. - *
  8. - *
  9. - * The change is made. - *
  10. - *
  11. - * PropertyChangeEvents are fired using the - * firePropertyChange() method. - *
  12. - *
  13. - * initializeBeanContextResources() is called. - *
  14. - *
- *

- * - * @param newBeanContext the new parent for the - * BeanContextChild, or null to - * signify removal from a tree. - * @exception PropertyVetoException if the - * BeanContextChild implementor does not - * wish to have its parent changed. - */ - public void setBeanContext(BeanContext newBeanContext) - throws PropertyVetoException - { - synchronized (beanContextChildPeer) - { - if (newBeanContext == beanContext) - return; - - if (!rejectedSetBCOnce) - { - if (!validatePendingSetBeanContext (newBeanContext)) - { - rejectedSetBCOnce = true; - throw new PropertyVetoException ("validatePendingSetBeanContext() rejected change", - new PropertyChangeEvent(beanContextChildPeer, "beanContext", beanContext, newBeanContext)); - } - - try - { - fireVetoableChange ("beanContext", beanContext, newBeanContext); - } - catch (PropertyVetoException e) - { - rejectedSetBCOnce = true; - throw e; - } - } - - releaseBeanContextResources (); - - beanContext = newBeanContext; - rejectedSetBCOnce = false; - - firePropertyChange ("beanContext", beanContext, newBeanContext); - - initializeBeanContextResources (); - } - } - - /** - * Get the parent BeanContext. - * @return the parent BeanContext. - */ - public BeanContext getBeanContext() - { - return beanContext; - } - - /** - * Get the peer (or this if there is no peer). - * @return the peer, or this if there is no peer. - */ - public BeanContextChild getBeanContextChildPeer() { - return beanContextChildPeer; - } - - /** - * Determine whether there is a peer. - * This is true iff getBeanContextChildPeer() == this. - * @return whether there is a peer. - */ - public boolean isDelegated() { - return beanContextChildPeer == this; - } - - /** - * Add a listener that will be notified when a specific property changes. - * @param propertyName the name of the property to listen on. - * @param listener the listener to listen on the property. - */ - public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { - pcSupport.addPropertyChangeListener(propertyName, listener); - } - - /** - * Remove a listener to a certain property. - * - * @param propertyName the name of the property being listened on. - * @param listener the listener listening on the property. - */ - public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { - pcSupport.removePropertyChangeListener(propertyName, listener); - } - - /** - * Add a listener that will be notified when a specific property - * change is requested (a PropertyVetoException may be thrown) as - * well as after the change is successfully made. - * - * @param propertyName the name of the property to listen on. - * @param listener the listener to listen on the property. - */ - public void addVetoableChangeListener(String propertyName, VetoableChangeListener listener) { - vcSupport.addVetoableChangeListener(propertyName, listener); - } - - /** - * Remove a listener to a certain property. - * - * @param propertyName the name of the property being listened on - * @param listener the listener listening on the property. - */ - public void removeVetoableChangeListener(String propertyName, VetoableChangeListener listener) { - vcSupport.removeVetoableChangeListener(propertyName, listener); - } - - /** - * Fire a property change. - * - * @param propertyName the name of the property that changed - * @param oldVal the old value of the property - * @param newVal the new value of the property - */ - public void firePropertyChange(String propertyName, Object oldVal, Object newVal) { - pcSupport.firePropertyChange(propertyName, oldVal, newVal); - } - - /** - * Fire a vetoable property change. - * - * @param propertyName the name of the property that changed - * @param oldVal the old value of the property - * @param newVal the new value of the property - * @exception PropertyVetoException if the change is vetoed. - */ - public void fireVetoableChange(String propertyName, Object oldVal, Object newVal) - throws PropertyVetoException { - vcSupport.fireVetoableChange(propertyName, oldVal, newVal); - } - - /** - * Called by BeanContextServices.revokeService() to indicate that a service has been revoked. - * If you have a reference to such a service, it should be - * discarded and may no longer function properly. - * getService() will no longer work on the specified - * service class after this event has been fired. - *

- * - * This method is meant to be overriden. - * BeanContextChildSupport's implementation does - * nothing. - * - * @param event the service revoked event. - * @see java.beans.beancontext.BeanContextServices#revokeService(java.lang.Class,java.beans.beancontext.BeanContextServiceProvider,boolean) - */ - public void serviceRevoked(BeanContextServiceRevokedEvent event) { - } - - /** - * Called by BeanContextServices whenever a service is made available. - *

- * - * This method is meant to be overriden. - * BeanContextChildSupport's implementation does - * nothing. - * - * @param event the service revoked event, with useful information - * about the new service. - */ - public void serviceAvailable(BeanContextServiceAvailableEvent event) { - } - - /** - * Called by setBeanContext() to determine whether the set should be rejected. - *

- * - * This method is meant to be overriden. - * BeanContextChildSupport's implementation simply - * returns true. - * - * @param newBeanContext the new parent. - * @return whether to allow the parent to be changed to the new - * value. - */ - public boolean validatePendingSetBeanContext(BeanContext newBeanContext) { - return true; - } - - /** - * Called by setBeanContext() to release resources of a what will soon no longer be the parent. - *

- * - * This method is meant to be overriden. - * BeanContextChildSupport's implementation does - * nothing. - */ - protected void releaseBeanContextResources() { - } - - /** - * Called by setBeanContext() to grab resources when the parent has been set. - *

- * - * This method is meant to be overriden. - * BeanContextChildSupport's implementation does - * nothing. - */ - protected void initializeBeanContextResources() { - } -} diff --git a/libjava/classpath/java/beans/beancontext/BeanContextContainerProxy.java b/libjava/classpath/java/beans/beancontext/BeanContextContainerProxy.java deleted file mode 100644 index 962cb5f..0000000 --- a/libjava/classpath/java/beans/beancontext/BeanContextContainerProxy.java +++ /dev/null @@ -1,63 +0,0 @@ -/* java.beans.beancontext.BeanContextContainerProxy - Copyright (C) 1999 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. */ - - -package java.beans.beancontext; - -import java.awt.Container; - -/** - * Interface for BeanContexts which wish to associate an - * AWT container with them. The proxy is provided because the - * addPropertyChangeListener() and add() methods - * would conflict with Component and Container - * if you tried to extend. - * - * @specnote It is unclear whether anything besides BeanContexts - * are allowed to implement this interface. - * @author John Keiser - * @since JDK1.2 - */ - -public interface BeanContextContainerProxy { - /** - * Get the Container associated with this BeanContext. - * @return the Container associated with this - * BeanContext. - */ - Container getContainer(); -} diff --git a/libjava/classpath/java/beans/beancontext/BeanContextEvent.java b/libjava/classpath/java/beans/beancontext/BeanContextEvent.java deleted file mode 100644 index 959d54e..0000000 --- a/libjava/classpath/java/beans/beancontext/BeanContextEvent.java +++ /dev/null @@ -1,110 +0,0 @@ -/* java.beans.beancontext.BeanContextEvent - Copyright (C) 1999 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. */ - - -package java.beans.beancontext; - -import java.util.EventObject; - -/** - * Generic superclass for events fired by BeanContexts. - * - * @author John Keiser - * @since 1.2 - */ - -public abstract class BeanContextEvent extends EventObject -{ - private static final long serialVersionUID = 7267998073569045052L; - - /** - * The BeanContext that most recently passed this - * event on. - */ - protected BeanContext propagatedFrom; - - /** - * Create a new event, from the specified BeanContext. - * propagatedFrom will be initialized to - * null. - * - * @param source the source of the event. - */ - protected BeanContextEvent(BeanContext source) - { - super(source); - } - - /** - * Get the BeanContext that originated this event. - * @return the originator of this event. - */ - public BeanContext getBeanContext() - { - return (BeanContext)getSource(); - } - - /** - * Get the most recent propagator of this event. - * If this value is null, you have received the event - * straight from the source. - * - * @return the most recent propagator of this event. - */ - public BeanContext getPropagatedFrom() - { - return propagatedFrom; - } - - /** - * Tell whether this event has been propagated. - * @return true iff getPropagatedFrom() != null. - */ - public boolean isPropagated() - { - return propagatedFrom != null; - } - - /** - * Set the most recent propagator of this event. - * @param propagator the most recent propagator of this event. - */ - public void setPropagatedFrom(BeanContext propagator) - { - propagatedFrom = propagator; - } -} diff --git a/libjava/classpath/java/beans/beancontext/BeanContextMembershipEvent.java b/libjava/classpath/java/beans/beancontext/BeanContextMembershipEvent.java deleted file mode 100644 index 77b1be4..0000000 --- a/libjava/classpath/java/beans/beancontext/BeanContextMembershipEvent.java +++ /dev/null @@ -1,114 +0,0 @@ -/* java.beans.beancontext.BeanContextMembershipEvent - Copyright (C) 1999, 2004 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. */ - - -package java.beans.beancontext; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Iterator; - -/** - * Event fired when children are added to or removed from a BeanContext. - * Whether they were added or removed depends entirely on which method - * of the listener interface was called. - * - * @author John Keiser - * @since 1.2 - * @see java.beans.beancontext.BeanContextMembershipListener - */ -public class BeanContextMembershipEvent extends BeanContextEvent { - private static final long serialVersionUID = 3499346510334590959L; - - /** - * The children that were added or removed. - */ - protected Collection children; - - /** - * Create a new membership event. - * @param context the event source. - * @param children the children added to or removed from the source. - */ - public BeanContextMembershipEvent(BeanContext context, Collection children) { - super(context); - this.children = children; - } - - /** - * Create a new membership event. - * @param context the event source. - * @param children the children added to or removed from the source. - */ - public BeanContextMembershipEvent(BeanContext context, Object[] children) { - super(context); - this.children = Arrays.asList(children); - } - - /** - * The number of children removed or added. - * @return the number of children removed or added. - */ - public int size() { - return children.size(); - } - - /** - * An iterator that will step through all the children. - * @return an iterator over all the children. - */ - public Iterator iterator() { - return children.iterator(); - } - - /** - * An array of the children. - * @return an array of the children. - */ - public Object[] toArray() { - return children.toArray(); - } - - /** - * Tell whether the Object is one of the children added or removed. - * @param child the child to check. - * @return whether the Object is added or removed. - */ - public boolean contains(Object child) { - return children.contains(child); - } -} diff --git a/libjava/classpath/java/beans/beancontext/BeanContextMembershipListener.java b/libjava/classpath/java/beans/beancontext/BeanContextMembershipListener.java deleted file mode 100644 index cdb47c8..0000000 --- a/libjava/classpath/java/beans/beancontext/BeanContextMembershipListener.java +++ /dev/null @@ -1,70 +0,0 @@ -/* java.beans.beancontext.BeanContextMembershipListener - Copyright (C) 1999 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. */ - - -package java.beans.beancontext; - -import java.util.EventListener; - -/** - * This is the interface to which BeanContextMembershipEvents are sent. - * This happens when children are added to or removed from a - * BeanContext. - * - * @author John Keiser - * @since JDK1.2 - */ - -public interface BeanContextMembershipListener extends EventListener { - /** - * When beans are added to a BeanContext, - * this method is called to fire the event. - * - * @param event the event, including which children were added. - * @see java.beans.beancontext.BeanContext#add(java.lang.Object) - */ - void childrenAdded(BeanContextMembershipEvent event); - - /** - * When beans are removed from a BeanContext, - * this method is called to fire the event. - * - * @param event the event, including which children were removed. - * @see java.beans.beancontext.BeanContext#remove(java.lang.Object) - */ - void childrenRemoved(BeanContextMembershipEvent event); -} diff --git a/libjava/classpath/java/beans/beancontext/BeanContextProxy.java b/libjava/classpath/java/beans/beancontext/BeanContextProxy.java deleted file mode 100644 index 53632e8..0000000 --- a/libjava/classpath/java/beans/beancontext/BeanContextProxy.java +++ /dev/null @@ -1,65 +0,0 @@ -/* java.beans.beancontext.BeanContextProxy - Copyright (C) 1999 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. */ - - -package java.beans.beancontext; - -/** - * Beans that wish to have a BeanContextChild or BeanContext associated with them - * but do not wish to implement those interfaces directly, can implement this interface. - *

- * - * Don't shoot yourself in the foot: if you already implement - * BeanContextChild, directly or indirectly, the whole - * workings of this package will be unpredictable because it is - * indeterminate as to whether the BeanContextChild is used - * in preference to its proxy or vice versa. - * - * @author John Keiser - * @since JDK1.2 - */ - -public interface BeanContextProxy { - /** - * Return the BeanContextChild associated with this - * Object. - * - * @return the BeanContextChild associated with this - * Object. - */ - BeanContextChild getBeanContextProxy(); -} diff --git a/libjava/classpath/java/beans/beancontext/BeanContextServiceAvailableEvent.java b/libjava/classpath/java/beans/beancontext/BeanContextServiceAvailableEvent.java deleted file mode 100644 index a2bdcdd..0000000 --- a/libjava/classpath/java/beans/beancontext/BeanContextServiceAvailableEvent.java +++ /dev/null @@ -1,97 +0,0 @@ -/* java.beans.beancontext.BeanContextServiceAvailableEvent - Copyright (C) 1999 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. */ - - -package java.beans.beancontext; - -import java.util.Iterator; - -/** - * Event fired when new services become available through a BeanContextServices. - * - * @author John Keiser - * @since JDK1.2 - * @see java.beans.beancontext.BeanContextServicesListener - */ - -public class BeanContextServiceAvailableEvent extends BeanContextEvent { - private static final long serialVersionUID = -5333985775656400778L; - - /** - * The Class representing the service which is now - * available. - */ - protected Class serviceClass; - - /** - * Create a new service available event. - * @param services the BeanContextServices through - * which the service is available. This is also the source - * of the event. - * @param serviceClass the service class that is now available. - */ - public BeanContextServiceAvailableEvent(BeanContextServices services, Class serviceClass) { - super(services); - this.serviceClass = serviceClass; - } - - /** - * Get the current service selectors of the service class. - * This is identical to getSourceAsBeanContextServices().getCurrentServiceSelectors(getServiceClass()) - * @return the current service selectors of the service class. - */ - public Iterator getCurrentServiceSelectors() { - return getSourceAsBeanContextServices().getCurrentServiceSelectors(serviceClass); - } - - /** - * Get the newly available service class. - * @return the service class. - */ - public Class getServiceClass() { - return serviceClass; - } - - /** - * Get the BeanContextServices through which the new service is available. - * @return the BeanContextServices through which the - * new service is available. - */ - public BeanContextServices getSourceAsBeanContextServices() { - return (BeanContextServices)getSource(); - } -} diff --git a/libjava/classpath/java/beans/beancontext/BeanContextServiceProvider.java b/libjava/classpath/java/beans/beancontext/BeanContextServiceProvider.java deleted file mode 100644 index 7475a61..0000000 --- a/libjava/classpath/java/beans/beancontext/BeanContextServiceProvider.java +++ /dev/null @@ -1,138 +0,0 @@ -/* java.beans.beancontext.BeanContextServiceProvider - Copyright (C) 1999 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. */ - - -package java.beans.beancontext; - -import java.util.Iterator; - -/** - * An actual factory for services. - *

- * - * It is the BeanContextServiceProvider's responsibility to - * register itself with whatever BeanContextServices object - * it wishes to provide services through using the - * addService() method. - *

- * - * If for some reason it can no longer provide services for a particular - * class, this class must invoke - * BeanContextServices.revokeService(serviceClass,this,true) - * for all the places it has registered the service. - * - * @author John Keiser - * @since JDK1.2 - */ - -public interface BeanContextServiceProvider { - /** - * Get a service. - * Called from BeanContextServices.getService(). - * - *

If the requested service class is not available, or if this - * BeanContextServiceProvider chooses not honor the - * request for some reason, then this method will return - * null.

- * - * This method may throw unchecked exceptions, so watch out. - * - * @param services the BeanContextServices that wants - * to get the service. Only weak references to this will - * be retained, and it will never be changed, only queried - * in a read-only manner. - * @param requestor the actual requestor of the service. Only - * weak references to this will be retained, and it will - * never be changed, only queried in a read-only manner. - * @param serviceClass the Class of the service being - * requested. - * @param serviceSelector a parameter to customize the service - * returned with. - * @return an instance of serviceClass (such that - * instanceof serviceClass is true), or - * null. - * @see java.beans.beancontext.BeanContextServices#getService(java.beans.beancontext.BeanContextChild,java.lang.Object,java.lang.Class,java.lang.Object,java.beans.beancontext.BeanContextServiceRevokedListener) - */ - Object getService(BeanContextServices services, Object requestor, Class serviceClass, Object serviceSelector); - - /** - * Release the service. - *

- * - * Called by BeanContextServices.releaseService(). - *

- * - * Most BeanContextServiceProviders won't have to do - * anything here. - * - * @param services the BeanContextServices that wants - * to release the service. Only weak references to this will - * be retained, and it will never be changed, only queried - * in a read-only manner. - * @param requestor the original requestor of the service. - * @param service the service to relinquish - * @see java.beans.beancontext.BeanContextServices#releaseService(java.beans.beancontext.BeanContextChild,java.lang.Object,java.lang.Object) - */ - void releaseService(BeanContextServices services, Object requestor, Object service); - - /** - * Get a list of valid service selectors for the specified service class. - * This method is called from - * BeanContextServices.getCurrentServiceSelectors(). - *

- * - * If the specified service class does not have a finite number of - * valid service selectors, it should return null. - * If it takes a general Integer parameter, for - * example, you may as well return null or the poor - * soul who called this method will be iterating all day. - *

- * - * If it has no valid service selectors, it should still return an empty - * Iterator. - * - * @param services the BeanContextServices that wants - * to get the service selectors. Only weak references to this will - * be retained, and it will never be changed, only queried - * in a read-only manner. - * @param serviceClass the service class to get selectors for. - * @return a list of valid service selectors for the service - * class, or null. - * @see java.beans.beancontext.BeanContextServices#getCurrentServiceSelectors(java.lang.Class) - */ - Iterator getCurrentServiceSelectors(BeanContextServices services, Class serviceClass); -} diff --git a/libjava/classpath/java/beans/beancontext/BeanContextServiceProviderBeanInfo.java b/libjava/classpath/java/beans/beancontext/BeanContextServiceProviderBeanInfo.java deleted file mode 100644 index 78bfc20..0000000 --- a/libjava/classpath/java/beans/beancontext/BeanContextServiceProviderBeanInfo.java +++ /dev/null @@ -1,60 +0,0 @@ -/* java.beans.beancontext.BeanContextServiceProviderBeanInfo - Copyright (C) 1999 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. */ - - -package java.beans.beancontext; - -import java.beans.BeanInfo; - -/** - * BeanContextServiceProviders implement this to provide information about all of the services they provide. - *

- * - * This is apparently so that you can import a bunch of services into a - * RAD tool and it will know about all of them and export them to the - * user in a readable manner. - * - * @author John Keiser - * @since JDK1.2 - */ -public interface BeanContextServiceProviderBeanInfo extends BeanInfo { - /** - * Get BeanInfos for all of the service classes of this BeanInfoServiceProvider. - * @return BeanInfos for all provided service classes. - */ - BeanInfo[] getServicesBeanInfo(); -} diff --git a/libjava/classpath/java/beans/beancontext/BeanContextServiceRevokedEvent.java b/libjava/classpath/java/beans/beancontext/BeanContextServiceRevokedEvent.java deleted file mode 100644 index b4f2fa8..0000000 --- a/libjava/classpath/java/beans/beancontext/BeanContextServiceRevokedEvent.java +++ /dev/null @@ -1,112 +0,0 @@ -/* java.beans.beancontext.BeanContextServiceRevokedEvent - Copyright (C) 1999, 2000 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. */ - - -package java.beans.beancontext; - -/** - * Event fired when services are revoked from a BeanContextServices. - * - * @author John Keiser - * @since JDK1.2 - * @see java.beans.beancontext.BeanContextServiceRevokedListener - */ - -public class BeanContextServiceRevokedEvent extends BeanContextEvent { - private static final long serialVersionUID = -1295543154724961754L; - - /** - * The Class representing the service which is now - * available. - */ - protected Class serviceClass; - private boolean invalidateRefs; - - /** - * Create a new service revoked event. - * @param services the BeanContextServices through - * which the service was available. This is also the source - * of the event. - * @param serviceClass the service class that is now revoked. - * @param revokeNow whether the revocation is immediate for all - * classes or just a suggestion. - */ - public BeanContextServiceRevokedEvent(BeanContextServices services, Class serviceClass, boolean revokeNow) { - super(services); - this.serviceClass = serviceClass; - invalidateRefs = revokeNow; - } - - /** - * Get the revoked service class. - * @return the service class. - */ - public Class getServiceClass() { - return serviceClass; - } - - /** - * Tell whether the revoked service class is the same as the specified class. - * Identical to getServiceClass().equals(c). - * @param c the class to compare. - * @return whether the clases are equal. - */ - public boolean isServiceClass(Class c) { - return serviceClass.equals(c); - } - - /** - * Get the BeanContextServices through which the service was available. - * @return the BeanContextServices through which the - * service was available. - */ - public BeanContextServices getSourceAsBeanContextServices() { - return (BeanContextServices)getSource(); - } - - /** - * Tell whether current instances of the revoked service are usable or not. - * This is determined by whether the service was revoked - * immediately. - * - * @return whether current instances of the revoked service are - * usable. - */ - public boolean isCurrentServiceInvalidNow() { - return invalidateRefs; - } -} diff --git a/libjava/classpath/java/beans/beancontext/BeanContextServiceRevokedListener.java b/libjava/classpath/java/beans/beancontext/BeanContextServiceRevokedListener.java deleted file mode 100644 index 11b83dd..0000000 --- a/libjava/classpath/java/beans/beancontext/BeanContextServiceRevokedListener.java +++ /dev/null @@ -1,62 +0,0 @@ -/* java.beans.beancontext.BeanContextServiceRevokedListener - Copyright (C) 1999 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. */ - - -package java.beans.beancontext; - -import java.util.EventListener; - -/** - * Listens for service revoke events. - * - * @author John Keiser - * @since JDK1.2 - */ - -public interface BeanContextServiceRevokedListener extends EventListener { - /** - * Called by BeanContextServices.revokeService() to indicate that a service has been revoked. - * If you have a reference to such a service, it should be - * discarded and may no longer function properly. - * getService() will no longer work on the specified - * service class after this event has been fired. - * - * @param event the service revoked event. - * @see java.beans.beancontext.BeanContextServices#revokeService(java.lang.Class,java.beans.beancontext.BeanContextServiceProvider,boolean) - */ - void serviceRevoked(BeanContextServiceRevokedEvent event); -} diff --git a/libjava/classpath/java/beans/beancontext/BeanContextServices.java b/libjava/classpath/java/beans/beancontext/BeanContextServices.java deleted file mode 100644 index 787618a..0000000 --- a/libjava/classpath/java/beans/beancontext/BeanContextServices.java +++ /dev/null @@ -1,216 +0,0 @@ -/* java.beans.beancontext.BeanContextServices - Copyright (C) 1999 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. */ - - -package java.beans.beancontext; - -import java.util.Iterator; -import java.util.TooManyListenersException; - -/** - * Allows a BeanContext to provide services to its children. - * - * @specnote it is unclear whether a BeanContextServices - * should delegate unhandled requests to parents. I assume so. - * @author John Keiser - * @since 1.2 - */ - -public interface BeanContextServices - extends BeanContext, BeanContextServicesListener -{ - /** - * Register a service to make it available to others. - * This class may refuse to add the service based on whatever - * information it can gather, including whether the service - * provider is trusted. - * - * @param serviceClass the service class. - * @param provider the factory that will actually provide the service. - * @return whether the service was added or not. - */ - boolean addService (Class serviceClass, - BeanContextServiceProvider provider); - - /** - * Make it so that no one else can use this service. - *

- * - * If revokeNow is false, the only - * effect of this method is to make all subsequent calls to - * getService() on this service class fail. - *

- * - * If it is true, a message is also sent out to all - * listeners on the service and all references to it are released. - * - * @param serviceClass the service class to revoke. - * @param provider the service provider providing the service class. - * @param revokeNow whether to release all current references to - * the service. - */ - void revokeService (Class serviceClass, - BeanContextServiceProvider provider, - boolean revokeNow); - - /** - * Release your copy of this service. - *

- * - * If all copies of the service's class have been relinquished by - * the requestor, the BeanContextServiceRevokedListener - * previously registered by getService() will be - * unregistered. - * - * @param requestorChild the original BeanContextChild - * requesting the service. - * @param requestor the original requestor of the service. - * @param service the service to relinquish - * @see #getService(java.beans.beancontext.BeanContextChild,java.lang.Object,java.lang.Class,java.lang.Object,java.beans.beancontext.BeanContextServiceRevokedListener) - */ - void releaseService (BeanContextChild requestorChild, Object requestor, - Object service); - - /** - * Get a service from this BeanContextServices. - *

- * - * The specified listener will be registered to receive a - * revocation notice for the specified serviceClass. One - * notification per service class per requestor object will be - * sent. - *

- * - * The listener will be unregistered when all services that were - * obtained by that requestor for that service class are released. - *

- * - * If the requested service class is not available, or if this - * BeanContextServices object chooses not honor the - * request because the service class has been revoked or for some - * other reason, then this method will return null. - *

- * - * This method may throw unchecked exceptions, so watch out. - * - * @specnote it is not specified what happens when two subsequent - * calls are made to getService() with the - * same requestor object and service class but different - * listeners. Which listener is to be notified? - * - * @param requestorChild the BeanContextChild - * associated with the requestor. Typically this will be - * the same as the requestor itself, but since any - * Object, even one outside the hierarchy, may - * make a request, this parameter is necessary. Only weak - * references to this will be retained, and it will never - * be changed, only queried in a read-only manner. - * @param requestor the actual requestor of the service. Only - * weak references to this will be retained, and it will - * never be changed, only queried in a read-only manner. - * @param serviceClass the Class of the service being - * requested. - * @param serviceSelector a parameter to customize the service - * returned with. - * @param listener a listener that will be notified if the service - * being requested is revoked. - * @return an instance of serviceClass (such that - * instanceof serviceClass is true), or - * null. - */ - Object getService (BeanContextChild requestorChild, Object requestor, - Class serviceClass, Object serviceSelector, - BeanContextServiceRevokedListener listener) - throws TooManyListenersException; - - /** - * Get a list of all service classes supported. - *

- * - * This method must synchronize on - * BeanContext.globalHierarchyLock. - * - * @return a list of all service classes supported. - * @see java.beans.beancontext.BeanContext#globalHierarchyLock - */ - Iterator getCurrentServiceClasses (); - - /** - * Get a list of valid service selectors for the specified service class. - *

- * - * If the specified service class does not have a finite number of - * valid service selectors, it should return null. - * If it takes a general Integer parameter, for - * example, you may as well return null or the poor - * soul who called this method will be iterating all day. - *

- * - * If it has no valid service selectors, it should still return an empty - * Iterator. - * - * @param serviceClass the service class to get selectors for. - * @return a list of valid service selectors for the service - * class, or null. - */ - Iterator getCurrentServiceSelectors (Class serviceClass); - - /** - * Tell whether the specified service class is available. - * Iff getService() could return a non-null value for the - * specified service, this method will return true. - * - * @param serviceClass the service class to check on. - * @return whether the specified service class is available. - */ - boolean hasService (Class serviceClass); - - /** - * Add a listener on all adds and removes of services. - * @param listener the listener to add. - */ - void addBeanContextServicesListener (BeanContextServicesListener listener); - - /** - * Remove a listener on all adds and removes of services. - * @specnote it is not certain whether this should remove this - * listener if it was specified in - * getService(). - * @param listener the listener to add. - */ - void removeBeanContextServicesListener (BeanContextServicesListener listener); -} diff --git a/libjava/classpath/java/beans/beancontext/BeanContextServicesListener.java b/libjava/classpath/java/beans/beancontext/BeanContextServicesListener.java deleted file mode 100644 index 2081080..0000000 --- a/libjava/classpath/java/beans/beancontext/BeanContextServicesListener.java +++ /dev/null @@ -1,56 +0,0 @@ -/* java.beans.beancontext.BeanContextServicesListener - Copyright (C) 1999 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. */ - - -package java.beans.beancontext; - -/** - * Listens for service add and revoke events. - * - * @author John Keiser - * @since JDK1.2 - */ - -public interface BeanContextServicesListener extends BeanContextServiceRevokedListener { - /** - * Called by BeanContextServices whenever a service is made available. - * - * @param event the service revoked event, with useful information - * about the new service. - */ - void serviceAvailable(BeanContextServiceAvailableEvent event); -} diff --git a/libjava/classpath/java/beans/beancontext/BeanContextServicesSupport.java b/libjava/classpath/java/beans/beancontext/BeanContextServicesSupport.java deleted file mode 100644 index 30b4a6f..0000000 --- a/libjava/classpath/java/beans/beancontext/BeanContextServicesSupport.java +++ /dev/null @@ -1,896 +0,0 @@ -/* BeanContextServicesSupport.java -- - Copyright (C) 2003, 2005 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. */ - - -package java.beans.beancontext; - -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Locale; -import java.util.Set; -import java.util.TooManyListenersException; - -/** - * This is a helper class for implementing a bean context which - * supplies services. It is intended to be used either by - * subclassing or by calling methods of this implementation - * from another. - * - * @author Michael Koch - * @author Andrew John Hughes (gnu_andrew@member.fsf.org) - * @since 1.2 - */ -public class BeanContextServicesSupport - extends BeanContextSupport - implements BeanContextServices -{ - private static final long serialVersionUID = -8494482757288719206L; - - protected class BCSSChild - extends BeanContextSupport.BCSChild - { - private static final long serialVersionUID = -3263851306889194873L; - - BCSSChild(Object targetChild, Object peer) - { - super(targetChild, peer); - } - } - - protected class BCSSProxyServiceProvider - implements BeanContextServiceProvider, - BeanContextServiceRevokedListener - { - private static final long serialVersionUID = 7078212910685744490L; - - private BeanContextServiceProvider provider; - - BCSSProxyServiceProvider(BeanContextServiceProvider p) - { - provider = p; - } - - public Iterator getCurrentServiceSelectors (BeanContextServices bcs, - Class serviceClass) - { - return provider.getCurrentServiceSelectors(bcs, serviceClass); - } - - public Object getService (BeanContextServices bcs, - Object requestor, - Class serviceClass, - Object serviceSelector) - { - return provider.getService(bcs, requestor, serviceClass, - serviceSelector); - } - - public void releaseService (BeanContextServices bcs, - Object requestor, - Object service) - { - provider.releaseService(bcs, requestor, service); - } - - public void serviceRevoked (BeanContextServiceRevokedEvent bcsre) - { - if (provider instanceof BeanContextServiceRevokedListener) - ((BeanContextServiceRevokedListener) provider).serviceRevoked(bcsre); - } - } - - protected static class BCSSServiceProvider - implements Serializable - { - private static final long serialVersionUID = 861278251667444782L; - - protected BeanContextServiceProvider serviceProvider; - - private Class serviceClass; - - private BCSSServiceProvider(Class serviceClass, - BeanContextServiceProvider provider) - { - this.serviceClass = serviceClass; - serviceProvider = provider; - } - - protected BeanContextServiceProvider getServiceProvider() - { - return serviceProvider; - } - - private Class getServiceClass() - { - return serviceClass; - } - - } - - /** - * Represents a request for a service. This is - * a common superclass used by the classes which maintain - * the listener-requestor and service-requestor relationships. - * - * @author Andrew John Hughes (gnu_andrew@member.fsf.org) - */ - private static abstract class Request - { - private Object requestor; - - public Request(Object requestor) - { - this.requestor = requestor; - } - - public boolean equals(Object obj) - { - if (obj instanceof Request) - { - Request req = (Request) obj; - return req.getRequestor().equals(requestor); - } - return false; - } - - public Object getRequestor() - { - return requestor; - } - - } - - /** - * Represents a relationship between a service requestor - * and a revocation listener. - * - * @author Andrew John Hughes (gnu_andrew@member.fsf.org) - */ - private static class ServiceRequest - extends Request - { - - private BeanContextServiceRevokedListener listener; - - public ServiceRequest(Object requestor, - BeanContextServiceRevokedListener listener) - { - super(requestor); - this.listener = listener; - } - - public boolean equals(Object obj) - { - if (obj instanceof ServiceRequest) - { - ServiceRequest sr = (ServiceRequest) obj; - return (super.equals(obj) && - sr.getListener().equals(listener)); - } - return false; - } - - public BeanContextServiceRevokedListener getListener() - { - return listener; - } - } - - /** - * Represents a relationship between a service requestor - * and a service instance. - * - * @author Andrew John Hughes (gnu_andrew@member.fsf.org) - */ - private static class ServiceLease - extends Request - { - - private Object service; - - public ServiceLease(Object requestor, Object service) - { - super(requestor); - this.service = service; - } - - public boolean equals(Object obj) - { - if (obj instanceof ServiceLease) - { - ServiceLease sl = (ServiceLease) obj; - return (super.equals(obj) && - sl.getService().equals(service)); - } - return false; - } - - public Object getService() - { - return service; - } - } - - /** - * A collection of listeners who receive availability - * and revocation notifications. - */ - protected transient ArrayList bcsListeners; - - protected transient BCSSProxyServiceProvider proxy; - - /** - * The number of serializable service providers. - */ - protected transient int serializable; - - /** - * A map of registered services, linking the service - * class to its associated {@link BCSSServiceProvider}. - */ - protected transient HashMap services; - - /** - * A map of children to a list of services they - * have obtained. - */ - private transient HashMap serviceUsers; - - /** - * A map of services to {@link ServiceRequest}s. - */ - private transient HashMap serviceRequests; - - /** - * A map of {@link ServiceLease}s to providers. - */ - private transient HashMap serviceLeases; - - /** - * Construct a {@link BeanContextServicesSupport} instance. - */ - public BeanContextServicesSupport () - { - super(); - } - - /** - * Construct a {@link BeanContextServicesSupport} instance. - * - * @param peer the bean context services peer (null permitted). - */ - public BeanContextServicesSupport (BeanContextServices peer) - { - super(peer); - } - - /** - * Construct a {@link BeanContextServicesSupport} instance. - * - * @param peer the bean context peer (null permitted). - * @param locale the locale (null permitted, equivalent to - * the default locale). - */ - public BeanContextServicesSupport(BeanContextServices peer, Locale locale) - { - super(peer, locale); - } - - /** - * Construct a {@link BeanContextServicesSupport} instance. - * - * @param peer the bean context peer (null permitted). - * @param locale the locale (null permitted, equivalent to - * the default locale). - * @param dtime a flag indicating whether or not the bean context is in - * design time mode. - */ - public BeanContextServicesSupport(BeanContextServices peer, Locale locale, - boolean dtime) - { - super(peer, locale, dtime); - } - - /** - * Construct a {@link BeanContextServicesSupport} instance. - * - * @param peer the bean context peer (null permitted). - * @param locale the locale (null permitted, equivalent to - * the default locale). - * @param dtime a flag indicating whether or not the bean context is in - * design time mode. - * @param visible initial value of the okToUseGui flag. - */ - public BeanContextServicesSupport(BeanContextServices peer, Locale locale, - boolean dtime, boolean visible) - { - super(peer, locale, dtime, visible); - } - - /** - * Adds a new listener for service availability and - * revocation events. - * - * @param listener the listener to add. - */ - public void addBeanContextServicesListener - (BeanContextServicesListener listener) - { - synchronized (bcsListeners) - { - if (! bcsListeners.contains(listener)) - bcsListeners.add(listener); - } - } - - /** - * Registers a new service from the specified service provider. - * The service is internally associated with the service provider - * and a BeanContextServiceAvailableEvent is fired. If - * the service is already registered, then this method instead - * returns false. This is equivalent to calling - * addService(serviceClass, bcsp, true). - * - * @param serviceClass the class of the service to be registered. - * @param bcsp the provider of the given service. - * @return true if the service was registered successfully. - * @see #addService(Class, BeanContextServiceProvider, boolean) - */ - public boolean addService (Class serviceClass, - BeanContextServiceProvider bcsp) - { - return addService(serviceClass, bcsp, true); - } - - /** - * Registers a new service from the specified service provider. - * The service is internally associated with the service provider - * and (if fireEvent is true) a - * BeanContextServiceAvailableEvent is fired. If - * the service is already registered, then this method instead - * returns false. - * - * @param serviceClass the class of the service to be registered. - * @param bcsp the provider of the given service. - * @param fireEvent true if a service availability event should - * be fired. - * @return true if the service was registered successfully. - */ - protected boolean addService (Class serviceClass, - BeanContextServiceProvider bcsp, - boolean fireEvent) - { - synchronized (globalHierarchyLock) - { - synchronized (services) - { - if (services.containsKey(serviceClass)) - return false; - services.put(serviceClass, - createBCSSServiceProvider(serviceClass, bcsp)); - if (bcsp instanceof Serializable) - ++serializable; - if (fireEvent) - fireServiceAdded(serviceClass); - return true; - } - } - } - - /** - * Deserializes any service providers which are serializable. This - * method is called by the readObject method of - * {@link BeanContextSupport} prior to deserialization of the children. - * Subclasses may envelope its behaviour in order to read further - * serialized data to the stream. - * - * @param ois the stream from which data is being deserialized. - * @throws IOException if an I/O error occurs. - * @throws ClassNotFoundException if the class of a deserialized object - * can not be found. - */ - protected void bcsPreDeserializationHook (ObjectInputStream ois) - throws ClassNotFoundException, IOException - { - serializable = ois.readInt(); - for (int a = 0; a < serializable; ++a) - { - BCSSServiceProvider bcsssp = (BCSSServiceProvider) ois.readObject(); - addService(bcsssp.getServiceClass(), bcsssp.getServiceProvider()); - } - } - - /** - * Serializes any service providers which are serializable. This - * method is called by the writeObject method of - * {@link BeanContextSupport} prior to serialization of the children. - * Subclasses may envelope its behaviour in order to add further - * serialized data to the stream. - * - * @param oos the stream to which data is being serialized. - * @throws IOException if an I/O error occurs. - */ - protected void bcsPreSerializationHook (ObjectOutputStream oos) - throws IOException - { - oos.writeInt(serializable); - synchronized (services) - { - Iterator i = services.values().iterator(); - while (i.hasNext()) - { - BCSSServiceProvider bcsssp = (BCSSServiceProvider) i.next(); - if (bcsssp.getServiceProvider() instanceof Serializable) - oos.writeObject(bcsssp); - } - } - } - - /** - * Revokes any services used by a child that has just been removed. - * The superclass ({@link BeanContextSupport}) calls this method - * when a child has just been successfully removed. Subclasses can - * extend this method in order to perform additional operations - * on child removal. - * - * @param child the child being removed. - * @param bcsc the support object for the child. - */ - protected void childJustRemovedHook (Object child, - BeanContextSupport.BCSChild bcsc) - { - if (child instanceof BeanContextChild) - { - BeanContextChild bcchild = (BeanContextChild) child; - Iterator childServices = ((List) serviceUsers.get(bcchild)).iterator(); - while (childServices.hasNext()) - releaseService(bcchild, this, childServices.next()); - serviceUsers.remove(bcchild); - } - } - - /** - * Overrides the {@link BeanContextSupport#createBCSChild} method - * so as to use a {@link BCSSChild} instead. - * - * @param targetChild the child to create the child for. - * @param peer the peer which relates to the child if a proxy is used. - * @return a new instance of {@link BCSSChild}. - */ - protected BeanContextSupport.BCSChild createBCSChild (Object targetChild, - Object peer) - { - return new BCSSChild(targetChild, peer); - } - - /** - * Provides a hook so that subclasses can replace the - * {@link BCSSServiceProvider} class, used to store registered - * service providers, with a subclass without replacing the - * {@link #addService(Class, BeanContextServiceProvider)} method. - * - * @param sc the class of service being registered. - * @param bcsp the provider of the service. - * @return a instance of {@link BCSSServiceProvider} wrapping the provider. - */ - protected BeanContextServicesSupport.BCSSServiceProvider - createBCSSServiceProvider (Class sc, BeanContextServiceProvider bcsp) - { - return new BCSSServiceProvider(sc, bcsp); - } - - /** - * Sends a BeanContextServiceAvailableEvent to all - * registered listeners. - * - * @param bcssae the event to send. - */ - protected final void fireServiceAdded (BeanContextServiceAvailableEvent bcssae) - { - synchronized (bcsListeners) - { - int size = bcsListeners.size(); - for (int i = 0; i < size; ++i) - { - BeanContextServicesListener bcsl - = (BeanContextServicesListener) bcsListeners.get(i); - bcsl.serviceAvailable(bcssae); - } - } - } - - /** - * Sends a BeanContextServiceAvailableEvent to all - * registered listeners. - * - * @param serviceClass the service that is now available. - * @see #fireServiceAdded(BeanContextServiceAvailableEvent) - */ - protected final void fireServiceAdded (Class serviceClass) - { - fireServiceAdded(new BeanContextServiceAvailableEvent(this, - serviceClass)); - } - - /** - * Sends a BeanContextServiceRevokedEvent to all - * registered listeners. - * - * @param event the event to send. - */ - protected final void fireServiceRevoked(BeanContextServiceRevokedEvent event) - { - synchronized (bcsListeners) - { - int size = bcsListeners.size(); - for (int i = 0; i < size; ++i) - { - BeanContextServicesListener bcsl - = (BeanContextServicesListener) bcsListeners.get(i); - bcsl.serviceRevoked(event); - } - List requests = (List) serviceRequests.get(event.getServiceClass()); - if (requests != null) - { - Iterator i = requests.iterator(); - while (i.hasNext()) - { - ServiceRequest r = (ServiceRequest) i.next(); - r.getListener().serviceRevoked(event); - } - } - } - } - - /** - * Sends a BeanContextServiceRevokedEvent to all - * registered listeners. - * - * @param serviceClass the service that has been revoked. - * @see #fireServiceRevoked(BeanContextServiceRevokedEvent) - */ - protected final void fireServiceRevoked (Class serviceClass, - boolean revokeNow) - { - fireServiceRevoked(new BeanContextServiceRevokedEvent(this, serviceClass, - revokeNow)); - } - - /** - * Returns the services peer given at construction time, - * or null if no peer was given. - * - * @return the {@link BeanContextServices} peer. - */ - public BeanContextServices getBeanContextServicesPeer () - { - return (BeanContextServices) beanContextChildPeer; - } - - /** - * Returns child as an instance of - * {@link BeanContextServicesListener}, or null if - * child does not implement that interface. - * - * @param child the child (null permitted). - * - * @return The child cast to {@link BeanContextServicesListener}. - */ - protected static final BeanContextServicesListener - getChildBeanContextServicesListener(Object child) - { - if (child instanceof BeanContextServicesListener) - return (BeanContextServicesListener) child; - else - return null; - } - - /** - * Returns an iterator over the currently available - * services. - * - * @return an iterator over the currently available services. - */ - public Iterator getCurrentServiceClasses () - { - synchronized (globalHierarchyLock) - { - synchronized (services) - { - return services.keySet().iterator(); - } - } - } - - /** - * Returns an iterator over the service selectors of the service - * provider for the given service. The iterator is actually - * obtained by calling the - * {@link BeanContextServiceProvider#getCurrentServiceSelectors} - * of the provider itself. If the specified service is not available, - * null is returned. - * - * @param serviceClass the service whose provider's selectors should - * be iterated over. - * @return an {@link Iterator} over the service selectors of the - * provider of the given service. - */ - public Iterator getCurrentServiceSelectors (Class serviceClass) - { - synchronized (globalHierarchyLock) - { - synchronized (services) - { - BeanContextServiceProvider bcsp - = ((BCSSServiceProvider) - services.get(serviceClass)).getServiceProvider(); - if (bcsp == null) - return null; - else - return bcsp.getCurrentServiceSelectors(this, serviceClass); - } - } - } - - /** - * Retrieves the specified service. If a provider for the service - * is registered in this context, then the request is passed on to - * the provider and the service returned. Otherwise, the request - * is delegated to a parent {@link BeanContextServices}, if possible. - * If the service can not be found at all, then null - * is returned. - * - * @param child the child obtaining the reference. - * @param requestor the requestor of the service, which may be the - * child itself. - * @param serviceClass the service being requested. - * @param serviceSelector an additional service-dependent parameter - * (may be null if not appropriate). - * @param bcsrl a listener used to notify the requestor that the service - * has since been revoked. - * @return a reference to the service requested, or null. - * @throws TooManyListenersException according to Sun's documentation. - */ - public Object getService (BeanContextChild child, Object requestor, - Class serviceClass, Object serviceSelector, - BeanContextServiceRevokedListener bcsrl) - throws TooManyListenersException - { - synchronized (globalHierarchyLock) - { - synchronized (services) - { - Object service; - BeanContextServiceProvider provider = ((BCSSServiceProvider) - services.get(serviceClass)).getServiceProvider(); - if (provider != null) - { - service = provider.getService(this, requestor, serviceClass, - serviceSelector); - List childServices = (List) serviceUsers.get(child); - if (childServices == null) - { - childServices = new ArrayList(); - serviceUsers.put(child, childServices); - } - childServices.add(serviceClass); - } - else - { - BeanContextServices peer = getBeanContextServicesPeer(); - if (peer != null) - service = peer.getService(child, requestor, serviceClass, - serviceSelector, bcsrl); - else - service = null; - } - if (service != null) - { - ServiceRequest request = new ServiceRequest(requestor, bcsrl); - Set requests = (Set) serviceRequests.get(serviceClass); - if (requests == null) - { - requests = new HashSet(); - serviceRequests.put(serviceClass, requests); - } - requests.add(request); - ServiceLease lease = new ServiceLease(requestor, service); - serviceLeases.put(lease, provider); - } - return service; - } - } - } - - /** - * Returns true if the specified service is available. - * - * @param serviceClass the service to check for. - * @return true if the service is available. - */ - public boolean hasService (Class serviceClass) - { - synchronized (globalHierarchyLock) - { - synchronized (services) - { - return services.containsKey(serviceClass); - } - } - } - - public void initialize () - { - super.initialize(); - - bcsListeners = new ArrayList(); - services = new HashMap(); - serviceUsers = new HashMap(); - serviceRequests = new HashMap(); - serviceLeases = new HashMap(); - } - - /** - * Subclasses may override this method to allocate resources - * from the nesting bean context. - */ - protected void initializeBeanContextResources() - { - /* Purposefully left empty */ - } - - /** - * Relinquishes any resources obtained from the parent context. - * Specifically, those services obtained from the parent are revoked. - * Subclasses may override this method to deallocate resources - * from the nesting bean context. - */ - protected void releaseBeanContextResources() - { - /* Purposefully left empty */ - } - - /** - * Releases the reference to a service held by a - * {@link BeanContextChild} (or an arbitrary object associated - * with it). It simply calls the appropriate method on the - * underlying provider. - * - * @param child the child who holds the reference. - * @param requestor the object that requested the reference. - * @param service the service being released. - */ - public void releaseService (BeanContextChild child, Object requestor, - Object service) - { - synchronized (globalHierarchyLock) - { - synchronized (services) - { - ServiceLease lease = new ServiceLease(requestor, service); - BeanContextServiceProvider provider = (BeanContextServiceProvider) - serviceLeases.get(lease); - if (provider != null) - provider.releaseService(this, requestor, service); - else - { - BeanContextServices peer = getBeanContextServicesPeer(); - if (peer != null) - peer.releaseService(child, requestor, service); - } - serviceLeases.remove(lease); - } - } - } - - public void removeBeanContextServicesListener - (BeanContextServicesListener listener) - { - synchronized (bcsListeners) - { - bcsListeners.remove(listener); - } - } - - /** - * Revokes the given service. A {@link BeanContextServiceRevokedEvent} is - * emitted to all registered {@link BeanContextServiceRevokedListener}s - * and {@link BeanContextServiceListener}s. If revokeCurrentServicesNow - * is true, termination of the service is immediate. Otherwise, prior - * acquisitions of the service by requestors remain valid. - * - * @param serviceClass the service to revoke. - * @param bcsp the provider of the revoked service. - * @param revokeCurrentServicesNow true if this is an exceptional circumstance - * where service should be immediately revoked. - */ - public void revokeService (Class serviceClass, BeanContextServiceProvider bcsp, - boolean revokeCurrentServicesNow) - { - synchronized (globalHierarchyLock) - { - synchronized (services) - { - fireServiceRevoked(serviceClass, revokeCurrentServicesNow); - services.remove(serviceClass); - if (bcsp instanceof Serializable) - --serializable; - } - } - } - - public void serviceAvailable (BeanContextServiceAvailableEvent bcssae) - { - synchronized (services) - { - Class klass = bcssae.getServiceClass(); - if (services.containsKey(klass)) - return; - Iterator it = bcsChildren(); - while (it.hasNext()) - { - Object obj = it.next(); - if (obj instanceof BeanContextServices) - ((BeanContextServices) obj).serviceAvailable(bcssae); - } - } - } - - public void serviceRevoked (BeanContextServiceRevokedEvent bcssre) - { - synchronized (services) - { - Class klass = bcssre.getServiceClass(); - if (services.containsKey(klass)) - return; - Iterator it = bcsChildren(); - while (it.hasNext()) - { - Object obj = it.next(); - if (obj instanceof BeanContextServices) - ((BeanContextServices) obj).serviceRevoked(bcssre); - } - } - } -} diff --git a/libjava/classpath/java/beans/beancontext/BeanContextSupport.java b/libjava/classpath/java/beans/beancontext/BeanContextSupport.java deleted file mode 100644 index fdae387..0000000 --- a/libjava/classpath/java/beans/beancontext/BeanContextSupport.java +++ /dev/null @@ -1,1079 +0,0 @@ -/* 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. */ - - -package java.beans.beancontext; - -import java.beans.Beans; -import java.beans.DesignMode; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.beans.PropertyVetoException; -import java.beans.VetoableChangeListener; -import java.beans.Visibility; -import java.io.IOException; -import java.io.InputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.io.Serializable; -import java.net.URL; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Locale; - -/** - * 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. - * - * @author Michael Koch - * @author Andrew John Hughes (gnu_andrew@member.fsf.org) - * @since 1.2 - */ -public class BeanContextSupport extends BeanContextChildSupport - implements BeanContext, Serializable, PropertyChangeListener, - VetoableChangeListener -{ - private static final long serialVersionUID = -4879613978649577204L; - - /** - * Deserializes a stored bean context. Hook methods are provided to allow - * subclasses to perform their own deserialization after the default - * deserialization but prior to the deserialization of the children. Note that - * {@link #readChildren(ObjectInputStream)} is only called if there - * is no distinct peer. If there is, the peer is expected to call - * the method instead. - * - * @param s the stream to deserialize. - * @throws ClassNotFoundException if the class of an object being deserialized - * could not be found. - * @throws IOException if an I/O error occurs. - */ - private void readObject (ObjectInputStream s) - throws ClassNotFoundException, IOException - { - s.defaultReadObject(); - bcsPreDeserializationHook(s); - BeanContext peer = getBeanContextPeer(); - if (peer == null || peer == this) - readChildren(s); - } - - /** - * Serializes a bean context. Hook methods are provided to allow - * subclasses to perform their own serialization after the default - * serialization but prior to serialization of the children. Note that - * {@link #writeChildren(ObjectOutputStream)} is only called if there - * is no distinct peer. If there is, the peer is expected to call - * the method instead. - * - * @param s the stream to serialize. - * @throws ClassNotFoundException if the class of an object being deserialized - * could not be found. - * @throws IOException if an I/O error occurs. - */ - private void writeObject (ObjectOutputStream s) - throws ClassNotFoundException, IOException - { - serializing = true; - s.defaultWriteObject(); - bcsPreSerializationHook(s); - BeanContext peer = getBeanContextPeer(); - if (peer == null || peer == this) - writeChildren(s); - serializing = false; - } - - protected class BCSChild implements Serializable - { - private static final long serialVersionUID = -5815286101609939109L; - - private Object targetChild; - private Object peer; - - BCSChild(Object targetChild, Object peer) - { - this.targetChild = targetChild; - this.peer = peer; - } - - private Object getTargetChild() - { - return targetChild; - } - - } - - protected static final class BCSIterator implements Iterator - { - private Iterator child; - - BCSIterator(Iterator child) - { - this.child = child; - } - - public boolean hasNext () - { - return child.hasNext(); - } - - public Object next () - { - return child.next(); - } - - public void remove () - { - // This must be a noop remove operation. - } - } - - protected transient ArrayList bcmListeners; - - protected transient HashMap children; - - protected transient boolean designTime; - - protected transient Locale locale; - - protected transient boolean okToUseGui; - - private transient boolean serializing; - - /** - * Construct a BeanContextSupport instance. - */ - public BeanContextSupport () - { - this (null, null, false, true); - } - - /** - * Construct a BeanContextSupport instance. - * - * @param peer the bean context peer (null permitted). - */ - public BeanContextSupport(BeanContext peer) - { - this (peer, null, false, true); - } - - /** - * Construct a BeanContextSupport instance. - * - * @param peer the bean context peer (null permitted). - * @param locale the locale (null permitted, equivalent to - * the default locale). - */ - public BeanContextSupport (BeanContext peer, Locale locale) - { - this (peer, locale, false, true); - } - - /** - * Construct a BeanContextSupport instance. - * - * @param peer the bean context peer (null permitted). - * @param locale the locale (null permitted, equivalent to - * the default locale). - * @param dtime a flag indicating whether or not the bean context is in - * design time mode. - */ - public BeanContextSupport (BeanContext peer, Locale locale, boolean dtime) - { - this (peer, locale, dtime, true); - } - - /** - * Construct a BeanContextSupport instance. - * - * @param peer the bean context peer (null permitted). - * @param locale the locale (null permitted, equivalent to - * the default locale). - * @param dtime a flag indicating whether or not the bean context is in - * design time mode. - * @param visible initial value of the okToUseGui flag. - */ - public BeanContextSupport (BeanContext peer, Locale locale, boolean dtime, - boolean visible) - { - super(peer); - - this.locale = locale == null ? Locale.getDefault() : locale; - designTime = dtime; - okToUseGui = visible; - - initialize (); - } - - /** - *

- * 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. - *

- * - * @param targetChild the child to add. - * @return false if the child has already been added. - * @throws IllegalArgumentException if the child is null. - * @throws IllegalStateException if the child vetos the setting - * of its context. - */ - public boolean add(Object targetChild) - { - synchronized (globalHierarchyLock) - { - if (targetChild == null) - throw new IllegalArgumentException(); - - BCSChild child; - synchronized (children) - { - if (children.containsKey(targetChild) - || ! validatePendingAdd(targetChild)) - return false; - child = createBCSChild(targetChild, beanContextChildPeer); - children.put(targetChild, child); - } - synchronized (targetChild) - { - BeanContextChild bcChild = null; - if (targetChild instanceof BeanContextChild) - bcChild = (BeanContextChild) targetChild; - if (targetChild instanceof BeanContextProxy) - bcChild = ((BeanContextProxy) targetChild).getBeanContextProxy(); - if (bcChild != null) - try - { - bcChild.setBeanContext(this); - bcChild.addVetoableChangeListener("beanContext", this); - bcChild.addPropertyChangeListener("beanContext", this); - } - catch (PropertyVetoException e) - { - synchronized (children) - { - children.remove(targetChild); - } - throw new IllegalStateException("The child refused to " + - "associate itself with " + - "this context.", e); - } - if (targetChild instanceof Visibility) - { - Visibility visibleChild = (Visibility) targetChild; - if (okToUseGui) - visibleChild.okToUseGui(); - else - visibleChild.dontUseGui(); - } - childJustAddedHook(targetChild, child); - } - fireChildrenAdded(new BeanContextMembershipEvent(this, - new Object[]{ targetChild })); - return true; - } - } - - public boolean addAll (Collection c) - { - // Intentionally throws an exception. - throw new UnsupportedOperationException(); - } - - public void addBeanContextMembershipListener - (BeanContextMembershipListener listener) - { - synchronized (bcmListeners) - { - if (! bcmListeners.contains(listener)) - bcmListeners.add(listener); - } - } - - /** - * Returns true if this bean needs a GUI - * but is being prevented from using one. - * - * @return true if needsGui() - * is true but the bean has been - * told not to use it. - */ - public boolean avoidingGui() - { - return needsGui() && (!okToUseGui); - } - - protected Iterator bcsChildren () - { - synchronized (children) - { - return new BCSIterator(children.values().iterator()); - } - } - - /** - * Subclasses may use this method to perform their own deserialization - * after the default deserialization process has taken place, but - * prior to the deserialization of the children. It should not - * be used to replace the implementation of readObject - * in the subclass. - * - * @param ois the input stream. - * @throws ClassNotFoundException if the class of an object being deserialized - * could not be found. - * @throws IOException if an I/O error occurs. - */ - protected void bcsPreDeserializationHook (ObjectInputStream ois) - throws ClassNotFoundException, IOException - { - /* Purposefully left empty */ - } - - /** - * Subclasses may use this method to perform their own serialization - * after the default serialization process has taken place, but - * prior to the serialization of the children. It should not - * be used to replace the implementation of writeObject - * in the subclass. - * - * @param oos the output stream. - * @throws IOException if an I/O error occurs. - */ - protected void bcsPreSerializationHook (ObjectOutputStream oos) - throws IOException - { - /* Purposefully left empty */ - } - - /** - * Called when a child is deserialized. - * - * @param child the deserialized child. - * @param bcsc the deserialized context wrapper for the child. - */ - protected void childDeserializedHook (Object child, BeanContextSupport.BCSChild bcsc) - { - // Do nothing in the base class. - } - - protected void childJustAddedHook (Object child, BeanContextSupport.BCSChild bcsc) - { - // Do nothing in the base class. - } - - protected void childJustRemovedHook (Object child, BeanContextSupport.BCSChild bcsc) - { - // Do nothing in the base class. - } - - protected static final boolean classEquals (Class first, Class second) - { - // Lame function! - return (first == second || first.getName().equals(second.getName())); - } - - public void clear () - { - // This is the right thing to do. - // The JDK docs are really bad here. - throw new UnsupportedOperationException(); - } - - public boolean contains (Object o) - { - synchronized (children) - { - return children.containsKey(o); - } - } - - public boolean containsAll (Collection c) - { - synchronized (children) - { - Iterator it = c.iterator(); - while (it.hasNext()) - if (! children.containsKey(it.next())) - return false; - } - return true; - } - - public boolean containsKey (Object o) - { - synchronized (children) - { - return children.containsKey(o); - } - } - - protected final Object[] copyChildren () - { - synchronized (children) - { - return children.keySet().toArray(); - } - } - - protected BeanContextSupport.BCSChild createBCSChild (Object targetChild, Object peer) - { - return new BCSChild(targetChild, peer); - } - - /** - * Deserializes objects (written by {@link #serialize(ObjectOutputStream, - * Collection)}) and adds them to the specified collection. - * - * @param ois the input stream (null not permitted). - * @param coll the collection to add the objects to (null not - * permitted). - * - * @throws ClassNotFoundException - * @throws IOException - * - * @see #serialize(ObjectOutputStream, Collection) - */ - protected final void deserialize (ObjectInputStream ois, Collection coll) - throws ClassNotFoundException, IOException - { - int itemCount = ois.readInt(); - for (int i = 0; i < itemCount; i++) - coll.add(ois.readObject()); - } - - /** - * Informs this bean that is should not make - * use of the GUI. - */ - public void dontUseGui() - { - okToUseGui = false; - } - - protected final void fireChildrenAdded (BeanContextMembershipEvent bcme) - { - synchronized (bcmListeners) - { - Iterator it = bcmListeners.iterator(); - while (it.hasNext()) - { - BeanContextMembershipListener l - = (BeanContextMembershipListener) it.next(); - l.childrenAdded(bcme); - } - } - } - - protected final void fireChildrenRemoved (BeanContextMembershipEvent bcme) - { - synchronized (bcmListeners) - { - Iterator it = bcmListeners.iterator(); - while (it.hasNext()) - { - BeanContextMembershipListener l - = (BeanContextMembershipListener) it.next(); - l.childrenRemoved(bcme); - } - } - } - - /** - * Returns the bean context peer. - * - * @return The bean context peer. - * - * @see BeanContextChildSupport#beanContextChildPeer - */ - public BeanContext getBeanContextPeer() - { - return (BeanContext) beanContextChildPeer; - } - - /** - * Returns the {@link BeanContextChild} implementation for the given child. - * - * @param child the child (null permitted). - * - * @return The bean context child. - * - * @throws IllegalArgumentException if child implements both - * the {@link BeanContextChild} and {@link BeanContextProxy} interfaces. - */ - protected static final BeanContextChild getChildBeanContextChild(Object child) - { - if (child == null) - return null; - if (child instanceof BeanContextChild && child instanceof BeanContextProxy) - throw new IllegalArgumentException("Child cannot implement " - + "BeanContextChild and BeanContextProxy simultaneously."); - if (child instanceof BeanContextChild) - return (BeanContextChild) child; - if (child instanceof BeanContextProxy) - return ((BeanContextProxy) child).getBeanContextProxy(); - return null; - } - - /** - * Returns child as an instance of - * {@link BeanContextMembershipListener}, or null if - * child does not implement that interface. - * - * @param child the child (null permitted). - * - * @return The child cast to {@link BeanContextMembershipListener}. - */ - protected static final BeanContextMembershipListener - getChildBeanContextMembershipListener(Object child) - { - if (child instanceof BeanContextMembershipListener) - return (BeanContextMembershipListener) child; - else - return null; - } - - /** - * Returns child as an instance of - * {@link PropertyChangeListener}, or null if child - * does not implement that interface. - * - * @param child the child (null permitted). - * - * @return The child cast to {@link PropertyChangeListener}. - */ - protected static final PropertyChangeListener getChildPropertyChangeListener( - Object child) - { - if (child instanceof PropertyChangeListener) - return (PropertyChangeListener) child; - else - return null; - } - - /** - * Returns child as an instance of {@link Serializable}, or - * null if child does not implement that - * interface. - * - * @param child the child (null permitted). - * - * @return The child cast to {@link Serializable}. - */ - protected static final Serializable getChildSerializable(Object child) - { - if (child instanceof Serializable) - return (Serializable) child; - else - return null; - } - - /** - * Returns child as an instance of - * {@link VetoableChangeListener}, or null if child - * does not implement that interface. - * - * @param child the child (null permitted). - * - * @return The child cast to {@link VetoableChangeListener}. - */ - protected static final VetoableChangeListener getChildVetoableChangeListener( - Object child) - { - if (child instanceof VetoableChangeListener) - return (VetoableChangeListener) child; - else - return null; - } - - /** - * Returns child as an instance of {@link Visibility}, or - * null if child does not implement that interface. - * - * @param child the child (null permitted). - * - * @return The child cast to {@link Visibility}. - */ - protected static final Visibility getChildVisibility(Object child) - { - if (child instanceof Visibility) - return (Visibility) child; - else - return null; - } - - public Locale getLocale () - { - return locale; - } - - public URL getResource (String name, BeanContextChild bcc) - { - if (! contains(bcc)) - throw new IllegalArgumentException("argument not a child"); - ClassLoader loader = bcc.getClass().getClassLoader(); - return (loader == null ? ClassLoader.getSystemResource(name) - : loader.getResource(name)); - } - - public InputStream getResourceAsStream (String name, BeanContextChild bcc) - { - if (! contains(bcc)) - throw new IllegalArgumentException("argument not a child"); - ClassLoader loader = bcc.getClass().getClassLoader(); - return (loader == null ? ClassLoader.getSystemResourceAsStream(name) - : loader.getResourceAsStream(name)); - } - - protected void initialize () - { - bcmListeners = new ArrayList(); - children = new HashMap(); - } - - /** - * This is a convenience method for instantiating a bean inside this - * context. It delegates to the appropriate method in - * java.beans.Beans using the context's classloader. - * - * @param beanName the name of the class of bean to instantiate. - * @throws IOException if an I/O error occurs in loading the class. - * @throws ClassNotFoundException if the class, beanName, - * can not be found. - */ - public Object instantiateChild (String beanName) - throws IOException, ClassNotFoundException - { - return Beans.instantiate(getClass().getClassLoader(), beanName, this); - } - - /** - * Returns true if the BeanContext is in - * design time mode, and false if it is in runtime mode. - * - * @return A boolean. - * - * @see #setDesignTime(boolean) - */ - public boolean isDesignTime() - { - return designTime; - } - - /** - * Returns true if this bean context has no children. - * - * @return true if there are no children. - */ - public boolean isEmpty () - { - synchronized (children) - { - return children.isEmpty(); - } - } - - /** - * Returns true if the bean context is in the process - * of being serialized. - * - * @return true if the context is being serialized. - */ - public boolean isSerializing() - { - return serializing; - } - - public Iterator iterator () - { - synchronized (children) - { - return children.keySet().iterator(); - } - } - - /** - * Returns false as this bean does not a - * GUI for its operation. - * - * @return false - */ - public boolean needsGui() - { - return false; - } - - /** - * Informs this bean that it is okay to make use of - * the GUI. - */ - public void okToUseGui () - { - okToUseGui = true; - } - - /** - * 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. - * - * @param pce the property change event. - */ - public void propertyChange (PropertyChangeEvent pce) - { - if (pce.getNewValue() != this) - remove(pce.getSource(), false); - } - - /** - * Deserializes the children using the - * {@link #deserialize(ObjectInputStream, Collection} method - * and then calls {@link childDeserializedHook(Object, BCSChild)} - * for each child deserialized. - * - * @param ois the input stream. - * @throws IOException if an I/O error occurs. - */ - public final void readChildren (ObjectInputStream ois) - throws IOException, ClassNotFoundException - { - List temp = new ArrayList(); - deserialize(ois, temp); - Iterator i = temp.iterator(); - synchronized (globalHierarchyLock) - { - synchronized (children) - { - while (i.hasNext()) - { - BCSChild bcs = (BCSChild) i.next(); - childDeserializedHook(bcs.getTargetChild(), bcs); - children.put(bcs.getTargetChild(), bcs); - } - } - } - } - - /** - * 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). - * - * @param targetChild the child to remove. - */ - public boolean remove (Object targetChild) - { - return remove(targetChild, true); - } - - /** - *

- * 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. - *

- * - * @param targetChild the child to remove. - * @param callChildSetBC true if the setBeanContext() - * method of the child should be called. - * @return false if the child doesn't exist. - * @throws IllegalArgumentException if the child is null. - * @throws IllegalStateException if the child vetos the setting - * of its context. - */ - protected boolean remove (Object targetChild, boolean callChildSetBC) - { - synchronized (globalHierarchyLock) - { - if (targetChild == null) - throw new IllegalArgumentException(); - - BCSChild child; - synchronized (children) - { - if (!children.containsKey(targetChild) - || !validatePendingRemove(targetChild)) - return false; - child = (BCSChild) children.remove(targetChild); - } - synchronized (targetChild) - { - BeanContextChild bcChild = null; - if (targetChild instanceof BeanContextChild) - bcChild = (BeanContextChild) targetChild; - if (targetChild instanceof BeanContextProxy) - bcChild = ((BeanContextProxy) targetChild).getBeanContextProxy(); - if (bcChild != null) - try - { - if (callChildSetBC) - bcChild.setBeanContext(null); - bcChild.removeVetoableChangeListener("beanContext", this); - bcChild.removePropertyChangeListener("beanContext", this); - } - catch (PropertyVetoException e) - { - synchronized (children) - { - children.put(targetChild, child); - } - throw new IllegalStateException("The child refused to " + - "disassociate itself with " + - "this context.", e); - } - childJustRemovedHook(targetChild, child); - } - fireChildrenRemoved(new BeanContextMembershipEvent(this, - new Object[]{ targetChild })); - return true; - } - } - - public boolean removeAll (Collection c) - { - // Intentionally throws an exception. - throw new UnsupportedOperationException(); - } - - public void removeBeanContextMembershipListener (BeanContextMembershipListener bcml) - { - synchronized (bcmListeners) - { - bcmListeners.remove(bcml); - } - } - - public boolean retainAll (Collection c) - { - // Intentionally throws an exception. - throw new UnsupportedOperationException(); - } - - /** - * Writes the items in the collection to the specified output stream. Items - * in the collection that are not instances of {@link Serializable} - * (this includes null) are simply ignored. - * - * @param oos the output stream (null not permitted). - * @param coll the collection (null not permitted). - * - * @throws IOException - * - * @see #deserialize(ObjectInputStream, Collection) - */ - protected final void serialize(ObjectOutputStream oos, Collection coll) - throws IOException - { - Object[] items = coll.toArray(); - int itemCount = 0; - for (int i = 0; i < items.length; i++) - { - if (items[i] instanceof Serializable) - itemCount++; - } - oos.writeInt(itemCount); - for (int i = 0; i < items.length; i++) - { - if (items[i] instanceof Serializable) - oos.writeObject(items[i]); - } - } - - /** - * Sets the flag that indicates whether or not the - * BeanContext is in design mode. If the flag changes - * value, a {@link PropertyChangeEvent} (with the property name 'designMode') - * is sent to registered listeners. Note that the property name used here - * does NOT match the specification in the {@link DesignMode} interface, we - * match the reference implementation instead - see bug parade entry 4295174. - * - * @param dtime the new value for the flag. - * - * @see #isDesignTime() - */ - public void setDesignTime(boolean dtime) - { - boolean save = designTime; - designTime = dtime; - // note that we use the same property name as Sun's implementation, - // even though this is a known bug: see bug parade entry 4295174 - firePropertyChange("designMode", Boolean.valueOf(save), - Boolean.valueOf(dtime)); - } - - public void setLocale (Locale newLocale) - throws PropertyVetoException - { - if (newLocale == null || locale == newLocale) - return; - fireVetoableChange("locale", locale, newLocale); - Locale oldLocale = locale; - locale = newLocale; - firePropertyChange("locale", oldLocale, newLocale); - } - - public int size () - { - synchronized (children) - { - return children.size(); - } - } - - /** - * Returns an array containing the children of this BeanContext. - * - * @return An array containing the children. - */ - public Object[] toArray() - { - synchronized (children) - { - return children.keySet().toArray(); - } - } - - /** - * Populates, then returns, the supplied array with the children of this - * BeanContext. If the array is too short to hold the - * children, a new array is allocated and returned. If the array is too - * long, it is padded with null items at the end. - * - * @param array an array to populate (null not permitted). - */ - public Object[] toArray(Object[] array) - { - synchronized (children) - { - return children.keySet().toArray(array); - } - } - - protected boolean validatePendingAdd (Object targetChild) - { - return true; - } - - protected boolean validatePendingRemove (Object targetChild) - { - return true; - } - - /** - * Subclasses may use this method to veto changes arising - * from the children of this context. - * - * @param pce the vetoable property change event fired. - */ - public void vetoableChange (PropertyChangeEvent pce) - throws PropertyVetoException - { - /* Purposefully left empty */ - } - - /** - * Serializes the children using the - * {@link #serialize(ObjectOutputStream, Collection} method. - * - * @param oos the output stream. - * @throws IOException if an I/O error occurs. - */ - public final void writeChildren (ObjectOutputStream oos) - throws IOException - { - synchronized (children) - { - serialize(oos, children.values()); - } - } - -} diff --git a/libjava/classpath/java/beans/beancontext/package.html b/libjava/classpath/java/beans/beancontext/package.html deleted file mode 100644 index 55e3bd7..0000000 --- a/libjava/classpath/java/beans/beancontext/package.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - -GNU Classpath - java.beans.beancontext - - -

Containers and execution environments for beans.

- - - -- cgit v1.1