14e11457f34addf5d10fe0c31cefd54c75c37b540sberlin/** 24e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * Copyright (C) 2010 Google Inc. 34e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * 44e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * Licensed under the Apache License, Version 2.0 (the "License"); 54e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * you may not use this file except in compliance with the License. 64e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * You may obtain a copy of the License at 74e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * 84e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * http://www.apache.org/licenses/LICENSE-2.0 94e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * 104e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * Unless required by applicable law or agreed to in writing, software 114e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * distributed under the License is distributed on an "AS IS" BASIS, 124e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * See the License for the specific language governing permissions and 144e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * limitations under the License. 154e11457f34addf5d10fe0c31cefd54c75c37b540sberlin */ 164e11457f34addf5d10fe0c31cefd54c75c37b540sberlin 174e11457f34addf5d10fe0c31cefd54c75c37b540sberlinpackage com.google.inject.spi; 184e11457f34addf5d10fe0c31cefd54c75c37b540sberlin 194e11457f34addf5d10fe0c31cefd54c75c37b540sberlinimport static com.google.common.base.Preconditions.checkNotNull; 204e11457f34addf5d10fe0c31cefd54c75c37b540sberlin 21b7a02b02d81c830d148355c90bc309bcd66fb592sberlinimport com.google.inject.Binder; 22b7a02b02d81c830d148355c90bc309bcd66fb592sberlin 234e11457f34addf5d10fe0c31cefd54c75c37b540sberlin/** 244e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * A request to disable circular proxies. 254e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * 264e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * @author sameb@google.com (Sam Berlin) 274e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * @since 3.0 284e11457f34addf5d10fe0c31cefd54c75c37b540sberlin */ 294e11457f34addf5d10fe0c31cefd54c75c37b540sberlinpublic final class DisableCircularProxiesOption implements Element { 304e11457f34addf5d10fe0c31cefd54c75c37b540sberlin private final Object source; 314e11457f34addf5d10fe0c31cefd54c75c37b540sberlin 324e11457f34addf5d10fe0c31cefd54c75c37b540sberlin DisableCircularProxiesOption(Object source) { 334e11457f34addf5d10fe0c31cefd54c75c37b540sberlin this.source = checkNotNull(source, "source"); 344e11457f34addf5d10fe0c31cefd54c75c37b540sberlin } 354e11457f34addf5d10fe0c31cefd54c75c37b540sberlin 364e11457f34addf5d10fe0c31cefd54c75c37b540sberlin public Object getSource() { 374e11457f34addf5d10fe0c31cefd54c75c37b540sberlin return source; 384e11457f34addf5d10fe0c31cefd54c75c37b540sberlin } 394e11457f34addf5d10fe0c31cefd54c75c37b540sberlin 404e11457f34addf5d10fe0c31cefd54c75c37b540sberlin public void applyTo(Binder binder) { 414e11457f34addf5d10fe0c31cefd54c75c37b540sberlin binder.withSource(getSource()).disableCircularProxies(); 424e11457f34addf5d10fe0c31cefd54c75c37b540sberlin } 434e11457f34addf5d10fe0c31cefd54c75c37b540sberlin 444e11457f34addf5d10fe0c31cefd54c75c37b540sberlin public <T> T acceptVisitor(ElementVisitor<T> visitor) { 454e11457f34addf5d10fe0c31cefd54c75c37b540sberlin return visitor.visit(this); 464e11457f34addf5d10fe0c31cefd54c75c37b540sberlin } 474e11457f34addf5d10fe0c31cefd54c75c37b540sberlin} 48