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;
 }