| <?xml version="1.0" encoding="iso-8859-1" standalone="no"?> |
| <!-- Generated by the JDiff Javadoc doclet --> |
| <!-- (http://www.jdiff.org) --> |
| <!-- on Tue Apr 28 17:33:25 EDT 2015 --> |
| |
| <api |
| xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' |
| xsi:noNamespaceSchemaLocation='api.xsd' |
| name="4.0" |
| jdversion="1.1.1"> |
| |
| <!-- Command line arguments = -doclet jdiff.JDiff -docletpath /usr/local/google/home/cgdecker/Projects/guice/lib/build/jdiff/jdiff.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/jdiff/xerces.jar -classpath /usr/local/google/home/cgdecker/Projects/guice/lib/aopalliance.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/guava-16.0.1.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/javax.inject.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/asm-5.0.3.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/bnd-0.0.384.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/cglib-3.1.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/commons-logging-1.0.4.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/easymock.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/felix-2.0.5.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/guava-testlib-16.0.1.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/jarjar-1.1.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/javax.inject-tck.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/jsr305.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/junit.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/munge.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/safesax.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/spring-beans.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/spring-core.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/dagger-adapter/lib/dagger-2.0.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/antlr-2.7.5h3.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/aopalliance.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/cglib-nodep-3.0.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/commons-collections.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/commons-io.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/commons-logging-1.0.4.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/db4o-6.4.14.8131-java5.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/dom4j-1.6.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/easymock.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/ejb3-persistence.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/hibernate-annotations.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/hibernate-entitymanager.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/hibernate-search.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/hibernate3.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/hsqldb.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/javassist.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/jaxen-1.1-beta-7.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/jboss-archive-browsing.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/jta.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/log4j-1.2.14.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/ognl-2.6.7.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/oro-2.0.8.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/servlet-api-2.5.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/xwork-2.0.4.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/ant-1.6.5.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/commons-fileupload-1.2.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/commons-io-1.3.2.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/commons-logging-1.0.4.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/core-3.1.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/freemarker-2.3.16.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/javassist.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/jetty-6.1.0.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/jetty-util-6.1.0.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/jsp-2.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/jsp-api-2.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/ognl-3.0.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/servlet-api-2.5.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/struts2-core-2.2.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/xwork-core-2.2.1.jar:/usr/local/google/home/cgdecker/Projects/guice/build/classes -doclet jdiff.JDiff -docletpath /usr/local/google/home/cgdecker/Projects/guice/lib/build/jdiff/jdiff.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/jdiff/xerces.jar -apidir build/docs/latest-api-diffs -apiname 4.0 --> |
| <package name="com.google.inject"> |
| <!-- start class com.google.inject.AbstractModule --> |
| <class name="AbstractModule" extends="java.lang.Object" |
| abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <implements name="com.google.inject.Module"/> |
| <constructor name="AbstractModule" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| </constructor> |
| <method name="configure" |
| abstract="false" native="false" synchronized="true" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| <param name="builder" type="com.google.inject.Binder"/> |
| </method> |
| <method name="configure" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Configures a {@link Binder} via the exposed methods.]]> |
| </doc> |
| </method> |
| <method name="binder" return="com.google.inject.Binder" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Gets direct access to the underlying {@code Binder}.]]> |
| </doc> |
| </method> |
| <method name="bindScope" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> |
| <param name="scope" type="com.google.inject.Scope"/> |
| <doc> |
| <![CDATA[@see Binder#bindScope(Class, Scope)]]> |
| </doc> |
| </method> |
| <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder<T>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="key" type="com.google.inject.Key<T>"/> |
| <doc> |
| <![CDATA[@see Binder#bind(Key)]]> |
| </doc> |
| </method> |
| <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> |
| <doc> |
| <![CDATA[@see Binder#bind(TypeLiteral)]]> |
| </doc> |
| </method> |
| <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="clazz" type="java.lang.Class<T>"/> |
| <doc> |
| <![CDATA[@see Binder#bind(Class)]]> |
| </doc> |
| </method> |
| <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[@see Binder#bindConstant()]]> |
| </doc> |
| </method> |
| <method name="install" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="module" type="com.google.inject.Module"/> |
| <doc> |
| <![CDATA[@see Binder#install(Module)]]> |
| </doc> |
| </method> |
| <method name="addError" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="message" type="java.lang.String"/> |
| <param name="arguments" type="java.lang.Object[]"/> |
| <doc> |
| <![CDATA[@see Binder#addError(String, Object[])]]> |
| </doc> |
| </method> |
| <method name="addError" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="t" type="java.lang.Throwable"/> |
| <doc> |
| <![CDATA[@see Binder#addError(Throwable)]]> |
| </doc> |
| </method> |
| <method name="addError" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="message" type="com.google.inject.spi.Message"/> |
| <doc> |
| <![CDATA[@see Binder#addError(Message) |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="requestInjection" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="instance" type="java.lang.Object"/> |
| <doc> |
| <![CDATA[@see Binder#requestInjection(Object) |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="requestStaticInjection" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="types" type="java.lang.Class[]"/> |
| <doc> |
| <![CDATA[@see Binder#requestStaticInjection(Class[])]]> |
| </doc> |
| </method> |
| <method name="bindInterceptor" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="classMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>"/> |
| <param name="methodMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>"/> |
| <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/> |
| <doc> |
| <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher, |
| com.google.inject.matcher.Matcher, |
| org.aopalliance.intercept.MethodInterceptor[])]]> |
| </doc> |
| </method> |
| <method name="requireBinding" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="key" type="com.google.inject.Key<?>"/> |
| <doc> |
| <![CDATA[Adds a dependency from this module to {@code key}. When the injector is |
| created, Guice will report an error if {@code key} cannot be injected. |
| Note that this requirement may be satisfied by implicit binding, such as |
| a public no-arguments constructor. |
| |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="requireBinding" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.Class<?>"/> |
| <doc> |
| <![CDATA[Adds a dependency from this module to {@code type}. When the injector is |
| created, Guice will report an error if {@code type} cannot be injected. |
| Note that this requirement may be satisfied by implicit binding, such as |
| a public no-arguments constructor. |
| |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="getProvider" return="com.google.inject.Provider<T>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="key" type="com.google.inject.Key<T>"/> |
| <doc> |
| <![CDATA[@see Binder#getProvider(Key) |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="getProvider" return="com.google.inject.Provider<T>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.Class<T>"/> |
| <doc> |
| <![CDATA[@see Binder#getProvider(Class) |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="convertToTypes" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> |
| <param name="converter" type="com.google.inject.spi.TypeConverter"/> |
| <doc> |
| <![CDATA[@see Binder#convertToTypes |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="currentStage" return="com.google.inject.Stage" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[@see Binder#currentStage() |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.Class<T>"/> |
| <doc> |
| <![CDATA[@see Binder#getMembersInjector(Class) |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="type" type="com.google.inject.TypeLiteral<T>"/> |
| <doc> |
| <![CDATA[@see Binder#getMembersInjector(TypeLiteral) |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="bindListener" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> |
| <param name="listener" type="com.google.inject.spi.TypeListener"/> |
| <doc> |
| <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher, |
| com.google.inject.spi.TypeListener) |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="bindListener" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="bindingMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.Binding<?>>"/> |
| <param name="listener" type="com.google.inject.spi.ProvisionListener[]"/> |
| <doc> |
| <![CDATA[@see Binder#bindListener(Matcher, ProvisionListener...) |
| @since 4.0]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[A support class for {@link Module}s which reduces repetition and results in |
| a more readable configuration. Simply extend this class, implement {@link |
| #configure()}, and call the inherited methods which mirror those found in |
| {@link Binder}. For example: |
| |
| <pre> |
| public class MyModule extends AbstractModule { |
| protected void configure() { |
| bind(Service.class).to(ServiceImpl.class).in(Singleton.class); |
| bind(CreditCardPaymentService.class); |
| bind(PaymentService.class).to(CreditCardPaymentService.class); |
| bindConstant().annotatedWith(Names.named("port")).to(8080); |
| } |
| } |
| </pre> |
| |
| @author crazybob@google.com (Bob Lee)]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.AbstractModule --> |
| <!-- start interface com.google.inject.Binder --> |
| <interface name="Binder" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <method name="bindInterceptor" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="classMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>"/> |
| <param name="methodMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>"/> |
| <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/> |
| <doc> |
| <![CDATA[Binds method interceptor[s] to methods matched by class and method matchers. A method is |
| eligible for interception if: |
| |
| <ul> |
| <li>Guice created the instance the method is on</li> |
| <li>Neither the enclosing type nor the method is final</li> |
| <li>And the method is package-private, protected, or public</li> |
| </ul> |
| |
| @param classMatcher matches classes the interceptor should apply to. For |
| example: {@code only(Runnable.class)}. |
| @param methodMatcher matches methods the interceptor should apply to. For |
| example: {@code annotatedWith(Transactional.class)}. |
| @param interceptors to bind. The interceptors are called in the order they |
| are given.]]> |
| </doc> |
| </method> |
| <method name="bindScope" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> |
| <param name="scope" type="com.google.inject.Scope"/> |
| <doc> |
| <![CDATA[Binds a scope to an annotation.]]> |
| </doc> |
| </method> |
| <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder<T>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="key" type="com.google.inject.Key<T>"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link Binder}.]]> |
| </doc> |
| </method> |
| <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link Binder}.]]> |
| </doc> |
| </method> |
| <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.Class<T>"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link Binder}.]]> |
| </doc> |
| </method> |
| <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link Binder}.]]> |
| </doc> |
| </method> |
| <method name="requestInjection" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="com.google.inject.TypeLiteral<T>"/> |
| <param name="instance" type="T"/> |
| <doc> |
| <![CDATA[Upon successful creation, the {@link Injector} will inject instance fields |
| and methods of the given object. |
| |
| @param type of instance |
| @param instance for which members will be injected |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="requestInjection" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="instance" type="java.lang.Object"/> |
| <doc> |
| <![CDATA[Upon successful creation, the {@link Injector} will inject instance fields |
| and methods of the given object. |
| |
| @param instance for which members will be injected |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="requestStaticInjection" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="types" type="java.lang.Class[]"/> |
| <doc> |
| <![CDATA[Upon successful creation, the {@link Injector} will inject static fields |
| and methods in the given classes. |
| |
| @param types for which static members will be injected]]> |
| </doc> |
| </method> |
| <method name="install" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="module" type="com.google.inject.Module"/> |
| <doc> |
| <![CDATA[Uses the given module to configure more bindings.]]> |
| </doc> |
| </method> |
| <method name="currentStage" return="com.google.inject.Stage" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Gets the current stage.]]> |
| </doc> |
| </method> |
| <method name="addError" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="message" type="java.lang.String"/> |
| <param name="arguments" type="java.lang.Object[]"/> |
| <doc> |
| <![CDATA[Records an error message which will be presented to the user at a later |
| time. Unlike throwing an exception, this enable us to continue |
| configuring the Injector and discover more errors. Uses {@link |
| String#format(String, Object[])} to insert the arguments into the |
| message.]]> |
| </doc> |
| </method> |
| <method name="addError" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="t" type="java.lang.Throwable"/> |
| <doc> |
| <![CDATA[Records an exception, the full details of which will be logged, and the |
| message of which will be presented to the user at a later |
| time. If your Module calls something that you worry may fail, you should |
| catch the exception and pass it into this.]]> |
| </doc> |
| </method> |
| <method name="addError" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="message" type="com.google.inject.spi.Message"/> |
| <doc> |
| <![CDATA[Records an error message to be presented to the user at a later time. |
| |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="getProvider" return="com.google.inject.Provider<T>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="key" type="com.google.inject.Key<T>"/> |
| <doc> |
| <![CDATA[Returns the provider used to obtain instances for the given injection key. |
| The returned provider will not be valid until the {@link Injector} has been |
| created. The provider will throw an {@code IllegalStateException} if you |
| try to use it beforehand. |
| |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="getProvider" return="com.google.inject.Provider<T>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="dependency" type="com.google.inject.spi.Dependency<T>"/> |
| <doc> |
| <![CDATA[Returns the provider used to obtain instances for the given injection key. |
| The returned provider will be attached to the injection point and will |
| follow the nullability specified in the dependency. |
| Additionally, the returned provider will not be valid until the {@link Injector} |
| has been created. The provider will throw an {@code IllegalStateException} if you |
| try to use it beforehand. |
| |
| @since 4.0]]> |
| </doc> |
| </method> |
| <method name="getProvider" return="com.google.inject.Provider<T>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.Class<T>"/> |
| <doc> |
| <![CDATA[Returns the provider used to obtain instances for the given injection type. |
| The returned provider will not be valid until the {@link Injector} has been |
| created. The provider will throw an {@code IllegalStateException} if you |
| try to use it beforehand. |
| |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> |
| <doc> |
| <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances |
| of the given type {@code T}. The returned members injector will not be valid until the main |
| {@link Injector} has been created. The members injector will throw an {@code |
| IllegalStateException} if you try to use it beforehand. |
| |
| @param typeLiteral type to get members injector for |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.Class<T>"/> |
| <doc> |
| <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances |
| of the given type {@code T}. The returned members injector will not be valid until the main |
| {@link Injector} has been created. The members injector will throw an {@code |
| IllegalStateException} if you try to use it beforehand. |
| |
| @param type type to get members injector for |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="convertToTypes" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> |
| <param name="converter" type="com.google.inject.spi.TypeConverter"/> |
| <doc> |
| <![CDATA[Binds a type converter. The injector will use the given converter to |
| convert string constants to matching types as needed. |
| |
| @param typeMatcher matches types the converter can handle |
| @param converter converts values |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="bindListener" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> |
| <param name="listener" type="com.google.inject.spi.TypeListener"/> |
| <doc> |
| <![CDATA[Registers a listener for injectable types. Guice will notify the listener when it encounters |
| injectable types matched by the given type matcher. |
| |
| @param typeMatcher that matches injectable types the listener should be notified of |
| @param listener for injectable types matched by typeMatcher |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="bindListener" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="bindingMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.Binding<?>>"/> |
| <param name="listeners" type="com.google.inject.spi.ProvisionListener[]"/> |
| <doc> |
| <![CDATA[Registers listeners for provisioned objects. Guice will notify the |
| listeners just before and after the object is provisioned. Provisioned |
| objects that are also injectable (everything except objects provided |
| through Providers) can also be notified through TypeListeners registered in |
| {@link #bindListener}. |
| |
| @param bindingMatcher that matches bindings of provisioned objects the listener |
| should be notified of |
| @param listeners for provisioned objects matched by bindingMatcher |
| @since 4.0]]> |
| </doc> |
| </method> |
| <method name="withSource" return="com.google.inject.Binder" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="source" type="java.lang.Object"/> |
| <doc> |
| <![CDATA[Returns a binder that uses {@code source} as the reference location for |
| configuration errors. This is typically a {@link StackTraceElement} |
| for {@code .java} source but it could any binding source, such as the |
| path to a {@code .properties} file. |
| |
| @param source any object representing the source location and has a |
| concise {@link Object#toString() toString()} value |
| @return a binder that shares its configuration with this binder |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="skipSources" return="com.google.inject.Binder" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="classesToSkip" type="java.lang.Class[]"/> |
| <doc> |
| <![CDATA[Returns a binder that skips {@code classesToSkip} when identify the |
| calling code. The caller's {@link StackTraceElement} is used to locate |
| the source of configuration errors. |
| |
| @param classesToSkip library classes that create bindings on behalf of |
| their clients. |
| @return a binder that shares its configuration with this binder. |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="newPrivateBinder" return="com.google.inject.PrivateBinder" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Creates a new private child environment for bindings and other configuration. The returned |
| binder can be used to add and configuration information in this environment. See {@link |
| PrivateModule} for details. |
| |
| @return a binder that inherits configuration from this binder. Only exposed configuration on |
| the returned binder will be visible to this binder. |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="requireExplicitBindings" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Instructs the Injector that bindings must be listed in a Module in order to |
| be injected. Classes that are not explicitly bound in a module cannot be |
| injected. Bindings created through a linked binding |
| (<code>bind(Foo.class).to(FooImpl.class)</code>) are allowed, but the |
| implicit binding (<code>FooImpl</code>) cannot be directly injected unless |
| it is also explicitly bound (<code>bind(FooImpl.class)</code>). |
| <p> |
| Tools can still retrieve bindings for implicit bindings (bindings created |
| through a linked binding) if explicit bindings are required, however |
| {@link Binding#getProvider} will fail. |
| <p> |
| By default, explicit bindings are not required. |
| <p> |
| If a parent injector requires explicit bindings, then all child injectors |
| (and private modules within that injector) also require explicit bindings. |
| If a parent does not require explicit bindings, a child injector or private |
| module may optionally declare itself as requiring explicit bindings. If it |
| does, the behavior is limited only to that child or any grandchildren. No |
| siblings of the child will require explicit bindings. |
| <p> |
| In the absence of an explicit binding for the target, linked bindings in |
| child injectors create a binding for the target in the parent. Since this |
| behavior can be surprising, it causes an error instead if explicit bindings |
| are required. To avoid this error, add an explicit binding for the target, |
| either in the child or the parent. |
| |
| @since 3.0]]> |
| </doc> |
| </method> |
| <method name="disableCircularProxies" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Prevents Guice from constructing a {@link Proxy} when a circular dependency |
| is found. By default, circular proxies are not disabled. |
| <p> |
| If a parent injector disables circular proxies, then all child injectors |
| (and private modules within that injector) also disable circular proxies. |
| If a parent does not disable circular proxies, a child injector or private |
| module may optionally declare itself as disabling circular proxies. If it |
| does, the behavior is limited only to that child or any grandchildren. No |
| siblings of the child will disable circular proxies. |
| |
| @since 3.0]]> |
| </doc> |
| </method> |
| <method name="requireAtInjectOnConstructors" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Requires that a {@literal @}{@link Inject} annotation exists on a constructor in order for |
| Guice to consider it an eligible injectable class. By default, Guice will inject classes that |
| have a no-args constructor if no {@literal @}{@link Inject} annotation exists on any |
| constructor. |
| <p> |
| If the class is bound using {@link LinkedBindingBuilder#toConstructor}, Guice will still inject |
| that constructor regardless of annotations. |
| |
| @since 4.0]]> |
| </doc> |
| </method> |
| <method name="requireExactBindingAnnotations" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Requires that Guice finds an exactly matching binding annotation. This disables the |
| error-prone feature in Guice where it can substitute a binding for |
| <code>{@literal @}Named Foo</code> when attempting to inject |
| <code>{@literal @}Named("foo") Foo</code>. |
| |
| @since 4.0]]> |
| </doc> |
| </method> |
| <method name="scanModulesForAnnotatedMethods" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="scanner" type="com.google.inject.spi.ModuleAnnotatedMethodScanner"/> |
| <doc> |
| <![CDATA[Adds a scanner that will look in all installed modules for annotations the scanner can parse, |
| and binds them like {@literal @}Provides methods. Scanners apply to all modules installed in |
| the injector. Scanners installed in child injectors or private modules do not impact modules in |
| siblings or parents, however scanners installed in parents do apply to all child injectors and |
| private modules. |
| |
| @since 4.0]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[Collects configuration information (primarily <i>bindings</i>) which will be |
| used to create an {@link Injector}. Guice provides this object to your |
| application's {@link Module} implementors so they may each contribute |
| their own bindings and other registrations. |
| |
| <h3>The Guice Binding EDSL</h3> |
| |
| Guice uses an <i>embedded domain-specific language</i>, or EDSL, to help you |
| create bindings simply and readably. This approach is great for overall |
| usability, but it does come with a small cost: <b>it is difficult to |
| learn how to use the Binding EDSL by reading |
| method-level javadocs</b>. Instead, you should consult the series of |
| examples below. To save space, these examples omit the opening |
| {@code binder}, just as you will if your module extends |
| {@link AbstractModule}. |
| |
| <pre> |
| bind(ServiceImpl.class);</pre> |
| |
| This statement does essentially nothing; it "binds the {@code ServiceImpl} |
| class to itself" and does not change Guice's default behavior. You may still |
| want to use this if you prefer your {@link Module} class to serve as an |
| explicit <i>manifest</i> for the services it provides. Also, in rare cases, |
| Guice may be unable to validate a binding at injector creation time unless it |
| is given explicitly. |
| |
| <pre> |
| bind(Service.class).to(ServiceImpl.class);</pre> |
| |
| Specifies that a request for a {@code Service} instance with no binding |
| annotations should be treated as if it were a request for a |
| {@code ServiceImpl} instance. This <i>overrides</i> the function of any |
| {@link ImplementedBy @ImplementedBy} or {@link ProvidedBy @ProvidedBy} |
| annotations found on {@code Service}, since Guice will have already |
| "moved on" to {@code ServiceImpl} before it reaches the point when it starts |
| looking for these annotations. |
| |
| <pre> |
| bind(Service.class).toProvider(ServiceProvider.class);</pre> |
| |
| In this example, {@code ServiceProvider} must extend or implement |
| {@code Provider<Service>}. This binding specifies that Guice should resolve |
| an unannotated injection request for {@code Service} by first resolving an |
| instance of {@code ServiceProvider} in the regular way, then calling |
| {@link Provider#get get()} on the resulting Provider instance to obtain the |
| {@code Service} instance. |
| |
| <p>The {@link Provider} you use here does not have to be a "factory"; that |
| is, a provider which always <i>creates</i> each instance it provides. |
| However, this is generally a good practice to follow. You can then use |
| Guice's concept of {@link Scope scopes} to guide when creation should happen |
| -- "letting Guice work for you". |
| |
| <pre> |
| bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class);</pre> |
| |
| Like the previous example, but only applies to injection requests that use |
| the binding annotation {@code @Red}. If your module also includes bindings |
| for particular <i>values</i> of the {@code @Red} annotation (see below), |
| then this binding will serve as a "catch-all" for any values of {@code @Red} |
| that have no exact match in the bindings. |
| |
| <pre> |
| bind(ServiceImpl.class).in(Singleton.class); |
| // or, alternatively |
| bind(ServiceImpl.class).in(Scopes.SINGLETON);</pre> |
| |
| Either of these statements places the {@code ServiceImpl} class into |
| singleton scope. Guice will create only one instance of {@code ServiceImpl} |
| and will reuse it for all injection requests of this type. Note that it is |
| still possible to bind another instance of {@code ServiceImpl} if the second |
| binding is qualified by an annotation as in the previous example. Guice is |
| not overly concerned with <i>preventing</i> you from creating multiple |
| instances of your "singletons", only with <i>enabling</i> your application to |
| share only one instance if that's all you tell Guice you need. |
| |
| <p><b>Note:</b> a scope specified in this way <i>overrides</i> any scope that |
| was specified with an annotation on the {@code ServiceImpl} class. |
| |
| <p>Besides {@link Singleton}/{@link Scopes#SINGLETON}, there are |
| servlet-specific scopes available in |
| {@code com.google.inject.servlet.ServletScopes}, and your Modules can |
| contribute their own custom scopes for use here as well. |
| |
| <pre> |
| bind(new TypeLiteral<PaymentService<CreditCard>>() {}) |
| .to(CreditCardPaymentService.class);</pre> |
| |
| This admittedly odd construct is the way to bind a parameterized type. It |
| tells Guice how to honor an injection request for an element of type |
| {@code PaymentService<CreditCard>}. The class |
| {@code CreditCardPaymentService} must implement the |
| {@code PaymentService<CreditCard>} interface. Guice cannot currently bind or |
| inject a generic type, such as {@code Set<E>}; all type parameters must be |
| fully specified. |
| |
| <pre> |
| bind(Service.class).toInstance(new ServiceImpl()); |
| // or, alternatively |
| bind(Service.class).toInstance(SomeLegacyRegistry.getService());</pre> |
| |
| In this example, your module itself, <i>not Guice</i>, takes responsibility |
| for obtaining a {@code ServiceImpl} instance, then asks Guice to always use |
| this single instance to fulfill all {@code Service} injection requests. When |
| the {@link Injector} is created, it will automatically perform field |
| and method injection for this instance, but any injectable constructor on |
| {@code ServiceImpl} is simply ignored. Note that using this approach results |
| in "eager loading" behavior that you can't control. |
| |
| <pre> |
| bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre> |
| |
| Sets up a constant binding. Constant injections must always be annotated. |
| When a constant binding's value is a string, it is eligile for conversion to |
| all primitive types, to {@link Enum#valueOf(Class, String) all enums}, and to |
| {@link Class#forName class literals}. Conversions for other types can be |
| configured using {@link #convertToTypes(Matcher, TypeConverter) |
| convertToTypes()}. |
| |
| <pre> |
| {@literal @}Color("red") Color red; // A member variable (field) |
| . . . |
| red = MyModule.class.getDeclaredField("red").getAnnotation(Color.class); |
| bind(Service.class).annotatedWith(red).to(RedService.class);</pre> |
| |
| If your binding annotation has parameters you can apply different bindings to |
| different specific values of your annotation. Getting your hands on the |
| right instance of the annotation is a bit of a pain -- one approach, shown |
| above, is to apply a prototype annotation to a field in your module class, so |
| that you can read this annotation instance and give it to Guice. |
| |
| <pre> |
| bind(Service.class) |
| .annotatedWith(Names.named("blue")) |
| .to(BlueService.class);</pre> |
| |
| Differentiating by names is a common enough use case that we provided a |
| standard annotation, {@link com.google.inject.name.Named @Named}. Because of |
| Guice's library support, binding by name is quite easier than in the |
| arbitrary binding annotation case we just saw. However, remember that these |
| names will live in a single flat namespace with all the other names used in |
| your application. |
| |
| <pre> |
| Constructor<T> loneCtor = getLoneCtorFromServiceImplViaReflection(); |
| bind(ServiceImpl.class) |
| .toConstructor(loneCtor);</pre> |
| |
| In this example, we directly tell Guice which constructor to use in a concrete |
| class implementation. It means that we do not need to place {@literal @}Inject |
| on any of the constructors and that Guice treats the provided constructor as though |
| it were annotated so. It is useful for cases where you cannot modify existing |
| classes and is a bit simpler than using a {@link Provider}. |
| |
| <p>The above list of examples is far from exhaustive. If you can think of |
| how the concepts of one example might coexist with the concepts from another, |
| you can most likely weave the two together. If the two concepts make no |
| sense with each other, you most likely won't be able to do it. In a few |
| cases Guice will let something bogus slip by, and will then inform you of |
| the problems at runtime, as soon as you try to create your Injector. |
| |
| <p>The other methods of Binder such as {@link #bindScope}, |
| {@link #bindInterceptor}, {@link #install}, {@link #requestStaticInjection}, |
| {@link #addError} and {@link #currentStage} are not part of the Binding EDSL; |
| you can learn how to use these in the usual way, from the method |
| documentation. |
| |
| @author crazybob@google.com (Bob Lee) |
| @author jessewilson@google.com (Jesse Wilson) |
| @author kevinb@google.com (Kevin Bourrillion)]]> |
| </doc> |
| </interface> |
| <!-- end interface com.google.inject.Binder --> |
| <!-- start interface com.google.inject.Binding --> |
| <interface name="Binding" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <implements name="com.google.inject.spi.Element"/> |
| <method name="getKey" return="com.google.inject.Key<T>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Returns the key for this binding.]]> |
| </doc> |
| </method> |
| <method name="getProvider" return="com.google.inject.Provider<T>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Returns the scoped provider guice uses to fulfill requests for this |
| binding. |
| |
| @throws UnsupportedOperationException when invoked on a {@link Binding} |
| created via {@link com.google.inject.spi.Elements#getElements}. This |
| method is only supported on {@link Binding}s returned from an injector.]]> |
| </doc> |
| </method> |
| <method name="acceptTargetVisitor" return="V" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor<? super T, V>"/> |
| <doc> |
| <![CDATA[Accepts a target visitor. Invokes the visitor method specific to this binding's target. |
| |
| @param visitor to call back on |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="acceptScopingVisitor" return="V" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="visitor" type="com.google.inject.spi.BindingScopingVisitor<V>"/> |
| <doc> |
| <![CDATA[Accepts a scoping visitor. Invokes the visitor method specific to this binding's scoping. |
| |
| @param visitor to call back on |
| @since 2.0]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[A mapping from a key (type and optional annotation) to the strategy for getting instances of the |
| type. This interface is part of the introspection API and is intended primarily for use by |
| tools. |
| |
| <p>Bindings are created in several ways: |
| <ul> |
| <li>Explicitly in a module, via {@code bind()} and {@code bindConstant()} |
| statements: |
| <pre> |
| bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class); |
| bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre></li> |
| <li>Implicitly by the Injector by following a type's {@link ImplementedBy |
| pointer} {@link ProvidedBy annotations} or by using its {@link Inject annotated} or |
| default constructor.</li> |
| <li>By converting a bound instance to a different type.</li> |
| <li>For {@link Provider providers}, by delegating to the binding for the provided type.</li> |
| </ul> |
| |
| |
| <p>They exist on both modules and on injectors, and their behaviour is different for each: |
| <ul> |
| <li><strong>Module bindings</strong> are incomplete and cannot be used to provide instances. |
| This is because the applicable scopes and interceptors may not be known until an injector |
| is created. From a tool's perspective, module bindings are like the injector's source |
| code. They can be inspected or rewritten, but this analysis must be done statically.</li> |
| <li><strong>Injector bindings</strong> are complete and valid and can be used to provide |
| instances. From a tools' perspective, injector bindings are like reflection for an |
| injector. They have full runtime information, including the complete graph of injections |
| necessary to satisfy a binding.</li> |
| </ul> |
| |
| @param <T> the bound type. The injected is always assignable to this type. |
| |
| @author crazybob@google.com (Bob Lee) |
| @author jessewilson@google.com (Jesse Wilson)]]> |
| </doc> |
| </interface> |
| <!-- end interface com.google.inject.Binding --> |
| <!-- start class com.google.inject.BindingAnnotation --> |
| <class name="BindingAnnotation" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <implements name="java.lang.annotation.Annotation"/> |
| <doc> |
| <![CDATA[Annotates annotations which are used for binding. Only one such annotation |
| may apply to a single injection point. You must also annotate binder |
| annotations with {@code @Retention(RUNTIME)}. For example: |
| |
| <pre> |
| {@code @}Retention(RUNTIME) |
| {@code @}Target({ FIELD, PARAMETER, METHOD }) |
| {@code @}BindingAnnotation |
| public {@code @}interface Transactional {} |
| </pre> |
| |
| @author crazybob@google.com (Bob Lee)]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.BindingAnnotation --> |
| <!-- start class com.google.inject.ConfigurationException --> |
| <class name="ConfigurationException" extends="java.lang.RuntimeException" |
| abstract="false" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| <constructor name="ConfigurationException" type="java.lang.Iterable<com.google.inject.spi.Message>" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Creates a ConfigurationException containing {@code messages}.]]> |
| </doc> |
| </constructor> |
| <method name="withPartialValue" return="com.google.inject.ConfigurationException" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="partialValue" type="java.lang.Object"/> |
| <doc> |
| <![CDATA[Returns a copy of this configuration exception with the specified partial value.]]> |
| </doc> |
| </method> |
| <method name="getErrorMessages" return="java.util.Collection<com.google.inject.spi.Message>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Returns messages for the errors that caused this exception.]]> |
| </doc> |
| </method> |
| <method name="getPartialValue" return="E" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Returns a value that was only partially computed due to this exception. The caller can use |
| this while collecting additional configuration problems. |
| |
| @return the partial value, or {@code null} if none was set. The type of the partial value is |
| specified by the throwing method.]]> |
| </doc> |
| </method> |
| <method name="getMessage" return="java.lang.String" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| </method> |
| <doc> |
| <![CDATA[Thrown when a programming error such as a misplaced annotation, illegal binding, or unsupported |
| scope is found. Clients should catch this exception, log it, and stop execution. |
| |
| @author jessewilson@google.com (Jesse Wilson) |
| @since 2.0]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.ConfigurationException --> |
| <!-- start class com.google.inject.CreationException --> |
| <class name="CreationException" extends="java.lang.RuntimeException" |
| abstract="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <constructor name="CreationException" type="java.util.Collection<com.google.inject.spi.Message>" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Creates a CreationException containing {@code messages}.]]> |
| </doc> |
| </constructor> |
| <method name="getErrorMessages" return="java.util.Collection<com.google.inject.spi.Message>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Returns messages for the errors that caused this exception.]]> |
| </doc> |
| </method> |
| <method name="getMessage" return="java.lang.String" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| </method> |
| <doc> |
| <![CDATA[Thrown when errors occur while creating a {@link Injector}. Includes a list of encountered |
| errors. Clients should catch this exception, log it, and stop execution. |
| |
| @author crazybob@google.com (Bob Lee)]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.CreationException --> |
| <!-- start class com.google.inject.Exposed --> |
| <class name="Exposed" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <implements name="java.lang.annotation.Annotation"/> |
| <doc> |
| <![CDATA[Acccompanies a {@literal @}{@link com.google.inject.Provides Provides} method annotation in a |
| private module to indicate that the provided binding is exposed. |
| |
| @author jessewilson@google.com (Jesse Wilson) |
| @since 2.0]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.Exposed --> |
| <!-- start class com.google.inject.Guice --> |
| <class name="Guice" extends="java.lang.Object" |
| abstract="false" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| <method name="createInjector" return="com.google.inject.Injector" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="modules" type="com.google.inject.Module[]"/> |
| <doc> |
| <![CDATA[Creates an injector for the given set of modules. This is equivalent to |
| calling {@link #createInjector(Stage, Module...)} with Stage.DEVELOPMENT. |
| |
| @throws CreationException if one or more errors occur during injector |
| construction]]> |
| </doc> |
| </method> |
| <method name="createInjector" return="com.google.inject.Injector" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> |
| <doc> |
| <![CDATA[Creates an injector for the given set of modules. This is equivalent to |
| calling {@link #createInjector(Stage, Iterable)} with Stage.DEVELOPMENT. |
| |
| @throws CreationException if one or more errors occur during injector |
| creation]]> |
| </doc> |
| </method> |
| <method name="createInjector" return="com.google.inject.Injector" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="stage" type="com.google.inject.Stage"/> |
| <param name="modules" type="com.google.inject.Module[]"/> |
| <doc> |
| <![CDATA[Creates an injector for the given set of modules, in a given development |
| stage. |
| |
| @throws CreationException if one or more errors occur during injector |
| creation.]]> |
| </doc> |
| </method> |
| <method name="createInjector" return="com.google.inject.Injector" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="stage" type="com.google.inject.Stage"/> |
| <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> |
| <doc> |
| <![CDATA[Creates an injector for the given set of modules, in a given development |
| stage. |
| |
| @throws CreationException if one or more errors occur during injector |
| construction]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[The entry point to the Guice framework. Creates {@link Injector}s from |
| {@link Module}s. |
| |
| <p>Guice supports a model of development that draws clear boundaries between |
| APIs, Implementations of these APIs, Modules which configure these |
| implementations, and finally Applications which consist of a collection of |
| Modules. It is the Application, which typically defines your {@code main()} |
| method, that bootstraps the Guice Injector using the {@code Guice} class, as |
| in this example: |
| <pre> |
| public class FooApplication { |
| public static void main(String[] args) { |
| Injector injector = Guice.createInjector( |
| new ModuleA(), |
| new ModuleB(), |
| . . . |
| new FooApplicationFlagsModule(args) |
| ); |
| |
| // Now just bootstrap the application and you're done |
| FooStarter starter = injector.getInstance(FooStarter.class); |
| starter.runApplication(); |
| } |
| } |
| </pre>]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.Guice --> |
| <!-- start class com.google.inject.ImplementedBy --> |
| <class name="ImplementedBy" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <implements name="java.lang.annotation.Annotation"/> |
| <doc> |
| <![CDATA[A pointer to the default implementation of a type. |
| |
| @author crazybob@google.com (Bob Lee)]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.ImplementedBy --> |
| <!-- start class com.google.inject.Inject --> |
| <class name="Inject" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <implements name="java.lang.annotation.Annotation"/> |
| <doc> |
| <![CDATA[Annotates members of your implementation class (constructors, methods |
| and fields) into which the {@link Injector} should inject values. |
| The Injector fulfills injection requests for: |
| |
| <ul> |
| <li>Every instance it constructs. The class being constructed must have |
| exactly one of its constructors marked with {@code @Inject} or must have a |
| constructor taking no parameters. The Injector then proceeds to perform |
| field and method injections. |
| |
| <li>Pre-constructed instances passed to {@link Injector#injectMembers}, |
| {@link com.google.inject.binder.LinkedBindingBuilder#toInstance(Object)} and |
| {@link com.google.inject.binder.LinkedBindingBuilder#toProvider(javax.inject.Provider)}. |
| In this case all constructors are, of course, ignored. |
| |
| <li>Static fields and methods of classes which any {@link Module} has |
| specifically requested static injection for, using |
| {@link Binder#requestStaticInjection}. |
| </ul> |
| |
| In all cases, a member can be injected regardless of its Java access |
| specifier (private, default, protected, public). |
| |
| @author crazybob@google.com (Bob Lee)]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.Inject --> |
| <!-- start interface com.google.inject.Injector --> |
| <interface name="Injector" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <method name="injectMembers" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="instance" type="java.lang.Object"/> |
| <doc> |
| <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or |
| absence of an injectable constructor. |
| |
| <p>Whenever Guice creates an instance, it performs this injection automatically (after first |
| performing constructor injection), so if you're able to let Guice create all your objects for |
| you, you'll never need to use this method. |
| |
| @param instance to inject members on |
| |
| @see Binder#getMembersInjector(Class) for a preferred alternative that supports checks before |
| run time]]> |
| </doc> |
| </method> |
| <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> |
| <doc> |
| <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances |
| of the given type {@code T}. |
| |
| @param typeLiteral type to get members injector for |
| @see Binder#getMembersInjector(TypeLiteral) for an alternative that offers up front error |
| detection |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.Class<T>"/> |
| <doc> |
| <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances |
| of the given type {@code T}. When feasible, use {@link Binder#getMembersInjector(TypeLiteral)} |
| instead to get increased up front error detection. |
| |
| @param type type to get members injector for |
| @see Binder#getMembersInjector(Class) for an alternative that offers up front error |
| detection |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="getBindings" return="java.util.Map<com.google.inject.Key<?>, com.google.inject.Binding<?>>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Returns this injector's <strong>explicit</strong> bindings. |
| |
| <p>The returned map does not include bindings inherited from a {@link #getParent() parent |
| injector}, should one exist. The returned map is guaranteed to iterate (for example, with |
| its {@link Map#entrySet()} iterator) in the order of insertion. In other words, the order in |
| which bindings appear in user Modules. |
| |
| <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]> |
| </doc> |
| </method> |
| <method name="getAllBindings" return="java.util.Map<com.google.inject.Key<?>, com.google.inject.Binding<?>>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Returns a snapshot of this injector's bindings, <strong>both explicit and |
| just-in-time</strong>. The returned map is immutable; it contains only the bindings that were |
| present when {@code getAllBindings()} was invoked. Subsequent calls may return a map with |
| additional just-in-time bindings. |
| |
| <p>The returned map does not include bindings inherited from a {@link #getParent() parent |
| injector}, should one exist. |
| |
| <p>This method is part of the Guice SPI and is intended for use by tools and extensions. |
| |
| @since 3.0]]> |
| </doc> |
| </method> |
| <method name="getBinding" return="com.google.inject.Binding<T>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="key" type="com.google.inject.Key<T>"/> |
| <doc> |
| <![CDATA[Returns the binding for the given injection key. This will be an explicit bindings if the key |
| was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will |
| be created if necessary. |
| |
| <p>This method is part of the Guice SPI and is intended for use by tools and extensions. |
| |
| @throws ConfigurationException if this injector cannot find or create the binding.]]> |
| </doc> |
| </method> |
| <method name="getBinding" return="com.google.inject.Binding<T>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.Class<T>"/> |
| <doc> |
| <![CDATA[Returns the binding for the given type. This will be an explicit bindings if the injection key |
| was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will |
| be created if necessary. |
| |
| <p>This method is part of the Guice SPI and is intended for use by tools and extensions. |
| |
| @throws ConfigurationException if this injector cannot find or create the binding. |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="getExistingBinding" return="com.google.inject.Binding<T>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="key" type="com.google.inject.Key<T>"/> |
| <doc> |
| <![CDATA[Returns the binding if it already exists, or null if does not exist. Unlike |
| {@link #getBinding(Key)}, this does not attempt to create just-in-time bindings |
| for keys that aren't bound. |
| |
| <p> This method is part of the Guice SPI and is intended for use by tools and extensions. |
| |
| @since 3.0]]> |
| </doc> |
| </method> |
| <method name="findBindingsByType" return="java.util.List<com.google.inject.Binding<T>>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="com.google.inject.TypeLiteral<T>"/> |
| <doc> |
| <![CDATA[Returns all explicit bindings for {@code type}. |
| |
| <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]> |
| </doc> |
| </method> |
| <method name="getProvider" return="com.google.inject.Provider<T>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="key" type="com.google.inject.Key<T>"/> |
| <doc> |
| <![CDATA[Returns the provider used to obtain instances for the given injection key. When feasible, avoid |
| using this method, in favor of having Guice inject your dependencies ahead of time. |
| |
| @throws ConfigurationException if this injector cannot find or create the provider. |
| @see Binder#getProvider(Key) for an alternative that offers up front error detection]]> |
| </doc> |
| </method> |
| <method name="getProvider" return="com.google.inject.Provider<T>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.Class<T>"/> |
| <doc> |
| <![CDATA[Returns the provider used to obtain instances for the given type. When feasible, avoid |
| using this method, in favor of having Guice inject your dependencies ahead of time. |
| |
| @throws ConfigurationException if this injector cannot find or create the provider. |
| @see Binder#getProvider(Class) for an alternative that offers up front error detection]]> |
| </doc> |
| </method> |
| <method name="getInstance" return="T" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="key" type="com.google.inject.Key<T>"/> |
| <doc> |
| <![CDATA[Returns the appropriate instance for the given injection key; equivalent to {@code |
| getProvider(key).get()}. When feasible, avoid using this method, in favor of having Guice |
| inject your dependencies ahead of time. |
| |
| @throws ConfigurationException if this injector cannot find or create the provider. |
| @throws ProvisionException if there was a runtime failure while providing an instance.]]> |
| </doc> |
| </method> |
| <method name="getInstance" return="T" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.Class<T>"/> |
| <doc> |
| <![CDATA[Returns the appropriate instance for the given injection type; equivalent to {@code |
| getProvider(type).get()}. When feasible, avoid using this method, in favor of having Guice |
| inject your dependencies ahead of time. |
| |
| @throws ConfigurationException if this injector cannot find or create the provider. |
| @throws ProvisionException if there was a runtime failure while providing an instance.]]> |
| </doc> |
| </method> |
| <method name="getParent" return="com.google.inject.Injector" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Returns this injector's parent, or {@code null} if this is a top-level injector. |
| |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="createChildInjector" return="com.google.inject.Injector" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> |
| <doc> |
| <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes, |
| interceptors and type converters are inherited -- they are visible to the child injector. |
| Elements of the child injector are not visible to its parent. |
| |
| <p>Just-in-time bindings created for child injectors will be created in an ancestor injector |
| whenever possible. This allows for scoped instances to be shared between injectors. Use |
| explicit bindings to prevent bindings from being shared with the parent injector. Optional |
| injections in just-in-time bindings (created in the parent injector) may be silently |
| ignored if the optional dependencies are from the child injector. |
| |
| <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time |
| bindings. The lone exception is the key for {@code Injector.class}, which is bound by each |
| injector to itself. |
| |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="createChildInjector" return="com.google.inject.Injector" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="modules" type="com.google.inject.Module[]"/> |
| <doc> |
| <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes, |
| interceptors and type converters are inherited -- they are visible to the child injector. |
| Elements of the child injector are not visible to its parent. |
| |
| <p>Just-in-time bindings created for child injectors will be created in an ancestor injector |
| whenever possible. This allows for scoped instances to be shared between injectors. Use |
| explicit bindings to prevent bindings from being shared with the parent injector. |
| |
| <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time |
| bindings. The lone exception is the key for {@code Injector.class}, which is bound by each |
| injector to itself. |
| |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="getScopeBindings" return="java.util.Map<java.lang.Class<? extends java.lang.annotation.Annotation>, com.google.inject.Scope>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Returns a map containing all scopes in the injector. The maps keys are scoping annotations |
| like {@code Singleton.class}, and the values are scope instances, such as {@code |
| Scopes.SINGLETON}. The returned map is immutable. |
| |
| <p>This method is part of the Guice SPI and is intended for use by tools and extensions. |
| |
| @since 3.0]]> |
| </doc> |
| </method> |
| <method name="getTypeConverterBindings" return="java.util.Set<com.google.inject.spi.TypeConverterBinding>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Returns a set containing all type converter bindings in the injector. The returned set is |
| immutable. |
| |
| <p>This method is part of the Guice SPI and is intended for use by tools and extensions. |
| |
| @since 3.0]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[Builds the graphs of objects that make up your application. The injector tracks the dependencies |
| for each type and uses bindings to inject them. This is the core of Guice, although you rarely |
| interact with it directly. This "behind-the-scenes" operation is what distinguishes dependency |
| injection from its cousin, the service locator pattern. |
| |
| <p>Contains several default bindings: |
| |
| <ul> |
| <li>This {@link Injector} instance itself |
| <li>A {@code Provider<T>} for each binding of type {@code T} |
| <li>The {@link java.util.logging.Logger} for the class being injected |
| <li>The {@link Stage} in which the Injector was created |
| </ul> |
| |
| Injectors are created using the facade class {@link Guice}. |
| |
| <p>An injector can also {@link #injectMembers(Object) inject the dependencies} of |
| already-constructed instances. This can be used to interoperate with objects created by other |
| frameworks or services. |
| |
| <p>Injectors can be {@link #createChildInjector(Iterable) hierarchical}. Child injectors inherit |
| the configuration of their parent injectors, but the converse does not hold. |
| |
| <p>The injector's {@link #getBindings() internal bindings} are available for introspection. This |
| enables tools and extensions to operate on an injector reflectively. |
| |
| @author crazybob@google.com (Bob Lee) |
| @author jessewilson@google.com (Jesse Wilson)]]> |
| </doc> |
| </interface> |
| <!-- end interface com.google.inject.Injector --> |
| <!-- start class com.google.inject.Key --> |
| <class name="Key" extends="java.lang.Object" |
| abstract="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <constructor name="Key" type="java.lang.Class<? extends java.lang.annotation.Annotation>" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Constructs a new key. Derives the type from this class's type parameter. |
| |
| <p>Clients create an empty anonymous subclass. Doing so embeds the type |
| parameter in the anonymous class's type hierarchy so we can reconstitute it |
| at runtime despite erasure. |
| |
| <p>Example usage for a binding of type {@code Foo} annotated with |
| {@code @Bar}: |
| |
| <p>{@code new Key<Foo>(Bar.class) {}}.]]> |
| </doc> |
| </constructor> |
| <constructor name="Key" type="java.lang.annotation.Annotation" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Constructs a new key. Derives the type from this class's type parameter. |
| |
| <p>Clients create an empty anonymous subclass. Doing so embeds the type |
| parameter in the anonymous class's type hierarchy so we can reconstitute it |
| at runtime despite erasure. |
| |
| <p>Example usage for a binding of type {@code Foo} annotated with |
| {@code @Bar}: |
| |
| <p>{@code new Key<Foo>(new Bar()) {}}.]]> |
| </doc> |
| </constructor> |
| <constructor name="Key" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Constructs a new key. Derives the type from this class's type parameter. |
| |
| <p>Clients create an empty anonymous subclass. Doing so embeds the type |
| parameter in the anonymous class's type hierarchy so we can reconstitute it |
| at runtime despite erasure. |
| |
| <p>Example usage for a binding of type {@code Foo}: |
| |
| <p>{@code new Key<Foo>() {}}.]]> |
| </doc> |
| </constructor> |
| <method name="getTypeLiteral" return="com.google.inject.TypeLiteral<T>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Gets the key type.]]> |
| </doc> |
| </method> |
| <method name="getAnnotationType" return="java.lang.Class<? extends java.lang.annotation.Annotation>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Gets the annotation type.]]> |
| </doc> |
| </method> |
| <method name="getAnnotation" return="java.lang.annotation.Annotation" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Gets the annotation.]]> |
| </doc> |
| </method> |
| <method name="equals" return="boolean" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| <param name="o" type="java.lang.Object"/> |
| </method> |
| <method name="hashCode" return="int" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| </method> |
| <method name="toString" return="java.lang.String" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| </method> |
| <method name="get" return="com.google.inject.Key<T>" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.Class<T>"/> |
| <doc> |
| <![CDATA[Gets a key for an injection type.]]> |
| </doc> |
| </method> |
| <method name="get" return="com.google.inject.Key<T>" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.Class<T>"/> |
| <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> |
| <doc> |
| <![CDATA[Gets a key for an injection type and an annotation type.]]> |
| </doc> |
| </method> |
| <method name="get" return="com.google.inject.Key<T>" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.Class<T>"/> |
| <param name="annotation" type="java.lang.annotation.Annotation"/> |
| <doc> |
| <![CDATA[Gets a key for an injection type and an annotation.]]> |
| </doc> |
| </method> |
| <method name="get" return="com.google.inject.Key<?>" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.reflect.Type"/> |
| <doc> |
| <![CDATA[Gets a key for an injection type.]]> |
| </doc> |
| </method> |
| <method name="get" return="com.google.inject.Key<?>" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.reflect.Type"/> |
| <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> |
| <doc> |
| <![CDATA[Gets a key for an injection type and an annotation type.]]> |
| </doc> |
| </method> |
| <method name="get" return="com.google.inject.Key<?>" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.reflect.Type"/> |
| <param name="annotation" type="java.lang.annotation.Annotation"/> |
| <doc> |
| <![CDATA[Gets a key for an injection type and an annotation.]]> |
| </doc> |
| </method> |
| <method name="get" return="com.google.inject.Key<T>" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> |
| <doc> |
| <![CDATA[Gets a key for an injection type.]]> |
| </doc> |
| </method> |
| <method name="get" return="com.google.inject.Key<T>" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> |
| <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> |
| <doc> |
| <![CDATA[Gets a key for an injection type and an annotation type.]]> |
| </doc> |
| </method> |
| <method name="get" return="com.google.inject.Key<T>" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> |
| <param name="annotation" type="java.lang.annotation.Annotation"/> |
| <doc> |
| <![CDATA[Gets a key for an injection type and an annotation.]]> |
| </doc> |
| </method> |
| <method name="ofType" return="com.google.inject.Key<T>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.Class<T>"/> |
| <doc> |
| <![CDATA[Returns a new key of the specified type with the same annotation as this |
| key. |
| |
| @since 3.0]]> |
| </doc> |
| </method> |
| <method name="ofType" return="com.google.inject.Key<?>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.reflect.Type"/> |
| <doc> |
| <![CDATA[Returns a new key of the specified type with the same annotation as this |
| key. |
| |
| @since 3.0]]> |
| </doc> |
| </method> |
| <method name="ofType" return="com.google.inject.Key<T>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="com.google.inject.TypeLiteral<T>"/> |
| <doc> |
| <![CDATA[Returns a new key of the specified type with the same annotation as this |
| key. |
| |
| @since 3.0]]> |
| </doc> |
| </method> |
| <method name="hasAttributes" return="boolean" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Returns true if this key has annotation attributes. |
| |
| @since 3.0]]> |
| </doc> |
| </method> |
| <method name="withoutAttributes" return="com.google.inject.Key<T>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Returns this key without annotation attributes, i.e. with only the |
| annotation type. |
| |
| @since 3.0]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[Binding key consisting of an injection type and an optional annotation. |
| Matches the type and annotation at a point of injection. |
| |
| <p>For example, {@code Key.get(Service.class, Transactional.class)} will |
| match: |
| |
| <pre> |
| {@literal @}Inject |
| public void setService({@literal @}Transactional Service service) { |
| ... |
| } |
| </pre> |
| |
| <p>{@code Key} supports generic types via subclassing just like {@link |
| TypeLiteral}. |
| |
| <p>Keys do not differentiate between primitive types (int, char, etc.) and |
| their corresponding wrapper types (Integer, Character, etc.). Primitive |
| types will be replaced with their wrapper types when keys are created. |
| |
| @author crazybob@google.com (Bob Lee)]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.Key --> |
| <!-- start interface com.google.inject.MembersInjector --> |
| <interface name="MembersInjector" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <method name="injectMembers" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="instance" type="T"/> |
| <doc> |
| <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or |
| absence of an injectable constructor. |
| |
| <p>Whenever Guice creates an instance, it performs this injection automatically (after first |
| performing constructor injection), so if you're able to let Guice create all your objects for |
| you, you'll never need to use this method. |
| |
| @param instance to inject members on. May be {@code null}.]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[Injects dependencies into the fields and methods on instances of type {@code T}. Ignores the |
| presence or absence of an injectable constructor. |
| |
| @param <T> type to inject members of |
| |
| @author crazybob@google.com (Bob Lee) |
| @author jessewilson@google.com (Jesse Wilson) |
| @since 2.0]]> |
| </doc> |
| </interface> |
| <!-- end interface com.google.inject.MembersInjector --> |
| <!-- start interface com.google.inject.Module --> |
| <interface name="Module" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <method name="configure" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="binder" type="com.google.inject.Binder"/> |
| <doc> |
| <![CDATA[Contributes bindings and other configurations for this module to {@code binder}. |
| |
| <p><strong>Do not invoke this method directly</strong> to install submodules. Instead use |
| {@link Binder#install(Module)}, which ensures that {@link Provides provider methods} are |
| discovered.]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[A module contributes configuration information, typically interface |
| bindings, which will be used to create an {@link Injector}. A Guice-based |
| application is ultimately composed of little more than a set of |
| {@code Module}s and some bootstrapping code. |
| |
| <p>Your Module classes can use a more streamlined syntax by extending |
| {@link AbstractModule} rather than implementing this interface directly. |
| |
| <p>In addition to the bindings configured via {@link #configure}, bindings |
| will be created for all methods annotated with {@literal @}{@link Provides}. |
| Use scope and binding annotations on these methods to configure the |
| bindings.]]> |
| </doc> |
| </interface> |
| <!-- end interface com.google.inject.Module --> |
| <!-- start class com.google.inject.OutOfScopeException --> |
| <class name="OutOfScopeException" extends="java.lang.RuntimeException" |
| abstract="false" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| <constructor name="OutOfScopeException" type="java.lang.String" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| </constructor> |
| <constructor name="OutOfScopeException" type="java.lang.String, java.lang.Throwable" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| </constructor> |
| <constructor name="OutOfScopeException" type="java.lang.Throwable" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| </constructor> |
| <doc> |
| <![CDATA[Thrown from {@link Provider#get} when an attempt is made to access a scoped |
| object while the scope in question is not currently active. |
| |
| @author kevinb@google.com (Kevin Bourrillion) |
| @since 2.0]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.OutOfScopeException --> |
| <!-- start interface com.google.inject.PrivateBinder --> |
| <interface name="PrivateBinder" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <implements name="com.google.inject.Binder"/> |
| <method name="expose" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="key" type="com.google.inject.Key<?>"/> |
| <doc> |
| <![CDATA[Makes the binding for {@code key} available to the enclosing environment]]> |
| </doc> |
| </method> |
| <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.Class<?>"/> |
| <doc> |
| <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link |
| com.google.inject.binder.AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a |
| binding annotation.]]> |
| </doc> |
| </method> |
| <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="com.google.inject.TypeLiteral<?>"/> |
| <doc> |
| <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link |
| AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a |
| binding annotation.]]> |
| </doc> |
| </method> |
| <method name="withSource" return="com.google.inject.PrivateBinder" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="source" type="java.lang.Object"/> |
| </method> |
| <method name="skipSources" return="com.google.inject.PrivateBinder" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="classesToSkip" type="java.lang.Class[]"/> |
| </method> |
| <doc> |
| <![CDATA[Returns a binder whose configuration information is hidden from its environment by default. See |
| {@link com.google.inject.PrivateModule PrivateModule} for details. |
| |
| @author jessewilson@google.com (Jesse Wilson) |
| @since 2.0]]> |
| </doc> |
| </interface> |
| <!-- end interface com.google.inject.PrivateBinder --> |
| <!-- start class com.google.inject.PrivateModule --> |
| <class name="PrivateModule" extends="java.lang.Object" |
| abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <implements name="com.google.inject.Module"/> |
| <constructor name="PrivateModule" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| </constructor> |
| <method name="configure" |
| abstract="false" native="false" synchronized="true" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| <param name="binder" type="com.google.inject.Binder"/> |
| </method> |
| <method name="configure" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Creates bindings and other configurations private to this module. Use {@link #expose(Class) |
| expose()} to make the bindings in this module available externally.]]> |
| </doc> |
| </method> |
| <method name="expose" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="key" type="com.google.inject.Key<T>"/> |
| <doc> |
| <![CDATA[Makes the binding for {@code key} available to other modules and the injector.]]> |
| </doc> |
| </method> |
| <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.Class<?>"/> |
| <doc> |
| <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link |
| AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a |
| binding annotation.]]> |
| </doc> |
| </method> |
| <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="type" type="com.google.inject.TypeLiteral<?>"/> |
| <doc> |
| <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link |
| AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a |
| binding annotation.]]> |
| </doc> |
| </method> |
| <method name="binder" return="com.google.inject.PrivateBinder" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Returns the current binder.]]> |
| </doc> |
| </method> |
| <method name="bindScope" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> |
| <param name="scope" type="com.google.inject.Scope"/> |
| <doc> |
| <![CDATA[@see Binder#bindScope(Class, Scope)]]> |
| </doc> |
| </method> |
| <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder<T>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="key" type="com.google.inject.Key<T>"/> |
| <doc> |
| <![CDATA[@see Binder#bind(Key)]]> |
| </doc> |
| </method> |
| <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> |
| <doc> |
| <![CDATA[@see Binder#bind(TypeLiteral)]]> |
| </doc> |
| </method> |
| <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="clazz" type="java.lang.Class<T>"/> |
| <doc> |
| <![CDATA[@see Binder#bind(Class)]]> |
| </doc> |
| </method> |
| <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[@see Binder#bindConstant()]]> |
| </doc> |
| </method> |
| <method name="install" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="module" type="com.google.inject.Module"/> |
| <doc> |
| <![CDATA[@see Binder#install(Module)]]> |
| </doc> |
| </method> |
| <method name="addError" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="message" type="java.lang.String"/> |
| <param name="arguments" type="java.lang.Object[]"/> |
| <doc> |
| <![CDATA[@see Binder#addError(String, Object[])]]> |
| </doc> |
| </method> |
| <method name="addError" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="t" type="java.lang.Throwable"/> |
| <doc> |
| <![CDATA[@see Binder#addError(Throwable)]]> |
| </doc> |
| </method> |
| <method name="addError" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="message" type="com.google.inject.spi.Message"/> |
| <doc> |
| <![CDATA[@see Binder#addError(Message)]]> |
| </doc> |
| </method> |
| <method name="requestInjection" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="instance" type="java.lang.Object"/> |
| <doc> |
| <![CDATA[@see Binder#requestInjection(Object)]]> |
| </doc> |
| </method> |
| <method name="requestStaticInjection" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="types" type="java.lang.Class[]"/> |
| <doc> |
| <![CDATA[@see Binder#requestStaticInjection(Class[])]]> |
| </doc> |
| </method> |
| <method name="bindInterceptor" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="classMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>"/> |
| <param name="methodMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>"/> |
| <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/> |
| <doc> |
| <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher, com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])]]> |
| </doc> |
| </method> |
| <method name="requireBinding" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="key" type="com.google.inject.Key<?>"/> |
| <doc> |
| <![CDATA[Instructs Guice to require a binding to the given key.]]> |
| </doc> |
| </method> |
| <method name="requireBinding" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.Class<?>"/> |
| <doc> |
| <![CDATA[Instructs Guice to require a binding to the given type.]]> |
| </doc> |
| </method> |
| <method name="getProvider" return="com.google.inject.Provider<T>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="key" type="com.google.inject.Key<T>"/> |
| <doc> |
| <![CDATA[@see Binder#getProvider(Key)]]> |
| </doc> |
| </method> |
| <method name="getProvider" return="com.google.inject.Provider<T>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.Class<T>"/> |
| <doc> |
| <![CDATA[@see Binder#getProvider(Class)]]> |
| </doc> |
| </method> |
| <method name="convertToTypes" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> |
| <param name="converter" type="com.google.inject.spi.TypeConverter"/> |
| <doc> |
| <![CDATA[@see Binder#convertToTypes(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeConverter)]]> |
| </doc> |
| </method> |
| <method name="currentStage" return="com.google.inject.Stage" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="protected" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[@see Binder#currentStage()]]> |
| </doc> |
| </method> |
| <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.Class<T>"/> |
| <doc> |
| <![CDATA[@see Binder#getMembersInjector(Class)]]> |
| </doc> |
| </method> |
| <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="type" type="com.google.inject.TypeLiteral<T>"/> |
| <doc> |
| <![CDATA[@see Binder#getMembersInjector(TypeLiteral)]]> |
| </doc> |
| </method> |
| <method name="bindListener" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> |
| <param name="listener" type="com.google.inject.spi.TypeListener"/> |
| <doc> |
| <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeListener)]]> |
| </doc> |
| </method> |
| <method name="bindListener" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="bindingMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.Binding<?>>"/> |
| <param name="listeners" type="com.google.inject.spi.ProvisionListener[]"/> |
| <doc> |
| <![CDATA[@see Binder#bindListener(Matcher, ProvisionListener...) |
| @since 4.0]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[A module whose configuration information is hidden from its environment by default. Only bindings |
| that are explicitly exposed will be available to other modules and to the users of the injector. |
| This module may expose the bindings it creates and the bindings of the modules it installs. |
| |
| <p>A private module can be nested within a regular module or within another private module using |
| {@link Binder#install install()}. Its bindings live in a new environment that inherits bindings, |
| type converters, scopes, and interceptors from the surrounding ("parent") environment. When you |
| nest multiple private modules, the result is a tree of environments where the injector's |
| environment is the root. |
| |
| <p>Guice EDSL bindings can be exposed with {@link #expose(Class) expose()}. {@literal @}{@link |
| com.google.inject.Provides Provides} bindings can be exposed with the {@literal @}{@link |
| Exposed} annotation: |
| |
| <pre> |
| public class FooBarBazModule extends PrivateModule { |
| protected void configure() { |
| bind(Foo.class).to(RealFoo.class); |
| expose(Foo.class); |
| |
| install(new TransactionalBarModule()); |
| expose(Bar.class).annotatedWith(Transactional.class); |
| |
| bind(SomeImplementationDetail.class); |
| install(new MoreImplementationDetailsModule()); |
| } |
| |
| {@literal @}Provides {@literal @}Exposed |
| public Baz provideBaz() { |
| return new SuperBaz(); |
| } |
| } |
| </pre> |
| |
| <p>Private modules are implemented using {@link Injector#createChildInjector(Module[]) parent |
| injectors}. When it can satisfy their dependencies, just-in-time bindings will be created in the |
| root environment. Such bindings are shared among all environments in the tree. |
| |
| <p>The scope of a binding is constrained to its environment. A singleton bound in a private |
| module will be unique to its environment. But a binding for the same type in a different private |
| module will yield a different instance. |
| |
| <p>A shared binding that injects the {@code Injector} gets the root injector, which only has |
| access to bindings in the root environment. An explicit binding that injects the {@code Injector} |
| gets access to all bindings in the child environment. |
| |
| <p>To promote a just-in-time binding to an explicit binding, bind it: |
| <pre> |
| bind(FooImpl.class); |
| </pre> |
| |
| @author jessewilson@google.com (Jesse Wilson) |
| @since 2.0]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.PrivateModule --> |
| <!-- start class com.google.inject.ProvidedBy --> |
| <class name="ProvidedBy" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <implements name="java.lang.annotation.Annotation"/> |
| <doc> |
| <![CDATA[A pointer to the default provider type for a type. |
| |
| @author crazybob@google.com (Bob Lee)]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.ProvidedBy --> |
| <!-- start interface com.google.inject.Provider --> |
| <interface name="Provider" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <implements name="javax.inject.Provider<T>"/> |
| <method name="get" return="T" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Provides an instance of {@code T}. Must never return {@code null}. |
| |
| @throws OutOfScopeException when an attempt is made to access a scoped object while the scope |
| in question is not currently active |
| @throws ProvisionException if an instance cannot be provided. Such exceptions include messages |
| and throwables to describe why provision failed.]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[An object capable of providing instances of type {@code T}. Providers are used in numerous ways |
| by Guice: |
| |
| <ul> |
| <li>When the default means for obtaining instances (an injectable or parameterless constructor) |
| is insufficient for a particular binding, the module can specify a custom {@code Provider} |
| instead, to control exactly how Guice creates or obtains instances for the binding. |
| |
| <li>An implementation class may always choose to have a {@code Provider<T>} instance injected, |
| rather than having a {@code T} injected directly. This may give you access to multiple |
| instances, instances you wish to safely mutate and discard, instances which are out of scope |
| (e.g. using a {@code @RequestScoped} object from within a {@code @SessionScoped} object), or |
| instances that will be initialized lazily. |
| |
| <li>A custom {@link Scope} is implemented as a decorator of {@code Provider<T>}, which decides |
| when to delegate to the backing provider and when to provide the instance some other way. |
| |
| <li>The {@link Injector} offers access to the {@code Provider<T>} it uses to fulfill requests |
| for a given key, via the {@link Injector#getProvider} methods. |
| </ul> |
| |
| @param <T> the type of object this provides |
| |
| @author crazybob@google.com (Bob Lee)]]> |
| </doc> |
| </interface> |
| <!-- end interface com.google.inject.Provider --> |
| <!-- start class com.google.inject.Provides --> |
| <class name="Provides" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <implements name="java.lang.annotation.Annotation"/> |
| <doc> |
| <![CDATA[Annotates methods of a {@link Module} to create a provider method binding. The method's return |
| type is bound to its returned value. Guice will pass dependencies to the method as parameters. |
| |
| @author crazybob@google.com (Bob Lee) |
| @since 2.0]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.Provides --> |
| <!-- start class com.google.inject.ProvisionException --> |
| <class name="ProvisionException" extends="java.lang.RuntimeException" |
| abstract="false" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| <constructor name="ProvisionException" type="java.lang.Iterable<com.google.inject.spi.Message>" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Creates a ProvisionException containing {@code messages}.]]> |
| </doc> |
| </constructor> |
| <constructor name="ProvisionException" type="java.lang.String, java.lang.Throwable" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| </constructor> |
| <constructor name="ProvisionException" type="java.lang.String" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| </constructor> |
| <method name="getErrorMessages" return="java.util.Collection<com.google.inject.spi.Message>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Returns messages for the errors that caused this exception.]]> |
| </doc> |
| </method> |
| <method name="getMessage" return="java.lang.String" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| </method> |
| <doc> |
| <![CDATA[Indicates that there was a runtime failure while providing an instance. |
| |
| @author kevinb@google.com (Kevin Bourrillion) |
| @author jessewilson@google.com (Jesse Wilson) |
| @since 2.0]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.ProvisionException --> |
| <!-- start interface com.google.inject.Scope --> |
| <interface name="Scope" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <method name="scope" return="com.google.inject.Provider<T>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="key" type="com.google.inject.Key<T>"/> |
| <param name="unscoped" type="com.google.inject.Provider<T>"/> |
| <doc> |
| <![CDATA[Scopes a provider. The returned provider returns objects from this scope. |
| If an object does not exist in this scope, the provider can use the given |
| unscoped provider to retrieve one. |
| |
| <p>Scope implementations are strongly encouraged to override |
| {@link Object#toString} in the returned provider and include the backing |
| provider's {@code toString()} output. |
| |
| @param key binding key |
| @param unscoped locates an instance when one doesn't already exist in this |
| scope. |
| @return a new provider which only delegates to the given unscoped provider |
| when an instance of the requested object doesn't already exist in this |
| scope]]> |
| </doc> |
| </method> |
| <method name="toString" return="java.lang.String" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[A short but useful description of this scope. For comparison, the standard |
| scopes that ship with guice use the descriptions |
| {@code "Scopes.SINGLETON"}, {@code "ServletScopes.SESSION"} and |
| {@code "ServletScopes.REQUEST"}.]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[A scope is a level of visibility that instances provided by Guice may have. |
| By default, an instance created by the {@link Injector} has <i>no scope</i>, |
| meaning it has no state from the framework's perspective -- the |
| {@code Injector} creates it, injects it once into the class that required it, |
| and then immediately forgets it. Associating a scope with a particular |
| binding allows the created instance to be "remembered" and possibly used |
| again for other injections. |
| |
| <p>An example of a scope is {@link Scopes#SINGLETON}. |
| |
| @author crazybob@google.com (Bob Lee)]]> |
| </doc> |
| </interface> |
| <!-- end interface com.google.inject.Scope --> |
| <!-- start class com.google.inject.ScopeAnnotation --> |
| <class name="ScopeAnnotation" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <implements name="java.lang.annotation.Annotation"/> |
| <doc> |
| <![CDATA[Annotates annotations which are used for scoping. Only one such annotation |
| may apply to a single implementation class. You must also annotate scope |
| annotations with {@code @Retention(RUNTIME)}. For example: |
| |
| <pre> |
| {@code @}Retention(RUNTIME) |
| {@code @}Target(TYPE, METHOD) |
| {@code @}ScopeAnnotation |
| public {@code @}interface SessionScoped {} |
| </pre> |
| |
| @author crazybob@google.com (Bob Lee)]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.ScopeAnnotation --> |
| <!-- start class com.google.inject.Scopes --> |
| <class name="Scopes" extends="java.lang.Object" |
| abstract="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <method name="isSingleton" return="boolean" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="binding" type="com.google.inject.Binding<?>"/> |
| <doc> |
| <![CDATA[Returns true if {@code binding} is singleton-scoped. If the binding is a {@link |
| com.google.inject.spi.LinkedKeyBinding linked key binding} and belongs to an injector (ie. it |
| was retrieved via {@link Injector#getBinding Injector.getBinding()}), then this method will |
| also true if the target binding is singleton-scoped. |
| |
| @since 3.0]]> |
| </doc> |
| </method> |
| <method name="isScoped" return="boolean" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="binding" type="com.google.inject.Binding<?>"/> |
| <param name="scope" type="com.google.inject.Scope"/> |
| <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> |
| <doc> |
| <![CDATA[Returns true if {@code binding} has the given scope. If the binding is a {@link |
| com.google.inject.spi.LinkedKeyBinding linked key binding} and belongs to an injector (ie. it |
| was retrieved via {@link Injector#getBinding Injector.getBinding()}), then this method will |
| also true if the target binding has the given scope. |
| |
| @param binding binding to check |
| @param scope scope implementation instance |
| @param scopeAnnotation scope annotation class |
| @since 4.0]]> |
| </doc> |
| </method> |
| <method name="isCircularProxy" return="boolean" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="object" type="java.lang.Object"/> |
| <doc> |
| <![CDATA[Returns true if the object is a proxy for a circular dependency, |
| constructed by Guice because it encountered a circular dependency. Scope |
| implementations should be careful to <b>not cache circular proxies</b>, |
| because the proxies are not intended for general purpose use. (They are |
| designed just to fulfill the immediate injection, not all injections. |
| Caching them can lead to IllegalArgumentExceptions or ClassCastExceptions.) |
| |
| @since 4.0]]> |
| </doc> |
| </method> |
| <field name="SINGLETON" type="com.google.inject.Scope" |
| transient="false" volatile="false" |
| static="true" final="true" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[One instance per {@link Injector}. Also see {@code @}{@link Singleton}.]]> |
| </doc> |
| </field> |
| <field name="NO_SCOPE" type="com.google.inject.Scope" |
| transient="false" volatile="false" |
| static="true" final="true" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[No scope; the same as not applying any scope at all. Each time the |
| Injector obtains an instance of an object with "no scope", it injects this |
| instance then immediately forgets it. When the next request for the same |
| binding arrives it will need to obtain the instance over again. |
| |
| <p>This exists only in case a class has been annotated with a scope |
| annotation such as {@link Singleton @Singleton}, and you need to override |
| this to "no scope" in your binding. |
| |
| @since 2.0]]> |
| </doc> |
| </field> |
| <doc> |
| <![CDATA[Built-in scope implementations. |
| |
| @author crazybob@google.com (Bob Lee)]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.Scopes --> |
| <!-- start class com.google.inject.Singleton --> |
| <class name="Singleton" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <implements name="java.lang.annotation.Annotation"/> |
| <doc> |
| <![CDATA[Apply this to implementation classes when you want only one instance |
| (per {@link Injector}) to be reused for all injections for that binding. |
| |
| @author crazybob@google.com (Bob Lee)]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.Singleton --> |
| <!-- start class com.google.inject.Stage --> |
| <class name="Stage" extends="java.lang.Enum<com.google.inject.Stage>" |
| abstract="false" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| <method name="values" return="com.google.inject.Stage[]" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| </method> |
| <method name="valueOf" return="com.google.inject.Stage" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="name" type="java.lang.String"/> |
| </method> |
| <doc> |
| <![CDATA[The stage we're running in. |
| |
| @author crazybob@google.com (Bob Lee)]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.Stage --> |
| <!-- start class com.google.inject.TypeLiteral --> |
| <class name="TypeLiteral" extends="java.lang.Object" |
| abstract="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <constructor name="TypeLiteral" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Constructs a new type literal. Derives represented class from type |
| parameter. |
| |
| <p>Clients create an empty anonymous subclass. Doing so embeds the type |
| parameter in the anonymous class's type hierarchy so we can reconstitute it |
| at runtime despite erasure.]]> |
| </doc> |
| </constructor> |
| <method name="getRawType" return="java.lang.Class<? super T>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Returns the raw (non-generic) type for this type. |
| |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="getType" return="java.lang.reflect.Type" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Gets underlying {@code Type} instance.]]> |
| </doc> |
| </method> |
| <method name="hashCode" return="int" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| </method> |
| <method name="equals" return="boolean" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| <param name="o" type="java.lang.Object"/> |
| </method> |
| <method name="toString" return="java.lang.String" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| </method> |
| <method name="get" return="com.google.inject.TypeLiteral<?>" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.reflect.Type"/> |
| <doc> |
| <![CDATA[Gets type literal for the given {@code Type} instance.]]> |
| </doc> |
| </method> |
| <method name="get" return="com.google.inject.TypeLiteral<T>" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="type" type="java.lang.Class<T>"/> |
| <doc> |
| <![CDATA[Gets type literal for the given {@code Class} instance.]]> |
| </doc> |
| </method> |
| <method name="getSupertype" return="com.google.inject.TypeLiteral<?>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="supertype" type="java.lang.Class<?>"/> |
| <doc> |
| <![CDATA[Returns the generic form of {@code supertype}. For example, if this is {@code |
| ArrayList<String>}, this returns {@code Iterable<String>} given the input {@code |
| Iterable.class}. |
| |
| @param supertype a superclass of, or interface implemented by, this. |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="getFieldType" return="com.google.inject.TypeLiteral<?>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="field" type="java.lang.reflect.Field"/> |
| <doc> |
| <![CDATA[Returns the resolved generic type of {@code field}. |
| |
| @param field a field defined by this or any superclass. |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="getParameterTypes" return="java.util.List<com.google.inject.TypeLiteral<?>>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="methodOrConstructor" type="java.lang.reflect.Member"/> |
| <doc> |
| <![CDATA[Returns the resolved generic parameter types of {@code methodOrConstructor}. |
| |
| @param methodOrConstructor a method or constructor defined by this or any supertype. |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="getExceptionTypes" return="java.util.List<com.google.inject.TypeLiteral<?>>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="methodOrConstructor" type="java.lang.reflect.Member"/> |
| <doc> |
| <![CDATA[Returns the resolved generic exception types thrown by {@code constructor}. |
| |
| @param methodOrConstructor a method or constructor defined by this or any supertype. |
| @since 2.0]]> |
| </doc> |
| </method> |
| <method name="getReturnType" return="com.google.inject.TypeLiteral<?>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="method" type="java.lang.reflect.Method"/> |
| <doc> |
| <![CDATA[Returns the resolved generic return type of {@code method}. |
| |
| @param method a method defined by this or any supertype. |
| @since 2.0]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[Represents a generic type {@code T}. Java doesn't yet provide a way to |
| represent generic types, so this class does. Forces clients to create a |
| subclass of this class which enables retrieval the type information even at |
| runtime. |
| |
| <p>For example, to create a type literal for {@code List<String>}, you can |
| create an empty anonymous inner class: |
| |
| <p> |
| {@code TypeLiteral<List<String>> list = new TypeLiteral<List<String>>() {};} |
| |
| <p>Along with modeling generic types, this class can resolve type parameters. |
| For example, to figure out what type {@code keySet()} returns on a {@code |
| Map<Integer, String>}, use this code:<pre> {@code |
| |
| TypeLiteral<Map<Integer, String>> mapType |
| = new TypeLiteral<Map<Integer, String>>() {}; |
| TypeLiteral<?> keySetType |
| = mapType.getReturnType(Map.class.getMethod("keySet")); |
| System.out.println(keySetType); // prints "Set<Integer>"}</pre> |
| |
| @author crazybob@google.com (Bob Lee) |
| @author jessewilson@google.com (Jesse Wilson)]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.TypeLiteral --> |
| </package> |
| <package name="com.google.inject.assistedinject"> |
| <!-- start class com.google.inject.assistedinject.Assisted --> |
| <class name="Assisted" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <implements name="java.lang.annotation.Annotation"/> |
| <doc> |
| <![CDATA[Annotates an injected parameter or field whose value comes from an argument to a factory method. |
| |
| @author jmourits@google.com (Jerome Mourits) |
| @author jessewilson@google.com (Jesse Wilson)]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.assistedinject.Assisted --> |
| <!-- start class com.google.inject.assistedinject.AssistedInject --> |
| <class name="AssistedInject" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <implements name="java.lang.annotation.Annotation"/> |
| <doc> |
| <![CDATA[<p> |
| When used in tandem with {@link FactoryModuleBuilder}, constructors annotated with |
| {@code @AssistedInject} indicate that multiple constructors can be injected, each with different |
| parameters. AssistedInject annotations should not be mixed with {@literal @}{@link Inject} |
| annotations. The assisted parameters must exactly match one corresponding factory method within |
| the factory interface, but the parameters do not need to be in the same order. Constructors |
| annotated with AssistedInject <b>are</b> created by Guice and receive all the benefits |
| (such as AOP). |
| |
| <p> |
| <strong>Obsolete Usage:</strong> When used in tandem with {@link FactoryProvider}, constructors |
| annotated with {@code @AssistedInject} trigger a "backwards compatibility mode". The assisted |
| parameters must exactly match one corresponding factory method within the factory interface and |
| all must be in the same order as listed in the factory. In this backwards compatable mode, |
| constructors annotated with AssistedInject <b>are not</b> created by Guice and thus receive |
| none of the benefits. |
| |
| <p> |
| Constructor parameters must be either supplied by the factory interface and marked with |
| <code>@Assisted</code>, or they must be injectable. |
| |
| @author jmourits@google.com (Jerome Mourits) |
| @author jessewilson@google.com (Jesse Wilson)]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.assistedinject.AssistedInject --> |
| <!-- start interface com.google.inject.assistedinject.AssistedInjectBinding --> |
| <interface name="AssistedInjectBinding" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <method name="getKey" return="com.google.inject.Key<T>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Returns the {@link Key} for the factory binding.]]> |
| </doc> |
| </method> |
| <method name="getAssistedMethods" return="java.util.Collection<com.google.inject.assistedinject.AssistedMethod>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Returns an {@link AssistedMethod} for each method in the factory.]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[A binding for a factory created by FactoryModuleBuilder. |
| |
| @param <T> The fully qualified type of the factory. |
| |
| @since 3.0 |
| @author ramakrishna@google.com (Ramakrishna Rajanna)]]> |
| </doc> |
| </interface> |
| <!-- end interface com.google.inject.assistedinject.AssistedInjectBinding --> |
| <!-- start interface com.google.inject.assistedinject.AssistedInjectTargetVisitor --> |
| <interface name="AssistedInjectTargetVisitor" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> |
| <method name="visit" return="V" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="assistedInjectBinding" type="com.google.inject.assistedinject.AssistedInjectBinding<? extends T>"/> |
| <doc> |
| <![CDATA[Visits an {@link AssistedInjectBinding} created through {@link FactoryModuleBuilder}.]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[A visitor for the AssistedInject extension. |
| <p> |
| If your {@link BindingTargetVisitor} implements this interface, bindings created by using |
| {@link FactoryModuleBuilder} will be visited through this interface. |
| |
| @since 3.0 |
| @author ramakrishna@google.com (Ramakrishna Rajanna)]]> |
| </doc> |
| </interface> |
| <!-- end interface com.google.inject.assistedinject.AssistedInjectTargetVisitor --> |
| <!-- start interface com.google.inject.assistedinject.AssistedMethod --> |
| <interface name="AssistedMethod" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <method name="getFactoryMethod" return="java.lang.reflect.Method" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Returns the factory method that is being assisted.]]> |
| </doc> |
| </method> |
| <method name="getImplementationType" return="com.google.inject.TypeLiteral<?>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Returns the implementation type that will be created when the method is |
| used.]]> |
| </doc> |
| </method> |
| <method name="getImplementationConstructor" return="java.lang.reflect.Constructor<?>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Returns the constructor that will be used to construct instances of the |
| implementation.]]> |
| </doc> |
| </method> |
| <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Returns all non-assisted dependencies required to construct and inject |
| the implementation.]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[Details about how a method in an assisted inject factory will be assisted. |
| |
| @since 3.0 |
| @author ramakrishna@google.com (Ramakrishna Rajanna)]]> |
| </doc> |
| </interface> |
| <!-- end interface com.google.inject.assistedinject.AssistedMethod --> |
| <!-- start class com.google.inject.assistedinject.FactoryModuleBuilder --> |
| <class name="FactoryModuleBuilder" extends="java.lang.Object" |
| abstract="false" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| <constructor name="FactoryModuleBuilder" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| </constructor> |
| <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="source" type="java.lang.Class<T>"/> |
| <param name="target" type="java.lang.Class<? extends T>"/> |
| <doc> |
| <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> |
| </doc> |
| </method> |
| <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="source" type="java.lang.Class<T>"/> |
| <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> |
| <doc> |
| <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> |
| </doc> |
| </method> |
| <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="source" type="com.google.inject.TypeLiteral<T>"/> |
| <param name="target" type="java.lang.Class<? extends T>"/> |
| <doc> |
| <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> |
| </doc> |
| </method> |
| <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="source" type="com.google.inject.TypeLiteral<T>"/> |
| <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> |
| <doc> |
| <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> |
| </doc> |
| </method> |
| <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="source" type="java.lang.Class<T>"/> |
| <param name="annotation" type="java.lang.annotation.Annotation"/> |
| <param name="target" type="java.lang.Class<? extends T>"/> |
| <doc> |
| <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> |
| </doc> |
| </method> |
| <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="source" type="java.lang.Class<T>"/> |
| <param name="annotation" type="java.lang.annotation.Annotation"/> |
| <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> |
| <doc> |
| <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> |
| </doc> |
| </method> |
| <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="source" type="com.google.inject.TypeLiteral<T>"/> |
| <param name="annotation" type="java.lang.annotation.Annotation"/> |
| <param name="target" type="java.lang.Class<? extends T>"/> |
| <doc> |
| <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> |
| </doc> |
| </method> |
| <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="source" type="com.google.inject.TypeLiteral<T>"/> |
| <param name="annotation" type="java.lang.annotation.Annotation"/> |
| <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> |
| <doc> |
| <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> |
| </doc> |
| </method> |
| <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="source" type="java.lang.Class<T>"/> |
| <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> |
| <param name="target" type="java.lang.Class<? extends T>"/> |
| <doc> |
| <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> |
| </doc> |
| </method> |
| <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="source" type="java.lang.Class<T>"/> |
| <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> |
| <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> |
| <doc> |
| <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> |
| </doc> |
| </method> |
| <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="source" type="com.google.inject.TypeLiteral<T>"/> |
| <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> |
| <param name="target" type="java.lang.Class<? extends T>"/> |
| <doc> |
| <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> |
| </doc> |
| </method> |
| <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="source" type="com.google.inject.TypeLiteral<T>"/> |
| <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> |
| <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> |
| <doc> |
| <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> |
| </doc> |
| </method> |
| <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="source" type="com.google.inject.Key<T>"/> |
| <param name="target" type="java.lang.Class<? extends T>"/> |
| <doc> |
| <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> |
| </doc> |
| </method> |
| <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="source" type="com.google.inject.Key<T>"/> |
| <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> |
| <doc> |
| <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> |
| </doc> |
| </method> |
| <method name="build" return="com.google.inject.Module" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="factoryInterface" type="java.lang.Class<F>"/> |
| <doc> |
| <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> |
| </doc> |
| </method> |
| <method name="build" return="com.google.inject.Module" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="factoryInterface" type="com.google.inject.TypeLiteral<F>"/> |
| <doc> |
| <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> |
| </doc> |
| </method> |
| <method name="build" return="com.google.inject.Module" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="factoryInterface" type="com.google.inject.Key<F>"/> |
| </method> |
| <doc> |
| <![CDATA[Provides a factory that combines the caller's arguments with injector-supplied values to |
| construct objects. |
| |
| <h3>Defining a factory</h3> |
| Create an interface whose methods return the constructed type, or any of its supertypes. The |
| method's parameters are the arguments required to build the constructed type. |
| |
| <pre>public interface PaymentFactory { |
| Payment create(Date startDate, Money amount); |
| }</pre> |
| |
| You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i> |
| or <i>newPayment</i>. |
| |
| <h3>Creating a type that accepts factory parameters</h3> |
| {@code constructedType} is a concrete class with an {@literal @}{@link com.google.inject.Inject |
| Inject}-annotated constructor. In addition to injector-supplied parameters, the constructor |
| should have parameters that match each of the factory method's parameters. Each factory-supplied |
| parameter requires an {@literal @}{@link Assisted} annotation. This serves to document that the |
| parameter is not bound by your application's modules. |
| |
| <pre>public class RealPayment implements Payment { |
| {@literal @}Inject |
| public RealPayment( |
| CreditService creditService, |
| AuthService authService, |
| <strong>{@literal @}Assisted Date startDate</strong>, |
| <strong>{@literal @}Assisted Money amount</strong>) { |
| ... |
| } |
| }</pre> |
| |
| <h3>Multiple factory methods for the same type</h3> |
| If the factory contains many methods that return the same type, you can create multiple |
| constructors in your concrete class, each constructor marked with with |
| {@literal @}{@link AssistedInject}, in order to match the different parameters types of the |
| factory methods. |
| |
| <pre>public interface PaymentFactory { |
| Payment create(Date startDate, Money amount); |
| Payment createWithoutDate(Money amount); |
| } |
| |
| public class RealPayment implements Payment { |
| {@literal @}AssistedInject |
| public RealPayment( |
| CreditService creditService, |
| AuthService authService, |
| <strong>{@literal @}Assisted Date startDate</strong>, |
| <strong>{@literal @}Assisted Money amount</strong>) { |
| ... |
| } |
| |
| {@literal @}AssistedInject |
| public RealPayment( |
| CreditService creditService, |
| AuthService authService, |
| <strong>{@literal @}Assisted Money amount</strong>) { |
| ... |
| } |
| }</pre> |
| |
| <h3>Configuring simple factories</h3> |
| In your {@link Module module}, install a {@code FactoryModuleBuilder} that creates the |
| factory: |
| |
| <pre>install(new FactoryModuleBuilder() |
| .implement(Payment.class, RealPayment.class) |
| .build(PaymentFactory.class));</pre> |
| |
| As a side-effect of this binding, Guice will inject the factory to initialize it for use. The |
| factory cannot be used until the injector has been initialized. |
| |
| <h3>Configuring complex factories</h3> |
| Factories can create an arbitrary number of objects, one per each method. Each factory |
| method can be configured using <code>.implement</code>. |
| |
| <pre>public interface OrderFactory { |
| Payment create(Date startDate, Money amount); |
| Shipment create(Customer customer, Item item); |
| Receipt create(Payment payment, Shipment shipment); |
| } |
| |
| [...] |
| |
| install(new FactoryModuleBuilder() |
| .implement(Payment.class, RealPayment.class) |
| // excluding .implement for Shipment means the implementation class |
| // will be 'Shipment' itself, which is legal if it's not an interface. |
| .implement(Receipt.class, RealReceipt.class) |
| .build(OrderFactory.class));</pre> |
| </pre> |
| |
| <h3>Using the factory</h3> |
| Inject your factory into your application classes. When you use the factory, your arguments |
| will be combined with values from the injector to construct an instance. |
| |
| <pre>public class PaymentAction { |
| {@literal @}Inject private PaymentFactory paymentFactory; |
| |
| public void doPayment(Money amount) { |
| Payment payment = paymentFactory.create(new Date(), amount); |
| payment.apply(); |
| } |
| }</pre> |
| |
| <h3>Making parameter types distinct</h3> |
| The types of the factory method's parameters must be distinct. To use multiple parameters of |
| the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the |
| parameters. The names must be applied to the factory method's parameters: |
| |
| <pre>public interface PaymentFactory { |
| Payment create( |
| <strong>{@literal @}Assisted("startDate")</strong> Date startDate, |
| <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, |
| Money amount); |
| } </pre> |
| |
| ...and to the concrete type's constructor parameters: |
| |
| <pre>public class RealPayment implements Payment { |
| {@literal @}Inject |
| public RealPayment( |
| CreditService creditService, |
| AuthService authService, |
| <strong>{@literal @}Assisted("startDate")</strong> Date startDate, |
| <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, |
| <strong>{@literal @}Assisted</strong> Money amount) { |
| ... |
| } |
| }</pre> |
| |
| <h3>Values are created by Guice</h3> |
| Returned factories use child injectors to create values. The values are eligible for method |
| interception. In addition, {@literal @}{@literal Inject} members will be injected before they are |
| returned. |
| |
| <h3>More configuration options</h3> |
| In addition to simply specifying an implementation class for any returned type, factories' return |
| values can be automatic or can be configured to use annotations: |
| <p/> |
| If you just want to return the types specified in the factory, do not configure any |
| implementations: |
| |
| <pre>public interface FruitFactory { |
| Apple getApple(Color color); |
| } |
| ... |
| protected void configure() { |
| install(new FactoryModuleBuilder().build(FruitFactory.class)); |
| }</pre> |
| |
| Note that any type returned by the factory in this manner needs to be an implementation class. |
| <p/> |
| To return two different implementations for the same interface from your factory, use binding |
| annotations on your return types: |
| |
| <pre>interface CarFactory { |
| {@literal @}Named("fast") Car getFastCar(Color color); |
| {@literal @}Named("clean") Car getCleanCar(Color color); |
| } |
| ... |
| protected void configure() { |
| install(new FactoryModuleBuilder() |
| .implement(Car.class, Names.named("fast"), Porsche.class) |
| .implement(Car.class, Names.named("clean"), Prius.class) |
| .build(CarFactory.class)); |
| }</pre> |
| |
| <h3>Implementation limitations</h3> |
| As a limitation of the implementation, it is prohibited to declare a factory method that |
| accepts a {@code Provider} as one of its arguments. |
| |
| @since 3.0 |
| @author schmitt@google.com (Peter Schmitt)]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.assistedinject.FactoryModuleBuilder --> |
| <!-- start class com.google.inject.assistedinject.FactoryProvider --> |
| <class name="FactoryProvider" extends="java.lang.Object" |
| abstract="false" |
| static="false" final="false" visibility="public" |
| deprecated="use {@link FactoryModuleBuilder} instead."> |
| <implements name="com.google.inject.Provider<F>"/> |
| <implements name="com.google.inject.spi.HasDependencies"/> |
| <method name="newFactory" return="com.google.inject.Provider<F>" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="factoryType" type="java.lang.Class<F>"/> |
| <param name="implementationType" type="java.lang.Class<?>"/> |
| </method> |
| <method name="newFactory" return="com.google.inject.Provider<F>" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="factoryType" type="com.google.inject.TypeLiteral<F>"/> |
| <param name="implementationType" type="com.google.inject.TypeLiteral<?>"/> |
| </method> |
| <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| </method> |
| <method name="get" return="F" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| </method> |
| <method name="hashCode" return="int" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| </method> |
| <method name="equals" return="boolean" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="obj" type="java.lang.Object"/> |
| </method> |
| <doc> |
| <![CDATA[<strong>Obsolete.</strong> Prefer {@link FactoryModuleBuilder} for its more concise API and |
| additional capability. |
| |
| <p>Provides a factory that combines the caller's arguments with injector-supplied values to |
| construct objects. |
| |
| <h3>Defining a factory</h3> |
| Create an interface whose methods return the constructed type, or any of its supertypes. The |
| method's parameters are the arguments required to build the constructed type. |
| <pre>public interface PaymentFactory { |
| Payment create(Date startDate, Money amount); |
| }</pre> |
| You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i> |
| or <i>newPayment</i>. |
| |
| <h3>Creating a type that accepts factory parameters</h3> |
| {@code constructedType} is a concrete class with an {@literal @}{@link Inject}-annotated |
| constructor. In addition to injector-supplied parameters, the constructor should have |
| parameters that match each of the factory method's parameters. Each factory-supplied parameter |
| requires an {@literal @}{@link Assisted} annotation. This serves to document that the parameter |
| is not bound by your application's modules. |
| <pre>public class RealPayment implements Payment { |
| {@literal @}Inject |
| public RealPayment( |
| CreditService creditService, |
| AuthService authService, |
| <strong>{@literal @}Assisted Date startDate</strong>, |
| <strong>{@literal @}Assisted Money amount</strong>) { |
| ... |
| } |
| }</pre> |
| Any parameter that permits a null value should also be annotated {@code @Nullable}. |
| |
| <h3>Configuring factories</h3> |
| In your {@link com.google.inject.Module module}, bind the factory interface to the returned |
| factory: |
| <pre>bind(PaymentFactory.class).toProvider( |
| FactoryProvider.newFactory(PaymentFactory.class, RealPayment.class));</pre> |
| As a side-effect of this binding, Guice will inject the factory to initialize it for use. The |
| factory cannot be used until the injector has been initialized. |
| |
| <h3>Using the factory</h3> |
| Inject your factory into your application classes. When you use the factory, your arguments |
| will be combined with values from the injector to construct an instance. |
| <pre>public class PaymentAction { |
| {@literal @}Inject private PaymentFactory paymentFactory; |
| |
| public void doPayment(Money amount) { |
| Payment payment = paymentFactory.create(new Date(), amount); |
| payment.apply(); |
| } |
| }</pre> |
| |
| <h3>Making parameter types distinct</h3> |
| The types of the factory method's parameters must be distinct. To use multiple parameters of |
| the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the |
| parameters. The names must be applied to the factory method's parameters: |
| |
| <pre>public interface PaymentFactory { |
| Payment create( |
| <strong>{@literal @}Assisted("startDate")</strong> Date startDate, |
| <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, |
| Money amount); |
| } </pre> |
| ...and to the concrete type's constructor parameters: |
| <pre>public class RealPayment implements Payment { |
| {@literal @}Inject |
| public RealPayment( |
| CreditService creditService, |
| AuthService authService, |
| <strong>{@literal @}Assisted("startDate")</strong> Date startDate, |
| <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, |
| <strong>{@literal @}Assisted</strong> Money amount) { |
| ... |
| } |
| }</pre> |
| |
| <h3>Values are created by Guice</h3> |
| Returned factories use child injectors to create values. The values are eligible for method |
| interception. In addition, {@literal @}{@literal Inject} members will be injected before they are |
| returned. |
| |
| <h3>Backwards compatibility using {@literal @}AssistedInject</h3> |
| Instead of the {@literal @}Inject annotation, you may annotate the constructed classes with |
| {@literal @}{@link AssistedInject}. This triggers a limited backwards-compatability mode. |
| |
| <p>Instead of matching factory method arguments to constructor parameters using their names, the |
| <strong>parameters are matched by their order</strong>. The first factory method argument is |
| used for the first {@literal @}Assisted constructor parameter, etc.. Annotation names have no |
| effect. |
| |
| <p>Returned values are <strong>not created by Guice</strong>. These types are not eligible for |
| method interception. They do receive post-construction member injection. |
| |
| @param <F> The factory interface |
| |
| @author jmourits@google.com (Jerome Mourits) |
| @author jessewilson@google.com (Jesse Wilson) |
| @author dtm@google.com (Daniel Martin) |
| |
| @deprecated use {@link FactoryModuleBuilder} instead.]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.assistedinject.FactoryProvider --> |
| </package> |
| <package name="com.google.inject.binder"> |
| <!-- start interface com.google.inject.binder.AnnotatedBindingBuilder --> |
| <interface name="AnnotatedBindingBuilder" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <implements name="com.google.inject.binder.LinkedBindingBuilder<T>"/> |
| <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder<T>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> |
| </doc> |
| </method> |
| <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder<T>" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="annotation" type="java.lang.annotation.Annotation"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. |
| |
| @author crazybob@google.com (Bob Lee)]]> |
| </doc> |
| </interface> |
| <!-- end interface com.google.inject.binder.AnnotatedBindingBuilder --> |
| <!-- start interface com.google.inject.binder.AnnotatedConstantBindingBuilder --> |
| <interface name="AnnotatedConstantBindingBuilder" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> |
| </doc> |
| </method> |
| <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="annotation" type="java.lang.annotation.Annotation"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. |
| |
| @author crazybob@google.com (Bob Lee)]]> |
| </doc> |
| </interface> |
| <!-- end interface com.google.inject.binder.AnnotatedConstantBindingBuilder --> |
| <!-- start interface com.google.inject.binder.AnnotatedElementBuilder --> |
| <interface name="AnnotatedElementBuilder" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <method name="annotatedWith" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> |
| </doc> |
| </method> |
| <method name="annotatedWith" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="annotation" type="java.lang.annotation.Annotation"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. |
| |
| @author jessewilson@google.com (Jesse Wilson) |
| @since 2.0]]> |
| </doc> |
| </interface> |
| <!-- end interface com.google.inject.binder.AnnotatedElementBuilder --> |
| <!-- start interface com.google.inject.binder.ConstantBindingBuilder --> |
| <interface name="ConstantBindingBuilder" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <method name="to" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="value" type="java.lang.String"/> |
| <doc> |
| <![CDATA[Binds constant to the given value.]]> |
| </doc> |
| </method> |
| <method name="to" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="value" type="int"/> |
| <doc> |
| <![CDATA[Binds constant to the given value.]]> |
| </doc> |
| </method> |
| <method name="to" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="value" type="long"/> |
| <doc> |
| <![CDATA[Binds constant to the given value.]]> |
| </doc> |
| </method> |
| <method name="to" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="value" type="boolean"/> |
| <doc> |
| <![CDATA[Binds constant to the given value.]]> |
| </doc> |
| </method> |
| <method name="to" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="value" type="double"/> |
| <doc> |
| <![CDATA[Binds constant to the given value.]]> |
| </doc> |
| </method> |
| <method name="to" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="value" type="float"/> |
| <doc> |
| <![CDATA[Binds constant to the given value.]]> |
| </doc> |
| </method> |
| <method name="to" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="value" type="short"/> |
| <doc> |
| <![CDATA[Binds constant to the given value.]]> |
| </doc> |
| </method> |
| <method name="to" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="value" type="char"/> |
| <doc> |
| <![CDATA[Binds constant to the given value.]]> |
| </doc> |
| </method> |
| <method name="to" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="value" type="byte"/> |
| <doc> |
| <![CDATA[Binds constant to the given value. |
| |
| @since 3.0]]> |
| </doc> |
| </method> |
| <method name="to" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="value" type="java.lang.Class<?>"/> |
| <doc> |
| <![CDATA[Binds constant to the given value.]]> |
| </doc> |
| </method> |
| <method name="to" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="value" type="E extends java.lang.Enum<E>"/> |
| <doc> |
| <![CDATA[Binds constant to the given value.]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[Binds to a constant value.]]> |
| </doc> |
| </interface> |
| <!-- end interface com.google.inject.binder.ConstantBindingBuilder --> |
| <!-- start interface com.google.inject.binder.LinkedBindingBuilder --> |
| <interface name="LinkedBindingBuilder" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <implements name="com.google.inject.binder.ScopedBindingBuilder"/> |
| <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="implementation" type="java.lang.Class<? extends T>"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> |
| </doc> |
| </method> |
| <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="implementation" type="com.google.inject.TypeLiteral<? extends T>"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> |
| </doc> |
| </method> |
| <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="targetKey" type="com.google.inject.Key<? extends T>"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> |
| </doc> |
| </method> |
| <method name="toInstance" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="instance" type="T"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. |
| |
| @see com.google.inject.Injector#injectMembers]]> |
| </doc> |
| </method> |
| <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="provider" type="com.google.inject.Provider<? extends T>"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. |
| |
| @see com.google.inject.Injector#injectMembers]]> |
| </doc> |
| </method> |
| <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="provider" type="javax.inject.Provider<? extends T>"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. |
| |
| @see com.google.inject.Injector#injectMembers |
| @since 4.0]]> |
| </doc> |
| </method> |
| <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="providerType" type="java.lang.Class<? extends javax.inject.Provider<? extends T>>"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> |
| </doc> |
| </method> |
| <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="providerType" type="com.google.inject.TypeLiteral<? extends javax.inject.Provider<? extends T>>"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> |
| </doc> |
| </method> |
| <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="providerKey" type="com.google.inject.Key<? extends javax.inject.Provider<? extends T>>"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> |
| </doc> |
| </method> |
| <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="constructor" type="java.lang.reflect.Constructor<S>"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. |
| |
| @since 3.0]]> |
| </doc> |
| </method> |
| <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="constructor" type="java.lang.reflect.Constructor<S>"/> |
| <param name="type" type="com.google.inject.TypeLiteral<? extends S>"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. |
| |
| @since 3.0]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. |
| |
| @author crazybob@google.com (Bob Lee)]]> |
| </doc> |
| </interface> |
| <!-- end interface com.google.inject.binder.LinkedBindingBuilder --> |
| <!-- start interface com.google.inject.binder.ScopedBindingBuilder --> |
| <interface name="ScopedBindingBuilder" abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <method name="in" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> |
| </doc> |
| </method> |
| <method name="in" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="scope" type="com.google.inject.Scope"/> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> |
| </doc> |
| </method> |
| <method name="asEagerSingleton" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <doc> |
| <![CDATA[Instructs the {@link com.google.inject.Injector} to eagerly initialize this |
| singleton-scoped binding upon creation. Useful for application |
| initialization logic. See the EDSL examples at |
| {@link com.google.inject.Binder}.]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. |
| |
| @author crazybob@google.com (Bob Lee)]]> |
| </doc> |
| </interface> |
| <!-- end interface com.google.inject.binder.ScopedBindingBuilder --> |
| </package> |
| <package name="com.google.inject.daggeradapter"> |
| <!-- start class com.google.inject.daggeradapter.DaggerAdapter --> |
| <class name="DaggerAdapter" extends="java.lang.Object" |
| abstract="false" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| <method name="from" return="com.google.inject.Module" |
| abstract="false" native="false" synchronized="false" |
| static="true" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <param name="daggerModuleObjects" type="java.lang.Object[]"/> |
| <doc> |
| <![CDATA[Returns a guice module from a dagger module. |
| |
| <p>Note: At present, it does not honor {@code @Module(includes=...)} directives.]]> |
| </doc> |
| </method> |
| <doc> |
| <![CDATA[A utility to adapt classes annotated with {@link @dagger.Module} such that their |
| {@link @dagger.Provides} methods can be properly invoked by Guice to perform their |
| provision operations. |
| |
| <p>Simple example: <pre>{@code |
| Guice.createInjector(...other modules..., DaggerAdapter.from(new SomeDaggerAdapter())); |
| }</pre> |
| |
| <p>Some notes on usage and compatibility. |
| <ul> |
| <li>Dagger provider methods have a "SET_VALUES" provision mode not supported by Guice. |
| <li>MapBindings are not yet implemented (pending). |
| <li>Be careful about stateful modules. In contrast to Dagger (where components are |
| expected to be recreated on-demand with new Module instances), Guice typically |
| has a single injector with a long lifetime, so your module instance will be used |
| throughout the lifetime of the entire app. |
| <li>Dagger 1.x uses {@link @Singleton} for all scopes, including shorter-lived scopes |
| like per-request or per-activity. Using modules written with Dagger 1.x usage |
| in mind may result in mis-scoped objects. |
| <li>Dagger 2.x supports custom scope annotations, but for use in Guice, a custom scope |
| implementation must be registered in order to support the custom lifetime of that |
| annotation. |
| </ul> |
| |
| @author cgruber@google.com (Christian Gruber)]]> |
| </doc> |
| </class> |
| <!-- end class com.google.inject.daggeradapter.DaggerAdapter --> |
| </package> |
| <package name="com.google.inject.grapher"> |
| <!-- start class com.google.inject.grapher.AbstractInjectorGrapher --> |
| <class name="AbstractInjectorGrapher" extends="java.lang.Object" |
| abstract="true" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| <implements name="com.google.inject.grapher.InjectorGrapher"/> |
| <constructor name="AbstractInjectorGrapher" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| </constructor> |
| <constructor name="AbstractInjectorGrapher" type="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters" |
| static="false" final="false" visibility="public" |
| deprecated="not deprecated"> |
| </constructor> |
| <method name="graph" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| <param name="injector" type="com.google.inject.Injector"/> |
| <exception name="IOException" type="java.io.IOException"/> |
| </method> |
| <method name="graph" |
| abstract="false" native="false" synchronized="false" |
| static="false" final="true" visibility="public" |
| deprecated="not deprecated"> |
| <param name="injector" type="com.google.inject.Injector"/> |
| <param name="root" type="java.util.Set<com.google.inject.Key<?>>"/> |
| <exception name="IOException" type="java.io.IOException"/> |
| </method> |
| <method name="reset" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <exception name="IOException" type="java.io.IOException"/> |
| <doc> |
| <![CDATA[Resets the state of the grapher before rendering a new graph.]]> |
| </doc> |
| </method> |
| <method name="newInterfaceNode" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="node" type="com.google.inject.grapher.InterfaceNode"/> |
| <exception name="IOException" type="java.io.IOException"/> |
| <doc> |
| <![CDATA[Adds a new interface node to the graph.]]> |
| </doc> |
| </method> |
| <method name="newImplementationNode" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="node" type="com.google.inject.grapher.ImplementationNode"/> |
| <exception name="IOException" type="java.io.IOException"/> |
| <doc> |
| <![CDATA[Adds a new implementation node to the graph.]]> |
| </doc> |
| </method> |
| <method name="newInstanceNode" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="node" type="com.google.inject.grapher.InstanceNode"/> |
| <exception name="IOException" type="java.io.IOException"/> |
| <doc> |
| <![CDATA[Adds a new instance node to the graph.]]> |
| </doc> |
| </method> |
| <method name="newDependencyEdge" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="edge" type="com.google.inject.grapher.DependencyEdge"/> |
| <exception name="IOException" type="java.io.IOException"/> |
| <doc> |
| <![CDATA[Adds a new dependency edge to the graph.]]> |
| </doc> |
| </method> |
| <method name="newBindingEdge" |
| abstract="true" native="false" synchronized="false" |
| static="false" final="false" visibility="protected" |
| deprecated="not deprecated"> |
| <param name="edge" type="com.google.inject.grapher.BindingEdge"/> |
| <exception name="IOException" type="java.io.IOException"/> |
| <doc> |
| |