176c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit/* 276c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit * Copyright (C) 2007 Google Inc. 376c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit * 476c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit * Licensed under the Apache License, Version 2.0 (the "License"); 576c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit * you may not use this file except in compliance with the License. 676c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit * You may obtain a copy of the License at 776c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit * 876c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit * http://www.apache.org/licenses/LICENSE-2.0 976c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit * 1076c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit * Unless required by applicable law or agreed to in writing, software 1176c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit * distributed under the License is distributed on an "AS IS" BASIS, 1276c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1376c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit * See the License for the specific language governing permissions and 1476c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit * limitations under the License. 1576c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit */ 1676c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit 1776c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkitpackage com.google.inject.internal; 1876c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit 19b7a02b02d81c830d148355c90bc309bcd66fb592sberlinimport com.google.common.base.Objects; 2003b81a6b931a06c7697e422b218e3734a7f262cclimpbizkitimport com.google.inject.Binder; 215ae41eb77073b47e75c2dcf3766137f2352fbaf9limpbizkitimport com.google.inject.Key; 2276c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkitimport com.google.inject.spi.BindingTargetVisitor; 2376c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkitimport com.google.inject.spi.Dependency; 2476c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkitimport com.google.inject.spi.UntargettedBinding; 2576c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit 265ae41eb77073b47e75c2dcf3766137f2352fbaf9limpbizkitfinal class UntargettedBindingImpl<T> extends BindingImpl<T> implements UntargettedBinding<T> { 2776c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit 285ae41eb77073b47e75c2dcf3766137f2352fbaf9limpbizkit UntargettedBindingImpl(InjectorImpl injector, Key<T> key, Object source) { 2976c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit super(injector, key, source, new InternalFactory<T>() { 30888a264bdee08c82cccd9dcc94a8a4ac98912badsberlin public T get(Errors errors, InternalContext context, Dependency<?> dependency, boolean linked) { 3176c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit throw new AssertionError(); 3276c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit } 3376c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit }, Scoping.UNSCOPED); 3476c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit } 3576c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit 3676c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit public UntargettedBindingImpl(Object source, Key<T> key, Scoping scoping) { 3776c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit super(source, key, scoping); 3876c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit } 3976c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit 408996e8059681c083744df50c7ad9e007eda1f648limpbizkit public <V> V acceptTargetVisitor(BindingTargetVisitor<? super T, V> visitor) { 4103b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit return visitor.visit(this); 4276c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit } 4376c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit 4476c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit public BindingImpl<T> withScoping(Scoping scoping) { 4576c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit return new UntargettedBindingImpl<T>(getSource(), getKey(), scoping); 4676c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit } 4776c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit 4876c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit public BindingImpl<T> withKey(Key<T> key) { 4976c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit return new UntargettedBindingImpl<T>(getSource(), key, getScoping()); 5076c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit } 5176c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit 5203b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit public void applyTo(Binder binder) { 5303b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit getScoping().applyTo(binder.withSource(getSource()).bind(getKey())); 5403b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit } 5503b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit 5676c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit @Override public String toString() { 57d9c913acca55023ef5d76a32c3d4a51ee6b420cbsberlin return Objects.toStringHelper(UntargettedBinding.class) 5876c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit .add("key", getKey()) 5976c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit .add("source", getSource()) 6076c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit .toString(); 6196e81ba55441fd11c189d903ee2bd1806a23bd70Christian Edward Gruber } 627bcec8815e3cb9c4f910c4a9024af7a7e664c7a0sberlin@gmail.com 637bcec8815e3cb9c4f910c4a9024af7a7e664c7a0sberlin@gmail.com @Override 647bcec8815e3cb9c4f910c4a9024af7a7e664c7a0sberlin@gmail.com public boolean equals(Object obj) { 657bcec8815e3cb9c4f910c4a9024af7a7e664c7a0sberlin@gmail.com if(obj instanceof UntargettedBindingImpl) { 667bcec8815e3cb9c4f910c4a9024af7a7e664c7a0sberlin@gmail.com UntargettedBindingImpl<?> o = (UntargettedBindingImpl<?>)obj; 677bcec8815e3cb9c4f910c4a9024af7a7e664c7a0sberlin@gmail.com return getKey().equals(o.getKey()) 687bcec8815e3cb9c4f910c4a9024af7a7e664c7a0sberlin@gmail.com && getScoping().equals(o.getScoping()); 697bcec8815e3cb9c4f910c4a9024af7a7e664c7a0sberlin@gmail.com } else { 707bcec8815e3cb9c4f910c4a9024af7a7e664c7a0sberlin@gmail.com return false; 717bcec8815e3cb9c4f910c4a9024af7a7e664c7a0sberlin@gmail.com } 727bcec8815e3cb9c4f910c4a9024af7a7e664c7a0sberlin@gmail.com } 7396e81ba55441fd11c189d903ee2bd1806a23bd70Christian Edward Gruber 747bcec8815e3cb9c4f910c4a9024af7a7e664c7a0sberlin@gmail.com @Override 757bcec8815e3cb9c4f910c4a9024af7a7e664c7a0sberlin@gmail.com public int hashCode() { 767bcec8815e3cb9c4f910c4a9024af7a7e664c7a0sberlin@gmail.com return Objects.hashCode(getKey(), getScoping()); 7776c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit } 7876c24b172e5c4c4b6d51c10dd5c1f491a4033157limpbizkit} 79