src/share/classes/java/beans/beancontext/BeanContextServicesSupport.java
Print this page
@@ -127,13 +127,12 @@
* call it directly.
*/
public void initialize() {
super.initialize();
-
- services = new HashMap(serializable + 1);
- bcsListeners = new ArrayList(1);
+ services = new HashMap<>(serializable + 1);
+ bcsListeners = new ArrayList<>(1);
}
/**
* Gets the <tt>BeanContextServices</tt> associated with this
* <tt>BeanContextServicesSupport</tt>.
@@ -167,11 +166,11 @@
class BCSSCServiceClassRef {
// create an instance of a service ref
- BCSSCServiceClassRef(Class sc, BeanContextServiceProvider bcsp, boolean delegated) {
+ BCSSCServiceClassRef(Class<?> sc, BeanContextServiceProvider bcsp, boolean delegated) {
super();
serviceClass = sc;
if (delegated)
@@ -181,11 +180,11 @@
}
// add a requestor and assoc listener
void addRequestor(Object requestor, BeanContextServiceRevokedListener bcsrl) throws TooManyListenersException {
- BeanContextServiceRevokedListener cbcsrl = (BeanContextServiceRevokedListener)requestors.get(requestor);
+ BeanContextServiceRevokedListener cbcsrl = requestors.get(requestor);
if (cbcsrl != null && !cbcsrl.equals(bcsrl))
throw new TooManyListenersException();
requestors.put(requestor, bcsrl);
@@ -198,11 +197,11 @@
}
// check a requestors listener
void verifyRequestor(Object requestor, BeanContextServiceRevokedListener bcsrl) throws TooManyListenersException {
- BeanContextServiceRevokedListener cbcsrl = (BeanContextServiceRevokedListener)requestors.get(requestor);
+ BeanContextServiceRevokedListener cbcsrl = requestors.get(requestor);
if (cbcsrl != null && !cbcsrl.equals(bcsrl))
throw new TooManyListenersException();
}
@@ -228,19 +227,22 @@
if (!current.equals(bcsp))
throw new UnsupportedOperationException("existing service reference obtained from different BeanContextServiceProvider not supported");
}
- Iterator cloneOfEntries() {
- return ((HashMap)requestors.clone()).entrySet().iterator();
+ @SuppressWarnings("unchecked") // Cast from clone
+ Iterator<Map.Entry<Object, BeanContextServiceRevokedListener>> cloneOfEntries() {
+ return ((HashMap<Object, BeanContextServiceRevokedListener>)requestors.clone()).entrySet().iterator();
}
- Iterator entries() { return requestors.entrySet().iterator(); }
+ Iterator<Map.Entry<Object, BeanContextServiceRevokedListener>> entries() {
+ return requestors.entrySet().iterator();
+ }
boolean isEmpty() { return requestors.isEmpty(); }
- Class getServiceClass() { return serviceClass; }
+ Class<?> getServiceClass() { return serviceClass; }
BeanContextServiceProvider getServiceProvider() {
return serviceProvider;
}
@@ -279,19 +281,19 @@
/*
* fields
*/
- Class serviceClass;
+ Class<?> serviceClass;
BeanContextServiceProvider serviceProvider;
int serviceRefs;
BeanContextServiceProvider delegateProvider; // proxy
int delegateRefs;
- HashMap requestors = new HashMap(1);
+ HashMap<Object, BeanContextServiceRevokedListener> requestors = new HashMap<>(1);
}
/*
* per service reference info ...
*/
@@ -320,20 +322,20 @@
BCSSChild(Object bcc, Object peer) { super(bcc, peer); }
// note usage of service per requestor, per service
- synchronized void usingService(Object requestor, Object service, Class serviceClass, BeanContextServiceProvider bcsp, boolean isDelegated, BeanContextServiceRevokedListener bcsrl) throws TooManyListenersException, UnsupportedOperationException {
+ synchronized void usingService(Object requestor, Object service, Class<?> serviceClass, BeanContextServiceProvider bcsp, boolean isDelegated, BeanContextServiceRevokedListener bcsrl) throws TooManyListenersException, UnsupportedOperationException {
// first, process mapping from serviceClass to requestor(s)
BCSSCServiceClassRef serviceClassRef = null;
if (serviceClasses == null)
- serviceClasses = new HashMap(1);
+ serviceClasses = new HashMap<>(1);
else
- serviceClassRef = (BCSSCServiceClassRef)serviceClasses.get(serviceClass);
+ serviceClassRef = serviceClasses.get(serviceClass);
if (serviceClassRef == null) { // new service being used ...
serviceClassRef = new BCSSCServiceClassRef(serviceClass, bcsp, isDelegated);
serviceClasses.put(serviceClass, serviceClassRef);
@@ -346,24 +348,24 @@
serviceClassRef.addRef(isDelegated);
// now handle mapping from requestor to service(s)
BCSSCServiceRef serviceRef = null;
- Map services = null;
+ Map<Object , BCSSCServiceRef> services = null;
if (serviceRequestors == null) {
- serviceRequestors = new HashMap(1);
+ serviceRequestors = new HashMap<>(1);
} else {
- services = (Map)serviceRequestors.get(requestor);
+ services = serviceRequestors.get(requestor);
}
if (services == null) {
- services = new HashMap(1);
+ services = new HashMap<>(1);
serviceRequestors.put(requestor, services);
} else
- serviceRef = (BCSSCServiceRef)services.get(service);
+ serviceRef = services.get(service);
if (serviceRef == null) {
serviceRef = new BCSSCServiceRef(serviceClassRef, isDelegated);
services.put(service, serviceRef);
@@ -375,15 +377,15 @@
// release a service reference
synchronized void releaseService(Object requestor, Object service) {
if (serviceRequestors == null) return;
- Map services = (Map)serviceRequestors.get(requestor);
+ Map<Object, BCSSCServiceRef> services = serviceRequestors.get(requestor);
if (services == null) return; // oops its not there anymore!
- BCSSCServiceRef serviceRef = (BCSSCServiceRef)services.get(service);
+ BCSSCServiceRef serviceRef = services.get(service);
if (serviceRef == null) return; // oops its not there anymore!
BCSSCServiceClassRef serviceClassRef = serviceRef.getServiceClassRef();
boolean isDelegated = serviceRef.isDelegated();
@@ -416,37 +418,37 @@
}
}
// revoke a service
- synchronized void revokeService(Class serviceClass, boolean isDelegated, boolean revokeNow) {
+ synchronized void revokeService(Class<?> serviceClass, boolean isDelegated, boolean revokeNow) {
if (serviceClasses == null) return;
- BCSSCServiceClassRef serviceClassRef = (BCSSCServiceClassRef)serviceClasses.get(serviceClass);
+ BCSSCServiceClassRef serviceClassRef = serviceClasses.get(serviceClass);
if (serviceClassRef == null) return;
- Iterator i = serviceClassRef.cloneOfEntries();
+ Iterator<Map.Entry<Object, BeanContextServiceRevokedListener>> i = serviceClassRef.cloneOfEntries();
BeanContextServiceRevokedEvent bcsre = new BeanContextServiceRevokedEvent(BeanContextServicesSupport.this.getBeanContextServicesPeer(), serviceClass, revokeNow);
boolean noMoreRefs = false;
while (i.hasNext() && serviceRequestors != null) {
- Map.Entry entry = (Map.Entry)i.next();
- BeanContextServiceRevokedListener listener = (BeanContextServiceRevokedListener)entry.getValue();
+ Map.Entry<Object,BeanContextServiceRevokedListener> entry = i.next();
+ BeanContextServiceRevokedListener listener = entry.getValue();
if (revokeNow) {
Object requestor = entry.getKey();
- Map services = (Map)serviceRequestors.get(requestor);
+ Map<Object, BCSSCServiceRef> services = serviceRequestors.get(requestor);
if (services != null) {
- Iterator i1 = services.entrySet().iterator();
+ Iterator<Map.Entry<Object, BCSSCServiceRef>> i1 = services.entrySet().iterator();
while (i1.hasNext()) {
- Map.Entry tmp = (Map.Entry)i1.next();
+ Map.Entry<Object, BCSSCServiceRef> tmp = i1.next();
- BCSSCServiceRef serviceRef = (BCSSCServiceRef)tmp.getValue();
+ BCSSCServiceRef serviceRef = tmp.getValue();
if (serviceRef.getServiceClassRef().equals(serviceClassRef) && isDelegated == serviceRef.isDelegated()) {
i1.remove();
}
}
@@ -477,23 +479,23 @@
void cleanupReferences() {
if (serviceRequestors == null) return;
- Iterator requestors = serviceRequestors.entrySet().iterator();
+ Iterator<Map.Entry<Object, Map<Object, BCSSCServiceRef>>> requestors = serviceRequestors.entrySet().iterator();
while(requestors.hasNext()) {
- Map.Entry tmp = (Map.Entry)requestors.next();
+ Map.Entry<Object, Map<Object, BCSSCServiceRef>> tmp = requestors.next();
Object requestor = tmp.getKey();
- Iterator services = ((Map)tmp.getValue()).entrySet().iterator();
+ Iterator<Map.Entry<Object, BCSSCServiceRef>> services = tmp.getValue().entrySet().iterator();
requestors.remove();
while (services.hasNext()) {
- Map.Entry entry = (Map.Entry)services.next();
+ Map.Entry<Object, BCSSCServiceRef> entry = services.next();
Object service = entry.getKey();
- BCSSCServiceRef sref = (BCSSCServiceRef)entry.getValue();
+ BCSSCServiceRef sref = entry.getValue();
BCSSCServiceClassRef scref = sref.getServiceClassRef();
BeanContextServiceProvider bcsp = sref.isDelegated() ? scref.getDelegateProvider() : scref.getServiceProvider();
@@ -511,36 +513,36 @@
}
void revokeAllDelegatedServicesNow() {
if (serviceClasses == null) return;
- Iterator serviceClassRefs =
- new HashSet(serviceClasses.values()).iterator();
+ Iterator<BCSSCServiceClassRef> serviceClassRefs =
+ new HashSet<>(serviceClasses.values()).iterator();
while (serviceClassRefs.hasNext()) {
- BCSSCServiceClassRef serviceClassRef = (BCSSCServiceClassRef)serviceClassRefs.next();
+ BCSSCServiceClassRef serviceClassRef = serviceClassRefs.next();
if (!serviceClassRef.isDelegated()) continue;
- Iterator i = serviceClassRef.cloneOfEntries();
+ Iterator<Map.Entry<Object, BeanContextServiceRevokedListener>> i = serviceClassRef.cloneOfEntries();
BeanContextServiceRevokedEvent bcsre = new BeanContextServiceRevokedEvent(BeanContextServicesSupport.this.getBeanContextServicesPeer(), serviceClassRef.getServiceClass(), true);
boolean noMoreRefs = false;
while (i.hasNext()) {
- Map.Entry entry = (Map.Entry)i.next();
- BeanContextServiceRevokedListener listener = (BeanContextServiceRevokedListener)entry.getValue();
+ Map.Entry<Object, BeanContextServiceRevokedListener> entry = i.next();
+ BeanContextServiceRevokedListener listener = entry.getValue();
Object requestor = entry.getKey();
- Map services = (Map)serviceRequestors.get(requestor);
+ Map<Object, BCSSCServiceRef> services = serviceRequestors.get(requestor);
if (services != null) {
- Iterator i1 = services.entrySet().iterator();
+ Iterator<Map.Entry<Object, BCSSCServiceRef>> i1 = services.entrySet().iterator();
while (i1.hasNext()) {
- Map.Entry tmp = (Map.Entry)i1.next();
+ Map.Entry<Object, BCSSCServiceRef> tmp = i1.next();
- BCSSCServiceRef serviceRef = (BCSSCServiceRef)tmp.getValue();
+ BCSSCServiceRef serviceRef = tmp.getValue();
if (serviceRef.getServiceClassRef().equals(serviceClassRef) && serviceRef.isDelegated()) {
i1.remove();
}
}
@@ -566,12 +568,12 @@
/*
* fields
*/
- private transient HashMap serviceClasses;
- private transient HashMap serviceRequestors;
+ private transient HashMap<Class<?>, BCSSCServiceClassRef> serviceClasses;
+ private transient HashMap<Object, Map<Object, BeanContextServicesSupport.BCSSChild.BCSSCServiceRef>> serviceRequestors;
}
/**
* <p>
* Subclasses can override this method to insert their own subclass
@@ -595,11 +597,11 @@
*/
protected static class BCSSServiceProvider implements Serializable {
private static final long serialVersionUID = 861278251667444782L;
- BCSSServiceProvider(Class sc, BeanContextServiceProvider bcsp) {
+ BCSSServiceProvider(Class<?> sc, BeanContextServiceProvider bcsp) {
super();
serviceProvider = bcsp;
}
@@ -625,11 +627,11 @@
* @param sc the class
* @param bcsp the service provider
* @return a service provider without overriding addService()
*/
- protected BCSSServiceProvider createBCSSServiceProvider(Class sc, BeanContextServiceProvider bcsp) {
+ protected BCSSServiceProvider createBCSSServiceProvider(Class<?> sc, BeanContextServiceProvider bcsp) {
return new BCSSServiceProvider(sc, bcsp);
}
/************************************************************************/
@@ -669,11 +671,11 @@
* add a service
* @param serviceClass the service class
* @param bcsp the service provider
*/
- public boolean addService(Class serviceClass, BeanContextServiceProvider bcsp) {
+ public boolean addService(Class<?> serviceClass, BeanContextServiceProvider bcsp) {
return addService(serviceClass, bcsp, true);
}
/**
* add a service
@@ -681,11 +683,11 @@
* @param bcsp the service provider
* @param fireEvent whether or not an event should be fired
* @return true if the service was successfully added
*/
- protected boolean addService(Class serviceClass, BeanContextServiceProvider bcsp, boolean fireEvent) {
+ protected boolean addService(Class<?> serviceClass, BeanContextServiceProvider bcsp, boolean fireEvent) {
if (serviceClass == null) throw new NullPointerException("serviceClass");
if (bcsp == null) throw new NullPointerException("bcsp");
synchronized(BeanContext.globalHierarchyLock) {
@@ -702,11 +704,11 @@
BeanContextServiceAvailableEvent bcssae = new BeanContextServiceAvailableEvent(getBeanContextServicesPeer(), serviceClass);
fireServiceAdded(bcssae);
synchronized(children) {
- Iterator i = children.keySet().iterator();
+ Iterator<Object> i = children.keySet().iterator();
while (i.hasNext()) {
Object c = i.next();
if (c instanceof BeanContextServices) {
@@ -725,28 +727,28 @@
* @param serviceClass the service class
* @param bcsp the service provider
* @param revokeCurrentServicesNow whether or not to revoke the service
*/
- public void revokeService(Class serviceClass, BeanContextServiceProvider bcsp, boolean revokeCurrentServicesNow) {
+ public void revokeService(Class<?> serviceClass, BeanContextServiceProvider bcsp, boolean revokeCurrentServicesNow) {
if (serviceClass == null) throw new NullPointerException("serviceClass");
if (bcsp == null) throw new NullPointerException("bcsp");
synchronized(BeanContext.globalHierarchyLock) {
if (!services.containsKey(serviceClass)) return;
- BCSSServiceProvider bcsssp = (BCSSServiceProvider)services.get(serviceClass);
+ BCSSServiceProvider bcsssp = services.get(serviceClass);
if (!bcsssp.getServiceProvider().equals(bcsp))
throw new IllegalArgumentException("service provider mismatch");
services.remove(serviceClass);
if (bcsp instanceof Serializable) serializable--;
- Iterator i = bcsChildren(); // get the BCSChild values.
+ Iterator<BeanContextSupport.BCSChild> i = bcsChildren(); // get the BCSChild values.
while (i.hasNext()) {
((BCSSChild)i.next()).revokeService(serviceClass, false, revokeCurrentServicesNow);
}
@@ -756,11 +758,11 @@
/**
* has a service, which may be delegated
*/
- public synchronized boolean hasService(Class serviceClass) {
+ public synchronized boolean hasService(Class<?> serviceClass) {
if (serviceClass == null) throw new NullPointerException("serviceClass");
synchronized(BeanContext.globalHierarchyLock) {
if (services.containsKey(serviceClass)) return true;
@@ -789,11 +791,11 @@
super();
nestingCtxt = bcs;
}
- public Object getService(BeanContextServices bcs, Object requestor, Class serviceClass, Object serviceSelector) {
+ public Object getService(BeanContextServices bcs, Object requestor, Class<?> serviceClass, Object serviceSelector) {
Object service = null;
try {
service = nestingCtxt.getService(bcs, requestor, serviceClass, serviceSelector, this);
} catch (TooManyListenersException tmle) {
@@ -805,16 +807,16 @@
public void releaseService(BeanContextServices bcs, Object requestor, Object service) {
nestingCtxt.releaseService(bcs, requestor, service);
}
- public Iterator getCurrentServiceSelectors(BeanContextServices bcs, Class serviceClass) {
+ public Iterator<?> getCurrentServiceSelectors(BeanContextServices bcs, Class<?> serviceClass) {
return nestingCtxt.getCurrentServiceSelectors(serviceClass);
}
public void serviceRevoked(BeanContextServiceRevokedEvent bcsre) {
- Iterator i = bcsChildren(); // get the BCSChild values.
+ Iterator<BeanContextSupport.BCSChild> i = bcsChildren(); // get the BCSChild values.
while (i.hasNext()) {
((BCSSChild)i.next()).revokeService(bcsre.getServiceClass(), true, bcsre.isCurrentServiceInvalidNow());
}
}
@@ -830,11 +832,11 @@
/**
* obtain a service which may be delegated
*/
- public Object getService(BeanContextChild child, Object requestor, Class serviceClass, Object serviceSelector, BeanContextServiceRevokedListener bcsrl) throws TooManyListenersException {
+ public Object getService(BeanContextChild child, Object requestor, Class<?> serviceClass, Object serviceSelector, BeanContextServiceRevokedListener bcsrl) throws TooManyListenersException {
if (child == null) throw new NullPointerException("child");
if (serviceClass == null) throw new NullPointerException("serviceClass");
if (requestor == null) throw new NullPointerException("requestor");
if (bcsrl == null) throw new NullPointerException("bcsrl");
@@ -845,11 +847,11 @@
synchronized(BeanContext.globalHierarchyLock) {
synchronized(children) { bcsc = (BCSSChild)children.get(child); }
if (bcsc == null) throw new IllegalArgumentException("not a child of this context"); // not a child ...
- BCSSServiceProvider bcsssp = (BCSSServiceProvider)services.get(serviceClass);
+ BCSSServiceProvider bcsssp = services.get(serviceClass);
if (bcsssp != null) {
BeanContextServiceProvider bcsp = bcsssp.getServiceProvider();
service = bcsp.getService(bcssp, requestor, serviceClass, serviceSelector);
if (service != null) { // do bookkeeping ...
@@ -916,22 +918,22 @@
/**
* @return an iterator for all the currently registered service classes.
*/
- public Iterator getCurrentServiceClasses() {
+ public Iterator<Object> getCurrentServiceClasses() {
return new BCSIterator(services.keySet().iterator());
}
/**
* @return an iterator for all the currently available service selectors
* (if any) available for the specified service.
*/
- public Iterator getCurrentServiceSelectors(Class serviceClass) {
+ public Iterator<?> getCurrentServiceSelectors(Class<?> serviceClass) {
- BCSSServiceProvider bcsssp = (BCSSServiceProvider)services.get(serviceClass);
+ BCSSServiceProvider bcsssp = services.get(serviceClass);
return bcsssp != null ? new BCSIterator(bcsssp.getServiceProvider().getCurrentServiceSelectors(getBeanContextServicesPeer(), serviceClass)) : null;
}
/**
@@ -948,11 +950,11 @@
synchronized(BeanContext.globalHierarchyLock) {
if (services.containsKey(bcssae.getServiceClass())) return;
fireServiceAdded(bcssae);
- Iterator i;
+ Iterator<Object> i;
synchronized(children) {
i = children.keySet().iterator();
}
@@ -980,11 +982,11 @@
synchronized(BeanContext.globalHierarchyLock) {
if (services.containsKey(bcssre.getServiceClass())) return;
fireServiceRevoked(bcssre);
- Iterator i;
+ Iterator<Object> i;
synchronized(children) {
i = children.keySet().iterator();
}
@@ -1083,11 +1085,11 @@
/**
* Fires a <tt>BeanContextServiceEvent</tt> notifying of a new service.
* @param serviceClass the service class
*/
- protected final void fireServiceAdded(Class serviceClass) {
+ protected final void fireServiceAdded(Class<?> serviceClass) {
BeanContextServiceAvailableEvent bcssae = new BeanContextServiceAvailableEvent(getBeanContextServicesPeer(), serviceClass);
fireServiceAdded(bcssae);
}
@@ -1127,11 +1129,11 @@
* indicating that a particular service is
* no longer available.
* @param serviceClass the service class
* @param revokeNow whether or not the event should be revoked now
*/
- protected final void fireServiceRevoked(Class serviceClass, boolean revokeNow) {
+ protected final void fireServiceRevoked(Class<?> serviceClass, boolean revokeNow) {
Object[] copy;
BeanContextServiceRevokedEvent bcsre = new BeanContextServiceRevokedEvent(getBeanContextServicesPeer(), serviceClass, revokeNow);
synchronized (bcsListeners) { copy = bcsListeners.toArray(); }
@@ -1157,18 +1159,18 @@
if (serializable <= 0) return;
int count = 0;
- Iterator i = services.entrySet().iterator();
+ Iterator<Map.Entry<Object, BCSSServiceProvider>> i = services.entrySet().iterator();
while (i.hasNext() && count < serializable) {
- Map.Entry entry = (Map.Entry)i.next();
+ Map.Entry<Object, BCSSServiceProvider> entry = i.next();
BCSSServiceProvider bcsp = null;
try {
- bcsp = (BCSSServiceProvider)entry.getValue();
+ bcsp = entry.getValue();
} catch (ClassCastException cce) {
continue;
}
if (bcsp.getServiceProvider() instanceof Serializable) {
@@ -1199,11 +1201,11 @@
serializable = ois.readInt();
int count = serializable;
while (count > 0) {
- services.put(ois.readObject(), ois.readObject());
+ services.put(ois.readObject(), (BCSSServiceProvider)ois.readObject());
count--;
}
}
/**
@@ -1234,11 +1236,11 @@
/**
* all accesses to the <code> protected transient HashMap services </code>
* field should be synchronized on that object
*/
- protected transient HashMap services;
+ protected transient HashMap<Object, BCSSServiceProvider> services;
/**
* The number of instances of a serializable <tt>BeanContextServceProvider</tt>.
*/
protected transient int serializable = 0;
@@ -1251,7 +1253,7 @@
/**
* List of <tt>BeanContextServicesListener</tt> objects.
*/
- protected transient ArrayList bcsListeners;
+ protected transient ArrayList<BeanContextServicesListener> bcsListeners;
}