1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
/* * @(#)BeanContextServices.java 1.10 03/12/19 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package java.beans.beancontext; import java.util.Iterator; import java.util.TooManyListenersException; import java.beans.beancontext.BeanContext; import java.beans.beancontext.BeanContextServiceProvider; import java.beans.beancontext.BeanContextServicesListener; /** * <p> * The BeanContextServices interface provides a mechanism for a BeanContext * to expose generic "services" to the BeanContextChild objects within. * </p> */ public interface BeanContextServices extends BeanContext, BeanContextServicesListener { /** * Adds a service to this BeanContext. * <code>BeanContextServiceProvider</code>s call this method * to register a particular service with this context. * If the service has not previously been added, the * <code>BeanContextServices</code> associates * the service with the <code>BeanContextServiceProvider</code> and * fires a <code>BeanContextServiceAvailableEvent</code> to all * currently registered <code>BeanContextServicesListeners</code>. * The method then returns <code>true</code>, indicating that * the addition of the service was successful. * If the given service has already been added, this method * simply returns <code>false</code>. * @param serviceClass the service to add * @param serviceProvider the <code>BeanContextServiceProvider</code> * associated with the service */ boolean addService(Class serviceClass, BeanContextServiceProvider serviceProvider); /** * BeanContextServiceProviders wishing to remove * a currently registered service from this context * may do so via invocation of this method. Upon revocation of * the service, the <code>BeanContextServices</code> fires a * <code>BeanContextServiceRevokedEvent</code> to its * list of currently registered * <code>BeanContextServiceRevokedListeners</code> and * <code>BeanContextServicesListeners</code>. * @param serviceClass the service to revoke from this BeanContextServices * @param serviceProvider the BeanContextServiceProvider associated with * this particular service that is being revoked * @param revokeCurrentServicesNow a value of <code>true</code> * indicates an exceptional circumstance where the * <code>BeanContextServiceProvider</code> or * <code>BeanContextServices</code> wishes to immediately * terminate service to all currently outstanding references * to the specified service. */ void revokeService(Class serviceClass, BeanContextServiceProvider serviceProvider, boolean revokeCurrentServicesNow); /** * Reports whether or not a given service is * currently available from this context. * @param serviceClass the service in question * @return true if the service is available */ boolean hasService(Class serviceClass); /** * A <code>BeanContextChild</code>, or any arbitrary object * associated with a <code>BeanContextChild</code>, may obtain * a reference to a currently registered service from its * nesting <code>BeanContextServices</code> * via invocation of this method. When invoked, this method * gets the service by calling the getService() method on the * underlying <code>BeanContextServiceProvider</code>. * @param child the <code>BeanContextChild</code> * associated with this request * @param requestor the object requesting the service * @param serviceClass class of the requested service * @param serviceSelector the service dependent parameter * @param bcsrl the * <code>BeanContextServiceRevokedListener</code> to notify * if the service should later become revoked * @throws TooManyListenersException * @return a reference to this context's named * Service as requested or <code>null</code> */ Object getService(BeanContextChild child, Object requestor, Class serviceClass, Object serviceSelector, BeanContextServiceRevokedListener bcsrl) throws TooManyListenersException; /** * Releases a <code>BeanContextChild</code>'s * (or any arbitrary object associated with a BeanContextChild) * reference to the specified service by calling releaseService() * on the underlying <code>BeanContextServiceProvider</code>. * @param child the <code>BeanContextChild</code> * @param requestor the requestor * @param service the service */ void releaseService(BeanContextChild child, Object requestor, Object service); /** * Gets the currently available services for this context. * @return an <code>Iterator</code> consisting of the * currently available services */ Iterator getCurrentServiceClasses(); /** * Gets the list of service dependent service parameters * (Service Selectors) for the specified service, by * calling getCurrentServiceSelectors() on the * underlying BeanContextServiceProvider. * @param serviceClass the specified service * @return the currently available service selectors * for the named serviceClass */ Iterator getCurrentServiceSelectors(Class serviceClass); /** * Adds a <code>BeanContextServicesListener</code> to this BeanContext * @param bcsl the <code>BeanContextServicesListener</code> to add */ void addBeanContextServicesListener(BeanContextServicesListener bcsl); /** * Removes a <code>BeanContextServicesListener</code> * from this <code>BeanContext</code> * @param bcsl the <code>BeanContextServicesListener</code> * to remove from this context */ void removeBeanContextServicesListener(BeanContextServicesListener bcsl); }