xref: /aosp_15_r20/external/guice/latest-api-diffs/2.0.xml (revision dc5640d1ceac12a29404866b9a53df952a7a6c47)
1*dc5640d1SHerbert Xue<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
2*dc5640d1SHerbert Xue<!-- Generated by the JDiff Javadoc doclet -->
3*dc5640d1SHerbert Xue<!-- (http://www.jdiff.org) -->
4*dc5640d1SHerbert Xue<!-- on Tue May 19 17:01:55 PDT 2009 -->
5*dc5640d1SHerbert Xue
6*dc5640d1SHerbert Xue<api
7*dc5640d1SHerbert Xue  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
8*dc5640d1SHerbert Xue  xsi:noNamespaceSchemaLocation='api.xsd'
9*dc5640d1SHerbert Xue  name="2.0"
10*dc5640d1SHerbert Xue  jdversion="1.1.1">
11*dc5640d1SHerbert Xue
12*dc5640d1SHerbert Xue<!--  Command line arguments =  -doclet jdiff.JDiff -docletpath /Applications/bin/jdiff-1.1.1/jdiff.jar:/Applications/bin/jdiff-1.1.1/xerces.jar -d /Users/jessewilson/Guice/guice-everything/api-diffs -classpath /usr/share/ant/lib/ant-launcher.jar:/usr/share/ant/lib/ant-jai.jar:/usr/share/ant/lib/ant-jmf.jar:/usr/share/ant/lib/ant-junit.jar:/usr/share/ant/lib/ant-nodeps.jar:/usr/share/ant/lib/ant-swing.jar:/usr/share/ant/lib/ant-testutil.jar:/usr/share/ant/lib/ant-trax.jar:/usr/share/ant/lib/ant.jar:/usr/share/ant/lib/junit.jar:/usr/share/ant/lib/xercesImpl.jar:/usr/share/ant/lib/xml-apis.jar -sourcepath /Users/jessewilson/Guice/google-guice/src:/Users/jessewilson/Guice/google-guice/extensions/jmx/src:/Users/jessewilson/Guice/google-guice/extensions/jndi/src:/Users/jessewilson/Guice/google-guice/extensions/assistedinject/src:/Users/jessewilson/Guice/google-guice/extensions/multibindings/src:/Users/jessewilson/Guice/google-guice/extensions/throwingproviders/src:/Users/jessewilson/Guice/google-guice/servlet/src:/Users/jessewilson/Guice/google-guice/spring/src:/Users/jessewilson/Guice/google-guice/struts2/plugin/src -apiname 2.0 -baseURI http://www.w3.org -apidir /Users/jessewilson/Guice/guice-everything/api-diffs -source 1.5 -->
13*dc5640d1SHerbert Xue<package name="com.google.inject">
14*dc5640d1SHerbert Xue  <!-- start class com.google.inject.AbstractModule -->
15*dc5640d1SHerbert Xue  <class name="AbstractModule" extends="java.lang.Object"
16*dc5640d1SHerbert Xue    abstract="true"
17*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
18*dc5640d1SHerbert Xue    deprecated="not deprecated">
19*dc5640d1SHerbert Xue    <implements name="com.google.inject.Module"/>
20*dc5640d1SHerbert Xue    <constructor name="AbstractModule"
21*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
22*dc5640d1SHerbert Xue      deprecated="not deprecated">
23*dc5640d1SHerbert Xue    </constructor>
24*dc5640d1SHerbert Xue    <method name="configure"
25*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="true"
26*dc5640d1SHerbert Xue      static="false" final="true" visibility="public"
27*dc5640d1SHerbert Xue      deprecated="not deprecated">
28*dc5640d1SHerbert Xue      <param name="builder" type="com.google.inject.Binder"/>
29*dc5640d1SHerbert Xue    </method>
30*dc5640d1SHerbert Xue    <method name="configure"
31*dc5640d1SHerbert Xue      abstract="true" native="false" synchronized="false"
32*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
33*dc5640d1SHerbert Xue      deprecated="not deprecated">
34*dc5640d1SHerbert Xue      <doc>
35*dc5640d1SHerbert Xue      <![CDATA[Configures a {@link Binder} via the exposed methods.]]>
36*dc5640d1SHerbert Xue      </doc>
37*dc5640d1SHerbert Xue    </method>
38*dc5640d1SHerbert Xue    <method name="binder" return="com.google.inject.Binder"
39*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
40*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
41*dc5640d1SHerbert Xue      deprecated="not deprecated">
42*dc5640d1SHerbert Xue      <doc>
43*dc5640d1SHerbert Xue      <![CDATA[Gets direct access to the underlying {@code Binder}.]]>
44*dc5640d1SHerbert Xue      </doc>
45*dc5640d1SHerbert Xue    </method>
46*dc5640d1SHerbert Xue    <method name="bindScope"
47*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
48*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
49*dc5640d1SHerbert Xue      deprecated="not deprecated">
50*dc5640d1SHerbert Xue      <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
51*dc5640d1SHerbert Xue      <param name="scope" type="com.google.inject.Scope"/>
52*dc5640d1SHerbert Xue      <doc>
53*dc5640d1SHerbert Xue      <![CDATA[@see Binder#bindScope(Class, Scope)]]>
54*dc5640d1SHerbert Xue      </doc>
55*dc5640d1SHerbert Xue    </method>
56*dc5640d1SHerbert Xue    <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
57*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
58*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
59*dc5640d1SHerbert Xue      deprecated="not deprecated">
60*dc5640d1SHerbert Xue      <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
61*dc5640d1SHerbert Xue      <doc>
62*dc5640d1SHerbert Xue      <![CDATA[@see Binder#bind(Key)]]>
63*dc5640d1SHerbert Xue      </doc>
64*dc5640d1SHerbert Xue    </method>
65*dc5640d1SHerbert Xue    <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
66*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
67*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
68*dc5640d1SHerbert Xue      deprecated="not deprecated">
69*dc5640d1SHerbert Xue      <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
70*dc5640d1SHerbert Xue      <doc>
71*dc5640d1SHerbert Xue      <![CDATA[@see Binder#bind(TypeLiteral)]]>
72*dc5640d1SHerbert Xue      </doc>
73*dc5640d1SHerbert Xue    </method>
74*dc5640d1SHerbert Xue    <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
75*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
76*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
77*dc5640d1SHerbert Xue      deprecated="not deprecated">
78*dc5640d1SHerbert Xue      <param name="clazz" type="java.lang.Class&lt;T&gt;"/>
79*dc5640d1SHerbert Xue      <doc>
80*dc5640d1SHerbert Xue      <![CDATA[@see Binder#bind(Class)]]>
81*dc5640d1SHerbert Xue      </doc>
82*dc5640d1SHerbert Xue    </method>
83*dc5640d1SHerbert Xue    <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder"
84*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
85*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
86*dc5640d1SHerbert Xue      deprecated="not deprecated">
87*dc5640d1SHerbert Xue      <doc>
88*dc5640d1SHerbert Xue      <![CDATA[@see Binder#bindConstant()]]>
89*dc5640d1SHerbert Xue      </doc>
90*dc5640d1SHerbert Xue    </method>
91*dc5640d1SHerbert Xue    <method name="install"
92*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
93*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
94*dc5640d1SHerbert Xue      deprecated="not deprecated">
95*dc5640d1SHerbert Xue      <param name="module" type="com.google.inject.Module"/>
96*dc5640d1SHerbert Xue      <doc>
97*dc5640d1SHerbert Xue      <![CDATA[@see Binder#install(Module)]]>
98*dc5640d1SHerbert Xue      </doc>
99*dc5640d1SHerbert Xue    </method>
100*dc5640d1SHerbert Xue    <method name="addError"
101*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
102*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
103*dc5640d1SHerbert Xue      deprecated="not deprecated">
104*dc5640d1SHerbert Xue      <param name="message" type="java.lang.String"/>
105*dc5640d1SHerbert Xue      <param name="arguments" type="java.lang.Object[]"/>
106*dc5640d1SHerbert Xue      <doc>
107*dc5640d1SHerbert Xue      <![CDATA[@see Binder#addError(String, Object[])]]>
108*dc5640d1SHerbert Xue      </doc>
109*dc5640d1SHerbert Xue    </method>
110*dc5640d1SHerbert Xue    <method name="addError"
111*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
112*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
113*dc5640d1SHerbert Xue      deprecated="not deprecated">
114*dc5640d1SHerbert Xue      <param name="t" type="java.lang.Throwable"/>
115*dc5640d1SHerbert Xue      <doc>
116*dc5640d1SHerbert Xue      <![CDATA[@see Binder#addError(Throwable)]]>
117*dc5640d1SHerbert Xue      </doc>
118*dc5640d1SHerbert Xue    </method>
119*dc5640d1SHerbert Xue    <method name="addError"
120*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
121*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
122*dc5640d1SHerbert Xue      deprecated="not deprecated">
123*dc5640d1SHerbert Xue      <param name="message" type="com.google.inject.spi.Message"/>
124*dc5640d1SHerbert Xue      <doc>
125*dc5640d1SHerbert Xue      <![CDATA[@see Binder#addError(Message)
126*dc5640d1SHerbert Xue @since 2.0]]>
127*dc5640d1SHerbert Xue      </doc>
128*dc5640d1SHerbert Xue    </method>
129*dc5640d1SHerbert Xue    <method name="requestInjection"
130*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
131*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
132*dc5640d1SHerbert Xue      deprecated="not deprecated">
133*dc5640d1SHerbert Xue      <param name="instance" type="java.lang.Object"/>
134*dc5640d1SHerbert Xue      <doc>
135*dc5640d1SHerbert Xue      <![CDATA[@see Binder#requestInjection(Object)
136*dc5640d1SHerbert Xue @since 2.0]]>
137*dc5640d1SHerbert Xue      </doc>
138*dc5640d1SHerbert Xue    </method>
139*dc5640d1SHerbert Xue    <method name="requestStaticInjection"
140*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
141*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
142*dc5640d1SHerbert Xue      deprecated="not deprecated">
143*dc5640d1SHerbert Xue      <param name="types" type="java.lang.Class[]"/>
144*dc5640d1SHerbert Xue      <doc>
145*dc5640d1SHerbert Xue      <![CDATA[@see Binder#requestStaticInjection(Class[])]]>
146*dc5640d1SHerbert Xue      </doc>
147*dc5640d1SHerbert Xue    </method>
148*dc5640d1SHerbert Xue    <method name="bindInterceptor"
149*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
150*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
151*dc5640d1SHerbert Xue      deprecated="not deprecated">
152*dc5640d1SHerbert Xue      <param name="classMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
153*dc5640d1SHerbert Xue      <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
154*dc5640d1SHerbert Xue      <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
155*dc5640d1SHerbert Xue      <doc>
156*dc5640d1SHerbert Xue      <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher,
157*dc5640d1SHerbert Xue  com.google.inject.matcher.Matcher,
158*dc5640d1SHerbert Xue  org.aopalliance.intercept.MethodInterceptor[])]]>
159*dc5640d1SHerbert Xue      </doc>
160*dc5640d1SHerbert Xue    </method>
161*dc5640d1SHerbert Xue    <method name="requireBinding"
162*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
163*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
164*dc5640d1SHerbert Xue      deprecated="not deprecated">
165*dc5640d1SHerbert Xue      <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
166*dc5640d1SHerbert Xue      <doc>
167*dc5640d1SHerbert Xue      <![CDATA[Adds a dependency from this module to {@code key}. When the injector is
168*dc5640d1SHerbert Xue created, Guice will report an error if {@code key} cannot be injected.
169*dc5640d1SHerbert Xue Note that this requirement may be satisfied by implicit binding, such as
170*dc5640d1SHerbert Xue a public no-arguments constructor.
171*dc5640d1SHerbert Xue
172*dc5640d1SHerbert Xue @since 2.0]]>
173*dc5640d1SHerbert Xue      </doc>
174*dc5640d1SHerbert Xue    </method>
175*dc5640d1SHerbert Xue    <method name="requireBinding"
176*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
177*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
178*dc5640d1SHerbert Xue      deprecated="not deprecated">
179*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;?&gt;"/>
180*dc5640d1SHerbert Xue      <doc>
181*dc5640d1SHerbert Xue      <![CDATA[Adds a dependency from this module to {@code type}. When the injector is
182*dc5640d1SHerbert Xue created, Guice will report an error if {@code type} cannot be injected.
183*dc5640d1SHerbert Xue Note that this requirement may be satisfied by implicit binding, such as
184*dc5640d1SHerbert Xue a public no-arguments constructor.
185*dc5640d1SHerbert Xue
186*dc5640d1SHerbert Xue @since 2.0]]>
187*dc5640d1SHerbert Xue      </doc>
188*dc5640d1SHerbert Xue    </method>
189*dc5640d1SHerbert Xue    <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
190*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
191*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
192*dc5640d1SHerbert Xue      deprecated="not deprecated">
193*dc5640d1SHerbert Xue      <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
194*dc5640d1SHerbert Xue      <doc>
195*dc5640d1SHerbert Xue      <![CDATA[@see Binder#getProvider(Key)
196*dc5640d1SHerbert Xue @since 2.0]]>
197*dc5640d1SHerbert Xue      </doc>
198*dc5640d1SHerbert Xue    </method>
199*dc5640d1SHerbert Xue    <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
200*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
201*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
202*dc5640d1SHerbert Xue      deprecated="not deprecated">
203*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
204*dc5640d1SHerbert Xue      <doc>
205*dc5640d1SHerbert Xue      <![CDATA[@see Binder#getProvider(Class)
206*dc5640d1SHerbert Xue @since 2.0]]>
207*dc5640d1SHerbert Xue      </doc>
208*dc5640d1SHerbert Xue    </method>
209*dc5640d1SHerbert Xue    <method name="convertToTypes"
210*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
211*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
212*dc5640d1SHerbert Xue      deprecated="not deprecated">
213*dc5640d1SHerbert Xue      <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
214*dc5640d1SHerbert Xue      <param name="converter" type="com.google.inject.spi.TypeConverter"/>
215*dc5640d1SHerbert Xue      <doc>
216*dc5640d1SHerbert Xue      <![CDATA[@see Binder#convertToTypes
217*dc5640d1SHerbert Xue @since 2.0]]>
218*dc5640d1SHerbert Xue      </doc>
219*dc5640d1SHerbert Xue    </method>
220*dc5640d1SHerbert Xue    <method name="currentStage" return="com.google.inject.Stage"
221*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
222*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
223*dc5640d1SHerbert Xue      deprecated="not deprecated">
224*dc5640d1SHerbert Xue      <doc>
225*dc5640d1SHerbert Xue      <![CDATA[@see Binder#currentStage()
226*dc5640d1SHerbert Xue @since 2.0]]>
227*dc5640d1SHerbert Xue      </doc>
228*dc5640d1SHerbert Xue    </method>
229*dc5640d1SHerbert Xue    <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
230*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
231*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
232*dc5640d1SHerbert Xue      deprecated="not deprecated">
233*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
234*dc5640d1SHerbert Xue      <doc>
235*dc5640d1SHerbert Xue      <![CDATA[@see Binder#getMembersInjector(Class)
236*dc5640d1SHerbert Xue @since 2.0]]>
237*dc5640d1SHerbert Xue      </doc>
238*dc5640d1SHerbert Xue    </method>
239*dc5640d1SHerbert Xue    <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
240*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
241*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
242*dc5640d1SHerbert Xue      deprecated="not deprecated">
243*dc5640d1SHerbert Xue      <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
244*dc5640d1SHerbert Xue      <doc>
245*dc5640d1SHerbert Xue      <![CDATA[@see Binder#getMembersInjector(TypeLiteral)
246*dc5640d1SHerbert Xue @since 2.0]]>
247*dc5640d1SHerbert Xue      </doc>
248*dc5640d1SHerbert Xue    </method>
249*dc5640d1SHerbert Xue    <method name="bindListener"
250*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
251*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
252*dc5640d1SHerbert Xue      deprecated="not deprecated">
253*dc5640d1SHerbert Xue      <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
254*dc5640d1SHerbert Xue      <param name="listener" type="com.google.inject.spi.TypeListener"/>
255*dc5640d1SHerbert Xue      <doc>
256*dc5640d1SHerbert Xue      <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher,
257*dc5640d1SHerbert Xue  com.google.inject.spi.TypeListener)
258*dc5640d1SHerbert Xue @since 2.0]]>
259*dc5640d1SHerbert Xue      </doc>
260*dc5640d1SHerbert Xue    </method>
261*dc5640d1SHerbert Xue    <doc>
262*dc5640d1SHerbert Xue    <![CDATA[A support class for {@link Module}s which reduces repetition and results in
263*dc5640d1SHerbert Xue a more readable configuration. Simply extend this class, implement {@link
264*dc5640d1SHerbert Xue #configure()}, and call the inherited methods which mirror those found in
265*dc5640d1SHerbert Xue {@link Binder}. For example:
266*dc5640d1SHerbert Xue
267*dc5640d1SHerbert Xue <pre>
268*dc5640d1SHerbert Xue public class MyModule extends AbstractModule {
269*dc5640d1SHerbert Xue   protected void configure() {
270*dc5640d1SHerbert Xue     bind(Service.class).to(ServiceImpl.class).in(Singleton.class);
271*dc5640d1SHerbert Xue     bind(CreditCardPaymentService.class);
272*dc5640d1SHerbert Xue     bind(PaymentService.class).to(CreditCardPaymentService.class);
273*dc5640d1SHerbert Xue     bindConstant().annotatedWith(Names.named("port")).to(8080);
274*dc5640d1SHerbert Xue   }
275*dc5640d1SHerbert Xue }
276*dc5640d1SHerbert Xue </pre>
277*dc5640d1SHerbert Xue
278*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
279*dc5640d1SHerbert Xue    </doc>
280*dc5640d1SHerbert Xue  </class>
281*dc5640d1SHerbert Xue  <!-- end class com.google.inject.AbstractModule -->
282*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.Binder -->
283*dc5640d1SHerbert Xue  <interface name="Binder"    abstract="true"
284*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
285*dc5640d1SHerbert Xue    deprecated="not deprecated">
286*dc5640d1SHerbert Xue    <method name="bindInterceptor"
287*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
288*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
289*dc5640d1SHerbert Xue      deprecated="not deprecated">
290*dc5640d1SHerbert Xue      <param name="classMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
291*dc5640d1SHerbert Xue      <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
292*dc5640d1SHerbert Xue      <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
293*dc5640d1SHerbert Xue      <doc>
294*dc5640d1SHerbert Xue      <![CDATA[Binds method interceptor[s] to methods matched by class and method matchers. A method is
295*dc5640d1SHerbert Xue eligible for interception if:
296*dc5640d1SHerbert Xue
297*dc5640d1SHerbert Xue <ul>
298*dc5640d1SHerbert Xue  <li>Guice created the instance the method is on</li>
299*dc5640d1SHerbert Xue  <li>Neither the enclosing type nor the method is final</li>
300*dc5640d1SHerbert Xue  <li>And the method is package-private, protected, or public</li>
301*dc5640d1SHerbert Xue </ul>
302*dc5640d1SHerbert Xue
303*dc5640d1SHerbert Xue @param classMatcher matches classes the interceptor should apply to. For
304*dc5640d1SHerbert Xue     example: {@code only(Runnable.class)}.
305*dc5640d1SHerbert Xue @param methodMatcher matches methods the interceptor should apply to. For
306*dc5640d1SHerbert Xue     example: {@code annotatedWith(Transactional.class)}.
307*dc5640d1SHerbert Xue @param interceptors to bind]]>
308*dc5640d1SHerbert Xue      </doc>
309*dc5640d1SHerbert Xue    </method>
310*dc5640d1SHerbert Xue    <method name="bindScope"
311*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
312*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
313*dc5640d1SHerbert Xue      deprecated="not deprecated">
314*dc5640d1SHerbert Xue      <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
315*dc5640d1SHerbert Xue      <param name="scope" type="com.google.inject.Scope"/>
316*dc5640d1SHerbert Xue      <doc>
317*dc5640d1SHerbert Xue      <![CDATA[Binds a scope to an annotation.]]>
318*dc5640d1SHerbert Xue      </doc>
319*dc5640d1SHerbert Xue    </method>
320*dc5640d1SHerbert Xue    <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
321*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
322*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
323*dc5640d1SHerbert Xue      deprecated="not deprecated">
324*dc5640d1SHerbert Xue      <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
325*dc5640d1SHerbert Xue      <doc>
326*dc5640d1SHerbert Xue      <![CDATA[See the EDSL examples at {@link Binder}.]]>
327*dc5640d1SHerbert Xue      </doc>
328*dc5640d1SHerbert Xue    </method>
329*dc5640d1SHerbert Xue    <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
330*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
331*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
332*dc5640d1SHerbert Xue      deprecated="not deprecated">
333*dc5640d1SHerbert Xue      <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
334*dc5640d1SHerbert Xue      <doc>
335*dc5640d1SHerbert Xue      <![CDATA[See the EDSL examples at {@link Binder}.]]>
336*dc5640d1SHerbert Xue      </doc>
337*dc5640d1SHerbert Xue    </method>
338*dc5640d1SHerbert Xue    <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
339*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
340*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
341*dc5640d1SHerbert Xue      deprecated="not deprecated">
342*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
343*dc5640d1SHerbert Xue      <doc>
344*dc5640d1SHerbert Xue      <![CDATA[See the EDSL examples at {@link Binder}.]]>
345*dc5640d1SHerbert Xue      </doc>
346*dc5640d1SHerbert Xue    </method>
347*dc5640d1SHerbert Xue    <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder"
348*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
349*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
350*dc5640d1SHerbert Xue      deprecated="not deprecated">
351*dc5640d1SHerbert Xue      <doc>
352*dc5640d1SHerbert Xue      <![CDATA[See the EDSL examples at {@link Binder}.]]>
353*dc5640d1SHerbert Xue      </doc>
354*dc5640d1SHerbert Xue    </method>
355*dc5640d1SHerbert Xue    <method name="requestInjection"
356*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
357*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
358*dc5640d1SHerbert Xue      deprecated="not deprecated">
359*dc5640d1SHerbert Xue      <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
360*dc5640d1SHerbert Xue      <param name="instance" type="T"/>
361*dc5640d1SHerbert Xue      <doc>
362*dc5640d1SHerbert Xue      <![CDATA[Upon successful creation, the {@link Injector} will inject instance fields
363*dc5640d1SHerbert Xue and methods of the given object.
364*dc5640d1SHerbert Xue
365*dc5640d1SHerbert Xue @param type of instance
366*dc5640d1SHerbert Xue @param instance for which members will be injected
367*dc5640d1SHerbert Xue @since 2.0]]>
368*dc5640d1SHerbert Xue      </doc>
369*dc5640d1SHerbert Xue    </method>
370*dc5640d1SHerbert Xue    <method name="requestInjection"
371*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
372*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
373*dc5640d1SHerbert Xue      deprecated="not deprecated">
374*dc5640d1SHerbert Xue      <param name="instance" type="java.lang.Object"/>
375*dc5640d1SHerbert Xue      <doc>
376*dc5640d1SHerbert Xue      <![CDATA[Upon successful creation, the {@link Injector} will inject instance fields
377*dc5640d1SHerbert Xue and methods of the given object.
378*dc5640d1SHerbert Xue
379*dc5640d1SHerbert Xue @param instance for which members will be injected
380*dc5640d1SHerbert Xue @since 2.0]]>
381*dc5640d1SHerbert Xue      </doc>
382*dc5640d1SHerbert Xue    </method>
383*dc5640d1SHerbert Xue    <method name="requestStaticInjection"
384*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
385*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
386*dc5640d1SHerbert Xue      deprecated="not deprecated">
387*dc5640d1SHerbert Xue      <param name="types" type="java.lang.Class[]"/>
388*dc5640d1SHerbert Xue      <doc>
389*dc5640d1SHerbert Xue      <![CDATA[Upon successful creation, the {@link Injector} will inject static fields
390*dc5640d1SHerbert Xue and methods in the given classes.
391*dc5640d1SHerbert Xue
392*dc5640d1SHerbert Xue @param types for which static members will be injected]]>
393*dc5640d1SHerbert Xue      </doc>
394*dc5640d1SHerbert Xue    </method>
395*dc5640d1SHerbert Xue    <method name="install"
396*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
397*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
398*dc5640d1SHerbert Xue      deprecated="not deprecated">
399*dc5640d1SHerbert Xue      <param name="module" type="com.google.inject.Module"/>
400*dc5640d1SHerbert Xue      <doc>
401*dc5640d1SHerbert Xue      <![CDATA[Uses the given module to configure more bindings.]]>
402*dc5640d1SHerbert Xue      </doc>
403*dc5640d1SHerbert Xue    </method>
404*dc5640d1SHerbert Xue    <method name="currentStage" return="com.google.inject.Stage"
405*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
406*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
407*dc5640d1SHerbert Xue      deprecated="not deprecated">
408*dc5640d1SHerbert Xue      <doc>
409*dc5640d1SHerbert Xue      <![CDATA[Gets the current stage.]]>
410*dc5640d1SHerbert Xue      </doc>
411*dc5640d1SHerbert Xue    </method>
412*dc5640d1SHerbert Xue    <method name="addError"
413*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
414*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
415*dc5640d1SHerbert Xue      deprecated="not deprecated">
416*dc5640d1SHerbert Xue      <param name="message" type="java.lang.String"/>
417*dc5640d1SHerbert Xue      <param name="arguments" type="java.lang.Object[]"/>
418*dc5640d1SHerbert Xue      <doc>
419*dc5640d1SHerbert Xue      <![CDATA[Records an error message which will be presented to the user at a later
420*dc5640d1SHerbert Xue time. Unlike throwing an exception, this enable us to continue
421*dc5640d1SHerbert Xue configuring the Injector and discover more errors. Uses {@link
422*dc5640d1SHerbert Xue String#format(String, Object[])} to insert the arguments into the
423*dc5640d1SHerbert Xue message.]]>
424*dc5640d1SHerbert Xue      </doc>
425*dc5640d1SHerbert Xue    </method>
426*dc5640d1SHerbert Xue    <method name="addError"
427*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
428*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
429*dc5640d1SHerbert Xue      deprecated="not deprecated">
430*dc5640d1SHerbert Xue      <param name="t" type="java.lang.Throwable"/>
431*dc5640d1SHerbert Xue      <doc>
432*dc5640d1SHerbert Xue      <![CDATA[Records an exception, the full details of which will be logged, and the
433*dc5640d1SHerbert Xue message of which will be presented to the user at a later
434*dc5640d1SHerbert Xue time. If your Module calls something that you worry may fail, you should
435*dc5640d1SHerbert Xue catch the exception and pass it into this.]]>
436*dc5640d1SHerbert Xue      </doc>
437*dc5640d1SHerbert Xue    </method>
438*dc5640d1SHerbert Xue    <method name="addError"
439*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
440*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
441*dc5640d1SHerbert Xue      deprecated="not deprecated">
442*dc5640d1SHerbert Xue      <param name="message" type="com.google.inject.spi.Message"/>
443*dc5640d1SHerbert Xue      <doc>
444*dc5640d1SHerbert Xue      <![CDATA[Records an error message to be presented to the user at a later time.
445*dc5640d1SHerbert Xue
446*dc5640d1SHerbert Xue @since 2.0]]>
447*dc5640d1SHerbert Xue      </doc>
448*dc5640d1SHerbert Xue    </method>
449*dc5640d1SHerbert Xue    <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
450*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
451*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
452*dc5640d1SHerbert Xue      deprecated="not deprecated">
453*dc5640d1SHerbert Xue      <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
454*dc5640d1SHerbert Xue      <doc>
455*dc5640d1SHerbert Xue      <![CDATA[Returns the provider used to obtain instances for the given injection key.
456*dc5640d1SHerbert Xue The returned will not be valid until the {@link Injector} has been
457*dc5640d1SHerbert Xue created. The provider will throw an {@code IllegalStateException} if you
458*dc5640d1SHerbert Xue try to use it beforehand.
459*dc5640d1SHerbert Xue
460*dc5640d1SHerbert Xue @since 2.0]]>
461*dc5640d1SHerbert Xue      </doc>
462*dc5640d1SHerbert Xue    </method>
463*dc5640d1SHerbert Xue    <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
464*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
465*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
466*dc5640d1SHerbert Xue      deprecated="not deprecated">
467*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
468*dc5640d1SHerbert Xue      <doc>
469*dc5640d1SHerbert Xue      <![CDATA[Returns the provider used to obtain instances for the given injection type.
470*dc5640d1SHerbert Xue The returned provider will not be valid until the {@link Injector} has been
471*dc5640d1SHerbert Xue created. The provider will throw an {@code IllegalStateException} if you
472*dc5640d1SHerbert Xue try to use it beforehand.
473*dc5640d1SHerbert Xue
474*dc5640d1SHerbert Xue @since 2.0]]>
475*dc5640d1SHerbert Xue      </doc>
476*dc5640d1SHerbert Xue    </method>
477*dc5640d1SHerbert Xue    <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
478*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
479*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
480*dc5640d1SHerbert Xue      deprecated="not deprecated">
481*dc5640d1SHerbert Xue      <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
482*dc5640d1SHerbert Xue      <doc>
483*dc5640d1SHerbert Xue      <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
484*dc5640d1SHerbert Xue of the given type {@code T}. The returned members injector will not be valid until the main
485*dc5640d1SHerbert Xue {@link Injector} has been created. The members injector will throw an {@code
486*dc5640d1SHerbert Xue IllegalStateException} if you try to use it beforehand.
487*dc5640d1SHerbert Xue
488*dc5640d1SHerbert Xue @param typeLiteral type to get members injector for
489*dc5640d1SHerbert Xue @since 2.0]]>
490*dc5640d1SHerbert Xue      </doc>
491*dc5640d1SHerbert Xue    </method>
492*dc5640d1SHerbert Xue    <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
493*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
494*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
495*dc5640d1SHerbert Xue      deprecated="not deprecated">
496*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
497*dc5640d1SHerbert Xue      <doc>
498*dc5640d1SHerbert Xue      <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
499*dc5640d1SHerbert Xue of the given type {@code T}. The returned members injector will not be valid until the main
500*dc5640d1SHerbert Xue {@link Injector} has been created. The members injector will throw an {@code
501*dc5640d1SHerbert Xue IllegalStateException} if you try to use it beforehand.
502*dc5640d1SHerbert Xue
503*dc5640d1SHerbert Xue @param type type to get members injector for
504*dc5640d1SHerbert Xue @since 2.0]]>
505*dc5640d1SHerbert Xue      </doc>
506*dc5640d1SHerbert Xue    </method>
507*dc5640d1SHerbert Xue    <method name="convertToTypes"
508*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
509*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
510*dc5640d1SHerbert Xue      deprecated="not deprecated">
511*dc5640d1SHerbert Xue      <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
512*dc5640d1SHerbert Xue      <param name="converter" type="com.google.inject.spi.TypeConverter"/>
513*dc5640d1SHerbert Xue      <doc>
514*dc5640d1SHerbert Xue      <![CDATA[Binds a type converter. The injector will use the given converter to
515*dc5640d1SHerbert Xue convert string constants to matching types as needed.
516*dc5640d1SHerbert Xue
517*dc5640d1SHerbert Xue @param typeMatcher matches types the converter can handle
518*dc5640d1SHerbert Xue @param converter converts values
519*dc5640d1SHerbert Xue @since 2.0]]>
520*dc5640d1SHerbert Xue      </doc>
521*dc5640d1SHerbert Xue    </method>
522*dc5640d1SHerbert Xue    <method name="bindListener"
523*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
524*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
525*dc5640d1SHerbert Xue      deprecated="not deprecated">
526*dc5640d1SHerbert Xue      <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
527*dc5640d1SHerbert Xue      <param name="listener" type="com.google.inject.spi.TypeListener"/>
528*dc5640d1SHerbert Xue      <doc>
529*dc5640d1SHerbert Xue      <![CDATA[Registers a listener for injectable types. Guice will notify the listener when it encounters
530*dc5640d1SHerbert Xue injectable types matched by the given type matcher.
531*dc5640d1SHerbert Xue
532*dc5640d1SHerbert Xue @param typeMatcher that matches injectable types the listener should be notified of
533*dc5640d1SHerbert Xue @param listener for injectable types matched by typeMatcher
534*dc5640d1SHerbert Xue @since 2.0]]>
535*dc5640d1SHerbert Xue      </doc>
536*dc5640d1SHerbert Xue    </method>
537*dc5640d1SHerbert Xue    <method name="withSource" return="com.google.inject.Binder"
538*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
539*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
540*dc5640d1SHerbert Xue      deprecated="not deprecated">
541*dc5640d1SHerbert Xue      <param name="source" type="java.lang.Object"/>
542*dc5640d1SHerbert Xue      <doc>
543*dc5640d1SHerbert Xue      <![CDATA[Returns a binder that uses {@code source} as the reference location for
544*dc5640d1SHerbert Xue configuration errors. This is typically a {@link StackTraceElement}
545*dc5640d1SHerbert Xue for {@code .java} source but it could any binding source, such as the
546*dc5640d1SHerbert Xue path to a {@code .properties} file.
547*dc5640d1SHerbert Xue
548*dc5640d1SHerbert Xue @param source any object representing the source location and has a
549*dc5640d1SHerbert Xue     concise {@link Object#toString() toString()} value
550*dc5640d1SHerbert Xue @return a binder that shares its configuration with this binder
551*dc5640d1SHerbert Xue @since 2.0]]>
552*dc5640d1SHerbert Xue      </doc>
553*dc5640d1SHerbert Xue    </method>
554*dc5640d1SHerbert Xue    <method name="skipSources" return="com.google.inject.Binder"
555*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
556*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
557*dc5640d1SHerbert Xue      deprecated="not deprecated">
558*dc5640d1SHerbert Xue      <param name="classesToSkip" type="java.lang.Class[]"/>
559*dc5640d1SHerbert Xue      <doc>
560*dc5640d1SHerbert Xue      <![CDATA[Returns a binder that skips {@code classesToSkip} when identify the
561*dc5640d1SHerbert Xue calling code. The caller's {@link StackTraceElement} is used to locate
562*dc5640d1SHerbert Xue the source of configuration errors.
563*dc5640d1SHerbert Xue
564*dc5640d1SHerbert Xue @param classesToSkip library classes that create bindings on behalf of
565*dc5640d1SHerbert Xue      their clients.
566*dc5640d1SHerbert Xue @return a binder that shares its configuration with this binder.
567*dc5640d1SHerbert Xue @since 2.0]]>
568*dc5640d1SHerbert Xue      </doc>
569*dc5640d1SHerbert Xue    </method>
570*dc5640d1SHerbert Xue    <method name="newPrivateBinder" return="com.google.inject.PrivateBinder"
571*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
572*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
573*dc5640d1SHerbert Xue      deprecated="not deprecated">
574*dc5640d1SHerbert Xue      <doc>
575*dc5640d1SHerbert Xue      <![CDATA[Creates a new private child environment for bindings and other configuration. The returned
576*dc5640d1SHerbert Xue binder can be used to add and configuration information in this environment. See {@link
577*dc5640d1SHerbert Xue PrivateModule} for details.
578*dc5640d1SHerbert Xue
579*dc5640d1SHerbert Xue @return a binder that inherits configuration from this binder. Only exposed configuration on
580*dc5640d1SHerbert Xue      the returned binder will be visible to this binder.
581*dc5640d1SHerbert Xue @since 2.0]]>
582*dc5640d1SHerbert Xue      </doc>
583*dc5640d1SHerbert Xue    </method>
584*dc5640d1SHerbert Xue    <doc>
585*dc5640d1SHerbert Xue    <![CDATA[Collects configuration information (primarily <i>bindings</i>) which will be
586*dc5640d1SHerbert Xue used to create an {@link Injector}. Guice provides this object to your
587*dc5640d1SHerbert Xue application's {@link Module} implementors so they may each contribute
588*dc5640d1SHerbert Xue their own bindings and other registrations.
589*dc5640d1SHerbert Xue
590*dc5640d1SHerbert Xue <h3>The Guice Binding EDSL</h3>
591*dc5640d1SHerbert Xue
592*dc5640d1SHerbert Xue Guice uses an <i>embedded domain-specific language</i>, or EDSL, to help you
593*dc5640d1SHerbert Xue create bindings simply and readably.  This approach is great for overall
594*dc5640d1SHerbert Xue usability, but it does come with a small cost: <b>it is difficult to
595*dc5640d1SHerbert Xue learn how to use the Binding EDSL by reading
596*dc5640d1SHerbert Xue method-level javadocs</b>.  Instead, you should consult the series of
597*dc5640d1SHerbert Xue examples below.  To save space, these examples omit the opening
598*dc5640d1SHerbert Xue {@code binder}, just as you will if your module extends
599*dc5640d1SHerbert Xue {@link AbstractModule}.
600*dc5640d1SHerbert Xue
601*dc5640d1SHerbert Xue <pre>
602*dc5640d1SHerbert Xue     bind(ServiceImpl.class);</pre>
603*dc5640d1SHerbert Xue
604*dc5640d1SHerbert Xue This statement does essentially nothing; it "binds the {@code ServiceImpl}
605*dc5640d1SHerbert Xue class to itself" and does not change Guice's default behavior.  You may still
606*dc5640d1SHerbert Xue want to use this if you prefer your {@link Module} class to serve as an
607*dc5640d1SHerbert Xue explicit <i>manifest</i> for the services it provides.  Also, in rare cases,
608*dc5640d1SHerbert Xue Guice may be unable to validate a binding at injector creation time unless it
609*dc5640d1SHerbert Xue is given explicitly.
610*dc5640d1SHerbert Xue
611*dc5640d1SHerbert Xue <pre>
612*dc5640d1SHerbert Xue     bind(Service.class).to(ServiceImpl.class);</pre>
613*dc5640d1SHerbert Xue
614*dc5640d1SHerbert Xue Specifies that a request for a {@code Service} instance with no binding
615*dc5640d1SHerbert Xue annotations should be treated as if it were a request for a
616*dc5640d1SHerbert Xue {@code ServiceImpl} instance. This <i>overrides</i> the function of any
617*dc5640d1SHerbert Xue {@link ImplementedBy @ImplementedBy} or {@link ProvidedBy @ProvidedBy}
618*dc5640d1SHerbert Xue annotations found on {@code Service}, since Guice will have already
619*dc5640d1SHerbert Xue "moved on" to {@code ServiceImpl} before it reaches the point when it starts
620*dc5640d1SHerbert Xue looking for these annotations.
621*dc5640d1SHerbert Xue
622*dc5640d1SHerbert Xue <pre>
623*dc5640d1SHerbert Xue     bind(Service.class).toProvider(ServiceProvider.class);</pre>
624*dc5640d1SHerbert Xue
625*dc5640d1SHerbert Xue In this example, {@code ServiceProvider} must extend or implement
626*dc5640d1SHerbert Xue {@code Provider<Service>}. This binding specifies that Guice should resolve
627*dc5640d1SHerbert Xue an unannotated injection request for {@code Service} by first resolving an
628*dc5640d1SHerbert Xue instance of {@code ServiceProvider} in the regular way, then calling
629*dc5640d1SHerbert Xue {@link Provider#get get()} on the resulting Provider instance to obtain the
630*dc5640d1SHerbert Xue {@code Service} instance.
631*dc5640d1SHerbert Xue
632*dc5640d1SHerbert Xue <p>The {@link Provider} you use here does not have to be a "factory"; that
633*dc5640d1SHerbert Xue is, a provider which always <i>creates</i> each instance it provides.
634*dc5640d1SHerbert Xue However, this is generally a good practice to follow.  You can then use
635*dc5640d1SHerbert Xue Guice's concept of {@link Scope scopes} to guide when creation should happen
636*dc5640d1SHerbert Xue -- "letting Guice work for you".
637*dc5640d1SHerbert Xue
638*dc5640d1SHerbert Xue <pre>
639*dc5640d1SHerbert Xue     bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class);</pre>
640*dc5640d1SHerbert Xue
641*dc5640d1SHerbert Xue Like the previous example, but only applies to injection requests that use
642*dc5640d1SHerbert Xue the binding annotation {@code @Red}.  If your module also includes bindings
643*dc5640d1SHerbert Xue for particular <i>values</i> of the {@code @Red} annotation (see below),
644*dc5640d1SHerbert Xue then this binding will serve as a "catch-all" for any values of {@code @Red}
645*dc5640d1SHerbert Xue that have no exact match in the bindings.
646*dc5640d1SHerbert Xue
647*dc5640d1SHerbert Xue <pre>
648*dc5640d1SHerbert Xue     bind(ServiceImpl.class).in(Singleton.class);
649*dc5640d1SHerbert Xue     // or, alternatively
650*dc5640d1SHerbert Xue     bind(ServiceImpl.class).in(Scopes.SINGLETON);</pre>
651*dc5640d1SHerbert Xue
652*dc5640d1SHerbert Xue Either of these statements places the {@code ServiceImpl} class into
653*dc5640d1SHerbert Xue singleton scope.  Guice will create only one instance of {@code ServiceImpl}
654*dc5640d1SHerbert Xue and will reuse it for all injection requests of this type.  Note that it is
655*dc5640d1SHerbert Xue still possible to bind another instance of {@code ServiceImpl} if the second
656*dc5640d1SHerbert Xue binding is qualified by an annotation as in the previous example.  Guice is
657*dc5640d1SHerbert Xue not overly concerned with <i>preventing</i> you from creating multiple
658*dc5640d1SHerbert Xue instances of your "singletons", only with <i>enabling</i> your application to
659*dc5640d1SHerbert Xue share only one instance if that's all you tell Guice you need.
660*dc5640d1SHerbert Xue
661*dc5640d1SHerbert Xue <p><b>Note:</b> a scope specified in this way <i>overrides</i> any scope that
662*dc5640d1SHerbert Xue was specified with an annotation on the {@code ServiceImpl} class.
663*dc5640d1SHerbert Xue
664*dc5640d1SHerbert Xue <p>Besides {@link Singleton}/{@link Scopes#SINGLETON}, there are
665*dc5640d1SHerbert Xue servlet-specific scopes available in
666*dc5640d1SHerbert Xue {@code com.google.inject.servlet.ServletScopes}, and your Modules can
667*dc5640d1SHerbert Xue contribute their own custom scopes for use here as well.
668*dc5640d1SHerbert Xue
669*dc5640d1SHerbert Xue <pre>
670*dc5640d1SHerbert Xue     bind(new TypeLiteral&lt;PaymentService&lt;CreditCard>>() {})
671*dc5640d1SHerbert Xue         .to(CreditCardPaymentService.class);</pre>
672*dc5640d1SHerbert Xue
673*dc5640d1SHerbert Xue This admittedly odd construct is the way to bind a parameterized type. It
674*dc5640d1SHerbert Xue tells Guice how to honor an injection request for an element of type
675*dc5640d1SHerbert Xue {@code PaymentService<CreditCard>}. The class
676*dc5640d1SHerbert Xue {@code CreditCardPaymentService} must implement the
677*dc5640d1SHerbert Xue {@code PaymentService<CreditCard>} interface.  Guice cannot currently bind or
678*dc5640d1SHerbert Xue inject a generic type, such as {@code Set<E>}; all type parameters must be
679*dc5640d1SHerbert Xue fully specified.
680*dc5640d1SHerbert Xue
681*dc5640d1SHerbert Xue <pre>
682*dc5640d1SHerbert Xue     bind(Service.class).toInstance(new ServiceImpl());
683*dc5640d1SHerbert Xue     // or, alternatively
684*dc5640d1SHerbert Xue     bind(Service.class).toInstance(SomeLegacyRegistry.getService());</pre>
685*dc5640d1SHerbert Xue
686*dc5640d1SHerbert Xue In this example, your module itself, <i>not Guice</i>, takes responsibility
687*dc5640d1SHerbert Xue for obtaining a {@code ServiceImpl} instance, then asks Guice to always use
688*dc5640d1SHerbert Xue this single instance to fulfill all {@code Service} injection requests.  When
689*dc5640d1SHerbert Xue the {@link Injector} is created, it will automatically perform field
690*dc5640d1SHerbert Xue and method injection for this instance, but any injectable constructor on
691*dc5640d1SHerbert Xue {@code ServiceImpl} is simply ignored.  Note that using this approach results
692*dc5640d1SHerbert Xue in "eager loading" behavior that you can't control.
693*dc5640d1SHerbert Xue
694*dc5640d1SHerbert Xue <pre>
695*dc5640d1SHerbert Xue     bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre>
696*dc5640d1SHerbert Xue
697*dc5640d1SHerbert Xue Sets up a constant binding. Constant injections must always be annotated.
698*dc5640d1SHerbert Xue When a constant binding's value is a string, it is eligile for conversion to
699*dc5640d1SHerbert Xue all primitive types, to {@link Enum#valueOf(Class, String) all enums}, and to
700*dc5640d1SHerbert Xue {@link Class#forName class literals}. Conversions for other types can be
701*dc5640d1SHerbert Xue configured using {@link #convertToTypes(Matcher, TypeConverter)
702*dc5640d1SHerbert Xue convertToTypes()}.
703*dc5640d1SHerbert Xue
704*dc5640d1SHerbert Xue <pre>
705*dc5640d1SHerbert Xue   {@literal @}Color("red") Color red; // A member variable (field)
706*dc5640d1SHerbert Xue    . . .
707*dc5640d1SHerbert Xue     red = MyModule.class.getDeclaredField("red").getAnnotation(Color.class);
708*dc5640d1SHerbert Xue     bind(Service.class).annotatedWith(red).to(RedService.class);</pre>
709*dc5640d1SHerbert Xue
710*dc5640d1SHerbert Xue If your binding annotation has parameters you can apply different bindings to
711*dc5640d1SHerbert Xue different specific values of your annotation.  Getting your hands on the
712*dc5640d1SHerbert Xue right instance of the annotation is a bit of a pain -- one approach, shown
713*dc5640d1SHerbert Xue above, is to apply a prototype annotation to a field in your module class, so
714*dc5640d1SHerbert Xue that you can read this annotation instance and give it to Guice.
715*dc5640d1SHerbert Xue
716*dc5640d1SHerbert Xue <pre>
717*dc5640d1SHerbert Xue     bind(Service.class)
718*dc5640d1SHerbert Xue         .annotatedWith(Names.named("blue"))
719*dc5640d1SHerbert Xue         .to(BlueService.class);</pre>
720*dc5640d1SHerbert Xue
721*dc5640d1SHerbert Xue Differentiating by names is a common enough use case that we provided a
722*dc5640d1SHerbert Xue standard annotation, {@link com.google.inject.name.Named @Named}.  Because of
723*dc5640d1SHerbert Xue Guice's library support, binding by name is quite easier than in the
724*dc5640d1SHerbert Xue arbitrary binding annotation case we just saw.  However, remember that these
725*dc5640d1SHerbert Xue names will live in a single flat namespace with all the other names used in
726*dc5640d1SHerbert Xue your application.
727*dc5640d1SHerbert Xue
728*dc5640d1SHerbert Xue <p>The above list of examples is far from exhaustive.  If you can think of
729*dc5640d1SHerbert Xue how the concepts of one example might coexist with the concepts from another,
730*dc5640d1SHerbert Xue you can most likely weave the two together.  If the two concepts make no
731*dc5640d1SHerbert Xue sense with each other, you most likely won't be able to do it.  In a few
732*dc5640d1SHerbert Xue cases Guice will let something bogus slip by, and will then inform you of
733*dc5640d1SHerbert Xue the problems at runtime, as soon as you try to create your Injector.
734*dc5640d1SHerbert Xue
735*dc5640d1SHerbert Xue <p>The other methods of Binder such as {@link #bindScope},
736*dc5640d1SHerbert Xue {@link #bindInterceptor}, {@link #install}, {@link #requestStaticInjection},
737*dc5640d1SHerbert Xue {@link #addError} and {@link #currentStage} are not part of the Binding EDSL;
738*dc5640d1SHerbert Xue you can learn how to use these in the usual way, from the method
739*dc5640d1SHerbert Xue documentation.
740*dc5640d1SHerbert Xue
741*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)
742*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
743*dc5640d1SHerbert Xue @author [email protected] (Kevin Bourrillion)]]>
744*dc5640d1SHerbert Xue    </doc>
745*dc5640d1SHerbert Xue  </interface>
746*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.Binder -->
747*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.Binding -->
748*dc5640d1SHerbert Xue  <interface name="Binding"    abstract="true"
749*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
750*dc5640d1SHerbert Xue    deprecated="not deprecated">
751*dc5640d1SHerbert Xue    <implements name="com.google.inject.spi.Element"/>
752*dc5640d1SHerbert Xue    <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
753*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
754*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
755*dc5640d1SHerbert Xue      deprecated="not deprecated">
756*dc5640d1SHerbert Xue      <doc>
757*dc5640d1SHerbert Xue      <![CDATA[Returns the key for this binding.]]>
758*dc5640d1SHerbert Xue      </doc>
759*dc5640d1SHerbert Xue    </method>
760*dc5640d1SHerbert Xue    <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
761*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
762*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
763*dc5640d1SHerbert Xue      deprecated="not deprecated">
764*dc5640d1SHerbert Xue      <doc>
765*dc5640d1SHerbert Xue      <![CDATA[Returns the scoped provider guice uses to fulfill requests for this
766*dc5640d1SHerbert Xue binding.
767*dc5640d1SHerbert Xue
768*dc5640d1SHerbert Xue @throws UnsupportedOperationException when invoked on a {@link Binding}
769*dc5640d1SHerbert Xue      created via {@link com.google.inject.spi.Elements#getElements}. This
770*dc5640d1SHerbert Xue      method is only supported on {@link Binding}s returned from an injector.]]>
771*dc5640d1SHerbert Xue      </doc>
772*dc5640d1SHerbert Xue    </method>
773*dc5640d1SHerbert Xue    <method name="acceptTargetVisitor" return="V"
774*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
775*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
776*dc5640d1SHerbert Xue      deprecated="not deprecated">
777*dc5640d1SHerbert Xue      <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor&lt;? super T, V&gt;"/>
778*dc5640d1SHerbert Xue      <doc>
779*dc5640d1SHerbert Xue      <![CDATA[Accepts a target visitor. Invokes the visitor method specific to this binding's target.
780*dc5640d1SHerbert Xue
781*dc5640d1SHerbert Xue @param visitor to call back on
782*dc5640d1SHerbert Xue @since 2.0]]>
783*dc5640d1SHerbert Xue      </doc>
784*dc5640d1SHerbert Xue    </method>
785*dc5640d1SHerbert Xue    <method name="acceptScopingVisitor" return="V"
786*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
787*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
788*dc5640d1SHerbert Xue      deprecated="not deprecated">
789*dc5640d1SHerbert Xue      <param name="visitor" type="com.google.inject.spi.BindingScopingVisitor&lt;V&gt;"/>
790*dc5640d1SHerbert Xue      <doc>
791*dc5640d1SHerbert Xue      <![CDATA[Accepts a scoping visitor. Invokes the visitor method specific to this binding's scoping.
792*dc5640d1SHerbert Xue
793*dc5640d1SHerbert Xue @param visitor to call back on
794*dc5640d1SHerbert Xue @since 2.0]]>
795*dc5640d1SHerbert Xue      </doc>
796*dc5640d1SHerbert Xue    </method>
797*dc5640d1SHerbert Xue    <doc>
798*dc5640d1SHerbert Xue    <![CDATA[A mapping from a key (type and optional annotation) to the strategy for getting instances of the
799*dc5640d1SHerbert Xue type. This interface is part of the introspection API and is intended primarily for use by
800*dc5640d1SHerbert Xue tools.
801*dc5640d1SHerbert Xue
802*dc5640d1SHerbert Xue <p>Bindings are created in several ways:
803*dc5640d1SHerbert Xue <ul>
804*dc5640d1SHerbert Xue     <li>Explicitly in a module, via {@code bind()} and {@code bindConstant()}
805*dc5640d1SHerbert Xue         statements:
806*dc5640d1SHerbert Xue <pre>
807*dc5640d1SHerbert Xue     bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class);
808*dc5640d1SHerbert Xue     bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre></li>
809*dc5640d1SHerbert Xue     <li>Implicitly by the Injector by following a type's {@link ImplementedBy
810*dc5640d1SHerbert Xue         pointer} {@link ProvidedBy annotations} or by using its {@link Inject annotated} or
811*dc5640d1SHerbert Xue         default constructor.</li>
812*dc5640d1SHerbert Xue     <li>By converting a bound instance to a different type.</li>
813*dc5640d1SHerbert Xue     <li>For {@link Provider providers}, by delegating to the binding for the provided type.</li>
814*dc5640d1SHerbert Xue </ul>
815*dc5640d1SHerbert Xue
816*dc5640d1SHerbert Xue
817*dc5640d1SHerbert Xue <p>They exist on both modules and on injectors, and their behaviour is different for each:
818*dc5640d1SHerbert Xue <ul>
819*dc5640d1SHerbert Xue     <li><strong>Module bindings</strong> are incomplete and cannot be used to provide instances.
820*dc5640d1SHerbert Xue         This is because the applicable scopes and interceptors may not be known until an injector
821*dc5640d1SHerbert Xue         is created. From a tool's perspective, module bindings are like the injector's source
822*dc5640d1SHerbert Xue         code. They can be inspected or rewritten, but this analysis must be done statically.</li>
823*dc5640d1SHerbert Xue     <li><strong>Injector bindings</strong> are complete and valid and can be used to provide
824*dc5640d1SHerbert Xue         instances. From a tools' perspective, injector bindings are like reflection for an
825*dc5640d1SHerbert Xue         injector. They have full runtime information, including the complete graph of injections
826*dc5640d1SHerbert Xue         necessary to satisfy a binding.</li>
827*dc5640d1SHerbert Xue </ul>
828*dc5640d1SHerbert Xue
829*dc5640d1SHerbert Xue @param <T> the bound type. The injected is always assignable to this type.
830*dc5640d1SHerbert Xue
831*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)
832*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]>
833*dc5640d1SHerbert Xue    </doc>
834*dc5640d1SHerbert Xue  </interface>
835*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.Binding -->
836*dc5640d1SHerbert Xue  <!-- start class com.google.inject.BindingAnnotation -->
837*dc5640d1SHerbert Xue  <class name="BindingAnnotation"    abstract="true"
838*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
839*dc5640d1SHerbert Xue    deprecated="not deprecated">
840*dc5640d1SHerbert Xue    <implements name="java.lang.annotation.Annotation"/>
841*dc5640d1SHerbert Xue    <doc>
842*dc5640d1SHerbert Xue    <![CDATA[Annotates annotations which are used for binding. Only one such annotation
843*dc5640d1SHerbert Xue may apply to a single injection point. You must also annotate binder
844*dc5640d1SHerbert Xue annotations with {@code @Retention(RUNTIME)}. For example:
845*dc5640d1SHerbert Xue
846*dc5640d1SHerbert Xue <pre>
847*dc5640d1SHerbert Xue   {@code @}Retention(RUNTIME)
848*dc5640d1SHerbert Xue   {@code @}Target({ FIELD, PARAMETER, METHOD })
849*dc5640d1SHerbert Xue   {@code @}BindingAnnotation
850*dc5640d1SHerbert Xue   public {@code @}interface Transactional {}
851*dc5640d1SHerbert Xue </pre>
852*dc5640d1SHerbert Xue
853*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
854*dc5640d1SHerbert Xue    </doc>
855*dc5640d1SHerbert Xue  </class>
856*dc5640d1SHerbert Xue  <!-- end class com.google.inject.BindingAnnotation -->
857*dc5640d1SHerbert Xue  <!-- start class com.google.inject.ConfigurationException -->
858*dc5640d1SHerbert Xue  <class name="ConfigurationException" extends="java.lang.RuntimeException"
859*dc5640d1SHerbert Xue    abstract="false"
860*dc5640d1SHerbert Xue    static="false" final="true" visibility="public"
861*dc5640d1SHerbert Xue    deprecated="not deprecated">
862*dc5640d1SHerbert Xue    <constructor name="ConfigurationException" type="java.lang.Iterable&lt;com.google.inject.spi.Message&gt;"
863*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
864*dc5640d1SHerbert Xue      deprecated="not deprecated">
865*dc5640d1SHerbert Xue      <doc>
866*dc5640d1SHerbert Xue      <![CDATA[Creates a ConfigurationException containing {@code messages}.]]>
867*dc5640d1SHerbert Xue      </doc>
868*dc5640d1SHerbert Xue    </constructor>
869*dc5640d1SHerbert Xue    <method name="withPartialValue" return="com.google.inject.ConfigurationException"
870*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
871*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
872*dc5640d1SHerbert Xue      deprecated="not deprecated">
873*dc5640d1SHerbert Xue      <param name="partialValue" type="java.lang.Object"/>
874*dc5640d1SHerbert Xue      <doc>
875*dc5640d1SHerbert Xue      <![CDATA[Returns a copy of this configuration exception with the specified partial value.]]>
876*dc5640d1SHerbert Xue      </doc>
877*dc5640d1SHerbert Xue    </method>
878*dc5640d1SHerbert Xue    <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
879*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
880*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
881*dc5640d1SHerbert Xue      deprecated="not deprecated">
882*dc5640d1SHerbert Xue      <doc>
883*dc5640d1SHerbert Xue      <![CDATA[Returns messages for the errors that caused this exception.]]>
884*dc5640d1SHerbert Xue      </doc>
885*dc5640d1SHerbert Xue    </method>
886*dc5640d1SHerbert Xue    <method name="getPartialValue" return="E"
887*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
888*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
889*dc5640d1SHerbert Xue      deprecated="not deprecated">
890*dc5640d1SHerbert Xue      <doc>
891*dc5640d1SHerbert Xue      <![CDATA[Returns a value that was only partially computed due to this exception. The caller can use
892*dc5640d1SHerbert Xue this while collecting additional configuration problems.
893*dc5640d1SHerbert Xue
894*dc5640d1SHerbert Xue @return the partial value, or {@code null} if none was set. The type of the partial value is
895*dc5640d1SHerbert Xue      specified by the throwing method.]]>
896*dc5640d1SHerbert Xue      </doc>
897*dc5640d1SHerbert Xue    </method>
898*dc5640d1SHerbert Xue    <method name="getMessage" return="java.lang.String"
899*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
900*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
901*dc5640d1SHerbert Xue      deprecated="not deprecated">
902*dc5640d1SHerbert Xue    </method>
903*dc5640d1SHerbert Xue    <doc>
904*dc5640d1SHerbert Xue    <![CDATA[Thrown when a programming error such as a misplaced annotation, illegal binding, or unsupported
905*dc5640d1SHerbert Xue scope is found. Clients should catch this exception, log it, and stop execution.
906*dc5640d1SHerbert Xue
907*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
908*dc5640d1SHerbert Xue @since 2.0]]>
909*dc5640d1SHerbert Xue    </doc>
910*dc5640d1SHerbert Xue  </class>
911*dc5640d1SHerbert Xue  <!-- end class com.google.inject.ConfigurationException -->
912*dc5640d1SHerbert Xue  <!-- start class com.google.inject.CreationException -->
913*dc5640d1SHerbert Xue  <class name="CreationException" extends="java.lang.RuntimeException"
914*dc5640d1SHerbert Xue    abstract="false"
915*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
916*dc5640d1SHerbert Xue    deprecated="not deprecated">
917*dc5640d1SHerbert Xue    <constructor name="CreationException" type="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
918*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
919*dc5640d1SHerbert Xue      deprecated="not deprecated">
920*dc5640d1SHerbert Xue      <doc>
921*dc5640d1SHerbert Xue      <![CDATA[Creates a CreationException containing {@code messages}.]]>
922*dc5640d1SHerbert Xue      </doc>
923*dc5640d1SHerbert Xue    </constructor>
924*dc5640d1SHerbert Xue    <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
925*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
926*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
927*dc5640d1SHerbert Xue      deprecated="not deprecated">
928*dc5640d1SHerbert Xue      <doc>
929*dc5640d1SHerbert Xue      <![CDATA[Returns messages for the errors that caused this exception.]]>
930*dc5640d1SHerbert Xue      </doc>
931*dc5640d1SHerbert Xue    </method>
932*dc5640d1SHerbert Xue    <method name="getMessage" return="java.lang.String"
933*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
934*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
935*dc5640d1SHerbert Xue      deprecated="not deprecated">
936*dc5640d1SHerbert Xue    </method>
937*dc5640d1SHerbert Xue    <doc>
938*dc5640d1SHerbert Xue    <![CDATA[Thrown when errors occur while creating a {@link Injector}. Includes a list of encountered
939*dc5640d1SHerbert Xue errors. Clients should catch this exception, log it, and stop execution.
940*dc5640d1SHerbert Xue
941*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
942*dc5640d1SHerbert Xue    </doc>
943*dc5640d1SHerbert Xue  </class>
944*dc5640d1SHerbert Xue  <!-- end class com.google.inject.CreationException -->
945*dc5640d1SHerbert Xue  <!-- start class com.google.inject.Exposed -->
946*dc5640d1SHerbert Xue  <class name="Exposed"    abstract="true"
947*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
948*dc5640d1SHerbert Xue    deprecated="not deprecated">
949*dc5640d1SHerbert Xue    <implements name="java.lang.annotation.Annotation"/>
950*dc5640d1SHerbert Xue    <doc>
951*dc5640d1SHerbert Xue    <![CDATA[Acccompanies a {@literal @}{@link com.google.inject.Provides Provides} method annotation in a
952*dc5640d1SHerbert Xue private module to indicate that the provided binding is exposed.
953*dc5640d1SHerbert Xue
954*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
955*dc5640d1SHerbert Xue @since 2.0]]>
956*dc5640d1SHerbert Xue    </doc>
957*dc5640d1SHerbert Xue  </class>
958*dc5640d1SHerbert Xue  <!-- end class com.google.inject.Exposed -->
959*dc5640d1SHerbert Xue  <!-- start class com.google.inject.Guice -->
960*dc5640d1SHerbert Xue  <class name="Guice" extends="java.lang.Object"
961*dc5640d1SHerbert Xue    abstract="false"
962*dc5640d1SHerbert Xue    static="false" final="true" visibility="public"
963*dc5640d1SHerbert Xue    deprecated="not deprecated">
964*dc5640d1SHerbert Xue    <method name="createInjector" return="com.google.inject.Injector"
965*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
966*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
967*dc5640d1SHerbert Xue      deprecated="not deprecated">
968*dc5640d1SHerbert Xue      <param name="modules" type="com.google.inject.Module[]"/>
969*dc5640d1SHerbert Xue      <doc>
970*dc5640d1SHerbert Xue      <![CDATA[Creates an injector for the given set of modules.
971*dc5640d1SHerbert Xue
972*dc5640d1SHerbert Xue @throws CreationException if one or more errors occur during Injector
973*dc5640d1SHerbert Xue     construction]]>
974*dc5640d1SHerbert Xue      </doc>
975*dc5640d1SHerbert Xue    </method>
976*dc5640d1SHerbert Xue    <method name="createInjector" return="com.google.inject.Injector"
977*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
978*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
979*dc5640d1SHerbert Xue      deprecated="not deprecated">
980*dc5640d1SHerbert Xue      <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
981*dc5640d1SHerbert Xue      <doc>
982*dc5640d1SHerbert Xue      <![CDATA[Creates an injector for the given set of modules.
983*dc5640d1SHerbert Xue
984*dc5640d1SHerbert Xue @throws CreationException if one or more errors occur during Injector
985*dc5640d1SHerbert Xue     creation]]>
986*dc5640d1SHerbert Xue      </doc>
987*dc5640d1SHerbert Xue    </method>
988*dc5640d1SHerbert Xue    <method name="createInjector" return="com.google.inject.Injector"
989*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
990*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
991*dc5640d1SHerbert Xue      deprecated="not deprecated">
992*dc5640d1SHerbert Xue      <param name="stage" type="com.google.inject.Stage"/>
993*dc5640d1SHerbert Xue      <param name="modules" type="com.google.inject.Module[]"/>
994*dc5640d1SHerbert Xue      <doc>
995*dc5640d1SHerbert Xue      <![CDATA[Creates an injector for the given set of modules, in a given development
996*dc5640d1SHerbert Xue stage.
997*dc5640d1SHerbert Xue
998*dc5640d1SHerbert Xue @throws CreationException if one or more errors occur during Injector
999*dc5640d1SHerbert Xue     creation]]>
1000*dc5640d1SHerbert Xue      </doc>
1001*dc5640d1SHerbert Xue    </method>
1002*dc5640d1SHerbert Xue    <method name="createInjector" return="com.google.inject.Injector"
1003*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1004*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
1005*dc5640d1SHerbert Xue      deprecated="not deprecated">
1006*dc5640d1SHerbert Xue      <param name="stage" type="com.google.inject.Stage"/>
1007*dc5640d1SHerbert Xue      <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
1008*dc5640d1SHerbert Xue      <doc>
1009*dc5640d1SHerbert Xue      <![CDATA[Creates an injector for the given set of modules, in a given development
1010*dc5640d1SHerbert Xue stage.
1011*dc5640d1SHerbert Xue
1012*dc5640d1SHerbert Xue @throws CreationException if one or more errors occur during Injector
1013*dc5640d1SHerbert Xue     construction]]>
1014*dc5640d1SHerbert Xue      </doc>
1015*dc5640d1SHerbert Xue    </method>
1016*dc5640d1SHerbert Xue    <doc>
1017*dc5640d1SHerbert Xue    <![CDATA[The entry point to the Guice framework. Creates {@link Injector}s from
1018*dc5640d1SHerbert Xue {@link Module}s.
1019*dc5640d1SHerbert Xue
1020*dc5640d1SHerbert Xue <p>Guice supports a model of development that draws clear boundaries between
1021*dc5640d1SHerbert Xue APIs, Implementations of these APIs, Modules which configure these
1022*dc5640d1SHerbert Xue implementations, and finally Applications which consist of a collection of
1023*dc5640d1SHerbert Xue Modules. It is the Application, which typically defines your {@code main()}
1024*dc5640d1SHerbert Xue method, that bootstraps the Guice Injector using the {@code Guice} class, as
1025*dc5640d1SHerbert Xue in this example:
1026*dc5640d1SHerbert Xue <pre>
1027*dc5640d1SHerbert Xue     public class FooApplication {
1028*dc5640d1SHerbert Xue       public static void main(String[] args) {
1029*dc5640d1SHerbert Xue         Injector injector = Guice.createInjector(
1030*dc5640d1SHerbert Xue             new ModuleA(),
1031*dc5640d1SHerbert Xue             new ModuleB(),
1032*dc5640d1SHerbert Xue             . . .
1033*dc5640d1SHerbert Xue             new FooApplicationFlagsModule(args)
1034*dc5640d1SHerbert Xue         );
1035*dc5640d1SHerbert Xue
1036*dc5640d1SHerbert Xue         // Now just bootstrap the application and you're done
1037*dc5640d1SHerbert Xue         FooStarter starter = injector.getInstance(FooStarter.class);
1038*dc5640d1SHerbert Xue         starter.runApplication();
1039*dc5640d1SHerbert Xue       }
1040*dc5640d1SHerbert Xue     }
1041*dc5640d1SHerbert Xue </pre>]]>
1042*dc5640d1SHerbert Xue    </doc>
1043*dc5640d1SHerbert Xue  </class>
1044*dc5640d1SHerbert Xue  <!-- end class com.google.inject.Guice -->
1045*dc5640d1SHerbert Xue  <!-- start class com.google.inject.ImplementedBy -->
1046*dc5640d1SHerbert Xue  <class name="ImplementedBy"    abstract="true"
1047*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
1048*dc5640d1SHerbert Xue    deprecated="not deprecated">
1049*dc5640d1SHerbert Xue    <implements name="java.lang.annotation.Annotation"/>
1050*dc5640d1SHerbert Xue    <doc>
1051*dc5640d1SHerbert Xue    <![CDATA[A pointer to the default implementation of a type.
1052*dc5640d1SHerbert Xue
1053*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
1054*dc5640d1SHerbert Xue    </doc>
1055*dc5640d1SHerbert Xue  </class>
1056*dc5640d1SHerbert Xue  <!-- end class com.google.inject.ImplementedBy -->
1057*dc5640d1SHerbert Xue  <!-- start class com.google.inject.Inject -->
1058*dc5640d1SHerbert Xue  <class name="Inject"    abstract="true"
1059*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
1060*dc5640d1SHerbert Xue    deprecated="not deprecated">
1061*dc5640d1SHerbert Xue    <implements name="java.lang.annotation.Annotation"/>
1062*dc5640d1SHerbert Xue    <doc>
1063*dc5640d1SHerbert Xue    <![CDATA[Annotates members of your implementation class (constructors, methods
1064*dc5640d1SHerbert Xue and fields) into which the {@link Injector} should inject values.
1065*dc5640d1SHerbert Xue The Injector fulfills injection requests for:
1066*dc5640d1SHerbert Xue
1067*dc5640d1SHerbert Xue <ul>
1068*dc5640d1SHerbert Xue <li>Every instance it constructs. The class being constructed must have
1069*dc5640d1SHerbert Xue exactly one of its constructors marked with {@code @Inject} or must have a
1070*dc5640d1SHerbert Xue constructor taking no parameters. The Injector then proceeds to perform
1071*dc5640d1SHerbert Xue method and field injections.
1072*dc5640d1SHerbert Xue
1073*dc5640d1SHerbert Xue <li>Pre-constructed instances passed to {@link Injector#injectMembers},
1074*dc5640d1SHerbert Xue {@link com.google.inject.binder.LinkedBindingBuilder#toInstance(Object)} and
1075*dc5640d1SHerbert Xue {@link com.google.inject.binder.LinkedBindingBuilder#toProvider(Provider)}.
1076*dc5640d1SHerbert Xue In this case all constructors are, of course, ignored.
1077*dc5640d1SHerbert Xue
1078*dc5640d1SHerbert Xue <li>Static fields and methods of classes which any {@link Module} has
1079*dc5640d1SHerbert Xue specifically requested static injection for, using
1080*dc5640d1SHerbert Xue {@link Binder#requestStaticInjection}.
1081*dc5640d1SHerbert Xue </ul>
1082*dc5640d1SHerbert Xue
1083*dc5640d1SHerbert Xue In all cases, a member can be injected regardless of its Java access
1084*dc5640d1SHerbert Xue specifier (private, default, protected, public).
1085*dc5640d1SHerbert Xue
1086*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
1087*dc5640d1SHerbert Xue    </doc>
1088*dc5640d1SHerbert Xue  </class>
1089*dc5640d1SHerbert Xue  <!-- end class com.google.inject.Inject -->
1090*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.Injector -->
1091*dc5640d1SHerbert Xue  <interface name="Injector"    abstract="true"
1092*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
1093*dc5640d1SHerbert Xue    deprecated="not deprecated">
1094*dc5640d1SHerbert Xue    <method name="injectMembers"
1095*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1096*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1097*dc5640d1SHerbert Xue      deprecated="not deprecated">
1098*dc5640d1SHerbert Xue      <param name="instance" type="java.lang.Object"/>
1099*dc5640d1SHerbert Xue      <doc>
1100*dc5640d1SHerbert Xue      <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or
1101*dc5640d1SHerbert Xue absence of an injectable constructor.
1102*dc5640d1SHerbert Xue
1103*dc5640d1SHerbert Xue <p>Whenever Guice creates an instance, it performs this injection automatically (after first
1104*dc5640d1SHerbert Xue performing constructor injection), so if you're able to let Guice create all your objects for
1105*dc5640d1SHerbert Xue you, you'll never need to use this method.
1106*dc5640d1SHerbert Xue
1107*dc5640d1SHerbert Xue @param instance to inject members on
1108*dc5640d1SHerbert Xue
1109*dc5640d1SHerbert Xue @see Binder#getMembersInjector(Class) for a preferred alternative that supports checks before
1110*dc5640d1SHerbert Xue  run time]]>
1111*dc5640d1SHerbert Xue      </doc>
1112*dc5640d1SHerbert Xue    </method>
1113*dc5640d1SHerbert Xue    <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
1114*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1115*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1116*dc5640d1SHerbert Xue      deprecated="not deprecated">
1117*dc5640d1SHerbert Xue      <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1118*dc5640d1SHerbert Xue      <doc>
1119*dc5640d1SHerbert Xue      <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
1120*dc5640d1SHerbert Xue of the given type {@code T}.
1121*dc5640d1SHerbert Xue
1122*dc5640d1SHerbert Xue @param typeLiteral type to get members injector for
1123*dc5640d1SHerbert Xue @see Binder#getMembersInjector(TypeLiteral) for an alternative that offers up front error
1124*dc5640d1SHerbert Xue  detection
1125*dc5640d1SHerbert Xue @since 2.0]]>
1126*dc5640d1SHerbert Xue      </doc>
1127*dc5640d1SHerbert Xue    </method>
1128*dc5640d1SHerbert Xue    <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
1129*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1130*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1131*dc5640d1SHerbert Xue      deprecated="not deprecated">
1132*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
1133*dc5640d1SHerbert Xue      <doc>
1134*dc5640d1SHerbert Xue      <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
1135*dc5640d1SHerbert Xue of the given type {@code T}. When feasible, use {@link Binder#getMembersInjector(TypeLiteral)}
1136*dc5640d1SHerbert Xue instead to get increased up front error detection.
1137*dc5640d1SHerbert Xue
1138*dc5640d1SHerbert Xue @param type type to get members injector for
1139*dc5640d1SHerbert Xue @see Binder#getMembersInjector(Class) for an alternative that offers up front error
1140*dc5640d1SHerbert Xue  detection
1141*dc5640d1SHerbert Xue @since 2.0]]>
1142*dc5640d1SHerbert Xue      </doc>
1143*dc5640d1SHerbert Xue    </method>
1144*dc5640d1SHerbert Xue    <method name="getBindings" return="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, com.google.inject.Binding&lt;?&gt;&gt;"
1145*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1146*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1147*dc5640d1SHerbert Xue      deprecated="not deprecated">
1148*dc5640d1SHerbert Xue      <doc>
1149*dc5640d1SHerbert Xue      <![CDATA[Returns all explicit bindings.
1150*dc5640d1SHerbert Xue
1151*dc5640d1SHerbert Xue <p>The returned map does not include bindings inherited from a {@link #getParent() parent
1152*dc5640d1SHerbert Xue injector}, should one exist. The returned map is guaranteed to iterate (for example, with
1153*dc5640d1SHerbert Xue its {@link java.util.Map#entrySet()} iterator) in the order of insertion. In other words,
1154*dc5640d1SHerbert Xue the order in which bindings appear in user Modules.
1155*dc5640d1SHerbert Xue
1156*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]>
1157*dc5640d1SHerbert Xue      </doc>
1158*dc5640d1SHerbert Xue    </method>
1159*dc5640d1SHerbert Xue    <method name="getBinding" return="com.google.inject.Binding&lt;T&gt;"
1160*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1161*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1162*dc5640d1SHerbert Xue      deprecated="not deprecated">
1163*dc5640d1SHerbert Xue      <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
1164*dc5640d1SHerbert Xue      <doc>
1165*dc5640d1SHerbert Xue      <![CDATA[Returns the binding for the given injection key. This will be an explicit bindings if the key
1166*dc5640d1SHerbert Xue was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will
1167*dc5640d1SHerbert Xue be created if necessary.
1168*dc5640d1SHerbert Xue
1169*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
1170*dc5640d1SHerbert Xue
1171*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the binding.]]>
1172*dc5640d1SHerbert Xue      </doc>
1173*dc5640d1SHerbert Xue    </method>
1174*dc5640d1SHerbert Xue    <method name="getBinding" return="com.google.inject.Binding&lt;T&gt;"
1175*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1176*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1177*dc5640d1SHerbert Xue      deprecated="not deprecated">
1178*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
1179*dc5640d1SHerbert Xue      <doc>
1180*dc5640d1SHerbert Xue      <![CDATA[Returns the binding for the given type. This will be an explicit bindings if the injection key
1181*dc5640d1SHerbert Xue was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will
1182*dc5640d1SHerbert Xue be created if necessary.
1183*dc5640d1SHerbert Xue
1184*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
1185*dc5640d1SHerbert Xue
1186*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the binding.
1187*dc5640d1SHerbert Xue @since 2.0]]>
1188*dc5640d1SHerbert Xue      </doc>
1189*dc5640d1SHerbert Xue    </method>
1190*dc5640d1SHerbert Xue    <method name="findBindingsByType" return="java.util.List&lt;com.google.inject.Binding&lt;T&gt;&gt;"
1191*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1192*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1193*dc5640d1SHerbert Xue      deprecated="not deprecated">
1194*dc5640d1SHerbert Xue      <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1195*dc5640d1SHerbert Xue      <doc>
1196*dc5640d1SHerbert Xue      <![CDATA[Returns all explicit bindings for {@code type}.
1197*dc5640d1SHerbert Xue
1198*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]>
1199*dc5640d1SHerbert Xue      </doc>
1200*dc5640d1SHerbert Xue    </method>
1201*dc5640d1SHerbert Xue    <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
1202*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1203*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1204*dc5640d1SHerbert Xue      deprecated="not deprecated">
1205*dc5640d1SHerbert Xue      <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
1206*dc5640d1SHerbert Xue      <doc>
1207*dc5640d1SHerbert Xue      <![CDATA[Returns the provider used to obtain instances for the given injection key. When feasible, avoid
1208*dc5640d1SHerbert Xue using this method, in favor of having Guice inject your dependencies ahead of time.
1209*dc5640d1SHerbert Xue
1210*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the provider.
1211*dc5640d1SHerbert Xue @see Binder#getProvider(Key) for an alternative that offers up front error detection]]>
1212*dc5640d1SHerbert Xue      </doc>
1213*dc5640d1SHerbert Xue    </method>
1214*dc5640d1SHerbert Xue    <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
1215*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1216*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1217*dc5640d1SHerbert Xue      deprecated="not deprecated">
1218*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
1219*dc5640d1SHerbert Xue      <doc>
1220*dc5640d1SHerbert Xue      <![CDATA[Returns the provider used to obtain instances for the given type. When feasible, avoid
1221*dc5640d1SHerbert Xue using this method, in favor of having Guice inject your dependencies ahead of time.
1222*dc5640d1SHerbert Xue
1223*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the provider.
1224*dc5640d1SHerbert Xue @see Binder#getProvider(Class) for an alternative that offers up front error detection]]>
1225*dc5640d1SHerbert Xue      </doc>
1226*dc5640d1SHerbert Xue    </method>
1227*dc5640d1SHerbert Xue    <method name="getInstance" return="T"
1228*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1229*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1230*dc5640d1SHerbert Xue      deprecated="not deprecated">
1231*dc5640d1SHerbert Xue      <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
1232*dc5640d1SHerbert Xue      <doc>
1233*dc5640d1SHerbert Xue      <![CDATA[Returns the appropriate instance for the given injection key; equivalent to {@code
1234*dc5640d1SHerbert Xue getProvider(key).get()}. When feasible, avoid using this method, in favor of having Guice
1235*dc5640d1SHerbert Xue inject your dependencies ahead of time.
1236*dc5640d1SHerbert Xue
1237*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the provider.
1238*dc5640d1SHerbert Xue @throws ProvisionException if there was a runtime failure while providing an instance.]]>
1239*dc5640d1SHerbert Xue      </doc>
1240*dc5640d1SHerbert Xue    </method>
1241*dc5640d1SHerbert Xue    <method name="getInstance" return="T"
1242*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1243*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1244*dc5640d1SHerbert Xue      deprecated="not deprecated">
1245*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
1246*dc5640d1SHerbert Xue      <doc>
1247*dc5640d1SHerbert Xue      <![CDATA[Returns the appropriate instance for the given injection type; equivalent to {@code
1248*dc5640d1SHerbert Xue getProvider(type).get()}. When feasible, avoid using this method, in favor of having Guice
1249*dc5640d1SHerbert Xue inject your dependencies ahead of time.
1250*dc5640d1SHerbert Xue
1251*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the provider.
1252*dc5640d1SHerbert Xue @throws ProvisionException if there was a runtime failure while providing an instance.]]>
1253*dc5640d1SHerbert Xue      </doc>
1254*dc5640d1SHerbert Xue    </method>
1255*dc5640d1SHerbert Xue    <method name="getParent" return="com.google.inject.Injector"
1256*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1257*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1258*dc5640d1SHerbert Xue      deprecated="not deprecated">
1259*dc5640d1SHerbert Xue      <doc>
1260*dc5640d1SHerbert Xue      <![CDATA[Returns this injector's parent, or {@code null} if this is a top-level injector.
1261*dc5640d1SHerbert Xue
1262*dc5640d1SHerbert Xue @since 2.0]]>
1263*dc5640d1SHerbert Xue      </doc>
1264*dc5640d1SHerbert Xue    </method>
1265*dc5640d1SHerbert Xue    <method name="createChildInjector" return="com.google.inject.Injector"
1266*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1267*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1268*dc5640d1SHerbert Xue      deprecated="not deprecated">
1269*dc5640d1SHerbert Xue      <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
1270*dc5640d1SHerbert Xue      <doc>
1271*dc5640d1SHerbert Xue      <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes,
1272*dc5640d1SHerbert Xue interceptors and type converters are inherited -- they are visible to the child injector.
1273*dc5640d1SHerbert Xue Elements of the child injector are not visible to its parent.
1274*dc5640d1SHerbert Xue
1275*dc5640d1SHerbert Xue <p>Just-in-time bindings created for child injectors will be created in an ancestor injector
1276*dc5640d1SHerbert Xue whenever possible. This allows for scoped instances to be shared between injectors. Use
1277*dc5640d1SHerbert Xue explicit bindings to prevent bindings from being shared with the parent injector.
1278*dc5640d1SHerbert Xue
1279*dc5640d1SHerbert Xue <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time
1280*dc5640d1SHerbert Xue bindings. The lone exception is the key for {@code Injector.class}, which is bound by each
1281*dc5640d1SHerbert Xue injector to itself.
1282*dc5640d1SHerbert Xue
1283*dc5640d1SHerbert Xue @since 2.0]]>
1284*dc5640d1SHerbert Xue      </doc>
1285*dc5640d1SHerbert Xue    </method>
1286*dc5640d1SHerbert Xue    <method name="createChildInjector" return="com.google.inject.Injector"
1287*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1288*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1289*dc5640d1SHerbert Xue      deprecated="not deprecated">
1290*dc5640d1SHerbert Xue      <param name="modules" type="com.google.inject.Module[]"/>
1291*dc5640d1SHerbert Xue      <doc>
1292*dc5640d1SHerbert Xue      <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes,
1293*dc5640d1SHerbert Xue interceptors and type converters are inherited -- they are visible to the child injector.
1294*dc5640d1SHerbert Xue Elements of the child injector are not visible to its parent.
1295*dc5640d1SHerbert Xue
1296*dc5640d1SHerbert Xue <p>Just-in-time bindings created for child injectors will be created in an ancestor injector
1297*dc5640d1SHerbert Xue whenever possible. This allows for scoped instances to be shared between injectors. Use
1298*dc5640d1SHerbert Xue explicit bindings to prevent bindings from being shared with the parent injector.
1299*dc5640d1SHerbert Xue
1300*dc5640d1SHerbert Xue <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time
1301*dc5640d1SHerbert Xue bindings. The lone exception is the key for {@code Injector.class}, which is bound by each
1302*dc5640d1SHerbert Xue injector to itself.
1303*dc5640d1SHerbert Xue
1304*dc5640d1SHerbert Xue @since 2.0]]>
1305*dc5640d1SHerbert Xue      </doc>
1306*dc5640d1SHerbert Xue    </method>
1307*dc5640d1SHerbert Xue    <doc>
1308*dc5640d1SHerbert Xue    <![CDATA[Builds the graphs of objects that make up your application. The injector tracks the dependencies
1309*dc5640d1SHerbert Xue for each type and uses bindings to inject them. This is the core of Guice, although you rarely
1310*dc5640d1SHerbert Xue interact with it directly. This "behind-the-scenes" operation is what distinguishes dependency
1311*dc5640d1SHerbert Xue injection from its cousin, the service locator pattern.
1312*dc5640d1SHerbert Xue
1313*dc5640d1SHerbert Xue <p>Contains several default bindings:
1314*dc5640d1SHerbert Xue
1315*dc5640d1SHerbert Xue <ul>
1316*dc5640d1SHerbert Xue <li>This {@link Injector} instance itself
1317*dc5640d1SHerbert Xue <li>A {@code Provider<T>} for each binding of type {@code T}
1318*dc5640d1SHerbert Xue <li>The {@link java.util.logging.Logger} for the class being injected
1319*dc5640d1SHerbert Xue <li>The {@link Stage} in which the Injector was created
1320*dc5640d1SHerbert Xue </ul>
1321*dc5640d1SHerbert Xue
1322*dc5640d1SHerbert Xue Injectors are created using the facade class {@link Guice}.
1323*dc5640d1SHerbert Xue
1324*dc5640d1SHerbert Xue <p>An injector can also {@link #injectMembers(Object) inject the dependencies} of
1325*dc5640d1SHerbert Xue already-constructed instances. This can be used to interoperate with objects created by other
1326*dc5640d1SHerbert Xue frameworks or services.
1327*dc5640d1SHerbert Xue
1328*dc5640d1SHerbert Xue <p>Injectors can be {@link #createChildInjector(Iterable) hierarchical}. Child injectors inherit
1329*dc5640d1SHerbert Xue the configuration of their parent injectors, but the converse does not hold.
1330*dc5640d1SHerbert Xue
1331*dc5640d1SHerbert Xue <p>The injector's {@link #getBindings() internal bindings} are available for introspection. This
1332*dc5640d1SHerbert Xue enables tools and extensions to operate on an injector reflectively.
1333*dc5640d1SHerbert Xue
1334*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)
1335*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]>
1336*dc5640d1SHerbert Xue    </doc>
1337*dc5640d1SHerbert Xue  </interface>
1338*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.Injector -->
1339*dc5640d1SHerbert Xue  <!-- start class com.google.inject.Key -->
1340*dc5640d1SHerbert Xue  <class name="Key" extends="java.lang.Object"
1341*dc5640d1SHerbert Xue    abstract="false"
1342*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
1343*dc5640d1SHerbert Xue    deprecated="not deprecated">
1344*dc5640d1SHerbert Xue    <constructor name="Key" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
1345*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
1346*dc5640d1SHerbert Xue      deprecated="not deprecated">
1347*dc5640d1SHerbert Xue      <doc>
1348*dc5640d1SHerbert Xue      <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
1349*dc5640d1SHerbert Xue
1350*dc5640d1SHerbert Xue <p>Clients create an empty anonymous subclass. Doing so embeds the type
1351*dc5640d1SHerbert Xue parameter in the anonymous class's type hierarchy so we can reconstitute it
1352*dc5640d1SHerbert Xue at runtime despite erasure.
1353*dc5640d1SHerbert Xue
1354*dc5640d1SHerbert Xue <p>Example usage for a binding of type {@code Foo} annotated with
1355*dc5640d1SHerbert Xue {@code @Bar}:
1356*dc5640d1SHerbert Xue
1357*dc5640d1SHerbert Xue <p>{@code new Key<Foo>(Bar.class) {}}.]]>
1358*dc5640d1SHerbert Xue      </doc>
1359*dc5640d1SHerbert Xue    </constructor>
1360*dc5640d1SHerbert Xue    <constructor name="Key" type="java.lang.annotation.Annotation"
1361*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
1362*dc5640d1SHerbert Xue      deprecated="not deprecated">
1363*dc5640d1SHerbert Xue      <doc>
1364*dc5640d1SHerbert Xue      <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
1365*dc5640d1SHerbert Xue
1366*dc5640d1SHerbert Xue <p>Clients create an empty anonymous subclass. Doing so embeds the type
1367*dc5640d1SHerbert Xue parameter in the anonymous class's type hierarchy so we can reconstitute it
1368*dc5640d1SHerbert Xue at runtime despite erasure.
1369*dc5640d1SHerbert Xue
1370*dc5640d1SHerbert Xue <p>Example usage for a binding of type {@code Foo} annotated with
1371*dc5640d1SHerbert Xue {@code @Bar}:
1372*dc5640d1SHerbert Xue
1373*dc5640d1SHerbert Xue <p>{@code new Key<Foo>(new Bar()) {}}.]]>
1374*dc5640d1SHerbert Xue      </doc>
1375*dc5640d1SHerbert Xue    </constructor>
1376*dc5640d1SHerbert Xue    <constructor name="Key"
1377*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
1378*dc5640d1SHerbert Xue      deprecated="not deprecated">
1379*dc5640d1SHerbert Xue      <doc>
1380*dc5640d1SHerbert Xue      <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
1381*dc5640d1SHerbert Xue
1382*dc5640d1SHerbert Xue <p>Clients create an empty anonymous subclass. Doing so embeds the type
1383*dc5640d1SHerbert Xue parameter in the anonymous class's type hierarchy so we can reconstitute it
1384*dc5640d1SHerbert Xue at runtime despite erasure.
1385*dc5640d1SHerbert Xue
1386*dc5640d1SHerbert Xue <p>Example usage for a binding of type {@code Foo}:
1387*dc5640d1SHerbert Xue
1388*dc5640d1SHerbert Xue <p>{@code new Key<Foo>() {}}.]]>
1389*dc5640d1SHerbert Xue      </doc>
1390*dc5640d1SHerbert Xue    </constructor>
1391*dc5640d1SHerbert Xue    <method name="getTypeLiteral" return="com.google.inject.TypeLiteral&lt;T&gt;"
1392*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1393*dc5640d1SHerbert Xue      static="false" final="true" visibility="public"
1394*dc5640d1SHerbert Xue      deprecated="not deprecated">
1395*dc5640d1SHerbert Xue      <doc>
1396*dc5640d1SHerbert Xue      <![CDATA[Gets the key type.]]>
1397*dc5640d1SHerbert Xue      </doc>
1398*dc5640d1SHerbert Xue    </method>
1399*dc5640d1SHerbert Xue    <method name="getAnnotationType" return="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
1400*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1401*dc5640d1SHerbert Xue      static="false" final="true" visibility="public"
1402*dc5640d1SHerbert Xue      deprecated="not deprecated">
1403*dc5640d1SHerbert Xue      <doc>
1404*dc5640d1SHerbert Xue      <![CDATA[Gets the annotation type.]]>
1405*dc5640d1SHerbert Xue      </doc>
1406*dc5640d1SHerbert Xue    </method>
1407*dc5640d1SHerbert Xue    <method name="getAnnotation" return="java.lang.annotation.Annotation"
1408*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1409*dc5640d1SHerbert Xue      static="false" final="true" visibility="public"
1410*dc5640d1SHerbert Xue      deprecated="not deprecated">
1411*dc5640d1SHerbert Xue      <doc>
1412*dc5640d1SHerbert Xue      <![CDATA[Gets the annotation.]]>
1413*dc5640d1SHerbert Xue      </doc>
1414*dc5640d1SHerbert Xue    </method>
1415*dc5640d1SHerbert Xue    <method name="equals" return="boolean"
1416*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1417*dc5640d1SHerbert Xue      static="false" final="true" visibility="public"
1418*dc5640d1SHerbert Xue      deprecated="not deprecated">
1419*dc5640d1SHerbert Xue      <param name="o" type="java.lang.Object"/>
1420*dc5640d1SHerbert Xue    </method>
1421*dc5640d1SHerbert Xue    <method name="hashCode" return="int"
1422*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1423*dc5640d1SHerbert Xue      static="false" final="true" visibility="public"
1424*dc5640d1SHerbert Xue      deprecated="not deprecated">
1425*dc5640d1SHerbert Xue    </method>
1426*dc5640d1SHerbert Xue    <method name="toString" return="java.lang.String"
1427*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1428*dc5640d1SHerbert Xue      static="false" final="true" visibility="public"
1429*dc5640d1SHerbert Xue      deprecated="not deprecated">
1430*dc5640d1SHerbert Xue    </method>
1431*dc5640d1SHerbert Xue    <method name="get" return="com.google.inject.Key&lt;T&gt;"
1432*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1433*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
1434*dc5640d1SHerbert Xue      deprecated="not deprecated">
1435*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
1436*dc5640d1SHerbert Xue      <doc>
1437*dc5640d1SHerbert Xue      <![CDATA[Gets a key for an injection type.]]>
1438*dc5640d1SHerbert Xue      </doc>
1439*dc5640d1SHerbert Xue    </method>
1440*dc5640d1SHerbert Xue    <method name="get" return="com.google.inject.Key&lt;T&gt;"
1441*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1442*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
1443*dc5640d1SHerbert Xue      deprecated="not deprecated">
1444*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
1445*dc5640d1SHerbert Xue      <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
1446*dc5640d1SHerbert Xue      <doc>
1447*dc5640d1SHerbert Xue      <![CDATA[Gets a key for an injection type and an annotation type.]]>
1448*dc5640d1SHerbert Xue      </doc>
1449*dc5640d1SHerbert Xue    </method>
1450*dc5640d1SHerbert Xue    <method name="get" return="com.google.inject.Key&lt;T&gt;"
1451*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1452*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
1453*dc5640d1SHerbert Xue      deprecated="not deprecated">
1454*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
1455*dc5640d1SHerbert Xue      <param name="annotation" type="java.lang.annotation.Annotation"/>
1456*dc5640d1SHerbert Xue      <doc>
1457*dc5640d1SHerbert Xue      <![CDATA[Gets a key for an injection type and an annotation.]]>
1458*dc5640d1SHerbert Xue      </doc>
1459*dc5640d1SHerbert Xue    </method>
1460*dc5640d1SHerbert Xue    <method name="get" return="com.google.inject.Key&lt;?&gt;"
1461*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1462*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
1463*dc5640d1SHerbert Xue      deprecated="not deprecated">
1464*dc5640d1SHerbert Xue      <param name="type" type="java.lang.reflect.Type"/>
1465*dc5640d1SHerbert Xue      <doc>
1466*dc5640d1SHerbert Xue      <![CDATA[Gets a key for an injection type.]]>
1467*dc5640d1SHerbert Xue      </doc>
1468*dc5640d1SHerbert Xue    </method>
1469*dc5640d1SHerbert Xue    <method name="get" return="com.google.inject.Key&lt;?&gt;"
1470*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1471*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
1472*dc5640d1SHerbert Xue      deprecated="not deprecated">
1473*dc5640d1SHerbert Xue      <param name="type" type="java.lang.reflect.Type"/>
1474*dc5640d1SHerbert Xue      <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
1475*dc5640d1SHerbert Xue      <doc>
1476*dc5640d1SHerbert Xue      <![CDATA[Gets a key for an injection type and an annotation type.]]>
1477*dc5640d1SHerbert Xue      </doc>
1478*dc5640d1SHerbert Xue    </method>
1479*dc5640d1SHerbert Xue    <method name="get" return="com.google.inject.Key&lt;?&gt;"
1480*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1481*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
1482*dc5640d1SHerbert Xue      deprecated="not deprecated">
1483*dc5640d1SHerbert Xue      <param name="type" type="java.lang.reflect.Type"/>
1484*dc5640d1SHerbert Xue      <param name="annotation" type="java.lang.annotation.Annotation"/>
1485*dc5640d1SHerbert Xue      <doc>
1486*dc5640d1SHerbert Xue      <![CDATA[Gets a key for an injection type and an annotation.]]>
1487*dc5640d1SHerbert Xue      </doc>
1488*dc5640d1SHerbert Xue    </method>
1489*dc5640d1SHerbert Xue    <method name="get" return="com.google.inject.Key&lt;T&gt;"
1490*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1491*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
1492*dc5640d1SHerbert Xue      deprecated="not deprecated">
1493*dc5640d1SHerbert Xue      <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1494*dc5640d1SHerbert Xue      <doc>
1495*dc5640d1SHerbert Xue      <![CDATA[Gets a key for an injection type.]]>
1496*dc5640d1SHerbert Xue      </doc>
1497*dc5640d1SHerbert Xue    </method>
1498*dc5640d1SHerbert Xue    <method name="get" return="com.google.inject.Key&lt;T&gt;"
1499*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1500*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
1501*dc5640d1SHerbert Xue      deprecated="not deprecated">
1502*dc5640d1SHerbert Xue      <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1503*dc5640d1SHerbert Xue      <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
1504*dc5640d1SHerbert Xue      <doc>
1505*dc5640d1SHerbert Xue      <![CDATA[Gets a key for an injection type and an annotation type.]]>
1506*dc5640d1SHerbert Xue      </doc>
1507*dc5640d1SHerbert Xue    </method>
1508*dc5640d1SHerbert Xue    <method name="get" return="com.google.inject.Key&lt;T&gt;"
1509*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1510*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
1511*dc5640d1SHerbert Xue      deprecated="not deprecated">
1512*dc5640d1SHerbert Xue      <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1513*dc5640d1SHerbert Xue      <param name="annotation" type="java.lang.annotation.Annotation"/>
1514*dc5640d1SHerbert Xue      <doc>
1515*dc5640d1SHerbert Xue      <![CDATA[Gets a key for an injection type and an annotation.]]>
1516*dc5640d1SHerbert Xue      </doc>
1517*dc5640d1SHerbert Xue    </method>
1518*dc5640d1SHerbert Xue    <doc>
1519*dc5640d1SHerbert Xue    <![CDATA[Binding key consisting of an injection type and an optional annotation.
1520*dc5640d1SHerbert Xue Matches the type and annotation at a point of injection.
1521*dc5640d1SHerbert Xue
1522*dc5640d1SHerbert Xue <p>For example, {@code Key.get(Service.class, Transactional.class)} will
1523*dc5640d1SHerbert Xue match:
1524*dc5640d1SHerbert Xue
1525*dc5640d1SHerbert Xue <pre>
1526*dc5640d1SHerbert Xue   {@literal @}Inject
1527*dc5640d1SHerbert Xue   public void setService({@literal @}Transactional Service service) {
1528*dc5640d1SHerbert Xue     ...
1529*dc5640d1SHerbert Xue   }
1530*dc5640d1SHerbert Xue </pre>
1531*dc5640d1SHerbert Xue
1532*dc5640d1SHerbert Xue <p>{@code Key} supports generic types via subclassing just like {@link
1533*dc5640d1SHerbert Xue TypeLiteral}.
1534*dc5640d1SHerbert Xue
1535*dc5640d1SHerbert Xue <p>Keys do not differentiate between primitive types (int, char, etc.) and
1536*dc5640d1SHerbert Xue their correpsonding wrapper types (Integer, Character, etc.). Primitive
1537*dc5640d1SHerbert Xue types will be replaced with their wrapper types when keys are created.
1538*dc5640d1SHerbert Xue
1539*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
1540*dc5640d1SHerbert Xue    </doc>
1541*dc5640d1SHerbert Xue  </class>
1542*dc5640d1SHerbert Xue  <!-- end class com.google.inject.Key -->
1543*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.MembersInjector -->
1544*dc5640d1SHerbert Xue  <interface name="MembersInjector"    abstract="true"
1545*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
1546*dc5640d1SHerbert Xue    deprecated="not deprecated">
1547*dc5640d1SHerbert Xue    <method name="injectMembers"
1548*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1549*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1550*dc5640d1SHerbert Xue      deprecated="not deprecated">
1551*dc5640d1SHerbert Xue      <param name="instance" type="T"/>
1552*dc5640d1SHerbert Xue      <doc>
1553*dc5640d1SHerbert Xue      <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or
1554*dc5640d1SHerbert Xue absence of an injectable constructor.
1555*dc5640d1SHerbert Xue
1556*dc5640d1SHerbert Xue <p>Whenever Guice creates an instance, it performs this injection automatically (after first
1557*dc5640d1SHerbert Xue performing constructor injection), so if you're able to let Guice create all your objects for
1558*dc5640d1SHerbert Xue you, you'll never need to use this method.
1559*dc5640d1SHerbert Xue
1560*dc5640d1SHerbert Xue @param instance to inject members on. May be {@code null}.]]>
1561*dc5640d1SHerbert Xue      </doc>
1562*dc5640d1SHerbert Xue    </method>
1563*dc5640d1SHerbert Xue    <doc>
1564*dc5640d1SHerbert Xue    <![CDATA[Injects dependencies into the fields and methods on instances of type {@code T}. Ignores the
1565*dc5640d1SHerbert Xue presence or absence of an injectable constructor.
1566*dc5640d1SHerbert Xue
1567*dc5640d1SHerbert Xue @param <T> type to inject members of
1568*dc5640d1SHerbert Xue
1569*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)
1570*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
1571*dc5640d1SHerbert Xue @since 2.0]]>
1572*dc5640d1SHerbert Xue    </doc>
1573*dc5640d1SHerbert Xue  </interface>
1574*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.MembersInjector -->
1575*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.Module -->
1576*dc5640d1SHerbert Xue  <interface name="Module"    abstract="true"
1577*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
1578*dc5640d1SHerbert Xue    deprecated="not deprecated">
1579*dc5640d1SHerbert Xue    <method name="configure"
1580*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1581*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1582*dc5640d1SHerbert Xue      deprecated="not deprecated">
1583*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
1584*dc5640d1SHerbert Xue      <doc>
1585*dc5640d1SHerbert Xue      <![CDATA[Contributes bindings and other configurations for this module to {@code binder}.
1586*dc5640d1SHerbert Xue
1587*dc5640d1SHerbert Xue <p><strong>Do not invoke this method directly</strong> to install submodules. Instead use
1588*dc5640d1SHerbert Xue {@link Binder#install(Module)}, which ensures that {@link Provides provider methods} are
1589*dc5640d1SHerbert Xue discovered.]]>
1590*dc5640d1SHerbert Xue      </doc>
1591*dc5640d1SHerbert Xue    </method>
1592*dc5640d1SHerbert Xue    <doc>
1593*dc5640d1SHerbert Xue    <![CDATA[A module contributes configuration information, typically interface
1594*dc5640d1SHerbert Xue bindings, which will be used to create an {@link Injector}. A Guice-based
1595*dc5640d1SHerbert Xue application is ultimately composed of little more than a set of
1596*dc5640d1SHerbert Xue {@code Module}s and some bootstrapping code.
1597*dc5640d1SHerbert Xue
1598*dc5640d1SHerbert Xue <p>Your Module classes can use a more streamlined syntax by extending
1599*dc5640d1SHerbert Xue {@link AbstractModule} rather than implementing this interface directly.
1600*dc5640d1SHerbert Xue
1601*dc5640d1SHerbert Xue <p>In addition to the bindings configured via {@link #configure}, bindings
1602*dc5640d1SHerbert Xue will be created for all methods annotated with {@literal @}{@link Provides}.
1603*dc5640d1SHerbert Xue Use scope and binding annotations on these methods to configure the
1604*dc5640d1SHerbert Xue bindings.]]>
1605*dc5640d1SHerbert Xue    </doc>
1606*dc5640d1SHerbert Xue  </interface>
1607*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.Module -->
1608*dc5640d1SHerbert Xue  <!-- start class com.google.inject.OutOfScopeException -->
1609*dc5640d1SHerbert Xue  <class name="OutOfScopeException" extends="java.lang.RuntimeException"
1610*dc5640d1SHerbert Xue    abstract="false"
1611*dc5640d1SHerbert Xue    static="false" final="true" visibility="public"
1612*dc5640d1SHerbert Xue    deprecated="not deprecated">
1613*dc5640d1SHerbert Xue    <constructor name="OutOfScopeException" type="java.lang.String"
1614*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1615*dc5640d1SHerbert Xue      deprecated="not deprecated">
1616*dc5640d1SHerbert Xue    </constructor>
1617*dc5640d1SHerbert Xue    <constructor name="OutOfScopeException" type="java.lang.String, java.lang.Throwable"
1618*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1619*dc5640d1SHerbert Xue      deprecated="not deprecated">
1620*dc5640d1SHerbert Xue    </constructor>
1621*dc5640d1SHerbert Xue    <constructor name="OutOfScopeException" type="java.lang.Throwable"
1622*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1623*dc5640d1SHerbert Xue      deprecated="not deprecated">
1624*dc5640d1SHerbert Xue    </constructor>
1625*dc5640d1SHerbert Xue    <doc>
1626*dc5640d1SHerbert Xue    <![CDATA[Thrown from {@link Provider#get} when an attempt is made to access a scoped
1627*dc5640d1SHerbert Xue object while the scope in question is not currently active.
1628*dc5640d1SHerbert Xue
1629*dc5640d1SHerbert Xue @author [email protected] (Kevin Bourrillion)
1630*dc5640d1SHerbert Xue @since 2.0]]>
1631*dc5640d1SHerbert Xue    </doc>
1632*dc5640d1SHerbert Xue  </class>
1633*dc5640d1SHerbert Xue  <!-- end class com.google.inject.OutOfScopeException -->
1634*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.PrivateBinder -->
1635*dc5640d1SHerbert Xue  <interface name="PrivateBinder"    abstract="true"
1636*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
1637*dc5640d1SHerbert Xue    deprecated="not deprecated">
1638*dc5640d1SHerbert Xue    <implements name="com.google.inject.Binder"/>
1639*dc5640d1SHerbert Xue    <method name="expose"
1640*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1641*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1642*dc5640d1SHerbert Xue      deprecated="not deprecated">
1643*dc5640d1SHerbert Xue      <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
1644*dc5640d1SHerbert Xue      <doc>
1645*dc5640d1SHerbert Xue      <![CDATA[Makes the binding for {@code key} available to the enclosing environment]]>
1646*dc5640d1SHerbert Xue      </doc>
1647*dc5640d1SHerbert Xue    </method>
1648*dc5640d1SHerbert Xue    <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
1649*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1650*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1651*dc5640d1SHerbert Xue      deprecated="not deprecated">
1652*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;?&gt;"/>
1653*dc5640d1SHerbert Xue      <doc>
1654*dc5640d1SHerbert Xue      <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link
1655*dc5640d1SHerbert Xue com.google.inject.binder.AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
1656*dc5640d1SHerbert Xue binding annotation.]]>
1657*dc5640d1SHerbert Xue      </doc>
1658*dc5640d1SHerbert Xue    </method>
1659*dc5640d1SHerbert Xue    <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
1660*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1661*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1662*dc5640d1SHerbert Xue      deprecated="not deprecated">
1663*dc5640d1SHerbert Xue      <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
1664*dc5640d1SHerbert Xue      <doc>
1665*dc5640d1SHerbert Xue      <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link
1666*dc5640d1SHerbert Xue AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
1667*dc5640d1SHerbert Xue binding annotation.]]>
1668*dc5640d1SHerbert Xue      </doc>
1669*dc5640d1SHerbert Xue    </method>
1670*dc5640d1SHerbert Xue    <method name="withSource" return="com.google.inject.PrivateBinder"
1671*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1672*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1673*dc5640d1SHerbert Xue      deprecated="not deprecated">
1674*dc5640d1SHerbert Xue      <param name="source" type="java.lang.Object"/>
1675*dc5640d1SHerbert Xue    </method>
1676*dc5640d1SHerbert Xue    <method name="skipSources" return="com.google.inject.PrivateBinder"
1677*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1678*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1679*dc5640d1SHerbert Xue      deprecated="not deprecated">
1680*dc5640d1SHerbert Xue      <param name="classesToSkip" type="java.lang.Class[]"/>
1681*dc5640d1SHerbert Xue    </method>
1682*dc5640d1SHerbert Xue    <doc>
1683*dc5640d1SHerbert Xue    <![CDATA[Returns a binder whose configuration information is hidden from its environment by default. See
1684*dc5640d1SHerbert Xue {@link com.google.inject.PrivateModule PrivateModule} for details.
1685*dc5640d1SHerbert Xue
1686*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
1687*dc5640d1SHerbert Xue @since 2.0]]>
1688*dc5640d1SHerbert Xue    </doc>
1689*dc5640d1SHerbert Xue  </interface>
1690*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.PrivateBinder -->
1691*dc5640d1SHerbert Xue  <!-- start class com.google.inject.PrivateModule -->
1692*dc5640d1SHerbert Xue  <class name="PrivateModule" extends="java.lang.Object"
1693*dc5640d1SHerbert Xue    abstract="true"
1694*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
1695*dc5640d1SHerbert Xue    deprecated="not deprecated">
1696*dc5640d1SHerbert Xue    <implements name="com.google.inject.Module"/>
1697*dc5640d1SHerbert Xue    <constructor name="PrivateModule"
1698*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
1699*dc5640d1SHerbert Xue      deprecated="not deprecated">
1700*dc5640d1SHerbert Xue    </constructor>
1701*dc5640d1SHerbert Xue    <method name="configure"
1702*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="true"
1703*dc5640d1SHerbert Xue      static="false" final="true" visibility="public"
1704*dc5640d1SHerbert Xue      deprecated="not deprecated">
1705*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
1706*dc5640d1SHerbert Xue    </method>
1707*dc5640d1SHerbert Xue    <method name="configure"
1708*dc5640d1SHerbert Xue      abstract="true" native="false" synchronized="false"
1709*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
1710*dc5640d1SHerbert Xue      deprecated="not deprecated">
1711*dc5640d1SHerbert Xue      <doc>
1712*dc5640d1SHerbert Xue      <![CDATA[Creates bindings and other configurations private to this module. Use {@link #expose(Class)
1713*dc5640d1SHerbert Xue expose()} to make the bindings in this module available externally.]]>
1714*dc5640d1SHerbert Xue      </doc>
1715*dc5640d1SHerbert Xue    </method>
1716*dc5640d1SHerbert Xue    <method name="expose"
1717*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1718*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1719*dc5640d1SHerbert Xue      deprecated="not deprecated">
1720*dc5640d1SHerbert Xue      <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
1721*dc5640d1SHerbert Xue      <doc>
1722*dc5640d1SHerbert Xue      <![CDATA[Makes the binding for {@code key} available to other modules and the injector.]]>
1723*dc5640d1SHerbert Xue      </doc>
1724*dc5640d1SHerbert Xue    </method>
1725*dc5640d1SHerbert Xue    <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
1726*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1727*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1728*dc5640d1SHerbert Xue      deprecated="not deprecated">
1729*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;?&gt;"/>
1730*dc5640d1SHerbert Xue      <doc>
1731*dc5640d1SHerbert Xue      <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link
1732*dc5640d1SHerbert Xue AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
1733*dc5640d1SHerbert Xue binding annotation.]]>
1734*dc5640d1SHerbert Xue      </doc>
1735*dc5640d1SHerbert Xue    </method>
1736*dc5640d1SHerbert Xue    <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
1737*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1738*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1739*dc5640d1SHerbert Xue      deprecated="not deprecated">
1740*dc5640d1SHerbert Xue      <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
1741*dc5640d1SHerbert Xue      <doc>
1742*dc5640d1SHerbert Xue      <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link
1743*dc5640d1SHerbert Xue AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
1744*dc5640d1SHerbert Xue binding annotation.]]>
1745*dc5640d1SHerbert Xue      </doc>
1746*dc5640d1SHerbert Xue    </method>
1747*dc5640d1SHerbert Xue    <method name="binder" return="com.google.inject.PrivateBinder"
1748*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1749*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1750*dc5640d1SHerbert Xue      deprecated="not deprecated">
1751*dc5640d1SHerbert Xue      <doc>
1752*dc5640d1SHerbert Xue      <![CDATA[Returns the current binder.]]>
1753*dc5640d1SHerbert Xue      </doc>
1754*dc5640d1SHerbert Xue    </method>
1755*dc5640d1SHerbert Xue    <method name="bindScope"
1756*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1757*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1758*dc5640d1SHerbert Xue      deprecated="not deprecated">
1759*dc5640d1SHerbert Xue      <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
1760*dc5640d1SHerbert Xue      <param name="scope" type="com.google.inject.Scope"/>
1761*dc5640d1SHerbert Xue      <doc>
1762*dc5640d1SHerbert Xue      <![CDATA[@see Binder#bindScope(Class, Scope)]]>
1763*dc5640d1SHerbert Xue      </doc>
1764*dc5640d1SHerbert Xue    </method>
1765*dc5640d1SHerbert Xue    <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
1766*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1767*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1768*dc5640d1SHerbert Xue      deprecated="not deprecated">
1769*dc5640d1SHerbert Xue      <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
1770*dc5640d1SHerbert Xue      <doc>
1771*dc5640d1SHerbert Xue      <![CDATA[@see Binder#bind(Key)]]>
1772*dc5640d1SHerbert Xue      </doc>
1773*dc5640d1SHerbert Xue    </method>
1774*dc5640d1SHerbert Xue    <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
1775*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1776*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1777*dc5640d1SHerbert Xue      deprecated="not deprecated">
1778*dc5640d1SHerbert Xue      <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1779*dc5640d1SHerbert Xue      <doc>
1780*dc5640d1SHerbert Xue      <![CDATA[@see Binder#bind(TypeLiteral)]]>
1781*dc5640d1SHerbert Xue      </doc>
1782*dc5640d1SHerbert Xue    </method>
1783*dc5640d1SHerbert Xue    <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
1784*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1785*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1786*dc5640d1SHerbert Xue      deprecated="not deprecated">
1787*dc5640d1SHerbert Xue      <param name="clazz" type="java.lang.Class&lt;T&gt;"/>
1788*dc5640d1SHerbert Xue      <doc>
1789*dc5640d1SHerbert Xue      <![CDATA[@see Binder#bind(Class)]]>
1790*dc5640d1SHerbert Xue      </doc>
1791*dc5640d1SHerbert Xue    </method>
1792*dc5640d1SHerbert Xue    <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder"
1793*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1794*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1795*dc5640d1SHerbert Xue      deprecated="not deprecated">
1796*dc5640d1SHerbert Xue      <doc>
1797*dc5640d1SHerbert Xue      <![CDATA[@see Binder#bindConstant()]]>
1798*dc5640d1SHerbert Xue      </doc>
1799*dc5640d1SHerbert Xue    </method>
1800*dc5640d1SHerbert Xue    <method name="install"
1801*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1802*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1803*dc5640d1SHerbert Xue      deprecated="not deprecated">
1804*dc5640d1SHerbert Xue      <param name="module" type="com.google.inject.Module"/>
1805*dc5640d1SHerbert Xue      <doc>
1806*dc5640d1SHerbert Xue      <![CDATA[@see Binder#install(Module)]]>
1807*dc5640d1SHerbert Xue      </doc>
1808*dc5640d1SHerbert Xue    </method>
1809*dc5640d1SHerbert Xue    <method name="addError"
1810*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1811*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1812*dc5640d1SHerbert Xue      deprecated="not deprecated">
1813*dc5640d1SHerbert Xue      <param name="message" type="java.lang.String"/>
1814*dc5640d1SHerbert Xue      <param name="arguments" type="java.lang.Object[]"/>
1815*dc5640d1SHerbert Xue      <doc>
1816*dc5640d1SHerbert Xue      <![CDATA[@see Binder#addError(String, Object[])]]>
1817*dc5640d1SHerbert Xue      </doc>
1818*dc5640d1SHerbert Xue    </method>
1819*dc5640d1SHerbert Xue    <method name="addError"
1820*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1821*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1822*dc5640d1SHerbert Xue      deprecated="not deprecated">
1823*dc5640d1SHerbert Xue      <param name="t" type="java.lang.Throwable"/>
1824*dc5640d1SHerbert Xue      <doc>
1825*dc5640d1SHerbert Xue      <![CDATA[@see Binder#addError(Throwable)]]>
1826*dc5640d1SHerbert Xue      </doc>
1827*dc5640d1SHerbert Xue    </method>
1828*dc5640d1SHerbert Xue    <method name="addError"
1829*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1830*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1831*dc5640d1SHerbert Xue      deprecated="not deprecated">
1832*dc5640d1SHerbert Xue      <param name="message" type="com.google.inject.spi.Message"/>
1833*dc5640d1SHerbert Xue      <doc>
1834*dc5640d1SHerbert Xue      <![CDATA[@see Binder#addError(Message)]]>
1835*dc5640d1SHerbert Xue      </doc>
1836*dc5640d1SHerbert Xue    </method>
1837*dc5640d1SHerbert Xue    <method name="requestInjection"
1838*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1839*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1840*dc5640d1SHerbert Xue      deprecated="not deprecated">
1841*dc5640d1SHerbert Xue      <param name="instance" type="java.lang.Object"/>
1842*dc5640d1SHerbert Xue      <doc>
1843*dc5640d1SHerbert Xue      <![CDATA[@see Binder#requestInjection(Object)]]>
1844*dc5640d1SHerbert Xue      </doc>
1845*dc5640d1SHerbert Xue    </method>
1846*dc5640d1SHerbert Xue    <method name="requestStaticInjection"
1847*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1848*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1849*dc5640d1SHerbert Xue      deprecated="not deprecated">
1850*dc5640d1SHerbert Xue      <param name="types" type="java.lang.Class[]"/>
1851*dc5640d1SHerbert Xue      <doc>
1852*dc5640d1SHerbert Xue      <![CDATA[@see Binder#requestStaticInjection(Class[])]]>
1853*dc5640d1SHerbert Xue      </doc>
1854*dc5640d1SHerbert Xue    </method>
1855*dc5640d1SHerbert Xue    <method name="bindInterceptor"
1856*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1857*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1858*dc5640d1SHerbert Xue      deprecated="not deprecated">
1859*dc5640d1SHerbert Xue      <param name="classMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
1860*dc5640d1SHerbert Xue      <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
1861*dc5640d1SHerbert Xue      <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
1862*dc5640d1SHerbert Xue      <doc>
1863*dc5640d1SHerbert Xue      <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher, com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])]]>
1864*dc5640d1SHerbert Xue      </doc>
1865*dc5640d1SHerbert Xue    </method>
1866*dc5640d1SHerbert Xue    <method name="requireBinding"
1867*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1868*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1869*dc5640d1SHerbert Xue      deprecated="not deprecated">
1870*dc5640d1SHerbert Xue      <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
1871*dc5640d1SHerbert Xue      <doc>
1872*dc5640d1SHerbert Xue      <![CDATA[Instructs Guice to require a binding to the given key.]]>
1873*dc5640d1SHerbert Xue      </doc>
1874*dc5640d1SHerbert Xue    </method>
1875*dc5640d1SHerbert Xue    <method name="requireBinding"
1876*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1877*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1878*dc5640d1SHerbert Xue      deprecated="not deprecated">
1879*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;?&gt;"/>
1880*dc5640d1SHerbert Xue      <doc>
1881*dc5640d1SHerbert Xue      <![CDATA[Instructs Guice to require a binding to the given type.]]>
1882*dc5640d1SHerbert Xue      </doc>
1883*dc5640d1SHerbert Xue    </method>
1884*dc5640d1SHerbert Xue    <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
1885*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1886*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1887*dc5640d1SHerbert Xue      deprecated="not deprecated">
1888*dc5640d1SHerbert Xue      <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
1889*dc5640d1SHerbert Xue      <doc>
1890*dc5640d1SHerbert Xue      <![CDATA[@see Binder#getProvider(Key)]]>
1891*dc5640d1SHerbert Xue      </doc>
1892*dc5640d1SHerbert Xue    </method>
1893*dc5640d1SHerbert Xue    <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
1894*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1895*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1896*dc5640d1SHerbert Xue      deprecated="not deprecated">
1897*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
1898*dc5640d1SHerbert Xue      <doc>
1899*dc5640d1SHerbert Xue      <![CDATA[@see Binder#getProvider(Class)]]>
1900*dc5640d1SHerbert Xue      </doc>
1901*dc5640d1SHerbert Xue    </method>
1902*dc5640d1SHerbert Xue    <method name="convertToTypes"
1903*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1904*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1905*dc5640d1SHerbert Xue      deprecated="not deprecated">
1906*dc5640d1SHerbert Xue      <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
1907*dc5640d1SHerbert Xue      <param name="converter" type="com.google.inject.spi.TypeConverter"/>
1908*dc5640d1SHerbert Xue      <doc>
1909*dc5640d1SHerbert Xue      <![CDATA[@see Binder#convertToTypes(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeConverter)]]>
1910*dc5640d1SHerbert Xue      </doc>
1911*dc5640d1SHerbert Xue    </method>
1912*dc5640d1SHerbert Xue    <method name="currentStage" return="com.google.inject.Stage"
1913*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1914*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
1915*dc5640d1SHerbert Xue      deprecated="not deprecated">
1916*dc5640d1SHerbert Xue      <doc>
1917*dc5640d1SHerbert Xue      <![CDATA[@see Binder#currentStage()]]>
1918*dc5640d1SHerbert Xue      </doc>
1919*dc5640d1SHerbert Xue    </method>
1920*dc5640d1SHerbert Xue    <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
1921*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1922*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
1923*dc5640d1SHerbert Xue      deprecated="not deprecated">
1924*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
1925*dc5640d1SHerbert Xue      <doc>
1926*dc5640d1SHerbert Xue      <![CDATA[@see Binder#getMembersInjector(Class)]]>
1927*dc5640d1SHerbert Xue      </doc>
1928*dc5640d1SHerbert Xue    </method>
1929*dc5640d1SHerbert Xue    <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
1930*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1931*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
1932*dc5640d1SHerbert Xue      deprecated="not deprecated">
1933*dc5640d1SHerbert Xue      <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1934*dc5640d1SHerbert Xue      <doc>
1935*dc5640d1SHerbert Xue      <![CDATA[@see Binder#getMembersInjector(TypeLiteral)]]>
1936*dc5640d1SHerbert Xue      </doc>
1937*dc5640d1SHerbert Xue    </method>
1938*dc5640d1SHerbert Xue    <method name="bindListener"
1939*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
1940*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
1941*dc5640d1SHerbert Xue      deprecated="not deprecated">
1942*dc5640d1SHerbert Xue      <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
1943*dc5640d1SHerbert Xue      <param name="listener" type="com.google.inject.spi.TypeListener"/>
1944*dc5640d1SHerbert Xue      <doc>
1945*dc5640d1SHerbert Xue      <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeListener)]]>
1946*dc5640d1SHerbert Xue      </doc>
1947*dc5640d1SHerbert Xue    </method>
1948*dc5640d1SHerbert Xue    <doc>
1949*dc5640d1SHerbert Xue    <![CDATA[A module whose configuration information is hidden from its environment by default. Only bindings
1950*dc5640d1SHerbert Xue that are explicitly exposed will be available to other modules and to the users of the injector.
1951*dc5640d1SHerbert Xue This module may expose the bindings it creates and the bindings of the modules it installs.
1952*dc5640d1SHerbert Xue
1953*dc5640d1SHerbert Xue <p>A private module can be nested within a regular module or within another private module using
1954*dc5640d1SHerbert Xue {@link Binder#install install()}.  Its bindings live in a new environment that inherits bindings,
1955*dc5640d1SHerbert Xue type converters, scopes, and interceptors from the surrounding ("parent") environment.  When you
1956*dc5640d1SHerbert Xue nest multiple private modules, the result is a tree of environments where the injector's
1957*dc5640d1SHerbert Xue environment is the root.
1958*dc5640d1SHerbert Xue
1959*dc5640d1SHerbert Xue <p>Guice EDSL bindings can be exposed with {@link #expose(Class) expose()}. {@literal @}{@link
1960*dc5640d1SHerbert Xue com.google.inject.Provides Provides} bindings can be exposed with the {@literal @}{@link
1961*dc5640d1SHerbert Xue Exposed} annotation:
1962*dc5640d1SHerbert Xue
1963*dc5640d1SHerbert Xue <pre>
1964*dc5640d1SHerbert Xue public class FooBarBazModule extends PrivateModule {
1965*dc5640d1SHerbert Xue   protected void configure() {
1966*dc5640d1SHerbert Xue     bind(Foo.class).to(RealFoo.class);
1967*dc5640d1SHerbert Xue     expose(Foo.class);
1968*dc5640d1SHerbert Xue
1969*dc5640d1SHerbert Xue     install(new TransactionalBarModule());
1970*dc5640d1SHerbert Xue     expose(Bar.class).annotatedWith(Transactional.class);
1971*dc5640d1SHerbert Xue
1972*dc5640d1SHerbert Xue     bind(SomeImplementationDetail.class);
1973*dc5640d1SHerbert Xue     install(new MoreImplementationDetailsModule());
1974*dc5640d1SHerbert Xue   }
1975*dc5640d1SHerbert Xue
1976*dc5640d1SHerbert Xue   {@literal @}Provides {@literal @}Exposed
1977*dc5640d1SHerbert Xue   public Baz provideBaz() {
1978*dc5640d1SHerbert Xue     return new SuperBaz();
1979*dc5640d1SHerbert Xue   }
1980*dc5640d1SHerbert Xue }
1981*dc5640d1SHerbert Xue </pre>
1982*dc5640d1SHerbert Xue
1983*dc5640d1SHerbert Xue <p>Private modules are implemented using {@link Injector#createChildInjector(Module[]) parent
1984*dc5640d1SHerbert Xue injectors}. When it can satisfy their dependencies, just-in-time bindings will be created in the
1985*dc5640d1SHerbert Xue root environment. Such bindings are shared among all environments in the tree.
1986*dc5640d1SHerbert Xue
1987*dc5640d1SHerbert Xue <p>The scope of a binding is constrained to its environment. A singleton bound in a private
1988*dc5640d1SHerbert Xue module will be unique to its environment. But a binding for the same type in a different private
1989*dc5640d1SHerbert Xue module will yield a different instance.
1990*dc5640d1SHerbert Xue
1991*dc5640d1SHerbert Xue <p>A shared binding that injects the {@code Injector} gets the root injector, which only has
1992*dc5640d1SHerbert Xue access to bindings in the root environment. An explicit binding that injects the {@code Injector}
1993*dc5640d1SHerbert Xue gets access to all bindings in the child environment.
1994*dc5640d1SHerbert Xue
1995*dc5640d1SHerbert Xue <p>To promote a just-in-time binding to an explicit binding, bind it:
1996*dc5640d1SHerbert Xue <pre>
1997*dc5640d1SHerbert Xue   bind(FooImpl.class);
1998*dc5640d1SHerbert Xue </pre>
1999*dc5640d1SHerbert Xue
2000*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
2001*dc5640d1SHerbert Xue @since 2.0]]>
2002*dc5640d1SHerbert Xue    </doc>
2003*dc5640d1SHerbert Xue  </class>
2004*dc5640d1SHerbert Xue  <!-- end class com.google.inject.PrivateModule -->
2005*dc5640d1SHerbert Xue  <!-- start class com.google.inject.ProvidedBy -->
2006*dc5640d1SHerbert Xue  <class name="ProvidedBy"    abstract="true"
2007*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
2008*dc5640d1SHerbert Xue    deprecated="not deprecated">
2009*dc5640d1SHerbert Xue    <implements name="java.lang.annotation.Annotation"/>
2010*dc5640d1SHerbert Xue    <doc>
2011*dc5640d1SHerbert Xue    <![CDATA[A pointer to the default provider type for a type.
2012*dc5640d1SHerbert Xue
2013*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
2014*dc5640d1SHerbert Xue    </doc>
2015*dc5640d1SHerbert Xue  </class>
2016*dc5640d1SHerbert Xue  <!-- end class com.google.inject.ProvidedBy -->
2017*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.Provider -->
2018*dc5640d1SHerbert Xue  <interface name="Provider"    abstract="true"
2019*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
2020*dc5640d1SHerbert Xue    deprecated="not deprecated">
2021*dc5640d1SHerbert Xue    <method name="get" return="T"
2022*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2023*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2024*dc5640d1SHerbert Xue      deprecated="not deprecated">
2025*dc5640d1SHerbert Xue      <doc>
2026*dc5640d1SHerbert Xue      <![CDATA[Provides an instance of {@code T}. Must never return {@code null}.
2027*dc5640d1SHerbert Xue
2028*dc5640d1SHerbert Xue @throws OutOfScopeException when an attempt is made to access a scoped object while the scope
2029*dc5640d1SHerbert Xue     in question is not currently active
2030*dc5640d1SHerbert Xue @throws ProvisionException if an instance cannot be provided. Such exceptions include messages
2031*dc5640d1SHerbert Xue     and throwables to describe why provision failed.]]>
2032*dc5640d1SHerbert Xue      </doc>
2033*dc5640d1SHerbert Xue    </method>
2034*dc5640d1SHerbert Xue    <doc>
2035*dc5640d1SHerbert Xue    <![CDATA[An object capable of providing instances of type {@code T}. Providers are used in numerous ways
2036*dc5640d1SHerbert Xue by Guice:
2037*dc5640d1SHerbert Xue
2038*dc5640d1SHerbert Xue <ul>
2039*dc5640d1SHerbert Xue <li>When the default means for obtaining instances (an injectable or parameterless constructor)
2040*dc5640d1SHerbert Xue is insufficient for a particular binding, the module can specify a custom {@code Provider}
2041*dc5640d1SHerbert Xue instead, to control exactly how Guice creates or obtains instances for the binding.
2042*dc5640d1SHerbert Xue
2043*dc5640d1SHerbert Xue <li>An implementation class may always choose to have a {@code Provider<T>} instance injected,
2044*dc5640d1SHerbert Xue rather than having a {@code T} injected directly.  This may give you access to multiple
2045*dc5640d1SHerbert Xue instances, instances you wish to safely mutate and discard, instances which are out of scope
2046*dc5640d1SHerbert Xue (e.g. using a {@code @RequestScoped} object from within a {@code @SessionScoped} object), or
2047*dc5640d1SHerbert Xue instances that will be initialized lazily.
2048*dc5640d1SHerbert Xue
2049*dc5640d1SHerbert Xue <li>A custom {@link Scope} is implemented as a decorator of {@code Provider<T>}, which decides
2050*dc5640d1SHerbert Xue when to delegate to the backing provider and when to provide the instance some other way.
2051*dc5640d1SHerbert Xue
2052*dc5640d1SHerbert Xue <li>The {@link Injector} offers access to the {@code Provider<T>} it uses to fulfill requests
2053*dc5640d1SHerbert Xue for a given key, via the {@link Injector#getProvider} methods.
2054*dc5640d1SHerbert Xue </ul>
2055*dc5640d1SHerbert Xue
2056*dc5640d1SHerbert Xue @param <T> the type of object this provides
2057*dc5640d1SHerbert Xue
2058*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
2059*dc5640d1SHerbert Xue    </doc>
2060*dc5640d1SHerbert Xue  </interface>
2061*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.Provider -->
2062*dc5640d1SHerbert Xue  <!-- start class com.google.inject.Provides -->
2063*dc5640d1SHerbert Xue  <class name="Provides"    abstract="true"
2064*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
2065*dc5640d1SHerbert Xue    deprecated="not deprecated">
2066*dc5640d1SHerbert Xue    <implements name="java.lang.annotation.Annotation"/>
2067*dc5640d1SHerbert Xue    <doc>
2068*dc5640d1SHerbert Xue    <![CDATA[Annotates methods of a {@link Module} to create a provider method binding. The method's return
2069*dc5640d1SHerbert Xue type is bound to it's returned value. Guice will pass dependencies to the method as parameters.
2070*dc5640d1SHerbert Xue
2071*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)
2072*dc5640d1SHerbert Xue @since 2.0]]>
2073*dc5640d1SHerbert Xue    </doc>
2074*dc5640d1SHerbert Xue  </class>
2075*dc5640d1SHerbert Xue  <!-- end class com.google.inject.Provides -->
2076*dc5640d1SHerbert Xue  <!-- start class com.google.inject.ProvisionException -->
2077*dc5640d1SHerbert Xue  <class name="ProvisionException" extends="java.lang.RuntimeException"
2078*dc5640d1SHerbert Xue    abstract="false"
2079*dc5640d1SHerbert Xue    static="false" final="true" visibility="public"
2080*dc5640d1SHerbert Xue    deprecated="not deprecated">
2081*dc5640d1SHerbert Xue    <constructor name="ProvisionException" type="java.lang.Iterable&lt;com.google.inject.spi.Message&gt;"
2082*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2083*dc5640d1SHerbert Xue      deprecated="not deprecated">
2084*dc5640d1SHerbert Xue      <doc>
2085*dc5640d1SHerbert Xue      <![CDATA[Creates a ConfigurationException containing {@code messages}.]]>
2086*dc5640d1SHerbert Xue      </doc>
2087*dc5640d1SHerbert Xue    </constructor>
2088*dc5640d1SHerbert Xue    <constructor name="ProvisionException" type="java.lang.String, java.lang.Throwable"
2089*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2090*dc5640d1SHerbert Xue      deprecated="not deprecated">
2091*dc5640d1SHerbert Xue    </constructor>
2092*dc5640d1SHerbert Xue    <constructor name="ProvisionException" type="java.lang.String"
2093*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2094*dc5640d1SHerbert Xue      deprecated="not deprecated">
2095*dc5640d1SHerbert Xue    </constructor>
2096*dc5640d1SHerbert Xue    <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
2097*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2098*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2099*dc5640d1SHerbert Xue      deprecated="not deprecated">
2100*dc5640d1SHerbert Xue      <doc>
2101*dc5640d1SHerbert Xue      <![CDATA[Returns messages for the errors that caused this exception.]]>
2102*dc5640d1SHerbert Xue      </doc>
2103*dc5640d1SHerbert Xue    </method>
2104*dc5640d1SHerbert Xue    <method name="getMessage" return="java.lang.String"
2105*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2106*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2107*dc5640d1SHerbert Xue      deprecated="not deprecated">
2108*dc5640d1SHerbert Xue    </method>
2109*dc5640d1SHerbert Xue    <doc>
2110*dc5640d1SHerbert Xue    <![CDATA[Indicates that there was a runtime failure while providing an instance.
2111*dc5640d1SHerbert Xue
2112*dc5640d1SHerbert Xue @author [email protected] (Kevin Bourrillion)
2113*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
2114*dc5640d1SHerbert Xue @since 2.0]]>
2115*dc5640d1SHerbert Xue    </doc>
2116*dc5640d1SHerbert Xue  </class>
2117*dc5640d1SHerbert Xue  <!-- end class com.google.inject.ProvisionException -->
2118*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.Scope -->
2119*dc5640d1SHerbert Xue  <interface name="Scope"    abstract="true"
2120*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
2121*dc5640d1SHerbert Xue    deprecated="not deprecated">
2122*dc5640d1SHerbert Xue    <method name="scope" return="com.google.inject.Provider&lt;T&gt;"
2123*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2124*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2125*dc5640d1SHerbert Xue      deprecated="not deprecated">
2126*dc5640d1SHerbert Xue      <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
2127*dc5640d1SHerbert Xue      <param name="unscoped" type="com.google.inject.Provider&lt;T&gt;"/>
2128*dc5640d1SHerbert Xue      <doc>
2129*dc5640d1SHerbert Xue      <![CDATA[Scopes a provider. The returned provider returns objects from this scope.
2130*dc5640d1SHerbert Xue If an object does not exist in this scope, the provider can use the given
2131*dc5640d1SHerbert Xue unscoped provider to retrieve one.
2132*dc5640d1SHerbert Xue
2133*dc5640d1SHerbert Xue <p>Scope implementations are strongly encouraged to override
2134*dc5640d1SHerbert Xue {@link Object#toString} in the returned provider and include the backing
2135*dc5640d1SHerbert Xue provider's {@code toString()} output.
2136*dc5640d1SHerbert Xue
2137*dc5640d1SHerbert Xue @param key binding key
2138*dc5640d1SHerbert Xue @param unscoped locates an instance when one doesn't already exist in this
2139*dc5640d1SHerbert Xue  scope.
2140*dc5640d1SHerbert Xue @return a new provider which only delegates to the given unscoped provider
2141*dc5640d1SHerbert Xue  when an instance of the requested object doesn't already exist in this
2142*dc5640d1SHerbert Xue  scope]]>
2143*dc5640d1SHerbert Xue      </doc>
2144*dc5640d1SHerbert Xue    </method>
2145*dc5640d1SHerbert Xue    <method name="toString" return="java.lang.String"
2146*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2147*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2148*dc5640d1SHerbert Xue      deprecated="not deprecated">
2149*dc5640d1SHerbert Xue      <doc>
2150*dc5640d1SHerbert Xue      <![CDATA[A short but useful description of this scope.  For comparison, the standard
2151*dc5640d1SHerbert Xue scopes that ship with guice use the descriptions
2152*dc5640d1SHerbert Xue {@code "Scopes.SINGLETON"}, {@code "ServletScopes.SESSION"} and
2153*dc5640d1SHerbert Xue {@code "ServletScopes.REQUEST"}.]]>
2154*dc5640d1SHerbert Xue      </doc>
2155*dc5640d1SHerbert Xue    </method>
2156*dc5640d1SHerbert Xue    <doc>
2157*dc5640d1SHerbert Xue    <![CDATA[A scope is a level of visibility that instances provided by Guice may have.
2158*dc5640d1SHerbert Xue By default, an instance created by the {@link Injector} has <i>no scope</i>,
2159*dc5640d1SHerbert Xue meaning it has no state from the framework's perspective -- the
2160*dc5640d1SHerbert Xue {@code Injector} creates it, injects it once into the class that required it,
2161*dc5640d1SHerbert Xue and then immediately forgets it. Associating a scope with a particular
2162*dc5640d1SHerbert Xue binding allows the created instance to be "remembered" and possibly used
2163*dc5640d1SHerbert Xue again for other injections.
2164*dc5640d1SHerbert Xue
2165*dc5640d1SHerbert Xue <p>An example of a scope is {@link Scopes#SINGLETON}.
2166*dc5640d1SHerbert Xue
2167*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
2168*dc5640d1SHerbert Xue    </doc>
2169*dc5640d1SHerbert Xue  </interface>
2170*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.Scope -->
2171*dc5640d1SHerbert Xue  <!-- start class com.google.inject.ScopeAnnotation -->
2172*dc5640d1SHerbert Xue  <class name="ScopeAnnotation"    abstract="true"
2173*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
2174*dc5640d1SHerbert Xue    deprecated="not deprecated">
2175*dc5640d1SHerbert Xue    <implements name="java.lang.annotation.Annotation"/>
2176*dc5640d1SHerbert Xue    <doc>
2177*dc5640d1SHerbert Xue    <![CDATA[Annotates annotations which are used for scoping. Only one such annotation
2178*dc5640d1SHerbert Xue may apply to a single implementation class. You must also annotate scope
2179*dc5640d1SHerbert Xue annotations with {@code @Retention(RUNTIME)}. For example:
2180*dc5640d1SHerbert Xue
2181*dc5640d1SHerbert Xue <pre>
2182*dc5640d1SHerbert Xue   {@code @}Retention(RUNTIME)
2183*dc5640d1SHerbert Xue   {@code @}Target(TYPE)
2184*dc5640d1SHerbert Xue   {@code @}ScopeAnnotation
2185*dc5640d1SHerbert Xue   public {@code @}interface SessionScoped {}
2186*dc5640d1SHerbert Xue </pre>
2187*dc5640d1SHerbert Xue
2188*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
2189*dc5640d1SHerbert Xue    </doc>
2190*dc5640d1SHerbert Xue  </class>
2191*dc5640d1SHerbert Xue  <!-- end class com.google.inject.ScopeAnnotation -->
2192*dc5640d1SHerbert Xue  <!-- start class com.google.inject.Scopes -->
2193*dc5640d1SHerbert Xue  <class name="Scopes" extends="java.lang.Object"
2194*dc5640d1SHerbert Xue    abstract="false"
2195*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
2196*dc5640d1SHerbert Xue    deprecated="not deprecated">
2197*dc5640d1SHerbert Xue    <field name="SINGLETON" type="com.google.inject.Scope"
2198*dc5640d1SHerbert Xue      transient="false" volatile="false"
2199*dc5640d1SHerbert Xue      static="true" final="true" visibility="public"
2200*dc5640d1SHerbert Xue      deprecated="not deprecated">
2201*dc5640d1SHerbert Xue      <doc>
2202*dc5640d1SHerbert Xue      <![CDATA[One instance per {@link Injector}. Also see {@code @}{@link Singleton}.]]>
2203*dc5640d1SHerbert Xue      </doc>
2204*dc5640d1SHerbert Xue    </field>
2205*dc5640d1SHerbert Xue    <field name="NO_SCOPE" type="com.google.inject.Scope"
2206*dc5640d1SHerbert Xue      transient="false" volatile="false"
2207*dc5640d1SHerbert Xue      static="true" final="true" visibility="public"
2208*dc5640d1SHerbert Xue      deprecated="not deprecated">
2209*dc5640d1SHerbert Xue      <doc>
2210*dc5640d1SHerbert Xue      <![CDATA[No scope; the same as not applying any scope at all.  Each time the
2211*dc5640d1SHerbert Xue Injector obtains an instance of an object with "no scope", it injects this
2212*dc5640d1SHerbert Xue instance then immediately forgets it.  When the next request for the same
2213*dc5640d1SHerbert Xue binding arrives it will need to obtain the instance over again.
2214*dc5640d1SHerbert Xue
2215*dc5640d1SHerbert Xue <p>This exists only in case a class has been annotated with a scope
2216*dc5640d1SHerbert Xue annotation such as {@link Singleton @Singleton}, and you need to override
2217*dc5640d1SHerbert Xue this to "no scope" in your binding.
2218*dc5640d1SHerbert Xue
2219*dc5640d1SHerbert Xue @since 2.0]]>
2220*dc5640d1SHerbert Xue      </doc>
2221*dc5640d1SHerbert Xue    </field>
2222*dc5640d1SHerbert Xue    <doc>
2223*dc5640d1SHerbert Xue    <![CDATA[Built-in scope implementations.
2224*dc5640d1SHerbert Xue
2225*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
2226*dc5640d1SHerbert Xue    </doc>
2227*dc5640d1SHerbert Xue  </class>
2228*dc5640d1SHerbert Xue  <!-- end class com.google.inject.Scopes -->
2229*dc5640d1SHerbert Xue  <!-- start class com.google.inject.Singleton -->
2230*dc5640d1SHerbert Xue  <class name="Singleton"    abstract="true"
2231*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
2232*dc5640d1SHerbert Xue    deprecated="not deprecated">
2233*dc5640d1SHerbert Xue    <implements name="java.lang.annotation.Annotation"/>
2234*dc5640d1SHerbert Xue    <doc>
2235*dc5640d1SHerbert Xue    <![CDATA[Apply this to implementation classes when you want only one instance
2236*dc5640d1SHerbert Xue (per {@link Injector}) to be reused for all injections for that binding.
2237*dc5640d1SHerbert Xue
2238*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
2239*dc5640d1SHerbert Xue    </doc>
2240*dc5640d1SHerbert Xue  </class>
2241*dc5640d1SHerbert Xue  <!-- end class com.google.inject.Singleton -->
2242*dc5640d1SHerbert Xue  <!-- start class com.google.inject.Stage -->
2243*dc5640d1SHerbert Xue  <class name="Stage" extends="java.lang.Enum&lt;com.google.inject.Stage&gt;"
2244*dc5640d1SHerbert Xue    abstract="false"
2245*dc5640d1SHerbert Xue    static="false" final="true" visibility="public"
2246*dc5640d1SHerbert Xue    deprecated="not deprecated">
2247*dc5640d1SHerbert Xue    <method name="values" return="com.google.inject.Stage[]"
2248*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2249*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
2250*dc5640d1SHerbert Xue      deprecated="not deprecated">
2251*dc5640d1SHerbert Xue    </method>
2252*dc5640d1SHerbert Xue    <method name="valueOf" return="com.google.inject.Stage"
2253*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2254*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
2255*dc5640d1SHerbert Xue      deprecated="not deprecated">
2256*dc5640d1SHerbert Xue      <param name="name" type="java.lang.String"/>
2257*dc5640d1SHerbert Xue    </method>
2258*dc5640d1SHerbert Xue    <doc>
2259*dc5640d1SHerbert Xue    <![CDATA[The stage we're running in.
2260*dc5640d1SHerbert Xue
2261*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
2262*dc5640d1SHerbert Xue    </doc>
2263*dc5640d1SHerbert Xue  </class>
2264*dc5640d1SHerbert Xue  <!-- end class com.google.inject.Stage -->
2265*dc5640d1SHerbert Xue  <!-- start class com.google.inject.TypeLiteral -->
2266*dc5640d1SHerbert Xue  <class name="TypeLiteral" extends="java.lang.Object"
2267*dc5640d1SHerbert Xue    abstract="false"
2268*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
2269*dc5640d1SHerbert Xue    deprecated="not deprecated">
2270*dc5640d1SHerbert Xue    <constructor name="TypeLiteral"
2271*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
2272*dc5640d1SHerbert Xue      deprecated="not deprecated">
2273*dc5640d1SHerbert Xue      <doc>
2274*dc5640d1SHerbert Xue      <![CDATA[Constructs a new type literal. Derives represented class from type
2275*dc5640d1SHerbert Xue parameter.
2276*dc5640d1SHerbert Xue
2277*dc5640d1SHerbert Xue <p>Clients create an empty anonymous subclass. Doing so embeds the type
2278*dc5640d1SHerbert Xue parameter in the anonymous class's type hierarchy so we can reconstitute it
2279*dc5640d1SHerbert Xue at runtime despite erasure.]]>
2280*dc5640d1SHerbert Xue      </doc>
2281*dc5640d1SHerbert Xue    </constructor>
2282*dc5640d1SHerbert Xue    <method name="getRawType" return="java.lang.Class&lt;? super T&gt;"
2283*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2284*dc5640d1SHerbert Xue      static="false" final="true" visibility="public"
2285*dc5640d1SHerbert Xue      deprecated="not deprecated">
2286*dc5640d1SHerbert Xue      <doc>
2287*dc5640d1SHerbert Xue      <![CDATA[Returns the raw (non-generic) type for this type.
2288*dc5640d1SHerbert Xue
2289*dc5640d1SHerbert Xue @since 2.0]]>
2290*dc5640d1SHerbert Xue      </doc>
2291*dc5640d1SHerbert Xue    </method>
2292*dc5640d1SHerbert Xue    <method name="getType" return="java.lang.reflect.Type"
2293*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2294*dc5640d1SHerbert Xue      static="false" final="true" visibility="public"
2295*dc5640d1SHerbert Xue      deprecated="not deprecated">
2296*dc5640d1SHerbert Xue      <doc>
2297*dc5640d1SHerbert Xue      <![CDATA[Gets underlying {@code Type} instance.]]>
2298*dc5640d1SHerbert Xue      </doc>
2299*dc5640d1SHerbert Xue    </method>
2300*dc5640d1SHerbert Xue    <method name="hashCode" return="int"
2301*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2302*dc5640d1SHerbert Xue      static="false" final="true" visibility="public"
2303*dc5640d1SHerbert Xue      deprecated="not deprecated">
2304*dc5640d1SHerbert Xue    </method>
2305*dc5640d1SHerbert Xue    <method name="equals" return="boolean"
2306*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2307*dc5640d1SHerbert Xue      static="false" final="true" visibility="public"
2308*dc5640d1SHerbert Xue      deprecated="not deprecated">
2309*dc5640d1SHerbert Xue      <param name="o" type="java.lang.Object"/>
2310*dc5640d1SHerbert Xue    </method>
2311*dc5640d1SHerbert Xue    <method name="toString" return="java.lang.String"
2312*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2313*dc5640d1SHerbert Xue      static="false" final="true" visibility="public"
2314*dc5640d1SHerbert Xue      deprecated="not deprecated">
2315*dc5640d1SHerbert Xue    </method>
2316*dc5640d1SHerbert Xue    <method name="get" return="com.google.inject.TypeLiteral&lt;?&gt;"
2317*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2318*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
2319*dc5640d1SHerbert Xue      deprecated="not deprecated">
2320*dc5640d1SHerbert Xue      <param name="type" type="java.lang.reflect.Type"/>
2321*dc5640d1SHerbert Xue      <doc>
2322*dc5640d1SHerbert Xue      <![CDATA[Gets type literal for the given {@code Type} instance.]]>
2323*dc5640d1SHerbert Xue      </doc>
2324*dc5640d1SHerbert Xue    </method>
2325*dc5640d1SHerbert Xue    <method name="get" return="com.google.inject.TypeLiteral&lt;T&gt;"
2326*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2327*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
2328*dc5640d1SHerbert Xue      deprecated="not deprecated">
2329*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
2330*dc5640d1SHerbert Xue      <doc>
2331*dc5640d1SHerbert Xue      <![CDATA[Gets type literal for the given {@code Class} instance.]]>
2332*dc5640d1SHerbert Xue      </doc>
2333*dc5640d1SHerbert Xue    </method>
2334*dc5640d1SHerbert Xue    <method name="getSupertype" return="com.google.inject.TypeLiteral&lt;?&gt;"
2335*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2336*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2337*dc5640d1SHerbert Xue      deprecated="not deprecated">
2338*dc5640d1SHerbert Xue      <param name="supertype" type="java.lang.Class&lt;?&gt;"/>
2339*dc5640d1SHerbert Xue      <doc>
2340*dc5640d1SHerbert Xue      <![CDATA[Returns the generic form of {@code supertype}. For example, if this is {@code
2341*dc5640d1SHerbert Xue ArrayList<String>}, this returns {@code Iterable<String>} given the input {@code
2342*dc5640d1SHerbert Xue Iterable.class}.
2343*dc5640d1SHerbert Xue
2344*dc5640d1SHerbert Xue @param supertype a superclass of, or interface implemented by, this.
2345*dc5640d1SHerbert Xue @since 2.0]]>
2346*dc5640d1SHerbert Xue      </doc>
2347*dc5640d1SHerbert Xue    </method>
2348*dc5640d1SHerbert Xue    <method name="getFieldType" return="com.google.inject.TypeLiteral&lt;?&gt;"
2349*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2350*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2351*dc5640d1SHerbert Xue      deprecated="not deprecated">
2352*dc5640d1SHerbert Xue      <param name="field" type="java.lang.reflect.Field"/>
2353*dc5640d1SHerbert Xue      <doc>
2354*dc5640d1SHerbert Xue      <![CDATA[Returns the resolved generic type of {@code field}.
2355*dc5640d1SHerbert Xue
2356*dc5640d1SHerbert Xue @param field a field defined by this or any superclass.
2357*dc5640d1SHerbert Xue @since 2.0]]>
2358*dc5640d1SHerbert Xue      </doc>
2359*dc5640d1SHerbert Xue    </method>
2360*dc5640d1SHerbert Xue    <method name="getParameterTypes" return="java.util.List&lt;com.google.inject.TypeLiteral&lt;?&gt;&gt;"
2361*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2362*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2363*dc5640d1SHerbert Xue      deprecated="not deprecated">
2364*dc5640d1SHerbert Xue      <param name="methodOrConstructor" type="java.lang.reflect.Member"/>
2365*dc5640d1SHerbert Xue      <doc>
2366*dc5640d1SHerbert Xue      <![CDATA[Returns the resolved generic parameter types of {@code methodOrConstructor}.
2367*dc5640d1SHerbert Xue
2368*dc5640d1SHerbert Xue @param methodOrConstructor a method or constructor defined by this or any supertype.
2369*dc5640d1SHerbert Xue @since 2.0]]>
2370*dc5640d1SHerbert Xue      </doc>
2371*dc5640d1SHerbert Xue    </method>
2372*dc5640d1SHerbert Xue    <method name="getExceptionTypes" return="java.util.List&lt;com.google.inject.TypeLiteral&lt;?&gt;&gt;"
2373*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2374*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2375*dc5640d1SHerbert Xue      deprecated="not deprecated">
2376*dc5640d1SHerbert Xue      <param name="methodOrConstructor" type="java.lang.reflect.Member"/>
2377*dc5640d1SHerbert Xue      <doc>
2378*dc5640d1SHerbert Xue      <![CDATA[Returns the resolved generic exception types thrown by {@code constructor}.
2379*dc5640d1SHerbert Xue
2380*dc5640d1SHerbert Xue @param methodOrConstructor a method or constructor defined by this or any supertype.
2381*dc5640d1SHerbert Xue @since 2.0]]>
2382*dc5640d1SHerbert Xue      </doc>
2383*dc5640d1SHerbert Xue    </method>
2384*dc5640d1SHerbert Xue    <method name="getReturnType" return="com.google.inject.TypeLiteral&lt;?&gt;"
2385*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2386*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2387*dc5640d1SHerbert Xue      deprecated="not deprecated">
2388*dc5640d1SHerbert Xue      <param name="method" type="java.lang.reflect.Method"/>
2389*dc5640d1SHerbert Xue      <doc>
2390*dc5640d1SHerbert Xue      <![CDATA[Returns the resolved generic return type of {@code method}.
2391*dc5640d1SHerbert Xue
2392*dc5640d1SHerbert Xue @param method a method defined by this or any supertype.
2393*dc5640d1SHerbert Xue @since 2.0]]>
2394*dc5640d1SHerbert Xue      </doc>
2395*dc5640d1SHerbert Xue    </method>
2396*dc5640d1SHerbert Xue    <doc>
2397*dc5640d1SHerbert Xue    <![CDATA[Represents a generic type {@code T}. Java doesn't yet provide a way to
2398*dc5640d1SHerbert Xue represent generic types, so this class does. Forces clients to create a
2399*dc5640d1SHerbert Xue subclass of this class which enables retrieval the type information even at
2400*dc5640d1SHerbert Xue runtime.
2401*dc5640d1SHerbert Xue
2402*dc5640d1SHerbert Xue <p>For example, to create a type literal for {@code List<String>}, you can
2403*dc5640d1SHerbert Xue create an empty anonymous inner class:
2404*dc5640d1SHerbert Xue
2405*dc5640d1SHerbert Xue <p>
2406*dc5640d1SHerbert Xue {@code TypeLiteral<List<String>> list = new TypeLiteral<List<String>>() {};}
2407*dc5640d1SHerbert Xue
2408*dc5640d1SHerbert Xue <p>This syntax cannot be used to create type literals that have wildcard
2409*dc5640d1SHerbert Xue parameters, such as {@code Class<?>} or {@code List<? extends CharSequence>}.
2410*dc5640d1SHerbert Xue Such type literals must be constructed programatically, either by {@link
2411*dc5640d1SHerbert Xue Method#getGenericReturnType extracting types from members} or by using the
2412*dc5640d1SHerbert Xue {@link Types} factory class.
2413*dc5640d1SHerbert Xue
2414*dc5640d1SHerbert Xue <p>Along with modeling generic types, this class can resolve type parameters.
2415*dc5640d1SHerbert Xue For example, to figure out what type {@code keySet()} returns on a {@code
2416*dc5640d1SHerbert Xue Map<Integer, String>}, use this code:<pre>   {@code
2417*dc5640d1SHerbert Xue
2418*dc5640d1SHerbert Xue   TypeLiteral<Map<Integer, String>> mapType
2419*dc5640d1SHerbert Xue       = new TypeLiteral<Map<Integer, String>>() {};
2420*dc5640d1SHerbert Xue   TypeLiteral<?> keySetType
2421*dc5640d1SHerbert Xue       = mapType.getReturnType(Map.class.getMethod("keySet"));
2422*dc5640d1SHerbert Xue   System.out.println(keySetType); // prints "Set<Integer>"}</pre>
2423*dc5640d1SHerbert Xue
2424*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)
2425*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]>
2426*dc5640d1SHerbert Xue    </doc>
2427*dc5640d1SHerbert Xue  </class>
2428*dc5640d1SHerbert Xue  <!-- end class com.google.inject.TypeLiteral -->
2429*dc5640d1SHerbert Xue</package>
2430*dc5640d1SHerbert Xue<package name="com.google.inject.assistedinject">
2431*dc5640d1SHerbert Xue  <!-- start class com.google.inject.assistedinject.Assisted -->
2432*dc5640d1SHerbert Xue  <class name="Assisted"    abstract="true"
2433*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
2434*dc5640d1SHerbert Xue    deprecated="not deprecated">
2435*dc5640d1SHerbert Xue    <implements name="java.lang.annotation.Annotation"/>
2436*dc5640d1SHerbert Xue    <doc>
2437*dc5640d1SHerbert Xue    <![CDATA[Annotates an injected parameter or field whose value comes from an argument to a factory method.
2438*dc5640d1SHerbert Xue
2439*dc5640d1SHerbert Xue @author [email protected] (Jerome Mourits)
2440*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]>
2441*dc5640d1SHerbert Xue    </doc>
2442*dc5640d1SHerbert Xue  </class>
2443*dc5640d1SHerbert Xue  <!-- end class com.google.inject.assistedinject.Assisted -->
2444*dc5640d1SHerbert Xue  <!-- start class com.google.inject.assistedinject.AssistedInject -->
2445*dc5640d1SHerbert Xue  <class name="AssistedInject"    abstract="true"
2446*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
2447*dc5640d1SHerbert Xue    deprecated="{@link FactoryProvider} now works better with the standard {@literal @Inject}
2448*dc5640d1SHerbert Xue     annotation. When using that annotation, parameters are matched by name and type rather than
2449*dc5640d1SHerbert Xue     by position. In addition, values that use the standard {@literal @Inject} constructor
2450*dc5640d1SHerbert Xue     annotation are eligible for method interception.">
2451*dc5640d1SHerbert Xue    <implements name="java.lang.annotation.Annotation"/>
2452*dc5640d1SHerbert Xue    <doc>
2453*dc5640d1SHerbert Xue    <![CDATA[<p>Constructors annotated with {@code @AssistedInject} indicate that they can be instantiated by
2454*dc5640d1SHerbert Xue the {@link FactoryProvider}. Each constructor must exactly match one corresponding factory method
2455*dc5640d1SHerbert Xue within the factory interface.
2456*dc5640d1SHerbert Xue
2457*dc5640d1SHerbert Xue <p>Constructor parameters must be either supplied by the factory interface and marked with
2458*dc5640d1SHerbert Xue <code>@Assisted</code>, or they must be injectable.
2459*dc5640d1SHerbert Xue
2460*dc5640d1SHerbert Xue @deprecated {@link FactoryProvider} now works better with the standard {@literal @Inject}
2461*dc5640d1SHerbert Xue     annotation. When using that annotation, parameters are matched by name and type rather than
2462*dc5640d1SHerbert Xue     by position. In addition, values that use the standard {@literal @Inject} constructor
2463*dc5640d1SHerbert Xue     annotation are eligible for method interception.
2464*dc5640d1SHerbert Xue
2465*dc5640d1SHerbert Xue @author [email protected] (Jerome Mourits)
2466*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]>
2467*dc5640d1SHerbert Xue    </doc>
2468*dc5640d1SHerbert Xue  </class>
2469*dc5640d1SHerbert Xue  <!-- end class com.google.inject.assistedinject.AssistedInject -->
2470*dc5640d1SHerbert Xue  <!-- start class com.google.inject.assistedinject.FactoryProvider -->
2471*dc5640d1SHerbert Xue  <class name="FactoryProvider" extends="java.lang.Object"
2472*dc5640d1SHerbert Xue    abstract="false"
2473*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
2474*dc5640d1SHerbert Xue    deprecated="not deprecated">
2475*dc5640d1SHerbert Xue    <implements name="com.google.inject.Provider&lt;F&gt;"/>
2476*dc5640d1SHerbert Xue    <implements name="com.google.inject.spi.HasDependencies"/>
2477*dc5640d1SHerbert Xue    <method name="newFactory" return="com.google.inject.Provider&lt;F&gt;"
2478*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2479*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
2480*dc5640d1SHerbert Xue      deprecated="not deprecated">
2481*dc5640d1SHerbert Xue      <param name="factoryType" type="java.lang.Class&lt;F&gt;"/>
2482*dc5640d1SHerbert Xue      <param name="implementationType" type="java.lang.Class&lt;?&gt;"/>
2483*dc5640d1SHerbert Xue    </method>
2484*dc5640d1SHerbert Xue    <method name="newFactory" return="com.google.inject.Provider&lt;F&gt;"
2485*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2486*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
2487*dc5640d1SHerbert Xue      deprecated="not deprecated">
2488*dc5640d1SHerbert Xue      <param name="factoryType" type="com.google.inject.TypeLiteral&lt;F&gt;"/>
2489*dc5640d1SHerbert Xue      <param name="implementationType" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
2490*dc5640d1SHerbert Xue    </method>
2491*dc5640d1SHerbert Xue    <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
2492*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2493*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2494*dc5640d1SHerbert Xue      deprecated="not deprecated">
2495*dc5640d1SHerbert Xue    </method>
2496*dc5640d1SHerbert Xue    <method name="get" return="F"
2497*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2498*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2499*dc5640d1SHerbert Xue      deprecated="not deprecated">
2500*dc5640d1SHerbert Xue    </method>
2501*dc5640d1SHerbert Xue    <doc>
2502*dc5640d1SHerbert Xue    <![CDATA[Provides a factory that combines the caller's arguments with injector-supplied values to
2503*dc5640d1SHerbert Xue construct objects.
2504*dc5640d1SHerbert Xue
2505*dc5640d1SHerbert Xue <h3>Defining a factory</h3>
2506*dc5640d1SHerbert Xue Create an interface whose methods return the constructed type, or any of its supertypes. The
2507*dc5640d1SHerbert Xue method's parameters are the arguments required to build the constructed type.
2508*dc5640d1SHerbert Xue <pre>public interface PaymentFactory {
2509*dc5640d1SHerbert Xue   Payment create(Date startDate, Money amount);
2510*dc5640d1SHerbert Xue }</pre>
2511*dc5640d1SHerbert Xue You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i>
2512*dc5640d1SHerbert Xue or <i>newPayment</i>.
2513*dc5640d1SHerbert Xue
2514*dc5640d1SHerbert Xue <h3>Creating a type that accepts factory parameters</h3>
2515*dc5640d1SHerbert Xue {@code constructedType} is a concrete class with an {@literal @}{@link Inject}-annotated
2516*dc5640d1SHerbert Xue constructor. In addition to injector-supplied parameters, the constructor should have
2517*dc5640d1SHerbert Xue parameters that match each of the factory method's parameters. Each factory-supplied parameter
2518*dc5640d1SHerbert Xue requires an {@literal @}{@link Assisted} annotation. This serves to document that the parameter
2519*dc5640d1SHerbert Xue is not bound by your application's modules.
2520*dc5640d1SHerbert Xue <pre>public class RealPayment implements Payment {
2521*dc5640d1SHerbert Xue   {@literal @}Inject
2522*dc5640d1SHerbert Xue   public RealPayment(
2523*dc5640d1SHerbert Xue      CreditService creditService,
2524*dc5640d1SHerbert Xue      AuthService authService,
2525*dc5640d1SHerbert Xue      <strong>{@literal @}Assisted Date startDate</strong>,
2526*dc5640d1SHerbert Xue      <strong>{@literal @}Assisted Money amount</strong>) {
2527*dc5640d1SHerbert Xue     ...
2528*dc5640d1SHerbert Xue   }
2529*dc5640d1SHerbert Xue }</pre>
2530*dc5640d1SHerbert Xue Any parameter that permits a null value should also be annotated {@code @Nullable}.
2531*dc5640d1SHerbert Xue
2532*dc5640d1SHerbert Xue <h3>Configuring factories</h3>
2533*dc5640d1SHerbert Xue In your {@link com.google.inject.Module module}, bind the factory interface to the returned
2534*dc5640d1SHerbert Xue factory:
2535*dc5640d1SHerbert Xue <pre>bind(PaymentFactory.class).toProvider(
2536*dc5640d1SHerbert Xue     FactoryProvider.newFactory(PaymentFactory.class, RealPayment.class));</pre>
2537*dc5640d1SHerbert Xue As a side-effect of this binding, Guice will inject the factory to initialize it for use. The
2538*dc5640d1SHerbert Xue factory cannot be used until the injector has been initialized.
2539*dc5640d1SHerbert Xue
2540*dc5640d1SHerbert Xue <h3>Using the factory</h3>
2541*dc5640d1SHerbert Xue Inject your factory into your application classes. When you use the factory, your arguments
2542*dc5640d1SHerbert Xue will be combined with values from the injector to construct an instance.
2543*dc5640d1SHerbert Xue <pre>public class PaymentAction {
2544*dc5640d1SHerbert Xue   {@literal @}Inject private PaymentFactory paymentFactory;
2545*dc5640d1SHerbert Xue
2546*dc5640d1SHerbert Xue   public void doPayment(Money amount) {
2547*dc5640d1SHerbert Xue     Payment payment = paymentFactory.create(new Date(), amount);
2548*dc5640d1SHerbert Xue     payment.apply();
2549*dc5640d1SHerbert Xue   }
2550*dc5640d1SHerbert Xue }</pre>
2551*dc5640d1SHerbert Xue
2552*dc5640d1SHerbert Xue <h3>Making parameter types distinct</h3>
2553*dc5640d1SHerbert Xue The types of the factory method's parameters must be distinct. To use multiple parameters of
2554*dc5640d1SHerbert Xue the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the
2555*dc5640d1SHerbert Xue parameters. The names must be applied to the factory method's parameters:
2556*dc5640d1SHerbert Xue
2557*dc5640d1SHerbert Xue <pre>public interface PaymentFactory {
2558*dc5640d1SHerbert Xue   Payment create(
2559*dc5640d1SHerbert Xue       <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
2560*dc5640d1SHerbert Xue       <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
2561*dc5640d1SHerbert Xue       Money amount);
2562*dc5640d1SHerbert Xue } </pre>
2563*dc5640d1SHerbert Xue ...and to the concrete type's constructor parameters:
2564*dc5640d1SHerbert Xue <pre>public class RealPayment implements Payment {
2565*dc5640d1SHerbert Xue   {@literal @}Inject
2566*dc5640d1SHerbert Xue   public RealPayment(
2567*dc5640d1SHerbert Xue      CreditService creditService,
2568*dc5640d1SHerbert Xue      AuthService authService,
2569*dc5640d1SHerbert Xue      <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
2570*dc5640d1SHerbert Xue      <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
2571*dc5640d1SHerbert Xue      <strong>{@literal @}Assisted</strong> Money amount) {
2572*dc5640d1SHerbert Xue     ...
2573*dc5640d1SHerbert Xue   }
2574*dc5640d1SHerbert Xue }</pre>
2575*dc5640d1SHerbert Xue
2576*dc5640d1SHerbert Xue <h3>Values are created by Guice</h3>
2577*dc5640d1SHerbert Xue Returned factories use child injectors to create values. The values are eligible for method
2578*dc5640d1SHerbert Xue interception. In addition, {@literal @}{@literal Inject} members will be injected before they are
2579*dc5640d1SHerbert Xue returned.
2580*dc5640d1SHerbert Xue
2581*dc5640d1SHerbert Xue <h3>Backwards compatibility using {@literal @}AssistedInject</h3>
2582*dc5640d1SHerbert Xue Instead of the {@literal @}Inject annotation, you may annotate the constructed classes with
2583*dc5640d1SHerbert Xue {@literal @}{@link AssistedInject}. This triggers a limited backwards-compatability mode.
2584*dc5640d1SHerbert Xue
2585*dc5640d1SHerbert Xue <p>Instead of matching factory method arguments to constructor parameters using their names, the
2586*dc5640d1SHerbert Xue <strong>parameters are matched by their order</strong>. The first factory method argument is
2587*dc5640d1SHerbert Xue used for the first {@literal @}Assisted constructor parameter, etc.. Annotation names have no
2588*dc5640d1SHerbert Xue effect.
2589*dc5640d1SHerbert Xue
2590*dc5640d1SHerbert Xue <p>Returned values are <strong>not created by Guice</strong>. These types are not eligible for
2591*dc5640d1SHerbert Xue method interception. They do receive post-construction member injection.
2592*dc5640d1SHerbert Xue
2593*dc5640d1SHerbert Xue @param <F> The factory interface
2594*dc5640d1SHerbert Xue
2595*dc5640d1SHerbert Xue @author [email protected] (Jerome Mourits)
2596*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
2597*dc5640d1SHerbert Xue @author [email protected] (Daniel Martin)]]>
2598*dc5640d1SHerbert Xue    </doc>
2599*dc5640d1SHerbert Xue  </class>
2600*dc5640d1SHerbert Xue  <!-- end class com.google.inject.assistedinject.FactoryProvider -->
2601*dc5640d1SHerbert Xue</package>
2602*dc5640d1SHerbert Xue<package name="com.google.inject.binder">
2603*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.binder.AnnotatedBindingBuilder -->
2604*dc5640d1SHerbert Xue  <interface name="AnnotatedBindingBuilder"    abstract="true"
2605*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
2606*dc5640d1SHerbert Xue    deprecated="not deprecated">
2607*dc5640d1SHerbert Xue    <implements name="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"/>
2608*dc5640d1SHerbert Xue    <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
2609*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2610*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2611*dc5640d1SHerbert Xue      deprecated="not deprecated">
2612*dc5640d1SHerbert Xue      <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
2613*dc5640d1SHerbert Xue      <doc>
2614*dc5640d1SHerbert Xue      <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
2615*dc5640d1SHerbert Xue      </doc>
2616*dc5640d1SHerbert Xue    </method>
2617*dc5640d1SHerbert Xue    <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
2618*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2619*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2620*dc5640d1SHerbert Xue      deprecated="not deprecated">
2621*dc5640d1SHerbert Xue      <param name="annotation" type="java.lang.annotation.Annotation"/>
2622*dc5640d1SHerbert Xue      <doc>
2623*dc5640d1SHerbert Xue      <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
2624*dc5640d1SHerbert Xue      </doc>
2625*dc5640d1SHerbert Xue    </method>
2626*dc5640d1SHerbert Xue    <doc>
2627*dc5640d1SHerbert Xue    <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
2628*dc5640d1SHerbert Xue
2629*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
2630*dc5640d1SHerbert Xue    </doc>
2631*dc5640d1SHerbert Xue  </interface>
2632*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.binder.AnnotatedBindingBuilder -->
2633*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.binder.AnnotatedConstantBindingBuilder -->
2634*dc5640d1SHerbert Xue  <interface name="AnnotatedConstantBindingBuilder"    abstract="true"
2635*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
2636*dc5640d1SHerbert Xue    deprecated="not deprecated">
2637*dc5640d1SHerbert Xue    <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder"
2638*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2639*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2640*dc5640d1SHerbert Xue      deprecated="not deprecated">
2641*dc5640d1SHerbert Xue      <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
2642*dc5640d1SHerbert Xue      <doc>
2643*dc5640d1SHerbert Xue      <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
2644*dc5640d1SHerbert Xue      </doc>
2645*dc5640d1SHerbert Xue    </method>
2646*dc5640d1SHerbert Xue    <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder"
2647*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2648*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2649*dc5640d1SHerbert Xue      deprecated="not deprecated">
2650*dc5640d1SHerbert Xue      <param name="annotation" type="java.lang.annotation.Annotation"/>
2651*dc5640d1SHerbert Xue      <doc>
2652*dc5640d1SHerbert Xue      <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
2653*dc5640d1SHerbert Xue      </doc>
2654*dc5640d1SHerbert Xue    </method>
2655*dc5640d1SHerbert Xue    <doc>
2656*dc5640d1SHerbert Xue    <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
2657*dc5640d1SHerbert Xue
2658*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
2659*dc5640d1SHerbert Xue    </doc>
2660*dc5640d1SHerbert Xue  </interface>
2661*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.binder.AnnotatedConstantBindingBuilder -->
2662*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.binder.AnnotatedElementBuilder -->
2663*dc5640d1SHerbert Xue  <interface name="AnnotatedElementBuilder"    abstract="true"
2664*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
2665*dc5640d1SHerbert Xue    deprecated="not deprecated">
2666*dc5640d1SHerbert Xue    <method name="annotatedWith"
2667*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2668*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2669*dc5640d1SHerbert Xue      deprecated="not deprecated">
2670*dc5640d1SHerbert Xue      <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
2671*dc5640d1SHerbert Xue      <doc>
2672*dc5640d1SHerbert Xue      <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
2673*dc5640d1SHerbert Xue      </doc>
2674*dc5640d1SHerbert Xue    </method>
2675*dc5640d1SHerbert Xue    <method name="annotatedWith"
2676*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2677*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2678*dc5640d1SHerbert Xue      deprecated="not deprecated">
2679*dc5640d1SHerbert Xue      <param name="annotation" type="java.lang.annotation.Annotation"/>
2680*dc5640d1SHerbert Xue      <doc>
2681*dc5640d1SHerbert Xue      <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
2682*dc5640d1SHerbert Xue      </doc>
2683*dc5640d1SHerbert Xue    </method>
2684*dc5640d1SHerbert Xue    <doc>
2685*dc5640d1SHerbert Xue    <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
2686*dc5640d1SHerbert Xue
2687*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
2688*dc5640d1SHerbert Xue @since 2.0]]>
2689*dc5640d1SHerbert Xue    </doc>
2690*dc5640d1SHerbert Xue  </interface>
2691*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.binder.AnnotatedElementBuilder -->
2692*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.binder.ConstantBindingBuilder -->
2693*dc5640d1SHerbert Xue  <interface name="ConstantBindingBuilder"    abstract="true"
2694*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
2695*dc5640d1SHerbert Xue    deprecated="not deprecated">
2696*dc5640d1SHerbert Xue    <method name="to"
2697*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2698*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2699*dc5640d1SHerbert Xue      deprecated="not deprecated">
2700*dc5640d1SHerbert Xue      <param name="value" type="java.lang.String"/>
2701*dc5640d1SHerbert Xue      <doc>
2702*dc5640d1SHerbert Xue      <![CDATA[Binds constant to the given value.]]>
2703*dc5640d1SHerbert Xue      </doc>
2704*dc5640d1SHerbert Xue    </method>
2705*dc5640d1SHerbert Xue    <method name="to"
2706*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2707*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2708*dc5640d1SHerbert Xue      deprecated="not deprecated">
2709*dc5640d1SHerbert Xue      <param name="value" type="int"/>
2710*dc5640d1SHerbert Xue      <doc>
2711*dc5640d1SHerbert Xue      <![CDATA[Binds constant to the given value.]]>
2712*dc5640d1SHerbert Xue      </doc>
2713*dc5640d1SHerbert Xue    </method>
2714*dc5640d1SHerbert Xue    <method name="to"
2715*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2716*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2717*dc5640d1SHerbert Xue      deprecated="not deprecated">
2718*dc5640d1SHerbert Xue      <param name="value" type="long"/>
2719*dc5640d1SHerbert Xue      <doc>
2720*dc5640d1SHerbert Xue      <![CDATA[Binds constant to the given value.]]>
2721*dc5640d1SHerbert Xue      </doc>
2722*dc5640d1SHerbert Xue    </method>
2723*dc5640d1SHerbert Xue    <method name="to"
2724*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2725*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2726*dc5640d1SHerbert Xue      deprecated="not deprecated">
2727*dc5640d1SHerbert Xue      <param name="value" type="boolean"/>
2728*dc5640d1SHerbert Xue      <doc>
2729*dc5640d1SHerbert Xue      <![CDATA[Binds constant to the given value.]]>
2730*dc5640d1SHerbert Xue      </doc>
2731*dc5640d1SHerbert Xue    </method>
2732*dc5640d1SHerbert Xue    <method name="to"
2733*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2734*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2735*dc5640d1SHerbert Xue      deprecated="not deprecated">
2736*dc5640d1SHerbert Xue      <param name="value" type="double"/>
2737*dc5640d1SHerbert Xue      <doc>
2738*dc5640d1SHerbert Xue      <![CDATA[Binds constant to the given value.]]>
2739*dc5640d1SHerbert Xue      </doc>
2740*dc5640d1SHerbert Xue    </method>
2741*dc5640d1SHerbert Xue    <method name="to"
2742*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2743*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2744*dc5640d1SHerbert Xue      deprecated="not deprecated">
2745*dc5640d1SHerbert Xue      <param name="value" type="float"/>
2746*dc5640d1SHerbert Xue      <doc>
2747*dc5640d1SHerbert Xue      <![CDATA[Binds constant to the given value.]]>
2748*dc5640d1SHerbert Xue      </doc>
2749*dc5640d1SHerbert Xue    </method>
2750*dc5640d1SHerbert Xue    <method name="to"
2751*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2752*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2753*dc5640d1SHerbert Xue      deprecated="not deprecated">
2754*dc5640d1SHerbert Xue      <param name="value" type="short"/>
2755*dc5640d1SHerbert Xue      <doc>
2756*dc5640d1SHerbert Xue      <![CDATA[Binds constant to the given value.]]>
2757*dc5640d1SHerbert Xue      </doc>
2758*dc5640d1SHerbert Xue    </method>
2759*dc5640d1SHerbert Xue    <method name="to"
2760*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2761*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2762*dc5640d1SHerbert Xue      deprecated="not deprecated">
2763*dc5640d1SHerbert Xue      <param name="value" type="char"/>
2764*dc5640d1SHerbert Xue      <doc>
2765*dc5640d1SHerbert Xue      <![CDATA[Binds constant to the given value.]]>
2766*dc5640d1SHerbert Xue      </doc>
2767*dc5640d1SHerbert Xue    </method>
2768*dc5640d1SHerbert Xue    <method name="to"
2769*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2770*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2771*dc5640d1SHerbert Xue      deprecated="not deprecated">
2772*dc5640d1SHerbert Xue      <param name="value" type="java.lang.Class&lt;?&gt;"/>
2773*dc5640d1SHerbert Xue      <doc>
2774*dc5640d1SHerbert Xue      <![CDATA[Binds constant to the given value.]]>
2775*dc5640d1SHerbert Xue      </doc>
2776*dc5640d1SHerbert Xue    </method>
2777*dc5640d1SHerbert Xue    <method name="to"
2778*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2779*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2780*dc5640d1SHerbert Xue      deprecated="not deprecated">
2781*dc5640d1SHerbert Xue      <param name="value" type="E extends java.lang.Enum&lt;E&gt;"/>
2782*dc5640d1SHerbert Xue      <doc>
2783*dc5640d1SHerbert Xue      <![CDATA[Binds constant to the given value.]]>
2784*dc5640d1SHerbert Xue      </doc>
2785*dc5640d1SHerbert Xue    </method>
2786*dc5640d1SHerbert Xue    <doc>
2787*dc5640d1SHerbert Xue    <![CDATA[Binds to a constant value.]]>
2788*dc5640d1SHerbert Xue    </doc>
2789*dc5640d1SHerbert Xue  </interface>
2790*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.binder.ConstantBindingBuilder -->
2791*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.binder.LinkedBindingBuilder -->
2792*dc5640d1SHerbert Xue  <interface name="LinkedBindingBuilder"    abstract="true"
2793*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
2794*dc5640d1SHerbert Xue    deprecated="not deprecated">
2795*dc5640d1SHerbert Xue    <implements name="com.google.inject.binder.ScopedBindingBuilder"/>
2796*dc5640d1SHerbert Xue    <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
2797*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2798*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2799*dc5640d1SHerbert Xue      deprecated="not deprecated">
2800*dc5640d1SHerbert Xue      <param name="implementation" type="java.lang.Class&lt;? extends T&gt;"/>
2801*dc5640d1SHerbert Xue      <doc>
2802*dc5640d1SHerbert Xue      <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
2803*dc5640d1SHerbert Xue      </doc>
2804*dc5640d1SHerbert Xue    </method>
2805*dc5640d1SHerbert Xue    <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
2806*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2807*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2808*dc5640d1SHerbert Xue      deprecated="not deprecated">
2809*dc5640d1SHerbert Xue      <param name="implementation" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
2810*dc5640d1SHerbert Xue      <doc>
2811*dc5640d1SHerbert Xue      <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
2812*dc5640d1SHerbert Xue      </doc>
2813*dc5640d1SHerbert Xue    </method>
2814*dc5640d1SHerbert Xue    <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
2815*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2816*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2817*dc5640d1SHerbert Xue      deprecated="not deprecated">
2818*dc5640d1SHerbert Xue      <param name="targetKey" type="com.google.inject.Key&lt;? extends T&gt;"/>
2819*dc5640d1SHerbert Xue      <doc>
2820*dc5640d1SHerbert Xue      <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
2821*dc5640d1SHerbert Xue      </doc>
2822*dc5640d1SHerbert Xue    </method>
2823*dc5640d1SHerbert Xue    <method name="toInstance"
2824*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2825*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2826*dc5640d1SHerbert Xue      deprecated="not deprecated">
2827*dc5640d1SHerbert Xue      <param name="instance" type="T"/>
2828*dc5640d1SHerbert Xue      <doc>
2829*dc5640d1SHerbert Xue      <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
2830*dc5640d1SHerbert Xue
2831*dc5640d1SHerbert Xue @see com.google.inject.Injector#injectMembers]]>
2832*dc5640d1SHerbert Xue      </doc>
2833*dc5640d1SHerbert Xue    </method>
2834*dc5640d1SHerbert Xue    <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
2835*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2836*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2837*dc5640d1SHerbert Xue      deprecated="not deprecated">
2838*dc5640d1SHerbert Xue      <param name="provider" type="com.google.inject.Provider&lt;? extends T&gt;"/>
2839*dc5640d1SHerbert Xue      <doc>
2840*dc5640d1SHerbert Xue      <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
2841*dc5640d1SHerbert Xue
2842*dc5640d1SHerbert Xue @see com.google.inject.Injector#injectMembers]]>
2843*dc5640d1SHerbert Xue      </doc>
2844*dc5640d1SHerbert Xue    </method>
2845*dc5640d1SHerbert Xue    <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
2846*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2847*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2848*dc5640d1SHerbert Xue      deprecated="not deprecated">
2849*dc5640d1SHerbert Xue      <param name="providerType" type="java.lang.Class&lt;? extends com.google.inject.Provider&lt;? extends T&gt;&gt;"/>
2850*dc5640d1SHerbert Xue      <doc>
2851*dc5640d1SHerbert Xue      <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
2852*dc5640d1SHerbert Xue      </doc>
2853*dc5640d1SHerbert Xue    </method>
2854*dc5640d1SHerbert Xue    <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
2855*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2856*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2857*dc5640d1SHerbert Xue      deprecated="not deprecated">
2858*dc5640d1SHerbert Xue      <param name="providerKey" type="com.google.inject.Key&lt;? extends com.google.inject.Provider&lt;? extends T&gt;&gt;"/>
2859*dc5640d1SHerbert Xue      <doc>
2860*dc5640d1SHerbert Xue      <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
2861*dc5640d1SHerbert Xue      </doc>
2862*dc5640d1SHerbert Xue    </method>
2863*dc5640d1SHerbert Xue    <doc>
2864*dc5640d1SHerbert Xue    <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
2865*dc5640d1SHerbert Xue
2866*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
2867*dc5640d1SHerbert Xue    </doc>
2868*dc5640d1SHerbert Xue  </interface>
2869*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.binder.LinkedBindingBuilder -->
2870*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.binder.ScopedBindingBuilder -->
2871*dc5640d1SHerbert Xue  <interface name="ScopedBindingBuilder"    abstract="true"
2872*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
2873*dc5640d1SHerbert Xue    deprecated="not deprecated">
2874*dc5640d1SHerbert Xue    <method name="in"
2875*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2876*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2877*dc5640d1SHerbert Xue      deprecated="not deprecated">
2878*dc5640d1SHerbert Xue      <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
2879*dc5640d1SHerbert Xue      <doc>
2880*dc5640d1SHerbert Xue      <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
2881*dc5640d1SHerbert Xue      </doc>
2882*dc5640d1SHerbert Xue    </method>
2883*dc5640d1SHerbert Xue    <method name="in"
2884*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2885*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2886*dc5640d1SHerbert Xue      deprecated="not deprecated">
2887*dc5640d1SHerbert Xue      <param name="scope" type="com.google.inject.Scope"/>
2888*dc5640d1SHerbert Xue      <doc>
2889*dc5640d1SHerbert Xue      <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
2890*dc5640d1SHerbert Xue      </doc>
2891*dc5640d1SHerbert Xue    </method>
2892*dc5640d1SHerbert Xue    <method name="asEagerSingleton"
2893*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2894*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2895*dc5640d1SHerbert Xue      deprecated="not deprecated">
2896*dc5640d1SHerbert Xue      <doc>
2897*dc5640d1SHerbert Xue      <![CDATA[Instructs the {@link com.google.inject.Injector} to eagerly initialize this
2898*dc5640d1SHerbert Xue singleton-scoped binding upon creation. Useful for application
2899*dc5640d1SHerbert Xue initialization logic.  See the EDSL examples at
2900*dc5640d1SHerbert Xue {@link com.google.inject.Binder}.]]>
2901*dc5640d1SHerbert Xue      </doc>
2902*dc5640d1SHerbert Xue    </method>
2903*dc5640d1SHerbert Xue    <doc>
2904*dc5640d1SHerbert Xue    <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
2905*dc5640d1SHerbert Xue
2906*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
2907*dc5640d1SHerbert Xue    </doc>
2908*dc5640d1SHerbert Xue  </interface>
2909*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.binder.ScopedBindingBuilder -->
2910*dc5640d1SHerbert Xue</package>
2911*dc5640d1SHerbert Xue<package name="com.google.inject.jndi">
2912*dc5640d1SHerbert Xue  <!-- start class com.google.inject.jndi.JndiIntegration -->
2913*dc5640d1SHerbert Xue  <class name="JndiIntegration" extends="java.lang.Object"
2914*dc5640d1SHerbert Xue    abstract="false"
2915*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
2916*dc5640d1SHerbert Xue    deprecated="not deprecated">
2917*dc5640d1SHerbert Xue    <method name="fromJndi" return="com.google.inject.Provider&lt;T&gt;"
2918*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2919*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
2920*dc5640d1SHerbert Xue      deprecated="not deprecated">
2921*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
2922*dc5640d1SHerbert Xue      <param name="name" type="java.lang.String"/>
2923*dc5640d1SHerbert Xue      <doc>
2924*dc5640d1SHerbert Xue      <![CDATA[Creates a provider which looks up objects in JNDI using the given name.
2925*dc5640d1SHerbert Xue Example usage:
2926*dc5640d1SHerbert Xue
2927*dc5640d1SHerbert Xue <pre>
2928*dc5640d1SHerbert Xue bind(DataSource.class).toProvider(fromJndi(DataSource.class, "java:..."));
2929*dc5640d1SHerbert Xue </pre>]]>
2930*dc5640d1SHerbert Xue      </doc>
2931*dc5640d1SHerbert Xue    </method>
2932*dc5640d1SHerbert Xue    <doc>
2933*dc5640d1SHerbert Xue    <![CDATA[Integrates Guice with JNDI. Requires a binding to
2934*dc5640d1SHerbert Xue {@link javax.naming.Context}.
2935*dc5640d1SHerbert Xue
2936*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
2937*dc5640d1SHerbert Xue    </doc>
2938*dc5640d1SHerbert Xue  </class>
2939*dc5640d1SHerbert Xue  <!-- end class com.google.inject.jndi.JndiIntegration -->
2940*dc5640d1SHerbert Xue</package>
2941*dc5640d1SHerbert Xue<package name="com.google.inject.matcher">
2942*dc5640d1SHerbert Xue  <!-- start class com.google.inject.matcher.AbstractMatcher -->
2943*dc5640d1SHerbert Xue  <class name="AbstractMatcher" extends="java.lang.Object"
2944*dc5640d1SHerbert Xue    abstract="true"
2945*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
2946*dc5640d1SHerbert Xue    deprecated="not deprecated">
2947*dc5640d1SHerbert Xue    <implements name="com.google.inject.matcher.Matcher&lt;T&gt;"/>
2948*dc5640d1SHerbert Xue    <constructor name="AbstractMatcher"
2949*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2950*dc5640d1SHerbert Xue      deprecated="not deprecated">
2951*dc5640d1SHerbert Xue    </constructor>
2952*dc5640d1SHerbert Xue    <method name="and" return="com.google.inject.matcher.Matcher&lt;T&gt;"
2953*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2954*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2955*dc5640d1SHerbert Xue      deprecated="not deprecated">
2956*dc5640d1SHerbert Xue      <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
2957*dc5640d1SHerbert Xue    </method>
2958*dc5640d1SHerbert Xue    <method name="or" return="com.google.inject.matcher.Matcher&lt;T&gt;"
2959*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2960*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2961*dc5640d1SHerbert Xue      deprecated="not deprecated">
2962*dc5640d1SHerbert Xue      <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
2963*dc5640d1SHerbert Xue    </method>
2964*dc5640d1SHerbert Xue    <doc>
2965*dc5640d1SHerbert Xue    <![CDATA[Implements {@code and()} and {@code or()}.
2966*dc5640d1SHerbert Xue
2967*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
2968*dc5640d1SHerbert Xue    </doc>
2969*dc5640d1SHerbert Xue  </class>
2970*dc5640d1SHerbert Xue  <!-- end class com.google.inject.matcher.AbstractMatcher -->
2971*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.matcher.Matcher -->
2972*dc5640d1SHerbert Xue  <interface name="Matcher"    abstract="true"
2973*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
2974*dc5640d1SHerbert Xue    deprecated="not deprecated">
2975*dc5640d1SHerbert Xue    <method name="matches" return="boolean"
2976*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2977*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2978*dc5640d1SHerbert Xue      deprecated="not deprecated">
2979*dc5640d1SHerbert Xue      <param name="t" type="T"/>
2980*dc5640d1SHerbert Xue      <doc>
2981*dc5640d1SHerbert Xue      <![CDATA[Returns {@code true} if this matches {@code t}, {@code false} otherwise.]]>
2982*dc5640d1SHerbert Xue      </doc>
2983*dc5640d1SHerbert Xue    </method>
2984*dc5640d1SHerbert Xue    <method name="and" return="com.google.inject.matcher.Matcher&lt;T&gt;"
2985*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2986*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2987*dc5640d1SHerbert Xue      deprecated="not deprecated">
2988*dc5640d1SHerbert Xue      <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
2989*dc5640d1SHerbert Xue      <doc>
2990*dc5640d1SHerbert Xue      <![CDATA[Returns a new matcher which returns {@code true} if both this and the
2991*dc5640d1SHerbert Xue given matcher return {@code true}.]]>
2992*dc5640d1SHerbert Xue      </doc>
2993*dc5640d1SHerbert Xue    </method>
2994*dc5640d1SHerbert Xue    <method name="or" return="com.google.inject.matcher.Matcher&lt;T&gt;"
2995*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
2996*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
2997*dc5640d1SHerbert Xue      deprecated="not deprecated">
2998*dc5640d1SHerbert Xue      <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
2999*dc5640d1SHerbert Xue      <doc>
3000*dc5640d1SHerbert Xue      <![CDATA[Returns a new matcher which returns {@code true} if either this or the
3001*dc5640d1SHerbert Xue given matcher return {@code true}.]]>
3002*dc5640d1SHerbert Xue      </doc>
3003*dc5640d1SHerbert Xue    </method>
3004*dc5640d1SHerbert Xue    <doc>
3005*dc5640d1SHerbert Xue    <![CDATA[Returns {@code true} or {@code false} for a given input.
3006*dc5640d1SHerbert Xue
3007*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
3008*dc5640d1SHerbert Xue    </doc>
3009*dc5640d1SHerbert Xue  </interface>
3010*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.matcher.Matcher -->
3011*dc5640d1SHerbert Xue  <!-- start class com.google.inject.matcher.Matchers -->
3012*dc5640d1SHerbert Xue  <class name="Matchers" extends="java.lang.Object"
3013*dc5640d1SHerbert Xue    abstract="false"
3014*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
3015*dc5640d1SHerbert Xue    deprecated="not deprecated">
3016*dc5640d1SHerbert Xue    <method name="any" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
3017*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3018*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3019*dc5640d1SHerbert Xue      deprecated="not deprecated">
3020*dc5640d1SHerbert Xue      <doc>
3021*dc5640d1SHerbert Xue      <![CDATA[Returns a matcher which matches any input.]]>
3022*dc5640d1SHerbert Xue      </doc>
3023*dc5640d1SHerbert Xue    </method>
3024*dc5640d1SHerbert Xue    <method name="not" return="com.google.inject.matcher.Matcher&lt;T&gt;"
3025*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3026*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3027*dc5640d1SHerbert Xue      deprecated="not deprecated">
3028*dc5640d1SHerbert Xue      <param name="p" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
3029*dc5640d1SHerbert Xue      <doc>
3030*dc5640d1SHerbert Xue      <![CDATA[Inverts the given matcher.]]>
3031*dc5640d1SHerbert Xue      </doc>
3032*dc5640d1SHerbert Xue    </method>
3033*dc5640d1SHerbert Xue    <method name="annotatedWith" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.AnnotatedElement&gt;"
3034*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3035*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3036*dc5640d1SHerbert Xue      deprecated="not deprecated">
3037*dc5640d1SHerbert Xue      <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
3038*dc5640d1SHerbert Xue      <doc>
3039*dc5640d1SHerbert Xue      <![CDATA[Returns a matcher which matches elements (methods, classes, etc.)
3040*dc5640d1SHerbert Xue with a given annotation.]]>
3041*dc5640d1SHerbert Xue      </doc>
3042*dc5640d1SHerbert Xue    </method>
3043*dc5640d1SHerbert Xue    <method name="annotatedWith" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.AnnotatedElement&gt;"
3044*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3045*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3046*dc5640d1SHerbert Xue      deprecated="not deprecated">
3047*dc5640d1SHerbert Xue      <param name="annotation" type="java.lang.annotation.Annotation"/>
3048*dc5640d1SHerbert Xue      <doc>
3049*dc5640d1SHerbert Xue      <![CDATA[Returns a matcher which matches elements (methods, classes, etc.)
3050*dc5640d1SHerbert Xue with a given annotation.]]>
3051*dc5640d1SHerbert Xue      </doc>
3052*dc5640d1SHerbert Xue    </method>
3053*dc5640d1SHerbert Xue    <method name="subclassesOf" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
3054*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3055*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3056*dc5640d1SHerbert Xue      deprecated="not deprecated">
3057*dc5640d1SHerbert Xue      <param name="superclass" type="java.lang.Class&lt;?&gt;"/>
3058*dc5640d1SHerbert Xue      <doc>
3059*dc5640d1SHerbert Xue      <![CDATA[Returns a matcher which matches subclasses of the given type (as well as
3060*dc5640d1SHerbert Xue the given type).]]>
3061*dc5640d1SHerbert Xue      </doc>
3062*dc5640d1SHerbert Xue    </method>
3063*dc5640d1SHerbert Xue    <method name="only" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
3064*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3065*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3066*dc5640d1SHerbert Xue      deprecated="not deprecated">
3067*dc5640d1SHerbert Xue      <param name="value" type="java.lang.Object"/>
3068*dc5640d1SHerbert Xue      <doc>
3069*dc5640d1SHerbert Xue      <![CDATA[Returns a matcher which matches objects equal to the given object.]]>
3070*dc5640d1SHerbert Xue      </doc>
3071*dc5640d1SHerbert Xue    </method>
3072*dc5640d1SHerbert Xue    <method name="identicalTo" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
3073*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3074*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3075*dc5640d1SHerbert Xue      deprecated="not deprecated">
3076*dc5640d1SHerbert Xue      <param name="value" type="java.lang.Object"/>
3077*dc5640d1SHerbert Xue      <doc>
3078*dc5640d1SHerbert Xue      <![CDATA[Returns a matcher which matches only the given object.]]>
3079*dc5640d1SHerbert Xue      </doc>
3080*dc5640d1SHerbert Xue    </method>
3081*dc5640d1SHerbert Xue    <method name="inPackage" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
3082*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3083*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3084*dc5640d1SHerbert Xue      deprecated="not deprecated">
3085*dc5640d1SHerbert Xue      <param name="targetPackage" type="java.lang.Package"/>
3086*dc5640d1SHerbert Xue      <doc>
3087*dc5640d1SHerbert Xue      <![CDATA[Returns a matcher which matches classes in the given package. Packages are specific to their
3088*dc5640d1SHerbert Xue classloader, so classes with the same package name may not have the same package at runtime.]]>
3089*dc5640d1SHerbert Xue      </doc>
3090*dc5640d1SHerbert Xue    </method>
3091*dc5640d1SHerbert Xue    <method name="inSubpackage" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
3092*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3093*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3094*dc5640d1SHerbert Xue      deprecated="not deprecated">
3095*dc5640d1SHerbert Xue      <param name="targetPackageName" type="java.lang.String"/>
3096*dc5640d1SHerbert Xue      <doc>
3097*dc5640d1SHerbert Xue      <![CDATA[Returns a matcher which matches classes in the given package and its subpackages. Unlike
3098*dc5640d1SHerbert Xue {@link #inPackage(Package) inPackage()}, this matches classes from any classloader.
3099*dc5640d1SHerbert Xue
3100*dc5640d1SHerbert Xue @since 2.0]]>
3101*dc5640d1SHerbert Xue      </doc>
3102*dc5640d1SHerbert Xue    </method>
3103*dc5640d1SHerbert Xue    <method name="returns" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.Method&gt;"
3104*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3105*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3106*dc5640d1SHerbert Xue      deprecated="not deprecated">
3107*dc5640d1SHerbert Xue      <param name="returnType" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
3108*dc5640d1SHerbert Xue      <doc>
3109*dc5640d1SHerbert Xue      <![CDATA[Returns a matcher which matches methods with matching return types.]]>
3110*dc5640d1SHerbert Xue      </doc>
3111*dc5640d1SHerbert Xue    </method>
3112*dc5640d1SHerbert Xue    <doc>
3113*dc5640d1SHerbert Xue    <![CDATA[Matcher implementations. Supports matching classes and methods.
3114*dc5640d1SHerbert Xue
3115*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
3116*dc5640d1SHerbert Xue    </doc>
3117*dc5640d1SHerbert Xue  </class>
3118*dc5640d1SHerbert Xue  <!-- end class com.google.inject.matcher.Matchers -->
3119*dc5640d1SHerbert Xue</package>
3120*dc5640d1SHerbert Xue<package name="com.google.inject.multibindings">
3121*dc5640d1SHerbert Xue  <!-- start class com.google.inject.multibindings.MapBinder -->
3122*dc5640d1SHerbert Xue  <class name="MapBinder" extends="java.lang.Object"
3123*dc5640d1SHerbert Xue    abstract="true"
3124*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
3125*dc5640d1SHerbert Xue    deprecated="not deprecated">
3126*dc5640d1SHerbert Xue    <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
3127*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3128*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3129*dc5640d1SHerbert Xue      deprecated="not deprecated">
3130*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
3131*dc5640d1SHerbert Xue      <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
3132*dc5640d1SHerbert Xue      <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
3133*dc5640d1SHerbert Xue      <doc>
3134*dc5640d1SHerbert Xue      <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
3135*dc5640d1SHerbert Xue {@link Map} that is itself bound with no binding annotation.]]>
3136*dc5640d1SHerbert Xue      </doc>
3137*dc5640d1SHerbert Xue    </method>
3138*dc5640d1SHerbert Xue    <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
3139*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3140*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3141*dc5640d1SHerbert Xue      deprecated="not deprecated">
3142*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
3143*dc5640d1SHerbert Xue      <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
3144*dc5640d1SHerbert Xue      <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
3145*dc5640d1SHerbert Xue      <doc>
3146*dc5640d1SHerbert Xue      <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
3147*dc5640d1SHerbert Xue {@link Map} that is itself bound with no binding annotation.]]>
3148*dc5640d1SHerbert Xue      </doc>
3149*dc5640d1SHerbert Xue    </method>
3150*dc5640d1SHerbert Xue    <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
3151*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3152*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3153*dc5640d1SHerbert Xue      deprecated="not deprecated">
3154*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
3155*dc5640d1SHerbert Xue      <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
3156*dc5640d1SHerbert Xue      <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
3157*dc5640d1SHerbert Xue      <param name="annotation" type="java.lang.annotation.Annotation"/>
3158*dc5640d1SHerbert Xue      <doc>
3159*dc5640d1SHerbert Xue      <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
3160*dc5640d1SHerbert Xue {@link Map} that is itself bound with {@code annotation}.]]>
3161*dc5640d1SHerbert Xue      </doc>
3162*dc5640d1SHerbert Xue    </method>
3163*dc5640d1SHerbert Xue    <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
3164*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3165*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3166*dc5640d1SHerbert Xue      deprecated="not deprecated">
3167*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
3168*dc5640d1SHerbert Xue      <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
3169*dc5640d1SHerbert Xue      <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
3170*dc5640d1SHerbert Xue      <param name="annotation" type="java.lang.annotation.Annotation"/>
3171*dc5640d1SHerbert Xue      <doc>
3172*dc5640d1SHerbert Xue      <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
3173*dc5640d1SHerbert Xue {@link Map} that is itself bound with {@code annotation}.]]>
3174*dc5640d1SHerbert Xue      </doc>
3175*dc5640d1SHerbert Xue    </method>
3176*dc5640d1SHerbert Xue    <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
3177*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3178*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3179*dc5640d1SHerbert Xue      deprecated="not deprecated">
3180*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
3181*dc5640d1SHerbert Xue      <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
3182*dc5640d1SHerbert Xue      <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
3183*dc5640d1SHerbert Xue      <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
3184*dc5640d1SHerbert Xue      <doc>
3185*dc5640d1SHerbert Xue      <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
3186*dc5640d1SHerbert Xue {@link Map} that is itself bound with {@code annotationType}.]]>
3187*dc5640d1SHerbert Xue      </doc>
3188*dc5640d1SHerbert Xue    </method>
3189*dc5640d1SHerbert Xue    <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
3190*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3191*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3192*dc5640d1SHerbert Xue      deprecated="not deprecated">
3193*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
3194*dc5640d1SHerbert Xue      <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
3195*dc5640d1SHerbert Xue      <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
3196*dc5640d1SHerbert Xue      <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
3197*dc5640d1SHerbert Xue      <doc>
3198*dc5640d1SHerbert Xue      <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
3199*dc5640d1SHerbert Xue {@link Map} that is itself bound with {@code annotationType}.]]>
3200*dc5640d1SHerbert Xue      </doc>
3201*dc5640d1SHerbert Xue    </method>
3202*dc5640d1SHerbert Xue    <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder&lt;V&gt;"
3203*dc5640d1SHerbert Xue      abstract="true" native="false" synchronized="false"
3204*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3205*dc5640d1SHerbert Xue      deprecated="not deprecated">
3206*dc5640d1SHerbert Xue      <param name="key" type="K"/>
3207*dc5640d1SHerbert Xue      <doc>
3208*dc5640d1SHerbert Xue      <![CDATA[Returns a binding builder used to add a new entry in the map. Each
3209*dc5640d1SHerbert Xue key must be distinct (and non-null). Bound providers will be evaluated each
3210*dc5640d1SHerbert Xue time the map is injected.
3211*dc5640d1SHerbert Xue
3212*dc5640d1SHerbert Xue <p>It is an error to call this method without also calling one of the
3213*dc5640d1SHerbert Xue {@code to} methods on the returned binding builder.
3214*dc5640d1SHerbert Xue
3215*dc5640d1SHerbert Xue <p>Scoping elements independently is supported. Use the {@code in} method
3216*dc5640d1SHerbert Xue to specify a binding scope.]]>
3217*dc5640d1SHerbert Xue      </doc>
3218*dc5640d1SHerbert Xue    </method>
3219*dc5640d1SHerbert Xue    <doc>
3220*dc5640d1SHerbert Xue    <![CDATA[An API to bind multiple map entries separately, only to later inject them as
3221*dc5640d1SHerbert Xue a complete map. MapBinder is intended for use in your application's module:
3222*dc5640d1SHerbert Xue <pre><code>
3223*dc5640d1SHerbert Xue public class SnacksModule extends AbstractModule {
3224*dc5640d1SHerbert Xue   protected void configure() {
3225*dc5640d1SHerbert Xue     MapBinder&lt;String, Snack&gt; mapbinder
3226*dc5640d1SHerbert Xue         = MapBinder.newMapBinder(binder(), String.class, Snack.class);
3227*dc5640d1SHerbert Xue     mapbinder.addBinding("twix").toInstance(new Twix());
3228*dc5640d1SHerbert Xue     mapbinder.addBinding("snickers").toProvider(SnickersProvider.class);
3229*dc5640d1SHerbert Xue     mapbinder.addBinding("skittles").to(Skittles.class);
3230*dc5640d1SHerbert Xue   }
3231*dc5640d1SHerbert Xue }</code></pre>
3232*dc5640d1SHerbert Xue
3233*dc5640d1SHerbert Xue <p>With this binding, a {@link Map}{@code <String, Snack>} can now be
3234*dc5640d1SHerbert Xue injected:
3235*dc5640d1SHerbert Xue <pre><code>
3236*dc5640d1SHerbert Xue class SnackMachine {
3237*dc5640d1SHerbert Xue   {@literal @}Inject
3238*dc5640d1SHerbert Xue   public SnackMachine(Map&lt;String, Snack&gt; snacks) { ... }
3239*dc5640d1SHerbert Xue }</code></pre>
3240*dc5640d1SHerbert Xue
3241*dc5640d1SHerbert Xue <p>In addition to binding {@code Map<K, V>}, a mapbinder will also bind
3242*dc5640d1SHerbert Xue {@code Map<K, Provider<V>>} for lazy value provision:
3243*dc5640d1SHerbert Xue <pre><code>
3244*dc5640d1SHerbert Xue class SnackMachine {
3245*dc5640d1SHerbert Xue   {@literal @}Inject
3246*dc5640d1SHerbert Xue   public SnackMachine(Map&lt;String, Provider&lt;Snack&gt;&gt; snackProviders) { ... }
3247*dc5640d1SHerbert Xue }</code></pre>
3248*dc5640d1SHerbert Xue
3249*dc5640d1SHerbert Xue <p>Creating mapbindings from different modules is supported. For example, it
3250*dc5640d1SHerbert Xue is okay to have both {@code CandyModule} and {@code ChipsModule} both
3251*dc5640d1SHerbert Xue create their own {@code MapBinder<String, Snack>}, and to each contribute
3252*dc5640d1SHerbert Xue bindings to the snacks map. When that map is injected, it will contain
3253*dc5640d1SHerbert Xue entries from both modules.
3254*dc5640d1SHerbert Xue
3255*dc5640d1SHerbert Xue <p>Values are resolved at map injection time. If a value is bound to a
3256*dc5640d1SHerbert Xue provider, that provider's get method will be called each time the map is
3257*dc5640d1SHerbert Xue injected (unless the binding is also scoped, or a map of providers is injected).
3258*dc5640d1SHerbert Xue
3259*dc5640d1SHerbert Xue <p>Annotations are used to create different maps of the same key/value
3260*dc5640d1SHerbert Xue type. Each distinct annotation gets its own independent map.
3261*dc5640d1SHerbert Xue
3262*dc5640d1SHerbert Xue <p><strong>Keys must be distinct.</strong> If the same key is bound more than
3263*dc5640d1SHerbert Xue once, map injection will fail.
3264*dc5640d1SHerbert Xue
3265*dc5640d1SHerbert Xue <p><strong>Keys must be non-null.</strong> {@code addBinding(null)} will
3266*dc5640d1SHerbert Xue throw an unchecked exception.
3267*dc5640d1SHerbert Xue
3268*dc5640d1SHerbert Xue <p><strong>Values must be non-null to use map injection.</strong> If any
3269*dc5640d1SHerbert Xue value is null, map injection will fail (although injecting a map of providers
3270*dc5640d1SHerbert Xue will not).
3271*dc5640d1SHerbert Xue
3272*dc5640d1SHerbert Xue @author [email protected] (David P. Baker)]]>
3273*dc5640d1SHerbert Xue    </doc>
3274*dc5640d1SHerbert Xue  </class>
3275*dc5640d1SHerbert Xue  <!-- end class com.google.inject.multibindings.MapBinder -->
3276*dc5640d1SHerbert Xue  <!-- start class com.google.inject.multibindings.Multibinder -->
3277*dc5640d1SHerbert Xue  <class name="Multibinder" extends="java.lang.Object"
3278*dc5640d1SHerbert Xue    abstract="true"
3279*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
3280*dc5640d1SHerbert Xue    deprecated="not deprecated">
3281*dc5640d1SHerbert Xue    <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
3282*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3283*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3284*dc5640d1SHerbert Xue      deprecated="not deprecated">
3285*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
3286*dc5640d1SHerbert Xue      <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
3287*dc5640d1SHerbert Xue      <doc>
3288*dc5640d1SHerbert Xue      <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
3289*dc5640d1SHerbert Xue itself bound with no binding annotation.]]>
3290*dc5640d1SHerbert Xue      </doc>
3291*dc5640d1SHerbert Xue    </method>
3292*dc5640d1SHerbert Xue    <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
3293*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3294*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3295*dc5640d1SHerbert Xue      deprecated="not deprecated">
3296*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
3297*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
3298*dc5640d1SHerbert Xue      <doc>
3299*dc5640d1SHerbert Xue      <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
3300*dc5640d1SHerbert Xue itself bound with no binding annotation.]]>
3301*dc5640d1SHerbert Xue      </doc>
3302*dc5640d1SHerbert Xue    </method>
3303*dc5640d1SHerbert Xue    <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
3304*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3305*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3306*dc5640d1SHerbert Xue      deprecated="not deprecated">
3307*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
3308*dc5640d1SHerbert Xue      <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
3309*dc5640d1SHerbert Xue      <param name="annotation" type="java.lang.annotation.Annotation"/>
3310*dc5640d1SHerbert Xue      <doc>
3311*dc5640d1SHerbert Xue      <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
3312*dc5640d1SHerbert Xue itself bound with {@code annotation}.]]>
3313*dc5640d1SHerbert Xue      </doc>
3314*dc5640d1SHerbert Xue    </method>
3315*dc5640d1SHerbert Xue    <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
3316*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3317*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3318*dc5640d1SHerbert Xue      deprecated="not deprecated">
3319*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
3320*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
3321*dc5640d1SHerbert Xue      <param name="annotation" type="java.lang.annotation.Annotation"/>
3322*dc5640d1SHerbert Xue      <doc>
3323*dc5640d1SHerbert Xue      <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
3324*dc5640d1SHerbert Xue itself bound with {@code annotation}.]]>
3325*dc5640d1SHerbert Xue      </doc>
3326*dc5640d1SHerbert Xue    </method>
3327*dc5640d1SHerbert Xue    <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
3328*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3329*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3330*dc5640d1SHerbert Xue      deprecated="not deprecated">
3331*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
3332*dc5640d1SHerbert Xue      <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
3333*dc5640d1SHerbert Xue      <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
3334*dc5640d1SHerbert Xue      <doc>
3335*dc5640d1SHerbert Xue      <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
3336*dc5640d1SHerbert Xue itself bound with {@code annotationType}.]]>
3337*dc5640d1SHerbert Xue      </doc>
3338*dc5640d1SHerbert Xue    </method>
3339*dc5640d1SHerbert Xue    <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
3340*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3341*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3342*dc5640d1SHerbert Xue      deprecated="not deprecated">
3343*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
3344*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
3345*dc5640d1SHerbert Xue      <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
3346*dc5640d1SHerbert Xue      <doc>
3347*dc5640d1SHerbert Xue      <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
3348*dc5640d1SHerbert Xue itself bound with {@code annotationType}.]]>
3349*dc5640d1SHerbert Xue      </doc>
3350*dc5640d1SHerbert Xue    </method>
3351*dc5640d1SHerbert Xue    <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
3352*dc5640d1SHerbert Xue      abstract="true" native="false" synchronized="false"
3353*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3354*dc5640d1SHerbert Xue      deprecated="not deprecated">
3355*dc5640d1SHerbert Xue      <doc>
3356*dc5640d1SHerbert Xue      <![CDATA[Returns a binding builder used to add a new element in the set. Each
3357*dc5640d1SHerbert Xue bound element must have a distinct value. Bound providers will be
3358*dc5640d1SHerbert Xue evaluated each time the set is injected.
3359*dc5640d1SHerbert Xue
3360*dc5640d1SHerbert Xue <p>It is an error to call this method without also calling one of the
3361*dc5640d1SHerbert Xue {@code to} methods on the returned binding builder.
3362*dc5640d1SHerbert Xue
3363*dc5640d1SHerbert Xue <p>Scoping elements independently is supported. Use the {@code in} method
3364*dc5640d1SHerbert Xue to specify a binding scope.]]>
3365*dc5640d1SHerbert Xue      </doc>
3366*dc5640d1SHerbert Xue    </method>
3367*dc5640d1SHerbert Xue    <doc>
3368*dc5640d1SHerbert Xue    <![CDATA[An API to bind multiple values separately, only to later inject them as a
3369*dc5640d1SHerbert Xue complete collection. Multibinder is intended for use in your application's
3370*dc5640d1SHerbert Xue module:
3371*dc5640d1SHerbert Xue <pre><code>
3372*dc5640d1SHerbert Xue public class SnacksModule extends AbstractModule {
3373*dc5640d1SHerbert Xue   protected void configure() {
3374*dc5640d1SHerbert Xue     Multibinder&lt;Snack&gt; multibinder
3375*dc5640d1SHerbert Xue         = Multibinder.newSetBinder(binder(), Snack.class);
3376*dc5640d1SHerbert Xue     multibinder.addBinding().toInstance(new Twix());
3377*dc5640d1SHerbert Xue     multibinder.addBinding().toProvider(SnickersProvider.class);
3378*dc5640d1SHerbert Xue     multibinder.addBinding().to(Skittles.class);
3379*dc5640d1SHerbert Xue   }
3380*dc5640d1SHerbert Xue }</code></pre>
3381*dc5640d1SHerbert Xue
3382*dc5640d1SHerbert Xue <p>With this binding, a {@link Set}{@code <Snack>} can now be injected:
3383*dc5640d1SHerbert Xue <pre><code>
3384*dc5640d1SHerbert Xue class SnackMachine {
3385*dc5640d1SHerbert Xue   {@literal @}Inject
3386*dc5640d1SHerbert Xue   public SnackMachine(Set&lt;Snack&gt; snacks) { ... }
3387*dc5640d1SHerbert Xue }</code></pre>
3388*dc5640d1SHerbert Xue
3389*dc5640d1SHerbert Xue <p>Create multibindings from different modules is supported. For example, it
3390*dc5640d1SHerbert Xue is okay to have both {@code CandyModule} and {@code ChipsModule} to both
3391*dc5640d1SHerbert Xue create their own {@code Multibinder<Snack>}, and to each contribute bindings
3392*dc5640d1SHerbert Xue to the set of snacks. When that set is injected, it will contain elements
3393*dc5640d1SHerbert Xue from both modules.
3394*dc5640d1SHerbert Xue
3395*dc5640d1SHerbert Xue <p>Elements are resolved at set injection time. If an element is bound to a
3396*dc5640d1SHerbert Xue provider, that provider's get method will be called each time the set is
3397*dc5640d1SHerbert Xue injected (unless the binding is also scoped).
3398*dc5640d1SHerbert Xue
3399*dc5640d1SHerbert Xue <p>Annotations are be used to create different sets of the same element
3400*dc5640d1SHerbert Xue type. Each distinct annotation gets its own independent collection of
3401*dc5640d1SHerbert Xue elements.
3402*dc5640d1SHerbert Xue
3403*dc5640d1SHerbert Xue <p><strong>Elements must be distinct.</strong> If multiple bound elements
3404*dc5640d1SHerbert Xue have the same value, set injection will fail.
3405*dc5640d1SHerbert Xue
3406*dc5640d1SHerbert Xue <p><strong>Elements must be non-null.</strong> If any set element is null,
3407*dc5640d1SHerbert Xue set injection will fail.
3408*dc5640d1SHerbert Xue
3409*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]>
3410*dc5640d1SHerbert Xue    </doc>
3411*dc5640d1SHerbert Xue  </class>
3412*dc5640d1SHerbert Xue  <!-- end class com.google.inject.multibindings.Multibinder -->
3413*dc5640d1SHerbert Xue</package>
3414*dc5640d1SHerbert Xue<package name="com.google.inject.name">
3415*dc5640d1SHerbert Xue  <!-- start class com.google.inject.name.Named -->
3416*dc5640d1SHerbert Xue  <class name="Named"    abstract="true"
3417*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
3418*dc5640d1SHerbert Xue    deprecated="not deprecated">
3419*dc5640d1SHerbert Xue    <implements name="java.lang.annotation.Annotation"/>
3420*dc5640d1SHerbert Xue    <doc>
3421*dc5640d1SHerbert Xue    <![CDATA[Annotates named things.
3422*dc5640d1SHerbert Xue
3423*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
3424*dc5640d1SHerbert Xue    </doc>
3425*dc5640d1SHerbert Xue  </class>
3426*dc5640d1SHerbert Xue  <!-- end class com.google.inject.name.Named -->
3427*dc5640d1SHerbert Xue  <!-- start class com.google.inject.name.Names -->
3428*dc5640d1SHerbert Xue  <class name="Names" extends="java.lang.Object"
3429*dc5640d1SHerbert Xue    abstract="false"
3430*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
3431*dc5640d1SHerbert Xue    deprecated="not deprecated">
3432*dc5640d1SHerbert Xue    <method name="named" return="com.google.inject.name.Named"
3433*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3434*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3435*dc5640d1SHerbert Xue      deprecated="not deprecated">
3436*dc5640d1SHerbert Xue      <param name="name" type="java.lang.String"/>
3437*dc5640d1SHerbert Xue      <doc>
3438*dc5640d1SHerbert Xue      <![CDATA[Creates a {@link Named} annotation with {@code name} as the value.]]>
3439*dc5640d1SHerbert Xue      </doc>
3440*dc5640d1SHerbert Xue    </method>
3441*dc5640d1SHerbert Xue    <method name="bindProperties"
3442*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3443*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3444*dc5640d1SHerbert Xue      deprecated="not deprecated">
3445*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
3446*dc5640d1SHerbert Xue      <param name="properties" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
3447*dc5640d1SHerbert Xue      <doc>
3448*dc5640d1SHerbert Xue      <![CDATA[Creates a constant binding to {@code @Named(key)} for each entry in
3449*dc5640d1SHerbert Xue {@code properties}.]]>
3450*dc5640d1SHerbert Xue      </doc>
3451*dc5640d1SHerbert Xue    </method>
3452*dc5640d1SHerbert Xue    <method name="bindProperties"
3453*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3454*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
3455*dc5640d1SHerbert Xue      deprecated="not deprecated">
3456*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
3457*dc5640d1SHerbert Xue      <param name="properties" type="java.util.Properties"/>
3458*dc5640d1SHerbert Xue      <doc>
3459*dc5640d1SHerbert Xue      <![CDATA[Creates a constant binding to {@code @Named(key)} for each property. This
3460*dc5640d1SHerbert Xue method binds all properties including those inherited from
3461*dc5640d1SHerbert Xue {@link Properties#defaults defaults}.]]>
3462*dc5640d1SHerbert Xue      </doc>
3463*dc5640d1SHerbert Xue    </method>
3464*dc5640d1SHerbert Xue    <doc>
3465*dc5640d1SHerbert Xue    <![CDATA[Utility methods for use with {@code @}{@link Named}.
3466*dc5640d1SHerbert Xue
3467*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
3468*dc5640d1SHerbert Xue    </doc>
3469*dc5640d1SHerbert Xue  </class>
3470*dc5640d1SHerbert Xue  <!-- end class com.google.inject.name.Names -->
3471*dc5640d1SHerbert Xue</package>
3472*dc5640d1SHerbert Xue<package name="com.google.inject.servlet">
3473*dc5640d1SHerbert Xue  <!-- start class com.google.inject.servlet.GuiceFilter -->
3474*dc5640d1SHerbert Xue  <class name="GuiceFilter" extends="java.lang.Object"
3475*dc5640d1SHerbert Xue    abstract="false"
3476*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
3477*dc5640d1SHerbert Xue    deprecated="not deprecated">
3478*dc5640d1SHerbert Xue    <constructor name="GuiceFilter"
3479*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3480*dc5640d1SHerbert Xue      deprecated="not deprecated">
3481*dc5640d1SHerbert Xue    </constructor>
3482*dc5640d1SHerbert Xue    <method name="doFilter"
3483*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3484*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3485*dc5640d1SHerbert Xue      deprecated="not deprecated">
3486*dc5640d1SHerbert Xue      <param name="servletRequest" type="ServletRequest"/>
3487*dc5640d1SHerbert Xue      <param name="servletResponse" type="ServletResponse"/>
3488*dc5640d1SHerbert Xue      <param name="filterChain" type="FilterChain"/>
3489*dc5640d1SHerbert Xue      <exception name="IOException" type="java.io.IOException"/>
3490*dc5640d1SHerbert Xue      <exception name="ServletException" type="ServletException"/>
3491*dc5640d1SHerbert Xue    </method>
3492*dc5640d1SHerbert Xue    <method name="init"
3493*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3494*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3495*dc5640d1SHerbert Xue      deprecated="not deprecated">
3496*dc5640d1SHerbert Xue      <param name="filterConfig" type="FilterConfig"/>
3497*dc5640d1SHerbert Xue      <exception name="ServletException" type="ServletException"/>
3498*dc5640d1SHerbert Xue    </method>
3499*dc5640d1SHerbert Xue    <method name="destroy"
3500*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3501*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3502*dc5640d1SHerbert Xue      deprecated="not deprecated">
3503*dc5640d1SHerbert Xue    </method>
3504*dc5640d1SHerbert Xue    <doc>
3505*dc5640d1SHerbert Xue    <![CDATA[<p>
3506*dc5640d1SHerbert Xue Apply this filter in web.xml above all other filters (typically), to all requests where you plan
3507*dc5640d1SHerbert Xue  to use servlet scopes. This is also needed in order to dispatch requests to injectable filters
3508*dc5640d1SHerbert Xue  and servlets:
3509*dc5640d1SHerbert Xue  <pre>
3510*dc5640d1SHerbert Xue  &lt;filter&gt;
3511*dc5640d1SHerbert Xue    &lt;filter-name&gt;guiceFilter&lt;/filter-name&gt;
3512*dc5640d1SHerbert Xue    &lt;filter-class&gt;<b>com.google.inject.servlet.GuiceFilter</b>&lt;/filter-class&gt;
3513*dc5640d1SHerbert Xue  &lt;/filter&gt;
3514*dc5640d1SHerbert Xue
3515*dc5640d1SHerbert Xue  &lt;filter-mapping&gt;
3516*dc5640d1SHerbert Xue    &lt;filter-name&gt;guiceFilter&lt;/filter-name&gt;
3517*dc5640d1SHerbert Xue    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
3518*dc5640d1SHerbert Xue  &lt;/filter-mapping&gt;
3519*dc5640d1SHerbert Xue  </pre>
3520*dc5640d1SHerbert Xue
3521*dc5640d1SHerbert Xue This filter must appear before every filter that makes use of Guice injection or servlet
3522*dc5640d1SHerbert Xue scopes functionality. Typically, you will only register this filter in web.xml and register
3523*dc5640d1SHerbert Xue any other filters (and servlets) using a {@link ServletModule}.
3524*dc5640d1SHerbert Xue
3525*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)
3526*dc5640d1SHerbert Xue @author [email protected] (Dhanji R. Prasanna)]]>
3527*dc5640d1SHerbert Xue    </doc>
3528*dc5640d1SHerbert Xue  </class>
3529*dc5640d1SHerbert Xue  <!-- end class com.google.inject.servlet.GuiceFilter -->
3530*dc5640d1SHerbert Xue  <!-- start class com.google.inject.servlet.GuiceServletContextListener -->
3531*dc5640d1SHerbert Xue  <class name="GuiceServletContextListener" extends="java.lang.Object"
3532*dc5640d1SHerbert Xue    abstract="true"
3533*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
3534*dc5640d1SHerbert Xue    deprecated="not deprecated">
3535*dc5640d1SHerbert Xue    <constructor name="GuiceServletContextListener"
3536*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3537*dc5640d1SHerbert Xue      deprecated="not deprecated">
3538*dc5640d1SHerbert Xue    </constructor>
3539*dc5640d1SHerbert Xue    <method name="contextInitialized"
3540*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3541*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3542*dc5640d1SHerbert Xue      deprecated="not deprecated">
3543*dc5640d1SHerbert Xue      <param name="servletContextEvent" type="ServletContextEvent"/>
3544*dc5640d1SHerbert Xue    </method>
3545*dc5640d1SHerbert Xue    <method name="contextDestroyed"
3546*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3547*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3548*dc5640d1SHerbert Xue      deprecated="not deprecated">
3549*dc5640d1SHerbert Xue      <param name="servletContextEvent" type="ServletContextEvent"/>
3550*dc5640d1SHerbert Xue    </method>
3551*dc5640d1SHerbert Xue    <method name="getInjector" return="com.google.inject.Injector"
3552*dc5640d1SHerbert Xue      abstract="true" native="false" synchronized="false"
3553*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
3554*dc5640d1SHerbert Xue      deprecated="not deprecated">
3555*dc5640d1SHerbert Xue      <doc>
3556*dc5640d1SHerbert Xue      <![CDATA[Override this method to create (or otherwise obtain a reference to) your
3557*dc5640d1SHerbert Xue injector.]]>
3558*dc5640d1SHerbert Xue      </doc>
3559*dc5640d1SHerbert Xue    </method>
3560*dc5640d1SHerbert Xue    <doc>
3561*dc5640d1SHerbert Xue    <![CDATA[As of Guice 2.0 you can still use (your subclasses of) {@code GuiceServletContextListener}
3562*dc5640d1SHerbert Xue class as a logical place to create and configure your injector. This will ensure the injector
3563*dc5640d1SHerbert Xue is created when the web application is deployed.
3564*dc5640d1SHerbert Xue
3565*dc5640d1SHerbert Xue @author Kevin Bourrillion ([email protected])
3566*dc5640d1SHerbert Xue @since 2.0]]>
3567*dc5640d1SHerbert Xue    </doc>
3568*dc5640d1SHerbert Xue  </class>
3569*dc5640d1SHerbert Xue  <!-- end class com.google.inject.servlet.GuiceServletContextListener -->
3570*dc5640d1SHerbert Xue  <!-- start class com.google.inject.servlet.RequestParameters -->
3571*dc5640d1SHerbert Xue  <class name="RequestParameters"    abstract="true"
3572*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
3573*dc5640d1SHerbert Xue    deprecated="not deprecated">
3574*dc5640d1SHerbert Xue    <implements name="java.lang.annotation.Annotation"/>
3575*dc5640d1SHerbert Xue    <doc>
3576*dc5640d1SHerbert Xue    <![CDATA[Apply this to field or parameters of type {@code Map<String, String[]>}
3577*dc5640d1SHerbert Xue when you want the HTTP request parameter map to be injected.
3578*dc5640d1SHerbert Xue
3579*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
3580*dc5640d1SHerbert Xue    </doc>
3581*dc5640d1SHerbert Xue  </class>
3582*dc5640d1SHerbert Xue  <!-- end class com.google.inject.servlet.RequestParameters -->
3583*dc5640d1SHerbert Xue  <!-- start class com.google.inject.servlet.RequestScoped -->
3584*dc5640d1SHerbert Xue  <class name="RequestScoped"    abstract="true"
3585*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
3586*dc5640d1SHerbert Xue    deprecated="not deprecated">
3587*dc5640d1SHerbert Xue    <implements name="java.lang.annotation.Annotation"/>
3588*dc5640d1SHerbert Xue    <doc>
3589*dc5640d1SHerbert Xue    <![CDATA[Apply this to implementation classes when you want one instance per request.
3590*dc5640d1SHerbert Xue
3591*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
3592*dc5640d1SHerbert Xue    </doc>
3593*dc5640d1SHerbert Xue  </class>
3594*dc5640d1SHerbert Xue  <!-- end class com.google.inject.servlet.RequestScoped -->
3595*dc5640d1SHerbert Xue  <!-- start class com.google.inject.servlet.ServletModule -->
3596*dc5640d1SHerbert Xue  <class name="ServletModule" extends="com.google.inject.AbstractModule"
3597*dc5640d1SHerbert Xue    abstract="false"
3598*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
3599*dc5640d1SHerbert Xue    deprecated="not deprecated">
3600*dc5640d1SHerbert Xue    <constructor name="ServletModule"
3601*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3602*dc5640d1SHerbert Xue      deprecated="not deprecated">
3603*dc5640d1SHerbert Xue    </constructor>
3604*dc5640d1SHerbert Xue    <method name="configure"
3605*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3606*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
3607*dc5640d1SHerbert Xue      deprecated="not deprecated">
3608*dc5640d1SHerbert Xue    </method>
3609*dc5640d1SHerbert Xue    <method name="configureServlets"
3610*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3611*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
3612*dc5640d1SHerbert Xue      deprecated="not deprecated">
3613*dc5640d1SHerbert Xue      <doc>
3614*dc5640d1SHerbert Xue      <![CDATA[<h3>Servlet Mapping EDSL</h3>
3615*dc5640d1SHerbert Xue
3616*dc5640d1SHerbert Xue <p> Part of the EDSL builder language for configuring servlets
3617*dc5640d1SHerbert Xue and filters with guice-servlet. Think of this as an in-code replacement for web.xml.
3618*dc5640d1SHerbert Xue Filters and servlets are configured here using simple java method calls. Here is a typical
3619*dc5640d1SHerbert Xue example of registering a filter when creating your Guice injector:
3620*dc5640d1SHerbert Xue
3621*dc5640d1SHerbert Xue <pre>
3622*dc5640d1SHerbert Xue   Guice.createInjector(..., new ServletModule() {
3623*dc5640d1SHerbert Xue
3624*dc5640d1SHerbert Xue     {@literal @}Override
3625*dc5640d1SHerbert Xue     protected void configureServlets() {
3626*dc5640d1SHerbert Xue       <b>serve("*.html").with(MyServlet.class)</b>
3627*dc5640d1SHerbert Xue     }
3628*dc5640d1SHerbert Xue   }
3629*dc5640d1SHerbert Xue </pre>
3630*dc5640d1SHerbert Xue
3631*dc5640d1SHerbert Xue This registers a servlet (subclass of {@code HttpServlet}) called {@code MyServlet} to service
3632*dc5640d1SHerbert Xue any web pages ending in {@code .html}. You can also use a path-style syntax to register
3633*dc5640d1SHerbert Xue servlets:
3634*dc5640d1SHerbert Xue
3635*dc5640d1SHerbert Xue <pre>
3636*dc5640d1SHerbert Xue       <b>serve("/my/*").with(MyServlet.class)</b>
3637*dc5640d1SHerbert Xue </pre>
3638*dc5640d1SHerbert Xue
3639*dc5640d1SHerbert Xue Every servlet (or filter) is required to be a singleton. If you cannot annotate the class
3640*dc5640d1SHerbert Xue directly, you should add a separate {@code bind(..).in(Singleton.class)} rule elsewhere in
3641*dc5640d1SHerbert Xue your module. Mapping a servlet that is bound under any other scope is an error.
3642*dc5640d1SHerbert Xue
3643*dc5640d1SHerbert Xue <p>
3644*dc5640d1SHerbert Xue <h4>Dispatch Order</h4>
3645*dc5640d1SHerbert Xue You are free to register as many servlets and filters as you like this way. They will
3646*dc5640d1SHerbert Xue be compared and dispatched in the order in which the filter methods are called:
3647*dc5640d1SHerbert Xue
3648*dc5640d1SHerbert Xue <pre>
3649*dc5640d1SHerbert Xue
3650*dc5640d1SHerbert Xue   Guice.createInjector(..., new ServletModule() {
3651*dc5640d1SHerbert Xue
3652*dc5640d1SHerbert Xue     {@literal @}Override
3653*dc5640d1SHerbert Xue     protected void configureServlets() {
3654*dc5640d1SHerbert Xue       filter("/*").through(MyFilter.class);
3655*dc5640d1SHerbert Xue       filter("*.css").through(MyCssFilter.class);
3656*dc5640d1SHerbert Xue       // etc..
3657*dc5640d1SHerbert Xue
3658*dc5640d1SHerbert Xue       serve("*.html").with(MyServlet.class);
3659*dc5640d1SHerbert Xue       serve("/my/*").with(MyServlet.class);
3660*dc5640d1SHerbert Xue       // etc..
3661*dc5640d1SHerbert Xue      }
3662*dc5640d1SHerbert Xue    }
3663*dc5640d1SHerbert Xue </pre>
3664*dc5640d1SHerbert Xue This will traverse down the list of rules in lexical order. For example, a url
3665*dc5640d1SHerbert Xue  "{@code /my/file.js}" (after it runs through the matching filters) will first
3666*dc5640d1SHerbert Xue  be compared against the servlet mapping:
3667*dc5640d1SHerbert Xue
3668*dc5640d1SHerbert Xue <pre>
3669*dc5640d1SHerbert Xue       serve("*.html").with(MyServlet.class);
3670*dc5640d1SHerbert Xue </pre>
3671*dc5640d1SHerbert Xue And failing that, it will descend to the next servlet mapping:
3672*dc5640d1SHerbert Xue
3673*dc5640d1SHerbert Xue <pre>
3674*dc5640d1SHerbert Xue       serve("/my/*").with(MyServlet.class);
3675*dc5640d1SHerbert Xue </pre>
3676*dc5640d1SHerbert Xue
3677*dc5640d1SHerbert Xue Since this rule matches, Guice Servlet will dispatch to {@code MyServlet}. These
3678*dc5640d1SHerbert Xue two mapping rules can also be written in more compact form using varargs syntax:
3679*dc5640d1SHerbert Xue
3680*dc5640d1SHerbert Xue <pre>
3681*dc5640d1SHerbert Xue       serve(<b>"*.html", "/my/*"</b>).with(MyServlet.class);
3682*dc5640d1SHerbert Xue </pre>
3683*dc5640d1SHerbert Xue
3684*dc5640d1SHerbert Xue This way you can map several URI patterns to the same servlet. A similar syntax is
3685*dc5640d1SHerbert Xue also available for filter mappings.
3686*dc5640d1SHerbert Xue
3687*dc5640d1SHerbert Xue <p>
3688*dc5640d1SHerbert Xue <h4>Regular Expressions</h4>
3689*dc5640d1SHerbert Xue You can also map servlets (or filters) to URIs using regular expressions:
3690*dc5640d1SHerbert Xue <pre>
3691*dc5640d1SHerbert Xue    <b>serveRegex("(.)*ajax(.)*").with(MyAjaxServlet.class)</b>
3692*dc5640d1SHerbert Xue </pre>
3693*dc5640d1SHerbert Xue
3694*dc5640d1SHerbert Xue This will map any URI containing the text "ajax" in it to {@code MyAjaxServlet}. Such as:
3695*dc5640d1SHerbert Xue <ul>
3696*dc5640d1SHerbert Xue <li>http://www.google.com/ajax.html</li>
3697*dc5640d1SHerbert Xue <li>http://www.google.com/content/ajax/index</li>
3698*dc5640d1SHerbert Xue <li>http://www.google.com/it/is_totally_ajaxian</li>
3699*dc5640d1SHerbert Xue </ul>
3700*dc5640d1SHerbert Xue
3701*dc5640d1SHerbert Xue
3702*dc5640d1SHerbert Xue <h3>Initialization Parameters</h3>
3703*dc5640d1SHerbert Xue
3704*dc5640d1SHerbert Xue Servlets (and filters) allow you to pass in init params
3705*dc5640d1SHerbert Xue using the {@code <init-param>} tag in web.xml. You can similarly pass in parameters to
3706*dc5640d1SHerbert Xue Servlets and filters registered in Guice-servlet using a {@link java.util.Map} of parameter
3707*dc5640d1SHerbert Xue name/value pairs. For example, to initialize {@code MyServlet} with two parameters
3708*dc5640d1SHerbert Xue ({@code name="Dhanji", site="google.com"}) you could write:
3709*dc5640d1SHerbert Xue
3710*dc5640d1SHerbert Xue <pre>
3711*dc5640d1SHerbert Xue  Map&lt;String, String&gt; params = new HashMap&lt;String, String&gt;();
3712*dc5640d1SHerbert Xue  params.put("name", "Dhanji");
3713*dc5640d1SHerbert Xue  params.put("site", "google.com");
3714*dc5640d1SHerbert Xue
3715*dc5640d1SHerbert Xue  ...
3716*dc5640d1SHerbert Xue      serve("/*").with(MyServlet.class, <b>params</b>)
3717*dc5640d1SHerbert Xue </pre>
3718*dc5640d1SHerbert Xue
3719*dc5640d1SHerbert Xue <p>
3720*dc5640d1SHerbert Xue <h3>Binding Keys</h3>
3721*dc5640d1SHerbert Xue
3722*dc5640d1SHerbert Xue You can also bind keys rather than classes. This lets you hide
3723*dc5640d1SHerbert Xue implementations with package-local visbility and expose them using
3724*dc5640d1SHerbert Xue only a Guice module and an annotation:
3725*dc5640d1SHerbert Xue
3726*dc5640d1SHerbert Xue <pre>
3727*dc5640d1SHerbert Xue  ...
3728*dc5640d1SHerbert Xue      filter("/*").through(<b>Key.get(Filter.class, Fave.class)</b>);
3729*dc5640d1SHerbert Xue </pre>
3730*dc5640d1SHerbert Xue
3731*dc5640d1SHerbert Xue Where {@code Filter.class} refers to the Servlet API interface and {@code Fave.class} is a
3732*dc5640d1SHerbert Xue custom binding annotation. Elsewhere (in one of your own modules) you can bind this
3733*dc5640d1SHerbert Xue filter's implementation:
3734*dc5640d1SHerbert Xue
3735*dc5640d1SHerbert Xue <pre>
3736*dc5640d1SHerbert Xue   bind(Filter.class)<b>.annotatedWith(Fave.class)</b>.to(MyFilterImpl.class);
3737*dc5640d1SHerbert Xue </pre>
3738*dc5640d1SHerbert Xue
3739*dc5640d1SHerbert Xue See {@link com.google.inject.Binder} for more information on binding syntax.
3740*dc5640d1SHerbert Xue
3741*dc5640d1SHerbert Xue <p>
3742*dc5640d1SHerbert Xue <h3>Multiple Modules</h3>
3743*dc5640d1SHerbert Xue
3744*dc5640d1SHerbert Xue It is sometimes useful to capture servlet and filter mappings from multiple different
3745*dc5640d1SHerbert Xue modules. This is essential if you want to package and offer drop-in Guice plugins that
3746*dc5640d1SHerbert Xue provide servlet functionality.
3747*dc5640d1SHerbert Xue
3748*dc5640d1SHerbert Xue <p>
3749*dc5640d1SHerbert Xue Guice Servlet allows you to register several instances of {@code ServletModule} to your
3750*dc5640d1SHerbert Xue injector. The order in which these modules are installed determines the dispatch order
3751*dc5640d1SHerbert Xue of filters and the precedence order of servlets. For example, if you had two servlet modules,
3752*dc5640d1SHerbert Xue {@code RpcModule} and {@code WebServiceModule} and they each contained a filter that mapped
3753*dc5640d1SHerbert Xue to the same URI pattern, {@code "/*"}:
3754*dc5640d1SHerbert Xue
3755*dc5640d1SHerbert Xue <p>
3756*dc5640d1SHerbert Xue In {@code RpcModule}:
3757*dc5640d1SHerbert Xue <pre>
3758*dc5640d1SHerbert Xue     filter("/*").through(RpcFilter.class);
3759*dc5640d1SHerbert Xue </pre>
3760*dc5640d1SHerbert Xue
3761*dc5640d1SHerbert Xue In {@code WebServiceModule}:
3762*dc5640d1SHerbert Xue <pre>
3763*dc5640d1SHerbert Xue     filter("/*").through(WebServiceFilter.class);
3764*dc5640d1SHerbert Xue </pre>
3765*dc5640d1SHerbert Xue
3766*dc5640d1SHerbert Xue Then the order in which these filters are dispatched is determined by the order in which
3767*dc5640d1SHerbert Xue the modules are installed:
3768*dc5640d1SHerbert Xue
3769*dc5640d1SHerbert Xue <pre>
3770*dc5640d1SHerbert Xue   <b>install(new WebServiceModule());</b>
3771*dc5640d1SHerbert Xue   install(new RpcModule());
3772*dc5640d1SHerbert Xue </pre>
3773*dc5640d1SHerbert Xue
3774*dc5640d1SHerbert Xue In the case shown above {@code WebServiceFilter} will run first.
3775*dc5640d1SHerbert Xue
3776*dc5640d1SHerbert Xue @since 2.0]]>
3777*dc5640d1SHerbert Xue      </doc>
3778*dc5640d1SHerbert Xue    </method>
3779*dc5640d1SHerbert Xue    <method name="filter" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder"
3780*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3781*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
3782*dc5640d1SHerbert Xue      deprecated="not deprecated">
3783*dc5640d1SHerbert Xue      <param name="urlPattern" type="java.lang.String"/>
3784*dc5640d1SHerbert Xue      <param name="morePatterns" type="java.lang.String[]"/>
3785*dc5640d1SHerbert Xue      <doc>
3786*dc5640d1SHerbert Xue      <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc.
3787*dc5640d1SHerbert Xue @since 2.0]]>
3788*dc5640d1SHerbert Xue      </doc>
3789*dc5640d1SHerbert Xue    </method>
3790*dc5640d1SHerbert Xue    <method name="filterRegex" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder"
3791*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3792*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
3793*dc5640d1SHerbert Xue      deprecated="not deprecated">
3794*dc5640d1SHerbert Xue      <param name="regex" type="java.lang.String"/>
3795*dc5640d1SHerbert Xue      <param name="regexes" type="java.lang.String[]"/>
3796*dc5640d1SHerbert Xue      <doc>
3797*dc5640d1SHerbert Xue      <![CDATA[@param regex Any Java-style regular expression.
3798*dc5640d1SHerbert Xue @since 2.0]]>
3799*dc5640d1SHerbert Xue      </doc>
3800*dc5640d1SHerbert Xue    </method>
3801*dc5640d1SHerbert Xue    <method name="serve" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder"
3802*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3803*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
3804*dc5640d1SHerbert Xue      deprecated="not deprecated">
3805*dc5640d1SHerbert Xue      <param name="urlPattern" type="java.lang.String"/>
3806*dc5640d1SHerbert Xue      <param name="morePatterns" type="java.lang.String[]"/>
3807*dc5640d1SHerbert Xue      <doc>
3808*dc5640d1SHerbert Xue      <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc.
3809*dc5640d1SHerbert Xue @since 2.0]]>
3810*dc5640d1SHerbert Xue      </doc>
3811*dc5640d1SHerbert Xue    </method>
3812*dc5640d1SHerbert Xue    <method name="serveRegex" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder"
3813*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3814*dc5640d1SHerbert Xue      static="false" final="true" visibility="protected"
3815*dc5640d1SHerbert Xue      deprecated="not deprecated">
3816*dc5640d1SHerbert Xue      <param name="regex" type="java.lang.String"/>
3817*dc5640d1SHerbert Xue      <param name="regexes" type="java.lang.String[]"/>
3818*dc5640d1SHerbert Xue      <doc>
3819*dc5640d1SHerbert Xue      <![CDATA[@param regex Any Java-style regular expression.
3820*dc5640d1SHerbert Xue @since 2.0]]>
3821*dc5640d1SHerbert Xue      </doc>
3822*dc5640d1SHerbert Xue    </method>
3823*dc5640d1SHerbert Xue    <doc>
3824*dc5640d1SHerbert Xue    <![CDATA[Configures the servlet scopes and creates bindings for the servlet API
3825*dc5640d1SHerbert Xue objects so you can inject the request, response, session, etc.
3826*dc5640d1SHerbert Xue
3827*dc5640d1SHerbert Xue <p>
3828*dc5640d1SHerbert Xue You should subclass this module to register servlets and
3829*dc5640d1SHerbert Xue filters in the {@link #configureServlets()} method.
3830*dc5640d1SHerbert Xue
3831*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)
3832*dc5640d1SHerbert Xue @author [email protected] (Dhanji R. Prasanna)]]>
3833*dc5640d1SHerbert Xue    </doc>
3834*dc5640d1SHerbert Xue  </class>
3835*dc5640d1SHerbert Xue  <!-- end class com.google.inject.servlet.ServletModule -->
3836*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder -->
3837*dc5640d1SHerbert Xue  <interface name="ServletModule.FilterKeyBindingBuilder"    abstract="true"
3838*dc5640d1SHerbert Xue    static="true" final="false" visibility="public"
3839*dc5640d1SHerbert Xue    deprecated="not deprecated">
3840*dc5640d1SHerbert Xue    <method name="through"
3841*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3842*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3843*dc5640d1SHerbert Xue      deprecated="not deprecated">
3844*dc5640d1SHerbert Xue      <param name="filterKey" type="java.lang.Class&lt;? extends Filter&gt;"/>
3845*dc5640d1SHerbert Xue    </method>
3846*dc5640d1SHerbert Xue    <method name="through"
3847*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3848*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3849*dc5640d1SHerbert Xue      deprecated="not deprecated">
3850*dc5640d1SHerbert Xue      <param name="filterKey" type="com.google.inject.Key&lt;? extends Filter&gt;"/>
3851*dc5640d1SHerbert Xue    </method>
3852*dc5640d1SHerbert Xue    <method name="through"
3853*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3854*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3855*dc5640d1SHerbert Xue      deprecated="not deprecated">
3856*dc5640d1SHerbert Xue      <param name="dummyFilterClass" type="java.lang.Class&lt;? extends Filter&gt;"/>
3857*dc5640d1SHerbert Xue      <param name="contextParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
3858*dc5640d1SHerbert Xue    </method>
3859*dc5640d1SHerbert Xue    <method name="through"
3860*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3861*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3862*dc5640d1SHerbert Xue      deprecated="not deprecated">
3863*dc5640d1SHerbert Xue      <param name="dummyFilterClass" type="com.google.inject.Key&lt;? extends Filter&gt;"/>
3864*dc5640d1SHerbert Xue      <param name="contextParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
3865*dc5640d1SHerbert Xue    </method>
3866*dc5640d1SHerbert Xue    <doc>
3867*dc5640d1SHerbert Xue    <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()}
3868*dc5640d1SHerbert Xue
3869*dc5640d1SHerbert Xue @since 2.0]]>
3870*dc5640d1SHerbert Xue    </doc>
3871*dc5640d1SHerbert Xue  </interface>
3872*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder -->
3873*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder -->
3874*dc5640d1SHerbert Xue  <interface name="ServletModule.ServletKeyBindingBuilder"    abstract="true"
3875*dc5640d1SHerbert Xue    static="true" final="false" visibility="public"
3876*dc5640d1SHerbert Xue    deprecated="not deprecated">
3877*dc5640d1SHerbert Xue    <method name="with"
3878*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3879*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3880*dc5640d1SHerbert Xue      deprecated="not deprecated">
3881*dc5640d1SHerbert Xue      <param name="servletKey" type="java.lang.Class&lt;? extends HttpServlet&gt;"/>
3882*dc5640d1SHerbert Xue    </method>
3883*dc5640d1SHerbert Xue    <method name="with"
3884*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3885*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3886*dc5640d1SHerbert Xue      deprecated="not deprecated">
3887*dc5640d1SHerbert Xue      <param name="servletKey" type="com.google.inject.Key&lt;? extends HttpServlet&gt;"/>
3888*dc5640d1SHerbert Xue    </method>
3889*dc5640d1SHerbert Xue    <method name="with"
3890*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3891*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3892*dc5640d1SHerbert Xue      deprecated="not deprecated">
3893*dc5640d1SHerbert Xue      <param name="servletKey" type="java.lang.Class&lt;? extends HttpServlet&gt;"/>
3894*dc5640d1SHerbert Xue      <param name="contextParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
3895*dc5640d1SHerbert Xue    </method>
3896*dc5640d1SHerbert Xue    <method name="with"
3897*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3898*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3899*dc5640d1SHerbert Xue      deprecated="not deprecated">
3900*dc5640d1SHerbert Xue      <param name="servletKey" type="com.google.inject.Key&lt;? extends HttpServlet&gt;"/>
3901*dc5640d1SHerbert Xue      <param name="contextParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
3902*dc5640d1SHerbert Xue    </method>
3903*dc5640d1SHerbert Xue    <doc>
3904*dc5640d1SHerbert Xue    <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()}
3905*dc5640d1SHerbert Xue
3906*dc5640d1SHerbert Xue @since 2.0]]>
3907*dc5640d1SHerbert Xue    </doc>
3908*dc5640d1SHerbert Xue  </interface>
3909*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder -->
3910*dc5640d1SHerbert Xue  <!-- start class com.google.inject.servlet.ServletScopes -->
3911*dc5640d1SHerbert Xue  <class name="ServletScopes" extends="java.lang.Object"
3912*dc5640d1SHerbert Xue    abstract="false"
3913*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
3914*dc5640d1SHerbert Xue    deprecated="not deprecated">
3915*dc5640d1SHerbert Xue    <field name="REQUEST" type="com.google.inject.Scope"
3916*dc5640d1SHerbert Xue      transient="false" volatile="false"
3917*dc5640d1SHerbert Xue      static="true" final="true" visibility="public"
3918*dc5640d1SHerbert Xue      deprecated="not deprecated">
3919*dc5640d1SHerbert Xue      <doc>
3920*dc5640d1SHerbert Xue      <![CDATA[HTTP servlet request scope.]]>
3921*dc5640d1SHerbert Xue      </doc>
3922*dc5640d1SHerbert Xue    </field>
3923*dc5640d1SHerbert Xue    <field name="SESSION" type="com.google.inject.Scope"
3924*dc5640d1SHerbert Xue      transient="false" volatile="false"
3925*dc5640d1SHerbert Xue      static="true" final="true" visibility="public"
3926*dc5640d1SHerbert Xue      deprecated="not deprecated">
3927*dc5640d1SHerbert Xue      <doc>
3928*dc5640d1SHerbert Xue      <![CDATA[HTTP session scope.]]>
3929*dc5640d1SHerbert Xue      </doc>
3930*dc5640d1SHerbert Xue    </field>
3931*dc5640d1SHerbert Xue    <doc>
3932*dc5640d1SHerbert Xue    <![CDATA[Servlet scopes.
3933*dc5640d1SHerbert Xue
3934*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
3935*dc5640d1SHerbert Xue    </doc>
3936*dc5640d1SHerbert Xue  </class>
3937*dc5640d1SHerbert Xue  <!-- end class com.google.inject.servlet.ServletScopes -->
3938*dc5640d1SHerbert Xue  <!-- start class com.google.inject.servlet.SessionScoped -->
3939*dc5640d1SHerbert Xue  <class name="SessionScoped"    abstract="true"
3940*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
3941*dc5640d1SHerbert Xue    deprecated="not deprecated">
3942*dc5640d1SHerbert Xue    <implements name="java.lang.annotation.Annotation"/>
3943*dc5640d1SHerbert Xue    <doc>
3944*dc5640d1SHerbert Xue    <![CDATA[Apply this to implementation classes when you want one instance per session.
3945*dc5640d1SHerbert Xue
3946*dc5640d1SHerbert Xue @see com.google.inject.Scopes#SINGLETON
3947*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
3948*dc5640d1SHerbert Xue    </doc>
3949*dc5640d1SHerbert Xue  </class>
3950*dc5640d1SHerbert Xue  <!-- end class com.google.inject.servlet.SessionScoped -->
3951*dc5640d1SHerbert Xue</package>
3952*dc5640d1SHerbert Xue<package name="com.google.inject.spi">
3953*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.spi.BindingScopingVisitor -->
3954*dc5640d1SHerbert Xue  <interface name="BindingScopingVisitor"    abstract="true"
3955*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
3956*dc5640d1SHerbert Xue    deprecated="not deprecated">
3957*dc5640d1SHerbert Xue    <method name="visitEagerSingleton" return="V"
3958*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3959*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3960*dc5640d1SHerbert Xue      deprecated="not deprecated">
3961*dc5640d1SHerbert Xue      <doc>
3962*dc5640d1SHerbert Xue      <![CDATA[Visit an eager singleton or single instance. This scope strategy is found on both module and
3963*dc5640d1SHerbert Xue injector bindings.]]>
3964*dc5640d1SHerbert Xue      </doc>
3965*dc5640d1SHerbert Xue    </method>
3966*dc5640d1SHerbert Xue    <method name="visitScope" return="V"
3967*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3968*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3969*dc5640d1SHerbert Xue      deprecated="not deprecated">
3970*dc5640d1SHerbert Xue      <param name="scope" type="com.google.inject.Scope"/>
3971*dc5640d1SHerbert Xue      <doc>
3972*dc5640d1SHerbert Xue      <![CDATA[Visit a scope instance. This scope strategy is found on both module and injector bindings.]]>
3973*dc5640d1SHerbert Xue      </doc>
3974*dc5640d1SHerbert Xue    </method>
3975*dc5640d1SHerbert Xue    <method name="visitScopeAnnotation" return="V"
3976*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3977*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3978*dc5640d1SHerbert Xue      deprecated="not deprecated">
3979*dc5640d1SHerbert Xue      <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
3980*dc5640d1SHerbert Xue      <doc>
3981*dc5640d1SHerbert Xue      <![CDATA[Visit a scope annotation. This scope strategy is found only on module bindings. The instance
3982*dc5640d1SHerbert Xue that implements this scope is registered by {@link com.google.inject.Binder#bindScope(Class,
3983*dc5640d1SHerbert Xue Scope) Binder.bindScope()}.]]>
3984*dc5640d1SHerbert Xue      </doc>
3985*dc5640d1SHerbert Xue    </method>
3986*dc5640d1SHerbert Xue    <method name="visitNoScoping" return="V"
3987*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
3988*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
3989*dc5640d1SHerbert Xue      deprecated="not deprecated">
3990*dc5640d1SHerbert Xue      <doc>
3991*dc5640d1SHerbert Xue      <![CDATA[Visit an unspecified or unscoped strategy. On a module, this strategy indicates that the
3992*dc5640d1SHerbert Xue injector should use scoping annotations to find a scope. On an injector, it indicates that
3993*dc5640d1SHerbert Xue no scope is applied to the binding. An unscoped binding will behave like a scoped one when it
3994*dc5640d1SHerbert Xue is linked to a scoped binding.]]>
3995*dc5640d1SHerbert Xue      </doc>
3996*dc5640d1SHerbert Xue    </method>
3997*dc5640d1SHerbert Xue    <doc>
3998*dc5640d1SHerbert Xue    <![CDATA[Visits each of the strategies used to scope an injection.
3999*dc5640d1SHerbert Xue
4000*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with
4001*dc5640d1SHerbert Xue     {@code return null} if no return type is needed.
4002*dc5640d1SHerbert Xue @since 2.0]]>
4003*dc5640d1SHerbert Xue    </doc>
4004*dc5640d1SHerbert Xue  </interface>
4005*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.spi.BindingScopingVisitor -->
4006*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.spi.BindingTargetVisitor -->
4007*dc5640d1SHerbert Xue  <interface name="BindingTargetVisitor"    abstract="true"
4008*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
4009*dc5640d1SHerbert Xue    deprecated="not deprecated">
4010*dc5640d1SHerbert Xue    <method name="visit" return="V"
4011*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4012*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4013*dc5640d1SHerbert Xue      deprecated="not deprecated">
4014*dc5640d1SHerbert Xue      <param name="binding" type="com.google.inject.spi.InstanceBinding&lt;? extends T&gt;"/>
4015*dc5640d1SHerbert Xue      <doc>
4016*dc5640d1SHerbert Xue      <![CDATA[Visit a instance binding. The same instance is returned for every injection. This target is
4017*dc5640d1SHerbert Xue found in both module and injector bindings.]]>
4018*dc5640d1SHerbert Xue      </doc>
4019*dc5640d1SHerbert Xue    </method>
4020*dc5640d1SHerbert Xue    <method name="visit" return="V"
4021*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4022*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4023*dc5640d1SHerbert Xue      deprecated="not deprecated">
4024*dc5640d1SHerbert Xue      <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends T&gt;"/>
4025*dc5640d1SHerbert Xue      <doc>
4026*dc5640d1SHerbert Xue      <![CDATA[Visit a provider instance binding. The provider's {@code get} method is invoked to resolve
4027*dc5640d1SHerbert Xue injections. This target is found in both module and injector bindings.]]>
4028*dc5640d1SHerbert Xue      </doc>
4029*dc5640d1SHerbert Xue    </method>
4030*dc5640d1SHerbert Xue    <method name="visit" return="V"
4031*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4032*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4033*dc5640d1SHerbert Xue      deprecated="not deprecated">
4034*dc5640d1SHerbert Xue      <param name="binding" type="com.google.inject.spi.ProviderKeyBinding&lt;? extends T&gt;"/>
4035*dc5640d1SHerbert Xue      <doc>
4036*dc5640d1SHerbert Xue      <![CDATA[Visit a provider key binding. To resolve injections, the provider key is first resolved, then
4037*dc5640d1SHerbert Xue that provider's {@code get} method is invoked. This target is found in both module and injector
4038*dc5640d1SHerbert Xue bindings.]]>
4039*dc5640d1SHerbert Xue      </doc>
4040*dc5640d1SHerbert Xue    </method>
4041*dc5640d1SHerbert Xue    <method name="visit" return="V"
4042*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4043*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4044*dc5640d1SHerbert Xue      deprecated="not deprecated">
4045*dc5640d1SHerbert Xue      <param name="binding" type="com.google.inject.spi.LinkedKeyBinding&lt;? extends T&gt;"/>
4046*dc5640d1SHerbert Xue      <doc>
4047*dc5640d1SHerbert Xue      <![CDATA[Visit a linked key binding. The other key's binding is used to resolve injections. This
4048*dc5640d1SHerbert Xue target is found in both module and injector bindings.]]>
4049*dc5640d1SHerbert Xue      </doc>
4050*dc5640d1SHerbert Xue    </method>
4051*dc5640d1SHerbert Xue    <method name="visit" return="V"
4052*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4053*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4054*dc5640d1SHerbert Xue      deprecated="not deprecated">
4055*dc5640d1SHerbert Xue      <param name="binding" type="com.google.inject.spi.ExposedBinding&lt;? extends T&gt;"/>
4056*dc5640d1SHerbert Xue      <doc>
4057*dc5640d1SHerbert Xue      <![CDATA[Visit a binding to a key exposed from an enclosed private environment. This target is only
4058*dc5640d1SHerbert Xue found in injector bindings.]]>
4059*dc5640d1SHerbert Xue      </doc>
4060*dc5640d1SHerbert Xue    </method>
4061*dc5640d1SHerbert Xue    <method name="visit" return="V"
4062*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4063*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4064*dc5640d1SHerbert Xue      deprecated="not deprecated">
4065*dc5640d1SHerbert Xue      <param name="binding" type="com.google.inject.spi.UntargettedBinding&lt;? extends T&gt;"/>
4066*dc5640d1SHerbert Xue      <doc>
4067*dc5640d1SHerbert Xue      <![CDATA[Visit an untargetted binding. This target is found only on module bindings. It indicates
4068*dc5640d1SHerbert Xue that the injector should use its implicit binding strategies to resolve injections.]]>
4069*dc5640d1SHerbert Xue      </doc>
4070*dc5640d1SHerbert Xue    </method>
4071*dc5640d1SHerbert Xue    <method name="visit" return="V"
4072*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4073*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4074*dc5640d1SHerbert Xue      deprecated="not deprecated">
4075*dc5640d1SHerbert Xue      <param name="binding" type="com.google.inject.spi.ConstructorBinding&lt;? extends T&gt;"/>
4076*dc5640d1SHerbert Xue      <doc>
4077*dc5640d1SHerbert Xue      <![CDATA[Visit a constructor binding. To resolve injections, an instance is instantiated by invoking
4078*dc5640d1SHerbert Xue {@code constructor}. This target is found only on injector bindings.]]>
4079*dc5640d1SHerbert Xue      </doc>
4080*dc5640d1SHerbert Xue    </method>
4081*dc5640d1SHerbert Xue    <method name="visit" return="V"
4082*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4083*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4084*dc5640d1SHerbert Xue      deprecated="not deprecated">
4085*dc5640d1SHerbert Xue      <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding&lt;? extends T&gt;"/>
4086*dc5640d1SHerbert Xue      <doc>
4087*dc5640d1SHerbert Xue      <![CDATA[Visit a binding created from converting a bound instance to a new type. The source binding
4088*dc5640d1SHerbert Xue has the same binding annotation but a different type. This target is found only on injector
4089*dc5640d1SHerbert Xue bindings.]]>
4090*dc5640d1SHerbert Xue      </doc>
4091*dc5640d1SHerbert Xue    </method>
4092*dc5640d1SHerbert Xue    <method name="visit" return="V"
4093*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4094*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4095*dc5640d1SHerbert Xue      deprecated="not deprecated">
4096*dc5640d1SHerbert Xue      <param name="binding" type="com.google.inject.spi.ProviderBinding&lt;? extends T&gt;"/>
4097*dc5640d1SHerbert Xue      <doc>
4098*dc5640d1SHerbert Xue      <![CDATA[Visit a binding to a {@link com.google.inject.Provider} that delegates to the binding for the
4099*dc5640d1SHerbert Xue provided type. This target is found only on injector bindings.]]>
4100*dc5640d1SHerbert Xue      </doc>
4101*dc5640d1SHerbert Xue    </method>
4102*dc5640d1SHerbert Xue    <doc>
4103*dc5640d1SHerbert Xue    <![CDATA[Visits each of the strategies used to find an instance to satisfy an injection.
4104*dc5640d1SHerbert Xue
4105*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with
4106*dc5640d1SHerbert Xue     {@code return null} if no return type is needed.
4107*dc5640d1SHerbert Xue @since 2.0]]>
4108*dc5640d1SHerbert Xue    </doc>
4109*dc5640d1SHerbert Xue  </interface>
4110*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.spi.BindingTargetVisitor -->
4111*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.spi.ConstructorBinding -->
4112*dc5640d1SHerbert Xue  <interface name="ConstructorBinding"    abstract="true"
4113*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
4114*dc5640d1SHerbert Xue    deprecated="not deprecated">
4115*dc5640d1SHerbert Xue    <implements name="com.google.inject.Binding&lt;T&gt;"/>
4116*dc5640d1SHerbert Xue    <implements name="com.google.inject.spi.HasDependencies"/>
4117*dc5640d1SHerbert Xue    <method name="getConstructor" return="com.google.inject.spi.InjectionPoint"
4118*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4119*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4120*dc5640d1SHerbert Xue      deprecated="not deprecated">
4121*dc5640d1SHerbert Xue      <doc>
4122*dc5640d1SHerbert Xue      <![CDATA[Gets the constructor this binding injects.]]>
4123*dc5640d1SHerbert Xue      </doc>
4124*dc5640d1SHerbert Xue    </method>
4125*dc5640d1SHerbert Xue    <method name="getInjectableMembers" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
4126*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4127*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4128*dc5640d1SHerbert Xue      deprecated="not deprecated">
4129*dc5640d1SHerbert Xue      <doc>
4130*dc5640d1SHerbert Xue      <![CDATA[Returns all instance method and field injection points on {@code type}.
4131*dc5640d1SHerbert Xue
4132*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All
4133*dc5640d1SHerbert Xue      fields are returned and then all methods. Within the fields, supertype fields are returned
4134*dc5640d1SHerbert Xue      before subtype fields. Similarly, supertype methods are returned before subtype methods.]]>
4135*dc5640d1SHerbert Xue      </doc>
4136*dc5640d1SHerbert Xue    </method>
4137*dc5640d1SHerbert Xue    <method name="getMethodInterceptors" return="java.util.Map&lt;java.lang.reflect.Method, java.util.List&lt;org.aopalliance.intercept.MethodInterceptor&gt;&gt;"
4138*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4139*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4140*dc5640d1SHerbert Xue      deprecated="not deprecated">
4141*dc5640d1SHerbert Xue      <doc>
4142*dc5640d1SHerbert Xue      <![CDATA[Returns the interceptors applied to each method, in the order that they will be applied.
4143*dc5640d1SHerbert Xue
4144*dc5640d1SHerbert Xue @return a possibly empty map]]>
4145*dc5640d1SHerbert Xue      </doc>
4146*dc5640d1SHerbert Xue    </method>
4147*dc5640d1SHerbert Xue    <doc>
4148*dc5640d1SHerbert Xue    <![CDATA[A binding to the constructor of a concrete clss. To resolve injections, an instance is
4149*dc5640d1SHerbert Xue instantiated by invoking the constructor.
4150*dc5640d1SHerbert Xue
4151*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
4152*dc5640d1SHerbert Xue @since 2.0]]>
4153*dc5640d1SHerbert Xue    </doc>
4154*dc5640d1SHerbert Xue  </interface>
4155*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.spi.ConstructorBinding -->
4156*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.spi.ConvertedConstantBinding -->
4157*dc5640d1SHerbert Xue  <interface name="ConvertedConstantBinding"    abstract="true"
4158*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
4159*dc5640d1SHerbert Xue    deprecated="not deprecated">
4160*dc5640d1SHerbert Xue    <implements name="com.google.inject.Binding&lt;T&gt;"/>
4161*dc5640d1SHerbert Xue    <implements name="com.google.inject.spi.HasDependencies"/>
4162*dc5640d1SHerbert Xue    <method name="getValue" return="T"
4163*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4164*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4165*dc5640d1SHerbert Xue      deprecated="not deprecated">
4166*dc5640d1SHerbert Xue      <doc>
4167*dc5640d1SHerbert Xue      <![CDATA[Returns the converted value.]]>
4168*dc5640d1SHerbert Xue      </doc>
4169*dc5640d1SHerbert Xue    </method>
4170*dc5640d1SHerbert Xue    <method name="getSourceKey" return="com.google.inject.Key&lt;java.lang.String&gt;"
4171*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4172*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4173*dc5640d1SHerbert Xue      deprecated="not deprecated">
4174*dc5640d1SHerbert Xue      <doc>
4175*dc5640d1SHerbert Xue      <![CDATA[Returns the key for the source binding. That binding can e retrieved from an injector using
4176*dc5640d1SHerbert Xue {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]>
4177*dc5640d1SHerbert Xue      </doc>
4178*dc5640d1SHerbert Xue    </method>
4179*dc5640d1SHerbert Xue    <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
4180*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4181*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4182*dc5640d1SHerbert Xue      deprecated="not deprecated">
4183*dc5640d1SHerbert Xue      <doc>
4184*dc5640d1SHerbert Xue      <![CDATA[Returns a singleton set containing only the converted key.]]>
4185*dc5640d1SHerbert Xue      </doc>
4186*dc5640d1SHerbert Xue    </method>
4187*dc5640d1SHerbert Xue    <doc>
4188*dc5640d1SHerbert Xue    <![CDATA[A binding created from converting a bound instance to a new type. The source binding has the same
4189*dc5640d1SHerbert Xue binding annotation but a different type.
4190*dc5640d1SHerbert Xue
4191*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
4192*dc5640d1SHerbert Xue @since 2.0]]>
4193*dc5640d1SHerbert Xue    </doc>
4194*dc5640d1SHerbert Xue  </interface>
4195*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.spi.ConvertedConstantBinding -->
4196*dc5640d1SHerbert Xue  <!-- start class com.google.inject.spi.DefaultBindingScopingVisitor -->
4197*dc5640d1SHerbert Xue  <class name="DefaultBindingScopingVisitor" extends="java.lang.Object"
4198*dc5640d1SHerbert Xue    abstract="false"
4199*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
4200*dc5640d1SHerbert Xue    deprecated="not deprecated">
4201*dc5640d1SHerbert Xue    <implements name="com.google.inject.spi.BindingScopingVisitor&lt;V&gt;"/>
4202*dc5640d1SHerbert Xue    <constructor name="DefaultBindingScopingVisitor"
4203*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4204*dc5640d1SHerbert Xue      deprecated="not deprecated">
4205*dc5640d1SHerbert Xue    </constructor>
4206*dc5640d1SHerbert Xue    <method name="visitOther" return="V"
4207*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4208*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
4209*dc5640d1SHerbert Xue      deprecated="not deprecated">
4210*dc5640d1SHerbert Xue      <doc>
4211*dc5640d1SHerbert Xue      <![CDATA[Default visit implementation. Returns {@code null}.]]>
4212*dc5640d1SHerbert Xue      </doc>
4213*dc5640d1SHerbert Xue    </method>
4214*dc5640d1SHerbert Xue    <method name="visitEagerSingleton" return="V"
4215*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4216*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4217*dc5640d1SHerbert Xue      deprecated="not deprecated">
4218*dc5640d1SHerbert Xue    </method>
4219*dc5640d1SHerbert Xue    <method name="visitScope" return="V"
4220*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4221*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4222*dc5640d1SHerbert Xue      deprecated="not deprecated">
4223*dc5640d1SHerbert Xue      <param name="scope" type="com.google.inject.Scope"/>
4224*dc5640d1SHerbert Xue    </method>
4225*dc5640d1SHerbert Xue    <method name="visitScopeAnnotation" return="V"
4226*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4227*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4228*dc5640d1SHerbert Xue      deprecated="not deprecated">
4229*dc5640d1SHerbert Xue      <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
4230*dc5640d1SHerbert Xue    </method>
4231*dc5640d1SHerbert Xue    <method name="visitNoScoping" return="V"
4232*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4233*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4234*dc5640d1SHerbert Xue      deprecated="not deprecated">
4235*dc5640d1SHerbert Xue    </method>
4236*dc5640d1SHerbert Xue    <doc>
4237*dc5640d1SHerbert Xue    <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to
4238*dc5640d1SHerbert Xue {@link #visitOther()}, returning its result.
4239*dc5640d1SHerbert Xue
4240*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with
4241*dc5640d1SHerbert Xue     {@code return null} if no return type is needed.
4242*dc5640d1SHerbert Xue
4243*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
4244*dc5640d1SHerbert Xue @since 2.0]]>
4245*dc5640d1SHerbert Xue    </doc>
4246*dc5640d1SHerbert Xue  </class>
4247*dc5640d1SHerbert Xue  <!-- end class com.google.inject.spi.DefaultBindingScopingVisitor -->
4248*dc5640d1SHerbert Xue  <!-- start class com.google.inject.spi.DefaultBindingTargetVisitor -->
4249*dc5640d1SHerbert Xue  <class name="DefaultBindingTargetVisitor" extends="java.lang.Object"
4250*dc5640d1SHerbert Xue    abstract="true"
4251*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
4252*dc5640d1SHerbert Xue    deprecated="not deprecated">
4253*dc5640d1SHerbert Xue    <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
4254*dc5640d1SHerbert Xue    <constructor name="DefaultBindingTargetVisitor"
4255*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4256*dc5640d1SHerbert Xue      deprecated="not deprecated">
4257*dc5640d1SHerbert Xue    </constructor>
4258*dc5640d1SHerbert Xue    <method name="visitOther" return="V"
4259*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4260*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
4261*dc5640d1SHerbert Xue      deprecated="not deprecated">
4262*dc5640d1SHerbert Xue      <param name="binding" type="com.google.inject.Binding&lt;? extends T&gt;"/>
4263*dc5640d1SHerbert Xue      <doc>
4264*dc5640d1SHerbert Xue      <![CDATA[Default visit implementation. Returns {@code null}.]]>
4265*dc5640d1SHerbert Xue      </doc>
4266*dc5640d1SHerbert Xue    </method>
4267*dc5640d1SHerbert Xue    <method name="visit" return="V"
4268*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4269*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4270*dc5640d1SHerbert Xue      deprecated="not deprecated">
4271*dc5640d1SHerbert Xue      <param name="instanceBinding" type="com.google.inject.spi.InstanceBinding&lt;? extends T&gt;"/>
4272*dc5640d1SHerbert Xue    </method>
4273*dc5640d1SHerbert Xue    <method name="visit" return="V"
4274*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4275*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4276*dc5640d1SHerbert Xue      deprecated="not deprecated">
4277*dc5640d1SHerbert Xue      <param name="providerInstanceBinding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends T&gt;"/>
4278*dc5640d1SHerbert Xue    </method>
4279*dc5640d1SHerbert Xue    <method name="visit" return="V"
4280*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4281*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4282*dc5640d1SHerbert Xue      deprecated="not deprecated">
4283*dc5640d1SHerbert Xue      <param name="providerKeyBinding" type="com.google.inject.spi.ProviderKeyBinding&lt;? extends T&gt;"/>
4284*dc5640d1SHerbert Xue    </method>
4285*dc5640d1SHerbert Xue    <method name="visit" return="V"
4286*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4287*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4288*dc5640d1SHerbert Xue      deprecated="not deprecated">
4289*dc5640d1SHerbert Xue      <param name="linkedKeyBinding" type="com.google.inject.spi.LinkedKeyBinding&lt;? extends T&gt;"/>
4290*dc5640d1SHerbert Xue    </method>
4291*dc5640d1SHerbert Xue    <method name="visit" return="V"
4292*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4293*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4294*dc5640d1SHerbert Xue      deprecated="not deprecated">
4295*dc5640d1SHerbert Xue      <param name="exposedBinding" type="com.google.inject.spi.ExposedBinding&lt;? extends T&gt;"/>
4296*dc5640d1SHerbert Xue    </method>
4297*dc5640d1SHerbert Xue    <method name="visit" return="V"
4298*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4299*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4300*dc5640d1SHerbert Xue      deprecated="not deprecated">
4301*dc5640d1SHerbert Xue      <param name="untargettedBinding" type="com.google.inject.spi.UntargettedBinding&lt;? extends T&gt;"/>
4302*dc5640d1SHerbert Xue    </method>
4303*dc5640d1SHerbert Xue    <method name="visit" return="V"
4304*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4305*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4306*dc5640d1SHerbert Xue      deprecated="not deprecated">
4307*dc5640d1SHerbert Xue      <param name="constructorBinding" type="com.google.inject.spi.ConstructorBinding&lt;? extends T&gt;"/>
4308*dc5640d1SHerbert Xue    </method>
4309*dc5640d1SHerbert Xue    <method name="visit" return="V"
4310*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4311*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4312*dc5640d1SHerbert Xue      deprecated="not deprecated">
4313*dc5640d1SHerbert Xue      <param name="convertedConstantBinding" type="com.google.inject.spi.ConvertedConstantBinding&lt;? extends T&gt;"/>
4314*dc5640d1SHerbert Xue    </method>
4315*dc5640d1SHerbert Xue    <method name="visit" return="V"
4316*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4317*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4318*dc5640d1SHerbert Xue      deprecated="not deprecated">
4319*dc5640d1SHerbert Xue      <param name="providerBinding" type="com.google.inject.spi.ProviderBinding&lt;? extends T&gt;"/>
4320*dc5640d1SHerbert Xue    </method>
4321*dc5640d1SHerbert Xue    <doc>
4322*dc5640d1SHerbert Xue    <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to {@link
4323*dc5640d1SHerbert Xue #visitOther(Binding)}, returning its result.
4324*dc5640d1SHerbert Xue
4325*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with
4326*dc5640d1SHerbert Xue     {@code return null} if no return type is needed.
4327*dc5640d1SHerbert Xue
4328*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
4329*dc5640d1SHerbert Xue @since 2.0]]>
4330*dc5640d1SHerbert Xue    </doc>
4331*dc5640d1SHerbert Xue  </class>
4332*dc5640d1SHerbert Xue  <!-- end class com.google.inject.spi.DefaultBindingTargetVisitor -->
4333*dc5640d1SHerbert Xue  <!-- start class com.google.inject.spi.DefaultElementVisitor -->
4334*dc5640d1SHerbert Xue  <class name="DefaultElementVisitor" extends="java.lang.Object"
4335*dc5640d1SHerbert Xue    abstract="true"
4336*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
4337*dc5640d1SHerbert Xue    deprecated="not deprecated">
4338*dc5640d1SHerbert Xue    <implements name="com.google.inject.spi.ElementVisitor&lt;V&gt;"/>
4339*dc5640d1SHerbert Xue    <constructor name="DefaultElementVisitor"
4340*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4341*dc5640d1SHerbert Xue      deprecated="not deprecated">
4342*dc5640d1SHerbert Xue    </constructor>
4343*dc5640d1SHerbert Xue    <method name="visitOther" return="V"
4344*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4345*dc5640d1SHerbert Xue      static="false" final="false" visibility="protected"
4346*dc5640d1SHerbert Xue      deprecated="not deprecated">
4347*dc5640d1SHerbert Xue      <param name="element" type="com.google.inject.spi.Element"/>
4348*dc5640d1SHerbert Xue      <doc>
4349*dc5640d1SHerbert Xue      <![CDATA[Default visit implementation. Returns {@code null}.]]>
4350*dc5640d1SHerbert Xue      </doc>
4351*dc5640d1SHerbert Xue    </method>
4352*dc5640d1SHerbert Xue    <method name="visit" return="V"
4353*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4354*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4355*dc5640d1SHerbert Xue      deprecated="not deprecated">
4356*dc5640d1SHerbert Xue      <param name="message" type="com.google.inject.spi.Message"/>
4357*dc5640d1SHerbert Xue    </method>
4358*dc5640d1SHerbert Xue    <method name="visit" return="V"
4359*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4360*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4361*dc5640d1SHerbert Xue      deprecated="not deprecated">
4362*dc5640d1SHerbert Xue      <param name="binding" type="com.google.inject.Binding&lt;T&gt;"/>
4363*dc5640d1SHerbert Xue    </method>
4364*dc5640d1SHerbert Xue    <method name="visit" return="V"
4365*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4366*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4367*dc5640d1SHerbert Xue      deprecated="not deprecated">
4368*dc5640d1SHerbert Xue      <param name="interceptorBinding" type="com.google.inject.spi.InterceptorBinding"/>
4369*dc5640d1SHerbert Xue    </method>
4370*dc5640d1SHerbert Xue    <method name="visit" return="V"
4371*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4372*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4373*dc5640d1SHerbert Xue      deprecated="not deprecated">
4374*dc5640d1SHerbert Xue      <param name="scopeBinding" type="com.google.inject.spi.ScopeBinding"/>
4375*dc5640d1SHerbert Xue    </method>
4376*dc5640d1SHerbert Xue    <method name="visit" return="V"
4377*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4378*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4379*dc5640d1SHerbert Xue      deprecated="not deprecated">
4380*dc5640d1SHerbert Xue      <param name="typeConverterBinding" type="com.google.inject.spi.TypeConverterBinding"/>
4381*dc5640d1SHerbert Xue    </method>
4382*dc5640d1SHerbert Xue    <method name="visit" return="V"
4383*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4384*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4385*dc5640d1SHerbert Xue      deprecated="not deprecated">
4386*dc5640d1SHerbert Xue      <param name="providerLookup" type="com.google.inject.spi.ProviderLookup&lt;T&gt;"/>
4387*dc5640d1SHerbert Xue    </method>
4388*dc5640d1SHerbert Xue    <method name="visit" return="V"
4389*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4390*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4391*dc5640d1SHerbert Xue      deprecated="not deprecated">
4392*dc5640d1SHerbert Xue      <param name="injectionRequest" type="com.google.inject.spi.InjectionRequest"/>
4393*dc5640d1SHerbert Xue    </method>
4394*dc5640d1SHerbert Xue    <method name="visit" return="V"
4395*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4396*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4397*dc5640d1SHerbert Xue      deprecated="not deprecated">
4398*dc5640d1SHerbert Xue      <param name="staticInjectionRequest" type="com.google.inject.spi.StaticInjectionRequest"/>
4399*dc5640d1SHerbert Xue    </method>
4400*dc5640d1SHerbert Xue    <method name="visit" return="V"
4401*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4402*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4403*dc5640d1SHerbert Xue      deprecated="not deprecated">
4404*dc5640d1SHerbert Xue      <param name="privateElements" type="com.google.inject.spi.PrivateElements"/>
4405*dc5640d1SHerbert Xue    </method>
4406*dc5640d1SHerbert Xue    <method name="visit" return="V"
4407*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4408*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4409*dc5640d1SHerbert Xue      deprecated="not deprecated">
4410*dc5640d1SHerbert Xue      <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup&lt;T&gt;"/>
4411*dc5640d1SHerbert Xue    </method>
4412*dc5640d1SHerbert Xue    <method name="visit" return="V"
4413*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4414*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4415*dc5640d1SHerbert Xue      deprecated="not deprecated">
4416*dc5640d1SHerbert Xue      <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/>
4417*dc5640d1SHerbert Xue    </method>
4418*dc5640d1SHerbert Xue    <doc>
4419*dc5640d1SHerbert Xue    <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to
4420*dc5640d1SHerbert Xue {@link #visitOther(Element)}, returning its result.
4421*dc5640d1SHerbert Xue
4422*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with
4423*dc5640d1SHerbert Xue     {@code return null} if no return type is needed.
4424*dc5640d1SHerbert Xue
4425*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin)
4426*dc5640d1SHerbert Xue @since 2.0]]>
4427*dc5640d1SHerbert Xue    </doc>
4428*dc5640d1SHerbert Xue  </class>
4429*dc5640d1SHerbert Xue  <!-- end class com.google.inject.spi.DefaultElementVisitor -->
4430*dc5640d1SHerbert Xue  <!-- start class com.google.inject.spi.Dependency -->
4431*dc5640d1SHerbert Xue  <class name="Dependency" extends="java.lang.Object"
4432*dc5640d1SHerbert Xue    abstract="false"
4433*dc5640d1SHerbert Xue    static="false" final="true" visibility="public"
4434*dc5640d1SHerbert Xue    deprecated="not deprecated">
4435*dc5640d1SHerbert Xue    <method name="get" return="com.google.inject.spi.Dependency&lt;T&gt;"
4436*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4437*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
4438*dc5640d1SHerbert Xue      deprecated="not deprecated">
4439*dc5640d1SHerbert Xue      <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
4440*dc5640d1SHerbert Xue      <doc>
4441*dc5640d1SHerbert Xue      <![CDATA[Returns a new dependency that is not attached to an injection point. The returned dependency is
4442*dc5640d1SHerbert Xue nullable.]]>
4443*dc5640d1SHerbert Xue      </doc>
4444*dc5640d1SHerbert Xue    </method>
4445*dc5640d1SHerbert Xue    <method name="forInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
4446*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4447*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
4448*dc5640d1SHerbert Xue      deprecated="not deprecated">
4449*dc5640d1SHerbert Xue      <param name="injectionPoints" type="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"/>
4450*dc5640d1SHerbert Xue      <doc>
4451*dc5640d1SHerbert Xue      <![CDATA[Returns the dependencies from the given injection points.]]>
4452*dc5640d1SHerbert Xue      </doc>
4453*dc5640d1SHerbert Xue    </method>
4454*dc5640d1SHerbert Xue    <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
4455*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4456*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4457*dc5640d1SHerbert Xue      deprecated="not deprecated">
4458*dc5640d1SHerbert Xue      <doc>
4459*dc5640d1SHerbert Xue      <![CDATA[Returns the key to the binding that satisfies this dependency.]]>
4460*dc5640d1SHerbert Xue      </doc>
4461*dc5640d1SHerbert Xue    </method>
4462*dc5640d1SHerbert Xue    <method name="isNullable" return="boolean"
4463*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4464*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4465*dc5640d1SHerbert Xue      deprecated="not deprecated">
4466*dc5640d1SHerbert Xue      <doc>
4467*dc5640d1SHerbert Xue      <![CDATA[Returns true if null is a legal value for this dependency.]]>
4468*dc5640d1SHerbert Xue      </doc>
4469*dc5640d1SHerbert Xue    </method>
4470*dc5640d1SHerbert Xue    <method name="getInjectionPoint" return="com.google.inject.spi.InjectionPoint"
4471*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4472*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4473*dc5640d1SHerbert Xue      deprecated="not deprecated">
4474*dc5640d1SHerbert Xue      <doc>
4475*dc5640d1SHerbert Xue      <![CDATA[Returns the injection point to which this dependency belongs, or null if this dependency isn't
4476*dc5640d1SHerbert Xue attached to a particular injection point.]]>
4477*dc5640d1SHerbert Xue      </doc>
4478*dc5640d1SHerbert Xue    </method>
4479*dc5640d1SHerbert Xue    <method name="getParameterIndex" return="int"
4480*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4481*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4482*dc5640d1SHerbert Xue      deprecated="not deprecated">
4483*dc5640d1SHerbert Xue      <doc>
4484*dc5640d1SHerbert Xue      <![CDATA[Returns the index of this dependency in the injection point's parameter list, or {@code -1} if
4485*dc5640d1SHerbert Xue this dependency does not belong to a parameter list. Only method and constuctor dependencies
4486*dc5640d1SHerbert Xue are elements in a parameter list.]]>
4487*dc5640d1SHerbert Xue      </doc>
4488*dc5640d1SHerbert Xue    </method>
4489*dc5640d1SHerbert Xue    <method name="hashCode" return="int"
4490*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4491*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4492*dc5640d1SHerbert Xue      deprecated="not deprecated">
4493*dc5640d1SHerbert Xue    </method>
4494*dc5640d1SHerbert Xue    <method name="equals" return="boolean"
4495*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4496*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4497*dc5640d1SHerbert Xue      deprecated="not deprecated">
4498*dc5640d1SHerbert Xue      <param name="o" type="java.lang.Object"/>
4499*dc5640d1SHerbert Xue    </method>
4500*dc5640d1SHerbert Xue    <method name="toString" return="java.lang.String"
4501*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4502*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4503*dc5640d1SHerbert Xue      deprecated="not deprecated">
4504*dc5640d1SHerbert Xue    </method>
4505*dc5640d1SHerbert Xue    <doc>
4506*dc5640d1SHerbert Xue    <![CDATA[A variable that can be resolved by an injector.
4507*dc5640d1SHerbert Xue
4508*dc5640d1SHerbert Xue <p>Use {@link #get} to build a freestanding dependency, or {@link InjectionPoint} to build one
4509*dc5640d1SHerbert Xue that's attached to a constructor, method or field.
4510*dc5640d1SHerbert Xue
4511*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)
4512*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
4513*dc5640d1SHerbert Xue @since 2.0]]>
4514*dc5640d1SHerbert Xue    </doc>
4515*dc5640d1SHerbert Xue  </class>
4516*dc5640d1SHerbert Xue  <!-- end class com.google.inject.spi.Dependency -->
4517*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.spi.Element -->
4518*dc5640d1SHerbert Xue  <interface name="Element"    abstract="true"
4519*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
4520*dc5640d1SHerbert Xue    deprecated="not deprecated">
4521*dc5640d1SHerbert Xue    <method name="getSource" return="java.lang.Object"
4522*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4523*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4524*dc5640d1SHerbert Xue      deprecated="not deprecated">
4525*dc5640d1SHerbert Xue      <doc>
4526*dc5640d1SHerbert Xue      <![CDATA[Returns an arbitrary object containing information about the "place" where this element was
4527*dc5640d1SHerbert Xue configured. Used by Guice in the production of descriptive error messages.
4528*dc5640d1SHerbert Xue
4529*dc5640d1SHerbert Xue <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good
4530*dc5640d1SHerbert Xue example. Tools should simply call {@code toString()} on the source object if the type is
4531*dc5640d1SHerbert Xue unfamiliar.]]>
4532*dc5640d1SHerbert Xue      </doc>
4533*dc5640d1SHerbert Xue    </method>
4534*dc5640d1SHerbert Xue    <method name="acceptVisitor" return="T"
4535*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4536*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4537*dc5640d1SHerbert Xue      deprecated="not deprecated">
4538*dc5640d1SHerbert Xue      <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
4539*dc5640d1SHerbert Xue      <doc>
4540*dc5640d1SHerbert Xue      <![CDATA[Accepts an element visitor. Invokes the visitor method specific to this element's type.
4541*dc5640d1SHerbert Xue
4542*dc5640d1SHerbert Xue @param visitor to call back on]]>
4543*dc5640d1SHerbert Xue      </doc>
4544*dc5640d1SHerbert Xue    </method>
4545*dc5640d1SHerbert Xue    <method name="applyTo"
4546*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4547*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4548*dc5640d1SHerbert Xue      deprecated="not deprecated">
4549*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
4550*dc5640d1SHerbert Xue      <doc>
4551*dc5640d1SHerbert Xue      <![CDATA[Writes this module element to the given binder (optional operation).
4552*dc5640d1SHerbert Xue
4553*dc5640d1SHerbert Xue @param binder to apply configuration element to
4554*dc5640d1SHerbert Xue @throws UnsupportedOperationException if the {@code applyTo} method is not supported by this
4555*dc5640d1SHerbert Xue     element.]]>
4556*dc5640d1SHerbert Xue      </doc>
4557*dc5640d1SHerbert Xue    </method>
4558*dc5640d1SHerbert Xue    <doc>
4559*dc5640d1SHerbert Xue    <![CDATA[A core component of a module or injector.
4560*dc5640d1SHerbert Xue
4561*dc5640d1SHerbert Xue <p>The elements of a module can be inspected, validated and rewritten. Use {@link
4562*dc5640d1SHerbert Xue Elements#getElements(com.google.inject.Module[]) Elements.getElements()} to read the elements
4563*dc5640d1SHerbert Xue from a module, and {@link Elements#getModule(Iterable) Elements.getModule()} to rewrite them.
4564*dc5640d1SHerbert Xue This can be used for static analysis and generation of Guice modules.
4565*dc5640d1SHerbert Xue
4566*dc5640d1SHerbert Xue <p>The elements of an injector can be inspected and exercised. Use {@link
4567*dc5640d1SHerbert Xue com.google.inject.Injector#getBindings Injector.getBindings()} to reflect on Guice injectors.
4568*dc5640d1SHerbert Xue
4569*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
4570*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)
4571*dc5640d1SHerbert Xue @since 2.0]]>
4572*dc5640d1SHerbert Xue    </doc>
4573*dc5640d1SHerbert Xue  </interface>
4574*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.spi.Element -->
4575*dc5640d1SHerbert Xue  <!-- start class com.google.inject.spi.Elements -->
4576*dc5640d1SHerbert Xue  <class name="Elements" extends="java.lang.Object"
4577*dc5640d1SHerbert Xue    abstract="false"
4578*dc5640d1SHerbert Xue    static="false" final="true" visibility="public"
4579*dc5640d1SHerbert Xue    deprecated="not deprecated">
4580*dc5640d1SHerbert Xue    <constructor name="Elements"
4581*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4582*dc5640d1SHerbert Xue      deprecated="not deprecated">
4583*dc5640d1SHerbert Xue    </constructor>
4584*dc5640d1SHerbert Xue    <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
4585*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4586*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
4587*dc5640d1SHerbert Xue      deprecated="not deprecated">
4588*dc5640d1SHerbert Xue      <param name="modules" type="com.google.inject.Module[]"/>
4589*dc5640d1SHerbert Xue      <doc>
4590*dc5640d1SHerbert Xue      <![CDATA[Records the elements executed by {@code modules}.]]>
4591*dc5640d1SHerbert Xue      </doc>
4592*dc5640d1SHerbert Xue    </method>
4593*dc5640d1SHerbert Xue    <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
4594*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4595*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
4596*dc5640d1SHerbert Xue      deprecated="not deprecated">
4597*dc5640d1SHerbert Xue      <param name="stage" type="com.google.inject.Stage"/>
4598*dc5640d1SHerbert Xue      <param name="modules" type="com.google.inject.Module[]"/>
4599*dc5640d1SHerbert Xue      <doc>
4600*dc5640d1SHerbert Xue      <![CDATA[Records the elements executed by {@code modules}.]]>
4601*dc5640d1SHerbert Xue      </doc>
4602*dc5640d1SHerbert Xue    </method>
4603*dc5640d1SHerbert Xue    <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
4604*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4605*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
4606*dc5640d1SHerbert Xue      deprecated="not deprecated">
4607*dc5640d1SHerbert Xue      <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
4608*dc5640d1SHerbert Xue      <doc>
4609*dc5640d1SHerbert Xue      <![CDATA[Records the elements executed by {@code modules}.]]>
4610*dc5640d1SHerbert Xue      </doc>
4611*dc5640d1SHerbert Xue    </method>
4612*dc5640d1SHerbert Xue    <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
4613*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4614*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
4615*dc5640d1SHerbert Xue      deprecated="not deprecated">
4616*dc5640d1SHerbert Xue      <param name="stage" type="com.google.inject.Stage"/>
4617*dc5640d1SHerbert Xue      <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
4618*dc5640d1SHerbert Xue      <doc>
4619*dc5640d1SHerbert Xue      <![CDATA[Records the elements executed by {@code modules}.]]>
4620*dc5640d1SHerbert Xue      </doc>
4621*dc5640d1SHerbert Xue    </method>
4622*dc5640d1SHerbert Xue    <method name="getModule" return="com.google.inject.Module"
4623*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4624*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
4625*dc5640d1SHerbert Xue      deprecated="not deprecated">
4626*dc5640d1SHerbert Xue      <param name="elements" type="java.lang.Iterable&lt;? extends com.google.inject.spi.Element&gt;"/>
4627*dc5640d1SHerbert Xue      <doc>
4628*dc5640d1SHerbert Xue      <![CDATA[Returns the module composed of {@code elements}.]]>
4629*dc5640d1SHerbert Xue      </doc>
4630*dc5640d1SHerbert Xue    </method>
4631*dc5640d1SHerbert Xue    <doc>
4632*dc5640d1SHerbert Xue    <![CDATA[Exposes elements of a module so they can be inspected, validated or {@link
4633*dc5640d1SHerbert Xue Element#applyTo(Binder) rewritten}.
4634*dc5640d1SHerbert Xue
4635*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
4636*dc5640d1SHerbert Xue @since 2.0]]>
4637*dc5640d1SHerbert Xue    </doc>
4638*dc5640d1SHerbert Xue  </class>
4639*dc5640d1SHerbert Xue  <!-- end class com.google.inject.spi.Elements -->
4640*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.spi.ElementVisitor -->
4641*dc5640d1SHerbert Xue  <interface name="ElementVisitor"    abstract="true"
4642*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
4643*dc5640d1SHerbert Xue    deprecated="not deprecated">
4644*dc5640d1SHerbert Xue    <method name="visit" return="V"
4645*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4646*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4647*dc5640d1SHerbert Xue      deprecated="not deprecated">
4648*dc5640d1SHerbert Xue      <param name="binding" type="com.google.inject.Binding&lt;T&gt;"/>
4649*dc5640d1SHerbert Xue      <doc>
4650*dc5640d1SHerbert Xue      <![CDATA[Visit a mapping from a key (type and optional annotation) to the strategy for getting
4651*dc5640d1SHerbert Xue instances of the type.]]>
4652*dc5640d1SHerbert Xue      </doc>
4653*dc5640d1SHerbert Xue    </method>
4654*dc5640d1SHerbert Xue    <method name="visit" return="V"
4655*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4656*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4657*dc5640d1SHerbert Xue      deprecated="not deprecated">
4658*dc5640d1SHerbert Xue      <param name="binding" type="com.google.inject.spi.InterceptorBinding"/>
4659*dc5640d1SHerbert Xue      <doc>
4660*dc5640d1SHerbert Xue      <![CDATA[Visit a registration of interceptors for matching methods of matching classes.]]>
4661*dc5640d1SHerbert Xue      </doc>
4662*dc5640d1SHerbert Xue    </method>
4663*dc5640d1SHerbert Xue    <method name="visit" return="V"
4664*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4665*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4666*dc5640d1SHerbert Xue      deprecated="not deprecated">
4667*dc5640d1SHerbert Xue      <param name="binding" type="com.google.inject.spi.ScopeBinding"/>
4668*dc5640d1SHerbert Xue      <doc>
4669*dc5640d1SHerbert Xue      <![CDATA[Visit a registration of a scope annotation with the scope that implements it.]]>
4670*dc5640d1SHerbert Xue      </doc>
4671*dc5640d1SHerbert Xue    </method>
4672*dc5640d1SHerbert Xue    <method name="visit" return="V"
4673*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4674*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4675*dc5640d1SHerbert Xue      deprecated="not deprecated">
4676*dc5640d1SHerbert Xue      <param name="binding" type="com.google.inject.spi.TypeConverterBinding"/>
4677*dc5640d1SHerbert Xue      <doc>
4678*dc5640d1SHerbert Xue      <![CDATA[Visit a registration of type converters for matching target types.]]>
4679*dc5640d1SHerbert Xue      </doc>
4680*dc5640d1SHerbert Xue    </method>
4681*dc5640d1SHerbert Xue    <method name="visit" return="V"
4682*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4683*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4684*dc5640d1SHerbert Xue      deprecated="not deprecated">
4685*dc5640d1SHerbert Xue      <param name="request" type="com.google.inject.spi.InjectionRequest"/>
4686*dc5640d1SHerbert Xue      <doc>
4687*dc5640d1SHerbert Xue      <![CDATA[Visit a request to inject the instance fields and methods of an instance.]]>
4688*dc5640d1SHerbert Xue      </doc>
4689*dc5640d1SHerbert Xue    </method>
4690*dc5640d1SHerbert Xue    <method name="visit" return="V"
4691*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4692*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4693*dc5640d1SHerbert Xue      deprecated="not deprecated">
4694*dc5640d1SHerbert Xue      <param name="request" type="com.google.inject.spi.StaticInjectionRequest"/>
4695*dc5640d1SHerbert Xue      <doc>
4696*dc5640d1SHerbert Xue      <![CDATA[Visit a request to inject the static fields and methods of type.]]>
4697*dc5640d1SHerbert Xue      </doc>
4698*dc5640d1SHerbert Xue    </method>
4699*dc5640d1SHerbert Xue    <method name="visit" return="V"
4700*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4701*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4702*dc5640d1SHerbert Xue      deprecated="not deprecated">
4703*dc5640d1SHerbert Xue      <param name="lookup" type="com.google.inject.spi.ProviderLookup&lt;T&gt;"/>
4704*dc5640d1SHerbert Xue      <doc>
4705*dc5640d1SHerbert Xue      <![CDATA[Visit a lookup of the provider for a type.]]>
4706*dc5640d1SHerbert Xue      </doc>
4707*dc5640d1SHerbert Xue    </method>
4708*dc5640d1SHerbert Xue    <method name="visit" return="V"
4709*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4710*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4711*dc5640d1SHerbert Xue      deprecated="not deprecated">
4712*dc5640d1SHerbert Xue      <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup&lt;T&gt;"/>
4713*dc5640d1SHerbert Xue      <doc>
4714*dc5640d1SHerbert Xue      <![CDATA[Visit a lookup of the members injector.]]>
4715*dc5640d1SHerbert Xue      </doc>
4716*dc5640d1SHerbert Xue    </method>
4717*dc5640d1SHerbert Xue    <method name="visit" return="V"
4718*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4719*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4720*dc5640d1SHerbert Xue      deprecated="not deprecated">
4721*dc5640d1SHerbert Xue      <param name="message" type="com.google.inject.spi.Message"/>
4722*dc5640d1SHerbert Xue      <doc>
4723*dc5640d1SHerbert Xue      <![CDATA[Visit an error message and the context in which it occured.]]>
4724*dc5640d1SHerbert Xue      </doc>
4725*dc5640d1SHerbert Xue    </method>
4726*dc5640d1SHerbert Xue    <method name="visit" return="V"
4727*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4728*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4729*dc5640d1SHerbert Xue      deprecated="not deprecated">
4730*dc5640d1SHerbert Xue      <param name="elements" type="com.google.inject.spi.PrivateElements"/>
4731*dc5640d1SHerbert Xue      <doc>
4732*dc5640d1SHerbert Xue      <![CDATA[Visit a collection of configuration elements for a {@linkplain com.google.inject.PrivateBinder
4733*dc5640d1SHerbert Xue private binder}.]]>
4734*dc5640d1SHerbert Xue      </doc>
4735*dc5640d1SHerbert Xue    </method>
4736*dc5640d1SHerbert Xue    <method name="visit" return="V"
4737*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4738*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4739*dc5640d1SHerbert Xue      deprecated="not deprecated">
4740*dc5640d1SHerbert Xue      <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/>
4741*dc5640d1SHerbert Xue      <doc>
4742*dc5640d1SHerbert Xue      <![CDATA[Visit an injectable type listener binding.]]>
4743*dc5640d1SHerbert Xue      </doc>
4744*dc5640d1SHerbert Xue    </method>
4745*dc5640d1SHerbert Xue    <doc>
4746*dc5640d1SHerbert Xue    <![CDATA[Visit elements.
4747*dc5640d1SHerbert Xue
4748*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with
4749*dc5640d1SHerbert Xue     {@code return null} if no return type is needed.
4750*dc5640d1SHerbert Xue
4751*dc5640d1SHerbert Xue @since 2.0]]>
4752*dc5640d1SHerbert Xue    </doc>
4753*dc5640d1SHerbert Xue  </interface>
4754*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.spi.ElementVisitor -->
4755*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.spi.ExposedBinding -->
4756*dc5640d1SHerbert Xue  <interface name="ExposedBinding"    abstract="true"
4757*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
4758*dc5640d1SHerbert Xue    deprecated="not deprecated">
4759*dc5640d1SHerbert Xue    <implements name="com.google.inject.Binding&lt;T&gt;"/>
4760*dc5640d1SHerbert Xue    <implements name="com.google.inject.spi.HasDependencies"/>
4761*dc5640d1SHerbert Xue    <method name="getPrivateElements" return="com.google.inject.spi.PrivateElements"
4762*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4763*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4764*dc5640d1SHerbert Xue      deprecated="not deprecated">
4765*dc5640d1SHerbert Xue      <doc>
4766*dc5640d1SHerbert Xue      <![CDATA[Returns the enclosed environment that holds the original binding.]]>
4767*dc5640d1SHerbert Xue      </doc>
4768*dc5640d1SHerbert Xue    </method>
4769*dc5640d1SHerbert Xue    <method name="applyTo"
4770*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4771*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4772*dc5640d1SHerbert Xue      deprecated="not deprecated">
4773*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
4774*dc5640d1SHerbert Xue      <doc>
4775*dc5640d1SHerbert Xue      <![CDATA[Unsupported. Always throws {@link UnsupportedOperationException}.]]>
4776*dc5640d1SHerbert Xue      </doc>
4777*dc5640d1SHerbert Xue    </method>
4778*dc5640d1SHerbert Xue    <doc>
4779*dc5640d1SHerbert Xue    <![CDATA[A binding to a key exposed from an enclosed private environment.
4780*dc5640d1SHerbert Xue
4781*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
4782*dc5640d1SHerbert Xue @since 2.0]]>
4783*dc5640d1SHerbert Xue    </doc>
4784*dc5640d1SHerbert Xue  </interface>
4785*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.spi.ExposedBinding -->
4786*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.spi.HasDependencies -->
4787*dc5640d1SHerbert Xue  <interface name="HasDependencies"    abstract="true"
4788*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
4789*dc5640d1SHerbert Xue    deprecated="not deprecated">
4790*dc5640d1SHerbert Xue    <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
4791*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4792*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4793*dc5640d1SHerbert Xue      deprecated="not deprecated">
4794*dc5640d1SHerbert Xue      <doc>
4795*dc5640d1SHerbert Xue      <![CDATA[Returns the known dependencies for this type. If this has dependencies whose values are not
4796*dc5640d1SHerbert Xue known statically, a dependency for the {@link com.google.inject.Injector Injector} will be
4797*dc5640d1SHerbert Xue included in the returned set.
4798*dc5640d1SHerbert Xue
4799*dc5640d1SHerbert Xue @return a possibly empty set]]>
4800*dc5640d1SHerbert Xue      </doc>
4801*dc5640d1SHerbert Xue    </method>
4802*dc5640d1SHerbert Xue    <doc>
4803*dc5640d1SHerbert Xue    <![CDATA[Implemented by {@link com.google.inject.Binding bindings}, {@link com.google.inject.Provider
4804*dc5640d1SHerbert Xue providers} and instances that expose their dependencies explicitly.
4805*dc5640d1SHerbert Xue
4806*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
4807*dc5640d1SHerbert Xue @since 2.0]]>
4808*dc5640d1SHerbert Xue    </doc>
4809*dc5640d1SHerbert Xue  </interface>
4810*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.spi.HasDependencies -->
4811*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.spi.InjectionListener -->
4812*dc5640d1SHerbert Xue  <interface name="InjectionListener"    abstract="true"
4813*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
4814*dc5640d1SHerbert Xue    deprecated="not deprecated">
4815*dc5640d1SHerbert Xue    <method name="afterInjection"
4816*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4817*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4818*dc5640d1SHerbert Xue      deprecated="not deprecated">
4819*dc5640d1SHerbert Xue      <param name="injectee" type="I"/>
4820*dc5640d1SHerbert Xue      <doc>
4821*dc5640d1SHerbert Xue      <![CDATA[Invoked by Guice after it injects the fields and methods of instance.
4822*dc5640d1SHerbert Xue
4823*dc5640d1SHerbert Xue @param injectee instance that Guice injected dependencies into]]>
4824*dc5640d1SHerbert Xue      </doc>
4825*dc5640d1SHerbert Xue    </method>
4826*dc5640d1SHerbert Xue    <doc>
4827*dc5640d1SHerbert Xue    <![CDATA[Listens for injections into instances of type {@code I}. Useful for performing further
4828*dc5640d1SHerbert Xue injections, post-injection initialization, and more.
4829*dc5640d1SHerbert Xue
4830*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)
4831*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
4832*dc5640d1SHerbert Xue @since 2.0]]>
4833*dc5640d1SHerbert Xue    </doc>
4834*dc5640d1SHerbert Xue  </interface>
4835*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.spi.InjectionListener -->
4836*dc5640d1SHerbert Xue  <!-- start class com.google.inject.spi.InjectionPoint -->
4837*dc5640d1SHerbert Xue  <class name="InjectionPoint" extends="java.lang.Object"
4838*dc5640d1SHerbert Xue    abstract="false"
4839*dc5640d1SHerbert Xue    static="false" final="true" visibility="public"
4840*dc5640d1SHerbert Xue    deprecated="not deprecated">
4841*dc5640d1SHerbert Xue    <method name="getMember" return="java.lang.reflect.Member"
4842*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4843*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4844*dc5640d1SHerbert Xue      deprecated="not deprecated">
4845*dc5640d1SHerbert Xue      <doc>
4846*dc5640d1SHerbert Xue      <![CDATA[Returns the injected constructor, field, or method.]]>
4847*dc5640d1SHerbert Xue      </doc>
4848*dc5640d1SHerbert Xue    </method>
4849*dc5640d1SHerbert Xue    <method name="getDependencies" return="java.util.List&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
4850*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4851*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4852*dc5640d1SHerbert Xue      deprecated="not deprecated">
4853*dc5640d1SHerbert Xue      <doc>
4854*dc5640d1SHerbert Xue      <![CDATA[Returns the dependencies for this injection point. If the injection point is for a method or
4855*dc5640d1SHerbert Xue constructor, the dependencies will correspond to that member's parameters. Field injection
4856*dc5640d1SHerbert Xue points always have a single dependency for the field itself.
4857*dc5640d1SHerbert Xue
4858*dc5640d1SHerbert Xue @return a possibly-empty list]]>
4859*dc5640d1SHerbert Xue      </doc>
4860*dc5640d1SHerbert Xue    </method>
4861*dc5640d1SHerbert Xue    <method name="isOptional" return="boolean"
4862*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4863*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4864*dc5640d1SHerbert Xue      deprecated="not deprecated">
4865*dc5640d1SHerbert Xue      <doc>
4866*dc5640d1SHerbert Xue      <![CDATA[Returns true if this injection point shall be skipped if the injector cannot resolve bindings
4867*dc5640d1SHerbert Xue for all required dependencies. Both explicit bindings (as specified in a module), and implicit
4868*dc5640d1SHerbert Xue bindings ({@literal @}{@link com.google.inject.ImplementedBy ImplementedBy}, default
4869*dc5640d1SHerbert Xue constructors etc.) may be used to satisfy optional injection points.]]>
4870*dc5640d1SHerbert Xue      </doc>
4871*dc5640d1SHerbert Xue    </method>
4872*dc5640d1SHerbert Xue    <method name="equals" return="boolean"
4873*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4874*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4875*dc5640d1SHerbert Xue      deprecated="not deprecated">
4876*dc5640d1SHerbert Xue      <param name="o" type="java.lang.Object"/>
4877*dc5640d1SHerbert Xue    </method>
4878*dc5640d1SHerbert Xue    <method name="hashCode" return="int"
4879*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4880*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4881*dc5640d1SHerbert Xue      deprecated="not deprecated">
4882*dc5640d1SHerbert Xue    </method>
4883*dc5640d1SHerbert Xue    <method name="toString" return="java.lang.String"
4884*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4885*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
4886*dc5640d1SHerbert Xue      deprecated="not deprecated">
4887*dc5640d1SHerbert Xue    </method>
4888*dc5640d1SHerbert Xue    <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint"
4889*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4890*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
4891*dc5640d1SHerbert Xue      deprecated="not deprecated">
4892*dc5640d1SHerbert Xue      <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
4893*dc5640d1SHerbert Xue      <doc>
4894*dc5640d1SHerbert Xue      <![CDATA[Returns a new injection point for the injectable constructor of {@code type}.
4895*dc5640d1SHerbert Xue
4896*dc5640d1SHerbert Xue @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject},
4897*dc5640d1SHerbert Xue     or a no-arguments constructor that is not private.
4898*dc5640d1SHerbert Xue @throws ConfigurationException if there is no injectable constructor, more than one injectable
4899*dc5640d1SHerbert Xue     constructor, or if parameters of the injectable constructor are malformed, such as a
4900*dc5640d1SHerbert Xue     parameter with multiple binding annotations.]]>
4901*dc5640d1SHerbert Xue      </doc>
4902*dc5640d1SHerbert Xue    </method>
4903*dc5640d1SHerbert Xue    <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint"
4904*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4905*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
4906*dc5640d1SHerbert Xue      deprecated="not deprecated">
4907*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;?&gt;"/>
4908*dc5640d1SHerbert Xue      <doc>
4909*dc5640d1SHerbert Xue      <![CDATA[Returns a new injection point for the injectable constructor of {@code type}.
4910*dc5640d1SHerbert Xue
4911*dc5640d1SHerbert Xue @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject},
4912*dc5640d1SHerbert Xue     or a no-arguments constructor that is not private.
4913*dc5640d1SHerbert Xue @throws ConfigurationException if there is no injectable constructor, more than one injectable
4914*dc5640d1SHerbert Xue     constructor, or if parameters of the injectable constructor are malformed, such as a
4915*dc5640d1SHerbert Xue     parameter with multiple binding annotations.]]>
4916*dc5640d1SHerbert Xue      </doc>
4917*dc5640d1SHerbert Xue    </method>
4918*dc5640d1SHerbert Xue    <method name="forStaticMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
4919*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4920*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
4921*dc5640d1SHerbert Xue      deprecated="not deprecated">
4922*dc5640d1SHerbert Xue      <param name="type" type="com.google.inject.TypeLiteral"/>
4923*dc5640d1SHerbert Xue      <doc>
4924*dc5640d1SHerbert Xue      <![CDATA[Returns all static method and field injection points on {@code type}.
4925*dc5640d1SHerbert Xue
4926*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All
4927*dc5640d1SHerbert Xue      fields are returned and then all methods. Within the fields, supertype fields are returned
4928*dc5640d1SHerbert Xue      before subtype fields. Similarly, supertype methods are returned before subtype methods.
4929*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
4930*dc5640d1SHerbert Xue      a field with multiple binding annotations. The exception's {@link
4931*dc5640d1SHerbert Xue      ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
4932*dc5640d1SHerbert Xue      of the valid injection points.]]>
4933*dc5640d1SHerbert Xue      </doc>
4934*dc5640d1SHerbert Xue    </method>
4935*dc5640d1SHerbert Xue    <method name="forStaticMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
4936*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4937*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
4938*dc5640d1SHerbert Xue      deprecated="not deprecated">
4939*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;?&gt;"/>
4940*dc5640d1SHerbert Xue      <doc>
4941*dc5640d1SHerbert Xue      <![CDATA[Returns all static method and field injection points on {@code type}.
4942*dc5640d1SHerbert Xue
4943*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All
4944*dc5640d1SHerbert Xue      fields are returned and then all methods. Within the fields, supertype fields are returned
4945*dc5640d1SHerbert Xue      before subtype fields. Similarly, supertype methods are returned before subtype methods.
4946*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
4947*dc5640d1SHerbert Xue      a field with multiple binding annotations. The exception's {@link
4948*dc5640d1SHerbert Xue      ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
4949*dc5640d1SHerbert Xue      of the valid injection points.]]>
4950*dc5640d1SHerbert Xue      </doc>
4951*dc5640d1SHerbert Xue    </method>
4952*dc5640d1SHerbert Xue    <method name="forInstanceMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
4953*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4954*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
4955*dc5640d1SHerbert Xue      deprecated="not deprecated">
4956*dc5640d1SHerbert Xue      <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
4957*dc5640d1SHerbert Xue      <doc>
4958*dc5640d1SHerbert Xue      <![CDATA[Returns all instance method and field injection points on {@code type}.
4959*dc5640d1SHerbert Xue
4960*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All
4961*dc5640d1SHerbert Xue      fields are returned and then all methods. Within the fields, supertype fields are returned
4962*dc5640d1SHerbert Xue      before subtype fields. Similarly, supertype methods are returned before subtype methods.
4963*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
4964*dc5640d1SHerbert Xue      a field with multiple binding annotations. The exception's {@link
4965*dc5640d1SHerbert Xue      ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
4966*dc5640d1SHerbert Xue      of the valid injection points.]]>
4967*dc5640d1SHerbert Xue      </doc>
4968*dc5640d1SHerbert Xue    </method>
4969*dc5640d1SHerbert Xue    <method name="forInstanceMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
4970*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
4971*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
4972*dc5640d1SHerbert Xue      deprecated="not deprecated">
4973*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;?&gt;"/>
4974*dc5640d1SHerbert Xue      <doc>
4975*dc5640d1SHerbert Xue      <![CDATA[Returns all instance method and field injection points on {@code type}.
4976*dc5640d1SHerbert Xue
4977*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All
4978*dc5640d1SHerbert Xue      fields are returned and then all methods. Within the fields, supertype fields are returned
4979*dc5640d1SHerbert Xue      before subtype fields. Similarly, supertype methods are returned before subtype methods.
4980*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
4981*dc5640d1SHerbert Xue      a field with multiple binding annotations. The exception's {@link
4982*dc5640d1SHerbert Xue      ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
4983*dc5640d1SHerbert Xue      of the valid injection points.]]>
4984*dc5640d1SHerbert Xue      </doc>
4985*dc5640d1SHerbert Xue    </method>
4986*dc5640d1SHerbert Xue    <doc>
4987*dc5640d1SHerbert Xue    <![CDATA[A constructor, field or method that can receive injections. Typically this is a member with the
4988*dc5640d1SHerbert Xue {@literal @}{@link Inject} annotation. For non-private, no argument constructors, the member may
4989*dc5640d1SHerbert Xue omit the annotation.
4990*dc5640d1SHerbert Xue
4991*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)
4992*dc5640d1SHerbert Xue @since 2.0]]>
4993*dc5640d1SHerbert Xue    </doc>
4994*dc5640d1SHerbert Xue  </class>
4995*dc5640d1SHerbert Xue  <!-- end class com.google.inject.spi.InjectionPoint -->
4996*dc5640d1SHerbert Xue  <!-- start class com.google.inject.spi.InjectionRequest -->
4997*dc5640d1SHerbert Xue  <class name="InjectionRequest" extends="java.lang.Object"
4998*dc5640d1SHerbert Xue    abstract="false"
4999*dc5640d1SHerbert Xue    static="false" final="true" visibility="public"
5000*dc5640d1SHerbert Xue    deprecated="not deprecated">
5001*dc5640d1SHerbert Xue    <implements name="com.google.inject.spi.Element"/>
5002*dc5640d1SHerbert Xue    <constructor name="InjectionRequest" type="java.lang.Object, com.google.inject.TypeLiteral&lt;T&gt;, T"
5003*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5004*dc5640d1SHerbert Xue      deprecated="not deprecated">
5005*dc5640d1SHerbert Xue    </constructor>
5006*dc5640d1SHerbert Xue    <method name="getSource" return="java.lang.Object"
5007*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5008*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5009*dc5640d1SHerbert Xue      deprecated="not deprecated">
5010*dc5640d1SHerbert Xue    </method>
5011*dc5640d1SHerbert Xue    <method name="getInstance" return="T"
5012*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5013*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5014*dc5640d1SHerbert Xue      deprecated="not deprecated">
5015*dc5640d1SHerbert Xue    </method>
5016*dc5640d1SHerbert Xue    <method name="getType" return="com.google.inject.TypeLiteral&lt;T&gt;"
5017*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5018*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5019*dc5640d1SHerbert Xue      deprecated="not deprecated">
5020*dc5640d1SHerbert Xue    </method>
5021*dc5640d1SHerbert Xue    <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
5022*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5023*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5024*dc5640d1SHerbert Xue      deprecated="not deprecated">
5025*dc5640d1SHerbert Xue      <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/>
5026*dc5640d1SHerbert Xue      <doc>
5027*dc5640d1SHerbert Xue      <![CDATA[Returns the instance methods and fields of {@code instance} that will be injected to fulfill
5028*dc5640d1SHerbert Xue this request.
5029*dc5640d1SHerbert Xue
5030*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All
5031*dc5640d1SHerbert Xue      fields are returned and then all methods. Within the fields, supertype fields are returned
5032*dc5640d1SHerbert Xue      before subtype fields. Similarly, supertype methods are returned before subtype methods.
5033*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on the class of {@code
5034*dc5640d1SHerbert Xue      instance}, such as a field with multiple binding annotations. The exception's {@link
5035*dc5640d1SHerbert Xue      ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
5036*dc5640d1SHerbert Xue      of the valid injection points.]]>
5037*dc5640d1SHerbert Xue      </doc>
5038*dc5640d1SHerbert Xue    </method>
5039*dc5640d1SHerbert Xue    <method name="acceptVisitor" return="R"
5040*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5041*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5042*dc5640d1SHerbert Xue      deprecated="not deprecated">
5043*dc5640d1SHerbert Xue      <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;R&gt;"/>
5044*dc5640d1SHerbert Xue    </method>
5045*dc5640d1SHerbert Xue    <method name="applyTo"
5046*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5047*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5048*dc5640d1SHerbert Xue      deprecated="not deprecated">
5049*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
5050*dc5640d1SHerbert Xue    </method>
5051*dc5640d1SHerbert Xue    <doc>
5052*dc5640d1SHerbert Xue    <![CDATA[A request to inject the instance fields and methods of an instance. Requests are created
5053*dc5640d1SHerbert Xue explicitly in a module using {@link com.google.inject.Binder#requestInjection(Object)
5054*dc5640d1SHerbert Xue requestInjection()} statements:
5055*dc5640d1SHerbert Xue <pre>
5056*dc5640d1SHerbert Xue     requestInjection(serviceInstance);</pre>
5057*dc5640d1SHerbert Xue
5058*dc5640d1SHerbert Xue @author [email protected] (Mike Ward)
5059*dc5640d1SHerbert Xue @since 2.0]]>
5060*dc5640d1SHerbert Xue    </doc>
5061*dc5640d1SHerbert Xue  </class>
5062*dc5640d1SHerbert Xue  <!-- end class com.google.inject.spi.InjectionRequest -->
5063*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.spi.InstanceBinding -->
5064*dc5640d1SHerbert Xue  <interface name="InstanceBinding"    abstract="true"
5065*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
5066*dc5640d1SHerbert Xue    deprecated="not deprecated">
5067*dc5640d1SHerbert Xue    <implements name="com.google.inject.Binding&lt;T&gt;"/>
5068*dc5640d1SHerbert Xue    <implements name="com.google.inject.spi.HasDependencies"/>
5069*dc5640d1SHerbert Xue    <method name="getInstance" return="T"
5070*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5071*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5072*dc5640d1SHerbert Xue      deprecated="not deprecated">
5073*dc5640d1SHerbert Xue      <doc>
5074*dc5640d1SHerbert Xue      <![CDATA[Returns the user-supplied instance.]]>
5075*dc5640d1SHerbert Xue      </doc>
5076*dc5640d1SHerbert Xue    </method>
5077*dc5640d1SHerbert Xue    <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
5078*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5079*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5080*dc5640d1SHerbert Xue      deprecated="not deprecated">
5081*dc5640d1SHerbert Xue      <doc>
5082*dc5640d1SHerbert Xue      <![CDATA[Returns the field and method injection points of the instance, injected at injector-creation
5083*dc5640d1SHerbert Xue time only.
5084*dc5640d1SHerbert Xue
5085*dc5640d1SHerbert Xue @return a possibly empty set]]>
5086*dc5640d1SHerbert Xue      </doc>
5087*dc5640d1SHerbert Xue    </method>
5088*dc5640d1SHerbert Xue    <doc>
5089*dc5640d1SHerbert Xue    <![CDATA[A binding to a single instance. The same instance is returned for every injection.
5090*dc5640d1SHerbert Xue
5091*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
5092*dc5640d1SHerbert Xue @since 2.0]]>
5093*dc5640d1SHerbert Xue    </doc>
5094*dc5640d1SHerbert Xue  </interface>
5095*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.spi.InstanceBinding -->
5096*dc5640d1SHerbert Xue  <!-- start class com.google.inject.spi.InterceptorBinding -->
5097*dc5640d1SHerbert Xue  <class name="InterceptorBinding" extends="java.lang.Object"
5098*dc5640d1SHerbert Xue    abstract="false"
5099*dc5640d1SHerbert Xue    static="false" final="true" visibility="public"
5100*dc5640d1SHerbert Xue    deprecated="not deprecated">
5101*dc5640d1SHerbert Xue    <implements name="com.google.inject.spi.Element"/>
5102*dc5640d1SHerbert Xue    <method name="getSource" return="java.lang.Object"
5103*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5104*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5105*dc5640d1SHerbert Xue      deprecated="not deprecated">
5106*dc5640d1SHerbert Xue    </method>
5107*dc5640d1SHerbert Xue    <method name="getClassMatcher" return="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"
5108*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5109*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5110*dc5640d1SHerbert Xue      deprecated="not deprecated">
5111*dc5640d1SHerbert Xue    </method>
5112*dc5640d1SHerbert Xue    <method name="getMethodMatcher" return="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"
5113*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5114*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5115*dc5640d1SHerbert Xue      deprecated="not deprecated">
5116*dc5640d1SHerbert Xue    </method>
5117*dc5640d1SHerbert Xue    <method name="getInterceptors" return="java.util.List&lt;MethodInterceptor&gt;"
5118*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5119*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5120*dc5640d1SHerbert Xue      deprecated="not deprecated">
5121*dc5640d1SHerbert Xue    </method>
5122*dc5640d1SHerbert Xue    <method name="acceptVisitor" return="T"
5123*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5124*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5125*dc5640d1SHerbert Xue      deprecated="not deprecated">
5126*dc5640d1SHerbert Xue      <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
5127*dc5640d1SHerbert Xue    </method>
5128*dc5640d1SHerbert Xue    <method name="applyTo"
5129*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5130*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5131*dc5640d1SHerbert Xue      deprecated="not deprecated">
5132*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
5133*dc5640d1SHerbert Xue    </method>
5134*dc5640d1SHerbert Xue    <doc>
5135*dc5640d1SHerbert Xue    <![CDATA[Registration of interceptors for matching methods of matching classes. Instances are created
5136*dc5640d1SHerbert Xue explicitly in a module using {@link com.google.inject.Binder#bindInterceptor(
5137*dc5640d1SHerbert Xue Matcher, Matcher, MethodInterceptor[]) bindInterceptor()} statements:
5138*dc5640d1SHerbert Xue <pre>
5139*dc5640d1SHerbert Xue     bindInterceptor(Matchers.subclassesOf(MyAction.class),
5140*dc5640d1SHerbert Xue         Matchers.annotatedWith(Transactional.class),
5141*dc5640d1SHerbert Xue         new MyTransactionInterceptor());</pre>
5142*dc5640d1SHerbert Xue
5143*dc5640d1SHerbert Xue or from an injectable type listener using {@link TypeEncounter#bindInterceptor(Matcher,
5144*dc5640d1SHerbert Xue org.aopalliance.intercept.MethodInterceptor[]) TypeEncounter.bindInterceptor()}.
5145*dc5640d1SHerbert Xue
5146*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
5147*dc5640d1SHerbert Xue @since 2.0]]>
5148*dc5640d1SHerbert Xue    </doc>
5149*dc5640d1SHerbert Xue  </class>
5150*dc5640d1SHerbert Xue  <!-- end class com.google.inject.spi.InterceptorBinding -->
5151*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.spi.LinkedKeyBinding -->
5152*dc5640d1SHerbert Xue  <interface name="LinkedKeyBinding"    abstract="true"
5153*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
5154*dc5640d1SHerbert Xue    deprecated="not deprecated">
5155*dc5640d1SHerbert Xue    <implements name="com.google.inject.Binding&lt;T&gt;"/>
5156*dc5640d1SHerbert Xue    <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends T&gt;"
5157*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5158*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5159*dc5640d1SHerbert Xue      deprecated="not deprecated">
5160*dc5640d1SHerbert Xue      <doc>
5161*dc5640d1SHerbert Xue      <![CDATA[Returns the linked key used to resolve injections. That binding can be retrieved from an
5162*dc5640d1SHerbert Xue injector using {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]>
5163*dc5640d1SHerbert Xue      </doc>
5164*dc5640d1SHerbert Xue    </method>
5165*dc5640d1SHerbert Xue    <doc>
5166*dc5640d1SHerbert Xue    <![CDATA[A binding to a linked key. The other key's binding is used to resolve injections.
5167*dc5640d1SHerbert Xue
5168*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
5169*dc5640d1SHerbert Xue @since 2.0]]>
5170*dc5640d1SHerbert Xue    </doc>
5171*dc5640d1SHerbert Xue  </interface>
5172*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.spi.LinkedKeyBinding -->
5173*dc5640d1SHerbert Xue  <!-- start class com.google.inject.spi.MembersInjectorLookup -->
5174*dc5640d1SHerbert Xue  <class name="MembersInjectorLookup" extends="java.lang.Object"
5175*dc5640d1SHerbert Xue    abstract="false"
5176*dc5640d1SHerbert Xue    static="false" final="true" visibility="public"
5177*dc5640d1SHerbert Xue    deprecated="not deprecated">
5178*dc5640d1SHerbert Xue    <implements name="com.google.inject.spi.Element"/>
5179*dc5640d1SHerbert Xue    <constructor name="MembersInjectorLookup" type="java.lang.Object, com.google.inject.TypeLiteral&lt;T&gt;"
5180*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5181*dc5640d1SHerbert Xue      deprecated="not deprecated">
5182*dc5640d1SHerbert Xue    </constructor>
5183*dc5640d1SHerbert Xue    <method name="getSource" return="java.lang.Object"
5184*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5185*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5186*dc5640d1SHerbert Xue      deprecated="not deprecated">
5187*dc5640d1SHerbert Xue    </method>
5188*dc5640d1SHerbert Xue    <method name="getType" return="com.google.inject.TypeLiteral&lt;T&gt;"
5189*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5190*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5191*dc5640d1SHerbert Xue      deprecated="not deprecated">
5192*dc5640d1SHerbert Xue      <doc>
5193*dc5640d1SHerbert Xue      <![CDATA[Gets the type containing the members to be injected.]]>
5194*dc5640d1SHerbert Xue      </doc>
5195*dc5640d1SHerbert Xue    </method>
5196*dc5640d1SHerbert Xue    <method name="acceptVisitor" return="T"
5197*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5198*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5199*dc5640d1SHerbert Xue      deprecated="not deprecated">
5200*dc5640d1SHerbert Xue      <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
5201*dc5640d1SHerbert Xue    </method>
5202*dc5640d1SHerbert Xue    <method name="initializeDelegate"
5203*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5204*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5205*dc5640d1SHerbert Xue      deprecated="not deprecated">
5206*dc5640d1SHerbert Xue      <param name="delegate" type="com.google.inject.MembersInjector&lt;T&gt;"/>
5207*dc5640d1SHerbert Xue      <doc>
5208*dc5640d1SHerbert Xue      <![CDATA[Sets the actual members injector.
5209*dc5640d1SHerbert Xue
5210*dc5640d1SHerbert Xue @throws IllegalStateException if the delegate is already set]]>
5211*dc5640d1SHerbert Xue      </doc>
5212*dc5640d1SHerbert Xue    </method>
5213*dc5640d1SHerbert Xue    <method name="applyTo"
5214*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5215*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5216*dc5640d1SHerbert Xue      deprecated="not deprecated">
5217*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
5218*dc5640d1SHerbert Xue    </method>
5219*dc5640d1SHerbert Xue    <method name="getDelegate" return="com.google.inject.MembersInjector&lt;T&gt;"
5220*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5221*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5222*dc5640d1SHerbert Xue      deprecated="not deprecated">
5223*dc5640d1SHerbert Xue      <doc>
5224*dc5640d1SHerbert Xue      <![CDATA[Returns the delegate members injector, or {@code null} if it has not yet been initialized.
5225*dc5640d1SHerbert Xue The delegate will be initialized when this element is processed, or otherwise used to create
5226*dc5640d1SHerbert Xue an injector.]]>
5227*dc5640d1SHerbert Xue      </doc>
5228*dc5640d1SHerbert Xue    </method>
5229*dc5640d1SHerbert Xue    <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
5230*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5231*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5232*dc5640d1SHerbert Xue      deprecated="not deprecated">
5233*dc5640d1SHerbert Xue      <doc>
5234*dc5640d1SHerbert Xue      <![CDATA[Returns the looked up members injector. The result is not valid until this lookup has been
5235*dc5640d1SHerbert Xue initialized, which usually happens when the injector is created. The members injector will
5236*dc5640d1SHerbert Xue throw an {@code IllegalStateException} if you try to use it beforehand.]]>
5237*dc5640d1SHerbert Xue      </doc>
5238*dc5640d1SHerbert Xue    </method>
5239*dc5640d1SHerbert Xue    <doc>
5240*dc5640d1SHerbert Xue    <![CDATA[A lookup of the members injector for a type. Lookups are created explicitly in a module using
5241*dc5640d1SHerbert Xue {@link com.google.inject.Binder#getMembersInjector(Class) getMembersInjector()} statements:
5242*dc5640d1SHerbert Xue <pre>
5243*dc5640d1SHerbert Xue     MembersInjector&lt;PaymentService&gt; membersInjector
5244*dc5640d1SHerbert Xue         = getMembersInjector(PaymentService.class);</pre>
5245*dc5640d1SHerbert Xue
5246*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)
5247*dc5640d1SHerbert Xue @since 2.0]]>
5248*dc5640d1SHerbert Xue    </doc>
5249*dc5640d1SHerbert Xue  </class>
5250*dc5640d1SHerbert Xue  <!-- end class com.google.inject.spi.MembersInjectorLookup -->
5251*dc5640d1SHerbert Xue  <!-- start class com.google.inject.spi.Message -->
5252*dc5640d1SHerbert Xue  <class name="Message" extends="java.lang.Object"
5253*dc5640d1SHerbert Xue    abstract="false"
5254*dc5640d1SHerbert Xue    static="false" final="true" visibility="public"
5255*dc5640d1SHerbert Xue    deprecated="not deprecated">
5256*dc5640d1SHerbert Xue    <implements name="java.io.Serializable"/>
5257*dc5640d1SHerbert Xue    <implements name="com.google.inject.spi.Element"/>
5258*dc5640d1SHerbert Xue    <constructor name="Message" type="java.util.List&lt;java.lang.Object&gt;, java.lang.String, java.lang.Throwable"
5259*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5260*dc5640d1SHerbert Xue      deprecated="not deprecated">
5261*dc5640d1SHerbert Xue      <doc>
5262*dc5640d1SHerbert Xue      <![CDATA[@since 2.0]]>
5263*dc5640d1SHerbert Xue      </doc>
5264*dc5640d1SHerbert Xue    </constructor>
5265*dc5640d1SHerbert Xue    <constructor name="Message" type="java.lang.Object, java.lang.String"
5266*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5267*dc5640d1SHerbert Xue      deprecated="not deprecated">
5268*dc5640d1SHerbert Xue    </constructor>
5269*dc5640d1SHerbert Xue    <constructor name="Message" type="java.lang.String"
5270*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5271*dc5640d1SHerbert Xue      deprecated="not deprecated">
5272*dc5640d1SHerbert Xue    </constructor>
5273*dc5640d1SHerbert Xue    <method name="getSource" return="java.lang.String"
5274*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5275*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5276*dc5640d1SHerbert Xue      deprecated="not deprecated">
5277*dc5640d1SHerbert Xue    </method>
5278*dc5640d1SHerbert Xue    <method name="getSources" return="java.util.List&lt;java.lang.Object&gt;"
5279*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5280*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5281*dc5640d1SHerbert Xue      deprecated="not deprecated">
5282*dc5640d1SHerbert Xue      <doc>
5283*dc5640d1SHerbert Xue      <![CDATA[@since 2.0]]>
5284*dc5640d1SHerbert Xue      </doc>
5285*dc5640d1SHerbert Xue    </method>
5286*dc5640d1SHerbert Xue    <method name="getMessage" return="java.lang.String"
5287*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5288*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5289*dc5640d1SHerbert Xue      deprecated="not deprecated">
5290*dc5640d1SHerbert Xue      <doc>
5291*dc5640d1SHerbert Xue      <![CDATA[Gets the error message text.]]>
5292*dc5640d1SHerbert Xue      </doc>
5293*dc5640d1SHerbert Xue    </method>
5294*dc5640d1SHerbert Xue    <method name="acceptVisitor" return="T"
5295*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5296*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5297*dc5640d1SHerbert Xue      deprecated="not deprecated">
5298*dc5640d1SHerbert Xue      <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
5299*dc5640d1SHerbert Xue      <doc>
5300*dc5640d1SHerbert Xue      <![CDATA[@since 2.0]]>
5301*dc5640d1SHerbert Xue      </doc>
5302*dc5640d1SHerbert Xue    </method>
5303*dc5640d1SHerbert Xue    <method name="getCause" return="java.lang.Throwable"
5304*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5305*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5306*dc5640d1SHerbert Xue      deprecated="not deprecated">
5307*dc5640d1SHerbert Xue      <doc>
5308*dc5640d1SHerbert Xue      <![CDATA[Returns the throwable that caused this message, or {@code null} if this
5309*dc5640d1SHerbert Xue message was not caused by a throwable.
5310*dc5640d1SHerbert Xue
5311*dc5640d1SHerbert Xue @since 2.0]]>
5312*dc5640d1SHerbert Xue      </doc>
5313*dc5640d1SHerbert Xue    </method>
5314*dc5640d1SHerbert Xue    <method name="toString" return="java.lang.String"
5315*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5316*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5317*dc5640d1SHerbert Xue      deprecated="not deprecated">
5318*dc5640d1SHerbert Xue    </method>
5319*dc5640d1SHerbert Xue    <method name="hashCode" return="int"
5320*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5321*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5322*dc5640d1SHerbert Xue      deprecated="not deprecated">
5323*dc5640d1SHerbert Xue    </method>
5324*dc5640d1SHerbert Xue    <method name="equals" return="boolean"
5325*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5326*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5327*dc5640d1SHerbert Xue      deprecated="not deprecated">
5328*dc5640d1SHerbert Xue      <param name="o" type="java.lang.Object"/>
5329*dc5640d1SHerbert Xue    </method>
5330*dc5640d1SHerbert Xue    <method name="applyTo"
5331*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5332*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5333*dc5640d1SHerbert Xue      deprecated="not deprecated">
5334*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
5335*dc5640d1SHerbert Xue      <doc>
5336*dc5640d1SHerbert Xue      <![CDATA[@since 2.0]]>
5337*dc5640d1SHerbert Xue      </doc>
5338*dc5640d1SHerbert Xue    </method>
5339*dc5640d1SHerbert Xue    <doc>
5340*dc5640d1SHerbert Xue    <![CDATA[An error message and the context in which it occured. Messages are usually created internally by
5341*dc5640d1SHerbert Xue Guice and its extensions. Messages can be created explicitly in a module using {@link
5342*dc5640d1SHerbert Xue com.google.inject.Binder#addError(Throwable) addError()} statements:
5343*dc5640d1SHerbert Xue <pre>
5344*dc5640d1SHerbert Xue     try {
5345*dc5640d1SHerbert Xue       bindPropertiesFromFile();
5346*dc5640d1SHerbert Xue     } catch (IOException e) {
5347*dc5640d1SHerbert Xue       addError(e);
5348*dc5640d1SHerbert Xue     }</pre>
5349*dc5640d1SHerbert Xue
5350*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
5351*dc5640d1SHerbert Xue    </doc>
5352*dc5640d1SHerbert Xue  </class>
5353*dc5640d1SHerbert Xue  <!-- end class com.google.inject.spi.Message -->
5354*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.spi.PrivateElements -->
5355*dc5640d1SHerbert Xue  <interface name="PrivateElements"    abstract="true"
5356*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
5357*dc5640d1SHerbert Xue    deprecated="not deprecated">
5358*dc5640d1SHerbert Xue    <implements name="com.google.inject.spi.Element"/>
5359*dc5640d1SHerbert Xue    <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
5360*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5361*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5362*dc5640d1SHerbert Xue      deprecated="not deprecated">
5363*dc5640d1SHerbert Xue      <doc>
5364*dc5640d1SHerbert Xue      <![CDATA[Returns the configuration information in this private environment.]]>
5365*dc5640d1SHerbert Xue      </doc>
5366*dc5640d1SHerbert Xue    </method>
5367*dc5640d1SHerbert Xue    <method name="getInjector" return="com.google.inject.Injector"
5368*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5369*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5370*dc5640d1SHerbert Xue      deprecated="not deprecated">
5371*dc5640d1SHerbert Xue      <doc>
5372*dc5640d1SHerbert Xue      <![CDATA[Returns the child injector that hosts these private elements, or null if the elements haven't
5373*dc5640d1SHerbert Xue been used to create an injector.]]>
5374*dc5640d1SHerbert Xue      </doc>
5375*dc5640d1SHerbert Xue    </method>
5376*dc5640d1SHerbert Xue    <method name="getExposedKeys" return="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"
5377*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5378*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5379*dc5640d1SHerbert Xue      deprecated="not deprecated">
5380*dc5640d1SHerbert Xue      <doc>
5381*dc5640d1SHerbert Xue      <![CDATA[Returns the unique exposed keys for these private elements.]]>
5382*dc5640d1SHerbert Xue      </doc>
5383*dc5640d1SHerbert Xue    </method>
5384*dc5640d1SHerbert Xue    <method name="getExposedSource" return="java.lang.Object"
5385*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5386*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5387*dc5640d1SHerbert Xue      deprecated="not deprecated">
5388*dc5640d1SHerbert Xue      <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
5389*dc5640d1SHerbert Xue      <doc>
5390*dc5640d1SHerbert Xue      <![CDATA[Returns an arbitrary object containing information about the "place" where this key was
5391*dc5640d1SHerbert Xue exposed. Used by Guice in the production of descriptive error messages.
5392*dc5640d1SHerbert Xue
5393*dc5640d1SHerbert Xue <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good
5394*dc5640d1SHerbert Xue example. Tools should simply call {@code toString()} on the source object if the type is
5395*dc5640d1SHerbert Xue unfamiliar.
5396*dc5640d1SHerbert Xue
5397*dc5640d1SHerbert Xue @param key one of the keys exposed by this module.]]>
5398*dc5640d1SHerbert Xue      </doc>
5399*dc5640d1SHerbert Xue    </method>
5400*dc5640d1SHerbert Xue    <doc>
5401*dc5640d1SHerbert Xue    <![CDATA[A private collection of elements that are hidden from the enclosing injector or module by
5402*dc5640d1SHerbert Xue default. See {@link com.google.inject.PrivateModule PrivateModule} for details.
5403*dc5640d1SHerbert Xue
5404*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
5405*dc5640d1SHerbert Xue @since 2.0]]>
5406*dc5640d1SHerbert Xue    </doc>
5407*dc5640d1SHerbert Xue  </interface>
5408*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.spi.PrivateElements -->
5409*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.spi.ProviderBinding -->
5410*dc5640d1SHerbert Xue  <interface name="ProviderBinding"    abstract="true"
5411*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
5412*dc5640d1SHerbert Xue    deprecated="not deprecated">
5413*dc5640d1SHerbert Xue    <implements name="com.google.inject.Binding&lt;T&gt;"/>
5414*dc5640d1SHerbert Xue    <method name="getProvidedKey" return="com.google.inject.Key&lt;?&gt;"
5415*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5416*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5417*dc5640d1SHerbert Xue      deprecated="not deprecated">
5418*dc5640d1SHerbert Xue      <doc>
5419*dc5640d1SHerbert Xue      <![CDATA[Returns the key whose binding is used to {@link Provider#get provide instances}. That binding
5420*dc5640d1SHerbert Xue can be retrieved from an injector using {@link com.google.inject.Injector#getBinding(Key)
5421*dc5640d1SHerbert Xue Injector.getBinding(providedKey)}]]>
5422*dc5640d1SHerbert Xue      </doc>
5423*dc5640d1SHerbert Xue    </method>
5424*dc5640d1SHerbert Xue    <doc>
5425*dc5640d1SHerbert Xue    <![CDATA[A binding to a {@link Provider} that delegates to the binding for the provided type. This binding
5426*dc5640d1SHerbert Xue is used whenever a {@code Provider<T>} is injected (as opposed to injecting {@code T} directly).
5427*dc5640d1SHerbert Xue
5428*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
5429*dc5640d1SHerbert Xue @since 2.0]]>
5430*dc5640d1SHerbert Xue    </doc>
5431*dc5640d1SHerbert Xue  </interface>
5432*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.spi.ProviderBinding -->
5433*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.spi.ProviderInstanceBinding -->
5434*dc5640d1SHerbert Xue  <interface name="ProviderInstanceBinding"    abstract="true"
5435*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
5436*dc5640d1SHerbert Xue    deprecated="not deprecated">
5437*dc5640d1SHerbert Xue    <implements name="com.google.inject.Binding&lt;T&gt;"/>
5438*dc5640d1SHerbert Xue    <implements name="com.google.inject.spi.HasDependencies"/>
5439*dc5640d1SHerbert Xue    <method name="getProviderInstance" return="com.google.inject.Provider&lt;? extends T&gt;"
5440*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5441*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5442*dc5640d1SHerbert Xue      deprecated="not deprecated">
5443*dc5640d1SHerbert Xue      <doc>
5444*dc5640d1SHerbert Xue      <![CDATA[Returns the user-supplied, unscoped provider.]]>
5445*dc5640d1SHerbert Xue      </doc>
5446*dc5640d1SHerbert Xue    </method>
5447*dc5640d1SHerbert Xue    <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
5448*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5449*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5450*dc5640d1SHerbert Xue      deprecated="not deprecated">
5451*dc5640d1SHerbert Xue      <doc>
5452*dc5640d1SHerbert Xue      <![CDATA[Returns the field and method injection points of the provider, injected at injector-creation
5453*dc5640d1SHerbert Xue time only.
5454*dc5640d1SHerbert Xue
5455*dc5640d1SHerbert Xue @return a possibly empty set]]>
5456*dc5640d1SHerbert Xue      </doc>
5457*dc5640d1SHerbert Xue    </method>
5458*dc5640d1SHerbert Xue    <doc>
5459*dc5640d1SHerbert Xue    <![CDATA[A binding to a provider instance. The provider's {@code get} method is invoked to resolve
5460*dc5640d1SHerbert Xue injections.
5461*dc5640d1SHerbert Xue
5462*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
5463*dc5640d1SHerbert Xue @since 2.0]]>
5464*dc5640d1SHerbert Xue    </doc>
5465*dc5640d1SHerbert Xue  </interface>
5466*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.spi.ProviderInstanceBinding -->
5467*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.spi.ProviderKeyBinding -->
5468*dc5640d1SHerbert Xue  <interface name="ProviderKeyBinding"    abstract="true"
5469*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
5470*dc5640d1SHerbert Xue    deprecated="not deprecated">
5471*dc5640d1SHerbert Xue    <implements name="com.google.inject.Binding&lt;T&gt;"/>
5472*dc5640d1SHerbert Xue    <method name="getProviderKey" return="com.google.inject.Key&lt;? extends com.google.inject.Provider&lt;? extends T&gt;&gt;"
5473*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5474*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5475*dc5640d1SHerbert Xue      deprecated="not deprecated">
5476*dc5640d1SHerbert Xue      <doc>
5477*dc5640d1SHerbert Xue      <![CDATA[Returns the key used to resolve the provider's binding. That binding can be retrieved from an
5478*dc5640d1SHerbert Xue injector using {@link com.google.inject.Injector#getBinding(Key)
5479*dc5640d1SHerbert Xue Injector.getBinding(providerKey)}]]>
5480*dc5640d1SHerbert Xue      </doc>
5481*dc5640d1SHerbert Xue    </method>
5482*dc5640d1SHerbert Xue    <doc>
5483*dc5640d1SHerbert Xue    <![CDATA[A binding to a provider key. To resolve injections, the provider key is first resolved, then that
5484*dc5640d1SHerbert Xue provider's {@code get} method is invoked.
5485*dc5640d1SHerbert Xue
5486*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
5487*dc5640d1SHerbert Xue @since 2.0]]>
5488*dc5640d1SHerbert Xue    </doc>
5489*dc5640d1SHerbert Xue  </interface>
5490*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.spi.ProviderKeyBinding -->
5491*dc5640d1SHerbert Xue  <!-- start class com.google.inject.spi.ProviderLookup -->
5492*dc5640d1SHerbert Xue  <class name="ProviderLookup" extends="java.lang.Object"
5493*dc5640d1SHerbert Xue    abstract="false"
5494*dc5640d1SHerbert Xue    static="false" final="true" visibility="public"
5495*dc5640d1SHerbert Xue    deprecated="not deprecated">
5496*dc5640d1SHerbert Xue    <implements name="com.google.inject.spi.Element"/>
5497*dc5640d1SHerbert Xue    <constructor name="ProviderLookup" type="java.lang.Object, com.google.inject.Key&lt;T&gt;"
5498*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5499*dc5640d1SHerbert Xue      deprecated="not deprecated">
5500*dc5640d1SHerbert Xue    </constructor>
5501*dc5640d1SHerbert Xue    <method name="getSource" return="java.lang.Object"
5502*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5503*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5504*dc5640d1SHerbert Xue      deprecated="not deprecated">
5505*dc5640d1SHerbert Xue    </method>
5506*dc5640d1SHerbert Xue    <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
5507*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5508*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5509*dc5640d1SHerbert Xue      deprecated="not deprecated">
5510*dc5640d1SHerbert Xue    </method>
5511*dc5640d1SHerbert Xue    <method name="acceptVisitor" return="T"
5512*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5513*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5514*dc5640d1SHerbert Xue      deprecated="not deprecated">
5515*dc5640d1SHerbert Xue      <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
5516*dc5640d1SHerbert Xue    </method>
5517*dc5640d1SHerbert Xue    <method name="initializeDelegate"
5518*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5519*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5520*dc5640d1SHerbert Xue      deprecated="not deprecated">
5521*dc5640d1SHerbert Xue      <param name="delegate" type="com.google.inject.Provider&lt;T&gt;"/>
5522*dc5640d1SHerbert Xue      <doc>
5523*dc5640d1SHerbert Xue      <![CDATA[Sets the actual provider.
5524*dc5640d1SHerbert Xue
5525*dc5640d1SHerbert Xue @throws IllegalStateException if the delegate is already set]]>
5526*dc5640d1SHerbert Xue      </doc>
5527*dc5640d1SHerbert Xue    </method>
5528*dc5640d1SHerbert Xue    <method name="applyTo"
5529*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5530*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5531*dc5640d1SHerbert Xue      deprecated="not deprecated">
5532*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
5533*dc5640d1SHerbert Xue    </method>
5534*dc5640d1SHerbert Xue    <method name="getDelegate" return="com.google.inject.Provider&lt;T&gt;"
5535*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5536*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5537*dc5640d1SHerbert Xue      deprecated="not deprecated">
5538*dc5640d1SHerbert Xue      <doc>
5539*dc5640d1SHerbert Xue      <![CDATA[Returns the delegate provider, or {@code null} if it has not yet been initialized. The delegate
5540*dc5640d1SHerbert Xue will be initialized when this element is processed, or otherwise used to create an injector.]]>
5541*dc5640d1SHerbert Xue      </doc>
5542*dc5640d1SHerbert Xue    </method>
5543*dc5640d1SHerbert Xue    <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
5544*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5545*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5546*dc5640d1SHerbert Xue      deprecated="not deprecated">
5547*dc5640d1SHerbert Xue      <doc>
5548*dc5640d1SHerbert Xue      <![CDATA[Returns the looked up provider. The result is not valid until this lookup has been initialized,
5549*dc5640d1SHerbert Xue which usually happens when the injector is created. The provider will throw an {@code
5550*dc5640d1SHerbert Xue IllegalStateException} if you try to use it beforehand.]]>
5551*dc5640d1SHerbert Xue      </doc>
5552*dc5640d1SHerbert Xue    </method>
5553*dc5640d1SHerbert Xue    <doc>
5554*dc5640d1SHerbert Xue    <![CDATA[A lookup of the provider for a type. Lookups are created explicitly in a module using
5555*dc5640d1SHerbert Xue {@link com.google.inject.Binder#getProvider(Class) getProvider()} statements:
5556*dc5640d1SHerbert Xue <pre>
5557*dc5640d1SHerbert Xue     Provider&lt;PaymentService&gt; paymentServiceProvider
5558*dc5640d1SHerbert Xue         = getProvider(PaymentService.class);</pre>
5559*dc5640d1SHerbert Xue
5560*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
5561*dc5640d1SHerbert Xue @since 2.0]]>
5562*dc5640d1SHerbert Xue    </doc>
5563*dc5640d1SHerbert Xue  </class>
5564*dc5640d1SHerbert Xue  <!-- end class com.google.inject.spi.ProviderLookup -->
5565*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.spi.ProviderWithDependencies -->
5566*dc5640d1SHerbert Xue  <interface name="ProviderWithDependencies"    abstract="true"
5567*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
5568*dc5640d1SHerbert Xue    deprecated="not deprecated">
5569*dc5640d1SHerbert Xue    <implements name="com.google.inject.Provider&lt;T&gt;"/>
5570*dc5640d1SHerbert Xue    <implements name="com.google.inject.spi.HasDependencies"/>
5571*dc5640d1SHerbert Xue    <doc>
5572*dc5640d1SHerbert Xue    <![CDATA[A provider with dependencies on other injected types. If a {@link Provider} has dependencies that
5573*dc5640d1SHerbert Xue aren't specified in injections, this interface should be used to expose all dependencies.
5574*dc5640d1SHerbert Xue
5575*dc5640d1SHerbert Xue @since 2.0]]>
5576*dc5640d1SHerbert Xue    </doc>
5577*dc5640d1SHerbert Xue  </interface>
5578*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.spi.ProviderWithDependencies -->
5579*dc5640d1SHerbert Xue  <!-- start class com.google.inject.spi.ScopeBinding -->
5580*dc5640d1SHerbert Xue  <class name="ScopeBinding" extends="java.lang.Object"
5581*dc5640d1SHerbert Xue    abstract="false"
5582*dc5640d1SHerbert Xue    static="false" final="true" visibility="public"
5583*dc5640d1SHerbert Xue    deprecated="not deprecated">
5584*dc5640d1SHerbert Xue    <implements name="com.google.inject.spi.Element"/>
5585*dc5640d1SHerbert Xue    <method name="getSource" return="java.lang.Object"
5586*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5587*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5588*dc5640d1SHerbert Xue      deprecated="not deprecated">
5589*dc5640d1SHerbert Xue    </method>
5590*dc5640d1SHerbert Xue    <method name="getAnnotationType" return="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
5591*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5592*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5593*dc5640d1SHerbert Xue      deprecated="not deprecated">
5594*dc5640d1SHerbert Xue    </method>
5595*dc5640d1SHerbert Xue    <method name="getScope" return="com.google.inject.Scope"
5596*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5597*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5598*dc5640d1SHerbert Xue      deprecated="not deprecated">
5599*dc5640d1SHerbert Xue    </method>
5600*dc5640d1SHerbert Xue    <method name="acceptVisitor" return="T"
5601*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5602*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5603*dc5640d1SHerbert Xue      deprecated="not deprecated">
5604*dc5640d1SHerbert Xue      <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
5605*dc5640d1SHerbert Xue    </method>
5606*dc5640d1SHerbert Xue    <method name="applyTo"
5607*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5608*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5609*dc5640d1SHerbert Xue      deprecated="not deprecated">
5610*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
5611*dc5640d1SHerbert Xue    </method>
5612*dc5640d1SHerbert Xue    <doc>
5613*dc5640d1SHerbert Xue    <![CDATA[Registration of a scope annotation with the scope that implements it. Instances are created
5614*dc5640d1SHerbert Xue explicitly in a module using {@link com.google.inject.Binder#bindScope(Class, Scope) bindScope()}
5615*dc5640d1SHerbert Xue statements:
5616*dc5640d1SHerbert Xue <pre>
5617*dc5640d1SHerbert Xue     Scope recordScope = new RecordScope();
5618*dc5640d1SHerbert Xue     bindScope(RecordScoped.class, new RecordScope());</pre>
5619*dc5640d1SHerbert Xue
5620*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
5621*dc5640d1SHerbert Xue @since 2.0]]>
5622*dc5640d1SHerbert Xue    </doc>
5623*dc5640d1SHerbert Xue  </class>
5624*dc5640d1SHerbert Xue  <!-- end class com.google.inject.spi.ScopeBinding -->
5625*dc5640d1SHerbert Xue  <!-- start class com.google.inject.spi.StaticInjectionRequest -->
5626*dc5640d1SHerbert Xue  <class name="StaticInjectionRequest" extends="java.lang.Object"
5627*dc5640d1SHerbert Xue    abstract="false"
5628*dc5640d1SHerbert Xue    static="false" final="true" visibility="public"
5629*dc5640d1SHerbert Xue    deprecated="not deprecated">
5630*dc5640d1SHerbert Xue    <implements name="com.google.inject.spi.Element"/>
5631*dc5640d1SHerbert Xue    <method name="getSource" return="java.lang.Object"
5632*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5633*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5634*dc5640d1SHerbert Xue      deprecated="not deprecated">
5635*dc5640d1SHerbert Xue    </method>
5636*dc5640d1SHerbert Xue    <method name="getType" return="java.lang.Class&lt;?&gt;"
5637*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5638*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5639*dc5640d1SHerbert Xue      deprecated="not deprecated">
5640*dc5640d1SHerbert Xue    </method>
5641*dc5640d1SHerbert Xue    <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
5642*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5643*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5644*dc5640d1SHerbert Xue      deprecated="not deprecated">
5645*dc5640d1SHerbert Xue      <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/>
5646*dc5640d1SHerbert Xue      <doc>
5647*dc5640d1SHerbert Xue      <![CDATA[Returns the static methods and fields of {@code type} that will be injected to fulfill this
5648*dc5640d1SHerbert Xue request.
5649*dc5640d1SHerbert Xue
5650*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All
5651*dc5640d1SHerbert Xue      fields are returned and then all methods. Within the fields, supertype fields are returned
5652*dc5640d1SHerbert Xue      before subtype fields. Similarly, supertype methods are returned before subtype methods.
5653*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
5654*dc5640d1SHerbert Xue      a field with multiple binding annotations. The exception's {@link
5655*dc5640d1SHerbert Xue      ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
5656*dc5640d1SHerbert Xue      of the valid injection points.]]>
5657*dc5640d1SHerbert Xue      </doc>
5658*dc5640d1SHerbert Xue    </method>
5659*dc5640d1SHerbert Xue    <method name="applyTo"
5660*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5661*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5662*dc5640d1SHerbert Xue      deprecated="not deprecated">
5663*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
5664*dc5640d1SHerbert Xue    </method>
5665*dc5640d1SHerbert Xue    <method name="acceptVisitor" return="T"
5666*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5667*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5668*dc5640d1SHerbert Xue      deprecated="not deprecated">
5669*dc5640d1SHerbert Xue      <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
5670*dc5640d1SHerbert Xue    </method>
5671*dc5640d1SHerbert Xue    <doc>
5672*dc5640d1SHerbert Xue    <![CDATA[A request to inject the static fields and methods of a type. Requests are created
5673*dc5640d1SHerbert Xue explicitly in a module using {@link com.google.inject.Binder#requestStaticInjection(Class[])
5674*dc5640d1SHerbert Xue requestStaticInjection()} statements:
5675*dc5640d1SHerbert Xue <pre>
5676*dc5640d1SHerbert Xue     requestStaticInjection(MyLegacyService.class);</pre>
5677*dc5640d1SHerbert Xue
5678*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
5679*dc5640d1SHerbert Xue @since 2.0]]>
5680*dc5640d1SHerbert Xue    </doc>
5681*dc5640d1SHerbert Xue  </class>
5682*dc5640d1SHerbert Xue  <!-- end class com.google.inject.spi.StaticInjectionRequest -->
5683*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.spi.TypeConverter -->
5684*dc5640d1SHerbert Xue  <interface name="TypeConverter"    abstract="true"
5685*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
5686*dc5640d1SHerbert Xue    deprecated="not deprecated">
5687*dc5640d1SHerbert Xue    <method name="convert" return="java.lang.Object"
5688*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5689*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5690*dc5640d1SHerbert Xue      deprecated="not deprecated">
5691*dc5640d1SHerbert Xue      <param name="value" type="java.lang.String"/>
5692*dc5640d1SHerbert Xue      <param name="toType" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
5693*dc5640d1SHerbert Xue      <doc>
5694*dc5640d1SHerbert Xue      <![CDATA[Converts a string value. Throws an exception if a conversion error occurs.]]>
5695*dc5640d1SHerbert Xue      </doc>
5696*dc5640d1SHerbert Xue    </method>
5697*dc5640d1SHerbert Xue    <doc>
5698*dc5640d1SHerbert Xue    <![CDATA[Converts constant string values to a different type.
5699*dc5640d1SHerbert Xue
5700*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)
5701*dc5640d1SHerbert Xue @since 2.0]]>
5702*dc5640d1SHerbert Xue    </doc>
5703*dc5640d1SHerbert Xue  </interface>
5704*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.spi.TypeConverter -->
5705*dc5640d1SHerbert Xue  <!-- start class com.google.inject.spi.TypeConverterBinding -->
5706*dc5640d1SHerbert Xue  <class name="TypeConverterBinding" extends="java.lang.Object"
5707*dc5640d1SHerbert Xue    abstract="false"
5708*dc5640d1SHerbert Xue    static="false" final="true" visibility="public"
5709*dc5640d1SHerbert Xue    deprecated="not deprecated">
5710*dc5640d1SHerbert Xue    <implements name="com.google.inject.spi.Element"/>
5711*dc5640d1SHerbert Xue    <method name="getSource" return="java.lang.Object"
5712*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5713*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5714*dc5640d1SHerbert Xue      deprecated="not deprecated">
5715*dc5640d1SHerbert Xue    </method>
5716*dc5640d1SHerbert Xue    <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"
5717*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5718*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5719*dc5640d1SHerbert Xue      deprecated="not deprecated">
5720*dc5640d1SHerbert Xue    </method>
5721*dc5640d1SHerbert Xue    <method name="getTypeConverter" return="com.google.inject.spi.TypeConverter"
5722*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5723*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5724*dc5640d1SHerbert Xue      deprecated="not deprecated">
5725*dc5640d1SHerbert Xue    </method>
5726*dc5640d1SHerbert Xue    <method name="acceptVisitor" return="T"
5727*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5728*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5729*dc5640d1SHerbert Xue      deprecated="not deprecated">
5730*dc5640d1SHerbert Xue      <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
5731*dc5640d1SHerbert Xue    </method>
5732*dc5640d1SHerbert Xue    <method name="applyTo"
5733*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5734*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5735*dc5640d1SHerbert Xue      deprecated="not deprecated">
5736*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
5737*dc5640d1SHerbert Xue    </method>
5738*dc5640d1SHerbert Xue    <doc>
5739*dc5640d1SHerbert Xue    <![CDATA[Registration of type converters for matching target types. Instances are created
5740*dc5640d1SHerbert Xue explicitly in a module using {@link com.google.inject.Binder#convertToTypes(Matcher,
5741*dc5640d1SHerbert Xue TypeConverter) convertToTypes()} statements:
5742*dc5640d1SHerbert Xue <pre>
5743*dc5640d1SHerbert Xue     convertToTypes(Matchers.only(DateTime.class), new DateTimeConverter());</pre>
5744*dc5640d1SHerbert Xue
5745*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
5746*dc5640d1SHerbert Xue @since 2.0]]>
5747*dc5640d1SHerbert Xue    </doc>
5748*dc5640d1SHerbert Xue  </class>
5749*dc5640d1SHerbert Xue  <!-- end class com.google.inject.spi.TypeConverterBinding -->
5750*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.spi.TypeEncounter -->
5751*dc5640d1SHerbert Xue  <interface name="TypeEncounter"    abstract="true"
5752*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
5753*dc5640d1SHerbert Xue    deprecated="not deprecated">
5754*dc5640d1SHerbert Xue    <method name="addError"
5755*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5756*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5757*dc5640d1SHerbert Xue      deprecated="not deprecated">
5758*dc5640d1SHerbert Xue      <param name="message" type="java.lang.String"/>
5759*dc5640d1SHerbert Xue      <param name="arguments" type="java.lang.Object[]"/>
5760*dc5640d1SHerbert Xue      <doc>
5761*dc5640d1SHerbert Xue      <![CDATA[Records an error message for type {@code I} which will be presented to the user at a later
5762*dc5640d1SHerbert Xue time. Unlike throwing an exception, this enable us to continue configuring the Injector and
5763*dc5640d1SHerbert Xue discover more errors. Uses {@link String#format(String, Object[])} to insert the arguments
5764*dc5640d1SHerbert Xue into the message.]]>
5765*dc5640d1SHerbert Xue      </doc>
5766*dc5640d1SHerbert Xue    </method>
5767*dc5640d1SHerbert Xue    <method name="addError"
5768*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5769*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5770*dc5640d1SHerbert Xue      deprecated="not deprecated">
5771*dc5640d1SHerbert Xue      <param name="t" type="java.lang.Throwable"/>
5772*dc5640d1SHerbert Xue      <doc>
5773*dc5640d1SHerbert Xue      <![CDATA[Records an exception for type {@code I}, the full details of which will be logged, and the
5774*dc5640d1SHerbert Xue message of which will be presented to the user at a later time. If your type listener calls
5775*dc5640d1SHerbert Xue something that you worry may fail, you should catch the exception and pass it to this method.]]>
5776*dc5640d1SHerbert Xue      </doc>
5777*dc5640d1SHerbert Xue    </method>
5778*dc5640d1SHerbert Xue    <method name="addError"
5779*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5780*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5781*dc5640d1SHerbert Xue      deprecated="not deprecated">
5782*dc5640d1SHerbert Xue      <param name="message" type="com.google.inject.spi.Message"/>
5783*dc5640d1SHerbert Xue      <doc>
5784*dc5640d1SHerbert Xue      <![CDATA[Records an error message to be presented to the user at a later time.]]>
5785*dc5640d1SHerbert Xue      </doc>
5786*dc5640d1SHerbert Xue    </method>
5787*dc5640d1SHerbert Xue    <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
5788*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5789*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5790*dc5640d1SHerbert Xue      deprecated="not deprecated">
5791*dc5640d1SHerbert Xue      <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
5792*dc5640d1SHerbert Xue      <doc>
5793*dc5640d1SHerbert Xue      <![CDATA[Returns the provider used to obtain instances for the given injection key. The returned
5794*dc5640d1SHerbert Xue provider will not be valid until the injector has been created. The provider will throw an
5795*dc5640d1SHerbert Xue {@code IllegalStateException} if you try to use it beforehand.]]>
5796*dc5640d1SHerbert Xue      </doc>
5797*dc5640d1SHerbert Xue    </method>
5798*dc5640d1SHerbert Xue    <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
5799*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5800*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5801*dc5640d1SHerbert Xue      deprecated="not deprecated">
5802*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
5803*dc5640d1SHerbert Xue      <doc>
5804*dc5640d1SHerbert Xue      <![CDATA[Returns the provider used to obtain instances for the given injection type. The returned
5805*dc5640d1SHerbert Xue provider will not be valid until the injetor has been created. The provider will throw an
5806*dc5640d1SHerbert Xue {@code IllegalStateException} if you try to use it beforehand.]]>
5807*dc5640d1SHerbert Xue      </doc>
5808*dc5640d1SHerbert Xue    </method>
5809*dc5640d1SHerbert Xue    <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
5810*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5811*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5812*dc5640d1SHerbert Xue      deprecated="not deprecated">
5813*dc5640d1SHerbert Xue      <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
5814*dc5640d1SHerbert Xue      <doc>
5815*dc5640d1SHerbert Xue      <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
5816*dc5640d1SHerbert Xue of the given type {@code T}. The returned members injector will not be valid until the main
5817*dc5640d1SHerbert Xue injector has been created. The members injector will throw an {@code IllegalStateException}
5818*dc5640d1SHerbert Xue if you try to use it beforehand.
5819*dc5640d1SHerbert Xue
5820*dc5640d1SHerbert Xue @param typeLiteral type to get members injector for]]>
5821*dc5640d1SHerbert Xue      </doc>
5822*dc5640d1SHerbert Xue    </method>
5823*dc5640d1SHerbert Xue    <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
5824*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5825*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5826*dc5640d1SHerbert Xue      deprecated="not deprecated">
5827*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
5828*dc5640d1SHerbert Xue      <doc>
5829*dc5640d1SHerbert Xue      <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
5830*dc5640d1SHerbert Xue of the given type {@code T}. The returned members injector will not be valid until the main
5831*dc5640d1SHerbert Xue injector has been created. The members injector will throw an {@code IllegalStateException}
5832*dc5640d1SHerbert Xue if you try to use it beforehand.
5833*dc5640d1SHerbert Xue
5834*dc5640d1SHerbert Xue @param type type to get members injector for]]>
5835*dc5640d1SHerbert Xue      </doc>
5836*dc5640d1SHerbert Xue    </method>
5837*dc5640d1SHerbert Xue    <method name="register"
5838*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5839*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5840*dc5640d1SHerbert Xue      deprecated="not deprecated">
5841*dc5640d1SHerbert Xue      <param name="membersInjector" type="com.google.inject.MembersInjector&lt;? super I&gt;"/>
5842*dc5640d1SHerbert Xue      <doc>
5843*dc5640d1SHerbert Xue      <![CDATA[Registers a members injector for type {@code I}. Guice will use the members injector after its
5844*dc5640d1SHerbert Xue performed its own injections on an instance of {@code I}.]]>
5845*dc5640d1SHerbert Xue      </doc>
5846*dc5640d1SHerbert Xue    </method>
5847*dc5640d1SHerbert Xue    <method name="register"
5848*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5849*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5850*dc5640d1SHerbert Xue      deprecated="not deprecated">
5851*dc5640d1SHerbert Xue      <param name="listener" type="com.google.inject.spi.InjectionListener&lt;? super I&gt;"/>
5852*dc5640d1SHerbert Xue      <doc>
5853*dc5640d1SHerbert Xue      <![CDATA[Registers an injection listener for type {@code I}. Guice will notify the listener after all
5854*dc5640d1SHerbert Xue injections have been performed on an instance of {@code I}.]]>
5855*dc5640d1SHerbert Xue      </doc>
5856*dc5640d1SHerbert Xue    </method>
5857*dc5640d1SHerbert Xue    <method name="bindInterceptor"
5858*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5859*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5860*dc5640d1SHerbert Xue      deprecated="not deprecated">
5861*dc5640d1SHerbert Xue      <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
5862*dc5640d1SHerbert Xue      <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
5863*dc5640d1SHerbert Xue      <doc>
5864*dc5640d1SHerbert Xue      <![CDATA[Binds method interceptor[s] to methods matched in type {@code I} and its supertypes. A
5865*dc5640d1SHerbert Xue method is eligible for interception if:
5866*dc5640d1SHerbert Xue
5867*dc5640d1SHerbert Xue <ul>
5868*dc5640d1SHerbert Xue  <li>Guice created the instance the method is on</li>
5869*dc5640d1SHerbert Xue  <li>Neither the enclosing type nor the method is final</li>
5870*dc5640d1SHerbert Xue  <li>And the method is package-private or more accessible</li>
5871*dc5640d1SHerbert Xue </ul>
5872*dc5640d1SHerbert Xue
5873*dc5640d1SHerbert Xue @param methodMatcher matches methods the interceptor should apply to. For
5874*dc5640d1SHerbert Xue     example: {@code annotatedWith(Transactional.class)}.
5875*dc5640d1SHerbert Xue @param interceptors to bind]]>
5876*dc5640d1SHerbert Xue      </doc>
5877*dc5640d1SHerbert Xue    </method>
5878*dc5640d1SHerbert Xue    <doc>
5879*dc5640d1SHerbert Xue    <![CDATA[Context of an injectable type encounter. Enables reporting errors, registering injection
5880*dc5640d1SHerbert Xue listeners and binding method interceptors for injectable type {@code I}. It is an error to use
5881*dc5640d1SHerbert Xue an encounter after the {@link TypeListener#hear(TypeLiteral, TypeEncounter) hear()} method has
5882*dc5640d1SHerbert Xue returned.
5883*dc5640d1SHerbert Xue
5884*dc5640d1SHerbert Xue @param <I> the injectable type encountered
5885*dc5640d1SHerbert Xue @since 2.0]]>
5886*dc5640d1SHerbert Xue    </doc>
5887*dc5640d1SHerbert Xue  </interface>
5888*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.spi.TypeEncounter -->
5889*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.spi.TypeListener -->
5890*dc5640d1SHerbert Xue  <interface name="TypeListener"    abstract="true"
5891*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
5892*dc5640d1SHerbert Xue    deprecated="not deprecated">
5893*dc5640d1SHerbert Xue    <method name="hear"
5894*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5895*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5896*dc5640d1SHerbert Xue      deprecated="not deprecated">
5897*dc5640d1SHerbert Xue      <param name="type" type="com.google.inject.TypeLiteral&lt;I&gt;"/>
5898*dc5640d1SHerbert Xue      <param name="encounter" type="com.google.inject.spi.TypeEncounter&lt;I&gt;"/>
5899*dc5640d1SHerbert Xue      <doc>
5900*dc5640d1SHerbert Xue      <![CDATA[Invoked when Guice encounters a new type eligible for constructor or members injection.
5901*dc5640d1SHerbert Xue Called during injector creation (or afterwords if Guice encounters a type at run time and
5902*dc5640d1SHerbert Xue creates a JIT binding).
5903*dc5640d1SHerbert Xue
5904*dc5640d1SHerbert Xue @param type encountered by Guice
5905*dc5640d1SHerbert Xue @param encounter context of this encounter, enables reporting errors, registering injection
5906*dc5640d1SHerbert Xue     listeners and binding method interceptors for {@code type}.
5907*dc5640d1SHerbert Xue
5908*dc5640d1SHerbert Xue @param <I> the injectable type]]>
5909*dc5640d1SHerbert Xue      </doc>
5910*dc5640d1SHerbert Xue    </method>
5911*dc5640d1SHerbert Xue    <doc>
5912*dc5640d1SHerbert Xue    <![CDATA[Listens for Guice to encounter injectable types. If a given type has its constructor injected in
5913*dc5640d1SHerbert Xue one situation but only its methods and fields injected in another, Guice will notify this
5914*dc5640d1SHerbert Xue listener once.
5915*dc5640d1SHerbert Xue
5916*dc5640d1SHerbert Xue <p>Useful for extra type checking, {@linkplain TypeEncounter#register(InjectionListener)
5917*dc5640d1SHerbert Xue registering injection listeners}, and {@linkplain TypeEncounter#bindInterceptor(
5918*dc5640d1SHerbert Xue com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])
5919*dc5640d1SHerbert Xue binding method interceptors}.
5920*dc5640d1SHerbert Xue
5921*dc5640d1SHerbert Xue @since 2.0]]>
5922*dc5640d1SHerbert Xue    </doc>
5923*dc5640d1SHerbert Xue  </interface>
5924*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.spi.TypeListener -->
5925*dc5640d1SHerbert Xue  <!-- start class com.google.inject.spi.TypeListenerBinding -->
5926*dc5640d1SHerbert Xue  <class name="TypeListenerBinding" extends="java.lang.Object"
5927*dc5640d1SHerbert Xue    abstract="false"
5928*dc5640d1SHerbert Xue    static="false" final="true" visibility="public"
5929*dc5640d1SHerbert Xue    deprecated="not deprecated">
5930*dc5640d1SHerbert Xue    <implements name="com.google.inject.spi.Element"/>
5931*dc5640d1SHerbert Xue    <method name="getListener" return="com.google.inject.spi.TypeListener"
5932*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5933*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5934*dc5640d1SHerbert Xue      deprecated="not deprecated">
5935*dc5640d1SHerbert Xue      <doc>
5936*dc5640d1SHerbert Xue      <![CDATA[Returns the registered listener.]]>
5937*dc5640d1SHerbert Xue      </doc>
5938*dc5640d1SHerbert Xue    </method>
5939*dc5640d1SHerbert Xue    <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"
5940*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5941*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5942*dc5640d1SHerbert Xue      deprecated="not deprecated">
5943*dc5640d1SHerbert Xue      <doc>
5944*dc5640d1SHerbert Xue      <![CDATA[Returns the type matcher which chooses which types the listener should be notified of.]]>
5945*dc5640d1SHerbert Xue      </doc>
5946*dc5640d1SHerbert Xue    </method>
5947*dc5640d1SHerbert Xue    <method name="getSource" return="java.lang.Object"
5948*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5949*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5950*dc5640d1SHerbert Xue      deprecated="not deprecated">
5951*dc5640d1SHerbert Xue    </method>
5952*dc5640d1SHerbert Xue    <method name="acceptVisitor" return="T"
5953*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5954*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5955*dc5640d1SHerbert Xue      deprecated="not deprecated">
5956*dc5640d1SHerbert Xue      <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
5957*dc5640d1SHerbert Xue    </method>
5958*dc5640d1SHerbert Xue    <method name="applyTo"
5959*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5960*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
5961*dc5640d1SHerbert Xue      deprecated="not deprecated">
5962*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
5963*dc5640d1SHerbert Xue    </method>
5964*dc5640d1SHerbert Xue    <doc>
5965*dc5640d1SHerbert Xue    <![CDATA[Binds types (picked using a Matcher) to an type listener. Registrations are created explicitly in
5966*dc5640d1SHerbert Xue a module using {@link com.google.inject.Binder#bindListener(Matcher, TypeListener)} statements:
5967*dc5640d1SHerbert Xue
5968*dc5640d1SHerbert Xue <pre>
5969*dc5640d1SHerbert Xue     register(only(new TypeLiteral&lt;PaymentService&lt;CreditCard>>() {}), listener);</pre>
5970*dc5640d1SHerbert Xue
5971*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
5972*dc5640d1SHerbert Xue @since 2.0]]>
5973*dc5640d1SHerbert Xue    </doc>
5974*dc5640d1SHerbert Xue  </class>
5975*dc5640d1SHerbert Xue  <!-- end class com.google.inject.spi.TypeListenerBinding -->
5976*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.spi.UntargettedBinding -->
5977*dc5640d1SHerbert Xue  <interface name="UntargettedBinding"    abstract="true"
5978*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
5979*dc5640d1SHerbert Xue    deprecated="not deprecated">
5980*dc5640d1SHerbert Xue    <implements name="com.google.inject.Binding&lt;T&gt;"/>
5981*dc5640d1SHerbert Xue    <doc>
5982*dc5640d1SHerbert Xue    <![CDATA[An untargetted binding. This binding indicates that the injector should use its implicit binding
5983*dc5640d1SHerbert Xue strategies to resolve injections.
5984*dc5640d1SHerbert Xue
5985*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
5986*dc5640d1SHerbert Xue @since 2.0]]>
5987*dc5640d1SHerbert Xue    </doc>
5988*dc5640d1SHerbert Xue  </interface>
5989*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.spi.UntargettedBinding -->
5990*dc5640d1SHerbert Xue</package>
5991*dc5640d1SHerbert Xue<package name="com.google.inject.spring">
5992*dc5640d1SHerbert Xue  <!-- start class com.google.inject.spring.SpringIntegration -->
5993*dc5640d1SHerbert Xue  <class name="SpringIntegration" extends="java.lang.Object"
5994*dc5640d1SHerbert Xue    abstract="false"
5995*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
5996*dc5640d1SHerbert Xue    deprecated="not deprecated">
5997*dc5640d1SHerbert Xue    <method name="fromSpring" return="com.google.inject.Provider&lt;T&gt;"
5998*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
5999*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
6000*dc5640d1SHerbert Xue      deprecated="not deprecated">
6001*dc5640d1SHerbert Xue      <param name="type" type="java.lang.Class&lt;T&gt;"/>
6002*dc5640d1SHerbert Xue      <param name="name" type="java.lang.String"/>
6003*dc5640d1SHerbert Xue      <doc>
6004*dc5640d1SHerbert Xue      <![CDATA[Creates a provider which looks up objects from Spring using the given name.
6005*dc5640d1SHerbert Xue Expects a binding to {@link
6006*dc5640d1SHerbert Xue org.springframework.beans.factory.BeanFactory}. Example usage:
6007*dc5640d1SHerbert Xue
6008*dc5640d1SHerbert Xue <pre>
6009*dc5640d1SHerbert Xue bind(DataSource.class)
6010*dc5640d1SHerbert Xue   .toProvider(fromSpring(DataSource.class, "dataSource"));
6011*dc5640d1SHerbert Xue </pre>]]>
6012*dc5640d1SHerbert Xue      </doc>
6013*dc5640d1SHerbert Xue    </method>
6014*dc5640d1SHerbert Xue    <method name="bindAll"
6015*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6016*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
6017*dc5640d1SHerbert Xue      deprecated="not deprecated">
6018*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
6019*dc5640d1SHerbert Xue      <param name="beanFactory" type="ListableBeanFactory"/>
6020*dc5640d1SHerbert Xue      <doc>
6021*dc5640d1SHerbert Xue      <![CDATA[Binds all Spring beans from the given factory by name. For a Spring bean
6022*dc5640d1SHerbert Xue named "foo", this method creates a binding to the bean's type and
6023*dc5640d1SHerbert Xue {@code @Named("foo")}.
6024*dc5640d1SHerbert Xue
6025*dc5640d1SHerbert Xue @see com.google.inject.name.Named
6026*dc5640d1SHerbert Xue @see com.google.inject.name.Names#named(String)]]>
6027*dc5640d1SHerbert Xue      </doc>
6028*dc5640d1SHerbert Xue    </method>
6029*dc5640d1SHerbert Xue    <doc>
6030*dc5640d1SHerbert Xue    <![CDATA[Integrates Guice with Spring.
6031*dc5640d1SHerbert Xue
6032*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
6033*dc5640d1SHerbert Xue    </doc>
6034*dc5640d1SHerbert Xue  </class>
6035*dc5640d1SHerbert Xue  <!-- end class com.google.inject.spring.SpringIntegration -->
6036*dc5640d1SHerbert Xue</package>
6037*dc5640d1SHerbert Xue<package name="com.google.inject.struts2">
6038*dc5640d1SHerbert Xue  <!-- start class com.google.inject.struts2.GuiceObjectFactory -->
6039*dc5640d1SHerbert Xue  <class name="GuiceObjectFactory" extends="ObjectFactory"
6040*dc5640d1SHerbert Xue    abstract="false"
6041*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
6042*dc5640d1SHerbert Xue    deprecated="not deprecated">
6043*dc5640d1SHerbert Xue    <constructor name="GuiceObjectFactory"
6044*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
6045*dc5640d1SHerbert Xue      deprecated="not deprecated">
6046*dc5640d1SHerbert Xue    </constructor>
6047*dc5640d1SHerbert Xue    <method name="isNoArgConstructorRequired" return="boolean"
6048*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6049*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
6050*dc5640d1SHerbert Xue      deprecated="not deprecated">
6051*dc5640d1SHerbert Xue    </method>
6052*dc5640d1SHerbert Xue    <method name="getClassInstance" return="java.lang.Class"
6053*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6054*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
6055*dc5640d1SHerbert Xue      deprecated="not deprecated">
6056*dc5640d1SHerbert Xue      <param name="name" type="java.lang.String"/>
6057*dc5640d1SHerbert Xue      <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/>
6058*dc5640d1SHerbert Xue    </method>
6059*dc5640d1SHerbert Xue    <method name="buildBean" return="java.lang.Object"
6060*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6061*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
6062*dc5640d1SHerbert Xue      deprecated="not deprecated">
6063*dc5640d1SHerbert Xue      <param name="clazz" type="java.lang.Class"/>
6064*dc5640d1SHerbert Xue      <param name="extraContext" type="java.util.Map"/>
6065*dc5640d1SHerbert Xue    </method>
6066*dc5640d1SHerbert Xue    <method name="buildInterceptor" return="Interceptor"
6067*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6068*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
6069*dc5640d1SHerbert Xue      deprecated="not deprecated">
6070*dc5640d1SHerbert Xue      <param name="interceptorConfig" type="InterceptorConfig"/>
6071*dc5640d1SHerbert Xue      <param name="interceptorRefParams" type="java.util.Map"/>
6072*dc5640d1SHerbert Xue      <exception name="ConfigurationException" type="ConfigurationException"/>
6073*dc5640d1SHerbert Xue    </method>
6074*dc5640d1SHerbert Xue  </class>
6075*dc5640d1SHerbert Xue  <!-- end class com.google.inject.struts2.GuiceObjectFactory -->
6076*dc5640d1SHerbert Xue</package>
6077*dc5640d1SHerbert Xue<package name="com.google.inject.throwingproviders">
6078*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.throwingproviders.ThrowingProvider -->
6079*dc5640d1SHerbert Xue  <interface name="ThrowingProvider"    abstract="true"
6080*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
6081*dc5640d1SHerbert Xue    deprecated="not deprecated">
6082*dc5640d1SHerbert Xue    <method name="get" return="T"
6083*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6084*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
6085*dc5640d1SHerbert Xue      deprecated="not deprecated">
6086*dc5640d1SHerbert Xue      <exception name="Exception" type="java.lang.Exception"/>
6087*dc5640d1SHerbert Xue    </method>
6088*dc5640d1SHerbert Xue    <doc>
6089*dc5640d1SHerbert Xue    <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws
6090*dc5640d1SHerbert Xue a checked Exception. Users may not inject {@code T} directly.
6091*dc5640d1SHerbert Xue
6092*dc5640d1SHerbert Xue <p>This interface must be extended to use application-specific exception types.
6093*dc5640d1SHerbert Xue Such subinterfaces may not define new methods:
6094*dc5640d1SHerbert Xue <pre>
6095*dc5640d1SHerbert Xue public interface RemoteProvider&lt;T&gt; extends ThrowingProvider&lt;T, RemoteException&gt; { }
6096*dc5640d1SHerbert Xue </pre>
6097*dc5640d1SHerbert Xue
6098*dc5640d1SHerbert Xue <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned
6099*dc5640d1SHerbert Xue or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get}
6100*dc5640d1SHerbert Xue will invoked at most once within each scope.
6101*dc5640d1SHerbert Xue
6102*dc5640d1SHerbert Xue @author [email protected] (Jerome Mourits)
6103*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]>
6104*dc5640d1SHerbert Xue    </doc>
6105*dc5640d1SHerbert Xue  </interface>
6106*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.throwingproviders.ThrowingProvider -->
6107*dc5640d1SHerbert Xue  <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder -->
6108*dc5640d1SHerbert Xue  <class name="ThrowingProviderBinder" extends="java.lang.Object"
6109*dc5640d1SHerbert Xue    abstract="false"
6110*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
6111*dc5640d1SHerbert Xue    deprecated="not deprecated">
6112*dc5640d1SHerbert Xue    <method name="create" return="com.google.inject.throwingproviders.ThrowingProviderBinder"
6113*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6114*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
6115*dc5640d1SHerbert Xue      deprecated="not deprecated">
6116*dc5640d1SHerbert Xue      <param name="binder" type="com.google.inject.Binder"/>
6117*dc5640d1SHerbert Xue    </method>
6118*dc5640d1SHerbert Xue    <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P&gt;"
6119*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6120*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
6121*dc5640d1SHerbert Xue      deprecated="not deprecated">
6122*dc5640d1SHerbert Xue      <param name="interfaceType" type="java.lang.Class&lt;P&gt;"/>
6123*dc5640d1SHerbert Xue      <param name="valueType" type="java.lang.reflect.Type"/>
6124*dc5640d1SHerbert Xue    </method>
6125*dc5640d1SHerbert Xue    <doc>
6126*dc5640d1SHerbert Xue    <![CDATA[<p>Builds a binding for a {@link ThrowingProvider} using a fluent API:
6127*dc5640d1SHerbert Xue <pre><code>ThrowingProviderBinder.create(binder())
6128*dc5640d1SHerbert Xue    .bind(RemoteProvider.class, Customer.class)
6129*dc5640d1SHerbert Xue    .to(RemoteCustomerProvider.class)
6130*dc5640d1SHerbert Xue    .in(RequestScope.class);
6131*dc5640d1SHerbert Xue </code></pre>
6132*dc5640d1SHerbert Xue
6133*dc5640d1SHerbert Xue @author [email protected] (Jerome Mourits)
6134*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]>
6135*dc5640d1SHerbert Xue    </doc>
6136*dc5640d1SHerbert Xue  </class>
6137*dc5640d1SHerbert Xue  <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder -->
6138*dc5640d1SHerbert Xue  <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder -->
6139*dc5640d1SHerbert Xue  <class name="ThrowingProviderBinder.SecondaryBinder" extends="java.lang.Object"
6140*dc5640d1SHerbert Xue    abstract="false"
6141*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
6142*dc5640d1SHerbert Xue    deprecated="not deprecated">
6143*dc5640d1SHerbert Xue    <constructor name="ThrowingProviderBinder.SecondaryBinder" type="java.lang.Class&lt;P&gt;, java.lang.reflect.Type"
6144*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
6145*dc5640d1SHerbert Xue      deprecated="not deprecated">
6146*dc5640d1SHerbert Xue    </constructor>
6147*dc5640d1SHerbert Xue    <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P&gt;"
6148*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6149*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
6150*dc5640d1SHerbert Xue      deprecated="not deprecated">
6151*dc5640d1SHerbert Xue      <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
6152*dc5640d1SHerbert Xue    </method>
6153*dc5640d1SHerbert Xue    <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P&gt;"
6154*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6155*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
6156*dc5640d1SHerbert Xue      deprecated="not deprecated">
6157*dc5640d1SHerbert Xue      <param name="annotation" type="java.lang.annotation.Annotation"/>
6158*dc5640d1SHerbert Xue    </method>
6159*dc5640d1SHerbert Xue    <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
6160*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6161*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
6162*dc5640d1SHerbert Xue      deprecated="not deprecated">
6163*dc5640d1SHerbert Xue      <param name="target" type="P extends com.google.inject.throwingproviders.ThrowingProvider"/>
6164*dc5640d1SHerbert Xue    </method>
6165*dc5640d1SHerbert Xue    <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
6166*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6167*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
6168*dc5640d1SHerbert Xue      deprecated="not deprecated">
6169*dc5640d1SHerbert Xue      <param name="targetType" type="java.lang.Class&lt;? extends P&gt;"/>
6170*dc5640d1SHerbert Xue    </method>
6171*dc5640d1SHerbert Xue    <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
6172*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6173*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
6174*dc5640d1SHerbert Xue      deprecated="not deprecated">
6175*dc5640d1SHerbert Xue      <param name="targetKey" type="com.google.inject.Key&lt;? extends P&gt;"/>
6176*dc5640d1SHerbert Xue    </method>
6177*dc5640d1SHerbert Xue  </class>
6178*dc5640d1SHerbert Xue  <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder -->
6179*dc5640d1SHerbert Xue</package>
6180*dc5640d1SHerbert Xue<package name="com.google.inject.tools.jmx">
6181*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.tools.jmx.ManagedBindingMBean -->
6182*dc5640d1SHerbert Xue  <interface name="ManagedBindingMBean"    abstract="true"
6183*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
6184*dc5640d1SHerbert Xue    deprecated="not deprecated">
6185*dc5640d1SHerbert Xue    <method name="getSource" return="java.lang.String"
6186*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6187*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
6188*dc5640d1SHerbert Xue      deprecated="not deprecated">
6189*dc5640d1SHerbert Xue      <doc>
6190*dc5640d1SHerbert Xue      <![CDATA[Gets the source of this binding.]]>
6191*dc5640d1SHerbert Xue      </doc>
6192*dc5640d1SHerbert Xue    </method>
6193*dc5640d1SHerbert Xue    <method name="getProvider" return="java.lang.String"
6194*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6195*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
6196*dc5640d1SHerbert Xue      deprecated="not deprecated">
6197*dc5640d1SHerbert Xue      <doc>
6198*dc5640d1SHerbert Xue      <![CDATA[Gets the provider to which this binding is bound.]]>
6199*dc5640d1SHerbert Xue      </doc>
6200*dc5640d1SHerbert Xue    </method>
6201*dc5640d1SHerbert Xue    <method name="getKey" return="java.lang.String"
6202*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6203*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
6204*dc5640d1SHerbert Xue      deprecated="not deprecated">
6205*dc5640d1SHerbert Xue      <doc>
6206*dc5640d1SHerbert Xue      <![CDATA[Gets the binding key.]]>
6207*dc5640d1SHerbert Xue      </doc>
6208*dc5640d1SHerbert Xue    </method>
6209*dc5640d1SHerbert Xue    <doc>
6210*dc5640d1SHerbert Xue    <![CDATA[JMX interface to bindings.
6211*dc5640d1SHerbert Xue
6212*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
6213*dc5640d1SHerbert Xue    </doc>
6214*dc5640d1SHerbert Xue  </interface>
6215*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.tools.jmx.ManagedBindingMBean -->
6216*dc5640d1SHerbert Xue  <!-- start class com.google.inject.tools.jmx.Manager -->
6217*dc5640d1SHerbert Xue  <class name="Manager" extends="java.lang.Object"
6218*dc5640d1SHerbert Xue    abstract="false"
6219*dc5640d1SHerbert Xue    static="false" final="false" visibility="public"
6220*dc5640d1SHerbert Xue    deprecated="not deprecated">
6221*dc5640d1SHerbert Xue    <constructor name="Manager"
6222*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
6223*dc5640d1SHerbert Xue      deprecated="not deprecated">
6224*dc5640d1SHerbert Xue    </constructor>
6225*dc5640d1SHerbert Xue    <method name="manage"
6226*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6227*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
6228*dc5640d1SHerbert Xue      deprecated="not deprecated">
6229*dc5640d1SHerbert Xue      <param name="domain" type="java.lang.String"/>
6230*dc5640d1SHerbert Xue      <param name="injector" type="com.google.inject.Injector"/>
6231*dc5640d1SHerbert Xue      <doc>
6232*dc5640d1SHerbert Xue      <![CDATA[Registers all the bindings of an Injector with the platform MBean server.
6233*dc5640d1SHerbert Xue Consider using the name of your root {@link Module} class as the domain.]]>
6234*dc5640d1SHerbert Xue      </doc>
6235*dc5640d1SHerbert Xue    </method>
6236*dc5640d1SHerbert Xue    <method name="manage"
6237*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6238*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
6239*dc5640d1SHerbert Xue      deprecated="not deprecated">
6240*dc5640d1SHerbert Xue      <param name="server" type="javax.management.MBeanServer"/>
6241*dc5640d1SHerbert Xue      <param name="domain" type="java.lang.String"/>
6242*dc5640d1SHerbert Xue      <param name="injector" type="com.google.inject.Injector"/>
6243*dc5640d1SHerbert Xue      <doc>
6244*dc5640d1SHerbert Xue      <![CDATA[Registers all the bindings of an Injector with the given MBean server.
6245*dc5640d1SHerbert Xue Consider using the name of your root {@link Module} class as the domain.]]>
6246*dc5640d1SHerbert Xue      </doc>
6247*dc5640d1SHerbert Xue    </method>
6248*dc5640d1SHerbert Xue    <method name="main"
6249*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6250*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
6251*dc5640d1SHerbert Xue      deprecated="not deprecated">
6252*dc5640d1SHerbert Xue      <param name="args" type="java.lang.String[]"/>
6253*dc5640d1SHerbert Xue      <exception name="Exception" type="java.lang.Exception"/>
6254*dc5640d1SHerbert Xue      <doc>
6255*dc5640d1SHerbert Xue      <![CDATA[Run with no arguments for usage instructions.]]>
6256*dc5640d1SHerbert Xue      </doc>
6257*dc5640d1SHerbert Xue    </method>
6258*dc5640d1SHerbert Xue    <doc>
6259*dc5640d1SHerbert Xue    <![CDATA[Provides a JMX interface to Guice.
6260*dc5640d1SHerbert Xue
6261*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]>
6262*dc5640d1SHerbert Xue    </doc>
6263*dc5640d1SHerbert Xue  </class>
6264*dc5640d1SHerbert Xue  <!-- end class com.google.inject.tools.jmx.Manager -->
6265*dc5640d1SHerbert Xue</package>
6266*dc5640d1SHerbert Xue<package name="com.google.inject.util">
6267*dc5640d1SHerbert Xue  <!-- start class com.google.inject.util.Modules -->
6268*dc5640d1SHerbert Xue  <class name="Modules" extends="java.lang.Object"
6269*dc5640d1SHerbert Xue    abstract="false"
6270*dc5640d1SHerbert Xue    static="false" final="true" visibility="public"
6271*dc5640d1SHerbert Xue    deprecated="not deprecated">
6272*dc5640d1SHerbert Xue    <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder"
6273*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6274*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
6275*dc5640d1SHerbert Xue      deprecated="not deprecated">
6276*dc5640d1SHerbert Xue      <param name="modules" type="com.google.inject.Module[]"/>
6277*dc5640d1SHerbert Xue      <doc>
6278*dc5640d1SHerbert Xue      <![CDATA[Returns a builder that creates a module that overlays override modules over the given
6279*dc5640d1SHerbert Xue modules. If a key is bound in both sets of modules, only the binding from the override modules
6280*dc5640d1SHerbert Xue is kept. This can be used to replace the bindings of a production module with test bindings:
6281*dc5640d1SHerbert Xue <pre>
6282*dc5640d1SHerbert Xue Module functionalTestModule
6283*dc5640d1SHerbert Xue     = Modules.override(new ProductionModule()).with(new TestModule());
6284*dc5640d1SHerbert Xue </pre>
6285*dc5640d1SHerbert Xue
6286*dc5640d1SHerbert Xue <p>Prefer to write smaller modules that can be reused and tested without overrides.
6287*dc5640d1SHerbert Xue
6288*dc5640d1SHerbert Xue @param modules the modules whose bindings are open to be overridden]]>
6289*dc5640d1SHerbert Xue      </doc>
6290*dc5640d1SHerbert Xue    </method>
6291*dc5640d1SHerbert Xue    <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder"
6292*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6293*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
6294*dc5640d1SHerbert Xue      deprecated="not deprecated">
6295*dc5640d1SHerbert Xue      <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
6296*dc5640d1SHerbert Xue      <doc>
6297*dc5640d1SHerbert Xue      <![CDATA[Returns a builder that creates a module that overlays override modules over the given
6298*dc5640d1SHerbert Xue modules. If a key is bound in both sets of modules, only the binding from the override modules
6299*dc5640d1SHerbert Xue is kept. This can be used to replace the bindings of a production module with test bindings:
6300*dc5640d1SHerbert Xue <pre>
6301*dc5640d1SHerbert Xue Module functionalTestModule
6302*dc5640d1SHerbert Xue     = Modules.override(getProductionModules()).with(getTestModules());
6303*dc5640d1SHerbert Xue </pre>
6304*dc5640d1SHerbert Xue
6305*dc5640d1SHerbert Xue <p>Prefer to write smaller modules that can be reused and tested without overrides.
6306*dc5640d1SHerbert Xue
6307*dc5640d1SHerbert Xue @param modules the modules whose bindings are open to be overridden]]>
6308*dc5640d1SHerbert Xue      </doc>
6309*dc5640d1SHerbert Xue    </method>
6310*dc5640d1SHerbert Xue    <method name="combine" return="com.google.inject.Module"
6311*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6312*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
6313*dc5640d1SHerbert Xue      deprecated="not deprecated">
6314*dc5640d1SHerbert Xue      <param name="modules" type="com.google.inject.Module[]"/>
6315*dc5640d1SHerbert Xue      <doc>
6316*dc5640d1SHerbert Xue      <![CDATA[Returns a new module that installs all of {@code modules}.]]>
6317*dc5640d1SHerbert Xue      </doc>
6318*dc5640d1SHerbert Xue    </method>
6319*dc5640d1SHerbert Xue    <method name="combine" return="com.google.inject.Module"
6320*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6321*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
6322*dc5640d1SHerbert Xue      deprecated="not deprecated">
6323*dc5640d1SHerbert Xue      <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
6324*dc5640d1SHerbert Xue      <doc>
6325*dc5640d1SHerbert Xue      <![CDATA[Returns a new module that installs all of {@code modules}.]]>
6326*dc5640d1SHerbert Xue      </doc>
6327*dc5640d1SHerbert Xue    </method>
6328*dc5640d1SHerbert Xue    <field name="EMPTY_MODULE" type="com.google.inject.Module"
6329*dc5640d1SHerbert Xue      transient="false" volatile="false"
6330*dc5640d1SHerbert Xue      static="true" final="true" visibility="public"
6331*dc5640d1SHerbert Xue      deprecated="not deprecated">
6332*dc5640d1SHerbert Xue    </field>
6333*dc5640d1SHerbert Xue    <doc>
6334*dc5640d1SHerbert Xue    <![CDATA[Static utility methods for creating and working with instances of {@link Module}.
6335*dc5640d1SHerbert Xue
6336*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)
6337*dc5640d1SHerbert Xue @since 2.0]]>
6338*dc5640d1SHerbert Xue    </doc>
6339*dc5640d1SHerbert Xue  </class>
6340*dc5640d1SHerbert Xue  <!-- end class com.google.inject.util.Modules -->
6341*dc5640d1SHerbert Xue  <!-- start interface com.google.inject.util.Modules.OverriddenModuleBuilder -->
6342*dc5640d1SHerbert Xue  <interface name="Modules.OverriddenModuleBuilder"    abstract="true"
6343*dc5640d1SHerbert Xue    static="true" final="false" visibility="public"
6344*dc5640d1SHerbert Xue    deprecated="not deprecated">
6345*dc5640d1SHerbert Xue    <method name="with" return="com.google.inject.Module"
6346*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6347*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
6348*dc5640d1SHerbert Xue      deprecated="not deprecated">
6349*dc5640d1SHerbert Xue      <param name="overrides" type="com.google.inject.Module[]"/>
6350*dc5640d1SHerbert Xue      <doc>
6351*dc5640d1SHerbert Xue      <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
6352*dc5640d1SHerbert Xue      </doc>
6353*dc5640d1SHerbert Xue    </method>
6354*dc5640d1SHerbert Xue    <method name="with" return="com.google.inject.Module"
6355*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6356*dc5640d1SHerbert Xue      static="false" final="false" visibility="public"
6357*dc5640d1SHerbert Xue      deprecated="not deprecated">
6358*dc5640d1SHerbert Xue      <param name="overrides" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
6359*dc5640d1SHerbert Xue      <doc>
6360*dc5640d1SHerbert Xue      <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
6361*dc5640d1SHerbert Xue      </doc>
6362*dc5640d1SHerbert Xue    </method>
6363*dc5640d1SHerbert Xue    <doc>
6364*dc5640d1SHerbert Xue    <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
6365*dc5640d1SHerbert Xue    </doc>
6366*dc5640d1SHerbert Xue  </interface>
6367*dc5640d1SHerbert Xue  <!-- end interface com.google.inject.util.Modules.OverriddenModuleBuilder -->
6368*dc5640d1SHerbert Xue  <!-- start class com.google.inject.util.Providers -->
6369*dc5640d1SHerbert Xue  <class name="Providers" extends="java.lang.Object"
6370*dc5640d1SHerbert Xue    abstract="false"
6371*dc5640d1SHerbert Xue    static="false" final="true" visibility="public"
6372*dc5640d1SHerbert Xue    deprecated="not deprecated">
6373*dc5640d1SHerbert Xue    <method name="of" return="com.google.inject.Provider&lt;T&gt;"
6374*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6375*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
6376*dc5640d1SHerbert Xue      deprecated="not deprecated">
6377*dc5640d1SHerbert Xue      <param name="instance" type="T"/>
6378*dc5640d1SHerbert Xue      <doc>
6379*dc5640d1SHerbert Xue      <![CDATA[Returns a provider which always provides {@code instance}.  This should not
6380*dc5640d1SHerbert Xue be necessary to use in your application, but is helpful for several types
6381*dc5640d1SHerbert Xue of unit tests.
6382*dc5640d1SHerbert Xue
6383*dc5640d1SHerbert Xue @param instance the instance that should always be provided.  This is also
6384*dc5640d1SHerbert Xue     permitted to be null, to enable aggressive testing, although in real
6385*dc5640d1SHerbert Xue     life a Guice-supplied Provider will never return null.]]>
6386*dc5640d1SHerbert Xue      </doc>
6387*dc5640d1SHerbert Xue    </method>
6388*dc5640d1SHerbert Xue    <doc>
6389*dc5640d1SHerbert Xue    <![CDATA[Static utility methods for creating and working with instances of
6390*dc5640d1SHerbert Xue {@link Provider}.
6391*dc5640d1SHerbert Xue
6392*dc5640d1SHerbert Xue @author Kevin Bourrillion ([email protected])
6393*dc5640d1SHerbert Xue @since 2.0]]>
6394*dc5640d1SHerbert Xue    </doc>
6395*dc5640d1SHerbert Xue  </class>
6396*dc5640d1SHerbert Xue  <!-- end class com.google.inject.util.Providers -->
6397*dc5640d1SHerbert Xue  <!-- start class com.google.inject.util.Types -->
6398*dc5640d1SHerbert Xue  <class name="Types" extends="java.lang.Object"
6399*dc5640d1SHerbert Xue    abstract="false"
6400*dc5640d1SHerbert Xue    static="false" final="true" visibility="public"
6401*dc5640d1SHerbert Xue    deprecated="not deprecated">
6402*dc5640d1SHerbert Xue    <method name="newParameterizedType" return="java.lang.reflect.ParameterizedType"
6403*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6404*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
6405*dc5640d1SHerbert Xue      deprecated="not deprecated">
6406*dc5640d1SHerbert Xue      <param name="rawType" type="java.lang.reflect.Type"/>
6407*dc5640d1SHerbert Xue      <param name="typeArguments" type="java.lang.reflect.Type[]"/>
6408*dc5640d1SHerbert Xue      <doc>
6409*dc5640d1SHerbert Xue      <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to
6410*dc5640d1SHerbert Xue {@code rawType}. The returned type does not have an owner type.
6411*dc5640d1SHerbert Xue
6412*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]>
6413*dc5640d1SHerbert Xue      </doc>
6414*dc5640d1SHerbert Xue    </method>
6415*dc5640d1SHerbert Xue    <method name="newParameterizedTypeWithOwner" return="java.lang.reflect.ParameterizedType"
6416*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6417*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
6418*dc5640d1SHerbert Xue      deprecated="not deprecated">
6419*dc5640d1SHerbert Xue      <param name="ownerType" type="java.lang.reflect.Type"/>
6420*dc5640d1SHerbert Xue      <param name="rawType" type="java.lang.reflect.Type"/>
6421*dc5640d1SHerbert Xue      <param name="typeArguments" type="java.lang.reflect.Type[]"/>
6422*dc5640d1SHerbert Xue      <doc>
6423*dc5640d1SHerbert Xue      <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to
6424*dc5640d1SHerbert Xue {@code rawType} and enclosed by {@code ownerType}.
6425*dc5640d1SHerbert Xue
6426*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]>
6427*dc5640d1SHerbert Xue      </doc>
6428*dc5640d1SHerbert Xue    </method>
6429*dc5640d1SHerbert Xue    <method name="arrayOf" return="java.lang.reflect.GenericArrayType"
6430*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6431*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
6432*dc5640d1SHerbert Xue      deprecated="not deprecated">
6433*dc5640d1SHerbert Xue      <param name="componentType" type="java.lang.reflect.Type"/>
6434*dc5640d1SHerbert Xue      <doc>
6435*dc5640d1SHerbert Xue      <![CDATA[Returns an array type whose elements are all instances of
6436*dc5640d1SHerbert Xue {@code componentType}.
6437*dc5640d1SHerbert Xue
6438*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} generic array type.]]>
6439*dc5640d1SHerbert Xue      </doc>
6440*dc5640d1SHerbert Xue    </method>
6441*dc5640d1SHerbert Xue    <method name="subtypeOf" return="java.lang.reflect.WildcardType"
6442*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6443*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
6444*dc5640d1SHerbert Xue      deprecated="not deprecated">
6445*dc5640d1SHerbert Xue      <param name="bound" type="java.lang.reflect.Type"/>
6446*dc5640d1SHerbert Xue      <doc>
6447*dc5640d1SHerbert Xue      <![CDATA[Returns a type that represents an unknown type that extends {@code bound}.
6448*dc5640d1SHerbert Xue For example, if {@code bound} is {@code CharSequence.class}, this returns
6449*dc5640d1SHerbert Xue {@code ? extends CharSequence}. If {@code bound} is {@code Object.class},
6450*dc5640d1SHerbert Xue this returns {@code ?}, which is shorthand for {@code ? extends Object}.]]>
6451*dc5640d1SHerbert Xue      </doc>
6452*dc5640d1SHerbert Xue    </method>
6453*dc5640d1SHerbert Xue    <method name="supertypeOf" return="java.lang.reflect.WildcardType"
6454*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6455*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
6456*dc5640d1SHerbert Xue      deprecated="not deprecated">
6457*dc5640d1SHerbert Xue      <param name="bound" type="java.lang.reflect.Type"/>
6458*dc5640d1SHerbert Xue      <doc>
6459*dc5640d1SHerbert Xue      <![CDATA[Returns a type that represents an unknown supertype of {@code bound}. For
6460*dc5640d1SHerbert Xue example, if {@code bound} is {@code String.class}, this returns {@code ?
6461*dc5640d1SHerbert Xue super String}.]]>
6462*dc5640d1SHerbert Xue      </doc>
6463*dc5640d1SHerbert Xue    </method>
6464*dc5640d1SHerbert Xue    <method name="listOf" return="java.lang.reflect.ParameterizedType"
6465*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6466*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
6467*dc5640d1SHerbert Xue      deprecated="not deprecated">
6468*dc5640d1SHerbert Xue      <param name="elementType" type="java.lang.reflect.Type"/>
6469*dc5640d1SHerbert Xue      <doc>
6470*dc5640d1SHerbert Xue      <![CDATA[Returns a type modelling a {@link List} whose elements are of type
6471*dc5640d1SHerbert Xue {@code elementType}.
6472*dc5640d1SHerbert Xue
6473*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]>
6474*dc5640d1SHerbert Xue      </doc>
6475*dc5640d1SHerbert Xue    </method>
6476*dc5640d1SHerbert Xue    <method name="setOf" return="java.lang.reflect.ParameterizedType"
6477*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6478*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
6479*dc5640d1SHerbert Xue      deprecated="not deprecated">
6480*dc5640d1SHerbert Xue      <param name="elementType" type="java.lang.reflect.Type"/>
6481*dc5640d1SHerbert Xue      <doc>
6482*dc5640d1SHerbert Xue      <![CDATA[Returns a type modelling a {@link Set} whose elements are of type
6483*dc5640d1SHerbert Xue {@code elementType}.
6484*dc5640d1SHerbert Xue
6485*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]>
6486*dc5640d1SHerbert Xue      </doc>
6487*dc5640d1SHerbert Xue    </method>
6488*dc5640d1SHerbert Xue    <method name="mapOf" return="java.lang.reflect.ParameterizedType"
6489*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6490*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
6491*dc5640d1SHerbert Xue      deprecated="not deprecated">
6492*dc5640d1SHerbert Xue      <param name="keyType" type="java.lang.reflect.Type"/>
6493*dc5640d1SHerbert Xue      <param name="valueType" type="java.lang.reflect.Type"/>
6494*dc5640d1SHerbert Xue      <doc>
6495*dc5640d1SHerbert Xue      <![CDATA[Returns a type modelling a {@link Map} whose keys are of type
6496*dc5640d1SHerbert Xue {@code keyType} and whose values are of type {@code valueType}.
6497*dc5640d1SHerbert Xue
6498*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]>
6499*dc5640d1SHerbert Xue      </doc>
6500*dc5640d1SHerbert Xue    </method>
6501*dc5640d1SHerbert Xue    <method name="providerOf" return="java.lang.reflect.ParameterizedType"
6502*dc5640d1SHerbert Xue      abstract="false" native="false" synchronized="false"
6503*dc5640d1SHerbert Xue      static="true" final="false" visibility="public"
6504*dc5640d1SHerbert Xue      deprecated="not deprecated">
6505*dc5640d1SHerbert Xue      <param name="providedType" type="java.lang.reflect.Type"/>
6506*dc5640d1SHerbert Xue      <doc>
6507*dc5640d1SHerbert Xue      <![CDATA[Returns a type modelling a {@link Provider} that provides elements of type
6508*dc5640d1SHerbert Xue {@code elementType}.
6509*dc5640d1SHerbert Xue
6510*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]>
6511*dc5640d1SHerbert Xue      </doc>
6512*dc5640d1SHerbert Xue    </method>
6513*dc5640d1SHerbert Xue    <doc>
6514*dc5640d1SHerbert Xue    <![CDATA[Static methods for working with types.
6515*dc5640d1SHerbert Xue
6516*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)
6517*dc5640d1SHerbert Xue @since 2.0]]>
6518*dc5640d1SHerbert Xue    </doc>
6519*dc5640d1SHerbert Xue  </class>
6520*dc5640d1SHerbert Xue  <!-- end class com.google.inject.util.Types -->
6521*dc5640d1SHerbert Xue</package>
6522*dc5640d1SHerbert Xue
6523*dc5640d1SHerbert Xue</api>
6524