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.assistedinject; 184e11457f34addf5d10fe0c31cefd54c75c37b540sberlin 194e11457f34addf5d10fe0c31cefd54c75c37b540sberlinimport com.google.inject.TypeLiteral; 204e11457f34addf5d10fe0c31cefd54c75c37b540sberlinimport com.google.inject.spi.Dependency; 214e11457f34addf5d10fe0c31cefd54c75c37b540sberlin 224e11457f34addf5d10fe0c31cefd54c75c37b540sberlinimport java.lang.reflect.Constructor; 234e11457f34addf5d10fe0c31cefd54c75c37b540sberlinimport java.lang.reflect.Method; 244e11457f34addf5d10fe0c31cefd54c75c37b540sberlinimport java.util.Set; 254e11457f34addf5d10fe0c31cefd54c75c37b540sberlin 264e11457f34addf5d10fe0c31cefd54c75c37b540sberlin/** 274e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * Details about how a method in an assisted inject factory will be assisted. 284e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * 294e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * @since 3.0 304e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * @author ramakrishna@google.com (Ramakrishna Rajanna) 314e11457f34addf5d10fe0c31cefd54c75c37b540sberlin */ 324e11457f34addf5d10fe0c31cefd54c75c37b540sberlinpublic interface AssistedMethod { 334e11457f34addf5d10fe0c31cefd54c75c37b540sberlin 344e11457f34addf5d10fe0c31cefd54c75c37b540sberlin /** 354e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * Returns the factory method that is being assisted. 364e11457f34addf5d10fe0c31cefd54c75c37b540sberlin */ 374e11457f34addf5d10fe0c31cefd54c75c37b540sberlin Method getFactoryMethod(); 384e11457f34addf5d10fe0c31cefd54c75c37b540sberlin 394e11457f34addf5d10fe0c31cefd54c75c37b540sberlin /** 404e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * Returns the implementation type that will be created when the method is 414e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * used. 424e11457f34addf5d10fe0c31cefd54c75c37b540sberlin */ 434e11457f34addf5d10fe0c31cefd54c75c37b540sberlin TypeLiteral<?> getImplementationType(); 444e11457f34addf5d10fe0c31cefd54c75c37b540sberlin 454e11457f34addf5d10fe0c31cefd54c75c37b540sberlin /** 464e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * Returns the constructor that will be used to construct instances of the 474e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * implementation. 484e11457f34addf5d10fe0c31cefd54c75c37b540sberlin */ 494e11457f34addf5d10fe0c31cefd54c75c37b540sberlin Constructor<?> getImplementationConstructor(); 504e11457f34addf5d10fe0c31cefd54c75c37b540sberlin 514e11457f34addf5d10fe0c31cefd54c75c37b540sberlin /** 524e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * Returns all non-assisted dependencies required to construct and inject 534e11457f34addf5d10fe0c31cefd54c75c37b540sberlin * the implementation. 544e11457f34addf5d10fe0c31cefd54c75c37b540sberlin */ 554e11457f34addf5d10fe0c31cefd54c75c37b540sberlin Set<Dependency<?>> getDependencies(); 564e11457f34addf5d10fe0c31cefd54c75c37b540sberlin} 57