Index: trunk/modules/beans/src/main/java/java/beans/beancontext/BeanContextServicesSupport.java =================================================================== --- trunk/modules/beans/src/main/java/java/beans/beancontext/BeanContextServicesSupport.java (revision 441002) +++ trunk/modules/beans/src/main/java/java/beans/beancontext/BeanContextServicesSupport.java (working copy) @@ -28,6 +28,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import java.util.LinkedList; import java.util.Locale; import java.util.TooManyListenersException; @@ -422,6 +422,24 @@ } } + private class BCSIterator implements Iterator { + private Iterator it; + public BCSIterator(Iterator it) { + this.it = it; + } + + public boolean hasNext() { + return it.hasNext(); + } + + public Object next() { + return it.next(); + } + + public void remove() { + //do nothing + } + } /** * @com.intel.drl.spec_ref */ @@ -427,12 +445,18 @@ */ public Iterator getCurrentServiceSelectors(Class serviceClass) { - synchronized (BeanContext.globalHierarchyLock) { + if (serviceClass == null) { + return null; + } + synchronized (BeanContext.globalHierarchyLock) { synchronized (this.services) { BCSSServiceProvider bcsp = this.services.get(serviceClass); + if (bcsp == null) { + return null; + } - return bcsp.getServiceProvider().getCurrentServiceSelectors( - getBeanContextServicesPeer(), serviceClass); + return new BCSIterator(bcsp.getServiceProvider().getCurrentServiceSelectors( + getBeanContextServicesPeer(), serviceClass)); } } }