/** * Copyright (C) 2011 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.inject.grapher; import com.google.common.collect.Lists; import com.google.inject.Binding; import com.google.inject.spi.ProviderBinding; import java.util.List; /** * Alias creator that creates an alias for each {@link ProviderBinding}. These {@link Binding}s * arise from an {@link InjectionPoint} for the {@link Provider} interface. Since this isn't * very interesting information, we don't render this binding on the graph, and just alias the two * nodes. * * @author bojand@google.com (Bojan Djordjevic) */ final class ProviderAliasCreator implements AliasCreator { @Override public Iterable createAliases(Iterable> bindings) { List aliases = Lists.newArrayList(); for (Binding binding : bindings) { if (binding instanceof ProviderBinding) { aliases.add(new Alias(NodeId.newTypeId(binding.getKey()), NodeId.newTypeId(((ProviderBinding) binding).getProvidedKey()))); } } return aliases; } }