Ejemplo n.º 1
0
 /**
  * Get a provider based on the position in the stack (starting at 0 and ending at size-1).
  *
  * @param position the position to check for the provider
  * @return the provider from the position OR null if there is no provider at that position
  */
 public T getProvider(final int position) {
   T provider = null;
   ProviderHolder<T> holder = getProviderHolder(position);
   if (holder != null) {
     provider = holder.getProvider();
   }
   return provider;
 }
Ejemplo n.º 2
0
 /**
  * Check to make sure all providers are refreshed and any that are no longer valid are flushed out
  * of the list.
  *
  * @return list of valid providers
  */
 protected List<T> refresh() {
   ArrayList<T> l = new ArrayList<T>();
   for (Iterator<ProviderHolder<T>> iterator = providers.iterator(); iterator.hasNext(); ) {
     ProviderHolder<T> holder = iterator.next();
     T provider = holder.getProvider();
     if (provider == null) {
       iterator.remove();
     } else {
       l.add(provider);
     }
   }
   return l;
 }
Ejemplo n.º 3
0
 /**
  * Remove a provider by the object equality.
  *
  * @param provider the provider to remove from the stack
  * @return true if the provider was found and removed OR false if not found
  */
 public boolean removeProvider(T provider) {
   if (provider == null) {
     throw new IllegalArgumentException("provider to remove cannot be null");
   }
   boolean removed = false;
   refresh();
   for (Iterator<ProviderHolder<T>> iterator = providers.iterator(); iterator.hasNext(); ) {
     ProviderHolder<T> holder = iterator.next();
     T p = holder.getProvider();
     if (p == null) {
       iterator.remove();
     } else {
       if (p.equals(provider)) {
         iterator.remove();
         removed = true;
       }
     }
   }
   return removed;
 }