blob: 9ff6a102d603a55f69ce397d1aa6e8c1f54f7a6b [file] [log] [blame] [edit]
<?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&lt;? extends java.lang.annotation.Annotation&gt;"/>
<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&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="false" final="false" visibility="protected"
deprecated="not deprecated">
<param name="key" type="com.google.inject.Key&lt;T&gt;"/>
<doc>
<![CDATA[@see Binder#bind(Key)]]>
</doc>
</method>
<method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="false" final="false" visibility="protected"
deprecated="not deprecated">
<param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
<doc>
<![CDATA[@see Binder#bind(TypeLiteral)]]>
</doc>
</method>
<method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="false" final="false" visibility="protected"
deprecated="not deprecated">
<param name="clazz" type="java.lang.Class&lt;T&gt;"/>
<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&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
<param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
<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&lt;?&gt;"/>
<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&lt;?&gt;"/>
<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&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="false" final="false" visibility="protected"
deprecated="not deprecated">
<param name="key" type="com.google.inject.Key&lt;T&gt;"/>
<doc>
<![CDATA[@see Binder#getProvider(Key)
@since 2.0]]>
</doc>
</method>
<method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="false" final="false" visibility="protected"
deprecated="not deprecated">
<param name="type" type="java.lang.Class&lt;T&gt;"/>
<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&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
<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&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="false" final="false" visibility="protected"
deprecated="not deprecated">
<param name="type" type="java.lang.Class&lt;T&gt;"/>
<doc>
<![CDATA[@see Binder#getMembersInjector(Class)
@since 2.0]]>
</doc>
</method>
<method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="false" final="false" visibility="protected"
deprecated="not deprecated">
<param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
<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&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
<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&lt;? super com.google.inject.Binding&lt;?&gt;&gt;"/>
<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&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
<param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
<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&lt;? extends java.lang.annotation.Annotation&gt;"/>
<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&lt;T&gt;"
abstract="true" native="false" synchronized="false"
static="false" final="false" visibility="public"
deprecated="not deprecated">
<param name="key" type="com.google.inject.Key&lt;T&gt;"/>
<doc>
<![CDATA[See the EDSL examples at {@link Binder}.]]>
</doc>
</method>
<method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
abstract="true" native="false" synchronized="false"
static="false" final="false" visibility="public"
deprecated="not deprecated">
<param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
<doc>
<![CDATA[See the EDSL examples at {@link Binder}.]]>
</doc>
</method>
<method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
abstract="true" native="false" synchronized="false"
static="false" final="false" visibility="public"
deprecated="not deprecated">
<param name="type" type="java.lang.Class&lt;T&gt;"/>
<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&lt;T&gt;"/>
<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&lt;T&gt;"
abstract="true" native="false" synchronized="false"
static="false" final="false" visibility="public"
deprecated="not deprecated">
<param name="key" type="com.google.inject.Key&lt;T&gt;"/>
<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&lt;T&gt;"
abstract="true" native="false" synchronized="false"
static="false" final="false" visibility="public"
deprecated="not deprecated">
<param name="dependency" type="com.google.inject.spi.Dependency&lt;T&gt;"/>
<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&lt;T&gt;"
abstract="true" native="false" synchronized="false"
static="false" final="false" visibility="public"
deprecated="not deprecated">
<param name="type" type="java.lang.Class&lt;T&gt;"/>
<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&lt;T&gt;"
abstract="true" native="false" synchronized="false"
static="false" final="false" visibility="public"
deprecated="not deprecated">
<param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
<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&lt;T&gt;"
abstract="true" native="false" synchronized="false"
static="false" final="false" visibility="public"
deprecated="not deprecated">
<param name="type" type="java.lang.Class&lt;T&gt;"/>
<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&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
<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&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
<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&lt;? super com.google.inject.Binding&lt;?&gt;&gt;"/>
<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&lt;PaymentService&lt;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&lt;T&gt;"
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&lt;T&gt;"
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&lt;? super T, V&gt;"/>
<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&lt;V&gt;"/>
<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&lt;com.google.inject.spi.Message&gt;"
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&lt;com.google.inject.spi.Message&gt;"
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&lt;com.google.inject.spi.Message&gt;"
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&lt;com.google.inject.spi.Message&gt;"
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&lt;? extends com.google.inject.Module&gt;"/>
<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&lt;? extends com.google.inject.Module&gt;"/>
<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&lt;T&gt;"
abstract="true" native="false" synchronized="false"
static="false" final="false" visibility="public"
deprecated="not deprecated">
<param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
<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&lt;T&gt;"
abstract="true" native="false" synchronized="false"
static="false" final="false" visibility="public"
deprecated="not deprecated">
<param name="type" type="java.lang.Class&lt;T&gt;"/>
<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&lt;com.google.inject.Key&lt;?&gt;, com.google.inject.Binding&lt;?&gt;&gt;"
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&lt;com.google.inject.Key&lt;?&gt;, com.google.inject.Binding&lt;?&gt;&gt;"
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&lt;T&gt;"
abstract="true" native="false" synchronized="false"
static="false" final="false" visibility="public"
deprecated="not deprecated">
<param name="key" type="com.google.inject.Key&lt;T&gt;"/>
<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&lt;T&gt;"
abstract="true" native="false" synchronized="false"
static="false" final="false" visibility="public"
deprecated="not deprecated">
<param name="type" type="java.lang.Class&lt;T&gt;"/>
<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&lt;T&gt;"
abstract="true" native="false" synchronized="false"
static="false" final="false" visibility="public"
deprecated="not deprecated">
<param name="key" type="com.google.inject.Key&lt;T&gt;"/>
<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&lt;com.google.inject.Binding&lt;T&gt;&gt;"
abstract="true" native="false" synchronized="false"
static="false" final="false" visibility="public"
deprecated="not deprecated">
<param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
<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&lt;T&gt;"
abstract="true" native="false" synchronized="false"
static="false" final="false" visibility="public"
deprecated="not deprecated">
<param name="key" type="com.google.inject.Key&lt;T&gt;"/>
<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&lt;T&gt;"
abstract="true" native="false" synchronized="false"
static="false" final="false" visibility="public"
deprecated="not deprecated">
<param name="type" type="java.lang.Class&lt;T&gt;"/>
<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&lt;T&gt;"/>
<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&lt;T&gt;"/>
<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&lt;? extends com.google.inject.Module&gt;"/>
<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&lt;java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;, com.google.inject.Scope&gt;"
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&lt;com.google.inject.spi.TypeConverterBinding&gt;"
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&lt;? extends java.lang.annotation.Annotation&gt;"
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&lt;T&gt;"
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&lt;? extends java.lang.annotation.Annotation&gt;"
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&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="true" final="false" visibility="public"
deprecated="not deprecated">
<param name="type" type="java.lang.Class&lt;T&gt;"/>
<doc>
<![CDATA[Gets a key for an injection type.]]>
</doc>
</method>
<method name="get" return="com.google.inject.Key&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="true" final="false" visibility="public"
deprecated="not deprecated">
<param name="type" type="java.lang.Class&lt;T&gt;"/>
<param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
<doc>
<![CDATA[Gets a key for an injection type and an annotation type.]]>
</doc>
</method>
<method name="get" return="com.google.inject.Key&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="true" final="false" visibility="public"
deprecated="not deprecated">
<param name="type" type="java.lang.Class&lt;T&gt;"/>
<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&lt;?&gt;"
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&lt;?&gt;"
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&lt;? extends java.lang.annotation.Annotation&gt;"/>
<doc>
<![CDATA[Gets a key for an injection type and an annotation type.]]>
</doc>
</method>
<method name="get" return="com.google.inject.Key&lt;?&gt;"
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&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="true" final="false" visibility="public"
deprecated="not deprecated">
<param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
<doc>
<![CDATA[Gets a key for an injection type.]]>
</doc>
</method>
<method name="get" return="com.google.inject.Key&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="true" final="false" visibility="public"
deprecated="not deprecated">
<param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
<param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
<doc>
<![CDATA[Gets a key for an injection type and an annotation type.]]>
</doc>
</method>
<method name="get" return="com.google.inject.Key&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="true" final="false" visibility="public"
deprecated="not deprecated">
<param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
<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&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="false" final="false" visibility="public"
deprecated="not deprecated">
<param name="type" type="java.lang.Class&lt;T&gt;"/>
<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&lt;?&gt;"
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&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="false" final="false" visibility="public"
deprecated="not deprecated">
<param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
<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&lt;T&gt;"
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&lt;?&gt;"/>
<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&lt;?&gt;"/>
<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&lt;?&gt;"/>
<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&lt;T&gt;"/>
<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&lt;?&gt;"/>
<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&lt;?&gt;"/>
<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&lt;? extends java.lang.annotation.Annotation&gt;"/>
<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&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="false" final="true" visibility="protected"
deprecated="not deprecated">
<param name="key" type="com.google.inject.Key&lt;T&gt;"/>
<doc>
<![CDATA[@see Binder#bind(Key)]]>
</doc>
</method>
<method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="false" final="true" visibility="protected"
deprecated="not deprecated">
<param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
<doc>
<![CDATA[@see Binder#bind(TypeLiteral)]]>
</doc>
</method>
<method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="false" final="true" visibility="protected"
deprecated="not deprecated">
<param name="clazz" type="java.lang.Class&lt;T&gt;"/>
<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&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
<param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
<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&lt;?&gt;"/>
<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&lt;?&gt;"/>
<doc>
<![CDATA[Instructs Guice to require a binding to the given type.]]>
</doc>
</method>
<method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="false" final="true" visibility="protected"
deprecated="not deprecated">
<param name="key" type="com.google.inject.Key&lt;T&gt;"/>
<doc>
<![CDATA[@see Binder#getProvider(Key)]]>
</doc>
</method>
<method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="false" final="true" visibility="protected"
deprecated="not deprecated">
<param name="type" type="java.lang.Class&lt;T&gt;"/>
<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&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
<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&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="false" final="false" visibility="protected"
deprecated="not deprecated">
<param name="type" type="java.lang.Class&lt;T&gt;"/>
<doc>
<![CDATA[@see Binder#getMembersInjector(Class)]]>
</doc>
</method>
<method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="false" final="false" visibility="protected"
deprecated="not deprecated">
<param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
<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&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
<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&lt;? super com.google.inject.Binding&lt;?&gt;&gt;"/>
<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&lt;T&gt;"/>
<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&lt;com.google.inject.spi.Message&gt;"
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&lt;com.google.inject.spi.Message&gt;"
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&lt;T&gt;"
abstract="true" native="false" synchronized="false"
static="false" final="false" visibility="public"
deprecated="not deprecated">
<param name="key" type="com.google.inject.Key&lt;T&gt;"/>
<param name="unscoped" type="com.google.inject.Provider&lt;T&gt;"/>
<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&lt;?&gt;"/>
<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&lt;?&gt;"/>
<param name="scope" type="com.google.inject.Scope"/>
<param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
<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&lt;com.google.inject.Stage&gt;"
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&lt;? super T&gt;"
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&lt;?&gt;"
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&lt;T&gt;"
abstract="false" native="false" synchronized="false"
static="true" final="false" visibility="public"
deprecated="not deprecated">
<param name="type" type="java.lang.Class&lt;T&gt;"/>
<doc>
<![CDATA[Gets type literal for the given {@code Class} instance.]]>
</doc>
</method>
<method name="getSupertype" return="com.google.inject.TypeLiteral&lt;?&gt;"
abstract="false" native="false" synchronized="false"
static="false" final="false" visibility="public"
deprecated="not deprecated">
<param name="supertype" type="java.lang.Class&lt;?&gt;"/>
<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&lt;?&gt;"
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&lt;com.google.inject.TypeLiteral&lt;?&gt;&gt;"
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&lt;com.google.inject.TypeLiteral&lt;?&gt;&gt;"
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&lt;?&gt;"
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&lt;T&gt;"
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&lt;com.google.inject.assistedinject.AssistedMethod&gt;"
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&lt;T, V&gt;"/>
<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&lt;? extends T&gt;"/>
<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&lt;?&gt;"
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&lt;?&gt;"
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&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
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&lt;T&gt;"/>
<param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
<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&lt;T&gt;"/>
<param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
<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&lt;T&gt;"/>
<param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
<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&lt;T&gt;"/>
<param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
<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&lt;T&gt;"/>
<param name="annotation" type="java.lang.annotation.Annotation"/>
<param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
<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&lt;T&gt;"/>
<param name="annotation" type="java.lang.annotation.Annotation"/>
<param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
<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&lt;T&gt;"/>
<param name="annotation" type="java.lang.annotation.Annotation"/>
<param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
<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&lt;T&gt;"/>
<param name="annotation" type="java.lang.annotation.Annotation"/>
<param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
<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&lt;T&gt;"/>
<param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
<param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
<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&lt;T&gt;"/>
<param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
<param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
<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&lt;T&gt;"/>
<param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
<param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
<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&lt;T&gt;"/>
<param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
<param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
<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&lt;T&gt;"/>
<param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
<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&lt;T&gt;"/>
<param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
<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&lt;F&gt;"/>
<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&lt;F&gt;"/>
<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&lt;F&gt;"/>
</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&lt;F&gt;"/>
<implements name="com.google.inject.spi.HasDependencies"/>
<method name="newFactory" return="com.google.inject.Provider&lt;F&gt;"
abstract="false" native="false" synchronized="false"
static="true" final="false" visibility="public"
deprecated="not deprecated">
<param name="factoryType" type="java.lang.Class&lt;F&gt;"/>
<param name="implementationType" type="java.lang.Class&lt;?&gt;"/>
</method>
<method name="newFactory" return="com.google.inject.Provider&lt;F&gt;"
abstract="false" native="false" synchronized="false"
static="true" final="false" visibility="public"
deprecated="not deprecated">
<param name="factoryType" type="com.google.inject.TypeLiteral&lt;F&gt;"/>
<param name="implementationType" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
</method>
<method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
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&lt;T&gt;"/>
<method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
abstract="true" native="false" synchronized="false"
static="false" final="false" visibility="public"
deprecated="not deprecated">
<param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
<doc>
<![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
</doc>
</method>
<method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
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&lt;? extends java.lang.annotation.Annotation&gt;"/>
<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&lt;? extends java.lang.annotation.Annotation&gt;"/>
<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&lt;?&gt;"/>
<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&lt;E&gt;"/>
<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&lt;? extends T&gt;"/>
<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&lt;? extends T&gt;"/>
<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&lt;? extends T&gt;"/>
<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&lt;? extends T&gt;"/>
<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&lt;? extends T&gt;"/>
<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&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
<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&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
<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&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
<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&lt;S&gt;"/>
<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&lt;S&gt;"/>
<param name="type" type="com.google.inject.TypeLiteral&lt;? extends S&gt;"/>
<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&lt;? extends java.lang.annotation.Annotation&gt;"/>
<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&lt;com.google.inject.Key&lt;?&gt;&gt;"/>
<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>