--- old/src/share/classes/java/beans/beancontext/BeanContextServicesSupport.java 2014-05-29 20:09:25.000000000 -0700 +++ new/src/share/classes/java/beans/beancontext/BeanContextServicesSupport.java 2014-05-29 20:09:25.000000000 -0700 @@ -129,9 +129,9 @@ public void initialize() { super.initialize(); - - services = new HashMap(serializable + 1); - bcsListeners = new ArrayList(1); + // Object, BCSSCServiceRef + services = new HashMap<>(serializable + 1); + bcsListeners = new ArrayList<>(1); } /** @@ -169,7 +169,7 @@ // create an instance of a service ref - BCSSCServiceClassRef(Class sc, BeanContextServiceProvider bcsp, boolean delegated) { + BCSSCServiceClassRef(Class sc, BeanContextServiceProvider bcsp, boolean delegated) { super(); serviceClass = sc; @@ -183,7 +183,7 @@ // 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(); @@ -200,7 +200,7 @@ // 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(); @@ -230,15 +230,18 @@ } - Iterator cloneOfEntries() { - return ((HashMap)requestors.clone()).entrySet().iterator(); + @SuppressWarnings("unchecked") // Cast from clone + Iterator> cloneOfEntries() { + return ((HashMap)requestors.clone()).entrySet().iterator(); } - Iterator entries() { return requestors.entrySet().iterator(); } + Iterator> entries() { + return requestors.entrySet().iterator(); + } boolean isEmpty() { return requestors.isEmpty(); } - Class getServiceClass() { return serviceClass; } + Class getServiceClass() { return serviceClass; } BeanContextServiceProvider getServiceProvider() { return serviceProvider; @@ -281,7 +284,7 @@ * fields */ - Class serviceClass; + Class serviceClass; BeanContextServiceProvider serviceProvider; int serviceRefs; @@ -289,7 +292,7 @@ BeanContextServiceProvider delegateProvider; // proxy int delegateRefs; - HashMap requestors = new HashMap(1); + HashMap requestors = new HashMap<>(1); } /* @@ -322,16 +325,16 @@ // 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); @@ -348,20 +351,20 @@ // now handle mapping from requestor to service(s) BCSSCServiceRef serviceRef = null; - Map services = null; + Map 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); @@ -377,11 +380,11 @@ synchronized void releaseService(Object requestor, Object service) { if (serviceRequestors == null) return; - Map services = (Map)serviceRequestors.get(requestor); + Map 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! @@ -418,33 +421,33 @@ // 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> 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 entry = i.next(); + BeanContextServiceRevokedListener listener = entry.getValue(); if (revokeNow) { Object requestor = entry.getKey(); - Map services = (Map)serviceRequestors.get(requestor); + Map services = serviceRequestors.get(requestor); if (services != null) { - Iterator i1 = services.entrySet().iterator(); + Iterator> i1 = services.entrySet().iterator(); while (i1.hasNext()) { - Map.Entry tmp = (Map.Entry)i1.next(); + Map.Entry tmp = i1.next(); - BCSSCServiceRef serviceRef = (BCSSCServiceRef)tmp.getValue(); + BCSSCServiceRef serviceRef = tmp.getValue(); if (serviceRef.getServiceClassRef().equals(serviceClassRef) && isDelegated == serviceRef.isDelegated()) { i1.remove(); } @@ -479,19 +482,19 @@ if (serviceRequestors == null) return; - Iterator requestors = serviceRequestors.entrySet().iterator(); + Iterator>> requestors = serviceRequestors.entrySet().iterator(); while(requestors.hasNext()) { - Map.Entry tmp = (Map.Entry)requestors.next(); + Map.Entry> tmp = requestors.next(); Object requestor = tmp.getKey(); - Iterator services = ((Map)tmp.getValue()).entrySet().iterator(); + Iterator> services = tmp.getValue().entrySet().iterator(); requestors.remove(); while (services.hasNext()) { - Map.Entry entry = (Map.Entry)services.next(); + Map.Entry entry = services.next(); Object service = entry.getKey(); - BCSSCServiceRef sref = (BCSSCServiceRef)entry.getValue(); + BCSSCServiceRef sref = entry.getValue(); BCSSCServiceClassRef scref = sref.getServiceClassRef(); @@ -513,32 +516,32 @@ void revokeAllDelegatedServicesNow() { if (serviceClasses == null) return; - Iterator serviceClassRefs = - new HashSet(serviceClasses.values()).iterator(); + Iterator 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> 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 entry = i.next(); + BeanContextServiceRevokedListener listener = entry.getValue(); Object requestor = entry.getKey(); - Map services = (Map)serviceRequestors.get(requestor); + Map services = serviceRequestors.get(requestor); if (services != null) { - Iterator i1 = services.entrySet().iterator(); + Iterator> i1 = services.entrySet().iterator(); while (i1.hasNext()) { - Map.Entry tmp = (Map.Entry)i1.next(); + Map.Entry tmp = i1.next(); - BCSSCServiceRef serviceRef = (BCSSCServiceRef)tmp.getValue(); + BCSSCServiceRef serviceRef = tmp.getValue(); if (serviceRef.getServiceClassRef().equals(serviceClassRef) && serviceRef.isDelegated()) { i1.remove(); } @@ -568,8 +571,8 @@ * fields */ - private transient HashMap serviceClasses; - private transient HashMap serviceRequestors; + private transient HashMap, BCSSCServiceClassRef> serviceClasses; + private transient HashMap> serviceRequestors; } /** @@ -597,7 +600,7 @@ 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; @@ -627,7 +630,7 @@ * @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); } @@ -671,7 +674,7 @@ * @param bcsp the service provider */ - public boolean addService(Class serviceClass, BeanContextServiceProvider bcsp) { + public boolean addService(Class serviceClass, BeanContextServiceProvider bcsp) { return addService(serviceClass, bcsp, true); } @@ -683,7 +686,7 @@ * @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"); @@ -704,7 +707,7 @@ fireServiceAdded(bcssae); synchronized(children) { - Iterator i = children.keySet().iterator(); + Iterator i = children.keySet().iterator(); while (i.hasNext()) { Object c = i.next(); @@ -727,7 +730,7 @@ * @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"); @@ -735,7 +738,7 @@ 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"); @@ -744,7 +747,7 @@ if (bcsp instanceof Serializable) serializable--; - Iterator i = bcsChildren(); // get the BCSChild values. + Iterator i = bcsChildren(); // get the BCSChild values. while (i.hasNext()) { ((BCSSChild)i.next()).revokeService(serviceClass, false, revokeCurrentServicesNow); @@ -758,7 +761,7 @@ * 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) { @@ -791,7 +794,7 @@ 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 { @@ -807,12 +810,12 @@ 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 i = bcsChildren(); // get the BCSChild values. while (i.hasNext()) { ((BCSSChild)i.next()).revokeService(bcsre.getServiceClass(), true, bcsre.isCurrentServiceInvalidNow()); @@ -832,7 +835,7 @@ * 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"); @@ -847,7 +850,7 @@ 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(); @@ -918,7 +921,7 @@ * @return an iterator for all the currently registered service classes. */ - public Iterator getCurrentServiceClasses() { + public Iterator getCurrentServiceClasses() { return new BCSIterator(services.keySet().iterator()); } @@ -927,9 +930,9 @@ * (if any) available for the specified service. */ - public Iterator getCurrentServiceSelectors(Class serviceClass) { + public Iterator getCurrentServiceSelectors(Class serviceClass) { // Refine? - BCSSServiceProvider bcsssp = (BCSSServiceProvider)services.get(serviceClass); + BCSSServiceProvider bcsssp = services.get(serviceClass); return bcsssp != null ? new BCSIterator(bcsssp.getServiceProvider().getCurrentServiceSelectors(getBeanContextServicesPeer(), serviceClass)) : null; } @@ -950,7 +953,7 @@ fireServiceAdded(bcssae); - Iterator i; + Iterator i; synchronized(children) { i = children.keySet().iterator(); @@ -982,7 +985,7 @@ fireServiceRevoked(bcssre); - Iterator i; + Iterator i; synchronized(children) { i = children.keySet().iterator(); @@ -1085,7 +1088,7 @@ * Fires a BeanContextServiceEvent 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); @@ -1129,7 +1132,7 @@ * @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); @@ -1159,14 +1162,14 @@ int count = 0; - Iterator i = services.entrySet().iterator(); + Iterator> i = services.entrySet().iterator(); while (i.hasNext() && count < serializable) { - Map.Entry entry = (Map.Entry)i.next(); + Map.Entry entry = i.next(); BCSSServiceProvider bcsp = null; try { - bcsp = (BCSSServiceProvider)entry.getValue(); + bcsp = entry.getValue(); } catch (ClassCastException cce) { continue; } @@ -1201,7 +1204,7 @@ int count = serializable; while (count > 0) { - services.put(ois.readObject(), ois.readObject()); + services.put(ois.readObject(), (BCSSServiceProvider)ois.readObject()); count--; } } @@ -1236,7 +1239,7 @@ * all accesses to the protected transient HashMap services * field should be synchronized on that object */ - protected transient HashMap services; + protected transient HashMap services; /** * The number of instances of a serializable BeanContextServceProvider. @@ -1253,5 +1256,5 @@ /** * List of BeanContextServicesListener objects. */ - protected transient ArrayList bcsListeners; + protected transient ArrayList bcsListeners; }