blob: 1b1e7d286b5f3ee7455fd991635c24f570a35005 [file] [log] [blame]
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
2<!-- Generated by the JDiff Javadoc doclet -->
3<!-- (http://www.jdiff.org) -->
4<!-- on Thu Mar 20 20:36:47 PDT 2014 -->
5
6<api
7 xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
8 xsi:noNamespaceSchemaLocation='api.xsd'
9 name="4.0"
10 jdversion="1.1.1">
11
12<!-- Command line arguments = -doclet jdiff.JDiff -docletpath /Users/cgruber/OpenSource/guice/googlecode-master/lib/build/jdiff/jdiff.jar:/Users/cgruber/OpenSource/guice/googlecode-master/lib/build/jdiff/xerces.jar -classpath /Users/cgruber/OpenSource/guice/googlecode-master/lib/javax.inject.jar:/Users/cgruber/OpenSource/guice/googlecode-master/lib/aopalliance.jar:/Users/cgruber/OpenSource/guice/googlecode-master/lib/guava-16.0.1.jar -doclet jdiff.JDiff -docletpath /Users/cgruber/OpenSource/guice/googlecode-master/lib/build/jdiff/jdiff.jar:/Users/cgruber/OpenSource/guice/googlecode-master/lib/build/jdiff/xerces.jar -apidir build/docs/latest-api-diffs -apiname 4.0 -->
13<package name="com.google.inject">
14 <!-- start class com.google.inject.AbstractModule -->
15 <class name="AbstractModule" extends="java.lang.Object"
16 abstract="true"
17 static="false" final="false" visibility="public"
18 deprecated="not deprecated">
19 <implements name="com.google.inject.Module"/>
20 <constructor name="AbstractModule"
21 static="false" final="false" visibility="public"
22 deprecated="not deprecated">
23 </constructor>
24 <method name="configure"
25 abstract="false" native="false" synchronized="true"
26 static="false" final="true" visibility="public"
27 deprecated="not deprecated">
28 <param name="builder" type="com.google.inject.Binder"/>
29 </method>
30 <method name="configure"
31 abstract="true" native="false" synchronized="false"
32 static="false" final="false" visibility="protected"
33 deprecated="not deprecated">
34 <doc>
35 <![CDATA[Configures a {@link Binder} via the exposed methods.]]>
36 </doc>
37 </method>
38 <method name="binder" return="com.google.inject.Binder"
39 abstract="false" native="false" synchronized="false"
40 static="false" final="false" visibility="protected"
41 deprecated="not deprecated">
42 <doc>
43 <![CDATA[Gets direct access to the underlying {@code Binder}.]]>
44 </doc>
45 </method>
46 <method name="bindScope"
47 abstract="false" native="false" synchronized="false"
48 static="false" final="false" visibility="protected"
49 deprecated="not deprecated">
50 <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
51 <param name="scope" type="com.google.inject.Scope"/>
52 <doc>
53 <![CDATA[@see Binder#bindScope(Class, Scope)]]>
54 </doc>
55 </method>
56 <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
57 abstract="false" native="false" synchronized="false"
58 static="false" final="false" visibility="protected"
59 deprecated="not deprecated">
60 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
61 <doc>
62 <![CDATA[@see Binder#bind(Key)]]>
63 </doc>
64 </method>
65 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
66 abstract="false" native="false" synchronized="false"
67 static="false" final="false" visibility="protected"
68 deprecated="not deprecated">
69 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
70 <doc>
71 <![CDATA[@see Binder#bind(TypeLiteral)]]>
72 </doc>
73 </method>
74 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
75 abstract="false" native="false" synchronized="false"
76 static="false" final="false" visibility="protected"
77 deprecated="not deprecated">
78 <param name="clazz" type="java.lang.Class&lt;T&gt;"/>
79 <doc>
80 <![CDATA[@see Binder#bind(Class)]]>
81 </doc>
82 </method>
83 <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder"
84 abstract="false" native="false" synchronized="false"
85 static="false" final="false" visibility="protected"
86 deprecated="not deprecated">
87 <doc>
88 <![CDATA[@see Binder#bindConstant()]]>
89 </doc>
90 </method>
91 <method name="install"
92 abstract="false" native="false" synchronized="false"
93 static="false" final="false" visibility="protected"
94 deprecated="not deprecated">
95 <param name="module" type="com.google.inject.Module"/>
96 <doc>
97 <![CDATA[@see Binder#install(Module)]]>
98 </doc>
99 </method>
100 <method name="addError"
101 abstract="false" native="false" synchronized="false"
102 static="false" final="false" visibility="protected"
103 deprecated="not deprecated">
104 <param name="message" type="java.lang.String"/>
105 <param name="arguments" type="java.lang.Object[]"/>
106 <doc>
107 <![CDATA[@see Binder#addError(String, Object[])]]>
108 </doc>
109 </method>
110 <method name="addError"
111 abstract="false" native="false" synchronized="false"
112 static="false" final="false" visibility="protected"
113 deprecated="not deprecated">
114 <param name="t" type="java.lang.Throwable"/>
115 <doc>
116 <![CDATA[@see Binder#addError(Throwable)]]>
117 </doc>
118 </method>
119 <method name="addError"
120 abstract="false" native="false" synchronized="false"
121 static="false" final="false" visibility="protected"
122 deprecated="not deprecated">
123 <param name="message" type="com.google.inject.spi.Message"/>
124 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700125 <![CDATA[@see Binder#addError(Message)
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700126 @since 2.0]]>
127 </doc>
128 </method>
129 <method name="requestInjection"
130 abstract="false" native="false" synchronized="false"
131 static="false" final="false" visibility="protected"
132 deprecated="not deprecated">
133 <param name="instance" type="java.lang.Object"/>
134 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700135 <![CDATA[@see Binder#requestInjection(Object)
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700136 @since 2.0]]>
137 </doc>
138 </method>
139 <method name="requestStaticInjection"
140 abstract="false" native="false" synchronized="false"
141 static="false" final="false" visibility="protected"
142 deprecated="not deprecated">
143 <param name="types" type="java.lang.Class[]"/>
144 <doc>
145 <![CDATA[@see Binder#requestStaticInjection(Class[])]]>
146 </doc>
147 </method>
148 <method name="bindInterceptor"
149 abstract="false" native="false" synchronized="false"
150 static="false" final="false" visibility="protected"
151 deprecated="not deprecated">
152 <param name="classMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
153 <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
154 <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
155 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700156 <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher,
157 com.google.inject.matcher.Matcher,
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700158 org.aopalliance.intercept.MethodInterceptor[])]]>
159 </doc>
160 </method>
161 <method name="requireBinding"
162 abstract="false" native="false" synchronized="false"
163 static="false" final="false" visibility="protected"
164 deprecated="not deprecated">
165 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
166 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700167 <![CDATA[Adds a dependency from this module to {@code key}. When the injector is
168 created, Guice will report an error if {@code key} cannot be injected.
169 Note that this requirement may be satisfied by implicit binding, such as
170 a public no-arguments constructor.
171
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700172 @since 2.0]]>
173 </doc>
174 </method>
175 <method name="requireBinding"
176 abstract="false" native="false" synchronized="false"
177 static="false" final="false" visibility="protected"
178 deprecated="not deprecated">
179 <param name="type" type="java.lang.Class&lt;?&gt;"/>
180 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700181 <![CDATA[Adds a dependency from this module to {@code type}. When the injector is
182 created, Guice will report an error if {@code type} cannot be injected.
183 Note that this requirement may be satisfied by implicit binding, such as
184 a public no-arguments constructor.
185
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700186 @since 2.0]]>
187 </doc>
188 </method>
189 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
190 abstract="false" native="false" synchronized="false"
191 static="false" final="false" visibility="protected"
192 deprecated="not deprecated">
193 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
194 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700195 <![CDATA[@see Binder#getProvider(Key)
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700196 @since 2.0]]>
197 </doc>
198 </method>
199 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
200 abstract="false" native="false" synchronized="false"
201 static="false" final="false" visibility="protected"
202 deprecated="not deprecated">
203 <param name="type" type="java.lang.Class&lt;T&gt;"/>
204 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700205 <![CDATA[@see Binder#getProvider(Class)
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700206 @since 2.0]]>
207 </doc>
208 </method>
209 <method name="convertToTypes"
210 abstract="false" native="false" synchronized="false"
211 static="false" final="false" visibility="protected"
212 deprecated="not deprecated">
213 <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
214 <param name="converter" type="com.google.inject.spi.TypeConverter"/>
215 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700216 <![CDATA[@see Binder#convertToTypes
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700217 @since 2.0]]>
218 </doc>
219 </method>
220 <method name="currentStage" return="com.google.inject.Stage"
221 abstract="false" native="false" synchronized="false"
222 static="false" final="false" visibility="protected"
223 deprecated="not deprecated">
224 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700225 <![CDATA[@see Binder#currentStage()
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700226 @since 2.0]]>
227 </doc>
228 </method>
229 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
230 abstract="false" native="false" synchronized="false"
231 static="false" final="false" visibility="protected"
232 deprecated="not deprecated">
233 <param name="type" type="java.lang.Class&lt;T&gt;"/>
234 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700235 <![CDATA[@see Binder#getMembersInjector(Class)
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700236 @since 2.0]]>
237 </doc>
238 </method>
239 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
240 abstract="false" native="false" synchronized="false"
241 static="false" final="false" visibility="protected"
242 deprecated="not deprecated">
243 <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
244 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700245 <![CDATA[@see Binder#getMembersInjector(TypeLiteral)
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700246 @since 2.0]]>
247 </doc>
248 </method>
249 <method name="bindListener"
250 abstract="false" native="false" synchronized="false"
251 static="false" final="false" visibility="protected"
252 deprecated="not deprecated">
253 <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
254 <param name="listener" type="com.google.inject.spi.TypeListener"/>
255 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700256 <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher,
257 com.google.inject.spi.TypeListener)
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700258 @since 2.0]]>
259 </doc>
260 </method>
261 <method name="bindListener"
262 abstract="false" native="false" synchronized="false"
263 static="false" final="false" visibility="protected"
264 deprecated="not deprecated">
265 <param name="bindingMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.Binding&lt;?&gt;&gt;"/>
266 <param name="listener" type="com.google.inject.spi.ProvisionListener[]"/>
267 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700268 <![CDATA[@see Binder#bindListener(Matcher, ProvisionListener...)
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700269 @since 4.0]]>
270 </doc>
271 </method>
272 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700273 <![CDATA[A support class for {@link Module}s which reduces repetition and results in
274 a more readable configuration. Simply extend this class, implement {@link
275 #configure()}, and call the inherited methods which mirror those found in
276 {@link Binder}. For example:
277
278 <pre>
279 public class MyModule extends AbstractModule {
280 protected void configure() {
281 bind(Service.class).to(ServiceImpl.class).in(Singleton.class);
282 bind(CreditCardPaymentService.class);
283 bind(PaymentService.class).to(CreditCardPaymentService.class);
284 bindConstant().annotatedWith(Names.named("port")).to(8080);
285 }
286 }
287 </pre>
288
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700289 @author crazybob@google.com (Bob Lee)]]>
290 </doc>
291 </class>
292 <!-- end class com.google.inject.AbstractModule -->
293 <!-- start interface com.google.inject.Binder -->
294 <interface name="Binder" abstract="true"
295 static="false" final="false" visibility="public"
296 deprecated="not deprecated">
297 <method name="bindInterceptor"
298 abstract="true" native="false" synchronized="false"
299 static="false" final="false" visibility="public"
300 deprecated="not deprecated">
301 <param name="classMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
302 <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
303 <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
304 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700305 <![CDATA[Binds method interceptor[s] to methods matched by class and method matchers. A method is
306 eligible for interception if:
307
308 <ul>
309 <li>Guice created the instance the method is on</li>
310 <li>Neither the enclosing type nor the method is final</li>
311 <li>And the method is package-private, protected, or public</li>
312 </ul>
313
314 @param classMatcher matches classes the interceptor should apply to. For
315 example: {@code only(Runnable.class)}.
316 @param methodMatcher matches methods the interceptor should apply to. For
317 example: {@code annotatedWith(Transactional.class)}.
318 @param interceptors to bind. The interceptors are called in the order they
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700319 are given.]]>
320 </doc>
321 </method>
322 <method name="bindScope"
323 abstract="true" native="false" synchronized="false"
324 static="false" final="false" visibility="public"
325 deprecated="not deprecated">
326 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
327 <param name="scope" type="com.google.inject.Scope"/>
328 <doc>
329 <![CDATA[Binds a scope to an annotation.]]>
330 </doc>
331 </method>
332 <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
333 abstract="true" native="false" synchronized="false"
334 static="false" final="false" visibility="public"
335 deprecated="not deprecated">
336 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
337 <doc>
338 <![CDATA[See the EDSL examples at {@link Binder}.]]>
339 </doc>
340 </method>
341 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
342 abstract="true" native="false" synchronized="false"
343 static="false" final="false" visibility="public"
344 deprecated="not deprecated">
345 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
346 <doc>
347 <![CDATA[See the EDSL examples at {@link Binder}.]]>
348 </doc>
349 </method>
350 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
351 abstract="true" native="false" synchronized="false"
352 static="false" final="false" visibility="public"
353 deprecated="not deprecated">
354 <param name="type" type="java.lang.Class&lt;T&gt;"/>
355 <doc>
356 <![CDATA[See the EDSL examples at {@link Binder}.]]>
357 </doc>
358 </method>
359 <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder"
360 abstract="true" native="false" synchronized="false"
361 static="false" final="false" visibility="public"
362 deprecated="not deprecated">
363 <doc>
364 <![CDATA[See the EDSL examples at {@link Binder}.]]>
365 </doc>
366 </method>
367 <method name="requestInjection"
368 abstract="true" native="false" synchronized="false"
369 static="false" final="false" visibility="public"
370 deprecated="not deprecated">
371 <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
372 <param name="instance" type="T"/>
373 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700374 <![CDATA[Upon successful creation, the {@link Injector} will inject instance fields
375 and methods of the given object.
376
377 @param type of instance
378 @param instance for which members will be injected
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700379 @since 2.0]]>
380 </doc>
381 </method>
382 <method name="requestInjection"
383 abstract="true" native="false" synchronized="false"
384 static="false" final="false" visibility="public"
385 deprecated="not deprecated">
386 <param name="instance" type="java.lang.Object"/>
387 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700388 <![CDATA[Upon successful creation, the {@link Injector} will inject instance fields
389 and methods of the given object.
390
391 @param instance for which members will be injected
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700392 @since 2.0]]>
393 </doc>
394 </method>
395 <method name="requestStaticInjection"
396 abstract="true" native="false" synchronized="false"
397 static="false" final="false" visibility="public"
398 deprecated="not deprecated">
399 <param name="types" type="java.lang.Class[]"/>
400 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700401 <![CDATA[Upon successful creation, the {@link Injector} will inject static fields
402 and methods in the given classes.
403
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700404 @param types for which static members will be injected]]>
405 </doc>
406 </method>
407 <method name="install"
408 abstract="true" native="false" synchronized="false"
409 static="false" final="false" visibility="public"
410 deprecated="not deprecated">
411 <param name="module" type="com.google.inject.Module"/>
412 <doc>
413 <![CDATA[Uses the given module to configure more bindings.]]>
414 </doc>
415 </method>
416 <method name="currentStage" return="com.google.inject.Stage"
417 abstract="true" native="false" synchronized="false"
418 static="false" final="false" visibility="public"
419 deprecated="not deprecated">
420 <doc>
421 <![CDATA[Gets the current stage.]]>
422 </doc>
423 </method>
424 <method name="addError"
425 abstract="true" native="false" synchronized="false"
426 static="false" final="false" visibility="public"
427 deprecated="not deprecated">
428 <param name="message" type="java.lang.String"/>
429 <param name="arguments" type="java.lang.Object[]"/>
430 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700431 <![CDATA[Records an error message which will be presented to the user at a later
432 time. Unlike throwing an exception, this enable us to continue
433 configuring the Injector and discover more errors. Uses {@link
434 String#format(String, Object[])} to insert the arguments into the
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700435 message.]]>
436 </doc>
437 </method>
438 <method name="addError"
439 abstract="true" native="false" synchronized="false"
440 static="false" final="false" visibility="public"
441 deprecated="not deprecated">
442 <param name="t" type="java.lang.Throwable"/>
443 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700444 <![CDATA[Records an exception, the full details of which will be logged, and the
445 message of which will be presented to the user at a later
446 time. If your Module calls something that you worry may fail, you should
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700447 catch the exception and pass it into this.]]>
448 </doc>
449 </method>
450 <method name="addError"
451 abstract="true" native="false" synchronized="false"
452 static="false" final="false" visibility="public"
453 deprecated="not deprecated">
454 <param name="message" type="com.google.inject.spi.Message"/>
455 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700456 <![CDATA[Records an error message to be presented to the user at a later time.
457
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700458 @since 2.0]]>
459 </doc>
460 </method>
461 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
462 abstract="true" native="false" synchronized="false"
463 static="false" final="false" visibility="public"
464 deprecated="not deprecated">
465 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
466 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700467 <![CDATA[Returns the provider used to obtain instances for the given injection key.
468 The returned provider will not be valid until the {@link Injector} has been
469 created. The provider will throw an {@code IllegalStateException} if you
470 try to use it beforehand.
471
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700472 @since 2.0]]>
473 </doc>
474 </method>
475 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
476 abstract="true" native="false" synchronized="false"
477 static="false" final="false" visibility="public"
478 deprecated="not deprecated">
479 <param name="type" type="java.lang.Class&lt;T&gt;"/>
480 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700481 <![CDATA[Returns the provider used to obtain instances for the given injection type.
482 The returned provider will not be valid until the {@link Injector} has been
483 created. The provider will throw an {@code IllegalStateException} if you
484 try to use it beforehand.
485
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700486 @since 2.0]]>
487 </doc>
488 </method>
489 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
490 abstract="true" native="false" synchronized="false"
491 static="false" final="false" visibility="public"
492 deprecated="not deprecated">
493 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
494 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700495 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
496 of the given type {@code T}. The returned members injector will not be valid until the main
497 {@link Injector} has been created. The members injector will throw an {@code
498 IllegalStateException} if you try to use it beforehand.
499
500 @param typeLiteral type to get members injector for
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700501 @since 2.0]]>
502 </doc>
503 </method>
504 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
505 abstract="true" native="false" synchronized="false"
506 static="false" final="false" visibility="public"
507 deprecated="not deprecated">
508 <param name="type" type="java.lang.Class&lt;T&gt;"/>
509 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700510 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
511 of the given type {@code T}. The returned members injector will not be valid until the main
512 {@link Injector} has been created. The members injector will throw an {@code
513 IllegalStateException} if you try to use it beforehand.
514
515 @param type type to get members injector for
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700516 @since 2.0]]>
517 </doc>
518 </method>
519 <method name="convertToTypes"
520 abstract="true" native="false" synchronized="false"
521 static="false" final="false" visibility="public"
522 deprecated="not deprecated">
523 <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
524 <param name="converter" type="com.google.inject.spi.TypeConverter"/>
525 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700526 <![CDATA[Binds a type converter. The injector will use the given converter to
527 convert string constants to matching types as needed.
528
529 @param typeMatcher matches types the converter can handle
530 @param converter converts values
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700531 @since 2.0]]>
532 </doc>
533 </method>
534 <method name="bindListener"
535 abstract="true" native="false" synchronized="false"
536 static="false" final="false" visibility="public"
537 deprecated="not deprecated">
538 <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
539 <param name="listener" type="com.google.inject.spi.TypeListener"/>
540 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700541 <![CDATA[Registers a listener for injectable types. Guice will notify the listener when it encounters
542 injectable types matched by the given type matcher.
543
544 @param typeMatcher that matches injectable types the listener should be notified of
545 @param listener for injectable types matched by typeMatcher
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700546 @since 2.0]]>
547 </doc>
548 </method>
549 <method name="bindListener"
550 abstract="true" native="false" synchronized="false"
551 static="false" final="false" visibility="public"
552 deprecated="not deprecated">
553 <param name="bindingMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.Binding&lt;?&gt;&gt;"/>
554 <param name="listeners" type="com.google.inject.spi.ProvisionListener[]"/>
555 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700556 <![CDATA[Registers listeners for provisioned objects. Guice will notify the
557 listeners just before and after the object is provisioned. Provisioned
558 objects that are also injectable (everything except objects provided
559 through Providers) can also be notified through TypeListeners registered in
560 {@link #bindListener}.
561
562 @param bindingMatcher that matches bindings of provisioned objects the listener
563 should be notified of
564 @param listeners for provisioned objects matched by bindingMatcher
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700565 @since 4.0]]>
566 </doc>
567 </method>
568 <method name="withSource" return="com.google.inject.Binder"
569 abstract="true" native="false" synchronized="false"
570 static="false" final="false" visibility="public"
571 deprecated="not deprecated">
572 <param name="source" type="java.lang.Object"/>
573 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700574 <![CDATA[Returns a binder that uses {@code source} as the reference location for
575 configuration errors. This is typically a {@link StackTraceElement}
576 for {@code .java} source but it could any binding source, such as the
577 path to a {@code .properties} file.
578
579 @param source any object representing the source location and has a
580 concise {@link Object#toString() toString()} value
581 @return a binder that shares its configuration with this binder
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700582 @since 2.0]]>
583 </doc>
584 </method>
585 <method name="skipSources" return="com.google.inject.Binder"
586 abstract="true" native="false" synchronized="false"
587 static="false" final="false" visibility="public"
588 deprecated="not deprecated">
589 <param name="classesToSkip" type="java.lang.Class[]"/>
590 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700591 <![CDATA[Returns a binder that skips {@code classesToSkip} when identify the
592 calling code. The caller's {@link StackTraceElement} is used to locate
593 the source of configuration errors.
594
595 @param classesToSkip library classes that create bindings on behalf of
596 their clients.
597 @return a binder that shares its configuration with this binder.
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700598 @since 2.0]]>
599 </doc>
600 </method>
601 <method name="newPrivateBinder" return="com.google.inject.PrivateBinder"
602 abstract="true" native="false" synchronized="false"
603 static="false" final="false" visibility="public"
604 deprecated="not deprecated">
605 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700606 <![CDATA[Creates a new private child environment for bindings and other configuration. The returned
607 binder can be used to add and configuration information in this environment. See {@link
608 PrivateModule} for details.
609
610 @return a binder that inherits configuration from this binder. Only exposed configuration on
611 the returned binder will be visible to this binder.
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700612 @since 2.0]]>
613 </doc>
614 </method>
615 <method name="requireExplicitBindings"
616 abstract="true" native="false" synchronized="false"
617 static="false" final="false" visibility="public"
618 deprecated="not deprecated">
619 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700620 <![CDATA[Instructs the Injector that bindings must be listed in a Module in order to
621 be injected. Classes that are not explicitly bound in a module cannot be
622 injected. Bindings created through a linked binding (
623 <code>bind(Foo.class).to(FooImpl.class)</code>) are allowed, but the
624 implicit binding (<code>FooImpl</code>) cannot be directly injected unless
625 it is also explicitly bound (<code>bind(FooImpl.class)</code>).
626 <p>
627 Tools can still retrieve bindings for implicit bindings (bindings created
628 through a linked binding) if explicit bindings are required, however
629 {@link Binding#getProvider} will fail.
630 <p>
631 By default, explicit bindings are not required.
632 <p>
633 If a parent injector requires explicit bindings, then all child injectors
634 (and private modules within that injector) also require explicit bindings.
635 If a parent does not require explicit bindings, a child injector or private
636 module may optionally declare itself as requiring explicit bindings. If it
637 does, the behavior is limited only to that child or any grandchildren. No
638 siblings of the child will require explicit bindings.
639 <p>
640 If the parent did not require explicit bindings but the child does, it is
641 possible that a linked binding in the child may add a JIT binding to the
642 parent. The child will not be allowed to reference the target binding
643 directly, but the parent and other children of the parent may be able to.
644
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700645 @since 3.0]]>
646 </doc>
647 </method>
648 <method name="disableCircularProxies"
649 abstract="true" native="false" synchronized="false"
650 static="false" final="false" visibility="public"
651 deprecated="not deprecated">
652 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700653 <![CDATA[Prevents Guice from constructing a {@link Proxy} when a circular dependency
654 is found. By default, circular proxies are not disabled.
655 <p>
656 If a parent injector disables circular proxies, then all child injectors
657 (and private modules within that injector) also disable circular proxies.
658 If a parent does not disable circular proxies, a child injector or private
659 module may optionally declare itself as disabling circular proxies. If it
660 does, the behavior is limited only to that child or any grandchildren. No
661 siblings of the child will disable circular proxies.
662
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700663 @since 3.0]]>
664 </doc>
665 </method>
666 <method name="requireAtInjectOnConstructors"
667 abstract="true" native="false" synchronized="false"
668 static="false" final="false" visibility="public"
669 deprecated="not deprecated">
670 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700671 <![CDATA[Requires that a {@literal @}{@link Inject} annotation exists on a constructor in order for
672 Guice to consider it an eligible injectable class. By default, Guice will inject classes that
673 have a no-args constructor if no {@literal @}{@link Inject} annotation exists on any
674 constructor.
675 <p>
676 If the class is bound using {@link LinkedBindingBuilder#toConstructor}, Guice will still inject
677 that constructor regardless of annotations.
678
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700679 @since 4.0]]>
680 </doc>
681 </method>
682 <method name="requireExactBindingAnnotations"
683 abstract="true" native="false" synchronized="false"
684 static="false" final="false" visibility="public"
685 deprecated="not deprecated">
686 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700687 <![CDATA[Requires that Guice finds an exactly matching binding annotation. This disables the
688 error-prone feature in Guice where it can substitute a binding for
689 <code>{@literal @}Named Foo</code> when attempting to inject
690 <code>{@literal @}Named("foo") Foo</code>.
691
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700692 @since 4.0]]>
693 </doc>
694 </method>
695 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700696 <![CDATA[Collects configuration information (primarily <i>bindings</i>) which will be
697 used to create an {@link Injector}. Guice provides this object to your
698 application's {@link Module} implementors so they may each contribute
699 their own bindings and other registrations.
700
701 <h3>The Guice Binding EDSL</h3>
702
703 Guice uses an <i>embedded domain-specific language</i>, or EDSL, to help you
704 create bindings simply and readably. This approach is great for overall
705 usability, but it does come with a small cost: <b>it is difficult to
706 learn how to use the Binding EDSL by reading
707 method-level javadocs</b>. Instead, you should consult the series of
708 examples below. To save space, these examples omit the opening
709 {@code binder}, just as you will if your module extends
710 {@link AbstractModule}.
711
712 <pre>
713 bind(ServiceImpl.class);</pre>
714
715 This statement does essentially nothing; it "binds the {@code ServiceImpl}
716 class to itself" and does not change Guice's default behavior. You may still
717 want to use this if you prefer your {@link Module} class to serve as an
718 explicit <i>manifest</i> for the services it provides. Also, in rare cases,
719 Guice may be unable to validate a binding at injector creation time unless it
720 is given explicitly.
721
722 <pre>
723 bind(Service.class).to(ServiceImpl.class);</pre>
724
725 Specifies that a request for a {@code Service} instance with no binding
726 annotations should be treated as if it were a request for a
727 {@code ServiceImpl} instance. This <i>overrides</i> the function of any
728 {@link ImplementedBy @ImplementedBy} or {@link ProvidedBy @ProvidedBy}
729 annotations found on {@code Service}, since Guice will have already
730 "moved on" to {@code ServiceImpl} before it reaches the point when it starts
731 looking for these annotations.
732
733 <pre>
734 bind(Service.class).toProvider(ServiceProvider.class);</pre>
735
736 In this example, {@code ServiceProvider} must extend or implement
737 {@code Provider<Service>}. This binding specifies that Guice should resolve
738 an unannotated injection request for {@code Service} by first resolving an
739 instance of {@code ServiceProvider} in the regular way, then calling
740 {@link Provider#get get()} on the resulting Provider instance to obtain the
741 {@code Service} instance.
742
743 <p>The {@link Provider} you use here does not have to be a "factory"; that
744 is, a provider which always <i>creates</i> each instance it provides.
745 However, this is generally a good practice to follow. You can then use
746 Guice's concept of {@link Scope scopes} to guide when creation should happen
747 -- "letting Guice work for you".
748
749 <pre>
750 bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class);</pre>
751
752 Like the previous example, but only applies to injection requests that use
753 the binding annotation {@code @Red}. If your module also includes bindings
754 for particular <i>values</i> of the {@code @Red} annotation (see below),
755 then this binding will serve as a "catch-all" for any values of {@code @Red}
756 that have no exact match in the bindings.
757
758 <pre>
759 bind(ServiceImpl.class).in(Singleton.class);
760 // or, alternatively
761 bind(ServiceImpl.class).in(Scopes.SINGLETON);</pre>
762
763 Either of these statements places the {@code ServiceImpl} class into
764 singleton scope. Guice will create only one instance of {@code ServiceImpl}
765 and will reuse it for all injection requests of this type. Note that it is
766 still possible to bind another instance of {@code ServiceImpl} if the second
767 binding is qualified by an annotation as in the previous example. Guice is
768 not overly concerned with <i>preventing</i> you from creating multiple
769 instances of your "singletons", only with <i>enabling</i> your application to
770 share only one instance if that's all you tell Guice you need.
771
772 <p><b>Note:</b> a scope specified in this way <i>overrides</i> any scope that
773 was specified with an annotation on the {@code ServiceImpl} class.
774
775 <p>Besides {@link Singleton}/{@link Scopes#SINGLETON}, there are
776 servlet-specific scopes available in
777 {@code com.google.inject.servlet.ServletScopes}, and your Modules can
778 contribute their own custom scopes for use here as well.
779
780 <pre>
781 bind(new TypeLiteral&lt;PaymentService&lt;CreditCard>>() {})
782 .to(CreditCardPaymentService.class);</pre>
783
784 This admittedly odd construct is the way to bind a parameterized type. It
785 tells Guice how to honor an injection request for an element of type
786 {@code PaymentService<CreditCard>}. The class
787 {@code CreditCardPaymentService} must implement the
788 {@code PaymentService<CreditCard>} interface. Guice cannot currently bind or
789 inject a generic type, such as {@code Set<E>}; all type parameters must be
790 fully specified.
791
792 <pre>
793 bind(Service.class).toInstance(new ServiceImpl());
794 // or, alternatively
795 bind(Service.class).toInstance(SomeLegacyRegistry.getService());</pre>
796
797 In this example, your module itself, <i>not Guice</i>, takes responsibility
798 for obtaining a {@code ServiceImpl} instance, then asks Guice to always use
799 this single instance to fulfill all {@code Service} injection requests. When
800 the {@link Injector} is created, it will automatically perform field
801 and method injection for this instance, but any injectable constructor on
802 {@code ServiceImpl} is simply ignored. Note that using this approach results
803 in "eager loading" behavior that you can't control.
804
805 <pre>
806 bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre>
807
808 Sets up a constant binding. Constant injections must always be annotated.
809 When a constant binding's value is a string, it is eligile for conversion to
810 all primitive types, to {@link Enum#valueOf(Class, String) all enums}, and to
811 {@link Class#forName class literals}. Conversions for other types can be
812 configured using {@link #convertToTypes(Matcher, TypeConverter)
813 convertToTypes()}.
814
815 <pre>
816 {@literal @}Color("red") Color red; // A member variable (field)
817 . . .
818 red = MyModule.class.getDeclaredField("red").getAnnotation(Color.class);
819 bind(Service.class).annotatedWith(red).to(RedService.class);</pre>
820
821 If your binding annotation has parameters you can apply different bindings to
822 different specific values of your annotation. Getting your hands on the
823 right instance of the annotation is a bit of a pain -- one approach, shown
824 above, is to apply a prototype annotation to a field in your module class, so
825 that you can read this annotation instance and give it to Guice.
826
827 <pre>
828 bind(Service.class)
829 .annotatedWith(Names.named("blue"))
830 .to(BlueService.class);</pre>
831
832 Differentiating by names is a common enough use case that we provided a
833 standard annotation, {@link com.google.inject.name.Named @Named}. Because of
834 Guice's library support, binding by name is quite easier than in the
835 arbitrary binding annotation case we just saw. However, remember that these
836 names will live in a single flat namespace with all the other names used in
837 your application.
838
839 <pre>
840 Constructor<T> loneCtor = getLoneCtorFromServiceImplViaReflection();
841 bind(ServiceImpl.class)
842 .toConstructor(loneCtor);</pre>
843
844 In this example, we directly tell Guice which constructor to use in a concrete
845 class implementation. It means that we do not need to place {@literal @}Inject
846 on any of the constructors and that Guice treats the provided constructor as though
847 it were annotated so. It is useful for cases where you cannot modify existing
848 classes and is a bit simpler than using a {@link Provider}.
849
850 <p>The above list of examples is far from exhaustive. If you can think of
851 how the concepts of one example might coexist with the concepts from another,
852 you can most likely weave the two together. If the two concepts make no
853 sense with each other, you most likely won't be able to do it. In a few
854 cases Guice will let something bogus slip by, and will then inform you of
855 the problems at runtime, as soon as you try to create your Injector.
856
857 <p>The other methods of Binder such as {@link #bindScope},
858 {@link #bindInterceptor}, {@link #install}, {@link #requestStaticInjection},
859 {@link #addError} and {@link #currentStage} are not part of the Binding EDSL;
860 you can learn how to use these in the usual way, from the method
861 documentation.
862
863 @author crazybob@google.com (Bob Lee)
864 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700865 @author kevinb@google.com (Kevin Bourrillion)]]>
866 </doc>
867 </interface>
868 <!-- end interface com.google.inject.Binder -->
869 <!-- start interface com.google.inject.Binding -->
870 <interface name="Binding" abstract="true"
871 static="false" final="false" visibility="public"
872 deprecated="not deprecated">
873 <implements name="com.google.inject.spi.Element"/>
874 <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
875 abstract="true" native="false" synchronized="false"
876 static="false" final="false" visibility="public"
877 deprecated="not deprecated">
878 <doc>
879 <![CDATA[Returns the key for this binding.]]>
880 </doc>
881 </method>
882 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
883 abstract="true" native="false" synchronized="false"
884 static="false" final="false" visibility="public"
885 deprecated="not deprecated">
886 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700887 <![CDATA[Returns the scoped provider guice uses to fulfill requests for this
888 binding.
889
890 @throws UnsupportedOperationException when invoked on a {@link Binding}
891 created via {@link com.google.inject.spi.Elements#getElements}. This
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700892 method is only supported on {@link Binding}s returned from an injector.]]>
893 </doc>
894 </method>
895 <method name="acceptTargetVisitor" return="V"
896 abstract="true" native="false" synchronized="false"
897 static="false" final="false" visibility="public"
898 deprecated="not deprecated">
899 <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor&lt;? super T, V&gt;"/>
900 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700901 <![CDATA[Accepts a target visitor. Invokes the visitor method specific to this binding's target.
902
903 @param visitor to call back on
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700904 @since 2.0]]>
905 </doc>
906 </method>
907 <method name="acceptScopingVisitor" return="V"
908 abstract="true" native="false" synchronized="false"
909 static="false" final="false" visibility="public"
910 deprecated="not deprecated">
911 <param name="visitor" type="com.google.inject.spi.BindingScopingVisitor&lt;V&gt;"/>
912 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700913 <![CDATA[Accepts a scoping visitor. Invokes the visitor method specific to this binding's scoping.
914
915 @param visitor to call back on
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700916 @since 2.0]]>
917 </doc>
918 </method>
919 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700920 <![CDATA[A mapping from a key (type and optional annotation) to the strategy for getting instances of the
921 type. This interface is part of the introspection API and is intended primarily for use by
922 tools.
923
924 <p>Bindings are created in several ways:
925 <ul>
926 <li>Explicitly in a module, via {@code bind()} and {@code bindConstant()}
927 statements:
928 <pre>
929 bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class);
930 bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre></li>
931 <li>Implicitly by the Injector by following a type's {@link ImplementedBy
932 pointer} {@link ProvidedBy annotations} or by using its {@link Inject annotated} or
933 default constructor.</li>
934 <li>By converting a bound instance to a different type.</li>
935 <li>For {@link Provider providers}, by delegating to the binding for the provided type.</li>
936 </ul>
937
938
939 <p>They exist on both modules and on injectors, and their behaviour is different for each:
940 <ul>
941 <li><strong>Module bindings</strong> are incomplete and cannot be used to provide instances.
942 This is because the applicable scopes and interceptors may not be known until an injector
943 is created. From a tool's perspective, module bindings are like the injector's source
944 code. They can be inspected or rewritten, but this analysis must be done statically.</li>
945 <li><strong>Injector bindings</strong> are complete and valid and can be used to provide
946 instances. From a tools' perspective, injector bindings are like reflection for an
947 injector. They have full runtime information, including the complete graph of injections
948 necessary to satisfy a binding.</li>
949 </ul>
950
951 @param <T> the bound type. The injected is always assignable to this type.
952
953 @author crazybob@google.com (Bob Lee)
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700954 @author jessewilson@google.com (Jesse Wilson)]]>
955 </doc>
956 </interface>
957 <!-- end interface com.google.inject.Binding -->
958 <!-- start class com.google.inject.BindingAnnotation -->
959 <class name="BindingAnnotation" abstract="true"
960 static="false" final="false" visibility="public"
961 deprecated="not deprecated">
962 <implements name="java.lang.annotation.Annotation"/>
963 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -0700964 <![CDATA[Annotates annotations which are used for binding. Only one such annotation
965 may apply to a single injection point. You must also annotate binder
966 annotations with {@code @Retention(RUNTIME)}. For example:
967
968 <pre>
969 {@code @}Retention(RUNTIME)
970 {@code @}Target({ FIELD, PARAMETER, METHOD })
971 {@code @}BindingAnnotation
972 public {@code @}interface Transactional {}
973 </pre>
974
Christian Edward Gruber509e3542014-03-20 20:37:34 -0700975 @author crazybob@google.com (Bob Lee)]]>
976 </doc>
977 </class>
978 <!-- end class com.google.inject.BindingAnnotation -->
979 <!-- start class com.google.inject.ConfigurationException -->
980 <class name="ConfigurationException" extends="java.lang.RuntimeException"
981 abstract="false"
982 static="false" final="true" visibility="public"
983 deprecated="not deprecated">
984 <constructor name="ConfigurationException" type="java.lang.Iterable&lt;com.google.inject.spi.Message&gt;"
985 static="false" final="false" visibility="public"
986 deprecated="not deprecated">
987 <doc>
988 <![CDATA[Creates a ConfigurationException containing {@code messages}.]]>
989 </doc>
990 </constructor>
991 <method name="withPartialValue" return="com.google.inject.ConfigurationException"
992 abstract="false" native="false" synchronized="false"
993 static="false" final="false" visibility="public"
994 deprecated="not deprecated">
995 <param name="partialValue" type="java.lang.Object"/>
996 <doc>
997 <![CDATA[Returns a copy of this configuration exception with the specified partial value.]]>
998 </doc>
999 </method>
1000 <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
1001 abstract="false" native="false" synchronized="false"
1002 static="false" final="false" visibility="public"
1003 deprecated="not deprecated">
1004 <doc>
1005 <![CDATA[Returns messages for the errors that caused this exception.]]>
1006 </doc>
1007 </method>
1008 <method name="getPartialValue" return="E"
1009 abstract="false" native="false" synchronized="false"
1010 static="false" final="false" visibility="public"
1011 deprecated="not deprecated">
1012 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001013 <![CDATA[Returns a value that was only partially computed due to this exception. The caller can use
1014 this while collecting additional configuration problems.
1015
1016 @return the partial value, or {@code null} if none was set. The type of the partial value is
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001017 specified by the throwing method.]]>
1018 </doc>
1019 </method>
1020 <method name="getMessage" return="java.lang.String"
1021 abstract="false" native="false" synchronized="false"
1022 static="false" final="false" visibility="public"
1023 deprecated="not deprecated">
1024 </method>
1025 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001026 <![CDATA[Thrown when a programming error such as a misplaced annotation, illegal binding, or unsupported
1027 scope is found. Clients should catch this exception, log it, and stop execution.
1028
1029 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001030 @since 2.0]]>
1031 </doc>
1032 </class>
1033 <!-- end class com.google.inject.ConfigurationException -->
1034 <!-- start class com.google.inject.CreationException -->
1035 <class name="CreationException" extends="java.lang.RuntimeException"
1036 abstract="false"
1037 static="false" final="false" visibility="public"
1038 deprecated="not deprecated">
1039 <constructor name="CreationException" type="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
1040 static="false" final="false" visibility="public"
1041 deprecated="not deprecated">
1042 <doc>
1043 <![CDATA[Creates a CreationException containing {@code messages}.]]>
1044 </doc>
1045 </constructor>
1046 <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
1047 abstract="false" native="false" synchronized="false"
1048 static="false" final="false" visibility="public"
1049 deprecated="not deprecated">
1050 <doc>
1051 <![CDATA[Returns messages for the errors that caused this exception.]]>
1052 </doc>
1053 </method>
1054 <method name="getMessage" return="java.lang.String"
1055 abstract="false" native="false" synchronized="false"
1056 static="false" final="false" visibility="public"
1057 deprecated="not deprecated">
1058 </method>
1059 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001060 <![CDATA[Thrown when errors occur while creating a {@link Injector}. Includes a list of encountered
1061 errors. Clients should catch this exception, log it, and stop execution.
1062
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001063 @author crazybob@google.com (Bob Lee)]]>
1064 </doc>
1065 </class>
1066 <!-- end class com.google.inject.CreationException -->
1067 <!-- start class com.google.inject.Exposed -->
1068 <class name="Exposed" abstract="true"
1069 static="false" final="false" visibility="public"
1070 deprecated="not deprecated">
1071 <implements name="java.lang.annotation.Annotation"/>
1072 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001073 <![CDATA[Acccompanies a {@literal @}{@link com.google.inject.Provides Provides} method annotation in a
1074 private module to indicate that the provided binding is exposed.
1075
1076 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001077 @since 2.0]]>
1078 </doc>
1079 </class>
1080 <!-- end class com.google.inject.Exposed -->
1081 <!-- start class com.google.inject.Guice -->
1082 <class name="Guice" extends="java.lang.Object"
1083 abstract="false"
1084 static="false" final="true" visibility="public"
1085 deprecated="not deprecated">
1086 <method name="createInjector" return="com.google.inject.Injector"
1087 abstract="false" native="false" synchronized="false"
1088 static="true" final="false" visibility="public"
1089 deprecated="not deprecated">
1090 <param name="modules" type="com.google.inject.Module[]"/>
1091 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001092 <![CDATA[Creates an injector for the given set of modules. This is equivalent to
1093 calling {@link #createInjector(Stage, Module...)} with Stage.DEVELOPMENT.
1094
1095 @throws CreationException if one or more errors occur during injector
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001096 construction]]>
1097 </doc>
1098 </method>
1099 <method name="createInjector" return="com.google.inject.Injector"
1100 abstract="false" native="false" synchronized="false"
1101 static="true" final="false" visibility="public"
1102 deprecated="not deprecated">
1103 <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
1104 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001105 <![CDATA[Creates an injector for the given set of modules. This is equivalent to
1106 calling {@link #createInjector(Stage, Iterable)} with Stage.DEVELOPMENT.
1107
1108 @throws CreationException if one or more errors occur during injector
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001109 creation]]>
1110 </doc>
1111 </method>
1112 <method name="createInjector" return="com.google.inject.Injector"
1113 abstract="false" native="false" synchronized="false"
1114 static="true" final="false" visibility="public"
1115 deprecated="not deprecated">
1116 <param name="stage" type="com.google.inject.Stage"/>
1117 <param name="modules" type="com.google.inject.Module[]"/>
1118 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001119 <![CDATA[Creates an injector for the given set of modules, in a given development
1120 stage.
1121
1122 @throws CreationException if one or more errors occur during injector
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001123 creation.]]>
1124 </doc>
1125 </method>
1126 <method name="createInjector" return="com.google.inject.Injector"
1127 abstract="false" native="false" synchronized="false"
1128 static="true" final="false" visibility="public"
1129 deprecated="not deprecated">
1130 <param name="stage" type="com.google.inject.Stage"/>
1131 <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
1132 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001133 <![CDATA[Creates an injector for the given set of modules, in a given development
1134 stage.
1135
1136 @throws CreationException if one or more errors occur during injector
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001137 construction]]>
1138 </doc>
1139 </method>
1140 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001141 <![CDATA[The entry point to the Guice framework. Creates {@link Injector}s from
1142 {@link Module}s.
1143
1144 <p>Guice supports a model of development that draws clear boundaries between
1145 APIs, Implementations of these APIs, Modules which configure these
1146 implementations, and finally Applications which consist of a collection of
1147 Modules. It is the Application, which typically defines your {@code main()}
1148 method, that bootstraps the Guice Injector using the {@code Guice} class, as
1149 in this example:
1150 <pre>
1151 public class FooApplication {
1152 public static void main(String[] args) {
1153 Injector injector = Guice.createInjector(
1154 new ModuleA(),
1155 new ModuleB(),
1156 . . .
1157 new FooApplicationFlagsModule(args)
1158 );
1159
1160 // Now just bootstrap the application and you're done
1161 FooStarter starter = injector.getInstance(FooStarter.class);
1162 starter.runApplication();
1163 }
1164 }
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001165 </pre>]]>
1166 </doc>
1167 </class>
1168 <!-- end class com.google.inject.Guice -->
1169 <!-- start class com.google.inject.ImplementedBy -->
1170 <class name="ImplementedBy" abstract="true"
1171 static="false" final="false" visibility="public"
1172 deprecated="not deprecated">
1173 <implements name="java.lang.annotation.Annotation"/>
1174 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001175 <![CDATA[A pointer to the default implementation of a type.
1176
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001177 @author crazybob@google.com (Bob Lee)]]>
1178 </doc>
1179 </class>
1180 <!-- end class com.google.inject.ImplementedBy -->
1181 <!-- start class com.google.inject.Inject -->
1182 <class name="Inject" abstract="true"
1183 static="false" final="false" visibility="public"
1184 deprecated="not deprecated">
1185 <implements name="java.lang.annotation.Annotation"/>
1186 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001187 <![CDATA[Annotates members of your implementation class (constructors, methods
1188 and fields) into which the {@link Injector} should inject values.
1189 The Injector fulfills injection requests for:
1190
1191 <ul>
1192 <li>Every instance it constructs. The class being constructed must have
1193 exactly one of its constructors marked with {@code @Inject} or must have a
1194 constructor taking no parameters. The Injector then proceeds to perform
1195 field and method injections.
1196
1197 <li>Pre-constructed instances passed to {@link Injector#injectMembers},
1198 {@link com.google.inject.binder.LinkedBindingBuilder#toInstance(Object)} and
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001199 {@link com.google.inject.binder.LinkedBindingBuilder#toProvider(javax.inject.Provider)}.
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001200 In this case all constructors are, of course, ignored.
1201
1202 <li>Static fields and methods of classes which any {@link Module} has
1203 specifically requested static injection for, using
1204 {@link Binder#requestStaticInjection}.
1205 </ul>
1206
1207 In all cases, a member can be injected regardless of its Java access
1208 specifier (private, default, protected, public).
1209
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001210 @author crazybob@google.com (Bob Lee)]]>
1211 </doc>
1212 </class>
1213 <!-- end class com.google.inject.Inject -->
1214 <!-- start interface com.google.inject.Injector -->
1215 <interface name="Injector" abstract="true"
1216 static="false" final="false" visibility="public"
1217 deprecated="not deprecated">
1218 <method name="injectMembers"
1219 abstract="true" native="false" synchronized="false"
1220 static="false" final="false" visibility="public"
1221 deprecated="not deprecated">
1222 <param name="instance" type="java.lang.Object"/>
1223 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001224 <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or
1225 absence of an injectable constructor.
1226
1227 <p>Whenever Guice creates an instance, it performs this injection automatically (after first
1228 performing constructor injection), so if you're able to let Guice create all your objects for
1229 you, you'll never need to use this method.
1230
1231 @param instance to inject members on
1232
1233 @see Binder#getMembersInjector(Class) for a preferred alternative that supports checks before
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001234 run time]]>
1235 </doc>
1236 </method>
1237 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
1238 abstract="true" native="false" synchronized="false"
1239 static="false" final="false" visibility="public"
1240 deprecated="not deprecated">
1241 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1242 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001243 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
1244 of the given type {@code T}.
1245
1246 @param typeLiteral type to get members injector for
1247 @see Binder#getMembersInjector(TypeLiteral) for an alternative that offers up front error
1248 detection
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001249 @since 2.0]]>
1250 </doc>
1251 </method>
1252 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
1253 abstract="true" native="false" synchronized="false"
1254 static="false" final="false" visibility="public"
1255 deprecated="not deprecated">
1256 <param name="type" type="java.lang.Class&lt;T&gt;"/>
1257 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001258 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
1259 of the given type {@code T}. When feasible, use {@link Binder#getMembersInjector(TypeLiteral)}
1260 instead to get increased up front error detection.
1261
1262 @param type type to get members injector for
1263 @see Binder#getMembersInjector(Class) for an alternative that offers up front error
1264 detection
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001265 @since 2.0]]>
1266 </doc>
1267 </method>
1268 <method name="getBindings" return="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, com.google.inject.Binding&lt;?&gt;&gt;"
1269 abstract="true" native="false" synchronized="false"
1270 static="false" final="false" visibility="public"
1271 deprecated="not deprecated">
1272 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001273 <![CDATA[Returns this injector's <strong>explicit</strong> bindings.
1274
1275 <p>The returned map does not include bindings inherited from a {@link #getParent() parent
1276 injector}, should one exist. The returned map is guaranteed to iterate (for example, with
1277 its {@link Map#entrySet()} iterator) in the order of insertion. In other words, the order in
1278 which bindings appear in user Modules.
1279
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001280 <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]>
1281 </doc>
1282 </method>
1283 <method name="getAllBindings" return="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, com.google.inject.Binding&lt;?&gt;&gt;"
1284 abstract="true" native="false" synchronized="false"
1285 static="false" final="false" visibility="public"
1286 deprecated="not deprecated">
1287 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001288 <![CDATA[Returns a snapshot of this injector's bindings, <strong>both explicit and
1289 just-in-time</strong>. The returned map is immutable; it contains only the bindings that were
1290 present when {@code getAllBindings()} was invoked. Subsequent calls may return a map with
1291 additional just-in-time bindings.
1292
1293 <p>The returned map does not include bindings inherited from a {@link #getParent() parent
1294 injector}, should one exist.
1295
1296 <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
1297
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001298 @since 3.0]]>
1299 </doc>
1300 </method>
1301 <method name="getBinding" return="com.google.inject.Binding&lt;T&gt;"
1302 abstract="true" native="false" synchronized="false"
1303 static="false" final="false" visibility="public"
1304 deprecated="not deprecated">
1305 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
1306 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001307 <![CDATA[Returns the binding for the given injection key. This will be an explicit bindings if the key
1308 was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will
1309 be created if necessary.
1310
1311 <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
1312
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001313 @throws ConfigurationException if this injector cannot find or create the binding.]]>
1314 </doc>
1315 </method>
1316 <method name="getBinding" return="com.google.inject.Binding&lt;T&gt;"
1317 abstract="true" native="false" synchronized="false"
1318 static="false" final="false" visibility="public"
1319 deprecated="not deprecated">
1320 <param name="type" type="java.lang.Class&lt;T&gt;"/>
1321 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001322 <![CDATA[Returns the binding for the given type. This will be an explicit bindings if the injection key
1323 was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will
1324 be created if necessary.
1325
1326 <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
1327
1328 @throws ConfigurationException if this injector cannot find or create the binding.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001329 @since 2.0]]>
1330 </doc>
1331 </method>
1332 <method name="getExistingBinding" return="com.google.inject.Binding&lt;T&gt;"
1333 abstract="true" native="false" synchronized="false"
1334 static="false" final="false" visibility="public"
1335 deprecated="not deprecated">
1336 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
1337 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001338 <![CDATA[Returns the binding if it already exists, or null if does not exist. Unlike
1339 {@link #getBinding(Key)}, this does not attempt to create just-in-time bindings
1340 for keys that aren't bound.
1341
1342 <p> This method is part of the Guice SPI and is intended for use by tools and extensions.
1343
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001344 @since 3.0]]>
1345 </doc>
1346 </method>
1347 <method name="findBindingsByType" return="java.util.List&lt;com.google.inject.Binding&lt;T&gt;&gt;"
1348 abstract="true" native="false" synchronized="false"
1349 static="false" final="false" visibility="public"
1350 deprecated="not deprecated">
1351 <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1352 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001353 <![CDATA[Returns all explicit bindings for {@code type}.
1354
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001355 <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]>
1356 </doc>
1357 </method>
1358 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
1359 abstract="true" native="false" synchronized="false"
1360 static="false" final="false" visibility="public"
1361 deprecated="not deprecated">
1362 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
1363 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001364 <![CDATA[Returns the provider used to obtain instances for the given injection key. When feasible, avoid
1365 using this method, in favor of having Guice inject your dependencies ahead of time.
1366
1367 @throws ConfigurationException if this injector cannot find or create the provider.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001368 @see Binder#getProvider(Key) for an alternative that offers up front error detection]]>
1369 </doc>
1370 </method>
1371 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
1372 abstract="true" native="false" synchronized="false"
1373 static="false" final="false" visibility="public"
1374 deprecated="not deprecated">
1375 <param name="type" type="java.lang.Class&lt;T&gt;"/>
1376 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001377 <![CDATA[Returns the provider used to obtain instances for the given type. When feasible, avoid
1378 using this method, in favor of having Guice inject your dependencies ahead of time.
1379
1380 @throws ConfigurationException if this injector cannot find or create the provider.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001381 @see Binder#getProvider(Class) for an alternative that offers up front error detection]]>
1382 </doc>
1383 </method>
1384 <method name="getInstance" return="T"
1385 abstract="true" native="false" synchronized="false"
1386 static="false" final="false" visibility="public"
1387 deprecated="not deprecated">
1388 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
1389 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001390 <![CDATA[Returns the appropriate instance for the given injection key; equivalent to {@code
1391 getProvider(key).get()}. When feasible, avoid using this method, in favor of having Guice
1392 inject your dependencies ahead of time.
1393
1394 @throws ConfigurationException if this injector cannot find or create the provider.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001395 @throws ProvisionException if there was a runtime failure while providing an instance.]]>
1396 </doc>
1397 </method>
1398 <method name="getInstance" return="T"
1399 abstract="true" native="false" synchronized="false"
1400 static="false" final="false" visibility="public"
1401 deprecated="not deprecated">
1402 <param name="type" type="java.lang.Class&lt;T&gt;"/>
1403 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001404 <![CDATA[Returns the appropriate instance for the given injection type; equivalent to {@code
1405 getProvider(type).get()}. When feasible, avoid using this method, in favor of having Guice
1406 inject your dependencies ahead of time.
1407
1408 @throws ConfigurationException if this injector cannot find or create the provider.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001409 @throws ProvisionException if there was a runtime failure while providing an instance.]]>
1410 </doc>
1411 </method>
1412 <method name="getParent" return="com.google.inject.Injector"
1413 abstract="true" native="false" synchronized="false"
1414 static="false" final="false" visibility="public"
1415 deprecated="not deprecated">
1416 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001417 <![CDATA[Returns this injector's parent, or {@code null} if this is a top-level injector.
1418
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001419 @since 2.0]]>
1420 </doc>
1421 </method>
1422 <method name="createChildInjector" return="com.google.inject.Injector"
1423 abstract="true" native="false" synchronized="false"
1424 static="false" final="false" visibility="public"
1425 deprecated="not deprecated">
1426 <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
1427 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001428 <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes,
1429 interceptors and type converters are inherited -- they are visible to the child injector.
1430 Elements of the child injector are not visible to its parent.
1431
1432 <p>Just-in-time bindings created for child injectors will be created in an ancestor injector
1433 whenever possible. This allows for scoped instances to be shared between injectors. Use
1434 explicit bindings to prevent bindings from being shared with the parent injector. Optional
1435 injections in just-in-time bindings (created in the parent injector) may be silently
1436 ignored if the optional dependencies are from the child injector.
1437
1438 <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time
1439 bindings. The lone exception is the key for {@code Injector.class}, which is bound by each
1440 injector to itself.
1441
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001442 @since 2.0]]>
1443 </doc>
1444 </method>
1445 <method name="createChildInjector" return="com.google.inject.Injector"
1446 abstract="true" native="false" synchronized="false"
1447 static="false" final="false" visibility="public"
1448 deprecated="not deprecated">
1449 <param name="modules" type="com.google.inject.Module[]"/>
1450 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001451 <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes,
1452 interceptors and type converters are inherited -- they are visible to the child injector.
1453 Elements of the child injector are not visible to its parent.
1454
1455 <p>Just-in-time bindings created for child injectors will be created in an ancestor injector
1456 whenever possible. This allows for scoped instances to be shared between injectors. Use
1457 explicit bindings to prevent bindings from being shared with the parent injector.
1458
1459 <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time
1460 bindings. The lone exception is the key for {@code Injector.class}, which is bound by each
1461 injector to itself.
1462
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001463 @since 2.0]]>
1464 </doc>
1465 </method>
1466 <method name="getScopeBindings" return="java.util.Map&lt;java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;, com.google.inject.Scope&gt;"
1467 abstract="true" native="false" synchronized="false"
1468 static="false" final="false" visibility="public"
1469 deprecated="not deprecated">
1470 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001471 <![CDATA[Returns a map containing all scopes in the injector. The maps keys are scoping annotations
1472 like {@code Singleton.class}, and the values are scope instances, such as {@code
1473 Scopes.SINGLETON}. The returned map is immutable.
1474
1475 <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
1476
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001477 @since 3.0]]>
1478 </doc>
1479 </method>
1480 <method name="getTypeConverterBindings" return="java.util.Set&lt;com.google.inject.spi.TypeConverterBinding&gt;"
1481 abstract="true" native="false" synchronized="false"
1482 static="false" final="false" visibility="public"
1483 deprecated="not deprecated">
1484 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001485 <![CDATA[Returns a set containing all type converter bindings in the injector. The returned set is
1486 immutable.
1487
1488 <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
1489
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001490 @since 3.0]]>
1491 </doc>
1492 </method>
1493 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001494 <![CDATA[Builds the graphs of objects that make up your application. The injector tracks the dependencies
1495 for each type and uses bindings to inject them. This is the core of Guice, although you rarely
1496 interact with it directly. This "behind-the-scenes" operation is what distinguishes dependency
1497 injection from its cousin, the service locator pattern.
1498
1499 <p>Contains several default bindings:
1500
1501 <ul>
1502 <li>This {@link Injector} instance itself
1503 <li>A {@code Provider<T>} for each binding of type {@code T}
1504 <li>The {@link java.util.logging.Logger} for the class being injected
1505 <li>The {@link Stage} in which the Injector was created
1506 </ul>
1507
1508 Injectors are created using the facade class {@link Guice}.
1509
1510 <p>An injector can also {@link #injectMembers(Object) inject the dependencies} of
1511 already-constructed instances. This can be used to interoperate with objects created by other
1512 frameworks or services.
1513
1514 <p>Injectors can be {@link #createChildInjector(Iterable) hierarchical}. Child injectors inherit
1515 the configuration of their parent injectors, but the converse does not hold.
1516
1517 <p>The injector's {@link #getBindings() internal bindings} are available for introspection. This
1518 enables tools and extensions to operate on an injector reflectively.
1519
1520 @author crazybob@google.com (Bob Lee)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001521 @author jessewilson@google.com (Jesse Wilson)]]>
1522 </doc>
1523 </interface>
1524 <!-- end interface com.google.inject.Injector -->
1525 <!-- start class com.google.inject.Key -->
1526 <class name="Key" extends="java.lang.Object"
1527 abstract="false"
1528 static="false" final="false" visibility="public"
1529 deprecated="not deprecated">
1530 <constructor name="Key" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
1531 static="false" final="false" visibility="protected"
1532 deprecated="not deprecated">
1533 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001534 <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
1535
1536 <p>Clients create an empty anonymous subclass. Doing so embeds the type
1537 parameter in the anonymous class's type hierarchy so we can reconstitute it
1538 at runtime despite erasure.
1539
1540 <p>Example usage for a binding of type {@code Foo} annotated with
1541 {@code @Bar}:
1542
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001543 <p>{@code new Key<Foo>(Bar.class) {}}.]]>
1544 </doc>
1545 </constructor>
1546 <constructor name="Key" type="java.lang.annotation.Annotation"
1547 static="false" final="false" visibility="protected"
1548 deprecated="not deprecated">
1549 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001550 <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
1551
1552 <p>Clients create an empty anonymous subclass. Doing so embeds the type
1553 parameter in the anonymous class's type hierarchy so we can reconstitute it
1554 at runtime despite erasure.
1555
1556 <p>Example usage for a binding of type {@code Foo} annotated with
1557 {@code @Bar}:
1558
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001559 <p>{@code new Key<Foo>(new Bar()) {}}.]]>
1560 </doc>
1561 </constructor>
1562 <constructor name="Key"
1563 static="false" final="false" visibility="protected"
1564 deprecated="not deprecated">
1565 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001566 <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
1567
1568 <p>Clients create an empty anonymous subclass. Doing so embeds the type
1569 parameter in the anonymous class's type hierarchy so we can reconstitute it
1570 at runtime despite erasure.
1571
1572 <p>Example usage for a binding of type {@code Foo}:
1573
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001574 <p>{@code new Key<Foo>() {}}.]]>
1575 </doc>
1576 </constructor>
1577 <method name="getTypeLiteral" return="com.google.inject.TypeLiteral&lt;T&gt;"
1578 abstract="false" native="false" synchronized="false"
1579 static="false" final="true" visibility="public"
1580 deprecated="not deprecated">
1581 <doc>
1582 <![CDATA[Gets the key type.]]>
1583 </doc>
1584 </method>
1585 <method name="getAnnotationType" return="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
1586 abstract="false" native="false" synchronized="false"
1587 static="false" final="true" visibility="public"
1588 deprecated="not deprecated">
1589 <doc>
1590 <![CDATA[Gets the annotation type.]]>
1591 </doc>
1592 </method>
1593 <method name="getAnnotation" return="java.lang.annotation.Annotation"
1594 abstract="false" native="false" synchronized="false"
1595 static="false" final="true" visibility="public"
1596 deprecated="not deprecated">
1597 <doc>
1598 <![CDATA[Gets the annotation.]]>
1599 </doc>
1600 </method>
1601 <method name="equals" return="boolean"
1602 abstract="false" native="false" synchronized="false"
1603 static="false" final="true" visibility="public"
1604 deprecated="not deprecated">
1605 <param name="o" type="java.lang.Object"/>
1606 </method>
1607 <method name="hashCode" return="int"
1608 abstract="false" native="false" synchronized="false"
1609 static="false" final="true" visibility="public"
1610 deprecated="not deprecated">
1611 </method>
1612 <method name="toString" return="java.lang.String"
1613 abstract="false" native="false" synchronized="false"
1614 static="false" final="true" visibility="public"
1615 deprecated="not deprecated">
1616 </method>
1617 <method name="get" return="com.google.inject.Key&lt;T&gt;"
1618 abstract="false" native="false" synchronized="false"
1619 static="true" final="false" visibility="public"
1620 deprecated="not deprecated">
1621 <param name="type" type="java.lang.Class&lt;T&gt;"/>
1622 <doc>
1623 <![CDATA[Gets a key for an injection type.]]>
1624 </doc>
1625 </method>
1626 <method name="get" return="com.google.inject.Key&lt;T&gt;"
1627 abstract="false" native="false" synchronized="false"
1628 static="true" final="false" visibility="public"
1629 deprecated="not deprecated">
1630 <param name="type" type="java.lang.Class&lt;T&gt;"/>
1631 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
1632 <doc>
1633 <![CDATA[Gets a key for an injection type and an annotation type.]]>
1634 </doc>
1635 </method>
1636 <method name="get" return="com.google.inject.Key&lt;T&gt;"
1637 abstract="false" native="false" synchronized="false"
1638 static="true" final="false" visibility="public"
1639 deprecated="not deprecated">
1640 <param name="type" type="java.lang.Class&lt;T&gt;"/>
1641 <param name="annotation" type="java.lang.annotation.Annotation"/>
1642 <doc>
1643 <![CDATA[Gets a key for an injection type and an annotation.]]>
1644 </doc>
1645 </method>
1646 <method name="get" return="com.google.inject.Key&lt;?&gt;"
1647 abstract="false" native="false" synchronized="false"
1648 static="true" final="false" visibility="public"
1649 deprecated="not deprecated">
1650 <param name="type" type="java.lang.reflect.Type"/>
1651 <doc>
1652 <![CDATA[Gets a key for an injection type.]]>
1653 </doc>
1654 </method>
1655 <method name="get" return="com.google.inject.Key&lt;?&gt;"
1656 abstract="false" native="false" synchronized="false"
1657 static="true" final="false" visibility="public"
1658 deprecated="not deprecated">
1659 <param name="type" type="java.lang.reflect.Type"/>
1660 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
1661 <doc>
1662 <![CDATA[Gets a key for an injection type and an annotation type.]]>
1663 </doc>
1664 </method>
1665 <method name="get" return="com.google.inject.Key&lt;?&gt;"
1666 abstract="false" native="false" synchronized="false"
1667 static="true" final="false" visibility="public"
1668 deprecated="not deprecated">
1669 <param name="type" type="java.lang.reflect.Type"/>
1670 <param name="annotation" type="java.lang.annotation.Annotation"/>
1671 <doc>
1672 <![CDATA[Gets a key for an injection type and an annotation.]]>
1673 </doc>
1674 </method>
1675 <method name="get" return="com.google.inject.Key&lt;T&gt;"
1676 abstract="false" native="false" synchronized="false"
1677 static="true" final="false" visibility="public"
1678 deprecated="not deprecated">
1679 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1680 <doc>
1681 <![CDATA[Gets a key for an injection type.]]>
1682 </doc>
1683 </method>
1684 <method name="get" return="com.google.inject.Key&lt;T&gt;"
1685 abstract="false" native="false" synchronized="false"
1686 static="true" final="false" visibility="public"
1687 deprecated="not deprecated">
1688 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1689 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
1690 <doc>
1691 <![CDATA[Gets a key for an injection type and an annotation type.]]>
1692 </doc>
1693 </method>
1694 <method name="get" return="com.google.inject.Key&lt;T&gt;"
1695 abstract="false" native="false" synchronized="false"
1696 static="true" final="false" visibility="public"
1697 deprecated="not deprecated">
1698 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1699 <param name="annotation" type="java.lang.annotation.Annotation"/>
1700 <doc>
1701 <![CDATA[Gets a key for an injection type and an annotation.]]>
1702 </doc>
1703 </method>
1704 <method name="ofType" return="com.google.inject.Key&lt;T&gt;"
1705 abstract="false" native="false" synchronized="false"
1706 static="false" final="false" visibility="public"
1707 deprecated="not deprecated">
1708 <param name="type" type="java.lang.Class&lt;T&gt;"/>
1709 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001710 <![CDATA[Returns a new key of the specified type with the same annotation as this
1711 key.
1712
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001713 @since 3.0]]>
1714 </doc>
1715 </method>
1716 <method name="ofType" return="com.google.inject.Key&lt;?&gt;"
1717 abstract="false" native="false" synchronized="false"
1718 static="false" final="false" visibility="public"
1719 deprecated="not deprecated">
1720 <param name="type" type="java.lang.reflect.Type"/>
1721 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001722 <![CDATA[Returns a new key of the specified type with the same annotation as this
1723 key.
1724
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001725 @since 3.0]]>
1726 </doc>
1727 </method>
1728 <method name="ofType" return="com.google.inject.Key&lt;T&gt;"
1729 abstract="false" native="false" synchronized="false"
1730 static="false" final="false" visibility="public"
1731 deprecated="not deprecated">
1732 <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1733 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001734 <![CDATA[Returns a new key of the specified type with the same annotation as this
1735 key.
1736
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001737 @since 3.0]]>
1738 </doc>
1739 </method>
1740 <method name="hasAttributes" return="boolean"
1741 abstract="false" native="false" synchronized="false"
1742 static="false" final="false" visibility="public"
1743 deprecated="not deprecated">
1744 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001745 <![CDATA[Returns true if this key has annotation attributes.
1746
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001747 @since 3.0]]>
1748 </doc>
1749 </method>
1750 <method name="withoutAttributes" return="com.google.inject.Key&lt;T&gt;"
1751 abstract="false" native="false" synchronized="false"
1752 static="false" final="false" visibility="public"
1753 deprecated="not deprecated">
1754 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001755 <![CDATA[Returns this key without annotation attributes, i.e. with only the
1756 annotation type.
1757
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001758 @since 3.0]]>
1759 </doc>
1760 </method>
1761 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001762 <![CDATA[Binding key consisting of an injection type and an optional annotation.
1763 Matches the type and annotation at a point of injection.
1764
1765 <p>For example, {@code Key.get(Service.class, Transactional.class)} will
1766 match:
1767
1768 <pre>
1769 {@literal @}Inject
1770 public void setService({@literal @}Transactional Service service) {
1771 ...
1772 }
1773 </pre>
1774
1775 <p>{@code Key} supports generic types via subclassing just like {@link
1776 TypeLiteral}.
1777
1778 <p>Keys do not differentiate between primitive types (int, char, etc.) and
1779 their correpsonding wrapper types (Integer, Character, etc.). Primitive
1780 types will be replaced with their wrapper types when keys are created.
1781
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001782 @author crazybob@google.com (Bob Lee)]]>
1783 </doc>
1784 </class>
1785 <!-- end class com.google.inject.Key -->
1786 <!-- start interface com.google.inject.MembersInjector -->
1787 <interface name="MembersInjector" abstract="true"
1788 static="false" final="false" visibility="public"
1789 deprecated="not deprecated">
1790 <method name="injectMembers"
1791 abstract="true" native="false" synchronized="false"
1792 static="false" final="false" visibility="public"
1793 deprecated="not deprecated">
1794 <param name="instance" type="T"/>
1795 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001796 <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or
1797 absence of an injectable constructor.
1798
1799 <p>Whenever Guice creates an instance, it performs this injection automatically (after first
1800 performing constructor injection), so if you're able to let Guice create all your objects for
1801 you, you'll never need to use this method.
1802
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001803 @param instance to inject members on. May be {@code null}.]]>
1804 </doc>
1805 </method>
1806 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001807 <![CDATA[Injects dependencies into the fields and methods on instances of type {@code T}. Ignores the
1808 presence or absence of an injectable constructor.
1809
1810 @param <T> type to inject members of
1811
1812 @author crazybob@google.com (Bob Lee)
1813 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001814 @since 2.0]]>
1815 </doc>
1816 </interface>
1817 <!-- end interface com.google.inject.MembersInjector -->
1818 <!-- start interface com.google.inject.Module -->
1819 <interface name="Module" abstract="true"
1820 static="false" final="false" visibility="public"
1821 deprecated="not deprecated">
1822 <method name="configure"
1823 abstract="true" native="false" synchronized="false"
1824 static="false" final="false" visibility="public"
1825 deprecated="not deprecated">
1826 <param name="binder" type="com.google.inject.Binder"/>
1827 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001828 <![CDATA[Contributes bindings and other configurations for this module to {@code binder}.
1829
1830 <p><strong>Do not invoke this method directly</strong> to install submodules. Instead use
1831 {@link Binder#install(Module)}, which ensures that {@link Provides provider methods} are
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001832 discovered.]]>
1833 </doc>
1834 </method>
1835 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001836 <![CDATA[A module contributes configuration information, typically interface
1837 bindings, which will be used to create an {@link Injector}. A Guice-based
1838 application is ultimately composed of little more than a set of
1839 {@code Module}s and some bootstrapping code.
1840
1841 <p>Your Module classes can use a more streamlined syntax by extending
1842 {@link AbstractModule} rather than implementing this interface directly.
1843
1844 <p>In addition to the bindings configured via {@link #configure}, bindings
1845 will be created for all methods annotated with {@literal @}{@link Provides}.
1846 Use scope and binding annotations on these methods to configure the
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001847 bindings.]]>
1848 </doc>
1849 </interface>
1850 <!-- end interface com.google.inject.Module -->
1851 <!-- start class com.google.inject.OutOfScopeException -->
1852 <class name="OutOfScopeException" extends="java.lang.RuntimeException"
1853 abstract="false"
1854 static="false" final="true" visibility="public"
1855 deprecated="not deprecated">
1856 <constructor name="OutOfScopeException" type="java.lang.String"
1857 static="false" final="false" visibility="public"
1858 deprecated="not deprecated">
1859 </constructor>
1860 <constructor name="OutOfScopeException" type="java.lang.String, java.lang.Throwable"
1861 static="false" final="false" visibility="public"
1862 deprecated="not deprecated">
1863 </constructor>
1864 <constructor name="OutOfScopeException" type="java.lang.Throwable"
1865 static="false" final="false" visibility="public"
1866 deprecated="not deprecated">
1867 </constructor>
1868 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001869 <![CDATA[Thrown from {@link Provider#get} when an attempt is made to access a scoped
1870 object while the scope in question is not currently active.
1871
1872 @author kevinb@google.com (Kevin Bourrillion)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001873 @since 2.0]]>
1874 </doc>
1875 </class>
1876 <!-- end class com.google.inject.OutOfScopeException -->
1877 <!-- start interface com.google.inject.PrivateBinder -->
1878 <interface name="PrivateBinder" abstract="true"
1879 static="false" final="false" visibility="public"
1880 deprecated="not deprecated">
1881 <implements name="com.google.inject.Binder"/>
1882 <method name="expose"
1883 abstract="true" native="false" synchronized="false"
1884 static="false" final="false" visibility="public"
1885 deprecated="not deprecated">
1886 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
1887 <doc>
1888 <![CDATA[Makes the binding for {@code key} available to the enclosing environment]]>
1889 </doc>
1890 </method>
1891 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
1892 abstract="true" native="false" synchronized="false"
1893 static="false" final="false" visibility="public"
1894 deprecated="not deprecated">
1895 <param name="type" type="java.lang.Class&lt;?&gt;"/>
1896 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001897 <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link
1898 com.google.inject.binder.AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001899 binding annotation.]]>
1900 </doc>
1901 </method>
1902 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
1903 abstract="true" native="false" synchronized="false"
1904 static="false" final="false" visibility="public"
1905 deprecated="not deprecated">
1906 <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
1907 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001908 <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link
1909 AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001910 binding annotation.]]>
1911 </doc>
1912 </method>
1913 <method name="withSource" return="com.google.inject.PrivateBinder"
1914 abstract="true" native="false" synchronized="false"
1915 static="false" final="false" visibility="public"
1916 deprecated="not deprecated">
1917 <param name="source" type="java.lang.Object"/>
1918 </method>
1919 <method name="skipSources" return="com.google.inject.PrivateBinder"
1920 abstract="true" native="false" synchronized="false"
1921 static="false" final="false" visibility="public"
1922 deprecated="not deprecated">
1923 <param name="classesToSkip" type="java.lang.Class[]"/>
1924 </method>
1925 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001926 <![CDATA[Returns a binder whose configuration information is hidden from its environment by default. See
1927 {@link com.google.inject.PrivateModule PrivateModule} for details.
1928
1929 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001930 @since 2.0]]>
1931 </doc>
1932 </interface>
1933 <!-- end interface com.google.inject.PrivateBinder -->
1934 <!-- start class com.google.inject.PrivateModule -->
1935 <class name="PrivateModule" extends="java.lang.Object"
1936 abstract="true"
1937 static="false" final="false" visibility="public"
1938 deprecated="not deprecated">
1939 <implements name="com.google.inject.Module"/>
1940 <constructor name="PrivateModule"
1941 static="false" final="false" visibility="public"
1942 deprecated="not deprecated">
1943 </constructor>
1944 <method name="configure"
1945 abstract="false" native="false" synchronized="true"
1946 static="false" final="true" visibility="public"
1947 deprecated="not deprecated">
1948 <param name="binder" type="com.google.inject.Binder"/>
1949 </method>
1950 <method name="configure"
1951 abstract="true" native="false" synchronized="false"
1952 static="false" final="false" visibility="protected"
1953 deprecated="not deprecated">
1954 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001955 <![CDATA[Creates bindings and other configurations private to this module. Use {@link #expose(Class)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001956 expose()} to make the bindings in this module available externally.]]>
1957 </doc>
1958 </method>
1959 <method name="expose"
1960 abstract="false" native="false" synchronized="false"
1961 static="false" final="true" visibility="protected"
1962 deprecated="not deprecated">
1963 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
1964 <doc>
1965 <![CDATA[Makes the binding for {@code key} available to other modules and the injector.]]>
1966 </doc>
1967 </method>
1968 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
1969 abstract="false" native="false" synchronized="false"
1970 static="false" final="true" visibility="protected"
1971 deprecated="not deprecated">
1972 <param name="type" type="java.lang.Class&lt;?&gt;"/>
1973 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001974 <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link
1975 AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001976 binding annotation.]]>
1977 </doc>
1978 </method>
1979 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
1980 abstract="false" native="false" synchronized="false"
1981 static="false" final="true" visibility="protected"
1982 deprecated="not deprecated">
1983 <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
1984 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07001985 <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link
1986 AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
Christian Edward Gruber509e3542014-03-20 20:37:34 -07001987 binding annotation.]]>
1988 </doc>
1989 </method>
1990 <method name="binder" return="com.google.inject.PrivateBinder"
1991 abstract="false" native="false" synchronized="false"
1992 static="false" final="true" visibility="protected"
1993 deprecated="not deprecated">
1994 <doc>
1995 <![CDATA[Returns the current binder.]]>
1996 </doc>
1997 </method>
1998 <method name="bindScope"
1999 abstract="false" native="false" synchronized="false"
2000 static="false" final="true" visibility="protected"
2001 deprecated="not deprecated">
2002 <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
2003 <param name="scope" type="com.google.inject.Scope"/>
2004 <doc>
2005 <![CDATA[@see Binder#bindScope(Class, Scope)]]>
2006 </doc>
2007 </method>
2008 <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
2009 abstract="false" native="false" synchronized="false"
2010 static="false" final="true" visibility="protected"
2011 deprecated="not deprecated">
2012 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
2013 <doc>
2014 <![CDATA[@see Binder#bind(Key)]]>
2015 </doc>
2016 </method>
2017 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
2018 abstract="false" native="false" synchronized="false"
2019 static="false" final="true" visibility="protected"
2020 deprecated="not deprecated">
2021 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
2022 <doc>
2023 <![CDATA[@see Binder#bind(TypeLiteral)]]>
2024 </doc>
2025 </method>
2026 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
2027 abstract="false" native="false" synchronized="false"
2028 static="false" final="true" visibility="protected"
2029 deprecated="not deprecated">
2030 <param name="clazz" type="java.lang.Class&lt;T&gt;"/>
2031 <doc>
2032 <![CDATA[@see Binder#bind(Class)]]>
2033 </doc>
2034 </method>
2035 <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder"
2036 abstract="false" native="false" synchronized="false"
2037 static="false" final="true" visibility="protected"
2038 deprecated="not deprecated">
2039 <doc>
2040 <![CDATA[@see Binder#bindConstant()]]>
2041 </doc>
2042 </method>
2043 <method name="install"
2044 abstract="false" native="false" synchronized="false"
2045 static="false" final="true" visibility="protected"
2046 deprecated="not deprecated">
2047 <param name="module" type="com.google.inject.Module"/>
2048 <doc>
2049 <![CDATA[@see Binder#install(Module)]]>
2050 </doc>
2051 </method>
2052 <method name="addError"
2053 abstract="false" native="false" synchronized="false"
2054 static="false" final="true" visibility="protected"
2055 deprecated="not deprecated">
2056 <param name="message" type="java.lang.String"/>
2057 <param name="arguments" type="java.lang.Object[]"/>
2058 <doc>
2059 <![CDATA[@see Binder#addError(String, Object[])]]>
2060 </doc>
2061 </method>
2062 <method name="addError"
2063 abstract="false" native="false" synchronized="false"
2064 static="false" final="true" visibility="protected"
2065 deprecated="not deprecated">
2066 <param name="t" type="java.lang.Throwable"/>
2067 <doc>
2068 <![CDATA[@see Binder#addError(Throwable)]]>
2069 </doc>
2070 </method>
2071 <method name="addError"
2072 abstract="false" native="false" synchronized="false"
2073 static="false" final="true" visibility="protected"
2074 deprecated="not deprecated">
2075 <param name="message" type="com.google.inject.spi.Message"/>
2076 <doc>
2077 <![CDATA[@see Binder#addError(Message)]]>
2078 </doc>
2079 </method>
2080 <method name="requestInjection"
2081 abstract="false" native="false" synchronized="false"
2082 static="false" final="true" visibility="protected"
2083 deprecated="not deprecated">
2084 <param name="instance" type="java.lang.Object"/>
2085 <doc>
2086 <![CDATA[@see Binder#requestInjection(Object)]]>
2087 </doc>
2088 </method>
2089 <method name="requestStaticInjection"
2090 abstract="false" native="false" synchronized="false"
2091 static="false" final="true" visibility="protected"
2092 deprecated="not deprecated">
2093 <param name="types" type="java.lang.Class[]"/>
2094 <doc>
2095 <![CDATA[@see Binder#requestStaticInjection(Class[])]]>
2096 </doc>
2097 </method>
2098 <method name="bindInterceptor"
2099 abstract="false" native="false" synchronized="false"
2100 static="false" final="true" visibility="protected"
2101 deprecated="not deprecated">
2102 <param name="classMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
2103 <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
2104 <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
2105 <doc>
2106 <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher, com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])]]>
2107 </doc>
2108 </method>
2109 <method name="requireBinding"
2110 abstract="false" native="false" synchronized="false"
2111 static="false" final="true" visibility="protected"
2112 deprecated="not deprecated">
2113 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
2114 <doc>
2115 <![CDATA[Instructs Guice to require a binding to the given key.]]>
2116 </doc>
2117 </method>
2118 <method name="requireBinding"
2119 abstract="false" native="false" synchronized="false"
2120 static="false" final="true" visibility="protected"
2121 deprecated="not deprecated">
2122 <param name="type" type="java.lang.Class&lt;?&gt;"/>
2123 <doc>
2124 <![CDATA[Instructs Guice to require a binding to the given type.]]>
2125 </doc>
2126 </method>
2127 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
2128 abstract="false" native="false" synchronized="false"
2129 static="false" final="true" visibility="protected"
2130 deprecated="not deprecated">
2131 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
2132 <doc>
2133 <![CDATA[@see Binder#getProvider(Key)]]>
2134 </doc>
2135 </method>
2136 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
2137 abstract="false" native="false" synchronized="false"
2138 static="false" final="true" visibility="protected"
2139 deprecated="not deprecated">
2140 <param name="type" type="java.lang.Class&lt;T&gt;"/>
2141 <doc>
2142 <![CDATA[@see Binder#getProvider(Class)]]>
2143 </doc>
2144 </method>
2145 <method name="convertToTypes"
2146 abstract="false" native="false" synchronized="false"
2147 static="false" final="true" visibility="protected"
2148 deprecated="not deprecated">
2149 <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
2150 <param name="converter" type="com.google.inject.spi.TypeConverter"/>
2151 <doc>
2152 <![CDATA[@see Binder#convertToTypes(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeConverter)]]>
2153 </doc>
2154 </method>
2155 <method name="currentStage" return="com.google.inject.Stage"
2156 abstract="false" native="false" synchronized="false"
2157 static="false" final="true" visibility="protected"
2158 deprecated="not deprecated">
2159 <doc>
2160 <![CDATA[@see Binder#currentStage()]]>
2161 </doc>
2162 </method>
2163 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
2164 abstract="false" native="false" synchronized="false"
2165 static="false" final="false" visibility="protected"
2166 deprecated="not deprecated">
2167 <param name="type" type="java.lang.Class&lt;T&gt;"/>
2168 <doc>
2169 <![CDATA[@see Binder#getMembersInjector(Class)]]>
2170 </doc>
2171 </method>
2172 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
2173 abstract="false" native="false" synchronized="false"
2174 static="false" final="false" visibility="protected"
2175 deprecated="not deprecated">
2176 <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
2177 <doc>
2178 <![CDATA[@see Binder#getMembersInjector(TypeLiteral)]]>
2179 </doc>
2180 </method>
2181 <method name="bindListener"
2182 abstract="false" native="false" synchronized="false"
2183 static="false" final="false" visibility="protected"
2184 deprecated="not deprecated">
2185 <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
2186 <param name="listener" type="com.google.inject.spi.TypeListener"/>
2187 <doc>
2188 <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeListener)]]>
2189 </doc>
2190 </method>
2191 <method name="bindListener"
2192 abstract="false" native="false" synchronized="false"
2193 static="false" final="false" visibility="protected"
2194 deprecated="not deprecated">
2195 <param name="bindingMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.Binding&lt;?&gt;&gt;"/>
2196 <param name="listeners" type="com.google.inject.spi.ProvisionListener[]"/>
2197 <doc>
2198 <![CDATA[@see Binder#bindListener(Matcher, ProvisionListener...)]]>
2199 </doc>
2200 </method>
2201 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002202 <![CDATA[A module whose configuration information is hidden from its environment by default. Only bindings
2203 that are explicitly exposed will be available to other modules and to the users of the injector.
2204 This module may expose the bindings it creates and the bindings of the modules it installs.
2205
2206 <p>A private module can be nested within a regular module or within another private module using
2207 {@link Binder#install install()}. Its bindings live in a new environment that inherits bindings,
2208 type converters, scopes, and interceptors from the surrounding ("parent") environment. When you
2209 nest multiple private modules, the result is a tree of environments where the injector's
2210 environment is the root.
2211
2212 <p>Guice EDSL bindings can be exposed with {@link #expose(Class) expose()}. {@literal @}{@link
2213 com.google.inject.Provides Provides} bindings can be exposed with the {@literal @}{@link
2214 Exposed} annotation:
2215
2216 <pre>
2217 public class FooBarBazModule extends PrivateModule {
2218 protected void configure() {
2219 bind(Foo.class).to(RealFoo.class);
2220 expose(Foo.class);
2221
2222 install(new TransactionalBarModule());
2223 expose(Bar.class).annotatedWith(Transactional.class);
2224
2225 bind(SomeImplementationDetail.class);
2226 install(new MoreImplementationDetailsModule());
2227 }
2228
2229 {@literal @}Provides {@literal @}Exposed
2230 public Baz provideBaz() {
2231 return new SuperBaz();
2232 }
2233 }
2234 </pre>
2235
2236 <p>Private modules are implemented using {@link Injector#createChildInjector(Module[]) parent
2237 injectors}. When it can satisfy their dependencies, just-in-time bindings will be created in the
2238 root environment. Such bindings are shared among all environments in the tree.
2239
2240 <p>The scope of a binding is constrained to its environment. A singleton bound in a private
2241 module will be unique to its environment. But a binding for the same type in a different private
2242 module will yield a different instance.
2243
2244 <p>A shared binding that injects the {@code Injector} gets the root injector, which only has
2245 access to bindings in the root environment. An explicit binding that injects the {@code Injector}
2246 gets access to all bindings in the child environment.
2247
2248 <p>To promote a just-in-time binding to an explicit binding, bind it:
2249 <pre>
2250 bind(FooImpl.class);
2251 </pre>
2252
2253 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002254 @since 2.0]]>
2255 </doc>
2256 </class>
2257 <!-- end class com.google.inject.PrivateModule -->
2258 <!-- start class com.google.inject.ProvidedBy -->
2259 <class name="ProvidedBy" abstract="true"
2260 static="false" final="false" visibility="public"
2261 deprecated="not deprecated">
2262 <implements name="java.lang.annotation.Annotation"/>
2263 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002264 <![CDATA[A pointer to the default provider type for a type.
2265
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002266 @author crazybob@google.com (Bob Lee)]]>
2267 </doc>
2268 </class>
2269 <!-- end class com.google.inject.ProvidedBy -->
2270 <!-- start interface com.google.inject.Provider -->
2271 <interface name="Provider" abstract="true"
2272 static="false" final="false" visibility="public"
2273 deprecated="not deprecated">
2274 <implements name="javax.inject.Provider&lt;T&gt;"/>
2275 <method name="get" return="T"
2276 abstract="true" native="false" synchronized="false"
2277 static="false" final="false" visibility="public"
2278 deprecated="not deprecated">
2279 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002280 <![CDATA[Provides an instance of {@code T}. Must never return {@code null}.
2281
2282 @throws OutOfScopeException when an attempt is made to access a scoped object while the scope
2283 in question is not currently active
2284 @throws ProvisionException if an instance cannot be provided. Such exceptions include messages
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002285 and throwables to describe why provision failed.]]>
2286 </doc>
2287 </method>
2288 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002289 <![CDATA[An object capable of providing instances of type {@code T}. Providers are used in numerous ways
2290 by Guice:
2291
2292 <ul>
2293 <li>When the default means for obtaining instances (an injectable or parameterless constructor)
2294 is insufficient for a particular binding, the module can specify a custom {@code Provider}
2295 instead, to control exactly how Guice creates or obtains instances for the binding.
2296
2297 <li>An implementation class may always choose to have a {@code Provider<T>} instance injected,
2298 rather than having a {@code T} injected directly. This may give you access to multiple
2299 instances, instances you wish to safely mutate and discard, instances which are out of scope
2300 (e.g. using a {@code @RequestScoped} object from within a {@code @SessionScoped} object), or
2301 instances that will be initialized lazily.
2302
2303 <li>A custom {@link Scope} is implemented as a decorator of {@code Provider<T>}, which decides
2304 when to delegate to the backing provider and when to provide the instance some other way.
2305
2306 <li>The {@link Injector} offers access to the {@code Provider<T>} it uses to fulfill requests
2307 for a given key, via the {@link Injector#getProvider} methods.
2308 </ul>
2309
2310 @param <T> the type of object this provides
2311
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002312 @author crazybob@google.com (Bob Lee)]]>
2313 </doc>
2314 </interface>
2315 <!-- end interface com.google.inject.Provider -->
2316 <!-- start class com.google.inject.Provides -->
2317 <class name="Provides" abstract="true"
2318 static="false" final="false" visibility="public"
2319 deprecated="not deprecated">
2320 <implements name="java.lang.annotation.Annotation"/>
2321 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002322 <![CDATA[Annotates methods of a {@link Module} to create a provider method binding. The method's return
2323 type is bound to its returned value. Guice will pass dependencies to the method as parameters.
2324
2325 @author crazybob@google.com (Bob Lee)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002326 @since 2.0]]>
2327 </doc>
2328 </class>
2329 <!-- end class com.google.inject.Provides -->
2330 <!-- start class com.google.inject.ProvisionException -->
2331 <class name="ProvisionException" extends="java.lang.RuntimeException"
2332 abstract="false"
2333 static="false" final="true" visibility="public"
2334 deprecated="not deprecated">
2335 <constructor name="ProvisionException" type="java.lang.Iterable&lt;com.google.inject.spi.Message&gt;"
2336 static="false" final="false" visibility="public"
2337 deprecated="not deprecated">
2338 <doc>
2339 <![CDATA[Creates a ProvisionException containing {@code messages}.]]>
2340 </doc>
2341 </constructor>
2342 <constructor name="ProvisionException" type="java.lang.String, java.lang.Throwable"
2343 static="false" final="false" visibility="public"
2344 deprecated="not deprecated">
2345 </constructor>
2346 <constructor name="ProvisionException" type="java.lang.String"
2347 static="false" final="false" visibility="public"
2348 deprecated="not deprecated">
2349 </constructor>
2350 <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
2351 abstract="false" native="false" synchronized="false"
2352 static="false" final="false" visibility="public"
2353 deprecated="not deprecated">
2354 <doc>
2355 <![CDATA[Returns messages for the errors that caused this exception.]]>
2356 </doc>
2357 </method>
2358 <method name="getMessage" return="java.lang.String"
2359 abstract="false" native="false" synchronized="false"
2360 static="false" final="false" visibility="public"
2361 deprecated="not deprecated">
2362 </method>
2363 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002364 <![CDATA[Indicates that there was a runtime failure while providing an instance.
2365
2366 @author kevinb@google.com (Kevin Bourrillion)
2367 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002368 @since 2.0]]>
2369 </doc>
2370 </class>
2371 <!-- end class com.google.inject.ProvisionException -->
2372 <!-- start interface com.google.inject.Scope -->
2373 <interface name="Scope" abstract="true"
2374 static="false" final="false" visibility="public"
2375 deprecated="not deprecated">
2376 <method name="scope" return="com.google.inject.Provider&lt;T&gt;"
2377 abstract="true" native="false" synchronized="false"
2378 static="false" final="false" visibility="public"
2379 deprecated="not deprecated">
2380 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
2381 <param name="unscoped" type="com.google.inject.Provider&lt;T&gt;"/>
2382 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002383 <![CDATA[Scopes a provider. The returned provider returns objects from this scope.
2384 If an object does not exist in this scope, the provider can use the given
2385 unscoped provider to retrieve one.
2386
2387 <p>Scope implementations are strongly encouraged to override
2388 {@link Object#toString} in the returned provider and include the backing
2389 provider's {@code toString()} output.
2390
2391 @param key binding key
2392 @param unscoped locates an instance when one doesn't already exist in this
2393 scope.
2394 @return a new provider which only delegates to the given unscoped provider
2395 when an instance of the requested object doesn't already exist in this
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002396 scope]]>
2397 </doc>
2398 </method>
2399 <method name="toString" return="java.lang.String"
2400 abstract="true" native="false" synchronized="false"
2401 static="false" final="false" visibility="public"
2402 deprecated="not deprecated">
2403 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002404 <![CDATA[A short but useful description of this scope. For comparison, the standard
2405 scopes that ship with guice use the descriptions
2406 {@code "Scopes.SINGLETON"}, {@code "ServletScopes.SESSION"} and
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002407 {@code "ServletScopes.REQUEST"}.]]>
2408 </doc>
2409 </method>
2410 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002411 <![CDATA[A scope is a level of visibility that instances provided by Guice may have.
2412 By default, an instance created by the {@link Injector} has <i>no scope</i>,
2413 meaning it has no state from the framework's perspective -- the
2414 {@code Injector} creates it, injects it once into the class that required it,
2415 and then immediately forgets it. Associating a scope with a particular
2416 binding allows the created instance to be "remembered" and possibly used
2417 again for other injections.
2418
2419 <p>An example of a scope is {@link Scopes#SINGLETON}.
2420
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002421 @author crazybob@google.com (Bob Lee)]]>
2422 </doc>
2423 </interface>
2424 <!-- end interface com.google.inject.Scope -->
2425 <!-- start class com.google.inject.ScopeAnnotation -->
2426 <class name="ScopeAnnotation" abstract="true"
2427 static="false" final="false" visibility="public"
2428 deprecated="not deprecated">
2429 <implements name="java.lang.annotation.Annotation"/>
2430 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002431 <![CDATA[Annotates annotations which are used for scoping. Only one such annotation
2432 may apply to a single implementation class. You must also annotate scope
2433 annotations with {@code @Retention(RUNTIME)}. For example:
2434
2435 <pre>
2436 {@code @}Retention(RUNTIME)
2437 {@code @}Target(TYPE, METHOD)
2438 {@code @}ScopeAnnotation
2439 public {@code @}interface SessionScoped {}
2440 </pre>
2441
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002442 @author crazybob@google.com (Bob Lee)]]>
2443 </doc>
2444 </class>
2445 <!-- end class com.google.inject.ScopeAnnotation -->
2446 <!-- start class com.google.inject.Scopes -->
2447 <class name="Scopes" extends="java.lang.Object"
2448 abstract="false"
2449 static="false" final="false" visibility="public"
2450 deprecated="not deprecated">
2451 <method name="isSingleton" return="boolean"
2452 abstract="false" native="false" synchronized="false"
2453 static="true" final="false" visibility="public"
2454 deprecated="not deprecated">
2455 <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
2456 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002457 <![CDATA[Returns true if {@code binding} is singleton-scoped. If the binding is a {@link
2458 com.google.inject.spi.LinkedKeyBinding linked key binding} and belongs to an injector (ie. it
2459 was retrieved via {@link Injector#getBinding Injector.getBinding()}), then this method will
2460 also true if the target binding is singleton-scoped.
2461
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002462 @since 3.0]]>
2463 </doc>
2464 </method>
2465 <method name="isScoped" return="boolean"
2466 abstract="false" native="false" synchronized="false"
2467 static="true" final="false" visibility="public"
2468 deprecated="not deprecated">
2469 <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
2470 <param name="scope" type="com.google.inject.Scope"/>
2471 <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
2472 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002473 <![CDATA[Returns true if {@code binding} has the given scope. If the binding is a {@link
2474 com.google.inject.spi.LinkedKeyBinding linked key binding} and belongs to an injector (ie. it
2475 was retrieved via {@link Injector#getBinding Injector.getBinding()}), then this method will
2476 also true if the target binding has the given scope.
2477
2478 @param binding binding to check
2479 @param scope scope implementation instance
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002480 @param scopeAnnotation scope annotation class]]>
2481 </doc>
2482 </method>
2483 <method name="isCircularProxy" return="boolean"
2484 abstract="false" native="false" synchronized="false"
2485 static="true" final="false" visibility="public"
2486 deprecated="not deprecated">
2487 <param name="object" type="java.lang.Object"/>
2488 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002489 <![CDATA[Returns true if the object is a proxy for a circular dependency,
2490 constructed by Guice because it encountered a circular dependency. Scope
2491 implementations should be careful to <b>not cache circular proxies</b>,
2492 because the proxies are not intended for general purpose use. (They are
2493 designed just to fulfill the immediate injection, not all injections.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002494 Caching them can lead to IllegalArgumentExceptions or ClassCastExceptions.)]]>
2495 </doc>
2496 </method>
2497 <field name="SINGLETON" type="com.google.inject.Scope"
2498 transient="false" volatile="false"
2499 static="true" final="true" visibility="public"
2500 deprecated="not deprecated">
2501 <doc>
2502 <![CDATA[One instance per {@link Injector}. Also see {@code @}{@link Singleton}.]]>
2503 </doc>
2504 </field>
2505 <field name="NO_SCOPE" type="com.google.inject.Scope"
2506 transient="false" volatile="false"
2507 static="true" final="true" visibility="public"
2508 deprecated="not deprecated">
2509 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002510 <![CDATA[No scope; the same as not applying any scope at all. Each time the
2511 Injector obtains an instance of an object with "no scope", it injects this
2512 instance then immediately forgets it. When the next request for the same
2513 binding arrives it will need to obtain the instance over again.
2514
2515 <p>This exists only in case a class has been annotated with a scope
2516 annotation such as {@link Singleton @Singleton}, and you need to override
2517 this to "no scope" in your binding.
2518
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002519 @since 2.0]]>
2520 </doc>
2521 </field>
2522 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002523 <![CDATA[Built-in scope implementations.
2524
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002525 @author crazybob@google.com (Bob Lee)]]>
2526 </doc>
2527 </class>
2528 <!-- end class com.google.inject.Scopes -->
2529 <!-- start class com.google.inject.Singleton -->
2530 <class name="Singleton" abstract="true"
2531 static="false" final="false" visibility="public"
2532 deprecated="not deprecated">
2533 <implements name="java.lang.annotation.Annotation"/>
2534 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002535 <![CDATA[Apply this to implementation classes when you want only one instance
2536 (per {@link Injector}) to be reused for all injections for that binding.
2537
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002538 @author crazybob@google.com (Bob Lee)]]>
2539 </doc>
2540 </class>
2541 <!-- end class com.google.inject.Singleton -->
2542 <!-- start class com.google.inject.Stage -->
2543 <class name="Stage" extends="java.lang.Enum&lt;com.google.inject.Stage&gt;"
2544 abstract="false"
2545 static="false" final="true" visibility="public"
2546 deprecated="not deprecated">
2547 <method name="values" return="com.google.inject.Stage[]"
2548 abstract="false" native="false" synchronized="false"
2549 static="true" final="false" visibility="public"
2550 deprecated="not deprecated">
2551 </method>
2552 <method name="valueOf" return="com.google.inject.Stage"
2553 abstract="false" native="false" synchronized="false"
2554 static="true" final="false" visibility="public"
2555 deprecated="not deprecated">
2556 <param name="name" type="java.lang.String"/>
2557 </method>
2558 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002559 <![CDATA[The stage we're running in.
2560
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002561 @author crazybob@google.com (Bob Lee)]]>
2562 </doc>
2563 </class>
2564 <!-- end class com.google.inject.Stage -->
2565 <!-- start class com.google.inject.TypeLiteral -->
2566 <class name="TypeLiteral" extends="java.lang.Object"
2567 abstract="false"
2568 static="false" final="false" visibility="public"
2569 deprecated="not deprecated">
2570 <constructor name="TypeLiteral"
2571 static="false" final="false" visibility="protected"
2572 deprecated="not deprecated">
2573 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002574 <![CDATA[Constructs a new type literal. Derives represented class from type
2575 parameter.
2576
2577 <p>Clients create an empty anonymous subclass. Doing so embeds the type
2578 parameter in the anonymous class's type hierarchy so we can reconstitute it
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002579 at runtime despite erasure.]]>
2580 </doc>
2581 </constructor>
2582 <method name="getRawType" return="java.lang.Class&lt;? super T&gt;"
2583 abstract="false" native="false" synchronized="false"
2584 static="false" final="true" visibility="public"
2585 deprecated="not deprecated">
2586 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002587 <![CDATA[Returns the raw (non-generic) type for this type.
2588
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002589 @since 2.0]]>
2590 </doc>
2591 </method>
2592 <method name="getType" return="java.lang.reflect.Type"
2593 abstract="false" native="false" synchronized="false"
2594 static="false" final="true" visibility="public"
2595 deprecated="not deprecated">
2596 <doc>
2597 <![CDATA[Gets underlying {@code Type} instance.]]>
2598 </doc>
2599 </method>
2600 <method name="hashCode" return="int"
2601 abstract="false" native="false" synchronized="false"
2602 static="false" final="true" visibility="public"
2603 deprecated="not deprecated">
2604 </method>
2605 <method name="equals" return="boolean"
2606 abstract="false" native="false" synchronized="false"
2607 static="false" final="true" visibility="public"
2608 deprecated="not deprecated">
2609 <param name="o" type="java.lang.Object"/>
2610 </method>
2611 <method name="toString" return="java.lang.String"
2612 abstract="false" native="false" synchronized="false"
2613 static="false" final="true" visibility="public"
2614 deprecated="not deprecated">
2615 </method>
2616 <method name="get" return="com.google.inject.TypeLiteral&lt;?&gt;"
2617 abstract="false" native="false" synchronized="false"
2618 static="true" final="false" visibility="public"
2619 deprecated="not deprecated">
2620 <param name="type" type="java.lang.reflect.Type"/>
2621 <doc>
2622 <![CDATA[Gets type literal for the given {@code Type} instance.]]>
2623 </doc>
2624 </method>
2625 <method name="get" return="com.google.inject.TypeLiteral&lt;T&gt;"
2626 abstract="false" native="false" synchronized="false"
2627 static="true" final="false" visibility="public"
2628 deprecated="not deprecated">
2629 <param name="type" type="java.lang.Class&lt;T&gt;"/>
2630 <doc>
2631 <![CDATA[Gets type literal for the given {@code Class} instance.]]>
2632 </doc>
2633 </method>
2634 <method name="getSupertype" return="com.google.inject.TypeLiteral&lt;?&gt;"
2635 abstract="false" native="false" synchronized="false"
2636 static="false" final="false" visibility="public"
2637 deprecated="not deprecated">
2638 <param name="supertype" type="java.lang.Class&lt;?&gt;"/>
2639 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002640 <![CDATA[Returns the generic form of {@code supertype}. For example, if this is {@code
2641 ArrayList<String>}, this returns {@code Iterable<String>} given the input {@code
2642 Iterable.class}.
2643
2644 @param supertype a superclass of, or interface implemented by, this.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002645 @since 2.0]]>
2646 </doc>
2647 </method>
2648 <method name="getFieldType" return="com.google.inject.TypeLiteral&lt;?&gt;"
2649 abstract="false" native="false" synchronized="false"
2650 static="false" final="false" visibility="public"
2651 deprecated="not deprecated">
2652 <param name="field" type="java.lang.reflect.Field"/>
2653 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002654 <![CDATA[Returns the resolved generic type of {@code field}.
2655
2656 @param field a field defined by this or any superclass.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002657 @since 2.0]]>
2658 </doc>
2659 </method>
2660 <method name="getParameterTypes" return="java.util.List&lt;com.google.inject.TypeLiteral&lt;?&gt;&gt;"
2661 abstract="false" native="false" synchronized="false"
2662 static="false" final="false" visibility="public"
2663 deprecated="not deprecated">
2664 <param name="methodOrConstructor" type="java.lang.reflect.Member"/>
2665 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002666 <![CDATA[Returns the resolved generic parameter types of {@code methodOrConstructor}.
2667
2668 @param methodOrConstructor a method or constructor defined by this or any supertype.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002669 @since 2.0]]>
2670 </doc>
2671 </method>
2672 <method name="getExceptionTypes" return="java.util.List&lt;com.google.inject.TypeLiteral&lt;?&gt;&gt;"
2673 abstract="false" native="false" synchronized="false"
2674 static="false" final="false" visibility="public"
2675 deprecated="not deprecated">
2676 <param name="methodOrConstructor" type="java.lang.reflect.Member"/>
2677 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002678 <![CDATA[Returns the resolved generic exception types thrown by {@code constructor}.
2679
2680 @param methodOrConstructor a method or constructor defined by this or any supertype.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002681 @since 2.0]]>
2682 </doc>
2683 </method>
2684 <method name="getReturnType" return="com.google.inject.TypeLiteral&lt;?&gt;"
2685 abstract="false" native="false" synchronized="false"
2686 static="false" final="false" visibility="public"
2687 deprecated="not deprecated">
2688 <param name="method" type="java.lang.reflect.Method"/>
2689 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002690 <![CDATA[Returns the resolved generic return type of {@code method}.
2691
2692 @param method a method defined by this or any supertype.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002693 @since 2.0]]>
2694 </doc>
2695 </method>
2696 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002697 <![CDATA[Represents a generic type {@code T}. Java doesn't yet provide a way to
2698 represent generic types, so this class does. Forces clients to create a
2699 subclass of this class which enables retrieval the type information even at
2700 runtime.
2701
2702 <p>For example, to create a type literal for {@code List<String>}, you can
2703 create an empty anonymous inner class:
2704
2705 <p>
2706 {@code TypeLiteral<List<String>> list = new TypeLiteral<List<String>>() {};}
2707
2708 <p>Along with modeling generic types, this class can resolve type parameters.
2709 For example, to figure out what type {@code keySet()} returns on a {@code
2710 Map<Integer, String>}, use this code:<pre> {@code
2711
2712 TypeLiteral<Map<Integer, String>> mapType
2713 = new TypeLiteral<Map<Integer, String>>() {};
2714 TypeLiteral<?> keySetType
2715 = mapType.getReturnType(Map.class.getMethod("keySet"));
2716 System.out.println(keySetType); // prints "Set<Integer>"}</pre>
2717
2718 @author crazybob@google.com (Bob Lee)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002719 @author jessewilson@google.com (Jesse Wilson)]]>
2720 </doc>
2721 </class>
2722 <!-- end class com.google.inject.TypeLiteral -->
2723</package>
2724<package name="com.google.inject.assistedinject">
2725 <!-- start class com.google.inject.assistedinject.Assisted -->
2726 <class name="Assisted" abstract="true"
2727 static="false" final="false" visibility="public"
2728 deprecated="not deprecated">
2729 <implements name="java.lang.annotation.Annotation"/>
2730 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002731 <![CDATA[Annotates an injected parameter or field whose value comes from an argument to a factory method.
2732
2733 @author jmourits@google.com (Jerome Mourits)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002734 @author jessewilson@google.com (Jesse Wilson)]]>
2735 </doc>
2736 </class>
2737 <!-- end class com.google.inject.assistedinject.Assisted -->
2738 <!-- start class com.google.inject.assistedinject.AssistedInject -->
2739 <class name="AssistedInject" abstract="true"
2740 static="false" final="false" visibility="public"
2741 deprecated="not deprecated">
2742 <implements name="java.lang.annotation.Annotation"/>
2743 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002744 <![CDATA[<p>
2745 When used in tandem with {@link FactoryModuleBuilder}, constructors annotated with
2746 {@code @AssistedInject} indicate that multiple constructors can be injected, each with different
2747 parameters. AssistedInject annotations should not be mixed with {@literal @}{@link Inject}
2748 annotations. The assisted parameters must exactly match one corresponding factory method within
2749 the factory interface, but the parameters do not need to be in the same order. Constructors
2750 annotated with AssistedInject <b>are</b> created by Guice and receive all the benefits
2751 (such as AOP).
2752
2753 <p>
2754 <strong>Obsolete Usage:</strong> When used in tandem with {@link FactoryProvider}, constructors
2755 annotated with {@code @AssistedInject} trigger a "backwards compatibility mode". The assisted
2756 parameters must exactly match one corresponding factory method within the factory interface and
2757 all must be in the same order as listed in the factory. In this backwards compatable mode,
2758 constructors annotated with AssistedInject <b>are not</b> created by Guice and thus receive
2759 none of the benefits.
2760
2761 <p>
2762 Constructor parameters must be either supplied by the factory interface and marked with
2763 <code>@Assisted</code>, or they must be injectable.
2764
2765 @author jmourits@google.com (Jerome Mourits)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002766 @author jessewilson@google.com (Jesse Wilson)]]>
2767 </doc>
2768 </class>
2769 <!-- end class com.google.inject.assistedinject.AssistedInject -->
2770 <!-- start interface com.google.inject.assistedinject.AssistedInjectBinding -->
2771 <interface name="AssistedInjectBinding" abstract="true"
2772 static="false" final="false" visibility="public"
2773 deprecated="not deprecated">
2774 <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
2775 abstract="true" native="false" synchronized="false"
2776 static="false" final="false" visibility="public"
2777 deprecated="not deprecated">
2778 <doc>
2779 <![CDATA[Returns the {@link Key} for the factory binding.]]>
2780 </doc>
2781 </method>
2782 <method name="getAssistedMethods" return="java.util.Collection&lt;com.google.inject.assistedinject.AssistedMethod&gt;"
2783 abstract="true" native="false" synchronized="false"
2784 static="false" final="false" visibility="public"
2785 deprecated="not deprecated">
2786 <doc>
2787 <![CDATA[Returns an {@link AssistedMethod} for each method in the factory.]]>
2788 </doc>
2789 </method>
2790 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002791 <![CDATA[A binding for a factory created by FactoryModuleBuilder.
2792
2793 @param <T> The fully qualified type of the factory.
2794
2795 @since 3.0
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002796 @author ramakrishna@google.com (Ramakrishna Rajanna)]]>
2797 </doc>
2798 </interface>
2799 <!-- end interface com.google.inject.assistedinject.AssistedInjectBinding -->
2800 <!-- start interface com.google.inject.assistedinject.AssistedInjectTargetVisitor -->
2801 <interface name="AssistedInjectTargetVisitor" abstract="true"
2802 static="false" final="false" visibility="public"
2803 deprecated="not deprecated">
2804 <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
2805 <method name="visit" return="V"
2806 abstract="true" native="false" synchronized="false"
2807 static="false" final="false" visibility="public"
2808 deprecated="not deprecated">
2809 <param name="assistedInjectBinding" type="com.google.inject.assistedinject.AssistedInjectBinding&lt;? extends T&gt;"/>
2810 <doc>
2811 <![CDATA[Visits an {@link AssistedInjectBinding} created through {@link FactoryModuleBuilder}.]]>
2812 </doc>
2813 </method>
2814 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002815 <![CDATA[A visitor for the AssistedInject extension.
2816 <p>
2817 If your {@link BindingTargetVisitor} implements this interface, bindings created by using
2818 {@link FactoryModuleBuilder} will be visited through this interface.
2819
2820 @since 3.0
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002821 @author ramakrishna@google.com (Ramakrishna Rajanna)]]>
2822 </doc>
2823 </interface>
2824 <!-- end interface com.google.inject.assistedinject.AssistedInjectTargetVisitor -->
2825 <!-- start interface com.google.inject.assistedinject.AssistedMethod -->
2826 <interface name="AssistedMethod" abstract="true"
2827 static="false" final="false" visibility="public"
2828 deprecated="not deprecated">
2829 <method name="getFactoryMethod" return="java.lang.reflect.Method"
2830 abstract="true" native="false" synchronized="false"
2831 static="false" final="false" visibility="public"
2832 deprecated="not deprecated">
2833 <doc>
2834 <![CDATA[Returns the factory method that is being assisted.]]>
2835 </doc>
2836 </method>
2837 <method name="getImplementationType" return="com.google.inject.TypeLiteral&lt;?&gt;"
2838 abstract="true" native="false" synchronized="false"
2839 static="false" final="false" visibility="public"
2840 deprecated="not deprecated">
2841 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002842 <![CDATA[Returns the implementation type that will be created when the method is
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002843 used.]]>
2844 </doc>
2845 </method>
2846 <method name="getImplementationConstructor" return="java.lang.reflect.Constructor&lt;?&gt;"
2847 abstract="true" native="false" synchronized="false"
2848 static="false" final="false" visibility="public"
2849 deprecated="not deprecated">
2850 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002851 <![CDATA[Returns the constructor that will be used to construct instances of the
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002852 implementation.]]>
2853 </doc>
2854 </method>
2855 <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
2856 abstract="true" native="false" synchronized="false"
2857 static="false" final="false" visibility="public"
2858 deprecated="not deprecated">
2859 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002860 <![CDATA[Returns all non-assisted dependencies required to construct and inject
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002861 the implementation.]]>
2862 </doc>
2863 </method>
2864 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07002865 <![CDATA[Details about how a method in an assisted inject factory will be assisted.
2866
2867 @since 3.0
Christian Edward Gruber509e3542014-03-20 20:37:34 -07002868 @author ramakrishna@google.com (Ramakrishna Rajanna)]]>
2869 </doc>
2870 </interface>
2871 <!-- end interface com.google.inject.assistedinject.AssistedMethod -->
2872 <!-- start class com.google.inject.assistedinject.FactoryModuleBuilder -->
2873 <class name="FactoryModuleBuilder" extends="java.lang.Object"
2874 abstract="false"
2875 static="false" final="true" visibility="public"
2876 deprecated="not deprecated">
2877 <constructor name="FactoryModuleBuilder"
2878 static="false" final="false" visibility="public"
2879 deprecated="not deprecated">
2880 </constructor>
2881 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2882 abstract="false" native="false" synchronized="false"
2883 static="false" final="false" visibility="public"
2884 deprecated="not deprecated">
2885 <param name="source" type="java.lang.Class&lt;T&gt;"/>
2886 <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
2887 <doc>
2888 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2889 </doc>
2890 </method>
2891 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2892 abstract="false" native="false" synchronized="false"
2893 static="false" final="false" visibility="public"
2894 deprecated="not deprecated">
2895 <param name="source" type="java.lang.Class&lt;T&gt;"/>
2896 <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
2897 <doc>
2898 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2899 </doc>
2900 </method>
2901 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2902 abstract="false" native="false" synchronized="false"
2903 static="false" final="false" visibility="public"
2904 deprecated="not deprecated">
2905 <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
2906 <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
2907 <doc>
2908 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2909 </doc>
2910 </method>
2911 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2912 abstract="false" native="false" synchronized="false"
2913 static="false" final="false" visibility="public"
2914 deprecated="not deprecated">
2915 <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
2916 <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
2917 <doc>
2918 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2919 </doc>
2920 </method>
2921 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2922 abstract="false" native="false" synchronized="false"
2923 static="false" final="false" visibility="public"
2924 deprecated="not deprecated">
2925 <param name="source" type="java.lang.Class&lt;T&gt;"/>
2926 <param name="annotation" type="java.lang.annotation.Annotation"/>
2927 <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
2928 <doc>
2929 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2930 </doc>
2931 </method>
2932 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2933 abstract="false" native="false" synchronized="false"
2934 static="false" final="false" visibility="public"
2935 deprecated="not deprecated">
2936 <param name="source" type="java.lang.Class&lt;T&gt;"/>
2937 <param name="annotation" type="java.lang.annotation.Annotation"/>
2938 <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
2939 <doc>
2940 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2941 </doc>
2942 </method>
2943 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2944 abstract="false" native="false" synchronized="false"
2945 static="false" final="false" visibility="public"
2946 deprecated="not deprecated">
2947 <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
2948 <param name="annotation" type="java.lang.annotation.Annotation"/>
2949 <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
2950 <doc>
2951 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2952 </doc>
2953 </method>
2954 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2955 abstract="false" native="false" synchronized="false"
2956 static="false" final="false" visibility="public"
2957 deprecated="not deprecated">
2958 <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
2959 <param name="annotation" type="java.lang.annotation.Annotation"/>
2960 <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
2961 <doc>
2962 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2963 </doc>
2964 </method>
2965 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2966 abstract="false" native="false" synchronized="false"
2967 static="false" final="false" visibility="public"
2968 deprecated="not deprecated">
2969 <param name="source" type="java.lang.Class&lt;T&gt;"/>
2970 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
2971 <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
2972 <doc>
2973 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2974 </doc>
2975 </method>
2976 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2977 abstract="false" native="false" synchronized="false"
2978 static="false" final="false" visibility="public"
2979 deprecated="not deprecated">
2980 <param name="source" type="java.lang.Class&lt;T&gt;"/>
2981 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
2982 <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
2983 <doc>
2984 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2985 </doc>
2986 </method>
2987 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2988 abstract="false" native="false" synchronized="false"
2989 static="false" final="false" visibility="public"
2990 deprecated="not deprecated">
2991 <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
2992 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
2993 <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
2994 <doc>
2995 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2996 </doc>
2997 </method>
2998 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2999 abstract="false" native="false" synchronized="false"
3000 static="false" final="false" visibility="public"
3001 deprecated="not deprecated">
3002 <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
3003 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
3004 <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
3005 <doc>
3006 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
3007 </doc>
3008 </method>
3009 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
3010 abstract="false" native="false" synchronized="false"
3011 static="false" final="false" visibility="public"
3012 deprecated="not deprecated">
3013 <param name="source" type="com.google.inject.Key&lt;T&gt;"/>
3014 <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
3015 <doc>
3016 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
3017 </doc>
3018 </method>
3019 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
3020 abstract="false" native="false" synchronized="false"
3021 static="false" final="false" visibility="public"
3022 deprecated="not deprecated">
3023 <param name="source" type="com.google.inject.Key&lt;T&gt;"/>
3024 <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
3025 <doc>
3026 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
3027 </doc>
3028 </method>
3029 <method name="build" return="com.google.inject.Module"
3030 abstract="false" native="false" synchronized="false"
3031 static="false" final="false" visibility="public"
3032 deprecated="not deprecated">
3033 <param name="factoryInterface" type="java.lang.Class&lt;F&gt;"/>
3034 <doc>
3035 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
3036 </doc>
3037 </method>
3038 <method name="build" return="com.google.inject.Module"
3039 abstract="false" native="false" synchronized="false"
3040 static="false" final="false" visibility="public"
3041 deprecated="not deprecated">
3042 <param name="factoryInterface" type="com.google.inject.TypeLiteral&lt;F&gt;"/>
3043 <doc>
3044 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
3045 </doc>
3046 </method>
3047 <method name="build" return="com.google.inject.Module"
3048 abstract="false" native="false" synchronized="false"
3049 static="false" final="false" visibility="public"
3050 deprecated="not deprecated">
3051 <param name="factoryInterface" type="com.google.inject.Key&lt;F&gt;"/>
3052 </method>
3053 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07003054 <![CDATA[Provides a factory that combines the caller's arguments with injector-supplied values to
3055 construct objects.
3056
3057 <h3>Defining a factory</h3>
3058 Create an interface whose methods return the constructed type, or any of its supertypes. The
3059 method's parameters are the arguments required to build the constructed type.
3060
3061 <pre>public interface PaymentFactory {
3062 Payment create(Date startDate, Money amount);
3063 }</pre>
3064
3065 You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i>
3066 or <i>newPayment</i>.
3067
3068 <h3>Creating a type that accepts factory parameters</h3>
3069 {@code constructedType} is a concrete class with an {@literal @}{@link com.google.inject.Inject
3070 Inject}-annotated constructor. In addition to injector-supplied parameters, the constructor
3071 should have parameters that match each of the factory method's parameters. Each factory-supplied
3072 parameter requires an {@literal @}{@link Assisted} annotation. This serves to document that the
3073 parameter is not bound by your application's modules.
3074
3075 <pre>public class RealPayment implements Payment {
3076 {@literal @}Inject
3077 public RealPayment(
3078 CreditService creditService,
3079 AuthService authService,
3080 <strong>{@literal @}Assisted Date startDate</strong>,
3081 <strong>{@literal @}Assisted Money amount</strong>) {
3082 ...
3083 }
3084 }</pre>
3085
3086 <h3>Multiple factory methods for the same type</h3>
3087 If the factory contains many methods that return the same type, you can create multiple
3088 constructors in your concrete class, each constructor marked with with
3089 {@literal @}{@link AssistedInject}, in order to match the different parameters types of the
3090 factory methods.
3091
3092 <pre>public interface PaymentFactory {
3093 Payment create(Date startDate, Money amount);
3094 Payment createWithoutDate(Money amount);
3095 }
3096
3097 public class RealPayment implements Payment {
3098 {@literal @}AssistedInject
3099 public RealPayment(
3100 CreditService creditService,
3101 AuthService authService,
3102 <strong>{@literal @}Assisted Date startDate</strong>,
3103 <strong>{@literal @}Assisted Money amount</strong>) {
3104 ...
3105 }
3106
3107 {@literal @}AssistedInject
3108 public RealPayment(
3109 CreditService creditService,
3110 AuthService authService,
3111 <strong>{@literal @}Assisted Money amount</strong>) {
3112 ...
3113 }
3114 }</pre>
3115
3116 <h3>Configuring simple factories</h3>
3117 In your {@link Module module}, install a {@code FactoryModuleBuilder} that creates the
3118 factory:
3119
3120 <pre>install(new FactoryModuleBuilder()
3121 .implement(Payment.class, RealPayment.class)
3122 .build(PaymentFactory.class);</pre>
3123
3124 As a side-effect of this binding, Guice will inject the factory to initialize it for use. The
3125 factory cannot be used until the injector has been initialized.
3126
3127 <h3>Configuring complex factories</h3>
3128 Factories can create an arbitrary number of objects, one per each method. Each factory
3129 method can be configured using <code>.implement</code>.
3130
3131 <pre>public interface OrderFactory {
3132 Payment create(Date startDate, Money amount);
3133 Shipment create(Customer customer, Item item);
3134 Receipt create(Payment payment, Shipment shipment);
3135 }
3136
3137 [...]
3138
3139 install(new FactoryModuleBuilder()
3140 .implement(Payment.class, RealPayment.class)
3141 // excluding .implement for Shipment means the implementation class
3142 // will be 'Shipment' itself, which is legal if it's not an interface.
3143 .implement(Receipt.class, RealReceipt.class)
3144 .build(OrderFactory.class);</pre>
3145 </pre>
3146
3147 <h3>Using the factory</h3>
3148 Inject your factory into your application classes. When you use the factory, your arguments
3149 will be combined with values from the injector to construct an instance.
3150
3151 <pre>public class PaymentAction {
3152 {@literal @}Inject private PaymentFactory paymentFactory;
3153
3154 public void doPayment(Money amount) {
3155 Payment payment = paymentFactory.create(new Date(), amount);
3156 payment.apply();
3157 }
3158 }</pre>
3159
3160 <h3>Making parameter types distinct</h3>
3161 The types of the factory method's parameters must be distinct. To use multiple parameters of
3162 the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the
3163 parameters. The names must be applied to the factory method's parameters:
3164
3165 <pre>public interface PaymentFactory {
3166 Payment create(
3167 <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
3168 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
3169 Money amount);
3170 } </pre>
3171
3172 ...and to the concrete type's constructor parameters:
3173
3174 <pre>public class RealPayment implements Payment {
3175 {@literal @}Inject
3176 public RealPayment(
3177 CreditService creditService,
3178 AuthService authService,
3179 <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
3180 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
3181 <strong>{@literal @}Assisted</strong> Money amount) {
3182 ...
3183 }
3184 }</pre>
3185
3186 <h3>Values are created by Guice</h3>
3187 Returned factories use child injectors to create values. The values are eligible for method
3188 interception. In addition, {@literal @}{@literal Inject} members will be injected before they are
3189 returned.
3190
3191 <h3>More configuration options</h3>
3192 In addition to simply specifying an implementation class for any returned type, factories' return
3193 values can be automatic or can be configured to use annotations:
3194 <p/>
3195 If you just want to return the types specified in the factory, do not configure any
3196 implementations:
3197
3198 <pre>public interface FruitFactory {
3199 Apple getApple(Color color);
3200 }
3201 ...
3202 protected void configure() {
3203 install(new FactoryModuleBuilder().build(FruitFactory.class));
3204 }</pre>
3205
3206 Note that any type returned by the factory in this manner needs to be an implementation class.
3207 <p/>
3208 To return two different implementations for the same interface from your factory, use binding
3209 annotations on your return types:
3210
3211 <pre>interface CarFactory {
3212 {@literal @}Named("fast") Car getFastCar(Color color);
3213 {@literal @}Named("clean") Car getCleanCar(Color color);
3214 }
3215 ...
3216 protected void configure() {
3217 install(new FactoryModuleBuilder()
3218 .implement(Car.class, Names.named("fast"), Porsche.class)
3219 .implement(Car.class, Names.named("clean"), Prius.class)
3220 .build(CarFactory.class));
3221 }</pre>
3222
3223 <h3>Implementation limitations</h3>
3224 As a limitation of the implementation, it is prohibited to declare a factory method that
3225 accepts a {@code Provider} as one of its arguments.
3226
3227 @since 3.0
Christian Edward Gruber509e3542014-03-20 20:37:34 -07003228 @author schmitt@google.com (Peter Schmitt)]]>
3229 </doc>
3230 </class>
3231 <!-- end class com.google.inject.assistedinject.FactoryModuleBuilder -->
3232 <!-- start class com.google.inject.assistedinject.FactoryProvider -->
3233 <class name="FactoryProvider" extends="java.lang.Object"
3234 abstract="false"
3235 static="false" final="false" visibility="public"
3236 deprecated="use {@link FactoryModuleBuilder} instead.">
3237 <implements name="com.google.inject.Provider&lt;F&gt;"/>
3238 <implements name="com.google.inject.spi.HasDependencies"/>
3239 <method name="newFactory" return="com.google.inject.Provider&lt;F&gt;"
3240 abstract="false" native="false" synchronized="false"
3241 static="true" final="false" visibility="public"
3242 deprecated="not deprecated">
3243 <param name="factoryType" type="java.lang.Class&lt;F&gt;"/>
3244 <param name="implementationType" type="java.lang.Class&lt;?&gt;"/>
3245 </method>
3246 <method name="newFactory" return="com.google.inject.Provider&lt;F&gt;"
3247 abstract="false" native="false" synchronized="false"
3248 static="true" final="false" visibility="public"
3249 deprecated="not deprecated">
3250 <param name="factoryType" type="com.google.inject.TypeLiteral&lt;F&gt;"/>
3251 <param name="implementationType" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
3252 </method>
3253 <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
3254 abstract="false" native="false" synchronized="false"
3255 static="false" final="false" visibility="public"
3256 deprecated="not deprecated">
3257 </method>
3258 <method name="get" return="F"
3259 abstract="false" native="false" synchronized="false"
3260 static="false" final="false" visibility="public"
3261 deprecated="not deprecated">
3262 </method>
3263 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07003264 <![CDATA[<strong>Obsolete.</strong> Prefer {@link FactoryModuleBuilder} for its more concise API and
3265 additional capability.
3266
3267 <p>Provides a factory that combines the caller's arguments with injector-supplied values to
3268 construct objects.
3269
3270 <h3>Defining a factory</h3>
3271 Create an interface whose methods return the constructed type, or any of its supertypes. The
3272 method's parameters are the arguments required to build the constructed type.
3273 <pre>public interface PaymentFactory {
3274 Payment create(Date startDate, Money amount);
3275 }</pre>
3276 You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i>
3277 or <i>newPayment</i>.
3278
3279 <h3>Creating a type that accepts factory parameters</h3>
3280 {@code constructedType} is a concrete class with an {@literal @}{@link Inject}-annotated
3281 constructor. In addition to injector-supplied parameters, the constructor should have
3282 parameters that match each of the factory method's parameters. Each factory-supplied parameter
3283 requires an {@literal @}{@link Assisted} annotation. This serves to document that the parameter
3284 is not bound by your application's modules.
3285 <pre>public class RealPayment implements Payment {
3286 {@literal @}Inject
3287 public RealPayment(
3288 CreditService creditService,
3289 AuthService authService,
3290 <strong>{@literal @}Assisted Date startDate</strong>,
3291 <strong>{@literal @}Assisted Money amount</strong>) {
3292 ...
3293 }
3294 }</pre>
3295 Any parameter that permits a null value should also be annotated {@code @Nullable}.
3296
3297 <h3>Configuring factories</h3>
3298 In your {@link com.google.inject.Module module}, bind the factory interface to the returned
3299 factory:
3300 <pre>bind(PaymentFactory.class).toProvider(
3301 FactoryProvider.newFactory(PaymentFactory.class, RealPayment.class));</pre>
3302 As a side-effect of this binding, Guice will inject the factory to initialize it for use. The
3303 factory cannot be used until the injector has been initialized.
3304
3305 <h3>Using the factory</h3>
3306 Inject your factory into your application classes. When you use the factory, your arguments
3307 will be combined with values from the injector to construct an instance.
3308 <pre>public class PaymentAction {
3309 {@literal @}Inject private PaymentFactory paymentFactory;
3310
3311 public void doPayment(Money amount) {
3312 Payment payment = paymentFactory.create(new Date(), amount);
3313 payment.apply();
3314 }
3315 }</pre>
3316
3317 <h3>Making parameter types distinct</h3>
3318 The types of the factory method's parameters must be distinct. To use multiple parameters of
3319 the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the
3320 parameters. The names must be applied to the factory method's parameters:
3321
3322 <pre>public interface PaymentFactory {
3323 Payment create(
3324 <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
3325 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
3326 Money amount);
3327 } </pre>
3328 ...and to the concrete type's constructor parameters:
3329 <pre>public class RealPayment implements Payment {
3330 {@literal @}Inject
3331 public RealPayment(
3332 CreditService creditService,
3333 AuthService authService,
3334 <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
3335 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
3336 <strong>{@literal @}Assisted</strong> Money amount) {
3337 ...
3338 }
3339 }</pre>
3340
3341 <h3>Values are created by Guice</h3>
3342 Returned factories use child injectors to create values. The values are eligible for method
3343 interception. In addition, {@literal @}{@literal Inject} members will be injected before they are
3344 returned.
3345
3346 <h3>Backwards compatibility using {@literal @}AssistedInject</h3>
3347 Instead of the {@literal @}Inject annotation, you may annotate the constructed classes with
3348 {@literal @}{@link AssistedInject}. This triggers a limited backwards-compatability mode.
3349
3350 <p>Instead of matching factory method arguments to constructor parameters using their names, the
3351 <strong>parameters are matched by their order</strong>. The first factory method argument is
3352 used for the first {@literal @}Assisted constructor parameter, etc.. Annotation names have no
3353 effect.
3354
3355 <p>Returned values are <strong>not created by Guice</strong>. These types are not eligible for
3356 method interception. They do receive post-construction member injection.
3357
3358 @param <F> The factory interface
3359
3360 @author jmourits@google.com (Jerome Mourits)
3361 @author jessewilson@google.com (Jesse Wilson)
3362 @author dtm@google.com (Daniel Martin)
3363
Christian Edward Gruber509e3542014-03-20 20:37:34 -07003364 @deprecated use {@link FactoryModuleBuilder} instead.]]>
3365 </doc>
3366 </class>
3367 <!-- end class com.google.inject.assistedinject.FactoryProvider -->
3368</package>
3369<package name="com.google.inject.binder">
3370 <!-- start interface com.google.inject.binder.AnnotatedBindingBuilder -->
3371 <interface name="AnnotatedBindingBuilder" abstract="true"
3372 static="false" final="false" visibility="public"
3373 deprecated="not deprecated">
3374 <implements name="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"/>
3375 <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
3376 abstract="true" native="false" synchronized="false"
3377 static="false" final="false" visibility="public"
3378 deprecated="not deprecated">
3379 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
3380 <doc>
3381 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3382 </doc>
3383 </method>
3384 <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
3385 abstract="true" native="false" synchronized="false"
3386 static="false" final="false" visibility="public"
3387 deprecated="not deprecated">
3388 <param name="annotation" type="java.lang.annotation.Annotation"/>
3389 <doc>
3390 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3391 </doc>
3392 </method>
3393 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07003394 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3395
Christian Edward Gruber509e3542014-03-20 20:37:34 -07003396 @author crazybob@google.com (Bob Lee)]]>
3397 </doc>
3398 </interface>
3399 <!-- end interface com.google.inject.binder.AnnotatedBindingBuilder -->
3400 <!-- start interface com.google.inject.binder.AnnotatedConstantBindingBuilder -->
3401 <interface name="AnnotatedConstantBindingBuilder" abstract="true"
3402 static="false" final="false" visibility="public"
3403 deprecated="not deprecated">
3404 <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder"
3405 abstract="true" native="false" synchronized="false"
3406 static="false" final="false" visibility="public"
3407 deprecated="not deprecated">
3408 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
3409 <doc>
3410 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3411 </doc>
3412 </method>
3413 <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder"
3414 abstract="true" native="false" synchronized="false"
3415 static="false" final="false" visibility="public"
3416 deprecated="not deprecated">
3417 <param name="annotation" type="java.lang.annotation.Annotation"/>
3418 <doc>
3419 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3420 </doc>
3421 </method>
3422 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07003423 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3424
Christian Edward Gruber509e3542014-03-20 20:37:34 -07003425 @author crazybob@google.com (Bob Lee)]]>
3426 </doc>
3427 </interface>
3428 <!-- end interface com.google.inject.binder.AnnotatedConstantBindingBuilder -->
3429 <!-- start interface com.google.inject.binder.AnnotatedElementBuilder -->
3430 <interface name="AnnotatedElementBuilder" abstract="true"
3431 static="false" final="false" visibility="public"
3432 deprecated="not deprecated">
3433 <method name="annotatedWith"
3434 abstract="true" native="false" synchronized="false"
3435 static="false" final="false" visibility="public"
3436 deprecated="not deprecated">
3437 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
3438 <doc>
3439 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3440 </doc>
3441 </method>
3442 <method name="annotatedWith"
3443 abstract="true" native="false" synchronized="false"
3444 static="false" final="false" visibility="public"
3445 deprecated="not deprecated">
3446 <param name="annotation" type="java.lang.annotation.Annotation"/>
3447 <doc>
3448 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3449 </doc>
3450 </method>
3451 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07003452 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3453
3454 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07003455 @since 2.0]]>
3456 </doc>
3457 </interface>
3458 <!-- end interface com.google.inject.binder.AnnotatedElementBuilder -->
3459 <!-- start interface com.google.inject.binder.ConstantBindingBuilder -->
3460 <interface name="ConstantBindingBuilder" abstract="true"
3461 static="false" final="false" visibility="public"
3462 deprecated="not deprecated">
3463 <method name="to"
3464 abstract="true" native="false" synchronized="false"
3465 static="false" final="false" visibility="public"
3466 deprecated="not deprecated">
3467 <param name="value" type="java.lang.String"/>
3468 <doc>
3469 <![CDATA[Binds constant to the given value.]]>
3470 </doc>
3471 </method>
3472 <method name="to"
3473 abstract="true" native="false" synchronized="false"
3474 static="false" final="false" visibility="public"
3475 deprecated="not deprecated">
3476 <param name="value" type="int"/>
3477 <doc>
3478 <![CDATA[Binds constant to the given value.]]>
3479 </doc>
3480 </method>
3481 <method name="to"
3482 abstract="true" native="false" synchronized="false"
3483 static="false" final="false" visibility="public"
3484 deprecated="not deprecated">
3485 <param name="value" type="long"/>
3486 <doc>
3487 <![CDATA[Binds constant to the given value.]]>
3488 </doc>
3489 </method>
3490 <method name="to"
3491 abstract="true" native="false" synchronized="false"
3492 static="false" final="false" visibility="public"
3493 deprecated="not deprecated">
3494 <param name="value" type="boolean"/>
3495 <doc>
3496 <![CDATA[Binds constant to the given value.]]>
3497 </doc>
3498 </method>
3499 <method name="to"
3500 abstract="true" native="false" synchronized="false"
3501 static="false" final="false" visibility="public"
3502 deprecated="not deprecated">
3503 <param name="value" type="double"/>
3504 <doc>
3505 <![CDATA[Binds constant to the given value.]]>
3506 </doc>
3507 </method>
3508 <method name="to"
3509 abstract="true" native="false" synchronized="false"
3510 static="false" final="false" visibility="public"
3511 deprecated="not deprecated">
3512 <param name="value" type="float"/>
3513 <doc>
3514 <![CDATA[Binds constant to the given value.]]>
3515 </doc>
3516 </method>
3517 <method name="to"
3518 abstract="true" native="false" synchronized="false"
3519 static="false" final="false" visibility="public"
3520 deprecated="not deprecated">
3521 <param name="value" type="short"/>
3522 <doc>
3523 <![CDATA[Binds constant to the given value.]]>
3524 </doc>
3525 </method>
3526 <method name="to"
3527 abstract="true" native="false" synchronized="false"
3528 static="false" final="false" visibility="public"
3529 deprecated="not deprecated">
3530 <param name="value" type="char"/>
3531 <doc>
3532 <![CDATA[Binds constant to the given value.]]>
3533 </doc>
3534 </method>
3535 <method name="to"
3536 abstract="true" native="false" synchronized="false"
3537 static="false" final="false" visibility="public"
3538 deprecated="not deprecated">
3539 <param name="value" type="byte"/>
3540 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07003541 <![CDATA[Binds constant to the given value.
3542
Christian Edward Gruber509e3542014-03-20 20:37:34 -07003543 @since 3.0]]>
3544 </doc>
3545 </method>
3546 <method name="to"
3547 abstract="true" native="false" synchronized="false"
3548 static="false" final="false" visibility="public"
3549 deprecated="not deprecated">
3550 <param name="value" type="java.lang.Class&lt;?&gt;"/>
3551 <doc>
3552 <![CDATA[Binds constant to the given value.]]>
3553 </doc>
3554 </method>
3555 <method name="to"
3556 abstract="true" native="false" synchronized="false"
3557 static="false" final="false" visibility="public"
3558 deprecated="not deprecated">
3559 <param name="value" type="E extends java.lang.Enum&lt;E&gt;"/>
3560 <doc>
3561 <![CDATA[Binds constant to the given value.]]>
3562 </doc>
3563 </method>
3564 <doc>
3565 <![CDATA[Binds to a constant value.]]>
3566 </doc>
3567 </interface>
3568 <!-- end interface com.google.inject.binder.ConstantBindingBuilder -->
3569 <!-- start interface com.google.inject.binder.LinkedBindingBuilder -->
3570 <interface name="LinkedBindingBuilder" abstract="true"
3571 static="false" final="false" visibility="public"
3572 deprecated="not deprecated">
3573 <implements name="com.google.inject.binder.ScopedBindingBuilder"/>
3574 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
3575 abstract="true" native="false" synchronized="false"
3576 static="false" final="false" visibility="public"
3577 deprecated="not deprecated">
3578 <param name="implementation" type="java.lang.Class&lt;? extends T&gt;"/>
3579 <doc>
3580 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3581 </doc>
3582 </method>
3583 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
3584 abstract="true" native="false" synchronized="false"
3585 static="false" final="false" visibility="public"
3586 deprecated="not deprecated">
3587 <param name="implementation" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
3588 <doc>
3589 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3590 </doc>
3591 </method>
3592 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
3593 abstract="true" native="false" synchronized="false"
3594 static="false" final="false" visibility="public"
3595 deprecated="not deprecated">
3596 <param name="targetKey" type="com.google.inject.Key&lt;? extends T&gt;"/>
3597 <doc>
3598 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3599 </doc>
3600 </method>
3601 <method name="toInstance"
3602 abstract="true" native="false" synchronized="false"
3603 static="false" final="false" visibility="public"
3604 deprecated="not deprecated">
3605 <param name="instance" type="T"/>
3606 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07003607 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3608
Christian Edward Gruber509e3542014-03-20 20:37:34 -07003609 @see com.google.inject.Injector#injectMembers]]>
3610 </doc>
3611 </method>
3612 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
3613 abstract="true" native="false" synchronized="false"
3614 static="false" final="false" visibility="public"
3615 deprecated="not deprecated">
3616 <param name="provider" type="com.google.inject.Provider&lt;? extends T&gt;"/>
3617 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07003618 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3619
Christian Edward Gruber509e3542014-03-20 20:37:34 -07003620 @see com.google.inject.Injector#injectMembers]]>
3621 </doc>
3622 </method>
3623 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
3624 abstract="true" native="false" synchronized="false"
3625 static="false" final="false" visibility="public"
3626 deprecated="not deprecated">
3627 <param name="provider" type="javax.inject.Provider&lt;? extends T&gt;"/>
3628 <doc>
3629 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3630
3631 @see com.google.inject.Injector#injectMembers]]>
3632 </doc>
3633 </method>
3634 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
3635 abstract="true" native="false" synchronized="false"
3636 static="false" final="false" visibility="public"
3637 deprecated="not deprecated">
3638 <param name="providerType" type="java.lang.Class&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
3639 <doc>
3640 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3641 </doc>
3642 </method>
3643 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
3644 abstract="true" native="false" synchronized="false"
3645 static="false" final="false" visibility="public"
3646 deprecated="not deprecated">
3647 <param name="providerType" type="com.google.inject.TypeLiteral&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
3648 <doc>
3649 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3650 </doc>
3651 </method>
3652 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
3653 abstract="true" native="false" synchronized="false"
3654 static="false" final="false" visibility="public"
3655 deprecated="not deprecated">
3656 <param name="providerKey" type="com.google.inject.Key&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
3657 <doc>
3658 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3659 </doc>
3660 </method>
3661 <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder"
3662 abstract="true" native="false" synchronized="false"
3663 static="false" final="false" visibility="public"
3664 deprecated="not deprecated">
3665 <param name="constructor" type="java.lang.reflect.Constructor&lt;S&gt;"/>
3666 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07003667 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3668
Christian Edward Gruber509e3542014-03-20 20:37:34 -07003669 @since 3.0]]>
3670 </doc>
3671 </method>
3672 <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder"
3673 abstract="true" native="false" synchronized="false"
3674 static="false" final="false" visibility="public"
3675 deprecated="not deprecated">
3676 <param name="constructor" type="java.lang.reflect.Constructor&lt;S&gt;"/>
3677 <param name="type" type="com.google.inject.TypeLiteral&lt;? extends S&gt;"/>
3678 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07003679 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3680
Christian Edward Gruber509e3542014-03-20 20:37:34 -07003681 @since 3.0]]>
3682 </doc>
3683 </method>
3684 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07003685 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3686
Christian Edward Gruber509e3542014-03-20 20:37:34 -07003687 @author crazybob@google.com (Bob Lee)]]>
3688 </doc>
3689 </interface>
3690 <!-- end interface com.google.inject.binder.LinkedBindingBuilder -->
3691 <!-- start interface com.google.inject.binder.ScopedBindingBuilder -->
3692 <interface name="ScopedBindingBuilder" abstract="true"
3693 static="false" final="false" visibility="public"
3694 deprecated="not deprecated">
3695 <method name="in"
3696 abstract="true" native="false" synchronized="false"
3697 static="false" final="false" visibility="public"
3698 deprecated="not deprecated">
3699 <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
3700 <doc>
3701 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3702 </doc>
3703 </method>
3704 <method name="in"
3705 abstract="true" native="false" synchronized="false"
3706 static="false" final="false" visibility="public"
3707 deprecated="not deprecated">
3708 <param name="scope" type="com.google.inject.Scope"/>
3709 <doc>
3710 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3711 </doc>
3712 </method>
3713 <method name="asEagerSingleton"
3714 abstract="true" native="false" synchronized="false"
3715 static="false" final="false" visibility="public"
3716 deprecated="not deprecated">
3717 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07003718 <![CDATA[Instructs the {@link com.google.inject.Injector} to eagerly initialize this
3719 singleton-scoped binding upon creation. Useful for application
3720 initialization logic. See the EDSL examples at
Christian Edward Gruber509e3542014-03-20 20:37:34 -07003721 {@link com.google.inject.Binder}.]]>
3722 </doc>
3723 </method>
3724 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07003725 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3726
Christian Edward Gruber509e3542014-03-20 20:37:34 -07003727 @author crazybob@google.com (Bob Lee)]]>
3728 </doc>
3729 </interface>
3730 <!-- end interface com.google.inject.binder.ScopedBindingBuilder -->
3731</package>
3732<package name="com.google.inject.grapher">
3733 <!-- start class com.google.inject.grapher.AbstractInjectorGrapher -->
3734 <class name="AbstractInjectorGrapher" extends="java.lang.Object"
3735 abstract="true"
3736 static="false" final="false" visibility="public"
3737 deprecated="not deprecated">
3738 <implements name="com.google.inject.grapher.InjectorGrapher"/>
3739 <constructor name="AbstractInjectorGrapher"
3740 static="false" final="false" visibility="public"
3741 deprecated="not deprecated">
3742 </constructor>
3743 <constructor name="AbstractInjectorGrapher" type="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters"
3744 static="false" final="false" visibility="public"
3745 deprecated="not deprecated">
3746 </constructor>
3747 <method name="graph"
3748 abstract="false" native="false" synchronized="false"
3749 static="false" final="true" visibility="public"
3750 deprecated="not deprecated">
3751 <param name="injector" type="com.google.inject.Injector"/>
3752 <exception name="IOException" type="java.io.IOException"/>
3753 </method>
3754 <method name="graph"
3755 abstract="false" native="false" synchronized="false"
3756 static="false" final="true" visibility="public"
3757 deprecated="not deprecated">
3758 <param name="injector" type="com.google.inject.Injector"/>
3759 <param name="root" type="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"/>
3760 <exception name="IOException" type="java.io.IOException"/>
3761 </method>
3762 <method name="reset"
3763 abstract="true" native="false" synchronized="false"
3764 static="false" final="false" visibility="protected"
3765 deprecated="not deprecated">
3766 <exception name="IOException" type="java.io.IOException"/>
3767 <doc>
3768 <![CDATA[Resets the state of the grapher before rendering a new graph.]]>
3769 </doc>
3770 </method>
3771 <method name="newInterfaceNode"
3772 abstract="true" native="false" synchronized="false"
3773 static="false" final="false" visibility="protected"
3774 deprecated="not deprecated">
3775 <param name="node" type="com.google.inject.grapher.InterfaceNode"/>
3776 <exception name="IOException" type="java.io.IOException"/>
3777 <doc>
3778 <![CDATA[Adds a new interface node to the graph.]]>
3779 </doc>
3780 </method>
3781 <method name="newImplementationNode"
3782 abstract="true" native="false" synchronized="false"
3783 static="false" final="false" visibility="protected"
3784 deprecated="not deprecated">
3785 <param name="node" type="com.google.inject.grapher.ImplementationNode"/>
3786 <exception name="IOException" type="java.io.IOException"/>
3787 <doc>
3788 <![CDATA[Adds a new implementation node to the graph.]]>
3789 </doc>
3790 </method>
3791 <method name="newInstanceNode"
3792 abstract="true" native="false" synchronized="false"
3793 static="false" final="false" visibility="protected"
3794 deprecated="not deprecated">
3795 <param name="node" type="com.google.inject.grapher.InstanceNode"/>
3796 <exception name="IOException" type="java.io.IOException"/>
3797 <doc>
3798 <![CDATA[Adds a new instance node to the graph.]]>
3799 </doc>
3800 </method>
3801 <method name="newDependencyEdge"
3802 abstract="true" native="false" synchronized="false"
3803 static="false" final="false" visibility="protected"
3804 deprecated="not deprecated">
3805 <param name="edge" type="com.google.inject.grapher.DependencyEdge"/>
3806 <exception name="IOException" type="java.io.IOException"/>
3807 <doc>
3808 <![CDATA[Adds a new dependency edge to the graph.]]>
3809 </doc>
3810 </method>
3811 <method name="newBindingEdge"
3812 abstract="true" native="false" synchronized="false"
3813 static="false" final="false" visibility="protected"
3814 deprecated="not deprecated">
3815 <param name="edge" type="com.google.inject.grapher.BindingEdge"/>
3816 <exception name="IOException" type="java.io.IOException"/>
3817 <doc>
3818 <![CDATA[Adds a new binding edge to the graph.]]>
3819 </doc>
3820 </method>
3821 <method name="postProcess"
3822 abstract="true" native="false" synchronized="false"
3823 static="false" final="false" visibility="protected"
3824 deprecated="not deprecated">
3825 <exception name="IOException" type="java.io.IOException"/>
3826 <doc>
3827 <![CDATA[Performs any post processing required after all nodes and edges have been added.]]>
3828 </doc>
3829 </method>
3830 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07003831 <![CDATA[Abstract injector grapher that builds the dependency graph but doesn't render it.
3832
Christian Edward Gruber509e3542014-03-20 20:37:34 -07003833 @author bojand@google.com (Bojan Djordjevic)]]>
3834 </doc>
3835 </class>
3836 <!-- end class com.google.inject.grapher.AbstractInjectorGrapher -->
3837 <!-- start class com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters -->
3838 <class name="AbstractInjectorGrapher.GrapherParameters" extends="java.lang.Object"
3839 abstract="false"
3840 static="true" final="true" visibility="public"
3841 deprecated="not deprecated">
3842 <constructor name="GrapherParameters"
3843 static="false" final="false" visibility="public"
3844 deprecated="not deprecated">
3845 </constructor>
3846 <method name="getRootKeySetCreator" return="com.google.inject.grapher.RootKeySetCreator"
3847 abstract="false" native="false" synchronized="false"
3848 static="false" final="false" visibility="public"
3849 deprecated="not deprecated">
3850 </method>
3851 <method name="setRootKeySetCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters"
3852 abstract="false" native="false" synchronized="false"
3853 static="false" final="false" visibility="public"
3854 deprecated="not deprecated">
3855 <param name="rootKeySetCreator" type="com.google.inject.grapher.RootKeySetCreator"/>
3856 </method>
3857 <method name="getAliasCreator" return="com.google.inject.grapher.AliasCreator"
3858 abstract="false" native="false" synchronized="false"
3859 static="false" final="false" visibility="public"
3860 deprecated="not deprecated">
3861 </method>
3862 <method name="setAliasCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters"
3863 abstract="false" native="false" synchronized="false"
3864 static="false" final="false" visibility="public"
3865 deprecated="not deprecated">
3866 <param name="aliasCreator" type="com.google.inject.grapher.AliasCreator"/>
3867 </method>
3868 <method name="getNodeCreator" return="com.google.inject.grapher.NodeCreator"
3869 abstract="false" native="false" synchronized="false"
3870 static="false" final="false" visibility="public"
3871 deprecated="not deprecated">
3872 </method>
3873 <method name="setNodeCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters"
3874 abstract="false" native="false" synchronized="false"
3875 static="false" final="false" visibility="public"
3876 deprecated="not deprecated">
3877 <param name="nodeCreator" type="com.google.inject.grapher.NodeCreator"/>
3878 </method>
3879 <method name="getEdgeCreator" return="com.google.inject.grapher.EdgeCreator"
3880 abstract="false" native="false" synchronized="false"
3881 static="false" final="false" visibility="public"
3882 deprecated="not deprecated">
3883 </method>
3884 <method name="setEdgeCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters"
3885 abstract="false" native="false" synchronized="false"
3886 static="false" final="false" visibility="public"
3887 deprecated="not deprecated">
3888 <param name="edgeCreator" type="com.google.inject.grapher.EdgeCreator"/>
3889 </method>
3890 <doc>
3891 <![CDATA[Parameters used to override default settings of the grapher.]]>
3892 </doc>
3893 </class>
3894 <!-- end class com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters -->
3895 <!-- start class com.google.inject.grapher.Alias -->
3896 <class name="Alias" extends="java.lang.Object"
3897 abstract="false"
3898 static="false" final="true" visibility="public"
3899 deprecated="not deprecated">
3900 <constructor name="Alias" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId"
3901 static="false" final="false" visibility="public"
3902 deprecated="not deprecated">
3903 </constructor>
3904 <method name="getFromId" return="com.google.inject.grapher.NodeId"
3905 abstract="false" native="false" synchronized="false"
3906 static="false" final="false" visibility="public"
3907 deprecated="not deprecated">
3908 </method>
3909 <method name="getToId" return="com.google.inject.grapher.NodeId"
3910 abstract="false" native="false" synchronized="false"
3911 static="false" final="false" visibility="public"
3912 deprecated="not deprecated">
3913 </method>
3914 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07003915 <![CDATA[Alias between two nodes. Causes the 'from' node to be aliased with the 'to' node, which means
3916 that the 'from' node is not rendered and all edges going to it instead go to the 'to' node.
3917
Christian Edward Gruber509e3542014-03-20 20:37:34 -07003918 @author bojand@google.com (Bojan Djordjevic)]]>
3919 </doc>
3920 </class>
3921 <!-- end class com.google.inject.grapher.Alias -->
3922 <!-- start interface com.google.inject.grapher.AliasCreator -->
3923 <interface name="AliasCreator" abstract="true"
3924 static="false" final="false" visibility="public"
3925 deprecated="not deprecated">
3926 <method name="createAliases" return="java.lang.Iterable&lt;com.google.inject.grapher.Alias&gt;"
3927 abstract="true" native="false" synchronized="false"
3928 static="false" final="false" visibility="public"
3929 deprecated="not deprecated">
3930 <param name="bindings" type="java.lang.Iterable&lt;com.google.inject.Binding&lt;?&gt;&gt;"/>
3931 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07003932 <![CDATA[Returns aliases for the given dependency graph. The aliases do not need to be transitively
3933 resolved, i.e. it is valid to return an alias (X to Y) and an alias (Y to Z). It is the
3934 responsibility of the caller to resolve this to (X to Z) and (Y to Z).
3935
3936 @param bindings bindings that make up the dependency graph
Christian Edward Gruber509e3542014-03-20 20:37:34 -07003937 @return aliases that should be applied on the graph]]>
3938 </doc>
3939 </method>
3940 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07003941 <![CDATA[Creator of node aliases. Used by dependency graphers to merge nodes in the internal Guice graph
3942 into a single node on the rendered graph.
3943
Christian Edward Gruber509e3542014-03-20 20:37:34 -07003944 @author bojand@google.com (Bojan Djordjevic)]]>
3945 </doc>
3946 </interface>
3947 <!-- end interface com.google.inject.grapher.AliasCreator -->
3948 <!-- start class com.google.inject.grapher.BindingEdge -->
3949 <class name="BindingEdge" extends="com.google.inject.grapher.Edge"
3950 abstract="false"
3951 static="false" final="false" visibility="public"
3952 deprecated="not deprecated">
3953 <constructor name="BindingEdge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId, com.google.inject.grapher.BindingEdge.Type"
3954 static="false" final="false" visibility="public"
3955 deprecated="not deprecated">
3956 </constructor>
3957 <method name="getType" return="com.google.inject.grapher.BindingEdge.Type"
3958 abstract="false" native="false" synchronized="false"
3959 static="false" final="false" visibility="public"
3960 deprecated="not deprecated">
3961 </method>
3962 <method name="equals" return="boolean"
3963 abstract="false" native="false" synchronized="false"
3964 static="false" final="false" visibility="public"
3965 deprecated="not deprecated">
3966 <param name="obj" type="java.lang.Object"/>
3967 </method>
3968 <method name="hashCode" return="int"
3969 abstract="false" native="false" synchronized="false"
3970 static="false" final="false" visibility="public"
3971 deprecated="not deprecated">
3972 </method>
3973 <method name="toString" return="java.lang.String"
3974 abstract="false" native="false" synchronized="false"
3975 static="false" final="false" visibility="public"
3976 deprecated="not deprecated">
3977 </method>
3978 <method name="copy" return="com.google.inject.grapher.Edge"
3979 abstract="false" native="false" synchronized="false"
3980 static="false" final="false" visibility="public"
3981 deprecated="not deprecated">
3982 <param name="fromId" type="com.google.inject.grapher.NodeId"/>
3983 <param name="toId" type="com.google.inject.grapher.NodeId"/>
3984 </method>
3985 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07003986 <![CDATA[Edge that connects an interface to the type or instance that is bound to implement it.
3987
Christian Edward Gruber509e3542014-03-20 20:37:34 -07003988 @author phopkins@gmail.com (Pete Hopkins)]]>
3989 </doc>
3990 </class>
3991 <!-- end class com.google.inject.grapher.BindingEdge -->
3992 <!-- start class com.google.inject.grapher.BindingEdge.Type -->
3993 <class name="BindingEdge.Type" extends="java.lang.Enum&lt;com.google.inject.grapher.BindingEdge.Type&gt;"
3994 abstract="false"
3995 static="true" final="true" visibility="public"
3996 deprecated="not deprecated">
3997 <method name="values" return="com.google.inject.grapher.BindingEdge.Type[]"
3998 abstract="false" native="false" synchronized="false"
3999 static="true" final="false" visibility="public"
4000 deprecated="not deprecated">
4001 </method>
4002 <method name="valueOf" return="com.google.inject.grapher.BindingEdge.Type"
4003 abstract="false" native="false" synchronized="false"
4004 static="true" final="false" visibility="public"
4005 deprecated="not deprecated">
4006 <param name="name" type="java.lang.String"/>
4007 </method>
4008 <doc>
4009 <![CDATA[Classification for what kind of binding this edge represents.]]>
4010 </doc>
4011 </class>
4012 <!-- end class com.google.inject.grapher.BindingEdge.Type -->
4013 <!-- start class com.google.inject.grapher.DefaultRootKeySetCreator -->
4014 <class name="DefaultRootKeySetCreator" extends="java.lang.Object"
4015 abstract="false"
4016 static="false" final="false" visibility="public"
4017 deprecated="not deprecated">
4018 <implements name="com.google.inject.grapher.RootKeySetCreator"/>
4019 <constructor name="DefaultRootKeySetCreator"
4020 static="false" final="false" visibility="public"
4021 deprecated="not deprecated">
4022 </constructor>
4023 <method name="getRootKeys" return="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"
4024 abstract="false" native="false" synchronized="false"
4025 static="false" final="false" visibility="public"
4026 deprecated="not deprecated">
4027 <param name="injector" type="com.google.inject.Injector"/>
4028 </method>
4029 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004030 <![CDATA[Root key set creator that starts with all types that are not Guice internal types or the
4031 {@link Logger} type.
4032
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004033 @author bojand@google.com (Bojan Djordjevic)]]>
4034 </doc>
4035 </class>
4036 <!-- end class com.google.inject.grapher.DefaultRootKeySetCreator -->
4037 <!-- start class com.google.inject.grapher.DependencyEdge -->
4038 <class name="DependencyEdge" extends="com.google.inject.grapher.Edge"
4039 abstract="false"
4040 static="false" final="false" visibility="public"
4041 deprecated="not deprecated">
4042 <constructor name="DependencyEdge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId, com.google.inject.spi.InjectionPoint"
4043 static="false" final="false" visibility="public"
4044 deprecated="not deprecated">
4045 </constructor>
4046 <method name="getInjectionPoint" return="com.google.inject.spi.InjectionPoint"
4047 abstract="false" native="false" synchronized="false"
4048 static="false" final="false" visibility="public"
4049 deprecated="not deprecated">
4050 </method>
4051 <method name="equals" return="boolean"
4052 abstract="false" native="false" synchronized="false"
4053 static="false" final="false" visibility="public"
4054 deprecated="not deprecated">
4055 <param name="obj" type="java.lang.Object"/>
4056 </method>
4057 <method name="hashCode" return="int"
4058 abstract="false" native="false" synchronized="false"
4059 static="false" final="false" visibility="public"
4060 deprecated="not deprecated">
4061 </method>
4062 <method name="toString" return="java.lang.String"
4063 abstract="false" native="false" synchronized="false"
4064 static="false" final="false" visibility="public"
4065 deprecated="not deprecated">
4066 </method>
4067 <method name="copy" return="com.google.inject.grapher.Edge"
4068 abstract="false" native="false" synchronized="false"
4069 static="false" final="false" visibility="public"
4070 deprecated="not deprecated">
4071 <param name="fromId" type="com.google.inject.grapher.NodeId"/>
4072 <param name="toId" type="com.google.inject.grapher.NodeId"/>
4073 </method>
4074 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004075 <![CDATA[Edge from a class or {@link InjectionPoint} to the interface node that will satisfy the
4076 dependency.
4077
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004078 @author phopkins@gmail.com (Pete Hopkins)]]>
4079 </doc>
4080 </class>
4081 <!-- end class com.google.inject.grapher.DependencyEdge -->
4082 <!-- start class com.google.inject.grapher.Edge -->
4083 <class name="Edge" extends="java.lang.Object"
4084 abstract="true"
4085 static="false" final="false" visibility="public"
4086 deprecated="not deprecated">
4087 <constructor name="Edge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId"
4088 static="false" final="false" visibility="protected"
4089 deprecated="not deprecated">
4090 </constructor>
4091 <method name="getFromId" return="com.google.inject.grapher.NodeId"
4092 abstract="false" native="false" synchronized="false"
4093 static="false" final="false" visibility="public"
4094 deprecated="not deprecated">
4095 </method>
4096 <method name="getToId" return="com.google.inject.grapher.NodeId"
4097 abstract="false" native="false" synchronized="false"
4098 static="false" final="false" visibility="public"
4099 deprecated="not deprecated">
4100 </method>
4101 <method name="equals" return="boolean"
4102 abstract="false" native="false" synchronized="false"
4103 static="false" final="false" visibility="public"
4104 deprecated="not deprecated">
4105 <param name="obj" type="java.lang.Object"/>
4106 </method>
4107 <method name="hashCode" return="int"
4108 abstract="false" native="false" synchronized="false"
4109 static="false" final="false" visibility="public"
4110 deprecated="not deprecated">
4111 </method>
4112 <method name="copy" return="com.google.inject.grapher.Edge"
4113 abstract="true" native="false" synchronized="false"
4114 static="false" final="false" visibility="public"
4115 deprecated="not deprecated">
4116 <param name="fromId" type="com.google.inject.grapher.NodeId"/>
4117 <param name="toId" type="com.google.inject.grapher.NodeId"/>
4118 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004119 <![CDATA[Returns a copy of the edge with new node IDs.
4120
4121 @param fromId new ID of the 'from' node
4122 @param toId new ID of the 'to' node
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004123 @return copy of the edge with the new node IDs]]>
4124 </doc>
4125 </method>
4126 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004127 <![CDATA[Edge in a guice dependency graph.
4128
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004129 @author bojand@google.com (Bojan Djordjevic)]]>
4130 </doc>
4131 </class>
4132 <!-- end class com.google.inject.grapher.Edge -->
4133 <!-- start interface com.google.inject.grapher.EdgeCreator -->
4134 <interface name="EdgeCreator" abstract="true"
4135 static="false" final="false" visibility="public"
4136 deprecated="not deprecated">
4137 <method name="getEdges" return="java.lang.Iterable&lt;com.google.inject.grapher.Edge&gt;"
4138 abstract="true" native="false" synchronized="false"
4139 static="false" final="false" visibility="public"
4140 deprecated="not deprecated">
4141 <param name="bindings" type="java.lang.Iterable&lt;com.google.inject.Binding&lt;?&gt;&gt;"/>
4142 <doc>
4143 <![CDATA[Returns edges for the given dependency graph.]]>
4144 </doc>
4145 </method>
4146 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004147 <![CDATA[Creator of graph edges to render. All edges will be rendered on the graph after node aliasing is
4148 performed.
4149
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004150 @author bojand@google.com (Bojan Djordjevic)]]>
4151 </doc>
4152 </interface>
4153 <!-- end interface com.google.inject.grapher.EdgeCreator -->
4154 <!-- start class com.google.inject.grapher.ImplementationNode -->
4155 <class name="ImplementationNode" extends="com.google.inject.grapher.Node"
4156 abstract="false"
4157 static="false" final="false" visibility="public"
4158 deprecated="not deprecated">
4159 <constructor name="ImplementationNode" type="com.google.inject.grapher.NodeId, java.lang.Object, java.util.Collection&lt;java.lang.reflect.Member&gt;"
4160 static="false" final="false" visibility="public"
4161 deprecated="not deprecated">
4162 </constructor>
4163 <method name="getMembers" return="java.util.Collection&lt;java.lang.reflect.Member&gt;"
4164 abstract="false" native="false" synchronized="false"
4165 static="false" final="false" visibility="public"
4166 deprecated="not deprecated">
4167 </method>
4168 <method name="equals" return="boolean"
4169 abstract="false" native="false" synchronized="false"
4170 static="false" final="false" visibility="public"
4171 deprecated="not deprecated">
4172 <param name="obj" type="java.lang.Object"/>
4173 </method>
4174 <method name="hashCode" return="int"
4175 abstract="false" native="false" synchronized="false"
4176 static="false" final="false" visibility="public"
4177 deprecated="not deprecated">
4178 </method>
4179 <method name="toString" return="java.lang.String"
4180 abstract="false" native="false" synchronized="false"
4181 static="false" final="false" visibility="public"
4182 deprecated="not deprecated">
4183 </method>
4184 <method name="copy" return="com.google.inject.grapher.Node"
4185 abstract="false" native="false" synchronized="false"
4186 static="false" final="false" visibility="public"
4187 deprecated="not deprecated">
4188 <param name="id" type="com.google.inject.grapher.NodeId"/>
4189 </method>
4190 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004191 <![CDATA[Node for types that have {@link Dependency}s and are bound to {@link InterfaceNode}s. These
4192 nodes will often have fields for {@link Member}s that are {@link InjectionPoint}s.
4193
4194 @see DependencyEdge
4195
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004196 @author phopkins@gmail.com (Pete Hopkins)]]>
4197 </doc>
4198 </class>
4199 <!-- end class com.google.inject.grapher.ImplementationNode -->
4200 <!-- start interface com.google.inject.grapher.InjectorGrapher -->
4201 <interface name="InjectorGrapher" abstract="true"
4202 static="false" final="false" visibility="public"
4203 deprecated="not deprecated">
4204 <method name="graph"
4205 abstract="true" native="false" synchronized="false"
4206 static="false" final="false" visibility="public"
4207 deprecated="not deprecated">
4208 <param name="injector" type="com.google.inject.Injector"/>
4209 <exception name="IOException" type="java.io.IOException"/>
4210 <doc>
4211 <![CDATA[Graphs the guice dependency graph for the given injector using default starting keys.]]>
4212 </doc>
4213 </method>
4214 <method name="graph"
4215 abstract="true" native="false" synchronized="false"
4216 static="false" final="false" visibility="public"
4217 deprecated="not deprecated">
4218 <param name="injector" type="com.google.inject.Injector"/>
4219 <param name="root" type="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"/>
4220 <exception name="IOException" type="java.io.IOException"/>
4221 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004222 <![CDATA[Graphs the guice dependency graph for the given injector using the given starting keys and
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004223 their transitive dependencies.]]>
4224 </doc>
4225 </method>
4226 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004227 <![CDATA[Guice injector grapher. Renders the guice dependency graph for an injector. It can render the
4228 whole dependency graph or just transitive dependencies of a given set of nodes.
4229
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004230 @author phopkins@gmail.com (Pete Hopkins)]]>
4231 </doc>
4232 </interface>
4233 <!-- end interface com.google.inject.grapher.InjectorGrapher -->
4234 <!-- start class com.google.inject.grapher.InstanceNode -->
4235 <class name="InstanceNode" extends="com.google.inject.grapher.Node"
4236 abstract="false"
4237 static="false" final="false" visibility="public"
4238 deprecated="not deprecated">
4239 <constructor name="InstanceNode" type="com.google.inject.grapher.NodeId, java.lang.Object, java.lang.Object, java.lang.Iterable&lt;java.lang.reflect.Member&gt;"
4240 static="false" final="false" visibility="public"
4241 deprecated="not deprecated">
4242 </constructor>
4243 <method name="getInstance" return="java.lang.Object"
4244 abstract="false" native="false" synchronized="false"
4245 static="false" final="false" visibility="public"
4246 deprecated="not deprecated">
4247 </method>
4248 <method name="getMembers" return="java.lang.Iterable&lt;java.lang.reflect.Member&gt;"
4249 abstract="false" native="false" synchronized="false"
4250 static="false" final="false" visibility="public"
4251 deprecated="not deprecated">
4252 </method>
4253 <method name="equals" return="boolean"
4254 abstract="false" native="false" synchronized="false"
4255 static="false" final="false" visibility="public"
4256 deprecated="not deprecated">
4257 <param name="obj" type="java.lang.Object"/>
4258 </method>
4259 <method name="hashCode" return="int"
4260 abstract="false" native="false" synchronized="false"
4261 static="false" final="false" visibility="public"
4262 deprecated="not deprecated">
4263 </method>
4264 <method name="toString" return="java.lang.String"
4265 abstract="false" native="false" synchronized="false"
4266 static="false" final="false" visibility="public"
4267 deprecated="not deprecated">
4268 </method>
4269 <method name="copy" return="com.google.inject.grapher.Node"
4270 abstract="false" native="false" synchronized="false"
4271 static="false" final="false" visibility="public"
4272 deprecated="not deprecated">
4273 <param name="id" type="com.google.inject.grapher.NodeId"/>
4274 </method>
4275 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004276 <![CDATA[Node for instances. Used when a type is bound to an instance.
4277
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004278 @author bojand@google.com (Bojan Djordjevic)]]>
4279 </doc>
4280 </class>
4281 <!-- end class com.google.inject.grapher.InstanceNode -->
4282 <!-- start class com.google.inject.grapher.InterfaceNode -->
4283 <class name="InterfaceNode" extends="com.google.inject.grapher.Node"
4284 abstract="false"
4285 static="false" final="false" visibility="public"
4286 deprecated="not deprecated">
4287 <constructor name="InterfaceNode" type="com.google.inject.grapher.NodeId, java.lang.Object"
4288 static="false" final="false" visibility="public"
4289 deprecated="not deprecated">
4290 </constructor>
4291 <method name="copy" return="com.google.inject.grapher.Node"
4292 abstract="false" native="false" synchronized="false"
4293 static="false" final="false" visibility="public"
4294 deprecated="not deprecated">
4295 <param name="id" type="com.google.inject.grapher.NodeId"/>
4296 </method>
4297 <method name="equals" return="boolean"
4298 abstract="false" native="false" synchronized="false"
4299 static="false" final="false" visibility="public"
4300 deprecated="not deprecated">
4301 <param name="obj" type="java.lang.Object"/>
4302 </method>
4303 <method name="toString" return="java.lang.String"
4304 abstract="false" native="false" synchronized="false"
4305 static="false" final="false" visibility="public"
4306 deprecated="not deprecated">
4307 </method>
4308 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004309 <![CDATA[Node for an interface type that has been bound to an implementation class or instance.
4310
4311 @see BindingEdge
4312
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004313 @author phopkins@gmail.com (Pete Hopkins)]]>
4314 </doc>
4315 </class>
4316 <!-- end class com.google.inject.grapher.InterfaceNode -->
4317 <!-- start interface com.google.inject.grapher.NameFactory -->
4318 <interface name="NameFactory" abstract="true"
4319 static="false" final="false" visibility="public"
4320 deprecated="not deprecated">
4321 <method name="getMemberName" return="java.lang.String"
4322 abstract="true" native="false" synchronized="false"
4323 static="false" final="false" visibility="public"
4324 deprecated="not deprecated">
4325 <param name="member" type="java.lang.reflect.Member"/>
4326 </method>
4327 <method name="getClassName" return="java.lang.String"
4328 abstract="true" native="false" synchronized="false"
4329 static="false" final="false" visibility="public"
4330 deprecated="not deprecated">
4331 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4332 </method>
4333 <method name="getInstanceName" return="java.lang.String"
4334 abstract="true" native="false" synchronized="false"
4335 static="false" final="false" visibility="public"
4336 deprecated="not deprecated">
4337 <param name="instance" type="java.lang.Object"/>
4338 </method>
4339 <method name="getAnnotationName" return="java.lang.String"
4340 abstract="true" native="false" synchronized="false"
4341 static="false" final="false" visibility="public"
4342 deprecated="not deprecated">
4343 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4344 </method>
4345 <method name="getSourceName" return="java.lang.String"
4346 abstract="true" native="false" synchronized="false"
4347 static="false" final="false" visibility="public"
4348 deprecated="not deprecated">
4349 <param name="source" type="java.lang.Object"/>
4350 </method>
4351 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004352 <![CDATA[Interface for a service that provides nice {@link String}s that we can
4353 display in the graph for the types that come up in {@link Binding}s.
4354
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004355 @author phopkins@gmail.com (Pete Hopkins)]]>
4356 </doc>
4357 </interface>
4358 <!-- end interface com.google.inject.grapher.NameFactory -->
4359 <!-- start class com.google.inject.grapher.Node -->
4360 <class name="Node" extends="java.lang.Object"
4361 abstract="true"
4362 static="false" final="false" visibility="public"
4363 deprecated="not deprecated">
4364 <constructor name="Node" type="com.google.inject.grapher.NodeId, java.lang.Object"
4365 static="false" final="false" visibility="protected"
4366 deprecated="not deprecated">
4367 </constructor>
4368 <method name="getId" return="com.google.inject.grapher.NodeId"
4369 abstract="false" native="false" synchronized="false"
4370 static="false" final="false" visibility="public"
4371 deprecated="not deprecated">
4372 </method>
4373 <method name="getSource" return="java.lang.Object"
4374 abstract="false" native="false" synchronized="false"
4375 static="false" final="false" visibility="public"
4376 deprecated="not deprecated">
4377 </method>
4378 <method name="equals" return="boolean"
4379 abstract="false" native="false" synchronized="false"
4380 static="false" final="false" visibility="public"
4381 deprecated="not deprecated">
4382 <param name="obj" type="java.lang.Object"/>
4383 </method>
4384 <method name="hashCode" return="int"
4385 abstract="false" native="false" synchronized="false"
4386 static="false" final="false" visibility="public"
4387 deprecated="not deprecated">
4388 </method>
4389 <method name="copy" return="com.google.inject.grapher.Node"
4390 abstract="true" native="false" synchronized="false"
4391 static="false" final="false" visibility="public"
4392 deprecated="not deprecated">
4393 <param name="id" type="com.google.inject.grapher.NodeId"/>
4394 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004395 <![CDATA[Returns a copy of the node with a new ID.
4396
4397 @param id new ID of the node
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004398 @return copy of the node with a new ID]]>
4399 </doc>
4400 </method>
4401 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004402 <![CDATA[Node in a guice dependency graph.
4403
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004404 @author bojand@google.com (Bojan Djordjevic)]]>
4405 </doc>
4406 </class>
4407 <!-- end class com.google.inject.grapher.Node -->
4408 <!-- start interface com.google.inject.grapher.NodeCreator -->
4409 <interface name="NodeCreator" abstract="true"
4410 static="false" final="false" visibility="public"
4411 deprecated="not deprecated">
4412 <method name="getNodes" return="java.lang.Iterable&lt;com.google.inject.grapher.Node&gt;"
4413 abstract="true" native="false" synchronized="false"
4414 static="false" final="false" visibility="public"
4415 deprecated="not deprecated">
4416 <param name="bindings" type="java.lang.Iterable&lt;com.google.inject.Binding&lt;?&gt;&gt;"/>
4417 <doc>
4418 <![CDATA[Returns nodes for the given dependency graph.]]>
4419 </doc>
4420 </method>
4421 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004422 <![CDATA[Creator of graph nodes.
4423
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004424 @author bojand@google.com (Bojan Djordjevic)]]>
4425 </doc>
4426 </interface>
4427 <!-- end interface com.google.inject.grapher.NodeCreator -->
4428 <!-- start class com.google.inject.grapher.NodeId -->
4429 <class name="NodeId" extends="java.lang.Object"
4430 abstract="false"
4431 static="false" final="true" visibility="public"
4432 deprecated="not deprecated">
4433 <method name="newTypeId" return="com.google.inject.grapher.NodeId"
4434 abstract="false" native="false" synchronized="false"
4435 static="true" final="false" visibility="public"
4436 deprecated="not deprecated">
4437 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4438 </method>
4439 <method name="newInstanceId" return="com.google.inject.grapher.NodeId"
4440 abstract="false" native="false" synchronized="false"
4441 static="true" final="false" visibility="public"
4442 deprecated="not deprecated">
4443 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4444 </method>
4445 <method name="getKey" return="com.google.inject.Key&lt;?&gt;"
4446 abstract="false" native="false" synchronized="false"
4447 static="false" final="false" visibility="public"
4448 deprecated="not deprecated">
4449 </method>
4450 <method name="hashCode" return="int"
4451 abstract="false" native="false" synchronized="false"
4452 static="false" final="false" visibility="public"
4453 deprecated="not deprecated">
4454 </method>
4455 <method name="equals" return="boolean"
4456 abstract="false" native="false" synchronized="false"
4457 static="false" final="false" visibility="public"
4458 deprecated="not deprecated">
4459 <param name="obj" type="java.lang.Object"/>
4460 </method>
4461 <method name="toString" return="java.lang.String"
4462 abstract="false" native="false" synchronized="false"
4463 static="false" final="false" visibility="public"
4464 deprecated="not deprecated">
4465 </method>
4466 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004467 <![CDATA[ID of a node in the graph. An ID is given by a {@link Key} and a node type, which is used to
4468 distinguish instances and implementation classes for the same key. For example
4469 {@code bind(Integer.class).toInstance(42)} produces two nodes: an
4470 interface node with the key of {@code Key<Integer>} and an instance node with the same
4471 {@link Key} and value of 42.
4472
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004473 @author bojand@google.com (Bojan Djordjevic)]]>
4474 </doc>
4475 </class>
4476 <!-- end class com.google.inject.grapher.NodeId -->
4477 <!-- start class com.google.inject.grapher.NodeId.NodeType -->
4478 <class name="NodeId.NodeType" extends="java.lang.Enum&lt;com.google.inject.grapher.NodeId.NodeType&gt;"
4479 abstract="false"
4480 static="true" final="true" visibility="public"
4481 deprecated="not deprecated">
4482 <method name="values" return="com.google.inject.grapher.NodeId.NodeType[]"
4483 abstract="false" native="false" synchronized="false"
4484 static="true" final="false" visibility="public"
4485 deprecated="not deprecated">
4486 </method>
4487 <method name="valueOf" return="com.google.inject.grapher.NodeId.NodeType"
4488 abstract="false" native="false" synchronized="false"
4489 static="true" final="false" visibility="public"
4490 deprecated="not deprecated">
4491 <param name="name" type="java.lang.String"/>
4492 </method>
4493 <doc>
4494 <![CDATA[Type of node.]]>
4495 </doc>
4496 </class>
4497 <!-- end class com.google.inject.grapher.NodeId.NodeType -->
4498 <!-- start interface com.google.inject.grapher.RootKeySetCreator -->
4499 <interface name="RootKeySetCreator" abstract="true"
4500 static="false" final="false" visibility="public"
4501 deprecated="not deprecated">
4502 <method name="getRootKeys" return="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"
4503 abstract="true" native="false" synchronized="false"
4504 static="false" final="false" visibility="public"
4505 deprecated="not deprecated">
4506 <param name="injector" type="com.google.inject.Injector"/>
4507 <doc>
4508 <![CDATA[Returns the set of starting keys to graph.]]>
4509 </doc>
4510 </method>
4511 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004512 <![CDATA[Creator of the default starting set of keys to graph. These keys and their transitive
4513 dependencies will be graphed.
4514
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004515 @author bojand@google.com (Bojan Djordjevic)]]>
4516 </doc>
4517 </interface>
4518 <!-- end interface com.google.inject.grapher.RootKeySetCreator -->
4519 <!-- start class com.google.inject.grapher.ShortNameFactory -->
4520 <class name="ShortNameFactory" extends="java.lang.Object"
4521 abstract="false"
4522 static="false" final="false" visibility="public"
4523 deprecated="not deprecated">
4524 <implements name="com.google.inject.grapher.NameFactory"/>
4525 <constructor name="ShortNameFactory"
4526 static="false" final="false" visibility="public"
4527 deprecated="not deprecated">
4528 </constructor>
4529 <method name="getMemberName" return="java.lang.String"
4530 abstract="false" native="false" synchronized="false"
4531 static="false" final="false" visibility="public"
4532 deprecated="not deprecated">
4533 <param name="member" type="java.lang.reflect.Member"/>
4534 </method>
4535 <method name="getAnnotationName" return="java.lang.String"
4536 abstract="false" native="false" synchronized="false"
4537 static="false" final="false" visibility="public"
4538 deprecated="not deprecated">
4539 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4540 </method>
4541 <method name="getClassName" return="java.lang.String"
4542 abstract="false" native="false" synchronized="false"
4543 static="false" final="false" visibility="public"
4544 deprecated="not deprecated">
4545 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4546 </method>
4547 <method name="getInstanceName" return="java.lang.String"
4548 abstract="false" native="false" synchronized="false"
4549 static="false" final="false" visibility="public"
4550 deprecated="not deprecated">
4551 <param name="instance" type="java.lang.Object"/>
4552 </method>
4553 <method name="getSourceName" return="java.lang.String"
4554 abstract="false" native="false" synchronized="false"
4555 static="false" final="false" visibility="public"
4556 deprecated="not deprecated">
4557 <param name="source" type="java.lang.Object"/>
4558 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004559 <![CDATA[Returns a name for a Guice "source" object. This will typically be either
4560 a {@link StackTraceElement} for when the binding is made to the instance,
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004561 or a {@link Method} when a provider method is used.]]>
4562 </doc>
4563 </method>
4564 <method name="getFileString" return="java.lang.String"
4565 abstract="false" native="false" synchronized="false"
4566 static="false" final="false" visibility="protected"
4567 deprecated="not deprecated">
4568 <param name="stackTraceElement" type="java.lang.StackTraceElement"/>
4569 </method>
4570 <method name="getMethodString" return="java.lang.String"
4571 abstract="false" native="false" synchronized="false"
4572 static="false" final="false" visibility="protected"
4573 deprecated="not deprecated">
4574 <param name="method" type="java.lang.reflect.Method"/>
4575 </method>
4576 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004577 <![CDATA[Reasonable implementation for {@link NameFactory}. Mostly takes various
4578 {@link Object#toString()}s and strips package names out of them so that
4579 they'll fit on the graph.
4580
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004581 @author phopkins@gmail.com (Pete Hopkins)]]>
4582 </doc>
4583 </class>
4584 <!-- end class com.google.inject.grapher.ShortNameFactory -->
4585 <!-- start class com.google.inject.grapher.TransitiveDependencyVisitor -->
4586 <class name="TransitiveDependencyVisitor" extends="com.google.inject.spi.DefaultBindingTargetVisitor&lt;java.lang.Object, java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;&gt;"
4587 abstract="false"
4588 static="false" final="false" visibility="public"
4589 deprecated="not deprecated">
4590 <constructor name="TransitiveDependencyVisitor"
4591 static="false" final="false" visibility="public"
4592 deprecated="not deprecated">
4593 </constructor>
4594 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4595 abstract="false" native="false" synchronized="false"
4596 static="false" final="false" visibility="public"
4597 deprecated="not deprecated">
4598 <param name="binding" type="com.google.inject.spi.ConstructorBinding&lt;?&gt;"/>
4599 </method>
4600 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4601 abstract="false" native="false" synchronized="false"
4602 static="false" final="false" visibility="public"
4603 deprecated="not deprecated">
4604 <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding&lt;?&gt;"/>
4605 </method>
4606 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4607 abstract="false" native="false" synchronized="false"
4608 static="false" final="false" visibility="public"
4609 deprecated="not deprecated">
4610 <param name="binding" type="com.google.inject.spi.InstanceBinding&lt;?&gt;"/>
4611 </method>
4612 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4613 abstract="false" native="false" synchronized="false"
4614 static="false" final="false" visibility="public"
4615 deprecated="not deprecated">
4616 <param name="binding" type="com.google.inject.spi.LinkedKeyBinding&lt;?&gt;"/>
4617 </method>
4618 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4619 abstract="false" native="false" synchronized="false"
4620 static="false" final="false" visibility="public"
4621 deprecated="not deprecated">
4622 <param name="binding" type="com.google.inject.spi.ProviderBinding&lt;?&gt;"/>
4623 </method>
4624 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4625 abstract="false" native="false" synchronized="false"
4626 static="false" final="false" visibility="public"
4627 deprecated="not deprecated">
4628 <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;?&gt;"/>
4629 </method>
4630 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4631 abstract="false" native="false" synchronized="false"
4632 static="false" final="false" visibility="public"
4633 deprecated="not deprecated">
4634 <param name="binding" type="com.google.inject.spi.ProviderKeyBinding&lt;?&gt;"/>
4635 </method>
4636 <method name="visitOther" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4637 abstract="false" native="false" synchronized="false"
4638 static="false" final="false" visibility="public"
4639 deprecated="not deprecated">
4640 <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
4641 </method>
4642 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004643 <![CDATA[{@link BindingTargetVisitor} that returns a {@link Collection} of the
4644 {@link Key}s of each {@link Binding}'s dependencies. Used by
4645 {@link InjectorGrapher} to walk the dependency graph from a starting set of
4646 {@link Binding}s.
4647
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004648 @author phopkins@gmail.com (Pete Hopkins)]]>
4649 </doc>
4650 </class>
4651 <!-- end class com.google.inject.grapher.TransitiveDependencyVisitor -->
4652</package>
4653<package name="com.google.inject.grapher.graphviz">
4654 <!-- start class com.google.inject.grapher.graphviz.ArrowType -->
4655 <class name="ArrowType" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"
4656 abstract="false"
4657 static="false" final="true" visibility="public"
4658 deprecated="not deprecated">
4659 <method name="values" return="com.google.inject.grapher.graphviz.ArrowType[]"
4660 abstract="false" native="false" synchronized="false"
4661 static="true" final="false" visibility="public"
4662 deprecated="not deprecated">
4663 </method>
4664 <method name="valueOf" return="com.google.inject.grapher.graphviz.ArrowType"
4665 abstract="false" native="false" synchronized="false"
4666 static="true" final="false" visibility="public"
4667 deprecated="not deprecated">
4668 <param name="name" type="java.lang.String"/>
4669 </method>
4670 <method name="toString" return="java.lang.String"
4671 abstract="false" native="false" synchronized="false"
4672 static="false" final="false" visibility="public"
4673 deprecated="not deprecated">
4674 </method>
4675 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004676 <![CDATA[Arrow symbols that are available from Graphviz. These can be composed by
4677 concatenation to make double arrows and such.
4678 <p>
4679 See: http://www.graphviz.org/doc/info/arrows.html
4680
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004681 @author phopkins@gmail.com (Pete Hopkins)]]>
4682 </doc>
4683 </class>
4684 <!-- end class com.google.inject.grapher.graphviz.ArrowType -->
4685 <!-- start class com.google.inject.grapher.graphviz.CompassPoint -->
4686 <class name="CompassPoint" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.CompassPoint&gt;"
4687 abstract="false"
4688 static="false" final="true" visibility="public"
4689 deprecated="not deprecated">
4690 <method name="values" return="com.google.inject.grapher.graphviz.CompassPoint[]"
4691 abstract="false" native="false" synchronized="false"
4692 static="true" final="false" visibility="public"
4693 deprecated="not deprecated">
4694 </method>
4695 <method name="valueOf" return="com.google.inject.grapher.graphviz.CompassPoint"
4696 abstract="false" native="false" synchronized="false"
4697 static="true" final="false" visibility="public"
4698 deprecated="not deprecated">
4699 <param name="name" type="java.lang.String"/>
4700 </method>
4701 <method name="toString" return="java.lang.String"
4702 abstract="false" native="false" synchronized="false"
4703 static="false" final="false" visibility="public"
4704 deprecated="not deprecated">
4705 </method>
4706 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004707 <![CDATA[Enum for the "compass point" values used to control where edge
4708 end points appear on the graph.
4709 <p>
4710 See: http://www.graphviz.org/doc/info/attrs.html#k:portPos
4711
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004712 @author phopkins@gmail.com (Pete Hopkins)]]>
4713 </doc>
4714 </class>
4715 <!-- end class com.google.inject.grapher.graphviz.CompassPoint -->
4716 <!-- start class com.google.inject.grapher.graphviz.EdgeStyle -->
4717 <class name="EdgeStyle" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.EdgeStyle&gt;"
4718 abstract="false"
4719 static="false" final="true" visibility="public"
4720 deprecated="not deprecated">
4721 <method name="values" return="com.google.inject.grapher.graphviz.EdgeStyle[]"
4722 abstract="false" native="false" synchronized="false"
4723 static="true" final="false" visibility="public"
4724 deprecated="not deprecated">
4725 </method>
4726 <method name="valueOf" return="com.google.inject.grapher.graphviz.EdgeStyle"
4727 abstract="false" native="false" synchronized="false"
4728 static="true" final="false" visibility="public"
4729 deprecated="not deprecated">
4730 <param name="name" type="java.lang.String"/>
4731 </method>
4732 <method name="toString" return="java.lang.String"
4733 abstract="false" native="false" synchronized="false"
4734 static="false" final="false" visibility="public"
4735 deprecated="not deprecated">
4736 </method>
4737 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004738 <![CDATA[Styles for edges.
4739 <p>
4740 See: http://www.graphviz.org/doc/info/attrs.html#k:style
4741
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004742 @author phopkins@gmail.com (Pete Hopkins)]]>
4743 </doc>
4744 </class>
4745 <!-- end class com.google.inject.grapher.graphviz.EdgeStyle -->
4746 <!-- start class com.google.inject.grapher.graphviz.GraphvizEdge -->
4747 <class name="GraphvizEdge" extends="java.lang.Object"
4748 abstract="false"
4749 static="false" final="false" visibility="public"
4750 deprecated="not deprecated">
4751 <constructor name="GraphvizEdge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId"
4752 static="false" final="false" visibility="public"
4753 deprecated="not deprecated">
4754 </constructor>
4755 <method name="getHeadNodeId" return="com.google.inject.grapher.NodeId"
4756 abstract="false" native="false" synchronized="false"
4757 static="false" final="false" visibility="public"
4758 deprecated="not deprecated">
4759 </method>
4760 <method name="getHeadPortId" return="java.lang.String"
4761 abstract="false" native="false" synchronized="false"
4762 static="false" final="false" visibility="public"
4763 deprecated="not deprecated">
4764 </method>
4765 <method name="setHeadPortId"
4766 abstract="false" native="false" synchronized="false"
4767 static="false" final="false" visibility="public"
4768 deprecated="not deprecated">
4769 <param name="headPortId" type="java.lang.String"/>
4770 </method>
4771 <method name="getHeadCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint"
4772 abstract="false" native="false" synchronized="false"
4773 static="false" final="false" visibility="public"
4774 deprecated="not deprecated">
4775 </method>
4776 <method name="setHeadCompassPoint"
4777 abstract="false" native="false" synchronized="false"
4778 static="false" final="false" visibility="public"
4779 deprecated="not deprecated">
4780 <param name="headCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/>
4781 </method>
4782 <method name="getArrowHead" return="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"
4783 abstract="false" native="false" synchronized="false"
4784 static="false" final="false" visibility="public"
4785 deprecated="not deprecated">
4786 </method>
4787 <method name="setArrowHead"
4788 abstract="false" native="false" synchronized="false"
4789 static="false" final="false" visibility="public"
4790 deprecated="not deprecated">
4791 <param name="arrowHead" type="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"/>
4792 </method>
4793 <method name="getTailNodeId" return="com.google.inject.grapher.NodeId"
4794 abstract="false" native="false" synchronized="false"
4795 static="false" final="false" visibility="public"
4796 deprecated="not deprecated">
4797 </method>
4798 <method name="getTailPortId" return="java.lang.String"
4799 abstract="false" native="false" synchronized="false"
4800 static="false" final="false" visibility="public"
4801 deprecated="not deprecated">
4802 </method>
4803 <method name="setTailPortId"
4804 abstract="false" native="false" synchronized="false"
4805 static="false" final="false" visibility="public"
4806 deprecated="not deprecated">
4807 <param name="tailPortId" type="java.lang.String"/>
4808 </method>
4809 <method name="getTailCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint"
4810 abstract="false" native="false" synchronized="false"
4811 static="false" final="false" visibility="public"
4812 deprecated="not deprecated">
4813 </method>
4814 <method name="setTailCompassPoint"
4815 abstract="false" native="false" synchronized="false"
4816 static="false" final="false" visibility="public"
4817 deprecated="not deprecated">
4818 <param name="tailCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/>
4819 </method>
4820 <method name="getArrowTail" return="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"
4821 abstract="false" native="false" synchronized="false"
4822 static="false" final="false" visibility="public"
4823 deprecated="not deprecated">
4824 </method>
4825 <method name="setArrowTail"
4826 abstract="false" native="false" synchronized="false"
4827 static="false" final="false" visibility="public"
4828 deprecated="not deprecated">
4829 <param name="arrowTail" type="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"/>
4830 </method>
4831 <method name="getStyle" return="com.google.inject.grapher.graphviz.EdgeStyle"
4832 abstract="false" native="false" synchronized="false"
4833 static="false" final="false" visibility="public"
4834 deprecated="not deprecated">
4835 </method>
4836 <method name="setStyle"
4837 abstract="false" native="false" synchronized="false"
4838 static="false" final="false" visibility="public"
4839 deprecated="not deprecated">
4840 <param name="style" type="com.google.inject.grapher.graphviz.EdgeStyle"/>
4841 </method>
4842 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004843 <![CDATA[Data object to encapsulate the attributes of Graphviz edges that we're
4844 interested in drawing.
4845
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004846 @author phopkins@gmail.com (Pete Hopkins)]]>
4847 </doc>
4848 </class>
4849 <!-- end class com.google.inject.grapher.graphviz.GraphvizEdge -->
4850 <!-- start class com.google.inject.grapher.graphviz.GraphvizGrapher -->
4851 <class name="GraphvizGrapher" extends="com.google.inject.grapher.AbstractInjectorGrapher"
4852 abstract="false"
4853 static="false" final="false" visibility="public"
4854 deprecated="not deprecated">
4855 <method name="reset"
4856 abstract="false" native="false" synchronized="false"
4857 static="false" final="false" visibility="protected"
4858 deprecated="not deprecated">
4859 </method>
4860 <method name="setOut"
4861 abstract="false" native="false" synchronized="false"
4862 static="false" final="false" visibility="public"
4863 deprecated="not deprecated">
4864 <param name="out" type="java.io.PrintWriter"/>
4865 </method>
4866 <method name="setRankdir"
4867 abstract="false" native="false" synchronized="false"
4868 static="false" final="false" visibility="public"
4869 deprecated="not deprecated">
4870 <param name="rankdir" type="java.lang.String"/>
4871 </method>
4872 <method name="postProcess"
4873 abstract="false" native="false" synchronized="false"
4874 static="false" final="false" visibility="protected"
4875 deprecated="not deprecated">
4876 </method>
4877 <method name="getGraphAttributes" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
4878 abstract="false" native="false" synchronized="false"
4879 static="false" final="false" visibility="protected"
4880 deprecated="not deprecated">
4881 </method>
4882 <method name="start"
4883 abstract="false" native="false" synchronized="false"
4884 static="false" final="false" visibility="protected"
4885 deprecated="not deprecated">
4886 </method>
4887 <method name="finish"
4888 abstract="false" native="false" synchronized="false"
4889 static="false" final="false" visibility="protected"
4890 deprecated="not deprecated">
4891 </method>
4892 <method name="renderNode"
4893 abstract="false" native="false" synchronized="false"
4894 static="false" final="false" visibility="protected"
4895 deprecated="not deprecated">
4896 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
4897 </method>
4898 <method name="getNodeAttributes" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
4899 abstract="false" native="false" synchronized="false"
4900 static="false" final="false" visibility="protected"
4901 deprecated="not deprecated">
4902 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
4903 </method>
4904 <method name="getNodeLabel" return="java.lang.String"
4905 abstract="false" native="false" synchronized="false"
4906 static="false" final="false" visibility="protected"
4907 deprecated="not deprecated">
4908 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
4909 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004910 <![CDATA[Creates the "label" for a node. This is a string of HTML that defines a
4911 table with a heading at the top and (in the case of
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004912 {@link ImplementationNode}s) rows for each of the member fields.]]>
4913 </doc>
4914 </method>
4915 <method name="renderEdge"
4916 abstract="false" native="false" synchronized="false"
4917 static="false" final="false" visibility="protected"
4918 deprecated="not deprecated">
4919 <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
4920 </method>
4921 <method name="getEdgeAttributes" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
4922 abstract="false" native="false" synchronized="false"
4923 static="false" final="false" visibility="protected"
4924 deprecated="not deprecated">
4925 <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
4926 </method>
4927 <method name="getArrowString" return="java.lang.String"
4928 abstract="false" native="false" synchronized="false"
4929 static="false" final="false" visibility="protected"
4930 deprecated="not deprecated">
4931 <param name="arrows" type="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"/>
4932 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004933 <![CDATA[Turns a {@link List} of {@link ArrowType}s into a {@link String} that
4934 represents combining them. With Graphviz, that just means concatenating
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004935 them.]]>
4936 </doc>
4937 </method>
4938 <method name="getEdgeEndPoint" return="java.lang.String"
4939 abstract="false" native="false" synchronized="false"
4940 static="false" final="false" visibility="protected"
4941 deprecated="not deprecated">
4942 <param name="nodeId" type="java.lang.String"/>
4943 <param name="portId" type="java.lang.String"/>
4944 <param name="compassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/>
4945 </method>
4946 <method name="htmlEscape" return="java.lang.String"
4947 abstract="false" native="false" synchronized="false"
4948 static="false" final="false" visibility="protected"
4949 deprecated="not deprecated">
4950 <param name="str" type="java.lang.String"/>
4951 </method>
4952 <method name="htmlEscape" return="java.util.List&lt;java.lang.String&gt;"
4953 abstract="false" native="false" synchronized="false"
4954 static="false" final="false" visibility="protected"
4955 deprecated="not deprecated">
4956 <param name="elements" type="java.util.List&lt;java.lang.String&gt;"/>
4957 </method>
4958 <method name="newInterfaceNode"
4959 abstract="false" native="false" synchronized="false"
4960 static="false" final="false" visibility="protected"
4961 deprecated="not deprecated">
4962 <param name="node" type="com.google.inject.grapher.InterfaceNode"/>
4963 </method>
4964 <method name="newImplementationNode"
4965 abstract="false" native="false" synchronized="false"
4966 static="false" final="false" visibility="protected"
4967 deprecated="not deprecated">
4968 <param name="node" type="com.google.inject.grapher.ImplementationNode"/>
4969 </method>
4970 <method name="newInstanceNode"
4971 abstract="false" native="false" synchronized="false"
4972 static="false" final="false" visibility="protected"
4973 deprecated="not deprecated">
4974 <param name="node" type="com.google.inject.grapher.InstanceNode"/>
4975 </method>
4976 <method name="newDependencyEdge"
4977 abstract="false" native="false" synchronized="false"
4978 static="false" final="false" visibility="protected"
4979 deprecated="not deprecated">
4980 <param name="edge" type="com.google.inject.grapher.DependencyEdge"/>
4981 </method>
4982 <method name="newBindingEdge"
4983 abstract="false" native="false" synchronized="false"
4984 static="false" final="false" visibility="protected"
4985 deprecated="not deprecated">
4986 <param name="edge" type="com.google.inject.grapher.BindingEdge"/>
4987 </method>
4988 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07004989 <![CDATA[{@link InjectorGrapher} implementation that writes out a Graphviz DOT file of the graph.
4990 Dependencies are bound in {@link GraphvizModule}.
4991 <p>
4992 Specify the {@link PrintWriter} to output to with {@link #setOut(PrintWriter)}.
4993
Christian Edward Gruber509e3542014-03-20 20:37:34 -07004994 @author phopkins@gmail.com (Pete Hopkins)]]>
4995 </doc>
4996 </class>
4997 <!-- end class com.google.inject.grapher.graphviz.GraphvizGrapher -->
4998 <!-- start class com.google.inject.grapher.graphviz.GraphvizModule -->
4999 <class name="GraphvizModule" extends="com.google.inject.AbstractModule"
5000 abstract="false"
5001 static="false" final="false" visibility="public"
5002 deprecated="not deprecated">
5003 <constructor name="GraphvizModule"
5004 static="false" final="false" visibility="public"
5005 deprecated="not deprecated">
5006 </constructor>
5007 <method name="configure"
5008 abstract="false" native="false" synchronized="false"
5009 static="false" final="false" visibility="protected"
5010 deprecated="not deprecated">
5011 </method>
5012 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005013 <![CDATA[Module that provides classes needed by {@link GraphvizGrapher}.
5014
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005015 @author phopkins@gmail.com (Pete Hopkins)]]>
5016 </doc>
5017 </class>
5018 <!-- end class com.google.inject.grapher.graphviz.GraphvizModule -->
5019 <!-- start class com.google.inject.grapher.graphviz.GraphvizNode -->
5020 <class name="GraphvizNode" extends="java.lang.Object"
5021 abstract="false"
5022 static="false" final="false" visibility="public"
5023 deprecated="not deprecated">
5024 <constructor name="GraphvizNode" type="com.google.inject.grapher.NodeId"
5025 static="false" final="false" visibility="public"
5026 deprecated="not deprecated">
5027 </constructor>
5028 <method name="getNodeId" return="com.google.inject.grapher.NodeId"
5029 abstract="false" native="false" synchronized="false"
5030 static="false" final="false" visibility="public"
5031 deprecated="not deprecated">
5032 </method>
5033 <method name="getShape" return="com.google.inject.grapher.graphviz.NodeShape"
5034 abstract="false" native="false" synchronized="false"
5035 static="false" final="false" visibility="public"
5036 deprecated="not deprecated">
5037 </method>
5038 <method name="setShape"
5039 abstract="false" native="false" synchronized="false"
5040 static="false" final="false" visibility="public"
5041 deprecated="not deprecated">
5042 <param name="shape" type="com.google.inject.grapher.graphviz.NodeShape"/>
5043 </method>
5044 <method name="getStyle" return="com.google.inject.grapher.graphviz.NodeStyle"
5045 abstract="false" native="false" synchronized="false"
5046 static="false" final="false" visibility="public"
5047 deprecated="not deprecated">
5048 </method>
5049 <method name="setStyle"
5050 abstract="false" native="false" synchronized="false"
5051 static="false" final="false" visibility="public"
5052 deprecated="not deprecated">
5053 <param name="style" type="com.google.inject.grapher.graphviz.NodeStyle"/>
5054 </method>
5055 <method name="getTitle" return="java.lang.String"
5056 abstract="false" native="false" synchronized="false"
5057 static="false" final="false" visibility="public"
5058 deprecated="not deprecated">
5059 </method>
5060 <method name="setTitle"
5061 abstract="false" native="false" synchronized="false"
5062 static="false" final="false" visibility="public"
5063 deprecated="not deprecated">
5064 <param name="title" type="java.lang.String"/>
5065 </method>
5066 <method name="getSubtitles" return="java.util.List&lt;java.lang.String&gt;"
5067 abstract="false" native="false" synchronized="false"
5068 static="false" final="false" visibility="public"
5069 deprecated="not deprecated">
5070 </method>
5071 <method name="addSubtitle"
5072 abstract="false" native="false" synchronized="false"
5073 static="false" final="false" visibility="public"
5074 deprecated="not deprecated">
5075 <param name="position" type="int"/>
5076 <param name="subtitle" type="java.lang.String"/>
5077 </method>
5078 <method name="getHeaderTextColor" return="java.lang.String"
5079 abstract="false" native="false" synchronized="false"
5080 static="false" final="false" visibility="public"
5081 deprecated="not deprecated">
5082 </method>
5083 <method name="setHeaderTextColor"
5084 abstract="false" native="false" synchronized="false"
5085 static="false" final="false" visibility="public"
5086 deprecated="not deprecated">
5087 <param name="headerTextColor" type="java.lang.String"/>
5088 </method>
5089 <method name="getHeaderBackgroundColor" return="java.lang.String"
5090 abstract="false" native="false" synchronized="false"
5091 static="false" final="false" visibility="public"
5092 deprecated="not deprecated">
5093 </method>
5094 <method name="setHeaderBackgroundColor"
5095 abstract="false" native="false" synchronized="false"
5096 static="false" final="false" visibility="public"
5097 deprecated="not deprecated">
5098 <param name="headerBackgroundColor" type="java.lang.String"/>
5099 </method>
5100 <method name="addField"
5101 abstract="false" native="false" synchronized="false"
5102 static="false" final="false" visibility="public"
5103 deprecated="not deprecated">
5104 <param name="portId" type="java.lang.String"/>
5105 <param name="title" type="java.lang.String"/>
5106 </method>
5107 <method name="getFields" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
5108 abstract="false" native="false" synchronized="false"
5109 static="false" final="false" visibility="public"
5110 deprecated="not deprecated">
5111 </method>
5112 <method name="getIdentifier" return="java.lang.String"
5113 abstract="false" native="false" synchronized="false"
5114 static="false" final="false" visibility="public"
5115 deprecated="not deprecated">
5116 </method>
5117 <method name="setIdentifier"
5118 abstract="false" native="false" synchronized="false"
5119 static="false" final="false" visibility="public"
5120 deprecated="not deprecated">
5121 <param name="identifier" type="java.lang.String"/>
5122 </method>
5123 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005124 <![CDATA[Data object to encapsulate the attributes of Graphviz nodes that we're
5125 interested in drawing.
5126
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005127 @author phopkins@gmail.com (Pete Hopkins)]]>
5128 </doc>
5129 </class>
5130 <!-- end class com.google.inject.grapher.graphviz.GraphvizNode -->
5131 <!-- start class com.google.inject.grapher.graphviz.NodeShape -->
5132 <class name="NodeShape" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.NodeShape&gt;"
5133 abstract="false"
5134 static="false" final="true" visibility="public"
5135 deprecated="not deprecated">
5136 <method name="values" return="com.google.inject.grapher.graphviz.NodeShape[]"
5137 abstract="false" native="false" synchronized="false"
5138 static="true" final="false" visibility="public"
5139 deprecated="not deprecated">
5140 </method>
5141 <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeShape"
5142 abstract="false" native="false" synchronized="false"
5143 static="true" final="false" visibility="public"
5144 deprecated="not deprecated">
5145 <param name="name" type="java.lang.String"/>
5146 </method>
5147 <method name="toString" return="java.lang.String"
5148 abstract="false" native="false" synchronized="false"
5149 static="false" final="false" visibility="public"
5150 deprecated="not deprecated">
5151 </method>
5152 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005153 <![CDATA[Enum for the shapes that are most interesting for Guice graphing.
5154 <p>
5155 See: http://www.graphviz.org/doc/info/shapes.html
5156
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005157 @author phopkins@gmail.com (Pete Hopkins)]]>
5158 </doc>
5159 </class>
5160 <!-- end class com.google.inject.grapher.graphviz.NodeShape -->
5161 <!-- start class com.google.inject.grapher.graphviz.NodeStyle -->
5162 <class name="NodeStyle" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.NodeStyle&gt;"
5163 abstract="false"
5164 static="false" final="true" visibility="public"
5165 deprecated="not deprecated">
5166 <method name="values" return="com.google.inject.grapher.graphviz.NodeStyle[]"
5167 abstract="false" native="false" synchronized="false"
5168 static="true" final="false" visibility="public"
5169 deprecated="not deprecated">
5170 </method>
5171 <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeStyle"
5172 abstract="false" native="false" synchronized="false"
5173 static="true" final="false" visibility="public"
5174 deprecated="not deprecated">
5175 <param name="name" type="java.lang.String"/>
5176 </method>
5177 <method name="toString" return="java.lang.String"
5178 abstract="false" native="false" synchronized="false"
5179 static="false" final="false" visibility="public"
5180 deprecated="not deprecated">
5181 </method>
5182 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005183 <![CDATA[Styles for nodes. Similar to {@link EdgeStyle} but with a few more options.
5184 <p>
5185 See: http://www.graphviz.org/doc/info/attrs.html#k:style
5186
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005187 @author phopkins@gmail.com (Pete Hopkins)]]>
5188 </doc>
5189 </class>
5190 <!-- end class com.google.inject.grapher.graphviz.NodeStyle -->
5191 <!-- start interface com.google.inject.grapher.graphviz.PortIdFactory -->
5192 <interface name="PortIdFactory" abstract="true"
5193 static="false" final="false" visibility="public"
5194 deprecated="not deprecated">
5195 <method name="getPortId" return="java.lang.String"
5196 abstract="true" native="false" synchronized="false"
5197 static="false" final="false" visibility="public"
5198 deprecated="not deprecated">
5199 <param name="member" type="java.lang.reflect.Member"/>
5200 </method>
5201 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005202 <![CDATA[Interface for a service that returns Graphviz port IDs, used for naming the
5203 rows in {@link ImplementationNode}-displaying {@link GraphvizNode}s.
5204
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005205 @author phopkins@gmail.com (Pete Hopkins)]]>
5206 </doc>
5207 </interface>
5208 <!-- end interface com.google.inject.grapher.graphviz.PortIdFactory -->
5209 <!-- start class com.google.inject.grapher.graphviz.PortIdFactoryImpl -->
5210 <class name="PortIdFactoryImpl" extends="java.lang.Object"
5211 abstract="false"
5212 static="false" final="false" visibility="public"
5213 deprecated="not deprecated">
5214 <implements name="com.google.inject.grapher.graphviz.PortIdFactory"/>
5215 <constructor name="PortIdFactoryImpl"
5216 static="false" final="false" visibility="public"
5217 deprecated="not deprecated">
5218 </constructor>
5219 <method name="getPortId" return="java.lang.String"
5220 abstract="false" native="false" synchronized="false"
5221 static="false" final="false" visibility="public"
5222 deprecated="not deprecated">
5223 <param name="member" type="java.lang.reflect.Member"/>
5224 </method>
5225 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005226 <![CDATA[Implementation of {@link PortIdFactory}. Bound in {@link GraphvizModule}.
5227
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005228 @author phopkins@gmail.com (Pete Hopkins)]]>
5229 </doc>
5230 </class>
5231 <!-- end class com.google.inject.grapher.graphviz.PortIdFactoryImpl -->
5232</package>
5233<package name="com.google.inject.jndi">
5234 <!-- start class com.google.inject.jndi.JndiIntegration -->
5235 <class name="JndiIntegration" extends="java.lang.Object"
5236 abstract="false"
5237 static="false" final="false" visibility="public"
5238 deprecated="not deprecated">
5239 <method name="fromJndi" return="com.google.inject.Provider&lt;T&gt;"
5240 abstract="false" native="false" synchronized="false"
5241 static="true" final="false" visibility="public"
5242 deprecated="not deprecated">
5243 <param name="type" type="java.lang.Class&lt;T&gt;"/>
5244 <param name="name" type="java.lang.String"/>
5245 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005246 <![CDATA[Creates a provider which looks up objects in JNDI using the given name.
5247 Example usage:
5248
5249 <pre>
5250 bind(DataSource.class).toProvider(fromJndi(DataSource.class, "java:..."));
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005251 </pre>]]>
5252 </doc>
5253 </method>
5254 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005255 <![CDATA[Integrates Guice with JNDI. Requires a binding to
5256 {@link javax.naming.Context}.
5257
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005258 @author crazybob@google.com (Bob Lee)]]>
5259 </doc>
5260 </class>
5261 <!-- end class com.google.inject.jndi.JndiIntegration -->
5262</package>
5263<package name="com.google.inject.matcher">
5264 <!-- start class com.google.inject.matcher.AbstractMatcher -->
5265 <class name="AbstractMatcher" extends="java.lang.Object"
5266 abstract="true"
5267 static="false" final="false" visibility="public"
5268 deprecated="not deprecated">
5269 <implements name="com.google.inject.matcher.Matcher&lt;T&gt;"/>
5270 <constructor name="AbstractMatcher"
5271 static="false" final="false" visibility="public"
5272 deprecated="not deprecated">
5273 </constructor>
5274 <method name="and" return="com.google.inject.matcher.Matcher&lt;T&gt;"
5275 abstract="false" native="false" synchronized="false"
5276 static="false" final="false" visibility="public"
5277 deprecated="not deprecated">
5278 <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
5279 </method>
5280 <method name="or" return="com.google.inject.matcher.Matcher&lt;T&gt;"
5281 abstract="false" native="false" synchronized="false"
5282 static="false" final="false" visibility="public"
5283 deprecated="not deprecated">
5284 <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
5285 </method>
5286 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005287 <![CDATA[Implements {@code and()} and {@code or()}.
5288
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005289 @author crazybob@google.com (Bob Lee)]]>
5290 </doc>
5291 </class>
5292 <!-- end class com.google.inject.matcher.AbstractMatcher -->
5293 <!-- start interface com.google.inject.matcher.Matcher -->
5294 <interface name="Matcher" abstract="true"
5295 static="false" final="false" visibility="public"
5296 deprecated="not deprecated">
5297 <method name="matches" return="boolean"
5298 abstract="true" native="false" synchronized="false"
5299 static="false" final="false" visibility="public"
5300 deprecated="not deprecated">
5301 <param name="t" type="T"/>
5302 <doc>
5303 <![CDATA[Returns {@code true} if this matches {@code t}, {@code false} otherwise.]]>
5304 </doc>
5305 </method>
5306 <method name="and" return="com.google.inject.matcher.Matcher&lt;T&gt;"
5307 abstract="true" native="false" synchronized="false"
5308 static="false" final="false" visibility="public"
5309 deprecated="not deprecated">
5310 <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
5311 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005312 <![CDATA[Returns a new matcher which returns {@code true} if both this and the
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005313 given matcher return {@code true}.]]>
5314 </doc>
5315 </method>
5316 <method name="or" return="com.google.inject.matcher.Matcher&lt;T&gt;"
5317 abstract="true" native="false" synchronized="false"
5318 static="false" final="false" visibility="public"
5319 deprecated="not deprecated">
5320 <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
5321 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005322 <![CDATA[Returns a new matcher which returns {@code true} if either this or the
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005323 given matcher return {@code true}.]]>
5324 </doc>
5325 </method>
5326 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005327 <![CDATA[Returns {@code true} or {@code false} for a given input.
5328
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005329 @author crazybob@google.com (Bob Lee)]]>
5330 </doc>
5331 </interface>
5332 <!-- end interface com.google.inject.matcher.Matcher -->
5333 <!-- start class com.google.inject.matcher.Matchers -->
5334 <class name="Matchers" extends="java.lang.Object"
5335 abstract="false"
5336 static="false" final="false" visibility="public"
5337 deprecated="not deprecated">
5338 <method name="any" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
5339 abstract="false" native="false" synchronized="false"
5340 static="true" final="false" visibility="public"
5341 deprecated="not deprecated">
5342 <doc>
5343 <![CDATA[Returns a matcher which matches any input.]]>
5344 </doc>
5345 </method>
5346 <method name="not" return="com.google.inject.matcher.Matcher&lt;T&gt;"
5347 abstract="false" native="false" synchronized="false"
5348 static="true" final="false" visibility="public"
5349 deprecated="not deprecated">
5350 <param name="p" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
5351 <doc>
5352 <![CDATA[Inverts the given matcher.]]>
5353 </doc>
5354 </method>
5355 <method name="annotatedWith" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.AnnotatedElement&gt;"
5356 abstract="false" native="false" synchronized="false"
5357 static="true" final="false" visibility="public"
5358 deprecated="not deprecated">
5359 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
5360 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005361 <![CDATA[Returns a matcher which matches elements (methods, classes, etc.)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005362 with a given annotation.]]>
5363 </doc>
5364 </method>
5365 <method name="annotatedWith" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.AnnotatedElement&gt;"
5366 abstract="false" native="false" synchronized="false"
5367 static="true" final="false" visibility="public"
5368 deprecated="not deprecated">
5369 <param name="annotation" type="java.lang.annotation.Annotation"/>
5370 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005371 <![CDATA[Returns a matcher which matches elements (methods, classes, etc.)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005372 with a given annotation.]]>
5373 </doc>
5374 </method>
5375 <method name="subclassesOf" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
5376 abstract="false" native="false" synchronized="false"
5377 static="true" final="false" visibility="public"
5378 deprecated="not deprecated">
5379 <param name="superclass" type="java.lang.Class&lt;?&gt;"/>
5380 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005381 <![CDATA[Returns a matcher which matches subclasses of the given type (as well as
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005382 the given type).]]>
5383 </doc>
5384 </method>
5385 <method name="only" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
5386 abstract="false" native="false" synchronized="false"
5387 static="true" final="false" visibility="public"
5388 deprecated="not deprecated">
5389 <param name="value" type="java.lang.Object"/>
5390 <doc>
5391 <![CDATA[Returns a matcher which matches objects equal to the given object.]]>
5392 </doc>
5393 </method>
5394 <method name="identicalTo" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
5395 abstract="false" native="false" synchronized="false"
5396 static="true" final="false" visibility="public"
5397 deprecated="not deprecated">
5398 <param name="value" type="java.lang.Object"/>
5399 <doc>
5400 <![CDATA[Returns a matcher which matches only the given object.]]>
5401 </doc>
5402 </method>
5403 <method name="inPackage" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
5404 abstract="false" native="false" synchronized="false"
5405 static="true" final="false" visibility="public"
5406 deprecated="not deprecated">
5407 <param name="targetPackage" type="java.lang.Package"/>
5408 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005409 <![CDATA[Returns a matcher which matches classes in the given package. Packages are specific to their
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005410 classloader, so classes with the same package name may not have the same package at runtime.]]>
5411 </doc>
5412 </method>
5413 <method name="inSubpackage" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
5414 abstract="false" native="false" synchronized="false"
5415 static="true" final="false" visibility="public"
5416 deprecated="not deprecated">
5417 <param name="targetPackageName" type="java.lang.String"/>
5418 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005419 <![CDATA[Returns a matcher which matches classes in the given package and its subpackages. Unlike
5420 {@link #inPackage(Package) inPackage()}, this matches classes from any classloader.
5421
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005422 @since 2.0]]>
5423 </doc>
5424 </method>
5425 <method name="returns" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.Method&gt;"
5426 abstract="false" native="false" synchronized="false"
5427 static="true" final="false" visibility="public"
5428 deprecated="not deprecated">
5429 <param name="returnType" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
5430 <doc>
5431 <![CDATA[Returns a matcher which matches methods with matching return types.]]>
5432 </doc>
5433 </method>
5434 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005435 <![CDATA[Matcher implementations. Supports matching classes and methods.
5436
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005437 @author crazybob@google.com (Bob Lee)]]>
5438 </doc>
5439 </class>
5440 <!-- end class com.google.inject.matcher.Matchers -->
5441</package>
5442<package name="com.google.inject.multibindings">
5443 <!-- start class com.google.inject.multibindings.MapBinder -->
5444 <class name="MapBinder" extends="java.lang.Object"
5445 abstract="true"
5446 static="false" final="false" visibility="public"
5447 deprecated="not deprecated">
5448 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
5449 abstract="false" native="false" synchronized="false"
5450 static="true" final="false" visibility="public"
5451 deprecated="not deprecated">
5452 <param name="binder" type="com.google.inject.Binder"/>
5453 <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
5454 <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
5455 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005456 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005457 {@link Map} that is itself bound with no binding annotation.]]>
5458 </doc>
5459 </method>
5460 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
5461 abstract="false" native="false" synchronized="false"
5462 static="true" final="false" visibility="public"
5463 deprecated="not deprecated">
5464 <param name="binder" type="com.google.inject.Binder"/>
5465 <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
5466 <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
5467 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005468 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005469 {@link Map} that is itself bound with no binding annotation.]]>
5470 </doc>
5471 </method>
5472 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
5473 abstract="false" native="false" synchronized="false"
5474 static="true" final="false" visibility="public"
5475 deprecated="not deprecated">
5476 <param name="binder" type="com.google.inject.Binder"/>
5477 <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
5478 <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
5479 <param name="annotation" type="java.lang.annotation.Annotation"/>
5480 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005481 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005482 {@link Map} that is itself bound with {@code annotation}.]]>
5483 </doc>
5484 </method>
5485 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
5486 abstract="false" native="false" synchronized="false"
5487 static="true" final="false" visibility="public"
5488 deprecated="not deprecated">
5489 <param name="binder" type="com.google.inject.Binder"/>
5490 <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
5491 <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
5492 <param name="annotation" type="java.lang.annotation.Annotation"/>
5493 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005494 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005495 {@link Map} that is itself bound with {@code annotation}.]]>
5496 </doc>
5497 </method>
5498 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
5499 abstract="false" native="false" synchronized="false"
5500 static="true" final="false" visibility="public"
5501 deprecated="not deprecated">
5502 <param name="binder" type="com.google.inject.Binder"/>
5503 <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
5504 <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
5505 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
5506 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005507 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005508 {@link Map} that is itself bound with {@code annotationType}.]]>
5509 </doc>
5510 </method>
5511 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
5512 abstract="false" native="false" synchronized="false"
5513 static="true" final="false" visibility="public"
5514 deprecated="not deprecated">
5515 <param name="binder" type="com.google.inject.Binder"/>
5516 <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
5517 <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
5518 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
5519 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005520 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005521 {@link Map} that is itself bound with {@code annotationType}.]]>
5522 </doc>
5523 </method>
5524 <method name="permitDuplicates" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
5525 abstract="true" native="false" synchronized="false"
5526 static="false" final="false" visibility="public"
5527 deprecated="not deprecated">
5528 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005529 <![CDATA[Configures the {@code MapBinder} to handle duplicate entries.
5530 <p>When multiple equal keys are bound, the value that gets included in the map is
5531 arbitrary.
5532 <p>In addition to the {@code Map<K, V>} and {@code Map<K, Provider<V>>}
5533 maps that are normally bound, a {@code Map<K, Set<V>>} and
5534 {@code Map<K, Set<Provider<V>>>} are <em>also</em> bound, which contain
5535 all values bound to each key.
5536 <p>
5537 When multiple modules contribute elements to the map, this configuration
5538 option impacts all of them.
5539
5540 @return this map binder
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005541 @since 3.0]]>
5542 </doc>
5543 </method>
5544 <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder&lt;V&gt;"
5545 abstract="true" native="false" synchronized="false"
5546 static="false" final="false" visibility="public"
5547 deprecated="not deprecated">
5548 <param name="key" type="K"/>
5549 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005550 <![CDATA[Returns a binding builder used to add a new entry in the map. Each
5551 key must be distinct (and non-null). Bound providers will be evaluated each
5552 time the map is injected.
5553
5554 <p>It is an error to call this method without also calling one of the
5555 {@code to} methods on the returned binding builder.
5556
5557 <p>Scoping elements independently is supported. Use the {@code in} method
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005558 to specify a binding scope.]]>
5559 </doc>
5560 </method>
5561 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005562 <![CDATA[An API to bind multiple map entries separately, only to later inject them as
5563 a complete map. MapBinder is intended for use in your application's module:
5564 <pre><code>
5565 public class SnacksModule extends AbstractModule {
5566 protected void configure() {
5567 MapBinder&lt;String, Snack&gt; mapbinder
5568 = MapBinder.newMapBinder(binder(), String.class, Snack.class);
5569 mapbinder.addBinding("twix").toInstance(new Twix());
5570 mapbinder.addBinding("snickers").toProvider(SnickersProvider.class);
5571 mapbinder.addBinding("skittles").to(Skittles.class);
5572 }
5573 }</code></pre>
5574
5575 <p>With this binding, a {@link Map}{@code <String, Snack>} can now be
5576 injected:
5577 <pre><code>
5578 class SnackMachine {
5579 {@literal @}Inject
5580 public SnackMachine(Map&lt;String, Snack&gt; snacks) { ... }
5581 }</code></pre>
5582
5583 <p>In addition to binding {@code Map<K, V>}, a mapbinder will also bind
5584 {@code Map<K, Provider<V>>} for lazy value provision:
5585 <pre><code>
5586 class SnackMachine {
5587 {@literal @}Inject
5588 public SnackMachine(Map&lt;String, Provider&lt;Snack&gt;&gt; snackProviders) { ... }
5589 }</code></pre>
5590
5591 <p>Contributing mapbindings from different modules is supported. For example,
5592 it is okay to have both {@code CandyModule} and {@code ChipsModule} both
5593 create their own {@code MapBinder<String, Snack>}, and to each contribute
5594 bindings to the snacks map. When that map is injected, it will contain
5595 entries from both modules.
5596
5597 <p>The map's iteration order is consistent with the binding order. This is
5598 convenient when multiple elements are contributed by the same module because
5599 that module can order its bindings appropriately. Avoid relying on the
5600 iteration order of elements contributed by different modules, since there is
5601 no equivalent mechanism to order modules.
5602
5603 <p>The map is unmodifiable. Elements can only be added to the map by
5604 configuring the MapBinder. Elements can never be removed from the map.
5605
5606 <p>Values are resolved at map injection time. If a value is bound to a
5607 provider, that provider's get method will be called each time the map is
5608 injected (unless the binding is also scoped, or a map of providers is injected).
5609
5610 <p>Annotations are used to create different maps of the same key/value
5611 type. Each distinct annotation gets its own independent map.
5612
5613 <p><strong>Keys must be distinct.</strong> If the same key is bound more than
5614 once, map injection will fail. However, use {@link #permitDuplicates()} in
5615 order to allow duplicate keys; extra bindings to {@code Map<K, Set<V>>} and
5616 {@code Map<K, Set<Provider<V>>} will be added.
5617
5618 <p><strong>Keys must be non-null.</strong> {@code addBinding(null)} will
5619 throw an unchecked exception.
5620
5621 <p><strong>Values must be non-null to use map injection.</strong> If any
5622 value is null, map injection will fail (although injecting a map of providers
5623 will not).
5624
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005625 @author dpb@google.com (David P. Baker)]]>
5626 </doc>
5627 </class>
5628 <!-- end class com.google.inject.multibindings.MapBinder -->
5629 <!-- start interface com.google.inject.multibindings.MapBinderBinding -->
5630 <interface name="MapBinderBinding" abstract="true"
5631 static="false" final="false" visibility="public"
5632 deprecated="not deprecated">
5633 <method name="getMapKey" return="com.google.inject.Key&lt;T&gt;"
5634 abstract="true" native="false" synchronized="false"
5635 static="false" final="false" visibility="public"
5636 deprecated="not deprecated">
5637 <doc>
5638 <![CDATA[Returns the {@link Key} for the map.]]>
5639 </doc>
5640 </method>
5641 <method name="getKeyTypeLiteral" return="com.google.inject.TypeLiteral&lt;?&gt;"
5642 abstract="true" native="false" synchronized="false"
5643 static="false" final="false" visibility="public"
5644 deprecated="not deprecated">
5645 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005646 <![CDATA[Returns the TypeLiteral describing the keys of the map.
5647 <p>
5648 The TypeLiteral will always match the type Map's generic type. For example, if getMapKey
5649 returns a key of <code>Map&lt;String, Snack></code>, then this will always return a
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005650 <code>TypeLiteral&lt;String></code>.]]>
5651 </doc>
5652 </method>
5653 <method name="getValueTypeLiteral" return="com.google.inject.TypeLiteral&lt;?&gt;"
5654 abstract="true" native="false" synchronized="false"
5655 static="false" final="false" visibility="public"
5656 deprecated="not deprecated">
5657 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005658 <![CDATA[Returns the TypeLiteral describing the values of the map.
5659 <p>
5660 The TypeLiteral will always match the type Map's generic type. For example, if getMapKey
5661 returns a key of <code>Map&lt;String, Snack></code>, then this will always return a
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005662 <code>TypeLiteral&lt;Snack></code>.]]>
5663 </doc>
5664 </method>
5665 <method name="getEntries" return="java.util.List&lt;java.util.Map.Entry&lt;?, com.google.inject.Binding&lt;?&gt;&gt;&gt;"
5666 abstract="true" native="false" synchronized="false"
5667 static="false" final="false" visibility="public"
5668 deprecated="not deprecated">
5669 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005670 <![CDATA[Returns all entries in the Map. The returned list of Map.Entries contains the key and a binding
5671 to the value. Duplicate keys or values will exist as separate Map.Entries in the returned list.
5672 This is only supported on bindings returned from an injector. This will throw
5673 {@link UnsupportedOperationException} if it is called on an element retrieved from
5674 {@link Elements#getElements}.
5675 <p>
5676 The elements will always match the type Map's generic type. For example, if getMapKey returns a
5677 key of <code>Map&lt;String, Snack></code>, then this will always return a list of type
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005678 <code>List&lt;Map.Entry&lt;String, Binding&lt;Snack>>></code>.]]>
5679 </doc>
5680 </method>
5681 <method name="permitsDuplicates" return="boolean"
5682 abstract="true" native="false" synchronized="false"
5683 static="false" final="false" visibility="public"
5684 deprecated="not deprecated">
5685 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005686 <![CDATA[Returns true if the MapBinder permits duplicates. This is only supported on bindings returned
5687 from an injector. This will throw {@link UnsupportedOperationException} if it is called on a
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005688 MapBinderBinding retrieved from {@link Elements#getElements}.]]>
5689 </doc>
5690 </method>
5691 <method name="containsElement" return="boolean"
5692 abstract="true" native="false" synchronized="false"
5693 static="false" final="false" visibility="public"
5694 deprecated="not deprecated">
5695 <param name="element" type="com.google.inject.spi.Element"/>
5696 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005697 <![CDATA[Returns true if this MapBinder contains the given Element in order to build the map or uses the
5698 given Element in order to support building and injecting the map. This will work for
5699 MapBinderBindings retrieved from an injector and {@link Elements#getElements}. Usually this is
5700 only necessary if you are working with elements retrieved from modules (without an Injector),
5701 otherwise {@link #getEntries} and {@link #permitsDuplicates} are better options.
5702 <p>
5703 If you need to introspect the details of the map, such as the keys, values or if it permits
5704 duplicates, it is necessary to pass the elements through an Injector and use
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005705 {@link #getEntries()} and {@link #permitsDuplicates()}.]]>
5706 </doc>
5707 </method>
5708 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005709 <![CDATA[A binding for a MapBinder.
5710 <p>
5711 Although MapBinders may be injected through a variety of generic types (Map&lt;K, V>, Map
5712 &lt;K, Provider&lt;V>>, Map&lt;K, Set&lt;V>>, Map<K, Set&lt;
5713 Provider&lt;V>>, and even Set&lt;Map.Entry&lt;K, Provider&lt;V>>), a
5714 MapBinderBinding exists only on the Binding associated with the Map&lt;K, V> key. Other
5715 bindings can be validated to be derived from this MapBinderBinding using
5716 {@link #containsElement(Element)}.
5717
5718 @param <T> The fully qualified type of the map, including Map. For example:
5719 <code>MapBinderBinding&lt;Map&lt;String, Snack>></code>
5720
5721 @since 3.0
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005722 @author sameb@google.com (Sam Berlin)]]>
5723 </doc>
5724 </interface>
5725 <!-- end interface com.google.inject.multibindings.MapBinderBinding -->
5726 <!-- start class com.google.inject.multibindings.Multibinder -->
5727 <class name="Multibinder" extends="java.lang.Object"
5728 abstract="true"
5729 static="false" final="false" visibility="public"
5730 deprecated="not deprecated">
5731 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
5732 abstract="false" native="false" synchronized="false"
5733 static="true" final="false" visibility="public"
5734 deprecated="not deprecated">
5735 <param name="binder" type="com.google.inject.Binder"/>
5736 <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
5737 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005738 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005739 itself bound with no binding annotation.]]>
5740 </doc>
5741 </method>
5742 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
5743 abstract="false" native="false" synchronized="false"
5744 static="true" final="false" visibility="public"
5745 deprecated="not deprecated">
5746 <param name="binder" type="com.google.inject.Binder"/>
5747 <param name="type" type="java.lang.Class&lt;T&gt;"/>
5748 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005749 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005750 itself bound with no binding annotation.]]>
5751 </doc>
5752 </method>
5753 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
5754 abstract="false" native="false" synchronized="false"
5755 static="true" final="false" visibility="public"
5756 deprecated="not deprecated">
5757 <param name="binder" type="com.google.inject.Binder"/>
5758 <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
5759 <param name="annotation" type="java.lang.annotation.Annotation"/>
5760 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005761 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005762 itself bound with {@code annotation}.]]>
5763 </doc>
5764 </method>
5765 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
5766 abstract="false" native="false" synchronized="false"
5767 static="true" final="false" visibility="public"
5768 deprecated="not deprecated">
5769 <param name="binder" type="com.google.inject.Binder"/>
5770 <param name="type" type="java.lang.Class&lt;T&gt;"/>
5771 <param name="annotation" type="java.lang.annotation.Annotation"/>
5772 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005773 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005774 itself bound with {@code annotation}.]]>
5775 </doc>
5776 </method>
5777 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
5778 abstract="false" native="false" synchronized="false"
5779 static="true" final="false" visibility="public"
5780 deprecated="not deprecated">
5781 <param name="binder" type="com.google.inject.Binder"/>
5782 <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
5783 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
5784 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005785 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005786 itself bound with {@code annotationType}.]]>
5787 </doc>
5788 </method>
5789 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
5790 abstract="false" native="false" synchronized="false"
5791 static="true" final="false" visibility="public"
5792 deprecated="not deprecated">
5793 <param name="binder" type="com.google.inject.Binder"/>
5794 <param name="type" type="java.lang.Class&lt;T&gt;"/>
5795 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
5796 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005797 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005798 itself bound with {@code annotationType}.]]>
5799 </doc>
5800 </method>
5801 <method name="permitDuplicates" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
5802 abstract="true" native="false" synchronized="false"
5803 static="false" final="false" visibility="public"
5804 deprecated="not deprecated">
5805 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005806 <![CDATA[Configures the bound set to silently discard duplicate elements. When multiple equal values are
5807 bound, the one that gets included is arbitrary. When multiple modules contribute elements to
5808 the set, this configuration option impacts all of them.
5809
5810 @return this multibinder
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005811 @since 3.0]]>
5812 </doc>
5813 </method>
5814 <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
5815 abstract="true" native="false" synchronized="false"
5816 static="false" final="false" visibility="public"
5817 deprecated="not deprecated">
5818 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005819 <![CDATA[Returns a binding builder used to add a new element in the set. Each
5820 bound element must have a distinct value. Bound providers will be
5821 evaluated each time the set is injected.
5822
5823 <p>It is an error to call this method without also calling one of the
5824 {@code to} methods on the returned binding builder.
5825
5826 <p>Scoping elements independently is supported. Use the {@code in} method
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005827 to specify a binding scope.]]>
5828 </doc>
5829 </method>
5830 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005831 <![CDATA[An API to bind multiple values separately, only to later inject them as a
5832 complete collection. Multibinder is intended for use in your application's
5833 module:
5834 <pre><code>
5835 public class SnacksModule extends AbstractModule {
5836 protected void configure() {
5837 Multibinder&lt;Snack&gt; multibinder
5838 = Multibinder.newSetBinder(binder(), Snack.class);
5839 multibinder.addBinding().toInstance(new Twix());
5840 multibinder.addBinding().toProvider(SnickersProvider.class);
5841 multibinder.addBinding().to(Skittles.class);
5842 }
5843 }</code></pre>
5844
5845 <p>With this binding, a {@link Set}{@code <Snack>} can now be injected:
5846 <pre><code>
5847 class SnackMachine {
5848 {@literal @}Inject
5849 public SnackMachine(Set&lt;Snack&gt; snacks) { ... }
5850 }</code></pre>
5851
5852 <p>Contributing multibindings from different modules is supported. For
5853 example, it is okay for both {@code CandyModule} and {@code ChipsModule}
5854 to create their own {@code Multibinder<Snack>}, and to each contribute
5855 bindings to the set of snacks. When that set is injected, it will contain
5856 elements from both modules.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005857
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005858 <p>The set's iteration order is consistent with the binding order. This is
5859 convenient when multiple elements are contributed by the same module because
5860 that module can order its bindings appropriately. Avoid relying on the
5861 iteration order of elements contributed by different modules, since there is
5862 no equivalent mechanism to order modules.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005863
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005864 <p>The set is unmodifiable. Elements can only be added to the set by
5865 configuring the multibinder. Elements can never be removed from the set.
5866
5867 <p>Elements are resolved at set injection time. If an element is bound to a
5868 provider, that provider's get method will be called each time the set is
5869 injected (unless the binding is also scoped).
5870
5871 <p>Annotations are be used to create different sets of the same element
5872 type. Each distinct annotation gets its own independent collection of
5873 elements.
5874
5875 <p><strong>Elements must be distinct.</strong> If multiple bound elements
5876 have the same value, set injection will fail.
5877
5878 <p><strong>Elements must be non-null.</strong> If any set element is null,
5879 set injection will fail.
5880
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005881 @author jessewilson@google.com (Jesse Wilson)]]>
5882 </doc>
5883 </class>
5884 <!-- end class com.google.inject.multibindings.Multibinder -->
5885 <!-- start interface com.google.inject.multibindings.MultibinderBinding -->
5886 <interface name="MultibinderBinding" abstract="true"
5887 static="false" final="false" visibility="public"
5888 deprecated="not deprecated">
5889 <method name="getSetKey" return="com.google.inject.Key&lt;T&gt;"
5890 abstract="true" native="false" synchronized="false"
5891 static="false" final="false" visibility="public"
5892 deprecated="not deprecated">
5893 <doc>
5894 <![CDATA[Returns the key for the set.]]>
5895 </doc>
5896 </method>
5897 <method name="getElementTypeLiteral" return="com.google.inject.TypeLiteral&lt;?&gt;"
5898 abstract="true" native="false" synchronized="false"
5899 static="false" final="false" visibility="public"
5900 deprecated="not deprecated">
5901 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005902 <![CDATA[Returns the TypeLiteral that describes the type of elements in the set.
5903 <p>
5904 The elements will always match the type Set's generic type. For example, if getSetKey returns a
5905 key of <code>Set&lt;String></code>, then this will always return a
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005906 <code>TypeLiteral&lt;String></code>.]]>
5907 </doc>
5908 </method>
5909 <method name="getElements" return="java.util.List&lt;com.google.inject.Binding&lt;?&gt;&gt;"
5910 abstract="true" native="false" synchronized="false"
5911 static="false" final="false" visibility="public"
5912 deprecated="not deprecated">
5913 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005914 <![CDATA[Returns all bindings that make up the set. This is only supported on bindings returned from an
5915 injector. This will throw {@link UnsupportedOperationException} if it is called on an element
5916 retrieved from {@link Elements#getElements}.
5917 <p>
5918 The elements will always match the type Set's generic type. For example, if getSetKey returns a
5919 key of <code>Set&lt;String></code>, then this will always return a list of type
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005920 <code>List&lt;Binding&lt;String>></code>.]]>
5921 </doc>
5922 </method>
5923 <method name="permitsDuplicates" return="boolean"
5924 abstract="true" native="false" synchronized="false"
5925 static="false" final="false" visibility="public"
5926 deprecated="not deprecated">
5927 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005928 <![CDATA[Returns true if the multibinder permits duplicates. This is only supported on bindings returned
5929 from an injector. This will throw {@link UnsupportedOperationException} if it is called on a
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005930 MultibinderBinding retrieved from {@link Elements#getElements}.]]>
5931 </doc>
5932 </method>
5933 <method name="containsElement" return="boolean"
5934 abstract="true" native="false" synchronized="false"
5935 static="false" final="false" visibility="public"
5936 deprecated="not deprecated">
5937 <param name="element" type="com.google.inject.spi.Element"/>
5938 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005939 <![CDATA[Returns true if this Multibinder uses the given Element. This will be true for bindings that
5940 derive the elements of the set and other bindings that Multibinder uses internally. This will
5941 work for MultibinderBindings retrieved from an injector and {@link Elements#getElements}.
5942 Usually this is only necessary if you are working with elements retrieved from modules (without
5943 an Injector), otherwise {@link #getElements} and {@link #permitsDuplicates} are better options.
5944 <p>
5945 If you need to introspect the details of the set, such as the values or if it permits
5946 duplicates, it is necessary to pass the elements through an Injector and use
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005947 {@link #getElements()} and {@link #permitsDuplicates()}.]]>
5948 </doc>
5949 </method>
5950 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005951 <![CDATA[A binding for a Multibinder.
5952
5953 @param <T> The fully qualified type of the set, including Set. For example:
5954 <code>MultibinderBinding&lt;Set&lt;Boolean>></code>
5955
5956 @since 3.0
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005957 @author sameb@google.com (Sam Berlin)]]>
5958 </doc>
5959 </interface>
5960 <!-- end interface com.google.inject.multibindings.MultibinderBinding -->
5961 <!-- start interface com.google.inject.multibindings.MultibindingsTargetVisitor -->
5962 <interface name="MultibindingsTargetVisitor" abstract="true"
5963 static="false" final="false" visibility="public"
5964 deprecated="not deprecated">
5965 <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
5966 <method name="visit" return="V"
5967 abstract="true" native="false" synchronized="false"
5968 static="false" final="false" visibility="public"
5969 deprecated="not deprecated">
5970 <param name="multibinding" type="com.google.inject.multibindings.MultibinderBinding&lt;? extends T&gt;"/>
5971 <doc>
5972 <![CDATA[Visits a binding created through {@link Multibinder}.]]>
5973 </doc>
5974 </method>
5975 <method name="visit" return="V"
5976 abstract="true" native="false" synchronized="false"
5977 static="false" final="false" visibility="public"
5978 deprecated="not deprecated">
5979 <param name="mapbinding" type="com.google.inject.multibindings.MapBinderBinding&lt;? extends T&gt;"/>
5980 <doc>
5981 <![CDATA[Visits a binding created through {@link MapBinder}.]]>
5982 </doc>
5983 </method>
5984 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07005985 <![CDATA[A visitor for the multibinder extension.
5986 <p>
5987 If your {@link BindingTargetVisitor} implements this interface, bindings created by using
5988 {@link Multibinder} or {@link MapBinder} will be visited through this interface.
5989
5990 @since 3.0
Christian Edward Gruber509e3542014-03-20 20:37:34 -07005991 @author sameb@google.com (Sam Berlin)]]>
5992 </doc>
5993 </interface>
5994 <!-- end interface com.google.inject.multibindings.MultibindingsTargetVisitor -->
5995</package>
5996<package name="com.google.inject.name">
5997 <!-- start class com.google.inject.name.Named -->
5998 <class name="Named" abstract="true"
5999 static="false" final="false" visibility="public"
6000 deprecated="not deprecated">
6001 <implements name="java.lang.annotation.Annotation"/>
6002 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006003 <![CDATA[Annotates named things.
6004
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006005 @author crazybob@google.com (Bob Lee)]]>
6006 </doc>
6007 </class>
6008 <!-- end class com.google.inject.name.Named -->
6009 <!-- start class com.google.inject.name.Names -->
6010 <class name="Names" extends="java.lang.Object"
6011 abstract="false"
6012 static="false" final="false" visibility="public"
6013 deprecated="not deprecated">
6014 <method name="named" return="com.google.inject.name.Named"
6015 abstract="false" native="false" synchronized="false"
6016 static="true" final="false" visibility="public"
6017 deprecated="not deprecated">
6018 <param name="name" type="java.lang.String"/>
6019 <doc>
6020 <![CDATA[Creates a {@link Named} annotation with {@code name} as the value.]]>
6021 </doc>
6022 </method>
6023 <method name="bindProperties"
6024 abstract="false" native="false" synchronized="false"
6025 static="true" final="false" visibility="public"
6026 deprecated="not deprecated">
6027 <param name="binder" type="com.google.inject.Binder"/>
6028 <param name="properties" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
6029 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006030 <![CDATA[Creates a constant binding to {@code @Named(key)} for each entry in
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006031 {@code properties}.]]>
6032 </doc>
6033 </method>
6034 <method name="bindProperties"
6035 abstract="false" native="false" synchronized="false"
6036 static="true" final="false" visibility="public"
6037 deprecated="not deprecated">
6038 <param name="binder" type="com.google.inject.Binder"/>
6039 <param name="properties" type="java.util.Properties"/>
6040 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006041 <![CDATA[Creates a constant binding to {@code @Named(key)} for each property. This
6042 method binds all properties including those inherited from
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006043 {@link Properties#defaults defaults}.]]>
6044 </doc>
6045 </method>
6046 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006047 <![CDATA[Utility methods for use with {@code @}{@link Named}.
6048
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006049 @author crazybob@google.com (Bob Lee)]]>
6050 </doc>
6051 </class>
6052 <!-- end class com.google.inject.name.Names -->
6053</package>
6054<package name="com.google.inject.persist">
6055 <!-- start class com.google.inject.persist.PersistFilter -->
6056 <class name="PersistFilter" extends="java.lang.Object"
6057 abstract="false"
6058 static="false" final="true" visibility="public"
6059 deprecated="not deprecated">
6060 <constructor name="PersistFilter" type="com.google.inject.persist.UnitOfWork, com.google.inject.persist.PersistService"
6061 static="false" final="false" visibility="public"
6062 deprecated="not deprecated">
6063 </constructor>
6064 <method name="init"
6065 abstract="false" native="false" synchronized="false"
6066 static="false" final="false" visibility="public"
6067 deprecated="not deprecated">
6068 <param name="filterConfig" type="FilterConfig"/>
6069 <exception name="ServletException" type="ServletException"/>
6070 </method>
6071 <method name="destroy"
6072 abstract="false" native="false" synchronized="false"
6073 static="false" final="false" visibility="public"
6074 deprecated="not deprecated">
6075 </method>
6076 <method name="doFilter"
6077 abstract="false" native="false" synchronized="false"
6078 static="false" final="false" visibility="public"
6079 deprecated="not deprecated">
6080 <param name="servletRequest" type="ServletRequest"/>
6081 <param name="servletResponse" type="ServletResponse"/>
6082 <param name="filterChain" type="FilterChain"/>
6083 <exception name="IOException" type="java.io.IOException"/>
6084 <exception name="ServletException" type="ServletException"/>
6085 </method>
6086 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006087 <![CDATA[Apply this filter to enable the HTTP Request unit of work and to have
6088 guice-persist manage the lifecycle of active units of work.
6089 The filter automatically starts and stops the relevant {@link PersistService}
6090 upon {@link javax.servlet.Filter#init(javax.servlet.FilterConfig)} and
6091 {@link javax.servlet.Filter#destroy()} respectively.
6092
6093 <p> To be able to use the open session-in-view pattern (i.e. work per request),
6094 register this filter <b>once</b> in your Guice {@code ServletModule}. It is
6095 important that you register this filter before any other filter.
6096
6097 For multiple providers, you should register this filter once per provider, inside
6098 a private module for each persist module installed (this must be the same private
6099 module where the specific persist module is itself installed).
6100
6101 <p>
6102 Example configuration:
6103 <pre>{@code
6104 public class MyModule extends ServletModule {
6105 public void configureServlets() {
6106 filter("/*").through(PersistFilter.class);
6107
6108 serve("/index.html").with(MyHtmlServlet.class);
6109 // Etc.
6110 }
6111 }
6112 }</pre>
6113 <p>
6114 This filter is thread safe and allows you to create injectors concurrently
6115 and deploy multiple guice-persist modules within the same injector, or even
6116 multiple injectors with persist modules withing the same JVM or web app.
6117 <p>
6118 This filter requires the Guice Servlet extension.
6119
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006120 @author Dhanji R. Prasanna (dhanji@gmail.com)]]>
6121 </doc>
6122 </class>
6123 <!-- end class com.google.inject.persist.PersistFilter -->
6124 <!-- start class com.google.inject.persist.PersistModule -->
6125 <class name="PersistModule" extends="com.google.inject.AbstractModule"
6126 abstract="true"
6127 static="false" final="false" visibility="public"
6128 deprecated="not deprecated">
6129 <constructor name="PersistModule"
6130 static="false" final="false" visibility="public"
6131 deprecated="not deprecated">
6132 </constructor>
6133 <method name="configure"
6134 abstract="false" native="false" synchronized="false"
6135 static="false" final="true" visibility="protected"
6136 deprecated="not deprecated">
6137 </method>
6138 <method name="configurePersistence"
6139 abstract="true" native="false" synchronized="false"
6140 static="false" final="false" visibility="protected"
6141 deprecated="not deprecated">
6142 </method>
6143 <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor"
6144 abstract="true" native="false" synchronized="false"
6145 static="false" final="false" visibility="protected"
6146 deprecated="not deprecated">
6147 </method>
6148 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006149 <![CDATA[Install this module to add guice-persist library support for JPA persistence
6150 providers.
6151
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006152 @author dhanji@gmail.com (Dhanji R. Prasanna)]]>
6153 </doc>
6154 </class>
6155 <!-- end class com.google.inject.persist.PersistModule -->
6156 <!-- start interface com.google.inject.persist.PersistService -->
6157 <interface name="PersistService" abstract="true"
6158 static="false" final="false" visibility="public"
6159 deprecated="not deprecated">
6160 <method name="start"
6161 abstract="true" native="false" synchronized="false"
6162 static="false" final="false" visibility="public"
6163 deprecated="not deprecated">
6164 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006165 <![CDATA[Starts the underlying persistence engine and makes guice-persist ready for
6166 use. For instance, with JPA, it creates an EntityManagerFactory and may
6167 open connection pools. This method must be called by your code prior to
6168 using any guice-persist or JPA artifacts. If already started,
6169 calling this method does nothing, if already stopped, it also does
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006170 nothing.]]>
6171 </doc>
6172 </method>
6173 <method name="stop"
6174 abstract="true" native="false" synchronized="false"
6175 static="false" final="false" visibility="public"
6176 deprecated="not deprecated">
6177 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006178 <![CDATA[Stops the underlying persistence engine. For instance, with JPA, it
6179 closes the {@code EntityManagerFactory}. If already stopped, calling this
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006180 method does nothing. If not yet started, it also does nothing.]]>
6181 </doc>
6182 </method>
6183 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006184 <![CDATA[Persistence provider service. Use this to manage the overall
6185 startup and stop of the persistence module(s).
6186
6187 TODO(dhanji): Integrate with Service API when appropriate.
6188
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006189 @author dhanji@gmail.com (Dhanji R. Prasanna)]]>
6190 </doc>
6191 </interface>
6192 <!-- end interface com.google.inject.persist.PersistService -->
6193 <!-- start class com.google.inject.persist.Transactional -->
6194 <class name="Transactional" abstract="true"
6195 static="false" final="false" visibility="public"
6196 deprecated="not deprecated">
6197 <implements name="java.lang.annotation.Annotation"/>
6198 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006199 <![CDATA[<p> Any method or class marked with this annotation will be considered for transactionality.
6200 Consult the documentation on http://code.google.com/p/google-guice for detailed semantics.
6201 Marking a method {@code @Transactional} will start a new transaction before the method
6202 executes and commit it after the method returns.
6203 <p>
6204 If the method throws an exception, the transaction will be rolled back <em>unless</em>
6205 you have specifically requested not to in the {@link #ignore()} clause.
6206 <p>
6207 Similarly, the set of exceptions that will trigger a rollback can be defined in
6208 the {@link #rollbackOn()} clause. By default, only unchecked exceptions trigger a
6209 rollback.
6210
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006211 @author Dhanji R. Prasanna (dhanji@gmail.com)]]>
6212 </doc>
6213 </class>
6214 <!-- end class com.google.inject.persist.Transactional -->
6215 <!-- start interface com.google.inject.persist.UnitOfWork -->
6216 <interface name="UnitOfWork" abstract="true"
6217 static="false" final="false" visibility="public"
6218 deprecated="not deprecated">
6219 <method name="begin"
6220 abstract="true" native="false" synchronized="false"
6221 static="false" final="false" visibility="public"
6222 deprecated="not deprecated">
6223 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006224 <![CDATA[Starts a Unit Of Work. Underneath, causes a session to the data layer to be opened. If there
6225 is already one open, the invocation will do nothing. In this way, you can define arbitrary
6226 units-of-work that nest within one another safely.
6227
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006228 Transaction semantics are not affected.]]>
6229 </doc>
6230 </method>
6231 <method name="end"
6232 abstract="true" native="false" synchronized="false"
6233 static="false" final="false" visibility="public"
6234 deprecated="not deprecated">
6235 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006236 <![CDATA[Declares an end to the current Unit of Work. Underneath, causes any open session to the data
6237 layer to close. If there is no Unit of work open, then the call returns silently. You can
6238 safely invoke end() repeatedly.
6239 <p>
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006240 Transaction semantics are not affected.]]>
6241 </doc>
6242 </method>
6243 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006244 <![CDATA[This interface is used to gain manual control over the unit of work. This is mostly to do
6245 work in non-request, non-transactional threads. Or where more fine-grained control over the unit
6246 of work is required. Starting and ending a unit of work directly corresponds to opening and
6247 closing a {@code Session}, {@code EntityManager} or {@code ObjectContainer} respectively.
6248 <p> The
6249 Unit of Work referred to by UnitOfWork will always be local to the calling thread. Be careful to
6250 end() in a finally block. Neither JPA, nor Hibernate supports threadsafe sessions (reasoning
6251 behind thread-locality of Unit of Work semantics).
6252
6253 <ul>
6254 <li>Using UnitOfWork with the PersistFilter inside a request is not recommended.</li>
6255 <li>Using UnitOfWork with session-per-txn strategy is not terribly clever either.</li>
6256 <li>Using UnitOfWork with session-per-request strategy but *outside* a request (i.e. in a
6257 background or bootstrap thread) is probably a good use case.</li>
6258 </ul>
6259
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006260 @author Dhanji R. Prasanna (dhanji@gmail com)]]>
6261 </doc>
6262 </interface>
6263 <!-- end interface com.google.inject.persist.UnitOfWork -->
6264</package>
6265<package name="com.google.inject.persist.finder">
6266 <!-- start class com.google.inject.persist.finder.DynamicFinder -->
6267 <class name="DynamicFinder" extends="java.lang.Object"
6268 abstract="false"
6269 static="false" final="true" visibility="public"
6270 deprecated="not deprecated">
6271 <constructor name="DynamicFinder" type="java.lang.reflect.Method"
6272 static="false" final="false" visibility="public"
6273 deprecated="not deprecated">
6274 </constructor>
6275 <method name="from" return="com.google.inject.persist.finder.DynamicFinder"
6276 abstract="false" native="false" synchronized="false"
6277 static="true" final="false" visibility="public"
6278 deprecated="not deprecated">
6279 <param name="method" type="java.lang.reflect.Method"/>
6280 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006281 <![CDATA[Returns some metadata if the method is annotated {@code @Finder} or null.
6282
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006283 @param method a method you want to test as a dynamic finder]]>
6284 </doc>
6285 </method>
6286 <method name="metadata" return="com.google.inject.persist.finder.Finder"
6287 abstract="false" native="false" synchronized="false"
6288 static="false" final="false" visibility="public"
6289 deprecated="not deprecated">
6290 </method>
6291 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006292 <![CDATA[Utility that helps you introspect dynamic finder methods.
6293
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006294 @author dhanji@gmail.com (Dhanji R. Prasanna)]]>
6295 </doc>
6296 </class>
6297 <!-- end class com.google.inject.persist.finder.DynamicFinder -->
6298 <!-- start class com.google.inject.persist.finder.Finder -->
6299 <class name="Finder" abstract="true"
6300 static="false" final="false" visibility="public"
6301 deprecated="not deprecated">
6302 <implements name="java.lang.annotation.Annotation"/>
6303 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006304 <![CDATA[Marks a method stub as a dynamic finder. The method is intercepted and replaced with the
6305 specified JPAQL query. Provides result auto-boxing and automatic parameter binding.
6306
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006307 @author Dhanji R. Prasanna (dhanji@gmail.com)]]>
6308 </doc>
6309 </class>
6310 <!-- end class com.google.inject.persist.finder.Finder -->
6311 <!-- start class com.google.inject.persist.finder.FirstResult -->
6312 <class name="FirstResult" abstract="true"
6313 static="false" final="false" visibility="public"
6314 deprecated="not deprecated">
6315 <implements name="java.lang.annotation.Annotation"/>
6316 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006317 <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in
6318 the index of the first result in the result set you are interested in.
6319 Useful for paging result sets. Complemented by {@link MaxResults}.
6320
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006321 @author Dhanji R. Prasanna (dhanji@gmail.com)]]>
6322 </doc>
6323 </class>
6324 <!-- end class com.google.inject.persist.finder.FirstResult -->
6325 <!-- start class com.google.inject.persist.finder.MaxResults -->
6326 <class name="MaxResults" abstract="true"
6327 static="false" final="false" visibility="public"
6328 deprecated="not deprecated">
6329 <implements name="java.lang.annotation.Annotation"/>
6330 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006331 <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in
6332 the maximum size of returned result window. Usefule for paging result sets.
6333 Complement of {@link FirstResult}.
6334
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006335 @author Dhanji R. Prasanna (dhanji@gmail.com)]]>
6336 </doc>
6337 </class>
6338 <!-- end class com.google.inject.persist.finder.MaxResults -->
6339</package>
6340<package name="com.google.inject.persist.jpa">
6341 <!-- start class com.google.inject.persist.jpa.JpaPersistModule -->
6342 <class name="JpaPersistModule" extends="com.google.inject.persist.PersistModule"
6343 abstract="false"
6344 static="false" final="true" visibility="public"
6345 deprecated="not deprecated">
6346 <constructor name="JpaPersistModule" type="java.lang.String"
6347 static="false" final="false" visibility="public"
6348 deprecated="not deprecated">
6349 </constructor>
6350 <method name="configurePersistence"
6351 abstract="false" native="false" synchronized="false"
6352 static="false" final="false" visibility="protected"
6353 deprecated="not deprecated">
6354 </method>
6355 <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor"
6356 abstract="false" native="false" synchronized="false"
6357 static="false" final="false" visibility="protected"
6358 deprecated="not deprecated">
6359 </method>
6360 <method name="properties" return="com.google.inject.persist.jpa.JpaPersistModule"
6361 abstract="false" native="false" synchronized="false"
6362 static="false" final="false" visibility="public"
6363 deprecated="not deprecated">
6364 <param name="properties" type="java.util.Properties"/>
6365 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006366 <![CDATA[Configures the JPA persistence provider with a set of properties.
6367
6368 @param properties A set of name value pairs that configure a JPA persistence
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006369 provider as per the specification.]]>
6370 </doc>
6371 </method>
6372 <method name="addFinder" return="com.google.inject.persist.jpa.JpaPersistModule"
6373 abstract="false" native="false" synchronized="false"
6374 static="false" final="false" visibility="public"
6375 deprecated="not deprecated">
6376 <param name="iface" type="java.lang.Class&lt;T&gt;"/>
6377 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006378 <![CDATA[Adds an interface to this module to use as a dynamic finder.
6379
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006380 @param iface Any interface type whose methods are all dynamic finders.]]>
6381 </doc>
6382 </method>
6383 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006384 <![CDATA[JPA provider for guice persist.
6385
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006386 @author dhanji@gmail.com (Dhanji R. Prasanna)]]>
6387 </doc>
6388 </class>
6389 <!-- end class com.google.inject.persist.jpa.JpaPersistModule -->
6390</package>
6391<package name="com.google.inject.servlet">
6392 <!-- start class com.google.inject.servlet.GuiceFilter -->
6393 <class name="GuiceFilter" extends="java.lang.Object"
6394 abstract="false"
6395 static="false" final="false" visibility="public"
6396 deprecated="not deprecated">
6397 <constructor name="GuiceFilter"
6398 static="false" final="false" visibility="public"
6399 deprecated="not deprecated">
6400 </constructor>
6401 <method name="doFilter"
6402 abstract="false" native="false" synchronized="false"
6403 static="false" final="false" visibility="public"
6404 deprecated="not deprecated">
6405 <param name="servletRequest" type="ServletRequest"/>
6406 <param name="servletResponse" type="ServletResponse"/>
6407 <param name="filterChain" type="FilterChain"/>
6408 <exception name="IOException" type="java.io.IOException"/>
6409 <exception name="ServletException" type="ServletException"/>
6410 </method>
6411 <method name="init"
6412 abstract="false" native="false" synchronized="false"
6413 static="false" final="false" visibility="public"
6414 deprecated="not deprecated">
6415 <param name="filterConfig" type="FilterConfig"/>
6416 <exception name="ServletException" type="ServletException"/>
6417 </method>
6418 <method name="destroy"
6419 abstract="false" native="false" synchronized="false"
6420 static="false" final="false" visibility="public"
6421 deprecated="not deprecated">
6422 </method>
6423 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006424 <![CDATA[<p>
6425 Apply this filter in web.xml above all other filters (typically), to all requests where you plan
6426 to use servlet scopes. This is also needed in order to dispatch requests to injectable filters
6427 and servlets:
6428 <pre>
6429 &lt;filter&gt;
6430 &lt;filter-name&gt;guiceFilter&lt;/filter-name&gt;
6431 &lt;filter-class&gt;<b>com.google.inject.servlet.GuiceFilter</b>&lt;/filter-class&gt;
6432 &lt;/filter&gt;
6433
6434 &lt;filter-mapping&gt;
6435 &lt;filter-name&gt;guiceFilter&lt;/filter-name&gt;
6436 &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
6437 &lt;/filter-mapping&gt;
6438 </pre>
6439
6440 This filter must appear before every filter that makes use of Guice injection or servlet
6441 scopes functionality. Typically, you will only register this filter in web.xml and register
6442 any other filters (and servlets) using a {@link ServletModule}.
6443
6444 @author crazybob@google.com (Bob Lee)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006445 @author dhanji@gmail.com (Dhanji R. Prasanna)]]>
6446 </doc>
6447 </class>
6448 <!-- end class com.google.inject.servlet.GuiceFilter -->
6449 <!-- start class com.google.inject.servlet.GuiceServletContextListener -->
6450 <class name="GuiceServletContextListener" extends="java.lang.Object"
6451 abstract="true"
6452 static="false" final="false" visibility="public"
6453 deprecated="not deprecated">
6454 <constructor name="GuiceServletContextListener"
6455 static="false" final="false" visibility="public"
6456 deprecated="not deprecated">
6457 </constructor>
6458 <method name="contextInitialized"
6459 abstract="false" native="false" synchronized="false"
6460 static="false" final="false" visibility="public"
6461 deprecated="not deprecated">
6462 <param name="servletContextEvent" type="ServletContextEvent"/>
6463 </method>
6464 <method name="contextDestroyed"
6465 abstract="false" native="false" synchronized="false"
6466 static="false" final="false" visibility="public"
6467 deprecated="not deprecated">
6468 <param name="servletContextEvent" type="ServletContextEvent"/>
6469 </method>
6470 <method name="getInjector" return="com.google.inject.Injector"
6471 abstract="true" native="false" synchronized="false"
6472 static="false" final="false" visibility="protected"
6473 deprecated="not deprecated">
6474 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006475 <![CDATA[Override this method to create (or otherwise obtain a reference to) your
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006476 injector.]]>
6477 </doc>
6478 </method>
6479 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006480 <![CDATA[As of Guice 2.0 you can still use (your subclasses of) {@code GuiceServletContextListener}
6481 class as a logical place to create and configure your injector. This will ensure the injector
6482 is created when the web application is deployed.
6483
6484 @author Kevin Bourrillion (kevinb@google.com)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006485 @since 2.0]]>
6486 </doc>
6487 </class>
6488 <!-- end class com.google.inject.servlet.GuiceServletContextListener -->
6489 <!-- start interface com.google.inject.servlet.InstanceFilterBinding -->
6490 <interface name="InstanceFilterBinding" abstract="true"
6491 static="false" final="false" visibility="public"
6492 deprecated="not deprecated">
6493 <implements name="com.google.inject.servlet.ServletModuleBinding"/>
6494 <method name="getFilterInstance" return="Filter"
6495 abstract="true" native="false" synchronized="false"
6496 static="false" final="false" visibility="public"
6497 deprecated="not deprecated">
6498 <doc>
6499 <![CDATA[Returns the filter instance that will be used.]]>
6500 </doc>
6501 </method>
6502 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006503 <![CDATA[A binding to a single instance of a filter.
6504
6505 @author sameb@google.com
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006506 @since 3.0]]>
6507 </doc>
6508 </interface>
6509 <!-- end interface com.google.inject.servlet.InstanceFilterBinding -->
6510 <!-- start interface com.google.inject.servlet.InstanceServletBinding -->
6511 <interface name="InstanceServletBinding" abstract="true"
6512 static="false" final="false" visibility="public"
6513 deprecated="not deprecated">
6514 <implements name="com.google.inject.servlet.ServletModuleBinding"/>
6515 <method name="getServletInstance" return="HttpServlet"
6516 abstract="true" native="false" synchronized="false"
6517 static="false" final="false" visibility="public"
6518 deprecated="not deprecated">
6519 <doc>
6520 <![CDATA[Returns the servlet instance that will be used.]]>
6521 </doc>
6522 </method>
6523 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006524 <![CDATA[A binding to a single instance of a servlet.
6525
6526 @author sameb@google.com
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006527 @since 3.0]]>
6528 </doc>
6529 </interface>
6530 <!-- end interface com.google.inject.servlet.InstanceServletBinding -->
6531 <!-- start interface com.google.inject.servlet.LinkedFilterBinding -->
6532 <interface name="LinkedFilterBinding" abstract="true"
6533 static="false" final="false" visibility="public"
6534 deprecated="not deprecated">
6535 <implements name="com.google.inject.servlet.ServletModuleBinding"/>
6536 <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends Filter&gt;"
6537 abstract="true" native="false" synchronized="false"
6538 static="false" final="false" visibility="public"
6539 deprecated="not deprecated">
6540 <doc>
6541 <![CDATA[Returns the key used to lookup the filter instance.]]>
6542 </doc>
6543 </method>
6544 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006545 <![CDATA[A linked binding to a filter.
6546
6547 @author sameb@google.com
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006548 @since 3.0]]>
6549 </doc>
6550 </interface>
6551 <!-- end interface com.google.inject.servlet.LinkedFilterBinding -->
6552 <!-- start interface com.google.inject.servlet.LinkedServletBinding -->
6553 <interface name="LinkedServletBinding" abstract="true"
6554 static="false" final="false" visibility="public"
6555 deprecated="not deprecated">
6556 <implements name="com.google.inject.servlet.ServletModuleBinding"/>
6557 <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends HttpServlet&gt;"
6558 abstract="true" native="false" synchronized="false"
6559 static="false" final="false" visibility="public"
6560 deprecated="not deprecated">
6561 <doc>
6562 <![CDATA[Returns the key used to lookup the servlet instance.]]>
6563 </doc>
6564 </method>
6565 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006566 <![CDATA[A linked binding to a servlet.
6567
6568 @author sameb@google.com
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006569 @since 3.0]]>
6570 </doc>
6571 </interface>
6572 <!-- end interface com.google.inject.servlet.LinkedServletBinding -->
6573 <!-- start class com.google.inject.servlet.RequestParameters -->
6574 <class name="RequestParameters" abstract="true"
6575 static="false" final="false" visibility="public"
6576 deprecated="not deprecated">
6577 <implements name="java.lang.annotation.Annotation"/>
6578 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006579 <![CDATA[Apply this to field or parameters of type {@code Map<String, String[]>}
6580 when you want the HTTP request parameter map to be injected.
6581
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006582 @author crazybob@google.com (Bob Lee)]]>
6583 </doc>
6584 </class>
6585 <!-- end class com.google.inject.servlet.RequestParameters -->
6586 <!-- start class com.google.inject.servlet.RequestScoped -->
6587 <class name="RequestScoped" abstract="true"
6588 static="false" final="false" visibility="public"
6589 deprecated="not deprecated">
6590 <implements name="java.lang.annotation.Annotation"/>
6591 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006592 <![CDATA[Apply this to implementation classes when you want one instance per request.
6593
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006594 @author crazybob@google.com (Bob Lee)]]>
6595 </doc>
6596 </class>
6597 <!-- end class com.google.inject.servlet.RequestScoped -->
6598 <!-- start class com.google.inject.servlet.ScopingException -->
6599 <class name="ScopingException" extends="java.lang.IllegalStateException"
6600 abstract="false"
6601 static="false" final="true" visibility="public"
6602 deprecated="not deprecated">
6603 <constructor name="ScopingException" type="java.lang.String"
6604 static="false" final="false" visibility="public"
6605 deprecated="not deprecated">
6606 </constructor>
6607 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006608 <![CDATA[Exception thrown when there was a failure entering request scope.
6609
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006610 @author Chris Nokleberg]]>
6611 </doc>
6612 </class>
6613 <!-- end class com.google.inject.servlet.ScopingException -->
6614 <!-- start class com.google.inject.servlet.ScopingOnly -->
6615 <class name="ScopingOnly" abstract="true"
6616 static="false" final="false" visibility="public"
6617 deprecated="not deprecated">
6618 <implements name="java.lang.annotation.Annotation"/>
6619 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006620 <![CDATA[Annotates a {@link GuiceFilter} that provides scope functionality, but
6621 doesn't dispatch to {@link ServletModule} bound servlets or filters.
6622
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006623 @author iqshum@google.com (Isaac Shum)]]>
6624 </doc>
6625 </class>
6626 <!-- end class com.google.inject.servlet.ScopingOnly -->
6627 <!-- start class com.google.inject.servlet.ServletModule -->
6628 <class name="ServletModule" extends="com.google.inject.AbstractModule"
6629 abstract="false"
6630 static="false" final="false" visibility="public"
6631 deprecated="not deprecated">
6632 <constructor name="ServletModule"
6633 static="false" final="false" visibility="public"
6634 deprecated="not deprecated">
6635 </constructor>
6636 <method name="configure"
6637 abstract="false" native="false" synchronized="false"
6638 static="false" final="true" visibility="protected"
6639 deprecated="not deprecated">
6640 </method>
6641 <method name="configureServlets"
6642 abstract="false" native="false" synchronized="false"
6643 static="false" final="false" visibility="protected"
6644 deprecated="not deprecated">
6645 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006646 <![CDATA[<h3>Servlet Mapping EDSL</h3>
6647
6648 <p> Part of the EDSL builder language for configuring servlets
6649 and filters with guice-servlet. Think of this as an in-code replacement for web.xml.
6650 Filters and servlets are configured here using simple java method calls. Here is a typical
6651 example of registering a filter when creating your Guice injector:
6652
6653 <pre>
6654 Guice.createInjector(..., new ServletModule() {
6655
6656 {@literal @}Override
6657 protected void configureServlets() {
6658 <b>serve("*.html").with(MyServlet.class)</b>
6659 }
6660 }
6661 </pre>
6662
6663 This registers a servlet (subclass of {@code HttpServlet}) called {@code MyServlet} to service
6664 any web pages ending in {@code .html}. You can also use a path-style syntax to register
6665 servlets:
6666
6667 <pre>
6668 <b>serve("/my/*").with(MyServlet.class)</b>
6669 </pre>
6670
6671 Every servlet (or filter) is required to be a singleton. If you cannot annotate the class
6672 directly, you should add a separate {@code bind(..).in(Singleton.class)} rule elsewhere in
6673 your module. Mapping a servlet that is bound under any other scope is an error.
6674
6675 <p>
6676 <h4>Dispatch Order</h4>
6677 You are free to register as many servlets and filters as you like this way. They will
6678 be compared and dispatched in the order in which the filter methods are called:
6679
6680 <pre>
6681
6682 Guice.createInjector(..., new ServletModule() {
6683
6684 {@literal @}Override
6685 protected void configureServlets() {
6686 filter("/*").through(MyFilter.class);
6687 filter("*.css").through(MyCssFilter.class);
6688 filter("*.jpg").through(new MyJpgFilter());
6689 // etc..
6690
6691 serve("*.html").with(MyServlet.class);
6692 serve("/my/*").with(MyServlet.class);
6693 serve("*.jpg").with(new MyServlet());
6694 // etc..
6695 }
6696 }
6697 </pre>
6698 This will traverse down the list of rules in lexical order. For example, a url
6699 "{@code /my/file.js}" (after it runs through the matching filters) will first
6700 be compared against the servlet mapping:
6701
6702 <pre>
6703 serve("*.html").with(MyServlet.class);
6704 </pre>
6705 And failing that, it will descend to the next servlet mapping:
6706
6707 <pre>
6708 serve("/my/*").with(MyServlet.class);
6709 </pre>
6710
6711 Since this rule matches, Guice Servlet will dispatch to {@code MyServlet}. These
6712 two mapping rules can also be written in more compact form using varargs syntax:
6713
6714 <pre>
6715 serve(<b>"*.html", "/my/*"</b>).with(MyServlet.class);
6716 </pre>
6717
6718 This way you can map several URI patterns to the same servlet. A similar syntax is
6719 also available for filter mappings.
6720
6721 <p>
6722 <h4>Regular Expressions</h4>
6723 You can also map servlets (or filters) to URIs using regular expressions:
6724 <pre>
6725 <b>serveRegex("(.)*ajax(.)*").with(MyAjaxServlet.class)</b>
6726 </pre>
6727
6728 This will map any URI containing the text "ajax" in it to {@code MyAjaxServlet}. Such as:
6729 <ul>
6730 <li>http://www.google.com/ajax.html</li>
6731 <li>http://www.google.com/content/ajax/index</li>
6732 <li>http://www.google.com/it/is_totally_ajaxian</li>
6733 </ul>
6734
6735
6736 <h3>Initialization Parameters</h3>
6737
6738 Servlets (and filters) allow you to pass in init params
6739 using the {@code <init-param>} tag in web.xml. You can similarly pass in parameters to
6740 Servlets and filters registered in Guice-servlet using a {@link java.util.Map} of parameter
6741 name/value pairs. For example, to initialize {@code MyServlet} with two parameters
6742 ({@code name="Dhanji", site="google.com"}) you could write:
6743
6744 <pre>
6745 Map&lt;String, String&gt; params = new HashMap&lt;String, String&gt;();
6746 params.put("name", "Dhanji");
6747 params.put("site", "google.com");
6748
6749 ...
6750 serve("/*").with(MyServlet.class, <b>params</b>)
6751 </pre>
6752
6753 <p>
6754 <h3>Binding Keys</h3>
6755
6756 You can also bind keys rather than classes. This lets you hide
6757 implementations with package-local visbility and expose them using
6758 only a Guice module and an annotation:
6759
6760 <pre>
6761 ...
6762 filter("/*").through(<b>Key.get(Filter.class, Fave.class)</b>);
6763 </pre>
6764
6765 Where {@code Filter.class} refers to the Servlet API interface and {@code Fave.class} is a
6766 custom binding annotation. Elsewhere (in one of your own modules) you can bind this
6767 filter's implementation:
6768
6769 <pre>
6770 bind(Filter.class)<b>.annotatedWith(Fave.class)</b>.to(MyFilterImpl.class);
6771 </pre>
6772
6773 See {@link com.google.inject.Binder} for more information on binding syntax.
6774
6775 <p>
6776 <h3>Multiple Modules</h3>
6777
6778 It is sometimes useful to capture servlet and filter mappings from multiple different
6779 modules. This is essential if you want to package and offer drop-in Guice plugins that
6780 provide servlet functionality.
6781
6782 <p>
6783 Guice Servlet allows you to register several instances of {@code ServletModule} to your
6784 injector. The order in which these modules are installed determines the dispatch order
6785 of filters and the precedence order of servlets. For example, if you had two servlet modules,
6786 {@code RpcModule} and {@code WebServiceModule} and they each contained a filter that mapped
6787 to the same URI pattern, {@code "/*"}:
6788
6789 <p>
6790 In {@code RpcModule}:
6791 <pre>
6792 filter("/*").through(RpcFilter.class);
6793 </pre>
6794
6795 In {@code WebServiceModule}:
6796 <pre>
6797 filter("/*").through(WebServiceFilter.class);
6798 </pre>
6799
6800 Then the order in which these filters are dispatched is determined by the order in which
6801 the modules are installed:
6802
6803 <pre>
6804 <b>install(new WebServiceModule());</b>
6805 install(new RpcModule());
6806 </pre>
6807
6808 In the case shown above {@code WebServiceFilter} will run first.
6809
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006810 @since 2.0]]>
6811 </doc>
6812 </method>
6813 <method name="filter" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder"
6814 abstract="false" native="false" synchronized="false"
6815 static="false" final="true" visibility="protected"
6816 deprecated="not deprecated">
6817 <param name="urlPattern" type="java.lang.String"/>
6818 <param name="morePatterns" type="java.lang.String[]"/>
6819 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006820 <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006821 @since 2.0]]>
6822 </doc>
6823 </method>
6824 <method name="filterRegex" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder"
6825 abstract="false" native="false" synchronized="false"
6826 static="false" final="true" visibility="protected"
6827 deprecated="not deprecated">
6828 <param name="regex" type="java.lang.String"/>
6829 <param name="regexes" type="java.lang.String[]"/>
6830 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006831 <![CDATA[@param regex Any Java-style regular expression.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006832 @since 2.0]]>
6833 </doc>
6834 </method>
6835 <method name="serve" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder"
6836 abstract="false" native="false" synchronized="false"
6837 static="false" final="true" visibility="protected"
6838 deprecated="not deprecated">
6839 <param name="urlPattern" type="java.lang.String"/>
6840 <param name="morePatterns" type="java.lang.String[]"/>
6841 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006842 <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006843 @since 2.0]]>
6844 </doc>
6845 </method>
6846 <method name="serveRegex" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder"
6847 abstract="false" native="false" synchronized="false"
6848 static="false" final="true" visibility="protected"
6849 deprecated="not deprecated">
6850 <param name="regex" type="java.lang.String"/>
6851 <param name="regexes" type="java.lang.String[]"/>
6852 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006853 <![CDATA[@param regex Any Java-style regular expression.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006854 @since 2.0]]>
6855 </doc>
6856 </method>
6857 <method name="getServletContext" return="ServletContext"
6858 abstract="false" native="false" synchronized="false"
6859 static="false" final="true" visibility="protected"
6860 deprecated="not deprecated">
6861 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006862 <![CDATA[This method only works if you are using the {@linkplain GuiceServletContextListener} to
6863 create your injector. Otherwise, it returns null.
6864 @return The current servlet context.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006865 @since 3.0]]>
6866 </doc>
6867 </method>
6868 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006869 <![CDATA[Configures the servlet scopes and creates bindings for the servlet API
6870 objects so you can inject the request, response, session, etc.
6871
6872 <p>
6873 You should subclass this module to register servlets and
6874 filters in the {@link #configureServlets()} method.
6875
6876 @author crazybob@google.com (Bob Lee)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006877 @author dhanji@gmail.com (Dhanji R. Prasanna)]]>
6878 </doc>
6879 </class>
6880 <!-- end class com.google.inject.servlet.ServletModule -->
6881 <!-- start interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder -->
6882 <interface name="ServletModule.FilterKeyBindingBuilder" abstract="true"
6883 static="true" final="false" visibility="public"
6884 deprecated="not deprecated">
6885 <method name="through"
6886 abstract="true" native="false" synchronized="false"
6887 static="false" final="false" visibility="public"
6888 deprecated="not deprecated">
6889 <param name="filterKey" type="java.lang.Class&lt;? extends Filter&gt;"/>
6890 </method>
6891 <method name="through"
6892 abstract="true" native="false" synchronized="false"
6893 static="false" final="false" visibility="public"
6894 deprecated="not deprecated">
6895 <param name="filterKey" type="com.google.inject.Key&lt;? extends Filter&gt;"/>
6896 </method>
6897 <method name="through"
6898 abstract="true" native="false" synchronized="false"
6899 static="false" final="false" visibility="public"
6900 deprecated="not deprecated">
6901 <param name="filter" type="Filter"/>
6902 <doc>
6903 <![CDATA[@since 3.0]]>
6904 </doc>
6905 </method>
6906 <method name="through"
6907 abstract="true" native="false" synchronized="false"
6908 static="false" final="false" visibility="public"
6909 deprecated="not deprecated">
6910 <param name="filterKey" type="java.lang.Class&lt;? extends Filter&gt;"/>
6911 <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
6912 </method>
6913 <method name="through"
6914 abstract="true" native="false" synchronized="false"
6915 static="false" final="false" visibility="public"
6916 deprecated="not deprecated">
6917 <param name="filterKey" type="com.google.inject.Key&lt;? extends Filter&gt;"/>
6918 <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
6919 </method>
6920 <method name="through"
6921 abstract="true" native="false" synchronized="false"
6922 static="false" final="false" visibility="public"
6923 deprecated="not deprecated">
6924 <param name="filter" type="Filter"/>
6925 <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
6926 <doc>
6927 <![CDATA[@since 3.0]]>
6928 </doc>
6929 </method>
6930 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006931 <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()}
6932
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006933 @since 2.0]]>
6934 </doc>
6935 </interface>
6936 <!-- end interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder -->
6937 <!-- start interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder -->
6938 <interface name="ServletModule.ServletKeyBindingBuilder" abstract="true"
6939 static="true" final="false" visibility="public"
6940 deprecated="not deprecated">
6941 <method name="with"
6942 abstract="true" native="false" synchronized="false"
6943 static="false" final="false" visibility="public"
6944 deprecated="not deprecated">
6945 <param name="servletKey" type="java.lang.Class&lt;? extends HttpServlet&gt;"/>
6946 </method>
6947 <method name="with"
6948 abstract="true" native="false" synchronized="false"
6949 static="false" final="false" visibility="public"
6950 deprecated="not deprecated">
6951 <param name="servletKey" type="com.google.inject.Key&lt;? extends HttpServlet&gt;"/>
6952 </method>
6953 <method name="with"
6954 abstract="true" native="false" synchronized="false"
6955 static="false" final="false" visibility="public"
6956 deprecated="not deprecated">
6957 <param name="servlet" type="HttpServlet"/>
6958 <doc>
6959 <![CDATA[@since 3.0]]>
6960 </doc>
6961 </method>
6962 <method name="with"
6963 abstract="true" native="false" synchronized="false"
6964 static="false" final="false" visibility="public"
6965 deprecated="not deprecated">
6966 <param name="servletKey" type="java.lang.Class&lt;? extends HttpServlet&gt;"/>
6967 <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
6968 </method>
6969 <method name="with"
6970 abstract="true" native="false" synchronized="false"
6971 static="false" final="false" visibility="public"
6972 deprecated="not deprecated">
6973 <param name="servletKey" type="com.google.inject.Key&lt;? extends HttpServlet&gt;"/>
6974 <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
6975 </method>
6976 <method name="with"
6977 abstract="true" native="false" synchronized="false"
6978 static="false" final="false" visibility="public"
6979 deprecated="not deprecated">
6980 <param name="servlet" type="HttpServlet"/>
6981 <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
6982 <doc>
6983 <![CDATA[@since 3.0]]>
6984 </doc>
6985 </method>
6986 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07006987 <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()}
6988
Christian Edward Gruber509e3542014-03-20 20:37:34 -07006989 @since 2.0]]>
6990 </doc>
6991 </interface>
6992 <!-- end interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder -->
6993 <!-- start interface com.google.inject.servlet.ServletModuleBinding -->
6994 <interface name="ServletModuleBinding" abstract="true"
6995 static="false" final="false" visibility="public"
6996 deprecated="not deprecated">
6997 <method name="getUriPatternType" return="com.google.inject.servlet.UriPatternType"
6998 abstract="true" native="false" synchronized="false"
6999 static="false" final="false" visibility="public"
7000 deprecated="not deprecated">
7001 <doc>
7002 <![CDATA[Returns the pattern type that this binding was created with.]]>
7003 </doc>
7004 </method>
7005 <method name="getPattern" return="java.lang.String"
7006 abstract="true" native="false" synchronized="false"
7007 static="false" final="false" visibility="public"
7008 deprecated="not deprecated">
7009 <doc>
7010 <![CDATA[Returns the pattern used to match against the binding.]]>
7011 </doc>
7012 </method>
7013 <method name="getInitParams" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
7014 abstract="true" native="false" synchronized="false"
7015 static="false" final="false" visibility="public"
7016 deprecated="not deprecated">
7017 <doc>
7018 <![CDATA[Returns any context params supplied when creating the binding.]]>
7019 </doc>
7020 </method>
7021 <method name="matchesUri" return="boolean"
7022 abstract="true" native="false" synchronized="false"
7023 static="false" final="false" visibility="public"
7024 deprecated="not deprecated">
7025 <param name="uri" type="java.lang.String"/>
7026 <doc>
7027 <![CDATA[Returns true if the given URI will match this binding.]]>
7028 </doc>
7029 </method>
7030 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007031 <![CDATA[A binding created by {@link ServletModule}.
7032
7033 @author sameb@google.com (Sam Berlin)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007034 @since 3.0]]>
7035 </doc>
7036 </interface>
7037 <!-- end interface com.google.inject.servlet.ServletModuleBinding -->
7038 <!-- start interface com.google.inject.servlet.ServletModuleTargetVisitor -->
7039 <interface name="ServletModuleTargetVisitor" abstract="true"
7040 static="false" final="false" visibility="public"
7041 deprecated="not deprecated">
7042 <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
7043 <method name="visit" return="V"
7044 abstract="true" native="false" synchronized="false"
7045 static="false" final="false" visibility="public"
7046 deprecated="not deprecated">
7047 <param name="binding" type="com.google.inject.servlet.LinkedFilterBinding"/>
7048 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007049 <![CDATA[Visits a filter binding created by {@link ServletModule#filter}, where
7050 {@link FilterKeyBindingBuilder#through} is called with a Class or Key.
7051
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007052 If multiple patterns were specified, this will be called multiple times.]]>
7053 </doc>
7054 </method>
7055 <method name="visit" return="V"
7056 abstract="true" native="false" synchronized="false"
7057 static="false" final="false" visibility="public"
7058 deprecated="not deprecated">
7059 <param name="binding" type="com.google.inject.servlet.InstanceFilterBinding"/>
7060 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007061 <![CDATA[Visits a filter binding created by {@link ServletModule#filter} where
7062 {@link FilterKeyBindingBuilder#through} is called with a {@link Filter}.
7063
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007064 If multiple patterns were specified, this will be called multiple times.]]>
7065 </doc>
7066 </method>
7067 <method name="visit" return="V"
7068 abstract="true" native="false" synchronized="false"
7069 static="false" final="false" visibility="public"
7070 deprecated="not deprecated">
7071 <param name="binding" type="com.google.inject.servlet.LinkedServletBinding"/>
7072 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007073 <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where
7074 {@link ServletKeyBindingBuilder#with}, is called with a Class or Key.
7075
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007076 If multiple patterns were specified, this will be called multiple times.]]>
7077 </doc>
7078 </method>
7079 <method name="visit" return="V"
7080 abstract="true" native="false" synchronized="false"
7081 static="false" final="false" visibility="public"
7082 deprecated="not deprecated">
7083 <param name="binding" type="com.google.inject.servlet.InstanceServletBinding"/>
7084 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007085 <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where
7086 {@link ServletKeyBindingBuilder#with}, is called with an {@link HttpServlet}.
7087
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007088 If multiple patterns were specified, this will be called multiple times.]]>
7089 </doc>
7090 </method>
7091 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007092 <![CDATA[A visitor for the servlet extension.
7093
7094 If your {@link BindingTargetVisitor} implements this interface, bindings created by using
7095 {@link ServletModule} will be visited through this interface.
7096
7097 @since 3.0
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007098 @author sameb@google.com (Sam Berlin)]]>
7099 </doc>
7100 </interface>
7101 <!-- end interface com.google.inject.servlet.ServletModuleTargetVisitor -->
7102 <!-- start class com.google.inject.servlet.ServletScopes -->
7103 <class name="ServletScopes" extends="java.lang.Object"
7104 abstract="false"
7105 static="false" final="false" visibility="public"
7106 deprecated="not deprecated">
7107 <method name="continueRequest" return="java.util.concurrent.Callable&lt;T&gt;"
7108 abstract="false" native="false" synchronized="false"
7109 static="true" final="false" visibility="public"
7110 deprecated="not deprecated">
7111 <param name="callable" type="java.util.concurrent.Callable&lt;T&gt;"/>
7112 <param name="seedMap" type="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, java.lang.Object&gt;"/>
7113 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007114 <![CDATA[Wraps the given callable in a contextual callable that "continues" the
7115 HTTP request in another thread. This acts as a way of transporting
7116 request context data from the request processing thread to to worker
7117 threads.
7118 <p>
7119 There are some limitations:
7120 <ul>
7121 <li>Derived objects (i.e. anything marked @RequestScoped will not be
7122 transported.</li>
7123 <li>State changes to the HttpServletRequest after this method is called
7124 will not be seen in the continued thread.</li>
7125 <li>Only the HttpServletRequest, ServletContext and request parameter
7126 map are available in the continued thread. The response and session
7127 are not available.</li>
7128 </ul>
7129
7130 <p>The returned callable will throw a {@link ScopingException} when called
7131 if the HTTP request scope is still active on the current thread.
7132
7133 @param callable code to be executed in another thread, which depends on
7134 the request scope.
7135 @param seedMap the initial set of scoped instances for Guice to seed the
7136 request scope with. To seed a key with null, use {@code null} as
7137 the value.
7138 @return a callable that will invoke the given callable, making the request
7139 context available to it.
7140 @throws OutOfScopeException if this method is called from a non-request
7141 thread, or if the request has completed.
7142
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007143 @since 3.0]]>
7144 </doc>
7145 </method>
7146 <method name="transferRequest" return="java.util.concurrent.Callable&lt;T&gt;"
7147 abstract="false" native="false" synchronized="false"
7148 static="true" final="false" visibility="public"
7149 deprecated="not deprecated">
7150 <param name="callable" type="java.util.concurrent.Callable&lt;T&gt;"/>
7151 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007152 <![CDATA[Wraps the given callable in a contextual callable that "transfers" the
7153 request to another thread. This acts as a way of transporting
7154 request context data from the current thread to a future thread.
7155
7156 <p>As opposed to {@link #continueRequest}, this method propagates all
7157 existing scoped objects. The primary use case is in server implementations
7158 where you can detach the request processing thread while waiting for data,
7159 and reattach to a different thread to finish processing at a later time.
7160
7161 <p>Because {@code HttpServletRequest} objects are not typically
7162 thread-safe, the callable returned by this method must not be run on a
7163 different thread until the current request scope has terminated. In other
7164 words, do not use this method to propagate the current request scope to
7165 worker threads that may run concurrently with the current thread.
7166
7167 <p>The returned callable will throw a {@link ScopingException} when called
7168 if the request scope being transferred is still active on a different
7169 thread.
7170
7171 @param callable code to be executed in another thread, which depends on
7172 the request scope.
7173 @return a callable that will invoke the given callable, making the request
7174 context available to it.
7175 @throws OutOfScopeException if this method is called from a non-request
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007176 thread, or if the request has completed.]]>
7177 </doc>
7178 </method>
7179 <method name="isRequestScoped" return="boolean"
7180 abstract="false" native="false" synchronized="false"
7181 static="true" final="false" visibility="public"
7182 deprecated="not deprecated">
7183 <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
7184 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007185 <![CDATA[Returns true if {@code binding} is request-scoped. If the binding is a
7186 {@link com.google.inject.spi.LinkedKeyBinding linked key binding} and
7187 belongs to an injector (i. e. it was retrieved via
7188 {@link Injector#getBinding Injector.getBinding()}), then this method will
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007189 also return true if the target binding is request-scoped.]]>
7190 </doc>
7191 </method>
7192 <method name="scopeRequest" return="java.util.concurrent.Callable&lt;T&gt;"
7193 abstract="false" native="false" synchronized="false"
7194 static="true" final="false" visibility="public"
7195 deprecated="not deprecated">
7196 <param name="callable" type="java.util.concurrent.Callable&lt;T&gt;"/>
7197 <param name="seedMap" type="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, java.lang.Object&gt;"/>
7198 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007199 <![CDATA[Scopes the given callable inside a request scope. This is not the same
7200 as the HTTP request scope, but is used if no HTTP request scope is in
7201 progress. In this way, keys can be scoped as @RequestScoped and exist
7202 in non-HTTP requests (for example: RPC requests) as well as in HTTP
7203 request threads.
7204
7205 <p>The returned callable will throw a {@link ScopingException} when called
7206 if there is a request scope already active on the current thread.
7207
7208 @param callable code to be executed which depends on the request scope.
7209 Typically in another thread, but not necessarily so.
7210 @param seedMap the initial set of scoped instances for Guice to seed the
7211 request scope with. To seed a key with null, use {@code null} as
7212 the value.
7213 @return a callable that when called will run inside the a request scope
7214 that exposes the instances in the {@code seedMap} as scoped keys.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007215 @since 3.0]]>
7216 </doc>
7217 </method>
7218 <field name="REQUEST" type="com.google.inject.Scope"
7219 transient="false" volatile="false"
7220 static="true" final="true" visibility="public"
7221 deprecated="not deprecated">
7222 <doc>
7223 <![CDATA[HTTP servlet request scope.]]>
7224 </doc>
7225 </field>
7226 <field name="SESSION" type="com.google.inject.Scope"
7227 transient="false" volatile="false"
7228 static="true" final="true" visibility="public"
7229 deprecated="not deprecated">
7230 <doc>
7231 <![CDATA[HTTP session scope.]]>
7232 </doc>
7233 </field>
7234 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007235 <![CDATA[Servlet scopes.
7236
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007237 @author crazybob@google.com (Bob Lee)]]>
7238 </doc>
7239 </class>
7240 <!-- end class com.google.inject.servlet.ServletScopes -->
7241 <!-- start class com.google.inject.servlet.SessionScoped -->
7242 <class name="SessionScoped" abstract="true"
7243 static="false" final="false" visibility="public"
7244 deprecated="not deprecated">
7245 <implements name="java.lang.annotation.Annotation"/>
7246 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007247 <![CDATA[Apply this to implementation classes when you want one instance per session.
7248
7249 @see com.google.inject.Scopes#SINGLETON
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007250 @author crazybob@google.com (Bob Lee)]]>
7251 </doc>
7252 </class>
7253 <!-- end class com.google.inject.servlet.SessionScoped -->
7254 <!-- start class com.google.inject.servlet.UriPatternType -->
7255 <class name="UriPatternType" extends="java.lang.Enum&lt;com.google.inject.servlet.UriPatternType&gt;"
7256 abstract="false"
7257 static="false" final="true" visibility="public"
7258 deprecated="not deprecated">
7259 <method name="values" return="com.google.inject.servlet.UriPatternType[]"
7260 abstract="false" native="false" synchronized="false"
7261 static="true" final="false" visibility="public"
7262 deprecated="not deprecated">
7263 </method>
7264 <method name="valueOf" return="com.google.inject.servlet.UriPatternType"
7265 abstract="false" native="false" synchronized="false"
7266 static="true" final="false" visibility="public"
7267 deprecated="not deprecated">
7268 <param name="name" type="java.lang.String"/>
7269 </method>
7270 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007271 <![CDATA[An enumeration of the available URI-pattern matching styles
7272
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007273 @since 3.0]]>
7274 </doc>
7275 </class>
7276 <!-- end class com.google.inject.servlet.UriPatternType -->
7277</package>
7278<package name="com.google.inject.spi">
7279 <!-- start interface com.google.inject.spi.BindingScopingVisitor -->
7280 <interface name="BindingScopingVisitor" abstract="true"
7281 static="false" final="false" visibility="public"
7282 deprecated="not deprecated">
7283 <method name="visitEagerSingleton" return="V"
7284 abstract="true" native="false" synchronized="false"
7285 static="false" final="false" visibility="public"
7286 deprecated="not deprecated">
7287 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007288 <![CDATA[Visit an eager singleton or single instance. This scope strategy is found on both module and
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007289 injector bindings.]]>
7290 </doc>
7291 </method>
7292 <method name="visitScope" return="V"
7293 abstract="true" native="false" synchronized="false"
7294 static="false" final="false" visibility="public"
7295 deprecated="not deprecated">
7296 <param name="scope" type="com.google.inject.Scope"/>
7297 <doc>
7298 <![CDATA[Visit a scope instance. This scope strategy is found on both module and injector bindings.]]>
7299 </doc>
7300 </method>
7301 <method name="visitScopeAnnotation" return="V"
7302 abstract="true" native="false" synchronized="false"
7303 static="false" final="false" visibility="public"
7304 deprecated="not deprecated">
7305 <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
7306 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007307 <![CDATA[Visit a scope annotation. This scope strategy is found only on module bindings. The instance
7308 that implements this scope is registered by {@link com.google.inject.Binder#bindScope(Class,
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007309 Scope) Binder.bindScope()}.]]>
7310 </doc>
7311 </method>
7312 <method name="visitNoScoping" return="V"
7313 abstract="true" native="false" synchronized="false"
7314 static="false" final="false" visibility="public"
7315 deprecated="not deprecated">
7316 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007317 <![CDATA[Visit an unspecified or unscoped strategy. On a module, this strategy indicates that the
7318 injector should use scoping annotations to find a scope. On an injector, it indicates that
7319 no scope is applied to the binding. An unscoped binding will behave like a scoped one when it
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007320 is linked to a scoped binding.]]>
7321 </doc>
7322 </method>
7323 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007324 <![CDATA[Visits each of the strategies used to scope an injection.
7325
7326 @param <V> any type to be returned by the visit method. Use {@link Void} with
7327 {@code return null} if no return type is needed.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007328 @since 2.0]]>
7329 </doc>
7330 </interface>
7331 <!-- end interface com.google.inject.spi.BindingScopingVisitor -->
7332 <!-- start interface com.google.inject.spi.BindingTargetVisitor -->
7333 <interface name="BindingTargetVisitor" abstract="true"
7334 static="false" final="false" visibility="public"
7335 deprecated="not deprecated">
7336 <method name="visit" return="V"
7337 abstract="true" native="false" synchronized="false"
7338 static="false" final="false" visibility="public"
7339 deprecated="not deprecated">
7340 <param name="binding" type="com.google.inject.spi.InstanceBinding&lt;? extends T&gt;"/>
7341 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007342 <![CDATA[Visit a instance binding. The same instance is returned for every injection. This target is
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007343 found in both module and injector bindings.]]>
7344 </doc>
7345 </method>
7346 <method name="visit" return="V"
7347 abstract="true" native="false" synchronized="false"
7348 static="false" final="false" visibility="public"
7349 deprecated="not deprecated">
7350 <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends T&gt;"/>
7351 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007352 <![CDATA[Visit a provider instance binding. The provider's {@code get} method is invoked to resolve
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007353 injections. This target is found in both module and injector bindings.]]>
7354 </doc>
7355 </method>
7356 <method name="visit" return="V"
7357 abstract="true" native="false" synchronized="false"
7358 static="false" final="false" visibility="public"
7359 deprecated="not deprecated">
7360 <param name="binding" type="com.google.inject.spi.ProviderKeyBinding&lt;? extends T&gt;"/>
7361 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007362 <![CDATA[Visit a provider key binding. To resolve injections, the provider key is first resolved, then
7363 that provider's {@code get} method is invoked. This target is found in both module and injector
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007364 bindings.]]>
7365 </doc>
7366 </method>
7367 <method name="visit" return="V"
7368 abstract="true" native="false" synchronized="false"
7369 static="false" final="false" visibility="public"
7370 deprecated="not deprecated">
7371 <param name="binding" type="com.google.inject.spi.LinkedKeyBinding&lt;? extends T&gt;"/>
7372 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007373 <![CDATA[Visit a linked key binding. The other key's binding is used to resolve injections. This
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007374 target is found in both module and injector bindings.]]>
7375 </doc>
7376 </method>
7377 <method name="visit" return="V"
7378 abstract="true" native="false" synchronized="false"
7379 static="false" final="false" visibility="public"
7380 deprecated="not deprecated">
7381 <param name="binding" type="com.google.inject.spi.ExposedBinding&lt;? extends T&gt;"/>
7382 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007383 <![CDATA[Visit a binding to a key exposed from an enclosed private environment. This target is only
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007384 found in injector bindings.]]>
7385 </doc>
7386 </method>
7387 <method name="visit" return="V"
7388 abstract="true" native="false" synchronized="false"
7389 static="false" final="false" visibility="public"
7390 deprecated="not deprecated">
7391 <param name="binding" type="com.google.inject.spi.UntargettedBinding&lt;? extends T&gt;"/>
7392 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007393 <![CDATA[Visit an untargetted binding. This target is found only on module bindings. It indicates
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007394 that the injector should use its implicit binding strategies to resolve injections.]]>
7395 </doc>
7396 </method>
7397 <method name="visit" return="V"
7398 abstract="true" native="false" synchronized="false"
7399 static="false" final="false" visibility="public"
7400 deprecated="not deprecated">
7401 <param name="binding" type="com.google.inject.spi.ConstructorBinding&lt;? extends T&gt;"/>
7402 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007403 <![CDATA[Visit a constructor binding. To resolve injections, an instance is instantiated by invoking
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007404 {@code constructor}. This target is found only on injector bindings.]]>
7405 </doc>
7406 </method>
7407 <method name="visit" return="V"
7408 abstract="true" native="false" synchronized="false"
7409 static="false" final="false" visibility="public"
7410 deprecated="not deprecated">
7411 <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding&lt;? extends T&gt;"/>
7412 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007413 <![CDATA[Visit a binding created from converting a bound instance to a new type. The source binding
7414 has the same binding annotation but a different type. This target is found only on injector
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007415 bindings.]]>
7416 </doc>
7417 </method>
7418 <method name="visit" return="V"
7419 abstract="true" native="false" synchronized="false"
7420 static="false" final="false" visibility="public"
7421 deprecated="not deprecated">
7422 <param name="binding" type="com.google.inject.spi.ProviderBinding&lt;? extends T&gt;"/>
7423 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007424 <![CDATA[Visit a binding to a {@link com.google.inject.Provider} that delegates to the binding for the
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007425 provided type. This target is found only on injector bindings.]]>
7426 </doc>
7427 </method>
7428 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007429 <![CDATA[Visits each of the strategies used to find an instance to satisfy an injection.
7430
7431 @param <V> any type to be returned by the visit method. Use {@link Void} with
7432 {@code return null} if no return type is needed.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007433 @since 2.0]]>
7434 </doc>
7435 </interface>
7436 <!-- end interface com.google.inject.spi.BindingTargetVisitor -->
7437 <!-- start interface com.google.inject.spi.ConstructorBinding -->
7438 <interface name="ConstructorBinding" abstract="true"
7439 static="false" final="false" visibility="public"
7440 deprecated="not deprecated">
7441 <implements name="com.google.inject.Binding&lt;T&gt;"/>
7442 <implements name="com.google.inject.spi.HasDependencies"/>
7443 <method name="getConstructor" return="com.google.inject.spi.InjectionPoint"
7444 abstract="true" native="false" synchronized="false"
7445 static="false" final="false" visibility="public"
7446 deprecated="not deprecated">
7447 <doc>
7448 <![CDATA[Gets the constructor this binding injects.]]>
7449 </doc>
7450 </method>
7451 <method name="getInjectableMembers" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
7452 abstract="true" native="false" synchronized="false"
7453 static="false" final="false" visibility="public"
7454 deprecated="not deprecated">
7455 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007456 <![CDATA[Returns all instance method and field injection points on {@code type}.
7457
7458 @return a possibly empty set of injection points. The set has a specified iteration order. All
7459 fields are returned and then all methods. Within the fields, supertype fields are returned
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007460 before subtype fields. Similarly, supertype methods are returned before subtype methods.]]>
7461 </doc>
7462 </method>
7463 <method name="getMethodInterceptors" return="java.util.Map&lt;java.lang.reflect.Method, java.util.List&lt;org.aopalliance.intercept.MethodInterceptor&gt;&gt;"
7464 abstract="true" native="false" synchronized="false"
7465 static="false" final="false" visibility="public"
7466 deprecated="not deprecated">
7467 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007468 <![CDATA[Returns the interceptors applied to each method, in the order that they will be applied.
7469
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007470 @return a possibly empty map]]>
7471 </doc>
7472 </method>
7473 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007474 <![CDATA[A binding to the constructor of a concrete clss. To resolve injections, an instance is
7475 instantiated by invoking the constructor.
7476
7477 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007478 @since 2.0]]>
7479 </doc>
7480 </interface>
7481 <!-- end interface com.google.inject.spi.ConstructorBinding -->
7482 <!-- start interface com.google.inject.spi.ConvertedConstantBinding -->
7483 <interface name="ConvertedConstantBinding" abstract="true"
7484 static="false" final="false" visibility="public"
7485 deprecated="not deprecated">
7486 <implements name="com.google.inject.Binding&lt;T&gt;"/>
7487 <implements name="com.google.inject.spi.HasDependencies"/>
7488 <method name="getValue" return="T"
7489 abstract="true" native="false" synchronized="false"
7490 static="false" final="false" visibility="public"
7491 deprecated="not deprecated">
7492 <doc>
7493 <![CDATA[Returns the converted value.]]>
7494 </doc>
7495 </method>
7496 <method name="getTypeConverterBinding" return="com.google.inject.spi.TypeConverterBinding"
7497 abstract="true" native="false" synchronized="false"
7498 static="false" final="false" visibility="public"
7499 deprecated="not deprecated">
7500 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007501 <![CDATA[Returns the type converter binding used to convert the constant.
7502
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007503 @since 3.0]]>
7504 </doc>
7505 </method>
7506 <method name="getSourceKey" return="com.google.inject.Key&lt;java.lang.String&gt;"
7507 abstract="true" native="false" synchronized="false"
7508 static="false" final="false" visibility="public"
7509 deprecated="not deprecated">
7510 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007511 <![CDATA[Returns the key for the source binding. That binding can be retrieved from an injector using
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007512 {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]>
7513 </doc>
7514 </method>
7515 <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
7516 abstract="true" native="false" synchronized="false"
7517 static="false" final="false" visibility="public"
7518 deprecated="not deprecated">
7519 <doc>
7520 <![CDATA[Returns a singleton set containing only the converted key.]]>
7521 </doc>
7522 </method>
7523 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007524 <![CDATA[A binding created from converting a bound instance to a new type. The source binding has the same
7525 binding annotation but a different type.
7526
7527 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007528 @since 2.0]]>
7529 </doc>
7530 </interface>
7531 <!-- end interface com.google.inject.spi.ConvertedConstantBinding -->
7532 <!-- start class com.google.inject.spi.DefaultBindingScopingVisitor -->
7533 <class name="DefaultBindingScopingVisitor" extends="java.lang.Object"
7534 abstract="false"
7535 static="false" final="false" visibility="public"
7536 deprecated="not deprecated">
7537 <implements name="com.google.inject.spi.BindingScopingVisitor&lt;V&gt;"/>
7538 <constructor name="DefaultBindingScopingVisitor"
7539 static="false" final="false" visibility="public"
7540 deprecated="not deprecated">
7541 </constructor>
7542 <method name="visitOther" return="V"
7543 abstract="false" native="false" synchronized="false"
7544 static="false" final="false" visibility="protected"
7545 deprecated="not deprecated">
7546 <doc>
7547 <![CDATA[Default visit implementation. Returns {@code null}.]]>
7548 </doc>
7549 </method>
7550 <method name="visitEagerSingleton" return="V"
7551 abstract="false" native="false" synchronized="false"
7552 static="false" final="false" visibility="public"
7553 deprecated="not deprecated">
7554 </method>
7555 <method name="visitScope" return="V"
7556 abstract="false" native="false" synchronized="false"
7557 static="false" final="false" visibility="public"
7558 deprecated="not deprecated">
7559 <param name="scope" type="com.google.inject.Scope"/>
7560 </method>
7561 <method name="visitScopeAnnotation" return="V"
7562 abstract="false" native="false" synchronized="false"
7563 static="false" final="false" visibility="public"
7564 deprecated="not deprecated">
7565 <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
7566 </method>
7567 <method name="visitNoScoping" return="V"
7568 abstract="false" native="false" synchronized="false"
7569 static="false" final="false" visibility="public"
7570 deprecated="not deprecated">
7571 </method>
7572 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007573 <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to
7574 {@link #visitOther()}, returning its result.
7575
7576 @param <V> any type to be returned by the visit method. Use {@link Void} with
7577 {@code return null} if no return type is needed.
7578
7579 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007580 @since 2.0]]>
7581 </doc>
7582 </class>
7583 <!-- end class com.google.inject.spi.DefaultBindingScopingVisitor -->
7584 <!-- start class com.google.inject.spi.DefaultBindingTargetVisitor -->
7585 <class name="DefaultBindingTargetVisitor" extends="java.lang.Object"
7586 abstract="true"
7587 static="false" final="false" visibility="public"
7588 deprecated="not deprecated">
7589 <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
7590 <constructor name="DefaultBindingTargetVisitor"
7591 static="false" final="false" visibility="public"
7592 deprecated="not deprecated">
7593 </constructor>
7594 <method name="visitOther" return="V"
7595 abstract="false" native="false" synchronized="false"
7596 static="false" final="false" visibility="protected"
7597 deprecated="not deprecated">
7598 <param name="binding" type="com.google.inject.Binding&lt;? extends T&gt;"/>
7599 <doc>
7600 <![CDATA[Default visit implementation. Returns {@code null}.]]>
7601 </doc>
7602 </method>
7603 <method name="visit" return="V"
7604 abstract="false" native="false" synchronized="false"
7605 static="false" final="false" visibility="public"
7606 deprecated="not deprecated">
7607 <param name="instanceBinding" type="com.google.inject.spi.InstanceBinding&lt;? extends T&gt;"/>
7608 </method>
7609 <method name="visit" return="V"
7610 abstract="false" native="false" synchronized="false"
7611 static="false" final="false" visibility="public"
7612 deprecated="not deprecated">
7613 <param name="providerInstanceBinding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends T&gt;"/>
7614 </method>
7615 <method name="visit" return="V"
7616 abstract="false" native="false" synchronized="false"
7617 static="false" final="false" visibility="public"
7618 deprecated="not deprecated">
7619 <param name="providerKeyBinding" type="com.google.inject.spi.ProviderKeyBinding&lt;? extends T&gt;"/>
7620 </method>
7621 <method name="visit" return="V"
7622 abstract="false" native="false" synchronized="false"
7623 static="false" final="false" visibility="public"
7624 deprecated="not deprecated">
7625 <param name="linkedKeyBinding" type="com.google.inject.spi.LinkedKeyBinding&lt;? extends T&gt;"/>
7626 </method>
7627 <method name="visit" return="V"
7628 abstract="false" native="false" synchronized="false"
7629 static="false" final="false" visibility="public"
7630 deprecated="not deprecated">
7631 <param name="exposedBinding" type="com.google.inject.spi.ExposedBinding&lt;? extends T&gt;"/>
7632 </method>
7633 <method name="visit" return="V"
7634 abstract="false" native="false" synchronized="false"
7635 static="false" final="false" visibility="public"
7636 deprecated="not deprecated">
7637 <param name="untargettedBinding" type="com.google.inject.spi.UntargettedBinding&lt;? extends T&gt;"/>
7638 </method>
7639 <method name="visit" return="V"
7640 abstract="false" native="false" synchronized="false"
7641 static="false" final="false" visibility="public"
7642 deprecated="not deprecated">
7643 <param name="constructorBinding" type="com.google.inject.spi.ConstructorBinding&lt;? extends T&gt;"/>
7644 </method>
7645 <method name="visit" return="V"
7646 abstract="false" native="false" synchronized="false"
7647 static="false" final="false" visibility="public"
7648 deprecated="not deprecated">
7649 <param name="convertedConstantBinding" type="com.google.inject.spi.ConvertedConstantBinding&lt;? extends T&gt;"/>
7650 </method>
7651 <method name="visit" return="V"
7652 abstract="false" native="false" synchronized="false"
7653 static="false" final="false" visibility="public"
7654 deprecated="not deprecated">
7655 <param name="providerBinding" type="com.google.inject.spi.ProviderBinding&lt;? extends T&gt;"/>
7656 </method>
7657 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007658 <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to {@link
7659 #visitOther(Binding)}, returning its result.
7660
7661 @param <V> any type to be returned by the visit method. Use {@link Void} with
7662 {@code return null} if no return type is needed.
7663
7664 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007665 @since 2.0]]>
7666 </doc>
7667 </class>
7668 <!-- end class com.google.inject.spi.DefaultBindingTargetVisitor -->
7669 <!-- start class com.google.inject.spi.DefaultElementVisitor -->
7670 <class name="DefaultElementVisitor" extends="java.lang.Object"
7671 abstract="true"
7672 static="false" final="false" visibility="public"
7673 deprecated="not deprecated">
7674 <implements name="com.google.inject.spi.ElementVisitor&lt;V&gt;"/>
7675 <constructor name="DefaultElementVisitor"
7676 static="false" final="false" visibility="public"
7677 deprecated="not deprecated">
7678 </constructor>
7679 <method name="visitOther" return="V"
7680 abstract="false" native="false" synchronized="false"
7681 static="false" final="false" visibility="protected"
7682 deprecated="not deprecated">
7683 <param name="element" type="com.google.inject.spi.Element"/>
7684 <doc>
7685 <![CDATA[Default visit implementation. Returns {@code null}.]]>
7686 </doc>
7687 </method>
7688 <method name="visit" return="V"
7689 abstract="false" native="false" synchronized="false"
7690 static="false" final="false" visibility="public"
7691 deprecated="not deprecated">
7692 <param name="message" type="com.google.inject.spi.Message"/>
7693 </method>
7694 <method name="visit" return="V"
7695 abstract="false" native="false" synchronized="false"
7696 static="false" final="false" visibility="public"
7697 deprecated="not deprecated">
7698 <param name="binding" type="com.google.inject.Binding&lt;T&gt;"/>
7699 </method>
7700 <method name="visit" return="V"
7701 abstract="false" native="false" synchronized="false"
7702 static="false" final="false" visibility="public"
7703 deprecated="not deprecated">
7704 <param name="interceptorBinding" type="com.google.inject.spi.InterceptorBinding"/>
7705 </method>
7706 <method name="visit" return="V"
7707 abstract="false" native="false" synchronized="false"
7708 static="false" final="false" visibility="public"
7709 deprecated="not deprecated">
7710 <param name="scopeBinding" type="com.google.inject.spi.ScopeBinding"/>
7711 </method>
7712 <method name="visit" return="V"
7713 abstract="false" native="false" synchronized="false"
7714 static="false" final="false" visibility="public"
7715 deprecated="not deprecated">
7716 <param name="typeConverterBinding" type="com.google.inject.spi.TypeConverterBinding"/>
7717 </method>
7718 <method name="visit" return="V"
7719 abstract="false" native="false" synchronized="false"
7720 static="false" final="false" visibility="public"
7721 deprecated="not deprecated">
7722 <param name="providerLookup" type="com.google.inject.spi.ProviderLookup&lt;T&gt;"/>
7723 </method>
7724 <method name="visit" return="V"
7725 abstract="false" native="false" synchronized="false"
7726 static="false" final="false" visibility="public"
7727 deprecated="not deprecated">
7728 <param name="injectionRequest" type="com.google.inject.spi.InjectionRequest&lt;?&gt;"/>
7729 </method>
7730 <method name="visit" return="V"
7731 abstract="false" native="false" synchronized="false"
7732 static="false" final="false" visibility="public"
7733 deprecated="not deprecated">
7734 <param name="staticInjectionRequest" type="com.google.inject.spi.StaticInjectionRequest"/>
7735 </method>
7736 <method name="visit" return="V"
7737 abstract="false" native="false" synchronized="false"
7738 static="false" final="false" visibility="public"
7739 deprecated="not deprecated">
7740 <param name="privateElements" type="com.google.inject.spi.PrivateElements"/>
7741 </method>
7742 <method name="visit" return="V"
7743 abstract="false" native="false" synchronized="false"
7744 static="false" final="false" visibility="public"
7745 deprecated="not deprecated">
7746 <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup&lt;T&gt;"/>
7747 </method>
7748 <method name="visit" return="V"
7749 abstract="false" native="false" synchronized="false"
7750 static="false" final="false" visibility="public"
7751 deprecated="not deprecated">
7752 <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/>
7753 </method>
7754 <method name="visit" return="V"
7755 abstract="false" native="false" synchronized="false"
7756 static="false" final="false" visibility="public"
7757 deprecated="not deprecated">
7758 <param name="binding" type="com.google.inject.spi.ProvisionListenerBinding"/>
7759 </method>
7760 <method name="visit" return="V"
7761 abstract="false" native="false" synchronized="false"
7762 static="false" final="false" visibility="public"
7763 deprecated="not deprecated">
7764 <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/>
7765 </method>
7766 <method name="visit" return="V"
7767 abstract="false" native="false" synchronized="false"
7768 static="false" final="false" visibility="public"
7769 deprecated="not deprecated">
7770 <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/>
7771 </method>
7772 <method name="visit" return="V"
7773 abstract="false" native="false" synchronized="false"
7774 static="false" final="false" visibility="public"
7775 deprecated="not deprecated">
7776 <param name="option" type="com.google.inject.spi.RequireAtInjectOnConstructorsOption"/>
7777 </method>
7778 <method name="visit" return="V"
7779 abstract="false" native="false" synchronized="false"
7780 static="false" final="false" visibility="public"
7781 deprecated="not deprecated">
7782 <param name="option" type="com.google.inject.spi.RequireExactBindingAnnotationsOption"/>
7783 </method>
7784 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007785 <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to
7786 {@link #visitOther(Element)}, returning its result.
7787
7788 @param <V> any type to be returned by the visit method. Use {@link Void} with
7789 {@code return null} if no return type is needed.
7790
7791 @author sberlin@gmail.com (Sam Berlin)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007792 @since 2.0]]>
7793 </doc>
7794 </class>
7795 <!-- end class com.google.inject.spi.DefaultElementVisitor -->
7796 <!-- start class com.google.inject.spi.Dependency -->
7797 <class name="Dependency" extends="java.lang.Object"
7798 abstract="false"
7799 static="false" final="true" visibility="public"
7800 deprecated="not deprecated">
7801 <method name="get" return="com.google.inject.spi.Dependency&lt;T&gt;"
7802 abstract="false" native="false" synchronized="false"
7803 static="true" final="false" visibility="public"
7804 deprecated="not deprecated">
7805 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
7806 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007807 <![CDATA[Returns a new dependency that is not attached to an injection point. The returned dependency is
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007808 nullable.]]>
7809 </doc>
7810 </method>
7811 <method name="forInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
7812 abstract="false" native="false" synchronized="false"
7813 static="true" final="false" visibility="public"
7814 deprecated="not deprecated">
7815 <param name="injectionPoints" type="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"/>
7816 <doc>
7817 <![CDATA[Returns the dependencies from the given injection points.]]>
7818 </doc>
7819 </method>
7820 <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
7821 abstract="false" native="false" synchronized="false"
7822 static="false" final="false" visibility="public"
7823 deprecated="not deprecated">
7824 <doc>
7825 <![CDATA[Returns the key to the binding that satisfies this dependency.]]>
7826 </doc>
7827 </method>
7828 <method name="isNullable" return="boolean"
7829 abstract="false" native="false" synchronized="false"
7830 static="false" final="false" visibility="public"
7831 deprecated="not deprecated">
7832 <doc>
7833 <![CDATA[Returns true if null is a legal value for this dependency.]]>
7834 </doc>
7835 </method>
7836 <method name="getInjectionPoint" return="com.google.inject.spi.InjectionPoint"
7837 abstract="false" native="false" synchronized="false"
7838 static="false" final="false" visibility="public"
7839 deprecated="not deprecated">
7840 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007841 <![CDATA[Returns the injection point to which this dependency belongs, or null if this dependency isn't
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007842 attached to a particular injection point.]]>
7843 </doc>
7844 </method>
7845 <method name="getParameterIndex" return="int"
7846 abstract="false" native="false" synchronized="false"
7847 static="false" final="false" visibility="public"
7848 deprecated="not deprecated">
7849 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007850 <![CDATA[Returns the index of this dependency in the injection point's parameter list, or {@code -1} if
7851 this dependency does not belong to a parameter list. Only method and constuctor dependencies
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007852 are elements in a parameter list.]]>
7853 </doc>
7854 </method>
7855 <method name="hashCode" return="int"
7856 abstract="false" native="false" synchronized="false"
7857 static="false" final="false" visibility="public"
7858 deprecated="not deprecated">
7859 </method>
7860 <method name="equals" return="boolean"
7861 abstract="false" native="false" synchronized="false"
7862 static="false" final="false" visibility="public"
7863 deprecated="not deprecated">
7864 <param name="o" type="java.lang.Object"/>
7865 </method>
7866 <method name="toString" return="java.lang.String"
7867 abstract="false" native="false" synchronized="false"
7868 static="false" final="false" visibility="public"
7869 deprecated="not deprecated">
7870 </method>
7871 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007872 <![CDATA[A variable that can be resolved by an injector.
7873
7874 <p>Use {@link #get} to build a freestanding dependency, or {@link InjectionPoint} to build one
7875 that's attached to a constructor, method or field.
7876
7877 @author crazybob@google.com (Bob Lee)
7878 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007879 @since 2.0]]>
7880 </doc>
7881 </class>
7882 <!-- end class com.google.inject.spi.Dependency -->
7883 <!-- start class com.google.inject.spi.DependencyAndSource -->
7884 <class name="DependencyAndSource" extends="java.lang.Object"
7885 abstract="false"
7886 static="false" final="true" visibility="public"
7887 deprecated="not deprecated">
7888 <constructor name="DependencyAndSource" type="com.google.inject.spi.Dependency&lt;?&gt;, java.lang.Object"
7889 static="false" final="false" visibility="public"
7890 deprecated="not deprecated">
7891 </constructor>
7892 <method name="getDependency" return="com.google.inject.spi.Dependency&lt;?&gt;"
7893 abstract="false" native="false" synchronized="false"
7894 static="false" final="false" visibility="public"
7895 deprecated="not deprecated">
7896 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007897 <![CDATA[Returns the Dependency, if one exists. For anything that can be referenced
7898 by {@link Injector#getBinding}, a dependency exists. A dependency will not
7899 exist (and this will return null) for types initialized with
7900 {@link Binder#requestInjection} or {@link Injector#injectMembers(Object)},
7901 nor will it exist for objects injected into Providers bound with
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007902 LinkedBindingBuilder#toProvider(Provider).]]>
7903 </doc>
7904 </method>
7905 <method name="getBindingSource" return="java.lang.String"
7906 abstract="false" native="false" synchronized="false"
7907 static="false" final="false" visibility="public"
7908 deprecated="not deprecated">
7909 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007910 <![CDATA[Returns a string describing where this dependency was bound. If the binding
7911 was just-in-time, there is no valid binding source, so this describes the
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007912 class in question.]]>
7913 </doc>
7914 </method>
7915 <method name="toString" return="java.lang.String"
7916 abstract="false" native="false" synchronized="false"
7917 static="false" final="false" visibility="public"
7918 deprecated="not deprecated">
7919 </method>
7920 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007921 <![CDATA[A combination of a {@link Dependency} and the {@link Binding#getSource()
7922 source} where the dependency was bound.
7923
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007924 @author sameb@google.com (Sam Berlin)]]>
7925 </doc>
7926 </class>
7927 <!-- end class com.google.inject.spi.DependencyAndSource -->
7928 <!-- start class com.google.inject.spi.DisableCircularProxiesOption -->
7929 <class name="DisableCircularProxiesOption" extends="java.lang.Object"
7930 abstract="false"
7931 static="false" final="true" visibility="public"
7932 deprecated="not deprecated">
7933 <implements name="com.google.inject.spi.Element"/>
7934 <method name="getSource" return="java.lang.Object"
7935 abstract="false" native="false" synchronized="false"
7936 static="false" final="false" visibility="public"
7937 deprecated="not deprecated">
7938 </method>
7939 <method name="applyTo"
7940 abstract="false" native="false" synchronized="false"
7941 static="false" final="false" visibility="public"
7942 deprecated="not deprecated">
7943 <param name="binder" type="com.google.inject.Binder"/>
7944 </method>
7945 <method name="acceptVisitor" return="T"
7946 abstract="false" native="false" synchronized="false"
7947 static="false" final="false" visibility="public"
7948 deprecated="not deprecated">
7949 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
7950 </method>
7951 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007952 <![CDATA[A request to disable circular proxies.
7953
7954 @author sameb@google.com (Sam Berlin)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007955 @since 3.0]]>
7956 </doc>
7957 </class>
7958 <!-- end class com.google.inject.spi.DisableCircularProxiesOption -->
7959 <!-- start interface com.google.inject.spi.Element -->
7960 <interface name="Element" abstract="true"
7961 static="false" final="false" visibility="public"
7962 deprecated="not deprecated">
7963 <method name="getSource" return="java.lang.Object"
7964 abstract="true" native="false" synchronized="false"
7965 static="false" final="false" visibility="public"
7966 deprecated="not deprecated">
7967 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007968 <![CDATA[Returns an arbitrary object containing information about the "place" where this element was
7969 configured. Used by Guice in the production of descriptive error messages.
7970
7971 <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good
7972 example. Tools should simply call {@code toString()} on the source object if the type is
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007973 unfamiliar.]]>
7974 </doc>
7975 </method>
7976 <method name="acceptVisitor" return="T"
7977 abstract="true" native="false" synchronized="false"
7978 static="false" final="false" visibility="public"
7979 deprecated="not deprecated">
7980 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
7981 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007982 <![CDATA[Accepts an element visitor. Invokes the visitor method specific to this element's type.
7983
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007984 @param visitor to call back on]]>
7985 </doc>
7986 </method>
7987 <method name="applyTo"
7988 abstract="true" native="false" synchronized="false"
7989 static="false" final="false" visibility="public"
7990 deprecated="not deprecated">
7991 <param name="binder" type="com.google.inject.Binder"/>
7992 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07007993 <![CDATA[Writes this module element to the given binder (optional operation).
7994
7995 @param binder to apply configuration element to
7996 @throws UnsupportedOperationException if the {@code applyTo} method is not supported by this
Christian Edward Gruber509e3542014-03-20 20:37:34 -07007997 element.]]>
7998 </doc>
7999 </method>
8000 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008001 <![CDATA[A core component of a module or injector.
8002
8003 <p>The elements of a module can be inspected, validated and rewritten. Use {@link
8004 Elements#getElements(com.google.inject.Module[]) Elements.getElements()} to read the elements
8005 from a module, and {@link Elements#getModule(Iterable) Elements.getModule()} to rewrite them.
8006 This can be used for static analysis and generation of Guice modules.
8007
8008 <p>The elements of an injector can be inspected and exercised. Use {@link
8009 com.google.inject.Injector#getBindings Injector.getBindings()} to reflect on Guice injectors.
8010
8011 @author jessewilson@google.com (Jesse Wilson)
8012 @author crazybob@google.com (Bob Lee)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008013 @since 2.0]]>
8014 </doc>
8015 </interface>
8016 <!-- end interface com.google.inject.spi.Element -->
8017 <!-- start class com.google.inject.spi.Elements -->
8018 <class name="Elements" extends="java.lang.Object"
8019 abstract="false"
8020 static="false" final="true" visibility="public"
8021 deprecated="not deprecated">
8022 <constructor name="Elements"
8023 static="false" final="false" visibility="public"
8024 deprecated="not deprecated">
8025 </constructor>
8026 <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
8027 abstract="false" native="false" synchronized="false"
8028 static="true" final="false" visibility="public"
8029 deprecated="not deprecated">
8030 <param name="modules" type="com.google.inject.Module[]"/>
8031 <doc>
8032 <![CDATA[Records the elements executed by {@code modules}.]]>
8033 </doc>
8034 </method>
8035 <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
8036 abstract="false" native="false" synchronized="false"
8037 static="true" final="false" visibility="public"
8038 deprecated="not deprecated">
8039 <param name="stage" type="com.google.inject.Stage"/>
8040 <param name="modules" type="com.google.inject.Module[]"/>
8041 <doc>
8042 <![CDATA[Records the elements executed by {@code modules}.]]>
8043 </doc>
8044 </method>
8045 <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
8046 abstract="false" native="false" synchronized="false"
8047 static="true" final="false" visibility="public"
8048 deprecated="not deprecated">
8049 <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
8050 <doc>
8051 <![CDATA[Records the elements executed by {@code modules}.]]>
8052 </doc>
8053 </method>
8054 <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
8055 abstract="false" native="false" synchronized="false"
8056 static="true" final="false" visibility="public"
8057 deprecated="not deprecated">
8058 <param name="stage" type="com.google.inject.Stage"/>
8059 <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
8060 <doc>
8061 <![CDATA[Records the elements executed by {@code modules}.]]>
8062 </doc>
8063 </method>
8064 <method name="getModule" return="com.google.inject.Module"
8065 abstract="false" native="false" synchronized="false"
8066 static="true" final="false" visibility="public"
8067 deprecated="not deprecated">
8068 <param name="elements" type="java.lang.Iterable&lt;? extends com.google.inject.spi.Element&gt;"/>
8069 <doc>
8070 <![CDATA[Returns the module composed of {@code elements}.]]>
8071 </doc>
8072 </method>
8073 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008074 <![CDATA[Exposes elements of a module so they can be inspected, validated or {@link
8075 Element#applyTo(Binder) rewritten}.
8076
8077 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008078 @since 2.0]]>
8079 </doc>
8080 </class>
8081 <!-- end class com.google.inject.spi.Elements -->
8082 <!-- start class com.google.inject.spi.ElementSource -->
8083 <class name="ElementSource" extends="java.lang.Object"
8084 abstract="false"
8085 static="false" final="true" visibility="public"
8086 deprecated="not deprecated">
8087 <method name="getOriginalElementSource" return="com.google.inject.spi.ElementSource"
8088 abstract="false" native="false" synchronized="false"
8089 static="false" final="false" visibility="public"
8090 deprecated="not deprecated">
8091 <doc>
Sam Berlin05ca0df2013-12-07 13:37:29 -05008092 <![CDATA[Returns the {@link ElementSource} of the element this was created or copied from. If this was
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008093 not created or copied from another element, returns {@code null}.]]>
8094 </doc>
8095 </method>
8096 <method name="getDeclaringSource" return="java.lang.Object"
8097 abstract="false" native="false" synchronized="false"
8098 static="false" final="false" visibility="public"
8099 deprecated="not deprecated">
8100 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008101 <![CDATA[Returns a single location in source code that defines the element. It can be any object
8102 such as {@link Constructor}, {@link Method}, {@link Field}, {@link StackTraceElement}, etc. For
8103 example, if the element is created from a method annotated by {@literal @Provides}, the
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008104 declaring source of element would be the method itself.]]>
8105 </doc>
8106 </method>
8107 <method name="getModuleClassNames" return="java.util.List&lt;java.lang.String&gt;"
8108 abstract="false" native="false" synchronized="false"
8109 static="false" final="false" visibility="public"
8110 deprecated="not deprecated">
8111 <doc>
Sam Berlin05ca0df2013-12-07 13:37:29 -05008112 <![CDATA[Returns the class names of modules involved in creating this {@link Element}. The first
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008113 element (index 0) is the class name of module that defined the element, and the last element
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008114 is the class name of root module.]]>
8115 </doc>
8116 </method>
8117 <method name="getModuleConfigurePositionsInStackTrace" return="java.util.List&lt;java.lang.Integer&gt;"
8118 abstract="false" native="false" synchronized="false"
8119 static="false" final="false" visibility="public"
8120 deprecated="not deprecated">
8121 <doc>
Sam Berlin05ca0df2013-12-07 13:37:29 -05008122 <![CDATA[Returns the position of {@link Module#configure(Binder) configure(Binder)} method call in the
8123 {@link #getStackTrace() stack trace} for modules that their classes returned by
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008124 {@link #getModuleClassNames()}. For example, if the stack trace looks like the following:
8125 <p>
8126 {@code
8127 0 - Binder.bind(),
8128 1 - ModuleTwo.configure(),
8129 2 - Binder.install(),
8130 3 - ModuleOne.configure(),
8131 4 - theRest().
8132 }
8133 <p>
8134 1 and 3 are returned.
8135 <p>
Sam Berlin05ca0df2013-12-07 13:37:29 -05008136 In the cases where stack trace is not available (i.e., the stack trace was not collected),
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008137 it returns -1 for all module positions.]]>
8138 </doc>
8139 </method>
8140 <method name="getStackTrace" return="java.lang.StackTraceElement[]"
8141 abstract="false" native="false" synchronized="false"
8142 static="false" final="false" visibility="public"
8143 deprecated="not deprecated">
8144 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008145 <![CDATA[Returns the sequence of method calls that ends at one of {@link Binder} {@code bindXXX()}
8146 methods and eventually defines the element. Note that {@link #getStackTrace()} lists {@link
8147 StackTraceElement StackTraceElements} in reverse chronological order. The first element (index
8148 zero) is the last method call and the last element is the first method invocation. In the cases
8149 where stack trace is not available (i.e.,the stack trace was not collected), it returns an
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008150 empty array.]]>
8151 </doc>
8152 </method>
8153 <method name="toString" return="java.lang.String"
8154 abstract="false" native="false" synchronized="false"
8155 static="false" final="false" visibility="public"
8156 deprecated="not deprecated">
8157 <doc>
8158 <![CDATA[Returns {@code getDeclaringSource().toString()} value.]]>
8159 </doc>
8160 </method>
8161 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008162 <![CDATA[Contains information about where and how an {@link Element element} was bound.
8163 <p>
8164 The {@link #getDeclaringSource() declaring source} refers to a location in source code that
8165 defines the Guice {@link Element element}. For example, if the element is created from a method
8166 annotated by {@literal @Provides}, the declaring source of element would be the method itself.
8167 <p>
8168 The {@link #getStackTrace()} refers to the sequence of calls ends at one of {@link Binder}
8169 {@code bindXXX()} methods and eventually defines the element. Note that {@link #getStackTrace()}
8170 lists {@link StackTraceElement StackTraceElements} in reverse chronological order. The first
8171 element (index zero) is the last method call and the last element is the first method invocation.
8172 By default, the stack trace is not collected. The default behavior can be changed by setting the
Sam Berlin05ca0df2013-12-07 13:37:29 -05008173 {@code guice_include_stack_traces} flag value. The value can be either {@code OFF}, {@code
8174 ONLY_FOR_DECLARING_SOURCE} or {@code COMPLETE}. Note that collecting stack traces for every
8175 binding can cause a performance hit when the injector is created.
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008176 <p>
8177 The sequence of class names of {@link Module modules} involved in the element creation can be
8178 retrieved by {@link #getModuleClassNames()}. Similar to {@link #getStackTrace()}, the order is
8179 reverse chronological. The first module (index 0) is the module that installs the {@link Element
8180 element}. The last module is the root module.
8181 <p>
8182 In order to support the cases where a Guice {@link Element element} is created from another
8183 Guice {@link Element element} (original) (e.g., by {@link Element#applyTo()}), it also
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008184 provides a reference to the original element source ({@link #getOriginalElementSource()}).]]>
8185 </doc>
8186 </class>
8187 <!-- end class com.google.inject.spi.ElementSource -->
8188 <!-- start interface com.google.inject.spi.ElementVisitor -->
8189 <interface name="ElementVisitor" abstract="true"
8190 static="false" final="false" visibility="public"
8191 deprecated="not deprecated">
8192 <method name="visit" return="V"
8193 abstract="true" native="false" synchronized="false"
8194 static="false" final="false" visibility="public"
8195 deprecated="not deprecated">
8196 <param name="binding" type="com.google.inject.Binding&lt;T&gt;"/>
8197 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008198 <![CDATA[Visit a mapping from a key (type and optional annotation) to the strategy for getting
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008199 instances of the type.]]>
8200 </doc>
8201 </method>
8202 <method name="visit" return="V"
8203 abstract="true" native="false" synchronized="false"
8204 static="false" final="false" visibility="public"
8205 deprecated="not deprecated">
8206 <param name="binding" type="com.google.inject.spi.InterceptorBinding"/>
8207 <doc>
8208 <![CDATA[Visit a registration of interceptors for matching methods of matching classes.]]>
8209 </doc>
8210 </method>
8211 <method name="visit" return="V"
8212 abstract="true" native="false" synchronized="false"
8213 static="false" final="false" visibility="public"
8214 deprecated="not deprecated">
8215 <param name="binding" type="com.google.inject.spi.ScopeBinding"/>
8216 <doc>
8217 <![CDATA[Visit a registration of a scope annotation with the scope that implements it.]]>
8218 </doc>
8219 </method>
8220 <method name="visit" return="V"
8221 abstract="true" native="false" synchronized="false"
8222 static="false" final="false" visibility="public"
8223 deprecated="not deprecated">
8224 <param name="binding" type="com.google.inject.spi.TypeConverterBinding"/>
8225 <doc>
8226 <![CDATA[Visit a registration of type converters for matching target types.]]>
8227 </doc>
8228 </method>
8229 <method name="visit" return="V"
8230 abstract="true" native="false" synchronized="false"
8231 static="false" final="false" visibility="public"
8232 deprecated="not deprecated">
8233 <param name="request" type="com.google.inject.spi.InjectionRequest&lt;?&gt;"/>
8234 <doc>
8235 <![CDATA[Visit a request to inject the instance fields and methods of an instance.]]>
8236 </doc>
8237 </method>
8238 <method name="visit" return="V"
8239 abstract="true" native="false" synchronized="false"
8240 static="false" final="false" visibility="public"
8241 deprecated="not deprecated">
8242 <param name="request" type="com.google.inject.spi.StaticInjectionRequest"/>
8243 <doc>
8244 <![CDATA[Visit a request to inject the static fields and methods of type.]]>
8245 </doc>
8246 </method>
8247 <method name="visit" return="V"
8248 abstract="true" native="false" synchronized="false"
8249 static="false" final="false" visibility="public"
8250 deprecated="not deprecated">
8251 <param name="lookup" type="com.google.inject.spi.ProviderLookup&lt;T&gt;"/>
8252 <doc>
8253 <![CDATA[Visit a lookup of the provider for a type.]]>
8254 </doc>
8255 </method>
8256 <method name="visit" return="V"
8257 abstract="true" native="false" synchronized="false"
8258 static="false" final="false" visibility="public"
8259 deprecated="not deprecated">
8260 <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup&lt;T&gt;"/>
8261 <doc>
8262 <![CDATA[Visit a lookup of the members injector.]]>
8263 </doc>
8264 </method>
8265 <method name="visit" return="V"
8266 abstract="true" native="false" synchronized="false"
8267 static="false" final="false" visibility="public"
8268 deprecated="not deprecated">
8269 <param name="message" type="com.google.inject.spi.Message"/>
8270 <doc>
8271 <![CDATA[Visit an error message and the context in which it occured.]]>
8272 </doc>
8273 </method>
8274 <method name="visit" return="V"
8275 abstract="true" native="false" synchronized="false"
8276 static="false" final="false" visibility="public"
8277 deprecated="not deprecated">
8278 <param name="elements" type="com.google.inject.spi.PrivateElements"/>
8279 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008280 <![CDATA[Visit a collection of configuration elements for a {@linkplain com.google.inject.PrivateBinder
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008281 private binder}.]]>
8282 </doc>
8283 </method>
8284 <method name="visit" return="V"
8285 abstract="true" native="false" synchronized="false"
8286 static="false" final="false" visibility="public"
8287 deprecated="not deprecated">
8288 <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/>
8289 <doc>
8290 <![CDATA[Visit an injectable type listener binding.]]>
8291 </doc>
8292 </method>
8293 <method name="visit" return="V"
8294 abstract="true" native="false" synchronized="false"
8295 static="false" final="false" visibility="public"
8296 deprecated="not deprecated">
8297 <param name="binding" type="com.google.inject.spi.ProvisionListenerBinding"/>
8298 <doc>
8299 <![CDATA[Visit a provision listener binding.]]>
8300 </doc>
8301 </method>
8302 <method name="visit" return="V"
8303 abstract="true" native="false" synchronized="false"
8304 static="false" final="false" visibility="public"
8305 deprecated="not deprecated">
8306 <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/>
8307 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008308 <![CDATA[Visit a require explicit bindings command.
8309
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008310 @since 3.0]]>
8311 </doc>
8312 </method>
8313 <method name="visit" return="V"
8314 abstract="true" native="false" synchronized="false"
8315 static="false" final="false" visibility="public"
8316 deprecated="not deprecated">
8317 <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/>
8318 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008319 <![CDATA[Visit a disable circular proxies command.
8320
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008321 @since 3.0]]>
8322 </doc>
8323 </method>
8324 <method name="visit" return="V"
8325 abstract="true" native="false" synchronized="false"
8326 static="false" final="false" visibility="public"
8327 deprecated="not deprecated">
8328 <param name="option" type="com.google.inject.spi.RequireAtInjectOnConstructorsOption"/>
8329 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008330 <![CDATA[Visit a require explicit {@literal @}{@link Inject} command.
8331
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008332 @since 4.0]]>
8333 </doc>
8334 </method>
8335 <method name="visit" return="V"
8336 abstract="true" native="false" synchronized="false"
8337 static="false" final="false" visibility="public"
8338 deprecated="not deprecated">
8339 <param name="option" type="com.google.inject.spi.RequireExactBindingAnnotationsOption"/>
8340 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008341 <![CDATA[Visit a require exact binding annotations command.
8342
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008343 @since 4.0]]>
8344 </doc>
8345 </method>
8346 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008347 <![CDATA[Visit elements.
8348
8349 @param <V> any type to be returned by the visit method. Use {@link Void} with
8350 {@code return null} if no return type is needed.
8351
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008352 @since 2.0]]>
8353 </doc>
8354 </interface>
8355 <!-- end interface com.google.inject.spi.ElementVisitor -->
8356 <!-- start interface com.google.inject.spi.ExposedBinding -->
8357 <interface name="ExposedBinding" abstract="true"
8358 static="false" final="false" visibility="public"
8359 deprecated="not deprecated">
8360 <implements name="com.google.inject.Binding&lt;T&gt;"/>
8361 <implements name="com.google.inject.spi.HasDependencies"/>
8362 <method name="getPrivateElements" return="com.google.inject.spi.PrivateElements"
8363 abstract="true" native="false" synchronized="false"
8364 static="false" final="false" visibility="public"
8365 deprecated="not deprecated">
8366 <doc>
8367 <![CDATA[Returns the enclosed environment that holds the original binding.]]>
8368 </doc>
8369 </method>
8370 <method name="applyTo"
8371 abstract="true" native="false" synchronized="false"
8372 static="false" final="false" visibility="public"
8373 deprecated="not deprecated">
8374 <param name="binder" type="com.google.inject.Binder"/>
8375 <doc>
8376 <![CDATA[Unsupported. Always throws {@link UnsupportedOperationException}.]]>
8377 </doc>
8378 </method>
8379 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008380 <![CDATA[A binding to a key exposed from an enclosed private environment.
8381
8382 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008383 @since 2.0]]>
8384 </doc>
8385 </interface>
8386 <!-- end interface com.google.inject.spi.ExposedBinding -->
8387 <!-- start interface com.google.inject.spi.HasDependencies -->
8388 <interface name="HasDependencies" abstract="true"
8389 static="false" final="false" visibility="public"
8390 deprecated="not deprecated">
8391 <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
8392 abstract="true" native="false" synchronized="false"
8393 static="false" final="false" visibility="public"
8394 deprecated="not deprecated">
8395 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008396 <![CDATA[Returns the known dependencies for this type. If this has dependencies whose values are not
8397 known statically, a dependency for the {@link com.google.inject.Injector Injector} will be
8398 included in the returned set.
8399
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008400 @return a possibly empty set]]>
8401 </doc>
8402 </method>
8403 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008404 <![CDATA[Implemented by {@link com.google.inject.Binding bindings}, {@link com.google.inject.Provider
8405 providers} and instances that expose their dependencies explicitly.
8406
8407 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008408 @since 2.0]]>
8409 </doc>
8410 </interface>
8411 <!-- end interface com.google.inject.spi.HasDependencies -->
8412 <!-- start interface com.google.inject.spi.InjectionListener -->
8413 <interface name="InjectionListener" abstract="true"
8414 static="false" final="false" visibility="public"
8415 deprecated="not deprecated">
8416 <method name="afterInjection"
8417 abstract="true" native="false" synchronized="false"
8418 static="false" final="false" visibility="public"
8419 deprecated="not deprecated">
8420 <param name="injectee" type="I"/>
8421 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008422 <![CDATA[Invoked by Guice after it injects the fields and methods of instance.
8423
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008424 @param injectee instance that Guice injected dependencies into]]>
8425 </doc>
8426 </method>
8427 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008428 <![CDATA[Listens for injections into instances of type {@code I}. Useful for performing further
8429 injections, post-injection initialization, and more.
8430
8431 @author crazybob@google.com (Bob Lee)
8432 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008433 @since 2.0]]>
8434 </doc>
8435 </interface>
8436 <!-- end interface com.google.inject.spi.InjectionListener -->
8437 <!-- start class com.google.inject.spi.InjectionPoint -->
8438 <class name="InjectionPoint" extends="java.lang.Object"
8439 abstract="false"
8440 static="false" final="true" visibility="public"
8441 deprecated="not deprecated">
8442 <method name="getMember" return="java.lang.reflect.Member"
8443 abstract="false" native="false" synchronized="false"
8444 static="false" final="false" visibility="public"
8445 deprecated="not deprecated">
8446 <doc>
8447 <![CDATA[Returns the injected constructor, field, or method.]]>
8448 </doc>
8449 </method>
8450 <method name="getDependencies" return="java.util.List&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
8451 abstract="false" native="false" synchronized="false"
8452 static="false" final="false" visibility="public"
8453 deprecated="not deprecated">
8454 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008455 <![CDATA[Returns the dependencies for this injection point. If the injection point is for a method or
8456 constructor, the dependencies will correspond to that member's parameters. Field injection
8457 points always have a single dependency for the field itself.
8458
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008459 @return a possibly-empty list]]>
8460 </doc>
8461 </method>
8462 <method name="isOptional" return="boolean"
8463 abstract="false" native="false" synchronized="false"
8464 static="false" final="false" visibility="public"
8465 deprecated="not deprecated">
8466 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008467 <![CDATA[Returns true if this injection point shall be skipped if the injector cannot resolve bindings
8468 for all required dependencies. Both explicit bindings (as specified in a module), and implicit
8469 bindings ({@literal @}{@link com.google.inject.ImplementedBy ImplementedBy}, default
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008470 constructors etc.) may be used to satisfy optional injection points.]]>
8471 </doc>
8472 </method>
8473 <method name="isToolable" return="boolean"
8474 abstract="false" native="false" synchronized="false"
8475 static="false" final="false" visibility="public"
8476 deprecated="not deprecated">
8477 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008478 <![CDATA[Returns true if the element is annotated with {@literal @}{@link Toolable}.
8479
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008480 @since 3.0]]>
8481 </doc>
8482 </method>
8483 <method name="getDeclaringType" return="com.google.inject.TypeLiteral&lt;?&gt;"
8484 abstract="false" native="false" synchronized="false"
8485 static="false" final="false" visibility="public"
8486 deprecated="not deprecated">
8487 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008488 <![CDATA[Returns the generic type that defines this injection point. If the member exists on a
8489 parameterized type, the result will include more type information than the member's {@link
8490 Member#getDeclaringClass() raw declaring class}.
8491
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008492 @since 3.0]]>
8493 </doc>
8494 </method>
8495 <method name="equals" return="boolean"
8496 abstract="false" native="false" synchronized="false"
8497 static="false" final="false" visibility="public"
8498 deprecated="not deprecated">
8499 <param name="o" type="java.lang.Object"/>
8500 </method>
8501 <method name="hashCode" return="int"
8502 abstract="false" native="false" synchronized="false"
8503 static="false" final="false" visibility="public"
8504 deprecated="not deprecated">
8505 </method>
8506 <method name="toString" return="java.lang.String"
8507 abstract="false" native="false" synchronized="false"
8508 static="false" final="false" visibility="public"
8509 deprecated="not deprecated">
8510 </method>
8511 <method name="forConstructor" return="com.google.inject.spi.InjectionPoint"
8512 abstract="false" native="false" synchronized="false"
8513 static="true" final="false" visibility="public"
8514 deprecated="not deprecated">
8515 <param name="constructor" type="java.lang.reflect.Constructor&lt;T&gt;"/>
8516 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008517 <![CDATA[Returns a new injection point for the specified constructor. If the declaring type of {@code
8518 constructor} is parameterized (such as {@code List<T>}), prefer the overload that includes a
8519 type literal.
8520
8521 @param constructor any single constructor present on {@code type}.
8522
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008523 @since 3.0]]>
8524 </doc>
8525 </method>
8526 <method name="forConstructor" return="com.google.inject.spi.InjectionPoint"
8527 abstract="false" native="false" synchronized="false"
8528 static="true" final="false" visibility="public"
8529 deprecated="not deprecated">
8530 <param name="constructor" type="java.lang.reflect.Constructor&lt;T&gt;"/>
8531 <param name="type" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
8532 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008533 <![CDATA[Returns a new injection point for the specified constructor of {@code type}.
8534
8535 @param constructor any single constructor present on {@code type}.
8536 @param type the concrete type that defines {@code constructor}.
8537
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008538 @since 3.0]]>
8539 </doc>
8540 </method>
8541 <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint"
8542 abstract="false" native="false" synchronized="false"
8543 static="true" final="false" visibility="public"
8544 deprecated="not deprecated">
8545 <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
8546 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008547 <![CDATA[Returns a new injection point for the injectable constructor of {@code type}.
8548
8549 @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject},
8550 or a no-arguments constructor that is not private.
8551 @throws ConfigurationException if there is no injectable constructor, more than one injectable
8552 constructor, or if parameters of the injectable constructor are malformed, such as a
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008553 parameter with multiple binding annotations.]]>
8554 </doc>
8555 </method>
8556 <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint"
8557 abstract="false" native="false" synchronized="false"
8558 static="true" final="false" visibility="public"
8559 deprecated="not deprecated">
8560 <param name="type" type="java.lang.Class&lt;?&gt;"/>
8561 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008562 <![CDATA[Returns a new injection point for the injectable constructor of {@code type}.
8563
8564 @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject},
8565 or a no-arguments constructor that is not private.
8566 @throws ConfigurationException if there is no injectable constructor, more than one injectable
8567 constructor, or if parameters of the injectable constructor are malformed, such as a
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008568 parameter with multiple binding annotations.]]>
8569 </doc>
8570 </method>
8571 <method name="forStaticMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
8572 abstract="false" native="false" synchronized="false"
8573 static="true" final="false" visibility="public"
8574 deprecated="not deprecated">
8575 <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
8576 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008577 <![CDATA[Returns all static method and field injection points on {@code type}.
8578
8579 @return a possibly empty set of injection points. The set has a specified iteration order. All
8580 fields are returned and then all methods. Within the fields, supertype fields are returned
8581 before subtype fields. Similarly, supertype methods are returned before subtype methods.
8582 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
8583 a field with multiple binding annotations. The exception's {@link
8584 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008585 of the valid injection points.]]>
8586 </doc>
8587 </method>
8588 <method name="forStaticMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
8589 abstract="false" native="false" synchronized="false"
8590 static="true" final="false" visibility="public"
8591 deprecated="not deprecated">
8592 <param name="type" type="java.lang.Class&lt;?&gt;"/>
8593 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008594 <![CDATA[Returns all static method and field injection points on {@code type}.
8595
8596 @return a possibly empty set of injection points. The set has a specified iteration order. All
8597 fields are returned and then all methods. Within the fields, supertype fields are returned
8598 before subtype fields. Similarly, supertype methods are returned before subtype methods.
8599 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
8600 a field with multiple binding annotations. The exception's {@link
8601 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008602 of the valid injection points.]]>
8603 </doc>
8604 </method>
8605 <method name="forInstanceMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
8606 abstract="false" native="false" synchronized="false"
8607 static="true" final="false" visibility="public"
8608 deprecated="not deprecated">
8609 <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
8610 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008611 <![CDATA[Returns all instance method and field injection points on {@code type}.
8612
8613 @return a possibly empty set of injection points. The set has a specified iteration order. All
8614 fields are returned and then all methods. Within the fields, supertype fields are returned
8615 before subtype fields. Similarly, supertype methods are returned before subtype methods.
8616 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
8617 a field with multiple binding annotations. The exception's {@link
8618 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008619 of the valid injection points.]]>
8620 </doc>
8621 </method>
8622 <method name="forInstanceMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
8623 abstract="false" native="false" synchronized="false"
8624 static="true" final="false" visibility="public"
8625 deprecated="not deprecated">
8626 <param name="type" type="java.lang.Class&lt;?&gt;"/>
8627 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008628 <![CDATA[Returns all instance method and field injection points on {@code type}.
8629
8630 @return a possibly empty set of injection points. The set has a specified iteration order. All
8631 fields are returned and then all methods. Within the fields, supertype fields are returned
8632 before subtype fields. Similarly, supertype methods are returned before subtype methods.
8633 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
8634 a field with multiple binding annotations. The exception's {@link
8635 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008636 of the valid injection points.]]>
8637 </doc>
8638 </method>
8639 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008640 <![CDATA[A constructor, field or method that can receive injections. Typically this is a member with the
8641 {@literal @}{@link Inject} annotation. For non-private, no argument constructors, the member may
8642 omit the annotation.
8643
8644 @author crazybob@google.com (Bob Lee)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008645 @since 2.0]]>
8646 </doc>
8647 </class>
8648 <!-- end class com.google.inject.spi.InjectionPoint -->
8649 <!-- start class com.google.inject.spi.InjectionRequest -->
8650 <class name="InjectionRequest" extends="java.lang.Object"
8651 abstract="false"
8652 static="false" final="true" visibility="public"
8653 deprecated="not deprecated">
8654 <implements name="com.google.inject.spi.Element"/>
8655 <constructor name="InjectionRequest" type="java.lang.Object, com.google.inject.TypeLiteral&lt;T&gt;, T"
8656 static="false" final="false" visibility="public"
8657 deprecated="not deprecated">
8658 </constructor>
8659 <method name="getSource" return="java.lang.Object"
8660 abstract="false" native="false" synchronized="false"
8661 static="false" final="false" visibility="public"
8662 deprecated="not deprecated">
8663 </method>
8664 <method name="getInstance" return="T"
8665 abstract="false" native="false" synchronized="false"
8666 static="false" final="false" visibility="public"
8667 deprecated="not deprecated">
8668 </method>
8669 <method name="getType" return="com.google.inject.TypeLiteral&lt;T&gt;"
8670 abstract="false" native="false" synchronized="false"
8671 static="false" final="false" visibility="public"
8672 deprecated="not deprecated">
8673 </method>
8674 <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
8675 abstract="false" native="false" synchronized="false"
8676 static="false" final="false" visibility="public"
8677 deprecated="not deprecated">
8678 <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/>
8679 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008680 <![CDATA[Returns the instance methods and fields of {@code instance} that will be injected to fulfill
8681 this request.
8682
8683 @return a possibly empty set of injection points. The set has a specified iteration order. All
8684 fields are returned and then all methods. Within the fields, supertype fields are returned
8685 before subtype fields. Similarly, supertype methods are returned before subtype methods.
8686 @throws ConfigurationException if there is a malformed injection point on the class of {@code
8687 instance}, such as a field with multiple binding annotations. The exception's {@link
8688 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008689 of the valid injection points.]]>
8690 </doc>
8691 </method>
8692 <method name="acceptVisitor" return="R"
8693 abstract="false" native="false" synchronized="false"
8694 static="false" final="false" visibility="public"
8695 deprecated="not deprecated">
8696 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;R&gt;"/>
8697 </method>
8698 <method name="applyTo"
8699 abstract="false" native="false" synchronized="false"
8700 static="false" final="false" visibility="public"
8701 deprecated="not deprecated">
8702 <param name="binder" type="com.google.inject.Binder"/>
8703 </method>
8704 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008705 <![CDATA[A request to inject the instance fields and methods of an instance. Requests are created
8706 explicitly in a module using {@link com.google.inject.Binder#requestInjection(Object)
8707 requestInjection()} statements:
8708 <pre>
8709 requestInjection(serviceInstance);</pre>
8710
8711 @author mikeward@google.com (Mike Ward)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008712 @since 2.0]]>
8713 </doc>
8714 </class>
8715 <!-- end class com.google.inject.spi.InjectionRequest -->
8716 <!-- start interface com.google.inject.spi.InstanceBinding -->
8717 <interface name="InstanceBinding" abstract="true"
8718 static="false" final="false" visibility="public"
8719 deprecated="not deprecated">
8720 <implements name="com.google.inject.Binding&lt;T&gt;"/>
8721 <implements name="com.google.inject.spi.HasDependencies"/>
8722 <method name="getInstance" return="T"
8723 abstract="true" native="false" synchronized="false"
8724 static="false" final="false" visibility="public"
8725 deprecated="not deprecated">
8726 <doc>
8727 <![CDATA[Returns the user-supplied instance.]]>
8728 </doc>
8729 </method>
8730 <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
8731 abstract="true" native="false" synchronized="false"
8732 static="false" final="false" visibility="public"
8733 deprecated="not deprecated">
8734 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008735 <![CDATA[Returns the field and method injection points of the instance, injected at injector-creation
8736 time only.
8737
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008738 @return a possibly empty set]]>
8739 </doc>
8740 </method>
8741 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008742 <![CDATA[A binding to a single instance. The same instance is returned for every injection.
8743
8744 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008745 @since 2.0]]>
8746 </doc>
8747 </interface>
8748 <!-- end interface com.google.inject.spi.InstanceBinding -->
8749 <!-- start class com.google.inject.spi.InterceptorBinding -->
8750 <class name="InterceptorBinding" extends="java.lang.Object"
8751 abstract="false"
8752 static="false" final="true" visibility="public"
8753 deprecated="not deprecated">
8754 <implements name="com.google.inject.spi.Element"/>
8755 <method name="getSource" return="java.lang.Object"
8756 abstract="false" native="false" synchronized="false"
8757 static="false" final="false" visibility="public"
8758 deprecated="not deprecated">
8759 </method>
8760 <method name="getClassMatcher" return="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"
8761 abstract="false" native="false" synchronized="false"
8762 static="false" final="false" visibility="public"
8763 deprecated="not deprecated">
8764 </method>
8765 <method name="getMethodMatcher" return="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"
8766 abstract="false" native="false" synchronized="false"
8767 static="false" final="false" visibility="public"
8768 deprecated="not deprecated">
8769 </method>
8770 <method name="getInterceptors" return="java.util.List&lt;org.aopalliance.intercept.MethodInterceptor&gt;"
8771 abstract="false" native="false" synchronized="false"
8772 static="false" final="false" visibility="public"
8773 deprecated="not deprecated">
8774 </method>
8775 <method name="acceptVisitor" return="T"
8776 abstract="false" native="false" synchronized="false"
8777 static="false" final="false" visibility="public"
8778 deprecated="not deprecated">
8779 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
8780 </method>
8781 <method name="applyTo"
8782 abstract="false" native="false" synchronized="false"
8783 static="false" final="false" visibility="public"
8784 deprecated="not deprecated">
8785 <param name="binder" type="com.google.inject.Binder"/>
8786 </method>
8787 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008788 <![CDATA[Registration of interceptors for matching methods of matching classes. Instances are created
8789 explicitly in a module using {@link com.google.inject.Binder#bindInterceptor(
8790 Matcher, Matcher, MethodInterceptor[]) bindInterceptor()} statements:
8791 <pre>
8792 bindInterceptor(Matchers.subclassesOf(MyAction.class),
8793 Matchers.annotatedWith(Transactional.class),
8794 new MyTransactionInterceptor());</pre>
8795
8796 or from an injectable type listener using {@link TypeEncounter#bindInterceptor(Matcher,
8797 org.aopalliance.intercept.MethodInterceptor[]) TypeEncounter.bindInterceptor()}.
8798
8799 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008800 @since 2.0]]>
8801 </doc>
8802 </class>
8803 <!-- end class com.google.inject.spi.InterceptorBinding -->
8804 <!-- start interface com.google.inject.spi.LinkedKeyBinding -->
8805 <interface name="LinkedKeyBinding" abstract="true"
8806 static="false" final="false" visibility="public"
8807 deprecated="not deprecated">
8808 <implements name="com.google.inject.Binding&lt;T&gt;"/>
8809 <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends T&gt;"
8810 abstract="true" native="false" synchronized="false"
8811 static="false" final="false" visibility="public"
8812 deprecated="not deprecated">
8813 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008814 <![CDATA[Returns the linked key used to resolve injections. That binding can be retrieved from an
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008815 injector using {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]>
8816 </doc>
8817 </method>
8818 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008819 <![CDATA[A binding to a linked key. The other key's binding is used to resolve injections.
8820
8821 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008822 @since 2.0]]>
8823 </doc>
8824 </interface>
8825 <!-- end interface com.google.inject.spi.LinkedKeyBinding -->
8826 <!-- start class com.google.inject.spi.MembersInjectorLookup -->
8827 <class name="MembersInjectorLookup" extends="java.lang.Object"
8828 abstract="false"
8829 static="false" final="true" visibility="public"
8830 deprecated="not deprecated">
8831 <implements name="com.google.inject.spi.Element"/>
8832 <constructor name="MembersInjectorLookup" type="java.lang.Object, com.google.inject.TypeLiteral&lt;T&gt;"
8833 static="false" final="false" visibility="public"
8834 deprecated="not deprecated">
8835 </constructor>
8836 <method name="getSource" return="java.lang.Object"
8837 abstract="false" native="false" synchronized="false"
8838 static="false" final="false" visibility="public"
8839 deprecated="not deprecated">
8840 </method>
8841 <method name="getType" return="com.google.inject.TypeLiteral&lt;T&gt;"
8842 abstract="false" native="false" synchronized="false"
8843 static="false" final="false" visibility="public"
8844 deprecated="not deprecated">
8845 <doc>
8846 <![CDATA[Gets the type containing the members to be injected.]]>
8847 </doc>
8848 </method>
8849 <method name="acceptVisitor" return="T"
8850 abstract="false" native="false" synchronized="false"
8851 static="false" final="false" visibility="public"
8852 deprecated="not deprecated">
8853 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
8854 </method>
8855 <method name="initializeDelegate"
8856 abstract="false" native="false" synchronized="false"
8857 static="false" final="false" visibility="public"
8858 deprecated="not deprecated">
8859 <param name="delegate" type="com.google.inject.MembersInjector&lt;T&gt;"/>
8860 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008861 <![CDATA[Sets the actual members injector.
8862
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008863 @throws IllegalStateException if the delegate is already set]]>
8864 </doc>
8865 </method>
8866 <method name="applyTo"
8867 abstract="false" native="false" synchronized="false"
8868 static="false" final="false" visibility="public"
8869 deprecated="not deprecated">
8870 <param name="binder" type="com.google.inject.Binder"/>
8871 </method>
8872 <method name="getDelegate" return="com.google.inject.MembersInjector&lt;T&gt;"
8873 abstract="false" native="false" synchronized="false"
8874 static="false" final="false" visibility="public"
8875 deprecated="not deprecated">
8876 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008877 <![CDATA[Returns the delegate members injector, or {@code null} if it has not yet been initialized.
8878 The delegate will be initialized when this element is processed, or otherwise used to create
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008879 an injector.]]>
8880 </doc>
8881 </method>
8882 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
8883 abstract="false" native="false" synchronized="false"
8884 static="false" final="false" visibility="public"
8885 deprecated="not deprecated">
8886 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008887 <![CDATA[Returns the looked up members injector. The result is not valid until this lookup has been
8888 initialized, which usually happens when the injector is created. The members injector will
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008889 throw an {@code IllegalStateException} if you try to use it beforehand.]]>
8890 </doc>
8891 </method>
8892 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008893 <![CDATA[A lookup of the members injector for a type. Lookups are created explicitly in a module using
8894 {@link com.google.inject.Binder#getMembersInjector(Class) getMembersInjector()} statements:
8895 <pre>
8896 MembersInjector&lt;PaymentService&gt; membersInjector
8897 = getMembersInjector(PaymentService.class);</pre>
8898
8899 @author crazybob@google.com (Bob Lee)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008900 @since 2.0]]>
8901 </doc>
8902 </class>
8903 <!-- end class com.google.inject.spi.MembersInjectorLookup -->
8904 <!-- start class com.google.inject.spi.Message -->
8905 <class name="Message" extends="java.lang.Object"
8906 abstract="false"
8907 static="false" final="true" visibility="public"
8908 deprecated="not deprecated">
8909 <implements name="java.io.Serializable"/>
8910 <implements name="com.google.inject.spi.Element"/>
8911 <constructor name="Message" type="java.util.List&lt;java.lang.Object&gt;, java.lang.String, java.lang.Throwable"
8912 static="false" final="false" visibility="public"
8913 deprecated="not deprecated">
8914 <doc>
8915 <![CDATA[@since 2.0]]>
8916 </doc>
8917 </constructor>
8918 <constructor name="Message" type="java.lang.String, java.lang.Throwable"
8919 static="false" final="false" visibility="public"
8920 deprecated="not deprecated">
8921 <doc>
8922 <![CDATA[@since 4.0]]>
8923 </doc>
8924 </constructor>
8925 <constructor name="Message" type="java.lang.Object, java.lang.String"
8926 static="false" final="false" visibility="public"
8927 deprecated="not deprecated">
8928 </constructor>
8929 <constructor name="Message" type="java.lang.String"
8930 static="false" final="false" visibility="public"
8931 deprecated="not deprecated">
8932 </constructor>
8933 <method name="getSource" return="java.lang.String"
8934 abstract="false" native="false" synchronized="false"
8935 static="false" final="false" visibility="public"
8936 deprecated="not deprecated">
8937 </method>
8938 <method name="getSources" return="java.util.List&lt;java.lang.Object&gt;"
8939 abstract="false" native="false" synchronized="false"
8940 static="false" final="false" visibility="public"
8941 deprecated="not deprecated">
8942 <doc>
8943 <![CDATA[@since 2.0]]>
8944 </doc>
8945 </method>
8946 <method name="getMessage" return="java.lang.String"
8947 abstract="false" native="false" synchronized="false"
8948 static="false" final="false" visibility="public"
8949 deprecated="not deprecated">
8950 <doc>
8951 <![CDATA[Gets the error message text.]]>
8952 </doc>
8953 </method>
8954 <method name="acceptVisitor" return="T"
8955 abstract="false" native="false" synchronized="false"
8956 static="false" final="false" visibility="public"
8957 deprecated="not deprecated">
8958 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
8959 <doc>
8960 <![CDATA[@since 2.0]]>
8961 </doc>
8962 </method>
8963 <method name="getCause" return="java.lang.Throwable"
8964 abstract="false" native="false" synchronized="false"
8965 static="false" final="false" visibility="public"
8966 deprecated="not deprecated">
8967 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07008968 <![CDATA[Returns the throwable that caused this message, or {@code null} if this
8969 message was not caused by a throwable.
8970
Christian Edward Gruber509e3542014-03-20 20:37:34 -07008971 @since 2.0]]>
8972 </doc>
8973 </method>
8974 <method name="toString" return="java.lang.String"
8975 abstract="false" native="false" synchronized="false"
8976 static="false" final="false" visibility="public"
8977 deprecated="not deprecated">
8978 </method>
8979 <method name="hashCode" return="int"
8980 abstract="false" native="false" synchronized="false"
8981 static="false" final="false" visibility="public"
8982 deprecated="not deprecated">
8983 </method>
8984 <method name="equals" return="boolean"
8985 abstract="false" native="false" synchronized="false"
8986 static="false" final="false" visibility="public"
8987 deprecated="not deprecated">
8988 <param name="o" type="java.lang.Object"/>
8989 </method>
8990 <method name="applyTo"
8991 abstract="false" native="false" synchronized="false"
8992 static="false" final="false" visibility="public"
8993 deprecated="not deprecated">
8994 <param name="binder" type="com.google.inject.Binder"/>
8995 <doc>
8996 <![CDATA[@since 2.0]]>
8997 </doc>
8998 </method>
8999 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009000 <![CDATA[An error message and the context in which it occured. Messages are usually created internally by
9001 Guice and its extensions. Messages can be created explicitly in a module using {@link
9002 com.google.inject.Binder#addError(Throwable) addError()} statements:
9003 <pre>
9004 try {
9005 bindPropertiesFromFile();
9006 } catch (IOException e) {
9007 addError(e);
9008 }</pre>
9009
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009010 @author crazybob@google.com (Bob Lee)]]>
9011 </doc>
9012 </class>
9013 <!-- end class com.google.inject.spi.Message -->
9014 <!-- start interface com.google.inject.spi.PrivateElements -->
9015 <interface name="PrivateElements" abstract="true"
9016 static="false" final="false" visibility="public"
9017 deprecated="not deprecated">
9018 <implements name="com.google.inject.spi.Element"/>
9019 <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
9020 abstract="true" native="false" synchronized="false"
9021 static="false" final="false" visibility="public"
9022 deprecated="not deprecated">
9023 <doc>
9024 <![CDATA[Returns the configuration information in this private environment.]]>
9025 </doc>
9026 </method>
9027 <method name="getInjector" return="com.google.inject.Injector"
9028 abstract="true" native="false" synchronized="false"
9029 static="false" final="false" visibility="public"
9030 deprecated="not deprecated">
9031 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009032 <![CDATA[Returns the child injector that hosts these private elements, or null if the elements haven't
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009033 been used to create an injector.]]>
9034 </doc>
9035 </method>
9036 <method name="getExposedKeys" return="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"
9037 abstract="true" native="false" synchronized="false"
9038 static="false" final="false" visibility="public"
9039 deprecated="not deprecated">
9040 <doc>
9041 <![CDATA[Returns the unique exposed keys for these private elements.]]>
9042 </doc>
9043 </method>
9044 <method name="getExposedSource" return="java.lang.Object"
9045 abstract="true" native="false" synchronized="false"
9046 static="false" final="false" visibility="public"
9047 deprecated="not deprecated">
9048 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
9049 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009050 <![CDATA[Returns an arbitrary object containing information about the "place" where this key was
9051 exposed. Used by Guice in the production of descriptive error messages.
9052
9053 <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good
9054 example. Tools should simply call {@code toString()} on the source object if the type is
9055 unfamiliar.
9056
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009057 @param key one of the keys exposed by this module.]]>
9058 </doc>
9059 </method>
9060 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009061 <![CDATA[A private collection of elements that are hidden from the enclosing injector or module by
9062 default. See {@link com.google.inject.PrivateModule PrivateModule} for details.
9063
9064 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009065 @since 2.0]]>
9066 </doc>
9067 </interface>
9068 <!-- end interface com.google.inject.spi.PrivateElements -->
9069 <!-- start interface com.google.inject.spi.ProviderBinding -->
9070 <interface name="ProviderBinding" abstract="true"
9071 static="false" final="false" visibility="public"
9072 deprecated="not deprecated">
9073 <implements name="com.google.inject.Binding&lt;T&gt;"/>
9074 <method name="getProvidedKey" return="com.google.inject.Key&lt;?&gt;"
9075 abstract="true" native="false" synchronized="false"
9076 static="false" final="false" visibility="public"
9077 deprecated="not deprecated">
9078 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009079 <![CDATA[Returns the key whose binding is used to {@link Provider#get provide instances}. That binding
9080 can be retrieved from an injector using {@link com.google.inject.Injector#getBinding(Key)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009081 Injector.getBinding(providedKey)}]]>
9082 </doc>
9083 </method>
9084 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009085 <![CDATA[A binding to a {@link Provider} that delegates to the binding for the provided type. This binding
9086 is used whenever a {@code Provider<T>} is injected (as opposed to injecting {@code T} directly).
9087
9088 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009089 @since 2.0]]>
9090 </doc>
9091 </interface>
9092 <!-- end interface com.google.inject.spi.ProviderBinding -->
9093 <!-- start interface com.google.inject.spi.ProviderInstanceBinding -->
9094 <interface name="ProviderInstanceBinding" abstract="true"
9095 static="false" final="false" visibility="public"
9096 deprecated="not deprecated">
9097 <implements name="com.google.inject.Binding&lt;T&gt;"/>
9098 <implements name="com.google.inject.spi.HasDependencies"/>
9099 <method name="getProviderInstance" return="com.google.inject.Provider&lt;? extends T&gt;"
9100 abstract="true" native="false" synchronized="false"
9101 static="false" final="false" visibility="public"
9102 deprecated="Use {@link #getUserSuppliedProvider} instead.">
9103 <doc>
9104 <![CDATA[If the user supplied a JSR330 binding, then this will wrap that one. To always return the
9105 user-supplied provider, use {@link #getUserSuppliedProvider}.
9106
9107 @deprecated Use {@link #getUserSuppliedProvider} instead.]]>
9108 </doc>
9109 </method>
9110 <method name="getUserSuppliedProvider" return="javax.inject.Provider&lt;? extends T&gt;"
9111 abstract="true" native="false" synchronized="false"
9112 static="false" final="false" visibility="public"
9113 deprecated="not deprecated">
9114 <doc>
9115 <![CDATA[Returns the user-supplied, unscoped provider.]]>
9116 </doc>
9117 </method>
9118 <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
9119 abstract="true" native="false" synchronized="false"
9120 static="false" final="false" visibility="public"
9121 deprecated="not deprecated">
9122 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009123 <![CDATA[Returns the field and method injection points of the provider, injected at injector-creation
9124 time only.
9125
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009126 @return a possibly empty set]]>
9127 </doc>
9128 </method>
9129 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009130 <![CDATA[A binding to a provider instance. The provider's {@code get} method is invoked to resolve
9131 injections.
9132
9133 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009134 @since 2.0]]>
9135 </doc>
9136 </interface>
9137 <!-- end interface com.google.inject.spi.ProviderInstanceBinding -->
9138 <!-- start interface com.google.inject.spi.ProviderKeyBinding -->
9139 <interface name="ProviderKeyBinding" abstract="true"
9140 static="false" final="false" visibility="public"
9141 deprecated="not deprecated">
9142 <implements name="com.google.inject.Binding&lt;T&gt;"/>
9143 <method name="getProviderKey" return="com.google.inject.Key&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"
9144 abstract="true" native="false" synchronized="false"
9145 static="false" final="false" visibility="public"
9146 deprecated="not deprecated">
9147 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009148 <![CDATA[Returns the key used to resolve the provider's binding. That binding can be retrieved from an
9149 injector using {@link com.google.inject.Injector#getBinding(Key)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009150 Injector.getBinding(providerKey)}]]>
9151 </doc>
9152 </method>
9153 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009154 <![CDATA[A binding to a provider key. To resolve injections, the provider key is first resolved, then that
9155 provider's {@code get} method is invoked.
9156
9157 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009158 @since 2.0]]>
9159 </doc>
9160 </interface>
9161 <!-- end interface com.google.inject.spi.ProviderKeyBinding -->
9162 <!-- start class com.google.inject.spi.ProviderLookup -->
9163 <class name="ProviderLookup" extends="java.lang.Object"
9164 abstract="false"
9165 static="false" final="true" visibility="public"
9166 deprecated="not deprecated">
9167 <implements name="com.google.inject.spi.Element"/>
9168 <constructor name="ProviderLookup" type="java.lang.Object, com.google.inject.Key&lt;T&gt;"
9169 static="false" final="false" visibility="public"
9170 deprecated="not deprecated">
9171 </constructor>
9172 <method name="getSource" return="java.lang.Object"
9173 abstract="false" native="false" synchronized="false"
9174 static="false" final="false" visibility="public"
9175 deprecated="not deprecated">
9176 </method>
9177 <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
9178 abstract="false" native="false" synchronized="false"
9179 static="false" final="false" visibility="public"
9180 deprecated="not deprecated">
9181 </method>
9182 <method name="acceptVisitor" return="T"
9183 abstract="false" native="false" synchronized="false"
9184 static="false" final="false" visibility="public"
9185 deprecated="not deprecated">
9186 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
9187 </method>
9188 <method name="initializeDelegate"
9189 abstract="false" native="false" synchronized="false"
9190 static="false" final="false" visibility="public"
9191 deprecated="not deprecated">
9192 <param name="delegate" type="com.google.inject.Provider&lt;T&gt;"/>
9193 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009194 <![CDATA[Sets the actual provider.
9195
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009196 @throws IllegalStateException if the delegate is already set]]>
9197 </doc>
9198 </method>
9199 <method name="applyTo"
9200 abstract="false" native="false" synchronized="false"
9201 static="false" final="false" visibility="public"
9202 deprecated="not deprecated">
9203 <param name="binder" type="com.google.inject.Binder"/>
9204 </method>
9205 <method name="getDelegate" return="com.google.inject.Provider&lt;T&gt;"
9206 abstract="false" native="false" synchronized="false"
9207 static="false" final="false" visibility="public"
9208 deprecated="not deprecated">
9209 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009210 <![CDATA[Returns the delegate provider, or {@code null} if it has not yet been initialized. The delegate
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009211 will be initialized when this element is processed, or otherwise used to create an injector.]]>
9212 </doc>
9213 </method>
9214 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
9215 abstract="false" native="false" synchronized="false"
9216 static="false" final="false" visibility="public"
9217 deprecated="not deprecated">
9218 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009219 <![CDATA[Returns the looked up provider. The result is not valid until this lookup has been initialized,
9220 which usually happens when the injector is created. The provider will throw an {@code
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009221 IllegalStateException} if you try to use it beforehand.]]>
9222 </doc>
9223 </method>
9224 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009225 <![CDATA[A lookup of the provider for a type. Lookups are created explicitly in a module using
9226 {@link com.google.inject.Binder#getProvider(Class) getProvider()} statements:
9227 <pre>
9228 Provider&lt;PaymentService&gt; paymentServiceProvider
9229 = getProvider(PaymentService.class);</pre>
9230
9231 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009232 @since 2.0]]>
9233 </doc>
9234 </class>
9235 <!-- end class com.google.inject.spi.ProviderLookup -->
9236 <!-- start interface com.google.inject.spi.ProviderWithDependencies -->
9237 <interface name="ProviderWithDependencies" abstract="true"
9238 static="false" final="false" visibility="public"
9239 deprecated="not deprecated">
9240 <implements name="com.google.inject.Provider&lt;T&gt;"/>
9241 <implements name="com.google.inject.spi.HasDependencies"/>
9242 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009243 <![CDATA[A provider with dependencies on other injected types. If a {@link Provider} has dependencies that
9244 aren't specified in injections, this interface should be used to expose all dependencies.
9245
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009246 @since 2.0]]>
9247 </doc>
9248 </interface>
9249 <!-- end interface com.google.inject.spi.ProviderWithDependencies -->
9250 <!-- start interface com.google.inject.spi.ProviderWithExtensionVisitor -->
9251 <interface name="ProviderWithExtensionVisitor" abstract="true"
9252 static="false" final="false" visibility="public"
9253 deprecated="not deprecated">
9254 <implements name="com.google.inject.Provider&lt;T&gt;"/>
9255 <method name="acceptExtensionVisitor" return="V"
9256 abstract="true" native="false" synchronized="false"
9257 static="false" final="false" visibility="public"
9258 deprecated="not deprecated">
9259 <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor&lt;B, V&gt;"/>
9260 <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends B&gt;"/>
9261 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009262 <![CDATA[Instructs the extension determine if the visitor is an instance of a custom
9263 extension visitor, and if so, visit it using that method. If the visitor is
9264 not an instance of the custom extension visitor, this method <b>MUST</b>
9265 call visitor.visit(binding).
9266 <p>
9267 Due to issues with generics, the type parameters of this method do not
9268 relate to the type of the provider. In practice, the 'B' type will always
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009269 be a supertype of 'T'.]]>
9270 </doc>
9271 </method>
9272 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009273 <![CDATA[A Provider that is part of an extension which supports a custom
9274 BindingTargetVisitor.
9275 <p>
9276 When an extension binds a provider instance, the provider can implement this
9277 interface to allow users using the
9278 {@link Binding#acceptTargetVisitor(BindingTargetVisitor)} method to visit a
9279 custom visitor designed for that extension. A typical implementation within
9280 the extension would look like
9281 <pre>
9282 &lt;V, B> V acceptExtensionVisitor(BindingTargetVisitor&lt;B, V> visitor, ProviderInstanceBinding&lt;? extends B> binding) {
9283 if(visitor instanceof MyCustomExtensionVisitor) {
9284 return ((MyCustomExtensionVisitor&lt;B, V>)visitor).visitCustomExtension(customProperties, binding);
9285 } else {
9286 return visitor.visit(binding);
9287 }
9288 }</pre>
9289 'MyCustomExtensionVisitor' in the example above would be an interface the
9290 extension provides that users can implement in order to be notified of custom
9291 extension information. These visitor interfaces must extend from
9292 BindingTargetVisitor.
9293
9294 @since 3.0
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009295 @author sameb@google.com (Sam Berlin)]]>
9296 </doc>
9297 </interface>
9298 <!-- end interface com.google.inject.spi.ProviderWithExtensionVisitor -->
9299 <!-- start interface com.google.inject.spi.ProvidesMethodBinding -->
9300 <interface name="ProvidesMethodBinding" abstract="true"
9301 static="false" final="false" visibility="public"
9302 deprecated="not deprecated">
9303 <implements name="com.google.inject.spi.HasDependencies"/>
9304 <method name="getMethod" return="java.lang.reflect.Method"
9305 abstract="true" native="false" synchronized="false"
9306 static="false" final="false" visibility="public"
9307 deprecated="not deprecated">
9308 <doc>
9309 <![CDATA[Returns the method this binding uses.]]>
9310 </doc>
9311 </method>
9312 <method name="getEnclosingInstance" return="java.lang.Object"
9313 abstract="true" native="false" synchronized="false"
9314 static="false" final="false" visibility="public"
9315 deprecated="not deprecated">
9316 <doc>
9317 <![CDATA[Returns the instance of the object the method is defined in.]]>
9318 </doc>
9319 </method>
9320 <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
9321 abstract="true" native="false" synchronized="false"
9322 static="false" final="false" visibility="public"
9323 deprecated="not deprecated">
9324 <doc>
9325 <![CDATA[Returns the key of the binding.]]>
9326 </doc>
9327 </method>
9328 <doc>
9329 <![CDATA[An {@literal @}{@link Provides} binding.
9330
9331 @since 4.0
9332 @author sameb@google.com (Sam Berlin)]]>
9333 </doc>
9334 </interface>
9335 <!-- end interface com.google.inject.spi.ProvidesMethodBinding -->
9336 <!-- start interface com.google.inject.spi.ProvidesMethodTargetVisitor -->
9337 <interface name="ProvidesMethodTargetVisitor" abstract="true"
9338 static="false" final="false" visibility="public"
9339 deprecated="not deprecated">
9340 <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
9341 <method name="visit" return="V"
9342 abstract="true" native="false" synchronized="false"
9343 static="false" final="false" visibility="public"
9344 deprecated="not deprecated">
9345 <param name="providesMethodBinding" type="com.google.inject.spi.ProvidesMethodBinding&lt;? extends T&gt;"/>
9346 <doc>
9347 <![CDATA[Visits an {@link ProvidesMethodBinding} created with an {@literal @}{@link Provides} method.]]>
9348 </doc>
9349 </method>
9350 <doc>
9351 <![CDATA[A visitor for the {@literal @}{@link Provides} bindings.
9352 <p>
9353 If your {@link BindingTargetVisitor} implements this interface, bindings created by using
9354 {@code @Provides} will be visited through this interface.
9355
9356 @since 4.0
9357 @author sameb@google.com (Sam Berlin)]]>
9358 </doc>
9359 </interface>
9360 <!-- end interface com.google.inject.spi.ProvidesMethodTargetVisitor -->
9361 <!-- start interface com.google.inject.spi.ProvisionListener -->
9362 <interface name="ProvisionListener" abstract="true"
9363 static="false" final="false" visibility="public"
9364 deprecated="not deprecated">
9365 <method name="onProvision"
9366 abstract="true" native="false" synchronized="false"
9367 static="false" final="false" visibility="public"
9368 deprecated="not deprecated">
9369 <param name="provision" type="com.google.inject.spi.ProvisionListener.ProvisionInvocation&lt;T&gt;"/>
9370 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009371 <![CDATA[Invoked by Guice when an object requires provisioning. Provisioning occurs
9372 when Guice locates and injects the dependencies for a binding. For types
9373 bound to a Provider, provisioning encapsulates the {@link Provider#get}
9374 method. For toInstance or constant bindings, provisioning encapsulates
9375 the injecting of {@literal @}{@code Inject}ed fields or methods.
9376 For other types, provisioning encapsulates the construction of the
9377 object. If a type is bound within a {@link Scope}, provisioning depends on
9378 the scope. Types bound in Singleton scope will only be provisioned once.
9379 Types bound in no scope will be provisioned every time they are injected.
9380 Other scopes define their own behavior for provisioning.
9381 <p>
9382 To perform the provision, call {@link ProvisionInvocation#provision()}.
9383 If you do not explicitly call provision, it will be automatically done after
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009384 this method returns. It is an error to call provision more than once.]]>
9385 </doc>
9386 </method>
9387 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009388 <![CDATA[Listens for provisioning of objects. Useful for gathering timing information
9389 about provisioning, post-provision initialization, and more.
9390
9391 @author sameb@google.com (Sam Berlin)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009392 @since 4.0]]>
9393 </doc>
9394 </interface>
9395 <!-- end interface com.google.inject.spi.ProvisionListener -->
9396 <!-- start class com.google.inject.spi.ProvisionListener.ProvisionInvocation -->
9397 <class name="ProvisionListener.ProvisionInvocation" extends="java.lang.Object"
9398 abstract="true"
9399 static="true" final="false" visibility="public"
9400 deprecated="not deprecated">
9401 <constructor name="ProvisionInvocation"
9402 static="false" final="false" visibility="public"
9403 deprecated="not deprecated">
9404 </constructor>
9405 <method name="getBinding" return="com.google.inject.Binding&lt;T&gt;"
9406 abstract="true" native="false" synchronized="false"
9407 static="false" final="false" visibility="public"
9408 deprecated="not deprecated">
9409 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009410 <![CDATA[Returns the Binding this is provisioning.
9411 <p>
9412 You must not call {@link Provider#get()} on the provider returned by
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009413 {@link Binding#getProvider}, otherwise you will get confusing error messages.]]>
9414 </doc>
9415 </method>
9416 <method name="provision" return="T"
9417 abstract="true" native="false" synchronized="false"
9418 static="false" final="false" visibility="public"
9419 deprecated="not deprecated">
9420 <doc>
9421 <![CDATA[Performs the provision, returning the object provisioned.]]>
9422 </doc>
9423 </method>
9424 <method name="getDependencyChain" return="java.util.List&lt;com.google.inject.spi.DependencyAndSource&gt;"
9425 abstract="true" native="false" synchronized="false"
9426 static="false" final="false" visibility="public"
9427 deprecated="not deprecated">
9428 <doc>
9429 <![CDATA[Returns the dependency chain that led to this object being provisioned.]]>
9430 </doc>
9431 </method>
9432 <doc>
9433 <![CDATA[Encapsulates a single act of provisioning.]]>
9434 </doc>
9435 </class>
9436 <!-- end class com.google.inject.spi.ProvisionListener.ProvisionInvocation -->
9437 <!-- start class com.google.inject.spi.ProvisionListenerBinding -->
9438 <class name="ProvisionListenerBinding" extends="java.lang.Object"
9439 abstract="false"
9440 static="false" final="true" visibility="public"
9441 deprecated="not deprecated">
9442 <implements name="com.google.inject.spi.Element"/>
9443 <method name="getListeners" return="java.util.List&lt;com.google.inject.spi.ProvisionListener&gt;"
9444 abstract="false" native="false" synchronized="false"
9445 static="false" final="false" visibility="public"
9446 deprecated="not deprecated">
9447 <doc>
9448 <![CDATA[Returns the registered listeners.]]>
9449 </doc>
9450 </method>
9451 <method name="getBindingMatcher" return="com.google.inject.matcher.Matcher&lt;? super com.google.inject.Binding&lt;?&gt;&gt;"
9452 abstract="false" native="false" synchronized="false"
9453 static="false" final="false" visibility="public"
9454 deprecated="not deprecated">
9455 <doc>
9456 <![CDATA[Returns the binding matcher which chooses which bindings the listener should be notified of.]]>
9457 </doc>
9458 </method>
9459 <method name="getSource" return="java.lang.Object"
9460 abstract="false" native="false" synchronized="false"
9461 static="false" final="false" visibility="public"
9462 deprecated="not deprecated">
9463 </method>
9464 <method name="acceptVisitor" return="R"
9465 abstract="false" native="false" synchronized="false"
9466 static="false" final="false" visibility="public"
9467 deprecated="not deprecated">
9468 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;R&gt;"/>
9469 </method>
9470 <method name="applyTo"
9471 abstract="false" native="false" synchronized="false"
9472 static="false" final="false" visibility="public"
9473 deprecated="not deprecated">
9474 <param name="binder" type="com.google.inject.Binder"/>
9475 </method>
9476 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009477 <![CDATA[Binds keys (picked using a Matcher) to a provision listener. Listeners are created explicitly in
9478 a module using {@link Binder#bindListener(Matcher, ProvisionListener...)} statements:
9479
9480 @author sameb@google.com (Sam Berlin)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009481 @since 4.0]]>
9482 </doc>
9483 </class>
9484 <!-- end class com.google.inject.spi.ProvisionListenerBinding -->
9485 <!-- start class com.google.inject.spi.RequireAtInjectOnConstructorsOption -->
9486 <class name="RequireAtInjectOnConstructorsOption" extends="java.lang.Object"
9487 abstract="false"
9488 static="false" final="true" visibility="public"
9489 deprecated="not deprecated">
9490 <implements name="com.google.inject.spi.Element"/>
9491 <method name="getSource" return="java.lang.Object"
9492 abstract="false" native="false" synchronized="false"
9493 static="false" final="false" visibility="public"
9494 deprecated="not deprecated">
9495 </method>
9496 <method name="applyTo"
9497 abstract="false" native="false" synchronized="false"
9498 static="false" final="false" visibility="public"
9499 deprecated="not deprecated">
9500 <param name="binder" type="com.google.inject.Binder"/>
9501 </method>
9502 <method name="acceptVisitor" return="T"
9503 abstract="false" native="false" synchronized="false"
9504 static="false" final="false" visibility="public"
9505 deprecated="not deprecated">
9506 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
9507 </method>
9508 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009509 <![CDATA[A request to require explicit {@literal @}{@link Inject} annotations on constructors.
9510
9511 @author sameb@google.com (Sam Berlin)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009512 @since 4.0]]>
9513 </doc>
9514 </class>
9515 <!-- end class com.google.inject.spi.RequireAtInjectOnConstructorsOption -->
9516 <!-- start class com.google.inject.spi.RequireExactBindingAnnotationsOption -->
9517 <class name="RequireExactBindingAnnotationsOption" extends="java.lang.Object"
9518 abstract="false"
9519 static="false" final="true" visibility="public"
9520 deprecated="not deprecated">
9521 <implements name="com.google.inject.spi.Element"/>
9522 <method name="getSource" return="java.lang.Object"
9523 abstract="false" native="false" synchronized="false"
9524 static="false" final="false" visibility="public"
9525 deprecated="not deprecated">
9526 </method>
9527 <method name="applyTo"
9528 abstract="false" native="false" synchronized="false"
9529 static="false" final="false" visibility="public"
9530 deprecated="not deprecated">
9531 <param name="binder" type="com.google.inject.Binder"/>
9532 </method>
9533 <method name="acceptVisitor" return="T"
9534 abstract="false" native="false" synchronized="false"
9535 static="false" final="false" visibility="public"
9536 deprecated="not deprecated">
9537 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
9538 </method>
9539 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009540 <![CDATA[A request to require exact binding annotations.
9541
9542 @author sameb@google.com (Sam Berlin)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009543 @since 4.0]]>
9544 </doc>
9545 </class>
9546 <!-- end class com.google.inject.spi.RequireExactBindingAnnotationsOption -->
9547 <!-- start class com.google.inject.spi.RequireExplicitBindingsOption -->
9548 <class name="RequireExplicitBindingsOption" extends="java.lang.Object"
9549 abstract="false"
9550 static="false" final="true" visibility="public"
9551 deprecated="not deprecated">
9552 <implements name="com.google.inject.spi.Element"/>
9553 <method name="getSource" return="java.lang.Object"
9554 abstract="false" native="false" synchronized="false"
9555 static="false" final="false" visibility="public"
9556 deprecated="not deprecated">
9557 </method>
9558 <method name="applyTo"
9559 abstract="false" native="false" synchronized="false"
9560 static="false" final="false" visibility="public"
9561 deprecated="not deprecated">
9562 <param name="binder" type="com.google.inject.Binder"/>
9563 </method>
9564 <method name="acceptVisitor" return="T"
9565 abstract="false" native="false" synchronized="false"
9566 static="false" final="false" visibility="public"
9567 deprecated="not deprecated">
9568 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
9569 </method>
9570 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009571 <![CDATA[A request to require explicit bindings.
9572
9573 @author sameb@google.com (Sam Berlin)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009574 @since 3.0]]>
9575 </doc>
9576 </class>
9577 <!-- end class com.google.inject.spi.RequireExplicitBindingsOption -->
9578 <!-- start class com.google.inject.spi.ScopeBinding -->
9579 <class name="ScopeBinding" extends="java.lang.Object"
9580 abstract="false"
9581 static="false" final="true" visibility="public"
9582 deprecated="not deprecated">
9583 <implements name="com.google.inject.spi.Element"/>
9584 <method name="getSource" return="java.lang.Object"
9585 abstract="false" native="false" synchronized="false"
9586 static="false" final="false" visibility="public"
9587 deprecated="not deprecated">
9588 </method>
9589 <method name="getAnnotationType" return="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
9590 abstract="false" native="false" synchronized="false"
9591 static="false" final="false" visibility="public"
9592 deprecated="not deprecated">
9593 </method>
9594 <method name="getScope" return="com.google.inject.Scope"
9595 abstract="false" native="false" synchronized="false"
9596 static="false" final="false" visibility="public"
9597 deprecated="not deprecated">
9598 </method>
9599 <method name="acceptVisitor" return="T"
9600 abstract="false" native="false" synchronized="false"
9601 static="false" final="false" visibility="public"
9602 deprecated="not deprecated">
9603 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
9604 </method>
9605 <method name="applyTo"
9606 abstract="false" native="false" synchronized="false"
9607 static="false" final="false" visibility="public"
9608 deprecated="not deprecated">
9609 <param name="binder" type="com.google.inject.Binder"/>
9610 </method>
9611 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009612 <![CDATA[Registration of a scope annotation with the scope that implements it. Instances are created
9613 explicitly in a module using {@link com.google.inject.Binder#bindScope(Class, Scope) bindScope()}
9614 statements:
9615 <pre>
9616 Scope recordScope = new RecordScope();
9617 bindScope(RecordScoped.class, new RecordScope());</pre>
9618
9619 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009620 @since 2.0]]>
9621 </doc>
9622 </class>
9623 <!-- end class com.google.inject.spi.ScopeBinding -->
9624 <!-- start class com.google.inject.spi.StaticInjectionRequest -->
9625 <class name="StaticInjectionRequest" extends="java.lang.Object"
9626 abstract="false"
9627 static="false" final="true" visibility="public"
9628 deprecated="not deprecated">
9629 <implements name="com.google.inject.spi.Element"/>
9630 <method name="getSource" return="java.lang.Object"
9631 abstract="false" native="false" synchronized="false"
9632 static="false" final="false" visibility="public"
9633 deprecated="not deprecated">
9634 </method>
9635 <method name="getType" return="java.lang.Class&lt;?&gt;"
9636 abstract="false" native="false" synchronized="false"
9637 static="false" final="false" visibility="public"
9638 deprecated="not deprecated">
9639 </method>
9640 <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
9641 abstract="false" native="false" synchronized="false"
9642 static="false" final="false" visibility="public"
9643 deprecated="not deprecated">
9644 <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/>
9645 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009646 <![CDATA[Returns the static methods and fields of {@code type} that will be injected to fulfill this
9647 request.
9648
9649 @return a possibly empty set of injection points. The set has a specified iteration order. All
9650 fields are returned and then all methods. Within the fields, supertype fields are returned
9651 before subtype fields. Similarly, supertype methods are returned before subtype methods.
9652 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
9653 a field with multiple binding annotations. The exception's {@link
9654 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009655 of the valid injection points.]]>
9656 </doc>
9657 </method>
9658 <method name="applyTo"
9659 abstract="false" native="false" synchronized="false"
9660 static="false" final="false" visibility="public"
9661 deprecated="not deprecated">
9662 <param name="binder" type="com.google.inject.Binder"/>
9663 </method>
9664 <method name="acceptVisitor" return="T"
9665 abstract="false" native="false" synchronized="false"
9666 static="false" final="false" visibility="public"
9667 deprecated="not deprecated">
9668 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
9669 </method>
9670 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009671 <![CDATA[A request to inject the static fields and methods of a type. Requests are created
9672 explicitly in a module using {@link com.google.inject.Binder#requestStaticInjection(Class[])
9673 requestStaticInjection()} statements:
9674 <pre>
9675 requestStaticInjection(MyLegacyService.class);</pre>
9676
9677 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009678 @since 2.0]]>
9679 </doc>
9680 </class>
9681 <!-- end class com.google.inject.spi.StaticInjectionRequest -->
9682 <!-- start class com.google.inject.spi.Toolable -->
9683 <class name="Toolable" abstract="true"
9684 static="false" final="false" visibility="public"
9685 deprecated="not deprecated">
9686 <implements name="java.lang.annotation.Annotation"/>
9687 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009688 <![CDATA[Instructs an {@link Injector} running in {@link Stage#TOOL} that a method should be injected.
9689 This is typically useful for for extensions to Guice that perform additional validation in an
9690 injected method or field. This only applies to objects that are already constructed when
9691 bindings are created (ie., something bound using {@link
9692 com.google.inject.binder.LinkedBindingBuilder#toProvider toProvider}, {@link
9693 com.google.inject.binder.LinkedBindingBuilder#toInstance toInstance}, or {@link
9694 com.google.inject.Binder#requestInjection requestInjection}.
9695
9696 @author sberlin@gmail.com (Sam Berlin)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009697 @since 3.0]]>
9698 </doc>
9699 </class>
9700 <!-- end class com.google.inject.spi.Toolable -->
9701 <!-- start interface com.google.inject.spi.TypeConverter -->
9702 <interface name="TypeConverter" abstract="true"
9703 static="false" final="false" visibility="public"
9704 deprecated="not deprecated">
9705 <method name="convert" return="java.lang.Object"
9706 abstract="true" native="false" synchronized="false"
9707 static="false" final="false" visibility="public"
9708 deprecated="not deprecated">
9709 <param name="value" type="java.lang.String"/>
9710 <param name="toType" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
9711 <doc>
9712 <![CDATA[Converts a string value. Throws an exception if a conversion error occurs.]]>
9713 </doc>
9714 </method>
9715 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009716 <![CDATA[Converts constant string values to a different type.
9717
9718 @author crazybob@google.com (Bob Lee)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009719 @since 2.0]]>
9720 </doc>
9721 </interface>
9722 <!-- end interface com.google.inject.spi.TypeConverter -->
9723 <!-- start class com.google.inject.spi.TypeConverterBinding -->
9724 <class name="TypeConverterBinding" extends="java.lang.Object"
9725 abstract="false"
9726 static="false" final="true" visibility="public"
9727 deprecated="not deprecated">
9728 <implements name="com.google.inject.spi.Element"/>
9729 <constructor name="TypeConverterBinding" type="java.lang.Object, com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;, com.google.inject.spi.TypeConverter"
9730 static="false" final="false" visibility="public"
9731 deprecated="not deprecated">
9732 <doc>
9733 <![CDATA[@since 3.0]]>
9734 </doc>
9735 </constructor>
9736 <method name="getSource" return="java.lang.Object"
9737 abstract="false" native="false" synchronized="false"
9738 static="false" final="false" visibility="public"
9739 deprecated="not deprecated">
9740 </method>
9741 <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"
9742 abstract="false" native="false" synchronized="false"
9743 static="false" final="false" visibility="public"
9744 deprecated="not deprecated">
9745 </method>
9746 <method name="getTypeConverter" return="com.google.inject.spi.TypeConverter"
9747 abstract="false" native="false" synchronized="false"
9748 static="false" final="false" visibility="public"
9749 deprecated="not deprecated">
9750 </method>
9751 <method name="acceptVisitor" return="T"
9752 abstract="false" native="false" synchronized="false"
9753 static="false" final="false" visibility="public"
9754 deprecated="not deprecated">
9755 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
9756 </method>
9757 <method name="applyTo"
9758 abstract="false" native="false" synchronized="false"
9759 static="false" final="false" visibility="public"
9760 deprecated="not deprecated">
9761 <param name="binder" type="com.google.inject.Binder"/>
9762 </method>
9763 <method name="toString" return="java.lang.String"
9764 abstract="false" native="false" synchronized="false"
9765 static="false" final="false" visibility="public"
9766 deprecated="not deprecated">
9767 </method>
9768 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009769 <![CDATA[Registration of type converters for matching target types. Instances are created
9770 explicitly in a module using {@link com.google.inject.Binder#convertToTypes(Matcher,
9771 TypeConverter) convertToTypes()} statements:
9772 <pre>
9773 convertToTypes(Matchers.only(TypeLiteral.get(DateTime.class)), new DateTimeConverter());</pre>
9774
9775 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009776 @since 2.0]]>
9777 </doc>
9778 </class>
9779 <!-- end class com.google.inject.spi.TypeConverterBinding -->
9780 <!-- start interface com.google.inject.spi.TypeEncounter -->
9781 <interface name="TypeEncounter" abstract="true"
9782 static="false" final="false" visibility="public"
9783 deprecated="not deprecated">
9784 <method name="addError"
9785 abstract="true" native="false" synchronized="false"
9786 static="false" final="false" visibility="public"
9787 deprecated="not deprecated">
9788 <param name="message" type="java.lang.String"/>
9789 <param name="arguments" type="java.lang.Object[]"/>
9790 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009791 <![CDATA[Records an error message for type {@code I} which will be presented to the user at a later
9792 time. Unlike throwing an exception, this enable us to continue configuring the Injector and
9793 discover more errors. Uses {@link String#format(String, Object[])} to insert the arguments
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009794 into the message.]]>
9795 </doc>
9796 </method>
9797 <method name="addError"
9798 abstract="true" native="false" synchronized="false"
9799 static="false" final="false" visibility="public"
9800 deprecated="not deprecated">
9801 <param name="t" type="java.lang.Throwable"/>
9802 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009803 <![CDATA[Records an exception for type {@code I}, the full details of which will be logged, and the
9804 message of which will be presented to the user at a later time. If your type listener calls
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009805 something that you worry may fail, you should catch the exception and pass it to this method.]]>
9806 </doc>
9807 </method>
9808 <method name="addError"
9809 abstract="true" native="false" synchronized="false"
9810 static="false" final="false" visibility="public"
9811 deprecated="not deprecated">
9812 <param name="message" type="com.google.inject.spi.Message"/>
9813 <doc>
9814 <![CDATA[Records an error message to be presented to the user at a later time.]]>
9815 </doc>
9816 </method>
9817 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
9818 abstract="true" native="false" synchronized="false"
9819 static="false" final="false" visibility="public"
9820 deprecated="not deprecated">
9821 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
9822 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009823 <![CDATA[Returns the provider used to obtain instances for the given injection key. The returned
9824 provider will not be valid until the injector has been created. The provider will throw an
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009825 {@code IllegalStateException} if you try to use it beforehand.]]>
9826 </doc>
9827 </method>
9828 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
9829 abstract="true" native="false" synchronized="false"
9830 static="false" final="false" visibility="public"
9831 deprecated="not deprecated">
9832 <param name="type" type="java.lang.Class&lt;T&gt;"/>
9833 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009834 <![CDATA[Returns the provider used to obtain instances for the given injection type. The returned
9835 provider will not be valid until the injetor has been created. The provider will throw an
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009836 {@code IllegalStateException} if you try to use it beforehand.]]>
9837 </doc>
9838 </method>
9839 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
9840 abstract="true" native="false" synchronized="false"
9841 static="false" final="false" visibility="public"
9842 deprecated="not deprecated">
9843 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
9844 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009845 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
9846 of the given type {@code T}. The returned members injector will not be valid until the main
9847 injector has been created. The members injector will throw an {@code IllegalStateException}
9848 if you try to use it beforehand.
9849
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009850 @param typeLiteral type to get members injector for]]>
9851 </doc>
9852 </method>
9853 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
9854 abstract="true" native="false" synchronized="false"
9855 static="false" final="false" visibility="public"
9856 deprecated="not deprecated">
9857 <param name="type" type="java.lang.Class&lt;T&gt;"/>
9858 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009859 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
9860 of the given type {@code T}. The returned members injector will not be valid until the main
9861 injector has been created. The members injector will throw an {@code IllegalStateException}
9862 if you try to use it beforehand.
9863
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009864 @param type type to get members injector for]]>
9865 </doc>
9866 </method>
9867 <method name="register"
9868 abstract="true" native="false" synchronized="false"
9869 static="false" final="false" visibility="public"
9870 deprecated="not deprecated">
9871 <param name="membersInjector" type="com.google.inject.MembersInjector&lt;? super I&gt;"/>
9872 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009873 <![CDATA[Registers a members injector for type {@code I}. Guice will use the members injector after its
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009874 performed its own injections on an instance of {@code I}.]]>
9875 </doc>
9876 </method>
9877 <method name="register"
9878 abstract="true" native="false" synchronized="false"
9879 static="false" final="false" visibility="public"
9880 deprecated="not deprecated">
9881 <param name="listener" type="com.google.inject.spi.InjectionListener&lt;? super I&gt;"/>
9882 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009883 <![CDATA[Registers an injection listener for type {@code I}. Guice will notify the listener after all
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009884 injections have been performed on an instance of {@code I}.]]>
9885 </doc>
9886 </method>
9887 <method name="bindInterceptor"
9888 abstract="true" native="false" synchronized="false"
9889 static="false" final="false" visibility="public"
9890 deprecated="not deprecated">
9891 <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
9892 <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
9893 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009894 <![CDATA[Binds method interceptor[s] to methods matched in type {@code I} and its supertypes. A
9895 method is eligible for interception if:
9896
9897 <ul>
9898 <li>Guice created the instance the method is on</li>
9899 <li>Neither the enclosing type nor the method is final</li>
9900 <li>And the method is package-private or more accessible</li>
9901 </ul>
9902
9903 @param methodMatcher matches methods the interceptor should apply to. For
9904 example: {@code annotatedWith(Transactional.class)}.
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009905 @param interceptors to bind]]>
9906 </doc>
9907 </method>
9908 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009909 <![CDATA[Context of an injectable type encounter. Enables reporting errors, registering injection
9910 listeners and binding method interceptors for injectable type {@code I}. It is an error to use
9911 an encounter after the {@link TypeListener#hear(TypeLiteral, TypeEncounter) hear()} method has
9912 returned.
9913
9914 @param <I> the injectable type encountered
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009915 @since 2.0]]>
9916 </doc>
9917 </interface>
9918 <!-- end interface com.google.inject.spi.TypeEncounter -->
9919 <!-- start interface com.google.inject.spi.TypeListener -->
9920 <interface name="TypeListener" abstract="true"
9921 static="false" final="false" visibility="public"
9922 deprecated="not deprecated">
9923 <method name="hear"
9924 abstract="true" native="false" synchronized="false"
9925 static="false" final="false" visibility="public"
9926 deprecated="not deprecated">
9927 <param name="type" type="com.google.inject.TypeLiteral&lt;I&gt;"/>
9928 <param name="encounter" type="com.google.inject.spi.TypeEncounter&lt;I&gt;"/>
9929 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009930 <![CDATA[Invoked when Guice encounters a new type eligible for constructor or members injection.
9931 Called during injector creation (or afterwords if Guice encounters a type at run time and
9932 creates a JIT binding).
9933
9934 @param type encountered by Guice
9935 @param encounter context of this encounter, enables reporting errors, registering injection
9936 listeners and binding method interceptors for {@code type}.
9937
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009938 @param <I> the injectable type]]>
9939 </doc>
9940 </method>
9941 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009942 <![CDATA[Listens for Guice to encounter injectable types. If a given type has its constructor injected in
9943 one situation but only its methods and fields injected in another, Guice will notify this
9944 listener once.
9945
9946 <p>Useful for extra type checking, {@linkplain TypeEncounter#register(InjectionListener)
9947 registering injection listeners}, and {@linkplain TypeEncounter#bindInterceptor(
9948 com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])
9949 binding method interceptors}.
9950
Christian Edward Gruber509e3542014-03-20 20:37:34 -07009951 @since 2.0]]>
9952 </doc>
9953 </interface>
9954 <!-- end interface com.google.inject.spi.TypeListener -->
9955 <!-- start class com.google.inject.spi.TypeListenerBinding -->
9956 <class name="TypeListenerBinding" extends="java.lang.Object"
9957 abstract="false"
9958 static="false" final="true" visibility="public"
9959 deprecated="not deprecated">
9960 <implements name="com.google.inject.spi.Element"/>
9961 <method name="getListener" return="com.google.inject.spi.TypeListener"
9962 abstract="false" native="false" synchronized="false"
9963 static="false" final="false" visibility="public"
9964 deprecated="not deprecated">
9965 <doc>
9966 <![CDATA[Returns the registered listener.]]>
9967 </doc>
9968 </method>
9969 <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"
9970 abstract="false" native="false" synchronized="false"
9971 static="false" final="false" visibility="public"
9972 deprecated="not deprecated">
9973 <doc>
9974 <![CDATA[Returns the type matcher which chooses which types the listener should be notified of.]]>
9975 </doc>
9976 </method>
9977 <method name="getSource" return="java.lang.Object"
9978 abstract="false" native="false" synchronized="false"
9979 static="false" final="false" visibility="public"
9980 deprecated="not deprecated">
9981 </method>
9982 <method name="acceptVisitor" return="T"
9983 abstract="false" native="false" synchronized="false"
9984 static="false" final="false" visibility="public"
9985 deprecated="not deprecated">
9986 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
9987 </method>
9988 <method name="applyTo"
9989 abstract="false" native="false" synchronized="false"
9990 static="false" final="false" visibility="public"
9991 deprecated="not deprecated">
9992 <param name="binder" type="com.google.inject.Binder"/>
9993 </method>
9994 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -07009995 <![CDATA[Binds types (picked using a Matcher) to an type listener. Registrations are created explicitly in
9996 a module using {@link com.google.inject.Binder#bindListener(Matcher, TypeListener)} statements:
9997
9998 <pre>
9999 register(only(new TypeLiteral&lt;PaymentService&lt;CreditCard>>() {}), listener);</pre>
10000
10001 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010002 @since 2.0]]>
10003 </doc>
10004 </class>
10005 <!-- end class com.google.inject.spi.TypeListenerBinding -->
10006 <!-- start interface com.google.inject.spi.UntargettedBinding -->
10007 <interface name="UntargettedBinding" abstract="true"
10008 static="false" final="false" visibility="public"
10009 deprecated="not deprecated">
10010 <implements name="com.google.inject.Binding&lt;T&gt;"/>
10011 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010012 <![CDATA[An untargetted binding. This binding indicates that the injector should use its implicit binding
10013 strategies to resolve injections.
10014
10015 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010016 @since 2.0]]>
10017 </doc>
10018 </interface>
10019 <!-- end interface com.google.inject.spi.UntargettedBinding -->
10020</package>
10021<package name="com.google.inject.spring">
10022 <!-- start class com.google.inject.spring.SpringIntegration -->
10023 <class name="SpringIntegration" extends="java.lang.Object"
10024 abstract="false"
10025 static="false" final="false" visibility="public"
10026 deprecated="not deprecated">
10027 <method name="fromSpring" return="com.google.inject.Provider&lt;T&gt;"
10028 abstract="false" native="false" synchronized="false"
10029 static="true" final="false" visibility="public"
10030 deprecated="not deprecated">
10031 <param name="type" type="java.lang.Class&lt;T&gt;"/>
10032 <param name="name" type="java.lang.String"/>
10033 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010034 <![CDATA[Creates a provider which looks up objects from Spring using the given name.
10035 Expects a binding to {@link
10036 org.springframework.beans.factory.BeanFactory}. Example usage:
10037
10038 <pre>
10039 bind(DataSource.class)
10040 .toProvider(fromSpring(DataSource.class, "dataSource"));
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010041 </pre>]]>
10042 </doc>
10043 </method>
10044 <method name="bindAll"
10045 abstract="false" native="false" synchronized="false"
10046 static="true" final="false" visibility="public"
10047 deprecated="not deprecated">
10048 <param name="binder" type="com.google.inject.Binder"/>
10049 <param name="beanFactory" type="ListableBeanFactory"/>
10050 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010051 <![CDATA[Binds all Spring beans from the given factory by name. For a Spring bean
10052 named "foo", this method creates a binding to the bean's type and
10053 {@code @Named("foo")}.
10054
10055 @see com.google.inject.name.Named
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010056 @see com.google.inject.name.Names#named(String)]]>
10057 </doc>
10058 </method>
10059 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010060 <![CDATA[Integrates Guice with Spring.
10061
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010062 @author crazybob@google.com (Bob Lee)]]>
10063 </doc>
10064 </class>
10065 <!-- end class com.google.inject.spring.SpringIntegration -->
10066</package>
10067<package name="com.google.inject.struts2">
10068 <!-- start class com.google.inject.struts2.GuiceObjectFactory -->
10069 <class name="GuiceObjectFactory" extends="ObjectFactory"
10070 abstract="false"
10071 static="false" final="false" visibility="public"
10072 deprecated="Use {@link com.google.inject.servlet.Struts2Factory} instead.">
10073 <constructor name="GuiceObjectFactory"
10074 static="false" final="false" visibility="public"
10075 deprecated="not deprecated">
10076 </constructor>
10077 <method name="isNoArgConstructorRequired" return="boolean"
10078 abstract="false" native="false" synchronized="false"
10079 static="false" final="false" visibility="public"
10080 deprecated="not deprecated">
10081 </method>
10082 <method name="getClassInstance" return="java.lang.Class"
10083 abstract="false" native="false" synchronized="false"
10084 static="false" final="false" visibility="public"
10085 deprecated="not deprecated">
10086 <param name="name" type="java.lang.String"/>
10087 <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/>
10088 </method>
10089 <method name="buildBean" return="java.lang.Object"
10090 abstract="false" native="false" synchronized="false"
10091 static="false" final="false" visibility="public"
10092 deprecated="not deprecated">
10093 <param name="clazz" type="java.lang.Class"/>
10094 <param name="extraContext" type="java.util.Map"/>
10095 </method>
10096 <method name="buildInterceptor" return="Interceptor"
10097 abstract="false" native="false" synchronized="false"
10098 static="false" final="false" visibility="public"
10099 deprecated="not deprecated">
10100 <param name="interceptorConfig" type="InterceptorConfig"/>
10101 <param name="interceptorRefParams" type="java.util.Map"/>
10102 <exception name="ConfigurationException" type="ConfigurationException"/>
10103 </method>
10104 <doc>
10105 <![CDATA[@deprecated Use {@link com.google.inject.servlet.Struts2Factory} instead.]]>
10106 </doc>
10107 </class>
10108 <!-- end class com.google.inject.struts2.GuiceObjectFactory -->
10109 <!-- start class com.google.inject.struts2.Struts2Factory -->
10110 <class name="Struts2Factory" extends="ObjectFactory"
10111 abstract="false"
10112 static="false" final="false" visibility="public"
10113 deprecated="not deprecated">
10114 <constructor name="Struts2Factory"
10115 static="false" final="false" visibility="public"
10116 deprecated="not deprecated">
10117 </constructor>
10118 <method name="isNoArgConstructorRequired" return="boolean"
10119 abstract="false" native="false" synchronized="false"
10120 static="false" final="false" visibility="public"
10121 deprecated="not deprecated">
10122 </method>
10123 <method name="getClassInstance" return="java.lang.Class&lt;?&gt;"
10124 abstract="false" native="false" synchronized="false"
10125 static="false" final="false" visibility="public"
10126 deprecated="not deprecated">
10127 <param name="name" type="java.lang.String"/>
10128 <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/>
10129 </method>
10130 <method name="buildBean" return="java.lang.Object"
10131 abstract="false" native="false" synchronized="false"
10132 static="false" final="false" visibility="public"
10133 deprecated="not deprecated">
10134 <param name="clazz" type="java.lang.Class"/>
10135 <param name="extraContext" type="java.util.Map&lt;java.lang.String, java.lang.Object&gt;"/>
10136 </method>
10137 <method name="buildInterceptor" return="Interceptor"
10138 abstract="false" native="false" synchronized="false"
10139 static="false" final="false" visibility="public"
10140 deprecated="not deprecated">
10141 <param name="interceptorConfig" type="InterceptorConfig"/>
10142 <param name="interceptorRefParams" type="java.util.Map"/>
10143 <exception name="ConfigurationException" type="ConfigurationException"/>
10144 </method>
10145 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010146 <![CDATA[Cleanup up version from Bob's GuiceObjectFactory. Now works properly with
10147 GS2 and fixes several bugs.
10148
10149 @author dhanji@gmail.com
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010150 @author benmccann.com]]>
10151 </doc>
10152 </class>
10153 <!-- end class com.google.inject.struts2.Struts2Factory -->
10154 <!-- start class com.google.inject.struts2.Struts2GuicePluginModule -->
10155 <class name="Struts2GuicePluginModule" extends="com.google.inject.AbstractModule"
10156 abstract="false"
10157 static="false" final="false" visibility="public"
10158 deprecated="not deprecated">
10159 <constructor name="Struts2GuicePluginModule"
10160 static="false" final="false" visibility="public"
10161 deprecated="not deprecated">
10162 </constructor>
10163 <method name="configure"
10164 abstract="false" native="false" synchronized="false"
10165 static="false" final="false" visibility="protected"
10166 deprecated="not deprecated">
10167 </method>
10168 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010169 <![CDATA[Initializes the Struts 2 Guice Plugin.
10170 Must be added to the injector returned by
10171 {@link GuiceServletContextListener.getInjector()}.
10172
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010173 @author benmccann.com]]>
10174 </doc>
10175 </class>
10176 <!-- end class com.google.inject.struts2.Struts2GuicePluginModule -->
10177</package>
10178<package name="com.google.inject.throwingproviders">
10179 <!-- start interface com.google.inject.throwingproviders.CheckedProvider -->
10180 <interface name="CheckedProvider" abstract="true"
10181 static="false" final="false" visibility="public"
10182 deprecated="not deprecated">
10183 <method name="get" return="T"
10184 abstract="true" native="false" synchronized="false"
10185 static="false" final="false" visibility="public"
10186 deprecated="not deprecated">
10187 <exception name="Exception" type="java.lang.Exception"/>
10188 </method>
10189 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010190 <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws
10191 a checked Exception. Users may not inject {@code T} directly.
10192
10193 <p>This interface must be extended to use application-specific exception types.
10194 Such subinterfaces may not define new methods, but may narrow the exception type.
10195 <pre>
10196 public interface RemoteProvider&lt;T&gt; extends CheckedProvider&lt;T&gt; {
10197 T get() throws CustomExceptionOne, CustomExceptionTwo;
10198 }
10199 </pre>
10200
10201 <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned
10202 or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get}
10203 will invoked at most once within each scope.
10204
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010205 @since 3.0]]>
10206 </doc>
10207 </interface>
10208 <!-- end interface com.google.inject.throwingproviders.CheckedProvider -->
10209 <!-- start class com.google.inject.throwingproviders.CheckedProvides -->
10210 <class name="CheckedProvides" abstract="true"
10211 static="false" final="false" visibility="public"
10212 deprecated="not deprecated">
10213 <implements name="java.lang.annotation.Annotation"/>
10214 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010215 <![CDATA[Annotates methods of a {@link Module} to create a {@link CheckedProvider}
10216 method binding that can throw exceptions. The method's return type is bound
10217 to a {@link CheckedProvider} that can be injected. Guice will pass
10218 dependencies to the method as parameters. Install {@literal @}CheckedProvides
10219 methods by using
10220 {@link ThrowingProviderBinder#forModule(com.google.inject.Module)} on the
10221 module where the methods are declared.
10222
10223 @author sameb@google.com (Sam Berlin)
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010224 @since 3.0]]>
10225 </doc>
10226 </class>
10227 <!-- end class com.google.inject.throwingproviders.CheckedProvides -->
10228 <!-- start class com.google.inject.throwingproviders.ThrowingInject -->
10229 <class name="ThrowingInject" abstract="true"
10230 static="false" final="false" visibility="public"
10231 deprecated="not deprecated">
10232 <implements name="java.lang.annotation.Annotation"/>
10233 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010234 <![CDATA[A version of {@literal @}{@link Inject} designed for ThrowingProviders. Use by:
10235 <pre><code>ThrowingProviderBinder.create(binder())
10236 .bind(RemoteProvider.class, Customer.class)
10237 .providing(CustomerImpl.class);
10238 </code></pre>
10239 where CustomerImpl has a constructor annotated with ThrowingInject.
10240
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010241 @author sameb@google.com (Sam Berlin)]]>
10242 </doc>
10243 </class>
10244 <!-- end class com.google.inject.throwingproviders.ThrowingInject -->
10245 <!-- start interface com.google.inject.throwingproviders.ThrowingProvider -->
10246 <interface name="ThrowingProvider" abstract="true"
10247 static="false" final="false" visibility="public"
10248 deprecated="use {@link CheckedProvider} instead.">
10249 <implements name="com.google.inject.throwingproviders.CheckedProvider&lt;T&gt;"/>
10250 <method name="get" return="T"
10251 abstract="true" native="false" synchronized="false"
10252 static="false" final="false" visibility="public"
10253 deprecated="not deprecated">
10254 <exception name="Exception" type="java.lang.Exception"/>
10255 </method>
10256 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010257 <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws
10258 a checked Exception. Users may not inject {@code T} directly.
10259
10260 <p>This interface must be extended to use application-specific exception types.
10261 Such subinterfaces may not define new methods:
10262 <pre>
10263 public interface RemoteProvider&lt;T&gt; extends ThrowingProvider&lt;T, RemoteException&gt; { }
10264 </pre>
10265
10266 <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned
10267 or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get}
10268 will invoked at most once within each scope.
10269
10270 @author jmourits@google.com (Jerome Mourits)
10271 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010272 @deprecated use {@link CheckedProvider} instead.]]>
10273 </doc>
10274 </interface>
10275 <!-- end interface com.google.inject.throwingproviders.ThrowingProvider -->
10276 <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder -->
10277 <class name="ThrowingProviderBinder" extends="java.lang.Object"
10278 abstract="false"
10279 static="false" final="false" visibility="public"
10280 deprecated="not deprecated">
10281 <method name="create" return="com.google.inject.throwingproviders.ThrowingProviderBinder"
10282 abstract="false" native="false" synchronized="false"
10283 static="true" final="false" visibility="public"
10284 deprecated="not deprecated">
10285 <param name="binder" type="com.google.inject.Binder"/>
10286 </method>
10287 <method name="forModule" return="com.google.inject.Module"
10288 abstract="false" native="false" synchronized="false"
10289 static="true" final="false" visibility="public"
10290 deprecated="not deprecated">
10291 <param name="module" type="com.google.inject.Module"/>
10292 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010293 <![CDATA[Returns a module that installs {@literal @}{@link CheckedProvides} methods.
10294
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010295 @since 3.0]]>
10296 </doc>
10297 </method>
10298 <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, ?&gt;"
10299 abstract="false" native="false" synchronized="false"
10300 static="false" final="false" visibility="public"
10301 deprecated="Use {@link #bind(Class, Class)} or {@link #bind(Class, TypeLiteral)} instead.">
10302 <param name="interfaceType" type="java.lang.Class&lt;P&gt;"/>
10303 <param name="clazz" type="java.lang.reflect.Type"/>
10304 <doc>
10305 <![CDATA[@deprecated Use {@link #bind(Class, Class)} or {@link #bind(Class, TypeLiteral)} instead.]]>
10306 </doc>
10307 </method>
10308 <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, T&gt;"
10309 abstract="false" native="false" synchronized="false"
10310 static="false" final="false" visibility="public"
10311 deprecated="not deprecated">
10312 <param name="interfaceType" type="java.lang.Class&lt;P&gt;"/>
10313 <param name="clazz" type="java.lang.Class&lt;T&gt;"/>
10314 </method>
10315 <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, T&gt;"
10316 abstract="false" native="false" synchronized="false"
10317 static="false" final="false" visibility="public"
10318 deprecated="not deprecated">
10319 <param name="interfaceType" type="java.lang.Class&lt;P&gt;"/>
10320 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
10321 </method>
10322 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010323 <![CDATA[<p>Builds a binding for a {@link CheckedProvider}.
10324
10325 <p>You can use a fluent API and custom providers:
10326 <pre><code>ThrowingProviderBinder.create(binder())
10327 .bind(RemoteProvider.class, Customer.class)
10328 .to(RemoteCustomerProvider.class)
10329 .in(RequestScope.class);
10330 </code></pre>
10331 or, you can use throwing provider methods:
10332 <pre><code>class MyModule extends AbstractModule {
10333 configure() {
10334 ThrowingProviderBinder.install(this, binder());
10335 }
10336
10337 {@literal @}CheckedProvides(RemoteProvider.class)
10338 {@literal @}RequestScope
10339 Customer provideCustomer(FlakyCustomerCreator creator) throws RemoteException {
10340 return creator.getCustomerOrThrow();
10341 }
10342 }
10343 </code></pre>
10344 You also can declare that a CheckedProvider construct
10345 a particular class whose constructor throws an exception:
10346 <pre><code>ThrowingProviderBinder.create(binder())
10347 .bind(RemoteProvider.class, Customer.class)
10348 .providing(CustomerImpl.class)
10349 .in(RequestScope.class);
10350 </code></pre>
10351
10352 @author jmourits@google.com (Jerome Mourits)
10353 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010354 @author sameb@google.com (Sam Berlin)]]>
10355 </doc>
10356 </class>
10357 <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder -->
10358 <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder -->
10359 <class name="ThrowingProviderBinder.SecondaryBinder" extends="java.lang.Object"
10360 abstract="false"
10361 static="false" final="false" visibility="public"
10362 deprecated="not deprecated">
10363 <constructor name="SecondaryBinder" type="java.lang.Class&lt;P&gt;, java.lang.reflect.Type"
10364 static="false" final="false" visibility="public"
10365 deprecated="not deprecated">
10366 </constructor>
10367 <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, T&gt;"
10368 abstract="false" native="false" synchronized="false"
10369 static="false" final="false" visibility="public"
10370 deprecated="not deprecated">
10371 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
10372 </method>
10373 <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, T&gt;"
10374 abstract="false" native="false" synchronized="false"
10375 static="false" final="false" visibility="public"
10376 deprecated="not deprecated">
10377 <param name="annotation" type="java.lang.annotation.Annotation"/>
10378 </method>
10379 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
10380 abstract="false" native="false" synchronized="false"
10381 static="false" final="false" visibility="public"
10382 deprecated="not deprecated">
10383 <param name="target" type="P extends com.google.inject.throwingproviders.CheckedProvider"/>
10384 </method>
10385 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
10386 abstract="false" native="false" synchronized="false"
10387 static="false" final="false" visibility="public"
10388 deprecated="not deprecated">
10389 <param name="targetType" type="java.lang.Class&lt;? extends P&gt;"/>
10390 </method>
10391 <method name="providing" return="com.google.inject.binder.ScopedBindingBuilder"
10392 abstract="false" native="false" synchronized="false"
10393 static="false" final="false" visibility="public"
10394 deprecated="not deprecated">
10395 <param name="cxtorClass" type="java.lang.Class&lt;? extends T&gt;"/>
10396 </method>
10397 <method name="providing" return="com.google.inject.binder.ScopedBindingBuilder"
10398 abstract="false" native="false" synchronized="false"
10399 static="false" final="false" visibility="public"
10400 deprecated="not deprecated">
10401 <param name="cxtorLiteral" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
10402 </method>
10403 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
10404 abstract="false" native="false" synchronized="false"
10405 static="false" final="false" visibility="public"
10406 deprecated="not deprecated">
10407 <param name="targetKey" type="com.google.inject.Key&lt;? extends P&gt;"/>
10408 </method>
10409 </class>
10410 <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder -->
10411</package>
10412<package name="com.google.inject.tools.jmx">
10413 <!-- start interface com.google.inject.tools.jmx.ManagedBindingMBean -->
10414 <interface name="ManagedBindingMBean" abstract="true"
10415 static="false" final="false" visibility="public"
10416 deprecated="not deprecated">
10417 <method name="getSource" return="java.lang.String"
10418 abstract="true" native="false" synchronized="false"
10419 static="false" final="false" visibility="public"
10420 deprecated="not deprecated">
10421 <doc>
10422 <![CDATA[Gets the source of this binding.]]>
10423 </doc>
10424 </method>
10425 <method name="getProvider" return="java.lang.String"
10426 abstract="true" native="false" synchronized="false"
10427 static="false" final="false" visibility="public"
10428 deprecated="not deprecated">
10429 <doc>
10430 <![CDATA[Gets the provider to which this binding is bound.]]>
10431 </doc>
10432 </method>
10433 <method name="getKey" return="java.lang.String"
10434 abstract="true" native="false" synchronized="false"
10435 static="false" final="false" visibility="public"
10436 deprecated="not deprecated">
10437 <doc>
10438 <![CDATA[Gets the binding key.]]>
10439 </doc>
10440 </method>
10441 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010442 <![CDATA[JMX interface to bindings.
10443
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010444 @author crazybob@google.com (Bob Lee)]]>
10445 </doc>
10446 </interface>
10447 <!-- end interface com.google.inject.tools.jmx.ManagedBindingMBean -->
10448 <!-- start class com.google.inject.tools.jmx.Manager -->
10449 <class name="Manager" extends="java.lang.Object"
10450 abstract="false"
10451 static="false" final="false" visibility="public"
10452 deprecated="not deprecated">
10453 <constructor name="Manager"
10454 static="false" final="false" visibility="public"
10455 deprecated="not deprecated">
10456 </constructor>
10457 <method name="manage"
10458 abstract="false" native="false" synchronized="false"
10459 static="true" final="false" visibility="public"
10460 deprecated="not deprecated">
10461 <param name="domain" type="java.lang.String"/>
10462 <param name="injector" type="com.google.inject.Injector"/>
10463 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010464 <![CDATA[Registers all the bindings of an Injector with the platform MBean server.
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010465 Consider using the name of your root {@link Module} class as the domain.]]>
10466 </doc>
10467 </method>
10468 <method name="manage"
10469 abstract="false" native="false" synchronized="false"
10470 static="true" final="false" visibility="public"
10471 deprecated="not deprecated">
10472 <param name="server" type="javax.management.MBeanServer"/>
10473 <param name="domain" type="java.lang.String"/>
10474 <param name="injector" type="com.google.inject.Injector"/>
10475 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010476 <![CDATA[Registers all the bindings of an Injector with the given MBean server.
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010477 Consider using the name of your root {@link Module} class as the domain.]]>
10478 </doc>
10479 </method>
10480 <method name="main"
10481 abstract="false" native="false" synchronized="false"
10482 static="true" final="false" visibility="public"
10483 deprecated="not deprecated">
10484 <param name="args" type="java.lang.String[]"/>
10485 <exception name="Exception" type="java.lang.Exception"/>
10486 <doc>
10487 <![CDATA[Run with no arguments for usage instructions.]]>
10488 </doc>
10489 </method>
10490 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010491 <![CDATA[Provides a JMX interface to Guice.
10492
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010493 @author crazybob@google.com (Bob Lee)]]>
10494 </doc>
10495 </class>
10496 <!-- end class com.google.inject.tools.jmx.Manager -->
10497</package>
10498<package name="com.google.inject.util">
10499 <!-- start class com.google.inject.util.Modules -->
10500 <class name="Modules" extends="java.lang.Object"
10501 abstract="false"
10502 static="false" final="true" visibility="public"
10503 deprecated="not deprecated">
10504 <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder"
10505 abstract="false" native="false" synchronized="false"
10506 static="true" final="false" visibility="public"
10507 deprecated="not deprecated">
10508 <param name="modules" type="com.google.inject.Module[]"/>
10509 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010510 <![CDATA[Returns a builder that creates a module that overlays override modules over the given
10511 modules. If a key is bound in both sets of modules, only the binding from the override modules
10512 is kept. If a single {@link PrivateModule} is supplied or all elements are from
10513 a single {@link PrivateBinder}, then this will overwrite the private bindings.
10514 Otherwise, private bindings will not be overwritten unless they are exposed.
10515 This can be used to replace the bindings of a production module with test bindings:
10516 <pre>
10517 Module functionalTestModule
10518 = Modules.override(new ProductionModule()).with(new TestModule());
10519 </pre>
10520
10521 <p>Prefer to write smaller modules that can be reused and tested without overrides.
10522
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010523 @param modules the modules whose bindings are open to be overridden]]>
10524 </doc>
10525 </method>
10526 <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder"
10527 abstract="false" native="false" synchronized="false"
10528 static="true" final="false" visibility="public"
10529 deprecated="not deprecated">
10530 <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
10531 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010532 <![CDATA[Returns a builder that creates a module that overlays override modules over the given
10533 modules. If a key is bound in both sets of modules, only the binding from the override modules
10534 is kept. If a single {@link PrivateModule} is supplied or all elements are from
10535 a single {@link PrivateBinder}, then this will overwrite the private bindings.
10536 Otherwise, private bindings will not be overwritten unless they are exposed.
10537 This can be used to replace the bindings of a production module with test bindings:
10538 <pre>
10539 Module functionalTestModule
10540 = Modules.override(getProductionModules()).with(getTestModules());
10541 </pre>
10542
10543 <p>Prefer to write smaller modules that can be reused and tested without overrides.
10544
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010545 @param modules the modules whose bindings are open to be overridden]]>
10546 </doc>
10547 </method>
10548 <method name="combine" return="com.google.inject.Module"
10549 abstract="false" native="false" synchronized="false"
10550 static="true" final="false" visibility="public"
10551 deprecated="not deprecated">
10552 <param name="modules" type="com.google.inject.Module[]"/>
10553 <doc>
10554 <![CDATA[Returns a new module that installs all of {@code modules}.]]>
10555 </doc>
10556 </method>
10557 <method name="combine" return="com.google.inject.Module"
10558 abstract="false" native="false" synchronized="false"
10559 static="true" final="false" visibility="public"
10560 deprecated="not deprecated">
10561 <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
10562 <doc>
10563 <![CDATA[Returns a new module that installs all of {@code modules}.]]>
10564 </doc>
10565 </method>
10566 <field name="EMPTY_MODULE" type="com.google.inject.Module"
10567 transient="false" volatile="false"
10568 static="true" final="true" visibility="public"
10569 deprecated="not deprecated">
10570 </field>
10571 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010572 <![CDATA[Static utility methods for creating and working with instances of {@link Module}.
10573
10574 @author jessewilson@google.com (Jesse Wilson)
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010575 @since 2.0]]>
10576 </doc>
10577 </class>
10578 <!-- end class com.google.inject.util.Modules -->
10579 <!-- start interface com.google.inject.util.Modules.OverriddenModuleBuilder -->
10580 <interface name="Modules.OverriddenModuleBuilder" abstract="true"
10581 static="true" final="false" visibility="public"
10582 deprecated="not deprecated">
10583 <method name="with" return="com.google.inject.Module"
10584 abstract="true" native="false" synchronized="false"
10585 static="false" final="false" visibility="public"
10586 deprecated="not deprecated">
10587 <param name="overrides" type="com.google.inject.Module[]"/>
10588 <doc>
10589 <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
10590 </doc>
10591 </method>
10592 <method name="with" return="com.google.inject.Module"
10593 abstract="true" native="false" synchronized="false"
10594 static="false" final="false" visibility="public"
10595 deprecated="not deprecated">
10596 <param name="overrides" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
10597 <doc>
10598 <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
10599 </doc>
10600 </method>
10601 <doc>
10602 <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
10603 </doc>
10604 </interface>
10605 <!-- end interface com.google.inject.util.Modules.OverriddenModuleBuilder -->
10606 <!-- start class com.google.inject.util.Providers -->
10607 <class name="Providers" extends="java.lang.Object"
10608 abstract="false"
10609 static="false" final="true" visibility="public"
10610 deprecated="not deprecated">
10611 <method name="of" return="com.google.inject.Provider&lt;T&gt;"
10612 abstract="false" native="false" synchronized="false"
10613 static="true" final="false" visibility="public"
10614 deprecated="not deprecated">
10615 <param name="instance" type="T"/>
10616 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010617 <![CDATA[Returns a provider which always provides {@code instance}. This should not
10618 be necessary to use in your application, but is helpful for several types
10619 of unit tests.
10620
10621 @param instance the instance that should always be provided. This is also
10622 permitted to be null, to enable aggressive testing, although in real
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010623 life a Guice-supplied Provider will never return null.]]>
10624 </doc>
10625 </method>
10626 <method name="guicify" return="com.google.inject.Provider&lt;T&gt;"
10627 abstract="false" native="false" synchronized="false"
10628 static="true" final="false" visibility="public"
10629 deprecated="not deprecated">
10630 <param name="provider" type="javax.inject.Provider&lt;T&gt;"/>
10631 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010632 <![CDATA[Returns a Guice-friendly {@code com.google.inject.Provider} for the given
10633 JSR-330 {@code javax.inject.Provider}. The converse method is unnecessary,
10634 since Guice providers directly implement the JSR-330 interface.
10635
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010636 @since 3.0]]>
10637 </doc>
10638 </method>
10639 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010640 <![CDATA[Static utility methods for creating and working with instances of
10641 {@link Provider}.
10642
10643 @author Kevin Bourrillion (kevinb9n@gmail.com)
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010644 @since 2.0]]>
10645 </doc>
10646 </class>
10647 <!-- end class com.google.inject.util.Providers -->
10648 <!-- start class com.google.inject.util.Types -->
10649 <class name="Types" extends="java.lang.Object"
10650 abstract="false"
10651 static="false" final="true" visibility="public"
10652 deprecated="not deprecated">
10653 <method name="newParameterizedType" return="java.lang.reflect.ParameterizedType"
10654 abstract="false" native="false" synchronized="false"
10655 static="true" final="false" visibility="public"
10656 deprecated="not deprecated">
10657 <param name="rawType" type="java.lang.reflect.Type"/>
10658 <param name="typeArguments" type="java.lang.reflect.Type[]"/>
10659 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010660 <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to
10661 {@code rawType}. The returned type does not have an owner type.
10662
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010663 @return a {@link java.io.Serializable serializable} parameterized type.]]>
10664 </doc>
10665 </method>
10666 <method name="newParameterizedTypeWithOwner" return="java.lang.reflect.ParameterizedType"
10667 abstract="false" native="false" synchronized="false"
10668 static="true" final="false" visibility="public"
10669 deprecated="not deprecated">
10670 <param name="ownerType" type="java.lang.reflect.Type"/>
10671 <param name="rawType" type="java.lang.reflect.Type"/>
10672 <param name="typeArguments" type="java.lang.reflect.Type[]"/>
10673 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010674 <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to
10675 {@code rawType} and enclosed by {@code ownerType}.
10676
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010677 @return a {@link java.io.Serializable serializable} parameterized type.]]>
10678 </doc>
10679 </method>
10680 <method name="arrayOf" return="java.lang.reflect.GenericArrayType"
10681 abstract="false" native="false" synchronized="false"
10682 static="true" final="false" visibility="public"
10683 deprecated="not deprecated">
10684 <param name="componentType" type="java.lang.reflect.Type"/>
10685 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010686 <![CDATA[Returns an array type whose elements are all instances of
10687 {@code componentType}.
10688
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010689 @return a {@link java.io.Serializable serializable} generic array type.]]>
10690 </doc>
10691 </method>
10692 <method name="subtypeOf" return="java.lang.reflect.WildcardType"
10693 abstract="false" native="false" synchronized="false"
10694 static="true" final="false" visibility="public"
10695 deprecated="not deprecated">
10696 <param name="bound" type="java.lang.reflect.Type"/>
10697 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010698 <![CDATA[Returns a type that represents an unknown type that extends {@code bound}.
10699 For example, if {@code bound} is {@code CharSequence.class}, this returns
10700 {@code ? extends CharSequence}. If {@code bound} is {@code Object.class},
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010701 this returns {@code ?}, which is shorthand for {@code ? extends Object}.]]>
10702 </doc>
10703 </method>
10704 <method name="supertypeOf" return="java.lang.reflect.WildcardType"
10705 abstract="false" native="false" synchronized="false"
10706 static="true" final="false" visibility="public"
10707 deprecated="not deprecated">
10708 <param name="bound" type="java.lang.reflect.Type"/>
10709 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010710 <![CDATA[Returns a type that represents an unknown supertype of {@code bound}. For
10711 example, if {@code bound} is {@code String.class}, this returns {@code ?
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010712 super String}.]]>
10713 </doc>
10714 </method>
10715 <method name="listOf" return="java.lang.reflect.ParameterizedType"
10716 abstract="false" native="false" synchronized="false"
10717 static="true" final="false" visibility="public"
10718 deprecated="not deprecated">
10719 <param name="elementType" type="java.lang.reflect.Type"/>
10720 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010721 <![CDATA[Returns a type modelling a {@link List} whose elements are of type
10722 {@code elementType}.
10723
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010724 @return a {@link java.io.Serializable serializable} parameterized type.]]>
10725 </doc>
10726 </method>
10727 <method name="setOf" return="java.lang.reflect.ParameterizedType"
10728 abstract="false" native="false" synchronized="false"
10729 static="true" final="false" visibility="public"
10730 deprecated="not deprecated">
10731 <param name="elementType" type="java.lang.reflect.Type"/>
10732 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010733 <![CDATA[Returns a type modelling a {@link Set} whose elements are of type
10734 {@code elementType}.
10735
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010736 @return a {@link java.io.Serializable serializable} parameterized type.]]>
10737 </doc>
10738 </method>
10739 <method name="mapOf" return="java.lang.reflect.ParameterizedType"
10740 abstract="false" native="false" synchronized="false"
10741 static="true" final="false" visibility="public"
10742 deprecated="not deprecated">
10743 <param name="keyType" type="java.lang.reflect.Type"/>
10744 <param name="valueType" type="java.lang.reflect.Type"/>
10745 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010746 <![CDATA[Returns a type modelling a {@link Map} whose keys are of type
10747 {@code keyType} and whose values are of type {@code valueType}.
10748
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010749 @return a {@link java.io.Serializable serializable} parameterized type.]]>
10750 </doc>
10751 </method>
10752 <method name="providerOf" return="java.lang.reflect.ParameterizedType"
10753 abstract="false" native="false" synchronized="false"
10754 static="true" final="false" visibility="public"
10755 deprecated="not deprecated">
10756 <param name="providedType" type="java.lang.reflect.Type"/>
10757 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010758 <![CDATA[Returns a type modelling a {@link Provider} that provides elements of type
10759 {@code elementType}.
10760
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010761 @return a {@link java.io.Serializable serializable} parameterized type.]]>
10762 </doc>
10763 </method>
10764 <doc>
Christian Edward Gruber401a6a42013-09-20 17:38:53 -070010765 <![CDATA[Static methods for working with types.
10766
10767 @author crazybob@google.com (Bob Lee)
Christian Edward Gruber509e3542014-03-20 20:37:34 -070010768 @since 2.0]]>
10769 </doc>
10770 </class>
10771 <!-- end class com.google.inject.util.Types -->
10772</package>
10773
10774</api>