src/share/classes/java/beans/beancontext/BeanContextServicesSupport.java

Print this page

        

*** 127,139 **** * call it directly. */ public void initialize() { super.initialize(); ! ! services = new HashMap(serializable + 1); ! bcsListeners = new ArrayList(1); } /** * Gets the <tt>BeanContextServices</tt> associated with this * <tt>BeanContextServicesSupport</tt>. --- 127,138 ---- * call it directly. */ public void initialize() { super.initialize(); ! services = new HashMap<>(serializable + 1); ! bcsListeners = new ArrayList<>(1); } /** * Gets the <tt>BeanContextServices</tt> associated with this * <tt>BeanContextServicesSupport</tt>.
*** 167,177 **** class BCSSCServiceClassRef { // create an instance of a service ref ! BCSSCServiceClassRef(Class sc, BeanContextServiceProvider bcsp, boolean delegated) { super(); serviceClass = sc; if (delegated) --- 166,176 ---- class BCSSCServiceClassRef { // create an instance of a service ref ! BCSSCServiceClassRef(Class<?> sc, BeanContextServiceProvider bcsp, boolean delegated) { super(); serviceClass = sc; if (delegated)
*** 181,191 **** } // add a requestor and assoc listener void addRequestor(Object requestor, BeanContextServiceRevokedListener bcsrl) throws TooManyListenersException { ! BeanContextServiceRevokedListener cbcsrl = (BeanContextServiceRevokedListener)requestors.get(requestor); if (cbcsrl != null && !cbcsrl.equals(bcsrl)) throw new TooManyListenersException(); requestors.put(requestor, bcsrl); --- 180,190 ---- } // add a requestor and assoc listener void addRequestor(Object requestor, BeanContextServiceRevokedListener bcsrl) throws TooManyListenersException { ! BeanContextServiceRevokedListener cbcsrl = requestors.get(requestor); if (cbcsrl != null && !cbcsrl.equals(bcsrl)) throw new TooManyListenersException(); requestors.put(requestor, bcsrl);
*** 198,208 **** } // check a requestors listener void verifyRequestor(Object requestor, BeanContextServiceRevokedListener bcsrl) throws TooManyListenersException { ! BeanContextServiceRevokedListener cbcsrl = (BeanContextServiceRevokedListener)requestors.get(requestor); if (cbcsrl != null && !cbcsrl.equals(bcsrl)) throw new TooManyListenersException(); } --- 197,207 ---- } // check a requestors listener void verifyRequestor(Object requestor, BeanContextServiceRevokedListener bcsrl) throws TooManyListenersException { ! BeanContextServiceRevokedListener cbcsrl = requestors.get(requestor); if (cbcsrl != null && !cbcsrl.equals(bcsrl)) throw new TooManyListenersException(); }
*** 228,246 **** if (!current.equals(bcsp)) throw new UnsupportedOperationException("existing service reference obtained from different BeanContextServiceProvider not supported"); } ! Iterator cloneOfEntries() { ! return ((HashMap)requestors.clone()).entrySet().iterator(); } ! Iterator entries() { return requestors.entrySet().iterator(); } boolean isEmpty() { return requestors.isEmpty(); } ! Class getServiceClass() { return serviceClass; } BeanContextServiceProvider getServiceProvider() { return serviceProvider; } --- 227,248 ---- if (!current.equals(bcsp)) throw new UnsupportedOperationException("existing service reference obtained from different BeanContextServiceProvider not supported"); } ! @SuppressWarnings("unchecked") // Cast from clone ! Iterator<Map.Entry<Object, BeanContextServiceRevokedListener>> cloneOfEntries() { ! return ((HashMap<Object, BeanContextServiceRevokedListener>)requestors.clone()).entrySet().iterator(); } ! Iterator<Map.Entry<Object, BeanContextServiceRevokedListener>> entries() { ! return requestors.entrySet().iterator(); ! } boolean isEmpty() { return requestors.isEmpty(); } ! Class<?> getServiceClass() { return serviceClass; } BeanContextServiceProvider getServiceProvider() { return serviceProvider; }
*** 279,297 **** /* * fields */ ! Class serviceClass; BeanContextServiceProvider serviceProvider; int serviceRefs; BeanContextServiceProvider delegateProvider; // proxy int delegateRefs; ! HashMap requestors = new HashMap(1); } /* * per service reference info ... */ --- 281,299 ---- /* * fields */ ! Class<?> serviceClass; BeanContextServiceProvider serviceProvider; int serviceRefs; BeanContextServiceProvider delegateProvider; // proxy int delegateRefs; ! HashMap<Object, BeanContextServiceRevokedListener> requestors = new HashMap<>(1); } /* * per service reference info ... */
*** 320,339 **** 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 { // first, process mapping from serviceClass to requestor(s) BCSSCServiceClassRef serviceClassRef = null; if (serviceClasses == null) ! serviceClasses = new HashMap(1); else ! serviceClassRef = (BCSSCServiceClassRef)serviceClasses.get(serviceClass); if (serviceClassRef == null) { // new service being used ... serviceClassRef = new BCSSCServiceClassRef(serviceClass, bcsp, isDelegated); serviceClasses.put(serviceClass, serviceClassRef); --- 322,341 ---- 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 { // first, process mapping from serviceClass to requestor(s) BCSSCServiceClassRef serviceClassRef = null; if (serviceClasses == null) ! serviceClasses = new HashMap<>(1); else ! serviceClassRef = serviceClasses.get(serviceClass); if (serviceClassRef == null) { // new service being used ... serviceClassRef = new BCSSCServiceClassRef(serviceClass, bcsp, isDelegated); serviceClasses.put(serviceClass, serviceClassRef);
*** 346,369 **** serviceClassRef.addRef(isDelegated); // now handle mapping from requestor to service(s) BCSSCServiceRef serviceRef = null; ! Map services = null; if (serviceRequestors == null) { ! serviceRequestors = new HashMap(1); } else { ! services = (Map)serviceRequestors.get(requestor); } if (services == null) { ! services = new HashMap(1); serviceRequestors.put(requestor, services); } else ! serviceRef = (BCSSCServiceRef)services.get(service); if (serviceRef == null) { serviceRef = new BCSSCServiceRef(serviceClassRef, isDelegated); services.put(service, serviceRef); --- 348,371 ---- serviceClassRef.addRef(isDelegated); // now handle mapping from requestor to service(s) BCSSCServiceRef serviceRef = null; ! Map<Object , BCSSCServiceRef> services = null; if (serviceRequestors == null) { ! serviceRequestors = new HashMap<>(1); } else { ! services = serviceRequestors.get(requestor); } if (services == null) { ! services = new HashMap<>(1); serviceRequestors.put(requestor, services); } else ! serviceRef = services.get(service); if (serviceRef == null) { serviceRef = new BCSSCServiceRef(serviceClassRef, isDelegated); services.put(service, serviceRef);
*** 375,389 **** // release a service reference synchronized void releaseService(Object requestor, Object service) { if (serviceRequestors == null) return; ! Map services = (Map)serviceRequestors.get(requestor); if (services == null) return; // oops its not there anymore! ! BCSSCServiceRef serviceRef = (BCSSCServiceRef)services.get(service); if (serviceRef == null) return; // oops its not there anymore! BCSSCServiceClassRef serviceClassRef = serviceRef.getServiceClassRef(); boolean isDelegated = serviceRef.isDelegated(); --- 377,391 ---- // release a service reference synchronized void releaseService(Object requestor, Object service) { if (serviceRequestors == null) return; ! Map<Object, BCSSCServiceRef> services = serviceRequestors.get(requestor); if (services == null) return; // oops its not there anymore! ! BCSSCServiceRef serviceRef = services.get(service); if (serviceRef == null) return; // oops its not there anymore! BCSSCServiceClassRef serviceClassRef = serviceRef.getServiceClassRef(); boolean isDelegated = serviceRef.isDelegated();
*** 416,452 **** } } // revoke a service ! synchronized void revokeService(Class serviceClass, boolean isDelegated, boolean revokeNow) { if (serviceClasses == null) return; ! BCSSCServiceClassRef serviceClassRef = (BCSSCServiceClassRef)serviceClasses.get(serviceClass); if (serviceClassRef == null) return; ! 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(); if (revokeNow) { Object requestor = entry.getKey(); ! Map services = (Map)serviceRequestors.get(requestor); if (services != null) { ! Iterator i1 = services.entrySet().iterator(); while (i1.hasNext()) { ! Map.Entry tmp = (Map.Entry)i1.next(); ! BCSSCServiceRef serviceRef = (BCSSCServiceRef)tmp.getValue(); if (serviceRef.getServiceClassRef().equals(serviceClassRef) && isDelegated == serviceRef.isDelegated()) { i1.remove(); } } --- 418,454 ---- } } // revoke a service ! synchronized void revokeService(Class<?> serviceClass, boolean isDelegated, boolean revokeNow) { if (serviceClasses == null) return; ! BCSSCServiceClassRef serviceClassRef = serviceClasses.get(serviceClass); if (serviceClassRef == null) return; ! 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<Object,BeanContextServiceRevokedListener> entry = i.next(); ! BeanContextServiceRevokedListener listener = entry.getValue(); if (revokeNow) { Object requestor = entry.getKey(); ! Map<Object, BCSSCServiceRef> services = serviceRequestors.get(requestor); if (services != null) { ! Iterator<Map.Entry<Object, BCSSCServiceRef>> i1 = services.entrySet().iterator(); while (i1.hasNext()) { ! Map.Entry<Object, BCSSCServiceRef> tmp = i1.next(); ! BCSSCServiceRef serviceRef = tmp.getValue(); if (serviceRef.getServiceClassRef().equals(serviceClassRef) && isDelegated == serviceRef.isDelegated()) { i1.remove(); } }
*** 477,499 **** void cleanupReferences() { if (serviceRequestors == null) return; ! Iterator requestors = serviceRequestors.entrySet().iterator(); while(requestors.hasNext()) { ! Map.Entry tmp = (Map.Entry)requestors.next(); Object requestor = tmp.getKey(); ! Iterator services = ((Map)tmp.getValue()).entrySet().iterator(); requestors.remove(); while (services.hasNext()) { ! Map.Entry entry = (Map.Entry)services.next(); Object service = entry.getKey(); ! BCSSCServiceRef sref = (BCSSCServiceRef)entry.getValue(); BCSSCServiceClassRef scref = sref.getServiceClassRef(); BeanContextServiceProvider bcsp = sref.isDelegated() ? scref.getDelegateProvider() : scref.getServiceProvider(); --- 479,501 ---- void cleanupReferences() { if (serviceRequestors == null) return; ! Iterator<Map.Entry<Object, Map<Object, BCSSCServiceRef>>> requestors = serviceRequestors.entrySet().iterator(); while(requestors.hasNext()) { ! Map.Entry<Object, Map<Object, BCSSCServiceRef>> tmp = requestors.next(); Object requestor = tmp.getKey(); ! Iterator<Map.Entry<Object, BCSSCServiceRef>> services = tmp.getValue().entrySet().iterator(); requestors.remove(); while (services.hasNext()) { ! Map.Entry<Object, BCSSCServiceRef> entry = services.next(); Object service = entry.getKey(); ! BCSSCServiceRef sref = entry.getValue(); BCSSCServiceClassRef scref = sref.getServiceClassRef(); BeanContextServiceProvider bcsp = sref.isDelegated() ? scref.getDelegateProvider() : scref.getServiceProvider();
*** 511,546 **** } void revokeAllDelegatedServicesNow() { if (serviceClasses == null) return; ! Iterator serviceClassRefs = ! new HashSet(serviceClasses.values()).iterator(); while (serviceClassRefs.hasNext()) { ! BCSSCServiceClassRef serviceClassRef = (BCSSCServiceClassRef)serviceClassRefs.next(); if (!serviceClassRef.isDelegated()) continue; ! 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(); Object requestor = entry.getKey(); ! Map services = (Map)serviceRequestors.get(requestor); if (services != null) { ! Iterator i1 = services.entrySet().iterator(); while (i1.hasNext()) { ! Map.Entry tmp = (Map.Entry)i1.next(); ! BCSSCServiceRef serviceRef = (BCSSCServiceRef)tmp.getValue(); if (serviceRef.getServiceClassRef().equals(serviceClassRef) && serviceRef.isDelegated()) { i1.remove(); } } --- 513,548 ---- } void revokeAllDelegatedServicesNow() { if (serviceClasses == null) return; ! Iterator<BCSSCServiceClassRef> serviceClassRefs = ! new HashSet<>(serviceClasses.values()).iterator(); while (serviceClassRefs.hasNext()) { ! BCSSCServiceClassRef serviceClassRef = serviceClassRefs.next(); if (!serviceClassRef.isDelegated()) continue; ! 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<Object, BeanContextServiceRevokedListener> entry = i.next(); ! BeanContextServiceRevokedListener listener = entry.getValue(); Object requestor = entry.getKey(); ! Map<Object, BCSSCServiceRef> services = serviceRequestors.get(requestor); if (services != null) { ! Iterator<Map.Entry<Object, BCSSCServiceRef>> i1 = services.entrySet().iterator(); while (i1.hasNext()) { ! Map.Entry<Object, BCSSCServiceRef> tmp = i1.next(); ! BCSSCServiceRef serviceRef = tmp.getValue(); if (serviceRef.getServiceClassRef().equals(serviceClassRef) && serviceRef.isDelegated()) { i1.remove(); } }
*** 566,577 **** /* * fields */ ! private transient HashMap serviceClasses; ! private transient HashMap serviceRequestors; } /** * <p> * Subclasses can override this method to insert their own subclass --- 568,579 ---- /* * fields */ ! 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,605 **** */ protected static class BCSSServiceProvider implements Serializable { private static final long serialVersionUID = 861278251667444782L; ! BCSSServiceProvider(Class sc, BeanContextServiceProvider bcsp) { super(); serviceProvider = bcsp; } --- 597,607 ---- */ protected static class BCSSServiceProvider implements Serializable { private static final long serialVersionUID = 861278251667444782L; ! BCSSServiceProvider(Class<?> sc, BeanContextServiceProvider bcsp) { super(); serviceProvider = bcsp; }
*** 625,635 **** * @param sc the class * @param bcsp the service provider * @return a service provider without overriding addService() */ ! protected BCSSServiceProvider createBCSSServiceProvider(Class sc, BeanContextServiceProvider bcsp) { return new BCSSServiceProvider(sc, bcsp); } /************************************************************************/ --- 627,637 ---- * @param sc the class * @param bcsp the service provider * @return a service provider without overriding addService() */ ! protected BCSSServiceProvider createBCSSServiceProvider(Class<?> sc, BeanContextServiceProvider bcsp) { return new BCSSServiceProvider(sc, bcsp); } /************************************************************************/
*** 669,679 **** * add a service * @param serviceClass the service class * @param bcsp the service provider */ ! public boolean addService(Class serviceClass, BeanContextServiceProvider bcsp) { return addService(serviceClass, bcsp, true); } /** * add a service --- 671,681 ---- * add a service * @param serviceClass the service class * @param bcsp the service provider */ ! public boolean addService(Class<?> serviceClass, BeanContextServiceProvider bcsp) { return addService(serviceClass, bcsp, true); } /** * add a service
*** 681,691 **** * @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) { if (serviceClass == null) throw new NullPointerException("serviceClass"); if (bcsp == null) throw new NullPointerException("bcsp"); synchronized(BeanContext.globalHierarchyLock) { --- 683,693 ---- * @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) { if (serviceClass == null) throw new NullPointerException("serviceClass"); if (bcsp == null) throw new NullPointerException("bcsp"); synchronized(BeanContext.globalHierarchyLock) {
*** 702,712 **** BeanContextServiceAvailableEvent bcssae = new BeanContextServiceAvailableEvent(getBeanContextServicesPeer(), serviceClass); fireServiceAdded(bcssae); synchronized(children) { ! Iterator i = children.keySet().iterator(); while (i.hasNext()) { Object c = i.next(); if (c instanceof BeanContextServices) { --- 704,714 ---- BeanContextServiceAvailableEvent bcssae = new BeanContextServiceAvailableEvent(getBeanContextServicesPeer(), serviceClass); fireServiceAdded(bcssae); synchronized(children) { ! Iterator<Object> i = children.keySet().iterator(); while (i.hasNext()) { Object c = i.next(); if (c instanceof BeanContextServices) {
*** 725,752 **** * @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) { 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); 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. while (i.hasNext()) { ((BCSSChild)i.next()).revokeService(serviceClass, false, revokeCurrentServicesNow); } --- 727,754 ---- * @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) { if (serviceClass == null) throw new NullPointerException("serviceClass"); if (bcsp == null) throw new NullPointerException("bcsp"); synchronized(BeanContext.globalHierarchyLock) { if (!services.containsKey(serviceClass)) return; ! 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<BeanContextSupport.BCSChild> i = bcsChildren(); // get the BCSChild values. while (i.hasNext()) { ((BCSSChild)i.next()).revokeService(serviceClass, false, revokeCurrentServicesNow); }
*** 756,766 **** /** * has a service, which may be delegated */ ! public synchronized boolean hasService(Class serviceClass) { if (serviceClass == null) throw new NullPointerException("serviceClass"); synchronized(BeanContext.globalHierarchyLock) { if (services.containsKey(serviceClass)) return true; --- 758,768 ---- /** * has a service, which may be delegated */ ! public synchronized boolean hasService(Class<?> serviceClass) { if (serviceClass == null) throw new NullPointerException("serviceClass"); synchronized(BeanContext.globalHierarchyLock) { if (services.containsKey(serviceClass)) return true;
*** 789,799 **** super(); nestingCtxt = bcs; } ! 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) { --- 791,801 ---- super(); nestingCtxt = bcs; } ! 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,820 **** public void releaseService(BeanContextServices bcs, Object requestor, Object service) { nestingCtxt.releaseService(bcs, requestor, service); } ! public Iterator getCurrentServiceSelectors(BeanContextServices bcs, Class serviceClass) { return nestingCtxt.getCurrentServiceSelectors(serviceClass); } public void serviceRevoked(BeanContextServiceRevokedEvent bcsre) { ! Iterator i = bcsChildren(); // get the BCSChild values. while (i.hasNext()) { ((BCSSChild)i.next()).revokeService(bcsre.getServiceClass(), true, bcsre.isCurrentServiceInvalidNow()); } } --- 807,822 ---- public void releaseService(BeanContextServices bcs, Object requestor, Object service) { nestingCtxt.releaseService(bcs, requestor, service); } ! public Iterator<?> getCurrentServiceSelectors(BeanContextServices bcs, Class<?> serviceClass) { return nestingCtxt.getCurrentServiceSelectors(serviceClass); } public void serviceRevoked(BeanContextServiceRevokedEvent bcsre) { ! Iterator<BeanContextSupport.BCSChild> i = bcsChildren(); // get the BCSChild values. while (i.hasNext()) { ((BCSSChild)i.next()).revokeService(bcsre.getServiceClass(), true, bcsre.isCurrentServiceInvalidNow()); } }
*** 830,840 **** /** * obtain a service which may be delegated */ ! 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"); --- 832,842 ---- /** * obtain a service which may be delegated */ ! 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,855 **** 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); if (bcsssp != null) { BeanContextServiceProvider bcsp = bcsssp.getServiceProvider(); service = bcsp.getService(bcssp, requestor, serviceClass, serviceSelector); if (service != null) { // do bookkeeping ... --- 847,857 ---- 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 = services.get(serviceClass); if (bcsssp != null) { BeanContextServiceProvider bcsp = bcsssp.getServiceProvider(); service = bcsp.getService(bcssp, requestor, serviceClass, serviceSelector); if (service != null) { // do bookkeeping ...
*** 916,937 **** /** * @return an iterator for all the currently registered service classes. */ ! public Iterator 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) { ! BCSSServiceProvider bcsssp = (BCSSServiceProvider)services.get(serviceClass); return bcsssp != null ? new BCSIterator(bcsssp.getServiceProvider().getCurrentServiceSelectors(getBeanContextServicesPeer(), serviceClass)) : null; } /** --- 918,939 ---- /** * @return an iterator for all the currently registered service classes. */ ! 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) { ! BCSSServiceProvider bcsssp = services.get(serviceClass); return bcsssp != null ? new BCSIterator(bcsssp.getServiceProvider().getCurrentServiceSelectors(getBeanContextServicesPeer(), serviceClass)) : null; } /**
*** 948,958 **** synchronized(BeanContext.globalHierarchyLock) { if (services.containsKey(bcssae.getServiceClass())) return; fireServiceAdded(bcssae); ! Iterator i; synchronized(children) { i = children.keySet().iterator(); } --- 950,960 ---- synchronized(BeanContext.globalHierarchyLock) { if (services.containsKey(bcssae.getServiceClass())) return; fireServiceAdded(bcssae); ! Iterator<Object> i; synchronized(children) { i = children.keySet().iterator(); }
*** 980,990 **** synchronized(BeanContext.globalHierarchyLock) { if (services.containsKey(bcssre.getServiceClass())) return; fireServiceRevoked(bcssre); ! Iterator i; synchronized(children) { i = children.keySet().iterator(); } --- 982,992 ---- synchronized(BeanContext.globalHierarchyLock) { if (services.containsKey(bcssre.getServiceClass())) return; fireServiceRevoked(bcssre); ! Iterator<Object> i; synchronized(children) { i = children.keySet().iterator(); }
*** 1083,1093 **** /** * Fires a <tt>BeanContextServiceEvent</tt> notifying of a new service. * @param serviceClass the service class */ ! protected final void fireServiceAdded(Class serviceClass) { BeanContextServiceAvailableEvent bcssae = new BeanContextServiceAvailableEvent(getBeanContextServicesPeer(), serviceClass); fireServiceAdded(bcssae); } --- 1085,1095 ---- /** * Fires a <tt>BeanContextServiceEvent</tt> notifying of a new service. * @param serviceClass the service class */ ! protected final void fireServiceAdded(Class<?> serviceClass) { BeanContextServiceAvailableEvent bcssae = new BeanContextServiceAvailableEvent(getBeanContextServicesPeer(), serviceClass); fireServiceAdded(bcssae); }
*** 1127,1137 **** * 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) { Object[] copy; BeanContextServiceRevokedEvent bcsre = new BeanContextServiceRevokedEvent(getBeanContextServicesPeer(), serviceClass, revokeNow); synchronized (bcsListeners) { copy = bcsListeners.toArray(); } --- 1129,1139 ---- * 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) { Object[] copy; BeanContextServiceRevokedEvent bcsre = new BeanContextServiceRevokedEvent(getBeanContextServicesPeer(), serviceClass, revokeNow); synchronized (bcsListeners) { copy = bcsListeners.toArray(); }
*** 1157,1174 **** if (serializable <= 0) return; int count = 0; ! Iterator i = services.entrySet().iterator(); while (i.hasNext() && count < serializable) { ! Map.Entry entry = (Map.Entry)i.next(); BCSSServiceProvider bcsp = null; try { ! bcsp = (BCSSServiceProvider)entry.getValue(); } catch (ClassCastException cce) { continue; } if (bcsp.getServiceProvider() instanceof Serializable) { --- 1159,1176 ---- if (serializable <= 0) return; int count = 0; ! Iterator<Map.Entry<Object, BCSSServiceProvider>> i = services.entrySet().iterator(); while (i.hasNext() && count < serializable) { ! Map.Entry<Object, BCSSServiceProvider> entry = i.next(); BCSSServiceProvider bcsp = null; try { ! bcsp = entry.getValue(); } catch (ClassCastException cce) { continue; } if (bcsp.getServiceProvider() instanceof Serializable) {
*** 1199,1209 **** serializable = ois.readInt(); int count = serializable; while (count > 0) { ! services.put(ois.readObject(), ois.readObject()); count--; } } /** --- 1201,1211 ---- serializable = ois.readInt(); int count = serializable; while (count > 0) { ! services.put(ois.readObject(), (BCSSServiceProvider)ois.readObject()); count--; } } /**
*** 1234,1244 **** /** * all accesses to the <code> protected transient HashMap services </code> * field should be synchronized on that object */ ! protected transient HashMap services; /** * The number of instances of a serializable <tt>BeanContextServceProvider</tt>. */ protected transient int serializable = 0; --- 1236,1246 ---- /** * all accesses to the <code> protected transient HashMap services </code> * field should be synchronized on that object */ ! protected transient HashMap<Object, BCSSServiceProvider> services; /** * The number of instances of a serializable <tt>BeanContextServceProvider</tt>. */ protected transient int serializable = 0;
*** 1251,1257 **** /** * List of <tt>BeanContextServicesListener</tt> objects. */ ! protected transient ArrayList bcsListeners; } --- 1253,1259 ---- /** * List of <tt>BeanContextServicesListener</tt> objects. */ ! protected transient ArrayList<BeanContextServicesListener> bcsListeners; }