SetBinding.java 4.3 KB
package dagger.internal;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;

public final class SetBinding<T>
  extends Binding<Set<T>>
{
  private final List<Binding<?>> contributors;
  private final SetBinding<T> parent;
  
  public SetBinding(SetBinding<T> paramSetBinding)
  {
    super(paramSetBinding.provideKey, null, false, paramSetBinding.requiredBy);
    this.parent = paramSetBinding;
    setLibrary(paramSetBinding.library());
    setDependedOn(paramSetBinding.dependedOn());
    this.contributors = new ArrayList();
  }
  
  public SetBinding(String paramString, Object paramObject)
  {
    super(paramString, null, false, paramObject);
    this.parent = null;
    this.contributors = new ArrayList();
  }
  
  public static <T> void add(BindingsGroup paramBindingsGroup, String paramString, Binding<?> paramBinding)
  {
    prepareSetBinding(paramBindingsGroup, paramString, paramBinding).contributors.add(Linker.scope(paramBinding));
  }
  
  private static <T> SetBinding<T> prepareSetBinding(BindingsGroup paramBindingsGroup, String paramString, Binding<?> paramBinding)
  {
    Object localObject = paramBindingsGroup.get(paramString);
    if ((localObject instanceof SetBinding))
    {
      paramBindingsGroup = (SetBinding)localObject;
      if ((paramBindingsGroup.library()) && (paramBinding.library())) {}
      for (boolean bool = true;; bool = false)
      {
        paramBindingsGroup.setLibrary(bool);
        return paramBindingsGroup;
      }
    }
    if (localObject != null) {
      throw new IllegalArgumentException("Duplicate:\n    " + localObject + "\n    " + paramBinding);
    }
    localObject = new SetBinding(paramString, paramBinding.requiredBy);
    ((SetBinding)localObject).setLibrary(paramBinding.library());
    paramBindingsGroup.contributeSetBinding(paramString, (SetBinding)localObject);
    return (SetBinding)paramBindingsGroup.get(paramString);
  }
  
  public final void attach(Linker paramLinker)
  {
    Iterator localIterator = this.contributors.iterator();
    while (localIterator.hasNext()) {
      ((Binding)localIterator.next()).attach(paramLinker);
    }
  }
  
  public final Set<T> get()
  {
    ArrayList localArrayList = new ArrayList();
    for (SetBinding localSetBinding = this; localSetBinding != null; localSetBinding = localSetBinding.parent)
    {
      int j = localSetBinding.contributors.size();
      int i = 0;
      if (i < j)
      {
        Binding localBinding = (Binding)localSetBinding.contributors.get(i);
        Object localObject = localBinding.get();
        if (localBinding.provideKey.equals(this.provideKey)) {
          localArrayList.addAll((Set)localObject);
        }
        for (;;)
        {
          i += 1;
          break;
          localArrayList.add(localObject);
        }
      }
    }
    return Collections.unmodifiableSet(new LinkedHashSet(localArrayList));
  }
  
  public final void getDependencies(Set<Binding<?>> paramSet1, Set<Binding<?>> paramSet2)
  {
    for (paramSet2 = this; paramSet2 != null; paramSet2 = paramSet2.parent) {
      paramSet1.addAll(paramSet2.contributors);
    }
  }
  
  public final void injectMembers(Set<T> paramSet)
  {
    throw new UnsupportedOperationException("Cannot inject members on a contributed Set<T>.");
  }
  
  public final int size()
  {
    int i = 0;
    for (SetBinding localSetBinding = this; localSetBinding != null; localSetBinding = localSetBinding.parent) {
      i += localSetBinding.contributors.size();
    }
    return i;
  }
  
  public final String toString()
  {
    int i = 1;
    StringBuilder localStringBuilder = new StringBuilder("SetBinding[");
    for (SetBinding localSetBinding = this; localSetBinding != null; localSetBinding = localSetBinding.parent)
    {
      int k = localSetBinding.contributors.size();
      int j = 0;
      while (j < k)
      {
        if (i == 0) {
          localStringBuilder.append(",");
        }
        localStringBuilder.append(localSetBinding.contributors.get(j));
        j += 1;
        i = 0;
      }
    }
    localStringBuilder.append("]");
    return localStringBuilder.toString();
  }
}


/* Location:              /home/merong/decompile/hackery-dex2jar.jar!/dagger/internal/SetBinding.class
 * Java compiler version: 6 (50.0)
 * JD-Core Version:       0.7.1
 */