blob: 021ac8f6884cc7e2d193f924da8448f71a3dc0f2 [file] [log] [blame]
sameb1d3f8cd2014-10-07 15:32:12 -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 24 21:41:19 EDT 2011 -->
5
6<api
7 xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
8 xsi:noNamespaceSchemaLocation='api.xsd'
9 name="3.0"
10 jdversion="1.1.1">
11
12<!-- Command line arguments = -doclet jdiff.JDiff -docletpath C:\Documents and Settings\Sam Berlin\workspace\guice\lib\build\jdiff\jdiff.jar;C:\Documents and Settings\Sam Berlin\workspace\guice\lib\build\jdiff\xerces.jar -classpath C:\Documents and Settings\Sam Berlin\workspace\guice\lib\javax.inject.jar;C:\Documents and Settings\Sam Berlin\workspace\guice\lib\aopalliance.jar -apidir build/docs/latest-api-diffs -apiname 3.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>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000125 <![CDATA[@see Binder#addError(Message)
sameb1d3f8cd2014-10-07 15:32:12 -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>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000135 <![CDATA[@see Binder#requestInjection(Object)
sameb1d3f8cd2014-10-07 15:32:12 -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>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000156 <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher,
157 com.google.inject.matcher.Matcher,
sameb1d3f8cd2014-10-07 15:32:12 -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>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000167 <![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
sameb1d3f8cd2014-10-07 15:32:12 -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>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000181 <![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
sameb1d3f8cd2014-10-07 15:32:12 -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>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000195 <![CDATA[@see Binder#getProvider(Key)
sameb1d3f8cd2014-10-07 15:32:12 -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>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000205 <![CDATA[@see Binder#getProvider(Class)
sameb1d3f8cd2014-10-07 15:32:12 -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>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000216 <![CDATA[@see Binder#convertToTypes
sameb1d3f8cd2014-10-07 15:32:12 -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>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000225 <![CDATA[@see Binder#currentStage()
sameb1d3f8cd2014-10-07 15:32:12 -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>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000235 <![CDATA[@see Binder#getMembersInjector(Class)
sameb1d3f8cd2014-10-07 15:32:12 -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>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000245 <![CDATA[@see Binder#getMembersInjector(TypeLiteral)
sameb1d3f8cd2014-10-07 15:32:12 -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>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000256 <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher,
257 com.google.inject.spi.TypeListener)
sameb1d3f8cd2014-10-07 15:32:12 -0700258 @since 2.0]]>
259 </doc>
260 </method>
261 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000262 <![CDATA[A support class for {@link Module}s which reduces repetition and results in
263 a more readable configuration. Simply extend this class, implement {@link
264 #configure()}, and call the inherited methods which mirror those found in
265 {@link Binder}. For example:
266
267 <pre>
268 public class MyModule extends AbstractModule {
269 protected void configure() {
270 bind(Service.class).to(ServiceImpl.class).in(Singleton.class);
271 bind(CreditCardPaymentService.class);
272 bind(PaymentService.class).to(CreditCardPaymentService.class);
273 bindConstant().annotatedWith(Names.named("port")).to(8080);
274 }
275 }
276 </pre>
277
sameb1d3f8cd2014-10-07 15:32:12 -0700278 @author crazybob@google.com (Bob Lee)]]>
279 </doc>
280 </class>
281 <!-- end class com.google.inject.AbstractModule -->
282 <!-- start interface com.google.inject.Binder -->
283 <interface name="Binder" abstract="true"
284 static="false" final="false" visibility="public"
285 deprecated="not deprecated">
286 <method name="bindInterceptor"
287 abstract="false" native="false" synchronized="false"
288 static="false" final="false" visibility="public"
289 deprecated="not deprecated">
290 <param name="classMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
291 <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
292 <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
293 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000294 <![CDATA[Binds method interceptor[s] to methods matched by class and method matchers. A method is
295 eligible for interception if:
296
297 <ul>
298 <li>Guice created the instance the method is on</li>
299 <li>Neither the enclosing type nor the method is final</li>
300 <li>And the method is package-private, protected, or public</li>
301 </ul>
302
303 @param classMatcher matches classes the interceptor should apply to. For
304 example: {@code only(Runnable.class)}.
305 @param methodMatcher matches methods the interceptor should apply to. For
306 example: {@code annotatedWith(Transactional.class)}.
sameb1d3f8cd2014-10-07 15:32:12 -0700307 @param interceptors to bind]]>
308 </doc>
309 </method>
310 <method name="bindScope"
311 abstract="false" native="false" synchronized="false"
312 static="false" final="false" visibility="public"
313 deprecated="not deprecated">
314 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
315 <param name="scope" type="com.google.inject.Scope"/>
316 <doc>
317 <![CDATA[Binds a scope to an annotation.]]>
318 </doc>
319 </method>
320 <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
321 abstract="false" native="false" synchronized="false"
322 static="false" final="false" visibility="public"
323 deprecated="not deprecated">
324 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
325 <doc>
326 <![CDATA[See the EDSL examples at {@link Binder}.]]>
327 </doc>
328 </method>
329 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
330 abstract="false" native="false" synchronized="false"
331 static="false" final="false" visibility="public"
332 deprecated="not deprecated">
333 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
334 <doc>
335 <![CDATA[See the EDSL examples at {@link Binder}.]]>
336 </doc>
337 </method>
338 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
339 abstract="false" native="false" synchronized="false"
340 static="false" final="false" visibility="public"
341 deprecated="not deprecated">
342 <param name="type" type="java.lang.Class&lt;T&gt;"/>
343 <doc>
344 <![CDATA[See the EDSL examples at {@link Binder}.]]>
345 </doc>
346 </method>
347 <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder"
348 abstract="false" native="false" synchronized="false"
349 static="false" final="false" visibility="public"
350 deprecated="not deprecated">
351 <doc>
352 <![CDATA[See the EDSL examples at {@link Binder}.]]>
353 </doc>
354 </method>
355 <method name="requestInjection"
356 abstract="false" native="false" synchronized="false"
357 static="false" final="false" visibility="public"
358 deprecated="not deprecated">
359 <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
360 <param name="instance" type="T"/>
361 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000362 <![CDATA[Upon successful creation, the {@link Injector} will inject instance fields
363 and methods of the given object.
364
365 @param type of instance
366 @param instance for which members will be injected
sameb1d3f8cd2014-10-07 15:32:12 -0700367 @since 2.0]]>
368 </doc>
369 </method>
370 <method name="requestInjection"
371 abstract="false" native="false" synchronized="false"
372 static="false" final="false" visibility="public"
373 deprecated="not deprecated">
374 <param name="instance" type="java.lang.Object"/>
375 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000376 <![CDATA[Upon successful creation, the {@link Injector} will inject instance fields
377 and methods of the given object.
378
379 @param instance for which members will be injected
sameb1d3f8cd2014-10-07 15:32:12 -0700380 @since 2.0]]>
381 </doc>
382 </method>
383 <method name="requestStaticInjection"
384 abstract="false" native="false" synchronized="false"
385 static="false" final="false" visibility="public"
386 deprecated="not deprecated">
387 <param name="types" type="java.lang.Class[]"/>
388 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000389 <![CDATA[Upon successful creation, the {@link Injector} will inject static fields
390 and methods in the given classes.
391
sameb1d3f8cd2014-10-07 15:32:12 -0700392 @param types for which static members will be injected]]>
393 </doc>
394 </method>
395 <method name="install"
396 abstract="false" native="false" synchronized="false"
397 static="false" final="false" visibility="public"
398 deprecated="not deprecated">
399 <param name="module" type="com.google.inject.Module"/>
400 <doc>
401 <![CDATA[Uses the given module to configure more bindings.]]>
402 </doc>
403 </method>
404 <method name="currentStage" return="com.google.inject.Stage"
405 abstract="false" native="false" synchronized="false"
406 static="false" final="false" visibility="public"
407 deprecated="not deprecated">
408 <doc>
409 <![CDATA[Gets the current stage.]]>
410 </doc>
411 </method>
412 <method name="addError"
413 abstract="false" native="false" synchronized="false"
414 static="false" final="false" visibility="public"
415 deprecated="not deprecated">
416 <param name="message" type="java.lang.String"/>
417 <param name="arguments" type="java.lang.Object[]"/>
418 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000419 <![CDATA[Records an error message which will be presented to the user at a later
420 time. Unlike throwing an exception, this enable us to continue
421 configuring the Injector and discover more errors. Uses {@link
422 String#format(String, Object[])} to insert the arguments into the
sameb1d3f8cd2014-10-07 15:32:12 -0700423 message.]]>
424 </doc>
425 </method>
426 <method name="addError"
427 abstract="false" native="false" synchronized="false"
428 static="false" final="false" visibility="public"
429 deprecated="not deprecated">
430 <param name="t" type="java.lang.Throwable"/>
431 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000432 <![CDATA[Records an exception, the full details of which will be logged, and the
433 message of which will be presented to the user at a later
434 time. If your Module calls something that you worry may fail, you should
sameb1d3f8cd2014-10-07 15:32:12 -0700435 catch the exception and pass it into this.]]>
436 </doc>
437 </method>
438 <method name="addError"
439 abstract="false" native="false" synchronized="false"
440 static="false" final="false" visibility="public"
441 deprecated="not deprecated">
442 <param name="message" type="com.google.inject.spi.Message"/>
443 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000444 <![CDATA[Records an error message to be presented to the user at a later time.
445
sameb1d3f8cd2014-10-07 15:32:12 -0700446 @since 2.0]]>
447 </doc>
448 </method>
449 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
450 abstract="false" native="false" synchronized="false"
451 static="false" final="false" visibility="public"
452 deprecated="not deprecated">
453 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
454 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000455 <![CDATA[Returns the provider used to obtain instances for the given injection key.
456 The returned provider will not be valid until the {@link Injector} has been
457 created. The provider will throw an {@code IllegalStateException} if you
458 try to use it beforehand.
459
sameb1d3f8cd2014-10-07 15:32:12 -0700460 @since 2.0]]>
461 </doc>
462 </method>
463 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
464 abstract="false" native="false" synchronized="false"
465 static="false" final="false" visibility="public"
466 deprecated="not deprecated">
467 <param name="type" type="java.lang.Class&lt;T&gt;"/>
468 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000469 <![CDATA[Returns the provider used to obtain instances for the given injection type.
470 The returned provider will not be valid until the {@link Injector} has been
471 created. The provider will throw an {@code IllegalStateException} if you
472 try to use it beforehand.
473
sameb1d3f8cd2014-10-07 15:32:12 -0700474 @since 2.0]]>
475 </doc>
476 </method>
477 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
478 abstract="false" native="false" synchronized="false"
479 static="false" final="false" visibility="public"
480 deprecated="not deprecated">
481 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
482 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000483 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
484 of the given type {@code T}. The returned members injector will not be valid until the main
485 {@link Injector} has been created. The members injector will throw an {@code
486 IllegalStateException} if you try to use it beforehand.
487
488 @param typeLiteral type to get members injector for
sameb1d3f8cd2014-10-07 15:32:12 -0700489 @since 2.0]]>
490 </doc>
491 </method>
492 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
493 abstract="false" native="false" synchronized="false"
494 static="false" final="false" visibility="public"
495 deprecated="not deprecated">
496 <param name="type" type="java.lang.Class&lt;T&gt;"/>
497 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000498 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
499 of the given type {@code T}. The returned members injector will not be valid until the main
500 {@link Injector} has been created. The members injector will throw an {@code
501 IllegalStateException} if you try to use it beforehand.
502
503 @param type type to get members injector for
sameb1d3f8cd2014-10-07 15:32:12 -0700504 @since 2.0]]>
505 </doc>
506 </method>
507 <method name="convertToTypes"
508 abstract="false" native="false" synchronized="false"
509 static="false" final="false" visibility="public"
510 deprecated="not deprecated">
511 <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
512 <param name="converter" type="com.google.inject.spi.TypeConverter"/>
513 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000514 <![CDATA[Binds a type converter. The injector will use the given converter to
515 convert string constants to matching types as needed.
516
517 @param typeMatcher matches types the converter can handle
518 @param converter converts values
sameb1d3f8cd2014-10-07 15:32:12 -0700519 @since 2.0]]>
520 </doc>
521 </method>
522 <method name="bindListener"
523 abstract="false" native="false" synchronized="false"
524 static="false" final="false" visibility="public"
525 deprecated="not deprecated">
526 <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
527 <param name="listener" type="com.google.inject.spi.TypeListener"/>
528 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000529 <![CDATA[Registers a listener for injectable types. Guice will notify the listener when it encounters
530 injectable types matched by the given type matcher.
531
532 @param typeMatcher that matches injectable types the listener should be notified of
533 @param listener for injectable types matched by typeMatcher
sameb1d3f8cd2014-10-07 15:32:12 -0700534 @since 2.0]]>
535 </doc>
536 </method>
537 <method name="withSource" return="com.google.inject.Binder"
538 abstract="false" native="false" synchronized="false"
539 static="false" final="false" visibility="public"
540 deprecated="not deprecated">
541 <param name="source" type="java.lang.Object"/>
542 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000543 <![CDATA[Returns a binder that uses {@code source} as the reference location for
544 configuration errors. This is typically a {@link StackTraceElement}
545 for {@code .java} source but it could any binding source, such as the
546 path to a {@code .properties} file.
547
548 @param source any object representing the source location and has a
549 concise {@link Object#toString() toString()} value
550 @return a binder that shares its configuration with this binder
sameb1d3f8cd2014-10-07 15:32:12 -0700551 @since 2.0]]>
552 </doc>
553 </method>
554 <method name="skipSources" return="com.google.inject.Binder"
555 abstract="false" native="false" synchronized="false"
556 static="false" final="false" visibility="public"
557 deprecated="not deprecated">
558 <param name="classesToSkip" type="java.lang.Class[]"/>
559 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000560 <![CDATA[Returns a binder that skips {@code classesToSkip} when identify the
561 calling code. The caller's {@link StackTraceElement} is used to locate
562 the source of configuration errors.
563
564 @param classesToSkip library classes that create bindings on behalf of
565 their clients.
566 @return a binder that shares its configuration with this binder.
sameb1d3f8cd2014-10-07 15:32:12 -0700567 @since 2.0]]>
568 </doc>
569 </method>
570 <method name="newPrivateBinder" return="com.google.inject.PrivateBinder"
571 abstract="false" native="false" synchronized="false"
572 static="false" final="false" visibility="public"
573 deprecated="not deprecated">
574 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000575 <![CDATA[Creates a new private child environment for bindings and other configuration. The returned
576 binder can be used to add and configuration information in this environment. See {@link
577 PrivateModule} for details.
578
579 @return a binder that inherits configuration from this binder. Only exposed configuration on
580 the returned binder will be visible to this binder.
sameb1d3f8cd2014-10-07 15:32:12 -0700581 @since 2.0]]>
582 </doc>
583 </method>
584 <method name="requireExplicitBindings"
585 abstract="false" native="false" synchronized="false"
586 static="false" final="false" visibility="public"
587 deprecated="not deprecated">
588 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +0000589 <![CDATA[Instructs the Injector that bindings must be listed in a Module in order to
590 be injected. Classes that are not explicitly bound in a module cannot be
591 injected. Bindings created through a linked binding (
592 <code>bind(Foo.class).to(FooImpl.class)</code>) are allowed, but the
593 implicit binding (<code>FooImpl</code>) cannot be directly injected unless
594 it is also explicitly bound (<code>bind(FooImpl.class)</code>).
595 <p>
596 Tools can still retrieve bindings for implicit bindings (bindings created
597 through a linked binding) if explicit bindings are required, however
598 {@link Binding#getProvider} will fail.
599 <p>
600 By default, explicit bindings are not required.
601 <p>
602 If a parent injector requires explicit bindings, then all child injectors
603 (and private modules within that injector) also require explicit bindings.
604 If a parent does not require explicit bindings, a child injector or private
605 module may optionally declare itself as requiring explicit bindings. If it
606 does, the behavior is limited only to that child or any grandchildren. No
607 siblings of the child will require explicit bindings.
608 <p>
609 If the parent did not require explicit bindings but the child does, it is
610 possible that a linked binding in the child may add a JIT binding to the
611 parent. The child will not be allowed to reference the target binding
612 directly, but the parent and other children of the parent may be able to.
613
sameb1d3f8cd2014-10-07 15:32:12 -0700614 @since 3.0]]>
615 </doc>
616 </method>
617 <method name="disableCircularProxies"
618 abstract="false" native="false" synchronized="false"
619 static="false" final="false" visibility="public"
620 deprecated="not deprecated">
621 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +0000622 <![CDATA[Prevents Guice from constructing a {@link Proxy} when a circular dependency
623 is found. By default, circular proxies are not disabled.
624 <p>
625 If a parent injector disables circular proxies, then all child injectors
626 (and private modules within that injector) also disable circular proxies.
627 If a parent does not disable circular proxies, a child injector or private
628 module may optionally declare itself as disabling circular proxies. If it
629 does, the behavior is limited only to that child or any grandchildren. No
630 siblings of the child will disable circular proxies.
631
sameb1d3f8cd2014-10-07 15:32:12 -0700632 @since 3.0]]>
633 </doc>
634 </method>
635 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000636 <![CDATA[Collects configuration information (primarily <i>bindings</i>) which will be
637 used to create an {@link Injector}. Guice provides this object to your
638 application's {@link Module} implementors so they may each contribute
639 their own bindings and other registrations.
640
641 <h3>The Guice Binding EDSL</h3>
642
643 Guice uses an <i>embedded domain-specific language</i>, or EDSL, to help you
644 create bindings simply and readably. This approach is great for overall
645 usability, but it does come with a small cost: <b>it is difficult to
646 learn how to use the Binding EDSL by reading
647 method-level javadocs</b>. Instead, you should consult the series of
648 examples below. To save space, these examples omit the opening
649 {@code binder}, just as you will if your module extends
650 {@link AbstractModule}.
651
652 <pre>
653 bind(ServiceImpl.class);</pre>
654
655 This statement does essentially nothing; it "binds the {@code ServiceImpl}
656 class to itself" and does not change Guice's default behavior. You may still
657 want to use this if you prefer your {@link Module} class to serve as an
658 explicit <i>manifest</i> for the services it provides. Also, in rare cases,
659 Guice may be unable to validate a binding at injector creation time unless it
660 is given explicitly.
661
662 <pre>
663 bind(Service.class).to(ServiceImpl.class);</pre>
664
665 Specifies that a request for a {@code Service} instance with no binding
666 annotations should be treated as if it were a request for a
667 {@code ServiceImpl} instance. This <i>overrides</i> the function of any
668 {@link ImplementedBy @ImplementedBy} or {@link ProvidedBy @ProvidedBy}
669 annotations found on {@code Service}, since Guice will have already
670 "moved on" to {@code ServiceImpl} before it reaches the point when it starts
671 looking for these annotations.
672
673 <pre>
674 bind(Service.class).toProvider(ServiceProvider.class);</pre>
675
676 In this example, {@code ServiceProvider} must extend or implement
677 {@code Provider<Service>}. This binding specifies that Guice should resolve
678 an unannotated injection request for {@code Service} by first resolving an
679 instance of {@code ServiceProvider} in the regular way, then calling
680 {@link Provider#get get()} on the resulting Provider instance to obtain the
681 {@code Service} instance.
682
683 <p>The {@link Provider} you use here does not have to be a "factory"; that
684 is, a provider which always <i>creates</i> each instance it provides.
685 However, this is generally a good practice to follow. You can then use
686 Guice's concept of {@link Scope scopes} to guide when creation should happen
687 -- "letting Guice work for you".
688
689 <pre>
690 bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class);</pre>
691
692 Like the previous example, but only applies to injection requests that use
693 the binding annotation {@code @Red}. If your module also includes bindings
694 for particular <i>values</i> of the {@code @Red} annotation (see below),
695 then this binding will serve as a "catch-all" for any values of {@code @Red}
696 that have no exact match in the bindings.
697
698 <pre>
699 bind(ServiceImpl.class).in(Singleton.class);
700 // or, alternatively
701 bind(ServiceImpl.class).in(Scopes.SINGLETON);</pre>
702
703 Either of these statements places the {@code ServiceImpl} class into
704 singleton scope. Guice will create only one instance of {@code ServiceImpl}
705 and will reuse it for all injection requests of this type. Note that it is
706 still possible to bind another instance of {@code ServiceImpl} if the second
707 binding is qualified by an annotation as in the previous example. Guice is
708 not overly concerned with <i>preventing</i> you from creating multiple
709 instances of your "singletons", only with <i>enabling</i> your application to
710 share only one instance if that's all you tell Guice you need.
711
712 <p><b>Note:</b> a scope specified in this way <i>overrides</i> any scope that
713 was specified with an annotation on the {@code ServiceImpl} class.
714
715 <p>Besides {@link Singleton}/{@link Scopes#SINGLETON}, there are
716 servlet-specific scopes available in
717 {@code com.google.inject.servlet.ServletScopes}, and your Modules can
718 contribute their own custom scopes for use here as well.
719
720 <pre>
721 bind(new TypeLiteral&lt;PaymentService&lt;CreditCard>>() {})
722 .to(CreditCardPaymentService.class);</pre>
723
724 This admittedly odd construct is the way to bind a parameterized type. It
725 tells Guice how to honor an injection request for an element of type
726 {@code PaymentService<CreditCard>}. The class
727 {@code CreditCardPaymentService} must implement the
728 {@code PaymentService<CreditCard>} interface. Guice cannot currently bind or
729 inject a generic type, such as {@code Set<E>}; all type parameters must be
730 fully specified.
731
732 <pre>
733 bind(Service.class).toInstance(new ServiceImpl());
734 // or, alternatively
735 bind(Service.class).toInstance(SomeLegacyRegistry.getService());</pre>
736
737 In this example, your module itself, <i>not Guice</i>, takes responsibility
738 for obtaining a {@code ServiceImpl} instance, then asks Guice to always use
739 this single instance to fulfill all {@code Service} injection requests. When
740 the {@link Injector} is created, it will automatically perform field
741 and method injection for this instance, but any injectable constructor on
742 {@code ServiceImpl} is simply ignored. Note that using this approach results
743 in "eager loading" behavior that you can't control.
744
745 <pre>
746 bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre>
747
748 Sets up a constant binding. Constant injections must always be annotated.
749 When a constant binding's value is a string, it is eligile for conversion to
750 all primitive types, to {@link Enum#valueOf(Class, String) all enums}, and to
751 {@link Class#forName class literals}. Conversions for other types can be
752 configured using {@link #convertToTypes(Matcher, TypeConverter)
753 convertToTypes()}.
754
755 <pre>
756 {@literal @}Color("red") Color red; // A member variable (field)
757 . . .
758 red = MyModule.class.getDeclaredField("red").getAnnotation(Color.class);
759 bind(Service.class).annotatedWith(red).to(RedService.class);</pre>
760
761 If your binding annotation has parameters you can apply different bindings to
762 different specific values of your annotation. Getting your hands on the
763 right instance of the annotation is a bit of a pain -- one approach, shown
764 above, is to apply a prototype annotation to a field in your module class, so
765 that you can read this annotation instance and give it to Guice.
766
767 <pre>
768 bind(Service.class)
769 .annotatedWith(Names.named("blue"))
770 .to(BlueService.class);</pre>
771
772 Differentiating by names is a common enough use case that we provided a
773 standard annotation, {@link com.google.inject.name.Named @Named}. Because of
774 Guice's library support, binding by name is quite easier than in the
775 arbitrary binding annotation case we just saw. However, remember that these
776 names will live in a single flat namespace with all the other names used in
777 your application.
778
779 <pre>
780 Constructor<T> loneCtor = getLoneCtorFromServiceImplViaReflection();
781 bind(ServiceImpl.class)
782 .toConstructor(loneCtor);</pre>
783
784 In this example, we directly tell Guice which constructor to use in a concrete
785 class implementation. It means that we do not need to place {@literal @}Inject
786 on any of the constructors and that Guice treats the provided constructor as though
787 it were annotated so. It is useful for cases where you cannot modify existing
788 classes and is a bit simpler than using a {@link Provider}.
789
790 <p>The above list of examples is far from exhaustive. If you can think of
791 how the concepts of one example might coexist with the concepts from another,
792 you can most likely weave the two together. If the two concepts make no
793 sense with each other, you most likely won't be able to do it. In a few
794 cases Guice will let something bogus slip by, and will then inform you of
795 the problems at runtime, as soon as you try to create your Injector.
796
797 <p>The other methods of Binder such as {@link #bindScope},
798 {@link #bindInterceptor}, {@link #install}, {@link #requestStaticInjection},
799 {@link #addError} and {@link #currentStage} are not part of the Binding EDSL;
800 you can learn how to use these in the usual way, from the method
801 documentation.
802
803 @author crazybob@google.com (Bob Lee)
804 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -0700805 @author kevinb@google.com (Kevin Bourrillion)]]>
806 </doc>
807 </interface>
808 <!-- end interface com.google.inject.Binder -->
809 <!-- start interface com.google.inject.Binding -->
810 <interface name="Binding" abstract="true"
811 static="false" final="false" visibility="public"
812 deprecated="not deprecated">
813 <implements name="com.google.inject.spi.Element"/>
814 <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
815 abstract="false" native="false" synchronized="false"
816 static="false" final="false" visibility="public"
817 deprecated="not deprecated">
818 <doc>
819 <![CDATA[Returns the key for this binding.]]>
820 </doc>
821 </method>
822 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
823 abstract="false" native="false" synchronized="false"
824 static="false" final="false" visibility="public"
825 deprecated="not deprecated">
826 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000827 <![CDATA[Returns the scoped provider guice uses to fulfill requests for this
828 binding.
829
830 @throws UnsupportedOperationException when invoked on a {@link Binding}
831 created via {@link com.google.inject.spi.Elements#getElements}. This
sameb1d3f8cd2014-10-07 15:32:12 -0700832 method is only supported on {@link Binding}s returned from an injector.]]>
833 </doc>
834 </method>
835 <method name="acceptTargetVisitor" return="V"
836 abstract="false" native="false" synchronized="false"
837 static="false" final="false" visibility="public"
838 deprecated="not deprecated">
839 <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor&lt;? super T, V&gt;"/>
840 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000841 <![CDATA[Accepts a target visitor. Invokes the visitor method specific to this binding's target.
842
843 @param visitor to call back on
sameb1d3f8cd2014-10-07 15:32:12 -0700844 @since 2.0]]>
845 </doc>
846 </method>
847 <method name="acceptScopingVisitor" return="V"
848 abstract="false" native="false" synchronized="false"
849 static="false" final="false" visibility="public"
850 deprecated="not deprecated">
851 <param name="visitor" type="com.google.inject.spi.BindingScopingVisitor&lt;V&gt;"/>
852 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000853 <![CDATA[Accepts a scoping visitor. Invokes the visitor method specific to this binding's scoping.
854
855 @param visitor to call back on
sameb1d3f8cd2014-10-07 15:32:12 -0700856 @since 2.0]]>
857 </doc>
858 </method>
859 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000860 <![CDATA[A mapping from a key (type and optional annotation) to the strategy for getting instances of the
861 type. This interface is part of the introspection API and is intended primarily for use by
862 tools.
863
864 <p>Bindings are created in several ways:
865 <ul>
866 <li>Explicitly in a module, via {@code bind()} and {@code bindConstant()}
867 statements:
868 <pre>
869 bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class);
870 bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre></li>
871 <li>Implicitly by the Injector by following a type's {@link ImplementedBy
872 pointer} {@link ProvidedBy annotations} or by using its {@link Inject annotated} or
873 default constructor.</li>
874 <li>By converting a bound instance to a different type.</li>
875 <li>For {@link Provider providers}, by delegating to the binding for the provided type.</li>
876 </ul>
877
878
879 <p>They exist on both modules and on injectors, and their behaviour is different for each:
880 <ul>
881 <li><strong>Module bindings</strong> are incomplete and cannot be used to provide instances.
882 This is because the applicable scopes and interceptors may not be known until an injector
883 is created. From a tool's perspective, module bindings are like the injector's source
884 code. They can be inspected or rewritten, but this analysis must be done statically.</li>
885 <li><strong>Injector bindings</strong> are complete and valid and can be used to provide
886 instances. From a tools' perspective, injector bindings are like reflection for an
887 injector. They have full runtime information, including the complete graph of injections
888 necessary to satisfy a binding.</li>
889 </ul>
890
891 @param <T> the bound type. The injected is always assignable to this type.
892
893 @author crazybob@google.com (Bob Lee)
sameb1d3f8cd2014-10-07 15:32:12 -0700894 @author jessewilson@google.com (Jesse Wilson)]]>
895 </doc>
896 </interface>
897 <!-- end interface com.google.inject.Binding -->
898 <!-- start class com.google.inject.BindingAnnotation -->
899 <class name="BindingAnnotation" abstract="true"
900 static="false" final="false" visibility="public"
901 deprecated="not deprecated">
902 <implements name="java.lang.annotation.Annotation"/>
903 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000904 <![CDATA[Annotates annotations which are used for binding. Only one such annotation
905 may apply to a single injection point. You must also annotate binder
906 annotations with {@code @Retention(RUNTIME)}. For example:
907
908 <pre>
909 {@code @}Retention(RUNTIME)
910 {@code @}Target({ FIELD, PARAMETER, METHOD })
911 {@code @}BindingAnnotation
912 public {@code @}interface Transactional {}
913 </pre>
914
sameb1d3f8cd2014-10-07 15:32:12 -0700915 @author crazybob@google.com (Bob Lee)]]>
916 </doc>
917 </class>
918 <!-- end class com.google.inject.BindingAnnotation -->
919 <!-- start class com.google.inject.ConfigurationException -->
920 <class name="ConfigurationException" extends="java.lang.RuntimeException"
921 abstract="false"
922 static="false" final="true" visibility="public"
923 deprecated="not deprecated">
924 <constructor name="ConfigurationException" type="java.lang.Iterable&lt;com.google.inject.spi.Message&gt;"
925 static="false" final="false" visibility="public"
926 deprecated="not deprecated">
927 <doc>
928 <![CDATA[Creates a ConfigurationException containing {@code messages}.]]>
929 </doc>
930 </constructor>
931 <method name="withPartialValue" return="com.google.inject.ConfigurationException"
932 abstract="false" native="false" synchronized="false"
933 static="false" final="false" visibility="public"
934 deprecated="not deprecated">
935 <param name="partialValue" type="java.lang.Object"/>
936 <doc>
937 <![CDATA[Returns a copy of this configuration exception with the specified partial value.]]>
938 </doc>
939 </method>
940 <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
941 abstract="false" native="false" synchronized="false"
942 static="false" final="false" visibility="public"
943 deprecated="not deprecated">
944 <doc>
945 <![CDATA[Returns messages for the errors that caused this exception.]]>
946 </doc>
947 </method>
948 <method name="getPartialValue" return="E"
949 abstract="false" native="false" synchronized="false"
950 static="false" final="false" visibility="public"
951 deprecated="not deprecated">
952 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000953 <![CDATA[Returns a value that was only partially computed due to this exception. The caller can use
954 this while collecting additional configuration problems.
955
956 @return the partial value, or {@code null} if none was set. The type of the partial value is
sameb1d3f8cd2014-10-07 15:32:12 -0700957 specified by the throwing method.]]>
958 </doc>
959 </method>
960 <method name="getMessage" return="java.lang.String"
961 abstract="false" native="false" synchronized="false"
962 static="false" final="false" visibility="public"
963 deprecated="not deprecated">
964 </method>
965 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000966 <![CDATA[Thrown when a programming error such as a misplaced annotation, illegal binding, or unsupported
967 scope is found. Clients should catch this exception, log it, and stop execution.
968
969 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -0700970 @since 2.0]]>
971 </doc>
972 </class>
973 <!-- end class com.google.inject.ConfigurationException -->
974 <!-- start class com.google.inject.CreationException -->
975 <class name="CreationException" extends="java.lang.RuntimeException"
976 abstract="false"
977 static="false" final="false" visibility="public"
978 deprecated="not deprecated">
979 <constructor name="CreationException" type="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
980 static="false" final="false" visibility="public"
981 deprecated="not deprecated">
982 <doc>
983 <![CDATA[Creates a CreationException containing {@code messages}.]]>
984 </doc>
985 </constructor>
986 <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
987 abstract="false" native="false" synchronized="false"
988 static="false" final="false" visibility="public"
989 deprecated="not deprecated">
990 <doc>
991 <![CDATA[Returns messages for the errors that caused this exception.]]>
992 </doc>
993 </method>
994 <method name="getMessage" return="java.lang.String"
995 abstract="false" native="false" synchronized="false"
996 static="false" final="false" visibility="public"
997 deprecated="not deprecated">
998 </method>
999 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001000 <![CDATA[Thrown when errors occur while creating a {@link Injector}. Includes a list of encountered
1001 errors. Clients should catch this exception, log it, and stop execution.
1002
sameb1d3f8cd2014-10-07 15:32:12 -07001003 @author crazybob@google.com (Bob Lee)]]>
1004 </doc>
1005 </class>
1006 <!-- end class com.google.inject.CreationException -->
1007 <!-- start class com.google.inject.Exposed -->
1008 <class name="Exposed" abstract="true"
1009 static="false" final="false" visibility="public"
1010 deprecated="not deprecated">
1011 <implements name="java.lang.annotation.Annotation"/>
1012 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001013 <![CDATA[Acccompanies a {@literal @}{@link com.google.inject.Provides Provides} method annotation in a
1014 private module to indicate that the provided binding is exposed.
1015
1016 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07001017 @since 2.0]]>
1018 </doc>
1019 </class>
1020 <!-- end class com.google.inject.Exposed -->
1021 <!-- start class com.google.inject.Guice -->
1022 <class name="Guice" extends="java.lang.Object"
1023 abstract="false"
1024 static="false" final="true" visibility="public"
1025 deprecated="not deprecated">
1026 <method name="createInjector" return="com.google.inject.Injector"
1027 abstract="false" native="false" synchronized="false"
1028 static="true" final="false" visibility="public"
1029 deprecated="not deprecated">
1030 <param name="modules" type="com.google.inject.Module[]"/>
1031 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00001032 <![CDATA[Creates an injector for the given set of modules.
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001033
1034 @throws CreationException if one or more errors occur during injector
sameb1d3f8cd2014-10-07 15:32:12 -07001035 construction]]>
1036 </doc>
1037 </method>
1038 <method name="createInjector" return="com.google.inject.Injector"
1039 abstract="false" native="false" synchronized="false"
1040 static="true" final="false" visibility="public"
1041 deprecated="not deprecated">
1042 <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
1043 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00001044 <![CDATA[Creates an injector for the given set of modules.
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001045
1046 @throws CreationException if one or more errors occur during injector
sameb1d3f8cd2014-10-07 15:32:12 -07001047 creation]]>
1048 </doc>
1049 </method>
1050 <method name="createInjector" return="com.google.inject.Injector"
1051 abstract="false" native="false" synchronized="false"
1052 static="true" final="false" visibility="public"
1053 deprecated="not deprecated">
1054 <param name="stage" type="com.google.inject.Stage"/>
1055 <param name="modules" type="com.google.inject.Module[]"/>
1056 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001057 <![CDATA[Creates an injector for the given set of modules, in a given development
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00001058 stage.
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001059
1060 @throws CreationException if one or more errors occur during injector
sameb1d3f8cd2014-10-07 15:32:12 -07001061 creation.]]>
1062 </doc>
1063 </method>
1064 <method name="createInjector" return="com.google.inject.Injector"
1065 abstract="false" native="false" synchronized="false"
1066 static="true" final="false" visibility="public"
1067 deprecated="not deprecated">
1068 <param name="stage" type="com.google.inject.Stage"/>
1069 <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
1070 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001071 <![CDATA[Creates an injector for the given set of modules, in a given development
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00001072 stage.
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001073
1074 @throws CreationException if one or more errors occur during injector
sameb1d3f8cd2014-10-07 15:32:12 -07001075 construction]]>
1076 </doc>
1077 </method>
1078 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001079 <![CDATA[The entry point to the Guice framework. Creates {@link Injector}s from
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00001080 {@link Module}s.
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001081
1082 <p>Guice supports a model of development that draws clear boundaries between
1083 APIs, Implementations of these APIs, Modules which configure these
1084 implementations, and finally Applications which consist of a collection of
1085 Modules. It is the Application, which typically defines your {@code main()}
1086 method, that bootstraps the Guice Injector using the {@code Guice} class, as
1087 in this example:
1088 <pre>
1089 public class FooApplication {
1090 public static void main(String[] args) {
1091 Injector injector = Guice.createInjector(
1092 new ModuleA(),
1093 new ModuleB(),
1094 . . .
1095 new FooApplicationFlagsModule(args)
1096 );
1097
1098 // Now just bootstrap the application and you're done
1099 FooStarter starter = injector.getInstance(FooStarter.class);
1100 starter.runApplication();
1101 }
1102 }
sameb1d3f8cd2014-10-07 15:32:12 -07001103 </pre>]]>
1104 </doc>
1105 </class>
1106 <!-- end class com.google.inject.Guice -->
1107 <!-- start class com.google.inject.ImplementedBy -->
1108 <class name="ImplementedBy" abstract="true"
1109 static="false" final="false" visibility="public"
1110 deprecated="not deprecated">
1111 <implements name="java.lang.annotation.Annotation"/>
1112 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001113 <![CDATA[A pointer to the default implementation of a type.
1114
sameb1d3f8cd2014-10-07 15:32:12 -07001115 @author crazybob@google.com (Bob Lee)]]>
1116 </doc>
1117 </class>
1118 <!-- end class com.google.inject.ImplementedBy -->
1119 <!-- start class com.google.inject.Inject -->
1120 <class name="Inject" abstract="true"
1121 static="false" final="false" visibility="public"
1122 deprecated="not deprecated">
1123 <implements name="java.lang.annotation.Annotation"/>
1124 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001125 <![CDATA[Annotates members of your implementation class (constructors, methods
1126 and fields) into which the {@link Injector} should inject values.
1127 The Injector fulfills injection requests for:
1128
1129 <ul>
1130 <li>Every instance it constructs. The class being constructed must have
1131 exactly one of its constructors marked with {@code @Inject} or must have a
1132 constructor taking no parameters. The Injector then proceeds to perform
1133 method and field injections.
1134
1135 <li>Pre-constructed instances passed to {@link Injector#injectMembers},
1136 {@link com.google.inject.binder.LinkedBindingBuilder#toInstance(Object)} and
1137 {@link com.google.inject.binder.LinkedBindingBuilder#toProvider(Provider)}.
1138 In this case all constructors are, of course, ignored.
1139
1140 <li>Static fields and methods of classes which any {@link Module} has
1141 specifically requested static injection for, using
1142 {@link Binder#requestStaticInjection}.
1143 </ul>
1144
1145 In all cases, a member can be injected regardless of its Java access
1146 specifier (private, default, protected, public).
1147
sameb1d3f8cd2014-10-07 15:32:12 -07001148 @author crazybob@google.com (Bob Lee)]]>
1149 </doc>
1150 </class>
1151 <!-- end class com.google.inject.Inject -->
1152 <!-- start interface com.google.inject.Injector -->
1153 <interface name="Injector" abstract="true"
1154 static="false" final="false" visibility="public"
1155 deprecated="not deprecated">
1156 <method name="injectMembers"
1157 abstract="false" native="false" synchronized="false"
1158 static="false" final="false" visibility="public"
1159 deprecated="not deprecated">
1160 <param name="instance" type="java.lang.Object"/>
1161 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001162 <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or
1163 absence of an injectable constructor.
1164
1165 <p>Whenever Guice creates an instance, it performs this injection automatically (after first
1166 performing constructor injection), so if you're able to let Guice create all your objects for
1167 you, you'll never need to use this method.
1168
1169 @param instance to inject members on
1170
1171 @see Binder#getMembersInjector(Class) for a preferred alternative that supports checks before
sameb1d3f8cd2014-10-07 15:32:12 -07001172 run time]]>
1173 </doc>
1174 </method>
1175 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
1176 abstract="false" native="false" synchronized="false"
1177 static="false" final="false" visibility="public"
1178 deprecated="not deprecated">
1179 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1180 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001181 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
1182 of the given type {@code T}.
1183
1184 @param typeLiteral type to get members injector for
1185 @see Binder#getMembersInjector(TypeLiteral) for an alternative that offers up front error
1186 detection
sameb1d3f8cd2014-10-07 15:32:12 -07001187 @since 2.0]]>
1188 </doc>
1189 </method>
1190 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
1191 abstract="false" native="false" synchronized="false"
1192 static="false" final="false" visibility="public"
1193 deprecated="not deprecated">
1194 <param name="type" type="java.lang.Class&lt;T&gt;"/>
1195 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001196 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
1197 of the given type {@code T}. When feasible, use {@link Binder#getMembersInjector(TypeLiteral)}
1198 instead to get increased up front error detection.
1199
1200 @param type type to get members injector for
1201 @see Binder#getMembersInjector(Class) for an alternative that offers up front error
1202 detection
sameb1d3f8cd2014-10-07 15:32:12 -07001203 @since 2.0]]>
1204 </doc>
1205 </method>
1206 <method name="getBindings" return="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, com.google.inject.Binding&lt;?&gt;&gt;"
1207 abstract="false" native="false" synchronized="false"
1208 static="false" final="false" visibility="public"
1209 deprecated="not deprecated">
1210 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001211 <![CDATA[Returns this injector's <strong>explicit</strong> bindings.
1212
1213 <p>The returned map does not include bindings inherited from a {@link #getParent() parent
1214 injector}, should one exist. The returned map is guaranteed to iterate (for example, with
1215 its {@link Map#entrySet()} iterator) in the order of insertion. In other words, the order in
1216 which bindings appear in user Modules.
1217
sameb1d3f8cd2014-10-07 15:32:12 -07001218 <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]>
1219 </doc>
1220 </method>
1221 <method name="getAllBindings" return="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, com.google.inject.Binding&lt;?&gt;&gt;"
1222 abstract="false" native="false" synchronized="false"
1223 static="false" final="false" visibility="public"
1224 deprecated="not deprecated">
1225 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001226 <![CDATA[Returns a snapshot of this injector's bindings, <strong>both explicit and
1227 just-in-time</strong>. The returned map is immutable; it contains only the bindings that were
1228 present when {@code getAllBindings()} was invoked. Subsequent calls may return a map with
1229 additional just-in-time bindings.
1230
1231 <p>The returned map does not include bindings inherited from a {@link #getParent() parent
1232 injector}, should one exist.
1233
1234 <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
1235
sameb1d3f8cd2014-10-07 15:32:12 -07001236 @since 3.0]]>
1237 </doc>
1238 </method>
1239 <method name="getBinding" return="com.google.inject.Binding&lt;T&gt;"
1240 abstract="false" native="false" synchronized="false"
1241 static="false" final="false" visibility="public"
1242 deprecated="not deprecated">
1243 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
1244 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001245 <![CDATA[Returns the binding for the given injection key. This will be an explicit bindings if the key
1246 was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will
1247 be created if necessary.
1248
1249 <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
1250
sameb1d3f8cd2014-10-07 15:32:12 -07001251 @throws ConfigurationException if this injector cannot find or create the binding.]]>
1252 </doc>
1253 </method>
1254 <method name="getBinding" return="com.google.inject.Binding&lt;T&gt;"
1255 abstract="false" native="false" synchronized="false"
1256 static="false" final="false" visibility="public"
1257 deprecated="not deprecated">
1258 <param name="type" type="java.lang.Class&lt;T&gt;"/>
1259 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001260 <![CDATA[Returns the binding for the given type. This will be an explicit bindings if the injection key
1261 was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will
1262 be created if necessary.
1263
1264 <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
1265
1266 @throws ConfigurationException if this injector cannot find or create the binding.
sameb1d3f8cd2014-10-07 15:32:12 -07001267 @since 2.0]]>
1268 </doc>
1269 </method>
1270 <method name="getExistingBinding" return="com.google.inject.Binding&lt;T&gt;"
1271 abstract="false" native="false" synchronized="false"
1272 static="false" final="false" visibility="public"
1273 deprecated="not deprecated">
1274 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
1275 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001276 <![CDATA[Returns the binding if it already exists, or null if does not exist. Unlike
1277 {@link #getBinding(Key)}, this does not attempt to create just-in-time bindings
1278 for keys that aren't bound.
1279
1280 <p> This method is part of the Guice SPI and is intended for use by tools and extensions.
1281
sameb1d3f8cd2014-10-07 15:32:12 -07001282 @since 3.0]]>
1283 </doc>
1284 </method>
1285 <method name="findBindingsByType" return="java.util.List&lt;com.google.inject.Binding&lt;T&gt;&gt;"
1286 abstract="false" native="false" synchronized="false"
1287 static="false" final="false" visibility="public"
1288 deprecated="not deprecated">
1289 <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1290 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001291 <![CDATA[Returns all explicit bindings for {@code type}.
1292
sameb1d3f8cd2014-10-07 15:32:12 -07001293 <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]>
1294 </doc>
1295 </method>
1296 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
1297 abstract="false" native="false" synchronized="false"
1298 static="false" final="false" visibility="public"
1299 deprecated="not deprecated">
1300 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
1301 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001302 <![CDATA[Returns the provider used to obtain instances for the given injection key. When feasible, avoid
1303 using this method, in favor of having Guice inject your dependencies ahead of time.
1304
1305 @throws ConfigurationException if this injector cannot find or create the provider.
sameb1d3f8cd2014-10-07 15:32:12 -07001306 @see Binder#getProvider(Key) for an alternative that offers up front error detection]]>
1307 </doc>
1308 </method>
1309 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
1310 abstract="false" native="false" synchronized="false"
1311 static="false" final="false" visibility="public"
1312 deprecated="not deprecated">
1313 <param name="type" type="java.lang.Class&lt;T&gt;"/>
1314 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001315 <![CDATA[Returns the provider used to obtain instances for the given type. When feasible, avoid
1316 using this method, in favor of having Guice inject your dependencies ahead of time.
1317
1318 @throws ConfigurationException if this injector cannot find or create the provider.
sameb1d3f8cd2014-10-07 15:32:12 -07001319 @see Binder#getProvider(Class) for an alternative that offers up front error detection]]>
1320 </doc>
1321 </method>
1322 <method name="getInstance" return="T"
1323 abstract="false" native="false" synchronized="false"
1324 static="false" final="false" visibility="public"
1325 deprecated="not deprecated">
1326 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
1327 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001328 <![CDATA[Returns the appropriate instance for the given injection key; equivalent to {@code
1329 getProvider(key).get()}. When feasible, avoid using this method, in favor of having Guice
1330 inject your dependencies ahead of time.
1331
1332 @throws ConfigurationException if this injector cannot find or create the provider.
sameb1d3f8cd2014-10-07 15:32:12 -07001333 @throws ProvisionException if there was a runtime failure while providing an instance.]]>
1334 </doc>
1335 </method>
1336 <method name="getInstance" return="T"
1337 abstract="false" native="false" synchronized="false"
1338 static="false" final="false" visibility="public"
1339 deprecated="not deprecated">
1340 <param name="type" type="java.lang.Class&lt;T&gt;"/>
1341 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001342 <![CDATA[Returns the appropriate instance for the given injection type; equivalent to {@code
1343 getProvider(type).get()}. When feasible, avoid using this method, in favor of having Guice
1344 inject your dependencies ahead of time.
1345
1346 @throws ConfigurationException if this injector cannot find or create the provider.
sameb1d3f8cd2014-10-07 15:32:12 -07001347 @throws ProvisionException if there was a runtime failure while providing an instance.]]>
1348 </doc>
1349 </method>
1350 <method name="getParent" return="com.google.inject.Injector"
1351 abstract="false" native="false" synchronized="false"
1352 static="false" final="false" visibility="public"
1353 deprecated="not deprecated">
1354 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001355 <![CDATA[Returns this injector's parent, or {@code null} if this is a top-level injector.
1356
sameb1d3f8cd2014-10-07 15:32:12 -07001357 @since 2.0]]>
1358 </doc>
1359 </method>
1360 <method name="createChildInjector" return="com.google.inject.Injector"
1361 abstract="false" native="false" synchronized="false"
1362 static="false" final="false" visibility="public"
1363 deprecated="not deprecated">
1364 <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
1365 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001366 <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes,
1367 interceptors and type converters are inherited -- they are visible to the child injector.
1368 Elements of the child injector are not visible to its parent.
1369
1370 <p>Just-in-time bindings created for child injectors will be created in an ancestor injector
1371 whenever possible. This allows for scoped instances to be shared between injectors. Use
sberlin@gmail.com3cff1b22011-03-06 23:30:55 +00001372 explicit bindings to prevent bindings from being shared with the parent injector. Optional
1373 injections in just-in-time bindings (created in the parent injector) may be silently
1374 ignored if the optional dependencies are from the child injector.
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001375
1376 <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time
1377 bindings. The lone exception is the key for {@code Injector.class}, which is bound by each
1378 injector to itself.
1379
sameb1d3f8cd2014-10-07 15:32:12 -07001380 @since 2.0]]>
1381 </doc>
1382 </method>
1383 <method name="createChildInjector" return="com.google.inject.Injector"
1384 abstract="false" native="false" synchronized="false"
1385 static="false" final="false" visibility="public"
1386 deprecated="not deprecated">
1387 <param name="modules" type="com.google.inject.Module[]"/>
1388 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001389 <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes,
1390 interceptors and type converters are inherited -- they are visible to the child injector.
1391 Elements of the child injector are not visible to its parent.
1392
1393 <p>Just-in-time bindings created for child injectors will be created in an ancestor injector
1394 whenever possible. This allows for scoped instances to be shared between injectors. Use
1395 explicit bindings to prevent bindings from being shared with the parent injector.
1396
1397 <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time
1398 bindings. The lone exception is the key for {@code Injector.class}, which is bound by each
1399 injector to itself.
1400
sameb1d3f8cd2014-10-07 15:32:12 -07001401 @since 2.0]]>
1402 </doc>
1403 </method>
1404 <method name="getScopeBindings" return="java.util.Map&lt;java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;, com.google.inject.Scope&gt;"
1405 abstract="false" native="false" synchronized="false"
1406 static="false" final="false" visibility="public"
1407 deprecated="not deprecated">
1408 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001409 <![CDATA[Returns a map containing all scopes in the injector. The maps keys are scoping annotations
1410 like {@code Singleton.class}, and the values are scope instances, such as {@code
1411 Scopes.SINGLETON}. The returned map is immutable.
1412
1413 <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
1414
sameb1d3f8cd2014-10-07 15:32:12 -07001415 @since 3.0]]>
1416 </doc>
1417 </method>
1418 <method name="getTypeConverterBindings" return="java.util.Set&lt;com.google.inject.spi.TypeConverterBinding&gt;"
1419 abstract="false" native="false" synchronized="false"
1420 static="false" final="false" visibility="public"
1421 deprecated="not deprecated">
1422 <doc>
sberlin@gmail.com251cda62010-12-09 03:27:02 +00001423 <![CDATA[Returns a set containing all type converter bindings in the injector. The returned set is
1424 immutable.
1425
1426 <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
1427
sameb1d3f8cd2014-10-07 15:32:12 -07001428 @since 3.0]]>
1429 </doc>
1430 </method>
1431 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001432 <![CDATA[Builds the graphs of objects that make up your application. The injector tracks the dependencies
1433 for each type and uses bindings to inject them. This is the core of Guice, although you rarely
1434 interact with it directly. This "behind-the-scenes" operation is what distinguishes dependency
1435 injection from its cousin, the service locator pattern.
1436
1437 <p>Contains several default bindings:
1438
1439 <ul>
1440 <li>This {@link Injector} instance itself
1441 <li>A {@code Provider<T>} for each binding of type {@code T}
1442 <li>The {@link java.util.logging.Logger} for the class being injected
1443 <li>The {@link Stage} in which the Injector was created
1444 </ul>
1445
1446 Injectors are created using the facade class {@link Guice}.
1447
1448 <p>An injector can also {@link #injectMembers(Object) inject the dependencies} of
1449 already-constructed instances. This can be used to interoperate with objects created by other
1450 frameworks or services.
1451
1452 <p>Injectors can be {@link #createChildInjector(Iterable) hierarchical}. Child injectors inherit
1453 the configuration of their parent injectors, but the converse does not hold.
1454
1455 <p>The injector's {@link #getBindings() internal bindings} are available for introspection. This
1456 enables tools and extensions to operate on an injector reflectively.
1457
1458 @author crazybob@google.com (Bob Lee)
sameb1d3f8cd2014-10-07 15:32:12 -07001459 @author jessewilson@google.com (Jesse Wilson)]]>
1460 </doc>
1461 </interface>
1462 <!-- end interface com.google.inject.Injector -->
1463 <!-- start class com.google.inject.Key -->
1464 <class name="Key" extends="java.lang.Object"
1465 abstract="false"
1466 static="false" final="false" visibility="public"
1467 deprecated="not deprecated">
1468 <constructor name="Key" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
1469 static="false" final="false" visibility="protected"
1470 deprecated="not deprecated">
1471 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001472 <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
1473
1474 <p>Clients create an empty anonymous subclass. Doing so embeds the type
1475 parameter in the anonymous class's type hierarchy so we can reconstitute it
1476 at runtime despite erasure.
1477
1478 <p>Example usage for a binding of type {@code Foo} annotated with
1479 {@code @Bar}:
1480
sameb1d3f8cd2014-10-07 15:32:12 -07001481 <p>{@code new Key<Foo>(Bar.class) {}}.]]>
1482 </doc>
1483 </constructor>
1484 <constructor name="Key" type="java.lang.annotation.Annotation"
1485 static="false" final="false" visibility="protected"
1486 deprecated="not deprecated">
1487 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001488 <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
1489
1490 <p>Clients create an empty anonymous subclass. Doing so embeds the type
1491 parameter in the anonymous class's type hierarchy so we can reconstitute it
1492 at runtime despite erasure.
1493
1494 <p>Example usage for a binding of type {@code Foo} annotated with
1495 {@code @Bar}:
1496
sameb1d3f8cd2014-10-07 15:32:12 -07001497 <p>{@code new Key<Foo>(new Bar()) {}}.]]>
1498 </doc>
1499 </constructor>
1500 <constructor name="Key"
1501 static="false" final="false" visibility="protected"
1502 deprecated="not deprecated">
1503 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001504 <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
1505
1506 <p>Clients create an empty anonymous subclass. Doing so embeds the type
1507 parameter in the anonymous class's type hierarchy so we can reconstitute it
1508 at runtime despite erasure.
1509
1510 <p>Example usage for a binding of type {@code Foo}:
1511
sameb1d3f8cd2014-10-07 15:32:12 -07001512 <p>{@code new Key<Foo>() {}}.]]>
1513 </doc>
1514 </constructor>
1515 <method name="getTypeLiteral" return="com.google.inject.TypeLiteral&lt;T&gt;"
1516 abstract="false" native="false" synchronized="false"
1517 static="false" final="true" visibility="public"
1518 deprecated="not deprecated">
1519 <doc>
1520 <![CDATA[Gets the key type.]]>
1521 </doc>
1522 </method>
1523 <method name="getAnnotationType" return="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
1524 abstract="false" native="false" synchronized="false"
1525 static="false" final="true" visibility="public"
1526 deprecated="not deprecated">
1527 <doc>
1528 <![CDATA[Gets the annotation type.]]>
1529 </doc>
1530 </method>
1531 <method name="getAnnotation" return="java.lang.annotation.Annotation"
1532 abstract="false" native="false" synchronized="false"
1533 static="false" final="true" visibility="public"
1534 deprecated="not deprecated">
1535 <doc>
1536 <![CDATA[Gets the annotation.]]>
1537 </doc>
1538 </method>
1539 <method name="equals" return="boolean"
1540 abstract="false" native="false" synchronized="false"
1541 static="false" final="true" visibility="public"
1542 deprecated="not deprecated">
1543 <param name="o" type="java.lang.Object"/>
1544 </method>
1545 <method name="hashCode" return="int"
1546 abstract="false" native="false" synchronized="false"
1547 static="false" final="true" visibility="public"
1548 deprecated="not deprecated">
1549 </method>
1550 <method name="toString" return="java.lang.String"
1551 abstract="false" native="false" synchronized="false"
1552 static="false" final="true" visibility="public"
1553 deprecated="not deprecated">
1554 </method>
1555 <method name="get" return="com.google.inject.Key&lt;T&gt;"
1556 abstract="false" native="false" synchronized="false"
1557 static="true" final="false" visibility="public"
1558 deprecated="not deprecated">
1559 <param name="type" type="java.lang.Class&lt;T&gt;"/>
1560 <doc>
1561 <![CDATA[Gets a key for an injection type.]]>
1562 </doc>
1563 </method>
1564 <method name="get" return="com.google.inject.Key&lt;T&gt;"
1565 abstract="false" native="false" synchronized="false"
1566 static="true" final="false" visibility="public"
1567 deprecated="not deprecated">
1568 <param name="type" type="java.lang.Class&lt;T&gt;"/>
1569 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
1570 <doc>
1571 <![CDATA[Gets a key for an injection type and an annotation type.]]>
1572 </doc>
1573 </method>
1574 <method name="get" return="com.google.inject.Key&lt;T&gt;"
1575 abstract="false" native="false" synchronized="false"
1576 static="true" final="false" visibility="public"
1577 deprecated="not deprecated">
1578 <param name="type" type="java.lang.Class&lt;T&gt;"/>
1579 <param name="annotation" type="java.lang.annotation.Annotation"/>
1580 <doc>
1581 <![CDATA[Gets a key for an injection type and an annotation.]]>
1582 </doc>
1583 </method>
1584 <method name="get" return="com.google.inject.Key&lt;?&gt;"
1585 abstract="false" native="false" synchronized="false"
1586 static="true" final="false" visibility="public"
1587 deprecated="not deprecated">
1588 <param name="type" type="java.lang.reflect.Type"/>
1589 <doc>
1590 <![CDATA[Gets a key for an injection type.]]>
1591 </doc>
1592 </method>
1593 <method name="get" return="com.google.inject.Key&lt;?&gt;"
1594 abstract="false" native="false" synchronized="false"
1595 static="true" final="false" visibility="public"
1596 deprecated="not deprecated">
1597 <param name="type" type="java.lang.reflect.Type"/>
1598 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
1599 <doc>
1600 <![CDATA[Gets a key for an injection type and an annotation type.]]>
1601 </doc>
1602 </method>
1603 <method name="get" return="com.google.inject.Key&lt;?&gt;"
1604 abstract="false" native="false" synchronized="false"
1605 static="true" final="false" visibility="public"
1606 deprecated="not deprecated">
1607 <param name="type" type="java.lang.reflect.Type"/>
1608 <param name="annotation" type="java.lang.annotation.Annotation"/>
1609 <doc>
1610 <![CDATA[Gets a key for an injection type and an annotation.]]>
1611 </doc>
1612 </method>
1613 <method name="get" return="com.google.inject.Key&lt;T&gt;"
1614 abstract="false" native="false" synchronized="false"
1615 static="true" final="false" visibility="public"
1616 deprecated="not deprecated">
1617 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1618 <doc>
1619 <![CDATA[Gets a key for an injection type.]]>
1620 </doc>
1621 </method>
1622 <method name="get" return="com.google.inject.Key&lt;T&gt;"
1623 abstract="false" native="false" synchronized="false"
1624 static="true" final="false" visibility="public"
1625 deprecated="not deprecated">
1626 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1627 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
1628 <doc>
1629 <![CDATA[Gets a key for an injection type and an annotation type.]]>
1630 </doc>
1631 </method>
1632 <method name="get" return="com.google.inject.Key&lt;T&gt;"
1633 abstract="false" native="false" synchronized="false"
1634 static="true" final="false" visibility="public"
1635 deprecated="not deprecated">
1636 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1637 <param name="annotation" type="java.lang.annotation.Annotation"/>
1638 <doc>
1639 <![CDATA[Gets a key for an injection type and an annotation.]]>
1640 </doc>
1641 </method>
1642 <method name="ofType" return="com.google.inject.Key&lt;T&gt;"
1643 abstract="false" native="false" synchronized="false"
1644 static="false" final="false" visibility="public"
1645 deprecated="not deprecated">
1646 <param name="type" type="java.lang.Class&lt;T&gt;"/>
1647 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001648 <![CDATA[Returns a new key of the specified type with the same annotation as this
1649 key.
1650
sameb1d3f8cd2014-10-07 15:32:12 -07001651 @since 3.0]]>
1652 </doc>
1653 </method>
1654 <method name="ofType" return="com.google.inject.Key&lt;?&gt;"
1655 abstract="false" native="false" synchronized="false"
1656 static="false" final="false" visibility="public"
1657 deprecated="not deprecated">
1658 <param name="type" type="java.lang.reflect.Type"/>
1659 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001660 <![CDATA[Returns a new key of the specified type with the same annotation as this
1661 key.
1662
sameb1d3f8cd2014-10-07 15:32:12 -07001663 @since 3.0]]>
1664 </doc>
1665 </method>
1666 <method name="ofType" return="com.google.inject.Key&lt;T&gt;"
1667 abstract="false" native="false" synchronized="false"
1668 static="false" final="false" visibility="public"
1669 deprecated="not deprecated">
1670 <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1671 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001672 <![CDATA[Returns a new key of the specified type with the same annotation as this
1673 key.
1674
sameb1d3f8cd2014-10-07 15:32:12 -07001675 @since 3.0]]>
1676 </doc>
1677 </method>
1678 <method name="hasAttributes" return="boolean"
1679 abstract="false" native="false" synchronized="false"
1680 static="false" final="false" visibility="public"
1681 deprecated="not deprecated">
1682 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001683 <![CDATA[Returns true if this key has annotation attributes.
1684
sameb1d3f8cd2014-10-07 15:32:12 -07001685 @since 3.0]]>
1686 </doc>
1687 </method>
1688 <method name="withoutAttributes" return="com.google.inject.Key&lt;T&gt;"
1689 abstract="false" native="false" synchronized="false"
1690 static="false" final="false" visibility="public"
1691 deprecated="not deprecated">
1692 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001693 <![CDATA[Returns this key without annotation attributes, i.e. with only the
1694 annotation type.
1695
sameb1d3f8cd2014-10-07 15:32:12 -07001696 @since 3.0]]>
1697 </doc>
1698 </method>
1699 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001700 <![CDATA[Binding key consisting of an injection type and an optional annotation.
1701 Matches the type and annotation at a point of injection.
1702
1703 <p>For example, {@code Key.get(Service.class, Transactional.class)} will
1704 match:
1705
1706 <pre>
1707 {@literal @}Inject
1708 public void setService({@literal @}Transactional Service service) {
1709 ...
1710 }
1711 </pre>
1712
1713 <p>{@code Key} supports generic types via subclassing just like {@link
1714 TypeLiteral}.
1715
1716 <p>Keys do not differentiate between primitive types (int, char, etc.) and
1717 their correpsonding wrapper types (Integer, Character, etc.). Primitive
1718 types will be replaced with their wrapper types when keys are created.
1719
sameb1d3f8cd2014-10-07 15:32:12 -07001720 @author crazybob@google.com (Bob Lee)]]>
1721 </doc>
1722 </class>
1723 <!-- end class com.google.inject.Key -->
1724 <!-- start interface com.google.inject.MembersInjector -->
1725 <interface name="MembersInjector" abstract="true"
1726 static="false" final="false" visibility="public"
1727 deprecated="not deprecated">
1728 <method name="injectMembers"
1729 abstract="false" native="false" synchronized="false"
1730 static="false" final="false" visibility="public"
1731 deprecated="not deprecated">
1732 <param name="instance" type="T"/>
1733 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001734 <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or
1735 absence of an injectable constructor.
1736
1737 <p>Whenever Guice creates an instance, it performs this injection automatically (after first
1738 performing constructor injection), so if you're able to let Guice create all your objects for
1739 you, you'll never need to use this method.
1740
sameb1d3f8cd2014-10-07 15:32:12 -07001741 @param instance to inject members on. May be {@code null}.]]>
1742 </doc>
1743 </method>
1744 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001745 <![CDATA[Injects dependencies into the fields and methods on instances of type {@code T}. Ignores the
1746 presence or absence of an injectable constructor.
1747
1748 @param <T> type to inject members of
1749
1750 @author crazybob@google.com (Bob Lee)
1751 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07001752 @since 2.0]]>
1753 </doc>
1754 </interface>
1755 <!-- end interface com.google.inject.MembersInjector -->
1756 <!-- start interface com.google.inject.Module -->
1757 <interface name="Module" abstract="true"
1758 static="false" final="false" visibility="public"
1759 deprecated="not deprecated">
1760 <method name="configure"
1761 abstract="false" native="false" synchronized="false"
1762 static="false" final="false" visibility="public"
1763 deprecated="not deprecated">
1764 <param name="binder" type="com.google.inject.Binder"/>
1765 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001766 <![CDATA[Contributes bindings and other configurations for this module to {@code binder}.
1767
1768 <p><strong>Do not invoke this method directly</strong> to install submodules. Instead use
1769 {@link Binder#install(Module)}, which ensures that {@link Provides provider methods} are
sameb1d3f8cd2014-10-07 15:32:12 -07001770 discovered.]]>
1771 </doc>
1772 </method>
1773 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001774 <![CDATA[A module contributes configuration information, typically interface
1775 bindings, which will be used to create an {@link Injector}. A Guice-based
1776 application is ultimately composed of little more than a set of
1777 {@code Module}s and some bootstrapping code.
1778
1779 <p>Your Module classes can use a more streamlined syntax by extending
1780 {@link AbstractModule} rather than implementing this interface directly.
1781
1782 <p>In addition to the bindings configured via {@link #configure}, bindings
1783 will be created for all methods annotated with {@literal @}{@link Provides}.
1784 Use scope and binding annotations on these methods to configure the
sameb1d3f8cd2014-10-07 15:32:12 -07001785 bindings.]]>
1786 </doc>
1787 </interface>
1788 <!-- end interface com.google.inject.Module -->
1789 <!-- start class com.google.inject.OutOfScopeException -->
1790 <class name="OutOfScopeException" extends="java.lang.RuntimeException"
1791 abstract="false"
1792 static="false" final="true" visibility="public"
1793 deprecated="not deprecated">
1794 <constructor name="OutOfScopeException" type="java.lang.String"
1795 static="false" final="false" visibility="public"
1796 deprecated="not deprecated">
1797 </constructor>
1798 <constructor name="OutOfScopeException" type="java.lang.String, java.lang.Throwable"
1799 static="false" final="false" visibility="public"
1800 deprecated="not deprecated">
1801 </constructor>
1802 <constructor name="OutOfScopeException" type="java.lang.Throwable"
1803 static="false" final="false" visibility="public"
1804 deprecated="not deprecated">
1805 </constructor>
1806 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001807 <![CDATA[Thrown from {@link Provider#get} when an attempt is made to access a scoped
1808 object while the scope in question is not currently active.
1809
1810 @author kevinb@google.com (Kevin Bourrillion)
sameb1d3f8cd2014-10-07 15:32:12 -07001811 @since 2.0]]>
1812 </doc>
1813 </class>
1814 <!-- end class com.google.inject.OutOfScopeException -->
1815 <!-- start interface com.google.inject.PrivateBinder -->
1816 <interface name="PrivateBinder" abstract="true"
1817 static="false" final="false" visibility="public"
1818 deprecated="not deprecated">
1819 <implements name="com.google.inject.Binder"/>
1820 <method name="expose"
1821 abstract="false" native="false" synchronized="false"
1822 static="false" final="false" visibility="public"
1823 deprecated="not deprecated">
1824 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
1825 <doc>
1826 <![CDATA[Makes the binding for {@code key} available to the enclosing environment]]>
1827 </doc>
1828 </method>
1829 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
1830 abstract="false" native="false" synchronized="false"
1831 static="false" final="false" visibility="public"
1832 deprecated="not deprecated">
1833 <param name="type" type="java.lang.Class&lt;?&gt;"/>
1834 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001835 <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link
1836 com.google.inject.binder.AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
sameb1d3f8cd2014-10-07 15:32:12 -07001837 binding annotation.]]>
1838 </doc>
1839 </method>
1840 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
1841 abstract="false" native="false" synchronized="false"
1842 static="false" final="false" visibility="public"
1843 deprecated="not deprecated">
1844 <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
1845 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001846 <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link
1847 AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
sameb1d3f8cd2014-10-07 15:32:12 -07001848 binding annotation.]]>
1849 </doc>
1850 </method>
1851 <method name="withSource" return="com.google.inject.PrivateBinder"
1852 abstract="false" native="false" synchronized="false"
1853 static="false" final="false" visibility="public"
1854 deprecated="not deprecated">
1855 <param name="source" type="java.lang.Object"/>
1856 </method>
1857 <method name="skipSources" return="com.google.inject.PrivateBinder"
1858 abstract="false" native="false" synchronized="false"
1859 static="false" final="false" visibility="public"
1860 deprecated="not deprecated">
1861 <param name="classesToSkip" type="java.lang.Class[]"/>
1862 </method>
1863 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001864 <![CDATA[Returns a binder whose configuration information is hidden from its environment by default. See
1865 {@link com.google.inject.PrivateModule PrivateModule} for details.
1866
1867 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07001868 @since 2.0]]>
1869 </doc>
1870 </interface>
1871 <!-- end interface com.google.inject.PrivateBinder -->
1872 <!-- start class com.google.inject.PrivateModule -->
1873 <class name="PrivateModule" extends="java.lang.Object"
1874 abstract="true"
1875 static="false" final="false" visibility="public"
1876 deprecated="not deprecated">
1877 <implements name="com.google.inject.Module"/>
1878 <constructor name="PrivateModule"
1879 static="false" final="false" visibility="public"
1880 deprecated="not deprecated">
1881 </constructor>
1882 <method name="configure"
1883 abstract="false" native="false" synchronized="true"
1884 static="false" final="true" visibility="public"
1885 deprecated="not deprecated">
1886 <param name="binder" type="com.google.inject.Binder"/>
1887 </method>
1888 <method name="configure"
1889 abstract="true" native="false" synchronized="false"
1890 static="false" final="false" visibility="protected"
1891 deprecated="not deprecated">
1892 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001893 <![CDATA[Creates bindings and other configurations private to this module. Use {@link #expose(Class)
sameb1d3f8cd2014-10-07 15:32:12 -07001894 expose()} to make the bindings in this module available externally.]]>
1895 </doc>
1896 </method>
1897 <method name="expose"
1898 abstract="false" native="false" synchronized="false"
1899 static="false" final="true" visibility="protected"
1900 deprecated="not deprecated">
1901 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
1902 <doc>
1903 <![CDATA[Makes the binding for {@code key} available to other modules and the injector.]]>
1904 </doc>
1905 </method>
1906 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
1907 abstract="false" native="false" synchronized="false"
1908 static="false" final="true" visibility="protected"
1909 deprecated="not deprecated">
1910 <param name="type" type="java.lang.Class&lt;?&gt;"/>
1911 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001912 <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link
1913 AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
sameb1d3f8cd2014-10-07 15:32:12 -07001914 binding annotation.]]>
1915 </doc>
1916 </method>
1917 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
1918 abstract="false" native="false" synchronized="false"
1919 static="false" final="true" visibility="protected"
1920 deprecated="not deprecated">
1921 <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
1922 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001923 <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link
1924 AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
sameb1d3f8cd2014-10-07 15:32:12 -07001925 binding annotation.]]>
1926 </doc>
1927 </method>
1928 <method name="binder" return="com.google.inject.PrivateBinder"
1929 abstract="false" native="false" synchronized="false"
1930 static="false" final="true" visibility="protected"
1931 deprecated="not deprecated">
1932 <doc>
1933 <![CDATA[Returns the current binder.]]>
1934 </doc>
1935 </method>
1936 <method name="bindScope"
1937 abstract="false" native="false" synchronized="false"
1938 static="false" final="true" visibility="protected"
1939 deprecated="not deprecated">
1940 <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
1941 <param name="scope" type="com.google.inject.Scope"/>
1942 <doc>
1943 <![CDATA[@see Binder#bindScope(Class, Scope)]]>
1944 </doc>
1945 </method>
1946 <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
1947 abstract="false" native="false" synchronized="false"
1948 static="false" final="true" visibility="protected"
1949 deprecated="not deprecated">
1950 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
1951 <doc>
1952 <![CDATA[@see Binder#bind(Key)]]>
1953 </doc>
1954 </method>
1955 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
1956 abstract="false" native="false" synchronized="false"
1957 static="false" final="true" visibility="protected"
1958 deprecated="not deprecated">
1959 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1960 <doc>
1961 <![CDATA[@see Binder#bind(TypeLiteral)]]>
1962 </doc>
1963 </method>
1964 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
1965 abstract="false" native="false" synchronized="false"
1966 static="false" final="true" visibility="protected"
1967 deprecated="not deprecated">
1968 <param name="clazz" type="java.lang.Class&lt;T&gt;"/>
1969 <doc>
1970 <![CDATA[@see Binder#bind(Class)]]>
1971 </doc>
1972 </method>
1973 <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder"
1974 abstract="false" native="false" synchronized="false"
1975 static="false" final="true" visibility="protected"
1976 deprecated="not deprecated">
1977 <doc>
1978 <![CDATA[@see Binder#bindConstant()]]>
1979 </doc>
1980 </method>
1981 <method name="install"
1982 abstract="false" native="false" synchronized="false"
1983 static="false" final="true" visibility="protected"
1984 deprecated="not deprecated">
1985 <param name="module" type="com.google.inject.Module"/>
1986 <doc>
1987 <![CDATA[@see Binder#install(Module)]]>
1988 </doc>
1989 </method>
1990 <method name="addError"
1991 abstract="false" native="false" synchronized="false"
1992 static="false" final="true" visibility="protected"
1993 deprecated="not deprecated">
1994 <param name="message" type="java.lang.String"/>
1995 <param name="arguments" type="java.lang.Object[]"/>
1996 <doc>
1997 <![CDATA[@see Binder#addError(String, Object[])]]>
1998 </doc>
1999 </method>
2000 <method name="addError"
2001 abstract="false" native="false" synchronized="false"
2002 static="false" final="true" visibility="protected"
2003 deprecated="not deprecated">
2004 <param name="t" type="java.lang.Throwable"/>
2005 <doc>
2006 <![CDATA[@see Binder#addError(Throwable)]]>
2007 </doc>
2008 </method>
2009 <method name="addError"
2010 abstract="false" native="false" synchronized="false"
2011 static="false" final="true" visibility="protected"
2012 deprecated="not deprecated">
2013 <param name="message" type="com.google.inject.spi.Message"/>
2014 <doc>
2015 <![CDATA[@see Binder#addError(Message)]]>
2016 </doc>
2017 </method>
2018 <method name="requestInjection"
2019 abstract="false" native="false" synchronized="false"
2020 static="false" final="true" visibility="protected"
2021 deprecated="not deprecated">
2022 <param name="instance" type="java.lang.Object"/>
2023 <doc>
2024 <![CDATA[@see Binder#requestInjection(Object)]]>
2025 </doc>
2026 </method>
2027 <method name="requestStaticInjection"
2028 abstract="false" native="false" synchronized="false"
2029 static="false" final="true" visibility="protected"
2030 deprecated="not deprecated">
2031 <param name="types" type="java.lang.Class[]"/>
2032 <doc>
2033 <![CDATA[@see Binder#requestStaticInjection(Class[])]]>
2034 </doc>
2035 </method>
2036 <method name="bindInterceptor"
2037 abstract="false" native="false" synchronized="false"
2038 static="false" final="true" visibility="protected"
2039 deprecated="not deprecated">
2040 <param name="classMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
2041 <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
2042 <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
2043 <doc>
2044 <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher, com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])]]>
2045 </doc>
2046 </method>
2047 <method name="requireBinding"
2048 abstract="false" native="false" synchronized="false"
2049 static="false" final="true" visibility="protected"
2050 deprecated="not deprecated">
2051 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
2052 <doc>
2053 <![CDATA[Instructs Guice to require a binding to the given key.]]>
2054 </doc>
2055 </method>
2056 <method name="requireBinding"
2057 abstract="false" native="false" synchronized="false"
2058 static="false" final="true" visibility="protected"
2059 deprecated="not deprecated">
2060 <param name="type" type="java.lang.Class&lt;?&gt;"/>
2061 <doc>
2062 <![CDATA[Instructs Guice to require a binding to the given type.]]>
2063 </doc>
2064 </method>
2065 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
2066 abstract="false" native="false" synchronized="false"
2067 static="false" final="true" visibility="protected"
2068 deprecated="not deprecated">
2069 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
2070 <doc>
2071 <![CDATA[@see Binder#getProvider(Key)]]>
2072 </doc>
2073 </method>
2074 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
2075 abstract="false" native="false" synchronized="false"
2076 static="false" final="true" visibility="protected"
2077 deprecated="not deprecated">
2078 <param name="type" type="java.lang.Class&lt;T&gt;"/>
2079 <doc>
2080 <![CDATA[@see Binder#getProvider(Class)]]>
2081 </doc>
2082 </method>
2083 <method name="convertToTypes"
2084 abstract="false" native="false" synchronized="false"
2085 static="false" final="true" visibility="protected"
2086 deprecated="not deprecated">
2087 <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
2088 <param name="converter" type="com.google.inject.spi.TypeConverter"/>
2089 <doc>
2090 <![CDATA[@see Binder#convertToTypes(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeConverter)]]>
2091 </doc>
2092 </method>
2093 <method name="currentStage" return="com.google.inject.Stage"
2094 abstract="false" native="false" synchronized="false"
2095 static="false" final="true" visibility="protected"
2096 deprecated="not deprecated">
2097 <doc>
2098 <![CDATA[@see Binder#currentStage()]]>
2099 </doc>
2100 </method>
2101 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
2102 abstract="false" native="false" synchronized="false"
2103 static="false" final="false" visibility="protected"
2104 deprecated="not deprecated">
2105 <param name="type" type="java.lang.Class&lt;T&gt;"/>
2106 <doc>
2107 <![CDATA[@see Binder#getMembersInjector(Class)]]>
2108 </doc>
2109 </method>
2110 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
2111 abstract="false" native="false" synchronized="false"
2112 static="false" final="false" visibility="protected"
2113 deprecated="not deprecated">
2114 <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
2115 <doc>
2116 <![CDATA[@see Binder#getMembersInjector(TypeLiteral)]]>
2117 </doc>
2118 </method>
2119 <method name="bindListener"
2120 abstract="false" native="false" synchronized="false"
2121 static="false" final="false" visibility="protected"
2122 deprecated="not deprecated">
2123 <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
2124 <param name="listener" type="com.google.inject.spi.TypeListener"/>
2125 <doc>
2126 <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeListener)]]>
2127 </doc>
2128 </method>
2129 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002130 <![CDATA[A module whose configuration information is hidden from its environment by default. Only bindings
2131 that are explicitly exposed will be available to other modules and to the users of the injector.
2132 This module may expose the bindings it creates and the bindings of the modules it installs.
2133
2134 <p>A private module can be nested within a regular module or within another private module using
2135 {@link Binder#install install()}. Its bindings live in a new environment that inherits bindings,
2136 type converters, scopes, and interceptors from the surrounding ("parent") environment. When you
2137 nest multiple private modules, the result is a tree of environments where the injector's
2138 environment is the root.
2139
2140 <p>Guice EDSL bindings can be exposed with {@link #expose(Class) expose()}. {@literal @}{@link
2141 com.google.inject.Provides Provides} bindings can be exposed with the {@literal @}{@link
2142 Exposed} annotation:
2143
2144 <pre>
2145 public class FooBarBazModule extends PrivateModule {
2146 protected void configure() {
2147 bind(Foo.class).to(RealFoo.class);
2148 expose(Foo.class);
2149
2150 install(new TransactionalBarModule());
2151 expose(Bar.class).annotatedWith(Transactional.class);
2152
2153 bind(SomeImplementationDetail.class);
2154 install(new MoreImplementationDetailsModule());
2155 }
2156
2157 {@literal @}Provides {@literal @}Exposed
2158 public Baz provideBaz() {
2159 return new SuperBaz();
2160 }
2161 }
2162 </pre>
2163
2164 <p>Private modules are implemented using {@link Injector#createChildInjector(Module[]) parent
2165 injectors}. When it can satisfy their dependencies, just-in-time bindings will be created in the
2166 root environment. Such bindings are shared among all environments in the tree.
2167
2168 <p>The scope of a binding is constrained to its environment. A singleton bound in a private
2169 module will be unique to its environment. But a binding for the same type in a different private
2170 module will yield a different instance.
2171
2172 <p>A shared binding that injects the {@code Injector} gets the root injector, which only has
2173 access to bindings in the root environment. An explicit binding that injects the {@code Injector}
2174 gets access to all bindings in the child environment.
2175
2176 <p>To promote a just-in-time binding to an explicit binding, bind it:
2177 <pre>
2178 bind(FooImpl.class);
2179 </pre>
2180
2181 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07002182 @since 2.0]]>
2183 </doc>
2184 </class>
2185 <!-- end class com.google.inject.PrivateModule -->
2186 <!-- start class com.google.inject.ProvidedBy -->
2187 <class name="ProvidedBy" abstract="true"
2188 static="false" final="false" visibility="public"
2189 deprecated="not deprecated">
2190 <implements name="java.lang.annotation.Annotation"/>
2191 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002192 <![CDATA[A pointer to the default provider type for a type.
2193
sameb1d3f8cd2014-10-07 15:32:12 -07002194 @author crazybob@google.com (Bob Lee)]]>
2195 </doc>
2196 </class>
2197 <!-- end class com.google.inject.ProvidedBy -->
2198 <!-- start interface com.google.inject.Provider -->
2199 <interface name="Provider" abstract="true"
2200 static="false" final="false" visibility="public"
2201 deprecated="not deprecated">
2202 <implements name="javax.inject.Provider&lt;T&gt;"/>
2203 <method name="get" return="T"
2204 abstract="false" native="false" synchronized="false"
2205 static="false" final="false" visibility="public"
2206 deprecated="not deprecated">
2207 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002208 <![CDATA[Provides an instance of {@code T}. Must never return {@code null}.
2209
2210 @throws OutOfScopeException when an attempt is made to access a scoped object while the scope
2211 in question is not currently active
2212 @throws ProvisionException if an instance cannot be provided. Such exceptions include messages
sameb1d3f8cd2014-10-07 15:32:12 -07002213 and throwables to describe why provision failed.]]>
2214 </doc>
2215 </method>
2216 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002217 <![CDATA[An object capable of providing instances of type {@code T}. Providers are used in numerous ways
2218 by Guice:
2219
2220 <ul>
2221 <li>When the default means for obtaining instances (an injectable or parameterless constructor)
2222 is insufficient for a particular binding, the module can specify a custom {@code Provider}
2223 instead, to control exactly how Guice creates or obtains instances for the binding.
2224
2225 <li>An implementation class may always choose to have a {@code Provider<T>} instance injected,
2226 rather than having a {@code T} injected directly. This may give you access to multiple
2227 instances, instances you wish to safely mutate and discard, instances which are out of scope
2228 (e.g. using a {@code @RequestScoped} object from within a {@code @SessionScoped} object), or
2229 instances that will be initialized lazily.
2230
2231 <li>A custom {@link Scope} is implemented as a decorator of {@code Provider<T>}, which decides
2232 when to delegate to the backing provider and when to provide the instance some other way.
2233
2234 <li>The {@link Injector} offers access to the {@code Provider<T>} it uses to fulfill requests
2235 for a given key, via the {@link Injector#getProvider} methods.
2236 </ul>
2237
2238 @param <T> the type of object this provides
2239
sameb1d3f8cd2014-10-07 15:32:12 -07002240 @author crazybob@google.com (Bob Lee)]]>
2241 </doc>
2242 </interface>
2243 <!-- end interface com.google.inject.Provider -->
2244 <!-- start class com.google.inject.Provides -->
2245 <class name="Provides" abstract="true"
2246 static="false" final="false" visibility="public"
2247 deprecated="not deprecated">
2248 <implements name="java.lang.annotation.Annotation"/>
2249 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002250 <![CDATA[Annotates methods of a {@link Module} to create a provider method binding. The method's return
2251 type is bound to it's returned value. Guice will pass dependencies to the method as parameters.
2252
2253 @author crazybob@google.com (Bob Lee)
sameb1d3f8cd2014-10-07 15:32:12 -07002254 @since 2.0]]>
2255 </doc>
2256 </class>
2257 <!-- end class com.google.inject.Provides -->
2258 <!-- start class com.google.inject.ProvisionException -->
2259 <class name="ProvisionException" extends="java.lang.RuntimeException"
2260 abstract="false"
2261 static="false" final="true" visibility="public"
2262 deprecated="not deprecated">
2263 <constructor name="ProvisionException" type="java.lang.Iterable&lt;com.google.inject.spi.Message&gt;"
2264 static="false" final="false" visibility="public"
2265 deprecated="not deprecated">
2266 <doc>
2267 <![CDATA[Creates a ProvisionException containing {@code messages}.]]>
2268 </doc>
2269 </constructor>
2270 <constructor name="ProvisionException" type="java.lang.String, java.lang.Throwable"
2271 static="false" final="false" visibility="public"
2272 deprecated="not deprecated">
2273 </constructor>
2274 <constructor name="ProvisionException" type="java.lang.String"
2275 static="false" final="false" visibility="public"
2276 deprecated="not deprecated">
2277 </constructor>
2278 <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
2279 abstract="false" native="false" synchronized="false"
2280 static="false" final="false" visibility="public"
2281 deprecated="not deprecated">
2282 <doc>
2283 <![CDATA[Returns messages for the errors that caused this exception.]]>
2284 </doc>
2285 </method>
2286 <method name="getMessage" return="java.lang.String"
2287 abstract="false" native="false" synchronized="false"
2288 static="false" final="false" visibility="public"
2289 deprecated="not deprecated">
2290 </method>
2291 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002292 <![CDATA[Indicates that there was a runtime failure while providing an instance.
2293
2294 @author kevinb@google.com (Kevin Bourrillion)
2295 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07002296 @since 2.0]]>
2297 </doc>
2298 </class>
2299 <!-- end class com.google.inject.ProvisionException -->
2300 <!-- start interface com.google.inject.Scope -->
2301 <interface name="Scope" abstract="true"
2302 static="false" final="false" visibility="public"
2303 deprecated="not deprecated">
2304 <method name="scope" return="com.google.inject.Provider&lt;T&gt;"
2305 abstract="false" native="false" synchronized="false"
2306 static="false" final="false" visibility="public"
2307 deprecated="not deprecated">
2308 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
2309 <param name="unscoped" type="com.google.inject.Provider&lt;T&gt;"/>
2310 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002311 <![CDATA[Scopes a provider. The returned provider returns objects from this scope.
2312 If an object does not exist in this scope, the provider can use the given
2313 unscoped provider to retrieve one.
2314
2315 <p>Scope implementations are strongly encouraged to override
2316 {@link Object#toString} in the returned provider and include the backing
2317 provider's {@code toString()} output.
2318
2319 @param key binding key
2320 @param unscoped locates an instance when one doesn't already exist in this
2321 scope.
2322 @return a new provider which only delegates to the given unscoped provider
2323 when an instance of the requested object doesn't already exist in this
sameb1d3f8cd2014-10-07 15:32:12 -07002324 scope]]>
2325 </doc>
2326 </method>
2327 <method name="toString" return="java.lang.String"
2328 abstract="false" native="false" synchronized="false"
2329 static="false" final="false" visibility="public"
2330 deprecated="not deprecated">
2331 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002332 <![CDATA[A short but useful description of this scope. For comparison, the standard
2333 scopes that ship with guice use the descriptions
2334 {@code "Scopes.SINGLETON"}, {@code "ServletScopes.SESSION"} and
sameb1d3f8cd2014-10-07 15:32:12 -07002335 {@code "ServletScopes.REQUEST"}.]]>
2336 </doc>
2337 </method>
2338 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002339 <![CDATA[A scope is a level of visibility that instances provided by Guice may have.
2340 By default, an instance created by the {@link Injector} has <i>no scope</i>,
2341 meaning it has no state from the framework's perspective -- the
2342 {@code Injector} creates it, injects it once into the class that required it,
2343 and then immediately forgets it. Associating a scope with a particular
2344 binding allows the created instance to be "remembered" and possibly used
2345 again for other injections.
2346
2347 <p>An example of a scope is {@link Scopes#SINGLETON}.
2348
sameb1d3f8cd2014-10-07 15:32:12 -07002349 @author crazybob@google.com (Bob Lee)]]>
2350 </doc>
2351 </interface>
2352 <!-- end interface com.google.inject.Scope -->
2353 <!-- start class com.google.inject.ScopeAnnotation -->
2354 <class name="ScopeAnnotation" abstract="true"
2355 static="false" final="false" visibility="public"
2356 deprecated="not deprecated">
2357 <implements name="java.lang.annotation.Annotation"/>
2358 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002359 <![CDATA[Annotates annotations which are used for scoping. Only one such annotation
2360 may apply to a single implementation class. You must also annotate scope
2361 annotations with {@code @Retention(RUNTIME)}. For example:
2362
2363 <pre>
2364 {@code @}Retention(RUNTIME)
2365 {@code @}Target(TYPE, METHOD)
2366 {@code @}ScopeAnnotation
2367 public {@code @}interface SessionScoped {}
2368 </pre>
2369
sameb1d3f8cd2014-10-07 15:32:12 -07002370 @author crazybob@google.com (Bob Lee)]]>
2371 </doc>
2372 </class>
2373 <!-- end class com.google.inject.ScopeAnnotation -->
2374 <!-- start class com.google.inject.Scopes -->
2375 <class name="Scopes" extends="java.lang.Object"
2376 abstract="false"
2377 static="false" final="false" visibility="public"
2378 deprecated="not deprecated">
2379 <method name="isSingleton" return="boolean"
2380 abstract="false" native="false" synchronized="false"
2381 static="true" final="false" visibility="public"
2382 deprecated="not deprecated">
2383 <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
2384 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002385 <![CDATA[Returns true if {@code binding} is singleton-scoped. If the binding is a {@link
2386 com.google.inject.spi.LinkedKeyBinding linked key binding} and belongs to an injector (ie. it
2387 was retrieved via {@link Injector#getBinding Injector.getBinding()}), then this method will
2388 also true if the target binding is singleton-scoped.
2389
sameb1d3f8cd2014-10-07 15:32:12 -07002390 @since 3.0]]>
2391 </doc>
2392 </method>
2393 <field name="SINGLETON" type="com.google.inject.Scope"
2394 transient="false" volatile="false"
2395 static="true" final="true" visibility="public"
2396 deprecated="not deprecated">
2397 <doc>
2398 <![CDATA[One instance per {@link Injector}. Also see {@code @}{@link Singleton}.]]>
2399 </doc>
2400 </field>
2401 <field name="NO_SCOPE" type="com.google.inject.Scope"
2402 transient="false" volatile="false"
2403 static="true" final="true" visibility="public"
2404 deprecated="not deprecated">
2405 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002406 <![CDATA[No scope; the same as not applying any scope at all. Each time the
2407 Injector obtains an instance of an object with "no scope", it injects this
2408 instance then immediately forgets it. When the next request for the same
2409 binding arrives it will need to obtain the instance over again.
2410
2411 <p>This exists only in case a class has been annotated with a scope
2412 annotation such as {@link Singleton @Singleton}, and you need to override
2413 this to "no scope" in your binding.
2414
sameb1d3f8cd2014-10-07 15:32:12 -07002415 @since 2.0]]>
2416 </doc>
2417 </field>
2418 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002419 <![CDATA[Built-in scope implementations.
2420
sameb1d3f8cd2014-10-07 15:32:12 -07002421 @author crazybob@google.com (Bob Lee)]]>
2422 </doc>
2423 </class>
2424 <!-- end class com.google.inject.Scopes -->
2425 <!-- start class com.google.inject.Singleton -->
2426 <class name="Singleton" abstract="true"
2427 static="false" final="false" visibility="public"
2428 deprecated="not deprecated">
2429 <implements name="java.lang.annotation.Annotation"/>
2430 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002431 <![CDATA[Apply this to implementation classes when you want only one instance
2432 (per {@link Injector}) to be reused for all injections for that binding.
2433
sameb1d3f8cd2014-10-07 15:32:12 -07002434 @author crazybob@google.com (Bob Lee)]]>
2435 </doc>
2436 </class>
2437 <!-- end class com.google.inject.Singleton -->
2438 <!-- start class com.google.inject.Stage -->
2439 <class name="Stage" extends="java.lang.Enum&lt;com.google.inject.Stage&gt;"
2440 abstract="false"
2441 static="false" final="true" visibility="public"
2442 deprecated="not deprecated">
2443 <method name="values" return="com.google.inject.Stage[]"
2444 abstract="false" native="false" synchronized="false"
2445 static="true" final="false" visibility="public"
2446 deprecated="not deprecated">
2447 </method>
2448 <method name="valueOf" return="com.google.inject.Stage"
2449 abstract="false" native="false" synchronized="false"
2450 static="true" final="false" visibility="public"
2451 deprecated="not deprecated">
2452 <param name="name" type="java.lang.String"/>
2453 </method>
2454 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002455 <![CDATA[The stage we're running in.
2456
sameb1d3f8cd2014-10-07 15:32:12 -07002457 @author crazybob@google.com (Bob Lee)]]>
2458 </doc>
2459 </class>
2460 <!-- end class com.google.inject.Stage -->
2461 <!-- start class com.google.inject.TypeLiteral -->
2462 <class name="TypeLiteral" extends="java.lang.Object"
2463 abstract="false"
2464 static="false" final="false" visibility="public"
2465 deprecated="not deprecated">
2466 <constructor name="TypeLiteral"
2467 static="false" final="false" visibility="protected"
2468 deprecated="not deprecated">
2469 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002470 <![CDATA[Constructs a new type literal. Derives represented class from type
2471 parameter.
2472
2473 <p>Clients create an empty anonymous subclass. Doing so embeds the type
2474 parameter in the anonymous class's type hierarchy so we can reconstitute it
sameb1d3f8cd2014-10-07 15:32:12 -07002475 at runtime despite erasure.]]>
2476 </doc>
2477 </constructor>
2478 <method name="getRawType" return="java.lang.Class&lt;? super T&gt;"
2479 abstract="false" native="false" synchronized="false"
2480 static="false" final="true" visibility="public"
2481 deprecated="not deprecated">
2482 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002483 <![CDATA[Returns the raw (non-generic) type for this type.
2484
sameb1d3f8cd2014-10-07 15:32:12 -07002485 @since 2.0]]>
2486 </doc>
2487 </method>
2488 <method name="getType" return="java.lang.reflect.Type"
2489 abstract="false" native="false" synchronized="false"
2490 static="false" final="true" visibility="public"
2491 deprecated="not deprecated">
2492 <doc>
2493 <![CDATA[Gets underlying {@code Type} instance.]]>
2494 </doc>
2495 </method>
2496 <method name="hashCode" return="int"
2497 abstract="false" native="false" synchronized="false"
2498 static="false" final="true" visibility="public"
2499 deprecated="not deprecated">
2500 </method>
2501 <method name="equals" return="boolean"
2502 abstract="false" native="false" synchronized="false"
2503 static="false" final="true" visibility="public"
2504 deprecated="not deprecated">
2505 <param name="o" type="java.lang.Object"/>
2506 </method>
2507 <method name="toString" return="java.lang.String"
2508 abstract="false" native="false" synchronized="false"
2509 static="false" final="true" visibility="public"
2510 deprecated="not deprecated">
2511 </method>
2512 <method name="get" return="com.google.inject.TypeLiteral&lt;?&gt;"
2513 abstract="false" native="false" synchronized="false"
2514 static="true" final="false" visibility="public"
2515 deprecated="not deprecated">
2516 <param name="type" type="java.lang.reflect.Type"/>
2517 <doc>
2518 <![CDATA[Gets type literal for the given {@code Type} instance.]]>
2519 </doc>
2520 </method>
2521 <method name="get" return="com.google.inject.TypeLiteral&lt;T&gt;"
2522 abstract="false" native="false" synchronized="false"
2523 static="true" final="false" visibility="public"
2524 deprecated="not deprecated">
2525 <param name="type" type="java.lang.Class&lt;T&gt;"/>
2526 <doc>
2527 <![CDATA[Gets type literal for the given {@code Class} instance.]]>
2528 </doc>
2529 </method>
2530 <method name="getSupertype" return="com.google.inject.TypeLiteral&lt;?&gt;"
2531 abstract="false" native="false" synchronized="false"
2532 static="false" final="false" visibility="public"
2533 deprecated="not deprecated">
2534 <param name="supertype" type="java.lang.Class&lt;?&gt;"/>
2535 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002536 <![CDATA[Returns the generic form of {@code supertype}. For example, if this is {@code
2537 ArrayList<String>}, this returns {@code Iterable<String>} given the input {@code
2538 Iterable.class}.
2539
2540 @param supertype a superclass of, or interface implemented by, this.
sameb1d3f8cd2014-10-07 15:32:12 -07002541 @since 2.0]]>
2542 </doc>
2543 </method>
2544 <method name="getFieldType" return="com.google.inject.TypeLiteral&lt;?&gt;"
2545 abstract="false" native="false" synchronized="false"
2546 static="false" final="false" visibility="public"
2547 deprecated="not deprecated">
2548 <param name="field" type="java.lang.reflect.Field"/>
2549 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002550 <![CDATA[Returns the resolved generic type of {@code field}.
2551
2552 @param field a field defined by this or any superclass.
sameb1d3f8cd2014-10-07 15:32:12 -07002553 @since 2.0]]>
2554 </doc>
2555 </method>
2556 <method name="getParameterTypes" return="java.util.List&lt;com.google.inject.TypeLiteral&lt;?&gt;&gt;"
2557 abstract="false" native="false" synchronized="false"
2558 static="false" final="false" visibility="public"
2559 deprecated="not deprecated">
2560 <param name="methodOrConstructor" type="java.lang.reflect.Member"/>
2561 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002562 <![CDATA[Returns the resolved generic parameter types of {@code methodOrConstructor}.
2563
2564 @param methodOrConstructor a method or constructor defined by this or any supertype.
sameb1d3f8cd2014-10-07 15:32:12 -07002565 @since 2.0]]>
2566 </doc>
2567 </method>
2568 <method name="getExceptionTypes" return="java.util.List&lt;com.google.inject.TypeLiteral&lt;?&gt;&gt;"
2569 abstract="false" native="false" synchronized="false"
2570 static="false" final="false" visibility="public"
2571 deprecated="not deprecated">
2572 <param name="methodOrConstructor" type="java.lang.reflect.Member"/>
2573 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002574 <![CDATA[Returns the resolved generic exception types thrown by {@code constructor}.
2575
2576 @param methodOrConstructor a method or constructor defined by this or any supertype.
sameb1d3f8cd2014-10-07 15:32:12 -07002577 @since 2.0]]>
2578 </doc>
2579 </method>
2580 <method name="getReturnType" return="com.google.inject.TypeLiteral&lt;?&gt;"
2581 abstract="false" native="false" synchronized="false"
2582 static="false" final="false" visibility="public"
2583 deprecated="not deprecated">
2584 <param name="method" type="java.lang.reflect.Method"/>
2585 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002586 <![CDATA[Returns the resolved generic return type of {@code method}.
2587
2588 @param method a method defined by this or any supertype.
sameb1d3f8cd2014-10-07 15:32:12 -07002589 @since 2.0]]>
2590 </doc>
2591 </method>
2592 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002593 <![CDATA[Represents a generic type {@code T}. Java doesn't yet provide a way to
2594 represent generic types, so this class does. Forces clients to create a
2595 subclass of this class which enables retrieval the type information even at
2596 runtime.
2597
2598 <p>For example, to create a type literal for {@code List<String>}, you can
2599 create an empty anonymous inner class:
2600
2601 <p>
2602 {@code TypeLiteral<List<String>> list = new TypeLiteral<List<String>>() {};}
2603
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002604 <p>Along with modeling generic types, this class can resolve type parameters.
2605 For example, to figure out what type {@code keySet()} returns on a {@code
2606 Map<Integer, String>}, use this code:<pre> {@code
2607
2608 TypeLiteral<Map<Integer, String>> mapType
2609 = new TypeLiteral<Map<Integer, String>>() {};
2610 TypeLiteral<?> keySetType
2611 = mapType.getReturnType(Map.class.getMethod("keySet"));
2612 System.out.println(keySetType); // prints "Set<Integer>"}</pre>
2613
2614 @author crazybob@google.com (Bob Lee)
sameb1d3f8cd2014-10-07 15:32:12 -07002615 @author jessewilson@google.com (Jesse Wilson)]]>
2616 </doc>
2617 </class>
2618 <!-- end class com.google.inject.TypeLiteral -->
2619</package>
2620<package name="com.google.inject.assistedinject">
2621 <!-- start class com.google.inject.assistedinject.Assisted -->
2622 <class name="Assisted" abstract="true"
2623 static="false" final="false" visibility="public"
2624 deprecated="not deprecated">
2625 <implements name="java.lang.annotation.Annotation"/>
2626 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002627 <![CDATA[Annotates an injected parameter or field whose value comes from an argument to a factory method.
2628
2629 @author jmourits@google.com (Jerome Mourits)
sameb1d3f8cd2014-10-07 15:32:12 -07002630 @author jessewilson@google.com (Jesse Wilson)]]>
2631 </doc>
2632 </class>
2633 <!-- end class com.google.inject.assistedinject.Assisted -->
2634 <!-- start class com.google.inject.assistedinject.AssistedInject -->
2635 <class name="AssistedInject" abstract="true"
2636 static="false" final="false" visibility="public"
2637 deprecated="not deprecated">
2638 <implements name="java.lang.annotation.Annotation"/>
2639 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002640 <![CDATA[<p>
2641 When used in tandem with {@link FactoryModuleBuilder}, constructors annotated with
2642 {@code @AssistedInject} indicate that multiple constructors can be injected, each with different
2643 parameters. AssistedInject annotations should not be mixed with {@literal @}{@link Inject}
2644 annotations. The assisted parameters must exactly match one corresponding factory method within
2645 the factory interface, but the parameters do not need to be in the same order. Constructors
2646 annotated with AssistedInject <b>are</b> created by Guice and receive all the benefits
2647 (such as AOP).
2648
2649 <p>
2650 <strong>Obsolete Usage:</strong> When used in tandem with {@link FactoryProvider}, constructors
2651 annotated with {@code @AssistedInject} trigger a "backwards compatibility mode". The assisted
2652 parameters must exactly match one corresponding factory method within the factory interface and
2653 all must be in the same order as listed in the factory. In this backwards compatable mode,
2654 constructors annotated with AssistedInject <b>are not</b> created by Guice and thus receive
2655 none of the benefits.
2656
2657 <p>
2658 Constructor parameters must be either supplied by the factory interface and marked with
2659 <code>@Assisted</code>, or they must be injectable.
2660
2661 @author jmourits@google.com (Jerome Mourits)
sameb1d3f8cd2014-10-07 15:32:12 -07002662 @author jessewilson@google.com (Jesse Wilson)]]>
2663 </doc>
2664 </class>
2665 <!-- end class com.google.inject.assistedinject.AssistedInject -->
2666 <!-- start interface com.google.inject.assistedinject.AssistedInjectBinding -->
2667 <interface name="AssistedInjectBinding" abstract="true"
2668 static="false" final="false" visibility="public"
2669 deprecated="not deprecated">
2670 <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
2671 abstract="false" native="false" synchronized="false"
2672 static="false" final="false" visibility="public"
2673 deprecated="not deprecated">
2674 <doc>
2675 <![CDATA[Returns the {@link Key} for the factory binding.]]>
2676 </doc>
2677 </method>
2678 <method name="getAssistedMethods" return="java.util.Collection&lt;com.google.inject.assistedinject.AssistedMethod&gt;"
2679 abstract="false" native="false" synchronized="false"
2680 static="false" final="false" visibility="public"
2681 deprecated="not deprecated">
2682 <doc>
2683 <![CDATA[Returns an {@link AssistedMethod} for each method in the factory.]]>
2684 </doc>
2685 </method>
2686 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002687 <![CDATA[A binding for a factory created by FactoryModuleBuilder.
2688
2689 @param <T> The fully qualified type of the factory.
2690
2691 @since 3.0
sameb1d3f8cd2014-10-07 15:32:12 -07002692 @author ramakrishna@google.com (Ramakrishna Rajanna)]]>
2693 </doc>
2694 </interface>
2695 <!-- end interface com.google.inject.assistedinject.AssistedInjectBinding -->
2696 <!-- start interface com.google.inject.assistedinject.AssistedInjectTargetVisitor -->
2697 <interface name="AssistedInjectTargetVisitor" abstract="true"
2698 static="false" final="false" visibility="public"
2699 deprecated="not deprecated">
2700 <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
2701 <method name="visit" return="V"
2702 abstract="false" native="false" synchronized="false"
2703 static="false" final="false" visibility="public"
2704 deprecated="not deprecated">
2705 <param name="assistedInjectBinding" type="com.google.inject.assistedinject.AssistedInjectBinding&lt;? extends T&gt;"/>
2706 <doc>
2707 <![CDATA[Visits an {@link AssistedInjectBinding} created through {@link FactoryModuleBuilder}.]]>
2708 </doc>
2709 </method>
2710 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002711 <![CDATA[A visitor for the AssistedInject extension.
2712 <p>
2713 If your {@link BindingTargetVisitor} implements this interface, bindings created by using
2714 {@link FactoryModuleBuilder} will be visited through this interface.
2715
2716 @since 3.0
sameb1d3f8cd2014-10-07 15:32:12 -07002717 @author ramakrishna@google.com (Ramakrishna Rajanna)]]>
2718 </doc>
2719 </interface>
2720 <!-- end interface com.google.inject.assistedinject.AssistedInjectTargetVisitor -->
2721 <!-- start interface com.google.inject.assistedinject.AssistedMethod -->
2722 <interface name="AssistedMethod" abstract="true"
2723 static="false" final="false" visibility="public"
2724 deprecated="not deprecated">
2725 <method name="getFactoryMethod" return="java.lang.reflect.Method"
2726 abstract="false" native="false" synchronized="false"
2727 static="false" final="false" visibility="public"
2728 deprecated="not deprecated">
2729 <doc>
2730 <![CDATA[Returns the factory method that is being assisted.]]>
2731 </doc>
2732 </method>
2733 <method name="getImplementationType" return="com.google.inject.TypeLiteral&lt;?&gt;"
2734 abstract="false" native="false" synchronized="false"
2735 static="false" final="false" visibility="public"
2736 deprecated="not deprecated">
2737 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002738 <![CDATA[Returns the implementation type that will be created when the method is
sameb1d3f8cd2014-10-07 15:32:12 -07002739 used.]]>
2740 </doc>
2741 </method>
2742 <method name="getImplementationConstructor" return="java.lang.reflect.Constructor&lt;?&gt;"
2743 abstract="false" native="false" synchronized="false"
2744 static="false" final="false" visibility="public"
2745 deprecated="not deprecated">
2746 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002747 <![CDATA[Returns the constructor that will be used to construct instances of the
sameb1d3f8cd2014-10-07 15:32:12 -07002748 implementation.]]>
2749 </doc>
2750 </method>
2751 <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
2752 abstract="false" native="false" synchronized="false"
2753 static="false" final="false" visibility="public"
2754 deprecated="not deprecated">
2755 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002756 <![CDATA[Returns all non-assisted dependencies required to construct and inject
sameb1d3f8cd2014-10-07 15:32:12 -07002757 the implementation.]]>
2758 </doc>
2759 </method>
2760 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002761 <![CDATA[Details about how a method in an assisted inject factory will be assisted.
2762
2763 @since 3.0
sameb1d3f8cd2014-10-07 15:32:12 -07002764 @author ramakrishna@google.com (Ramakrishna Rajanna)]]>
2765 </doc>
2766 </interface>
2767 <!-- end interface com.google.inject.assistedinject.AssistedMethod -->
2768 <!-- start class com.google.inject.assistedinject.FactoryModuleBuilder -->
2769 <class name="FactoryModuleBuilder" extends="java.lang.Object"
2770 abstract="false"
2771 static="false" final="true" visibility="public"
2772 deprecated="not deprecated">
2773 <constructor name="FactoryModuleBuilder"
2774 static="false" final="false" visibility="public"
2775 deprecated="not deprecated">
2776 </constructor>
2777 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2778 abstract="false" native="false" synchronized="false"
2779 static="false" final="false" visibility="public"
2780 deprecated="not deprecated">
2781 <param name="source" type="java.lang.Class&lt;T&gt;"/>
2782 <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
2783 <doc>
2784 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2785 </doc>
2786 </method>
2787 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2788 abstract="false" native="false" synchronized="false"
2789 static="false" final="false" visibility="public"
2790 deprecated="not deprecated">
2791 <param name="source" type="java.lang.Class&lt;T&gt;"/>
2792 <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
2793 <doc>
2794 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2795 </doc>
2796 </method>
2797 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2798 abstract="false" native="false" synchronized="false"
2799 static="false" final="false" visibility="public"
2800 deprecated="not deprecated">
2801 <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
2802 <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
2803 <doc>
2804 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2805 </doc>
2806 </method>
2807 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2808 abstract="false" native="false" synchronized="false"
2809 static="false" final="false" visibility="public"
2810 deprecated="not deprecated">
2811 <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
2812 <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
2813 <doc>
2814 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2815 </doc>
2816 </method>
2817 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2818 abstract="false" native="false" synchronized="false"
2819 static="false" final="false" visibility="public"
2820 deprecated="not deprecated">
2821 <param name="source" type="java.lang.Class&lt;T&gt;"/>
2822 <param name="annotation" type="java.lang.annotation.Annotation"/>
2823 <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
2824 <doc>
2825 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2826 </doc>
2827 </method>
2828 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2829 abstract="false" native="false" synchronized="false"
2830 static="false" final="false" visibility="public"
2831 deprecated="not deprecated">
2832 <param name="source" type="java.lang.Class&lt;T&gt;"/>
2833 <param name="annotation" type="java.lang.annotation.Annotation"/>
2834 <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
2835 <doc>
2836 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2837 </doc>
2838 </method>
2839 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2840 abstract="false" native="false" synchronized="false"
2841 static="false" final="false" visibility="public"
2842 deprecated="not deprecated">
2843 <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
2844 <param name="annotation" type="java.lang.annotation.Annotation"/>
2845 <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
2846 <doc>
2847 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2848 </doc>
2849 </method>
2850 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2851 abstract="false" native="false" synchronized="false"
2852 static="false" final="false" visibility="public"
2853 deprecated="not deprecated">
2854 <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
2855 <param name="annotation" type="java.lang.annotation.Annotation"/>
2856 <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
2857 <doc>
2858 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2859 </doc>
2860 </method>
2861 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2862 abstract="false" native="false" synchronized="false"
2863 static="false" final="false" visibility="public"
2864 deprecated="not deprecated">
2865 <param name="source" type="java.lang.Class&lt;T&gt;"/>
2866 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
2867 <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
2868 <doc>
2869 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2870 </doc>
2871 </method>
2872 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2873 abstract="false" native="false" synchronized="false"
2874 static="false" final="false" visibility="public"
2875 deprecated="not deprecated">
2876 <param name="source" type="java.lang.Class&lt;T&gt;"/>
2877 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
2878 <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
2879 <doc>
2880 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2881 </doc>
2882 </method>
2883 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2884 abstract="false" native="false" synchronized="false"
2885 static="false" final="false" visibility="public"
2886 deprecated="not deprecated">
2887 <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
2888 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
2889 <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
2890 <doc>
2891 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2892 </doc>
2893 </method>
2894 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2895 abstract="false" native="false" synchronized="false"
2896 static="false" final="false" visibility="public"
2897 deprecated="not deprecated">
2898 <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
2899 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
2900 <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
2901 <doc>
2902 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2903 </doc>
2904 </method>
2905 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2906 abstract="false" native="false" synchronized="false"
2907 static="false" final="false" visibility="public"
2908 deprecated="not deprecated">
2909 <param name="source" type="com.google.inject.Key&lt;T&gt;"/>
2910 <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
2911 <doc>
2912 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2913 </doc>
2914 </method>
2915 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2916 abstract="false" native="false" synchronized="false"
2917 static="false" final="false" visibility="public"
2918 deprecated="not deprecated">
2919 <param name="source" type="com.google.inject.Key&lt;T&gt;"/>
2920 <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
2921 <doc>
2922 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2923 </doc>
2924 </method>
2925 <method name="build" return="com.google.inject.Module"
2926 abstract="false" native="false" synchronized="false"
2927 static="false" final="false" visibility="public"
2928 deprecated="not deprecated">
2929 <param name="factoryInterface" type="java.lang.Class&lt;F&gt;"/>
2930 <doc>
2931 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2932 </doc>
2933 </method>
2934 <method name="build" return="com.google.inject.Module"
2935 abstract="false" native="false" synchronized="false"
2936 static="false" final="false" visibility="public"
2937 deprecated="not deprecated">
2938 <param name="factoryInterface" type="com.google.inject.TypeLiteral&lt;F&gt;"/>
2939 <doc>
2940 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2941 </doc>
2942 </method>
2943 <method name="build" return="com.google.inject.Module"
2944 abstract="false" native="false" synchronized="false"
2945 static="false" final="false" visibility="public"
2946 deprecated="not deprecated">
2947 <param name="factoryInterface" type="com.google.inject.Key&lt;F&gt;"/>
2948 </method>
2949 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002950 <![CDATA[Provides a factory that combines the caller's arguments with injector-supplied values to
2951 construct objects.
2952
2953 <h3>Defining a factory</h3>
2954 Create an interface whose methods return the constructed type, or any of its supertypes. The
2955 method's parameters are the arguments required to build the constructed type.
2956
2957 <pre>public interface PaymentFactory {
2958 Payment create(Date startDate, Money amount);
2959 }</pre>
2960
2961 You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i>
2962 or <i>newPayment</i>.
2963
2964 <h3>Creating a type that accepts factory parameters</h3>
2965 {@code constructedType} is a concrete class with an {@literal @}{@link com.google.inject.Inject
2966 Inject}-annotated constructor. In addition to injector-supplied parameters, the constructor
2967 should have parameters that match each of the factory method's parameters. Each factory-supplied
2968 parameter requires an {@literal @}{@link Assisted} annotation. This serves to document that the
2969 parameter is not bound by your application's modules.
2970
2971 <pre>public class RealPayment implements Payment {
2972 {@literal @}Inject
2973 public RealPayment(
2974 CreditService creditService,
2975 AuthService authService,
2976 <strong>{@literal @}Assisted Date startDate</strong>,
2977 <strong>{@literal @}Assisted Money amount</strong>) {
2978 ...
2979 }
2980 }</pre>
2981
2982 <h3>Multiple factory methods for the same type</h3>
2983 If the factory contains many methods that return the same type, you can create multiple
2984 constructors in your concrete class, each constructor marked with with
2985 {@literal @}{@link AssistedInject}, in order to match the different parameters types of the
2986 factory methods.
2987
2988 <pre>public interface PaymentFactory {
2989 Payment create(Date startDate, Money amount);
2990 Payment createWithoutDate(Money amount);
2991 }
2992
2993 public class RealPayment implements Payment {
2994 {@literal @}AssistedInject
2995 public RealPayment(
2996 CreditService creditService,
2997 AuthService authService,
2998 <strong>{@literal @}Assisted Date startDate</strong>,
2999 <strong>{@literal @}Assisted Money amount</strong>) {
3000 ...
3001 }
3002
3003 {@literal @}AssistedInject
3004 public RealPayment(
3005 CreditService creditService,
3006 AuthService authService,
3007 <strong>{@literal @}Assisted Money amount</strong>) {
3008 ...
3009 }
3010 }</pre>
3011
3012 <h3>Configuring simple factories</h3>
3013 In your {@link Module module}, install a {@code FactoryModuleBuilder} that creates the
3014 factory:
3015
3016 <pre>install(new FactoryModuleBuilder()
3017 .implement(Payment.class, RealPayment.class)
3018 .build(PaymentFactory.class);</pre>
3019
3020 As a side-effect of this binding, Guice will inject the factory to initialize it for use. The
3021 factory cannot be used until the injector has been initialized.
sberlin@gmail.com3cff1b22011-03-06 23:30:55 +00003022
3023 <h3>Configuring complex factories</h3>
3024 Factories can create an arbitrary number of objects, one per each method. Each factory
3025 method can be configured using <code>.implement</code>.
3026
3027 <pre>public interface OrderFactory {
3028 Payment create(Date startDate, Money amount);
3029 Shipment create(Customer customer, Item item);
3030 Receipt create(Payment payment, Shipment shipment);
3031 }
3032
3033 [...]
3034
3035 install(new FactoryModuleBuilder()
3036 .implement(Payment.class, RealPayment.class)
3037 // excluding .implement for Shipment means the implementation class
3038 // will be 'Shipment' itself, which is legal if it's not an interface.
3039 .implement(Receipt.class, RealReceipt.class)
3040 .build(OrderFactory.class);</pre>
3041 </pre>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00003042
3043 <h3>Using the factory</h3>
3044 Inject your factory into your application classes. When you use the factory, your arguments
3045 will be combined with values from the injector to construct an instance.
3046
3047 <pre>public class PaymentAction {
3048 {@literal @}Inject private PaymentFactory paymentFactory;
3049
3050 public void doPayment(Money amount) {
3051 Payment payment = paymentFactory.create(new Date(), amount);
3052 payment.apply();
3053 }
3054 }</pre>
3055
3056 <h3>Making parameter types distinct</h3>
3057 The types of the factory method's parameters must be distinct. To use multiple parameters of
3058 the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the
3059 parameters. The names must be applied to the factory method's parameters:
3060
3061 <pre>public interface PaymentFactory {
3062 Payment create(
3063 <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
3064 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
3065 Money amount);
3066 } </pre>
3067
3068 ...and to the concrete type's constructor parameters:
3069
3070 <pre>public class RealPayment implements Payment {
3071 {@literal @}Inject
3072 public RealPayment(
3073 CreditService creditService,
3074 AuthService authService,
3075 <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
3076 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
3077 <strong>{@literal @}Assisted</strong> Money amount) {
3078 ...
3079 }
3080 }</pre>
3081
3082 <h3>Values are created by Guice</h3>
3083 Returned factories use child injectors to create values. The values are eligible for method
3084 interception. In addition, {@literal @}{@literal Inject} members will be injected before they are
3085 returned.
3086
3087 <h3>More configuration options</h3>
3088 In addition to simply specifying an implementation class for any returned type, factories' return
3089 values can be automatic or can be configured to use annotations:
3090 <p/>
3091 If you just want to return the types specified in the factory, do not configure any
3092 implementations:
3093
3094 <pre>public interface FruitFactory {
3095 Apple getApple(Color color);
3096 }
3097 ...
3098 protected void configure() {
3099 install(new FactoryModuleBuilder().build(FruitFactory.class));
3100 }</pre>
3101
3102 Note that any type returned by the factory in this manner needs to be an implementation class.
3103 <p/>
3104 To return two different implementations for the same interface from your factory, use binding
3105 annotations on your return types:
3106
3107 <pre>interface CarFactory {
3108 {@literal @}Named("fast") Car getFastCar(Color color);
3109 {@literal @}Named("clean") Car getCleanCar(Color color);
3110 }
3111 ...
3112 protected void configure() {
3113 install(new FactoryModuleBuilder()
3114 .implement(Car.class, Names.named("fast"), Porsche.class)
3115 .implement(Car.class, Names.named("clean"), Prius.class)
3116 .build(CarFactory.class));
3117 }</pre>
3118
3119 <h3>Implementation limitations</h3>
3120 As a limitation of the implementation, it is prohibited to declare a factory method that
3121 accepts a {@code Provider} as one of its arguments.
3122
3123 @since 3.0
sameb1d3f8cd2014-10-07 15:32:12 -07003124 @author schmitt@google.com (Peter Schmitt)]]>
3125 </doc>
3126 </class>
3127 <!-- end class com.google.inject.assistedinject.FactoryModuleBuilder -->
3128 <!-- start class com.google.inject.assistedinject.FactoryProvider -->
3129 <class name="FactoryProvider" extends="java.lang.Object"
3130 abstract="false"
3131 static="false" final="false" visibility="public"
3132 deprecated="use {@link FactoryModuleBuilder} instead.">
3133 <implements name="com.google.inject.Provider&lt;F&gt;"/>
3134 <implements name="com.google.inject.spi.HasDependencies"/>
3135 <method name="newFactory" return="com.google.inject.Provider&lt;F&gt;"
3136 abstract="false" native="false" synchronized="false"
3137 static="true" final="false" visibility="public"
3138 deprecated="not deprecated">
3139 <param name="factoryType" type="java.lang.Class&lt;F&gt;"/>
3140 <param name="implementationType" type="java.lang.Class&lt;?&gt;"/>
3141 </method>
3142 <method name="newFactory" return="com.google.inject.Provider&lt;F&gt;"
3143 abstract="false" native="false" synchronized="false"
3144 static="true" final="false" visibility="public"
3145 deprecated="not deprecated">
3146 <param name="factoryType" type="com.google.inject.TypeLiteral&lt;F&gt;"/>
3147 <param name="implementationType" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
3148 </method>
3149 <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
3150 abstract="false" native="false" synchronized="false"
3151 static="false" final="false" visibility="public"
3152 deprecated="not deprecated">
3153 </method>
3154 <method name="get" return="F"
3155 abstract="false" native="false" synchronized="false"
3156 static="false" final="false" visibility="public"
3157 deprecated="not deprecated">
3158 </method>
3159 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00003160 <![CDATA[<strong>Obsolete.</strong> Prefer {@link FactoryModuleBuilder} for its more concise API and
3161 additional capability.
3162
3163 <p>Provides a factory that combines the caller's arguments with injector-supplied values to
3164 construct objects.
3165
3166 <h3>Defining a factory</h3>
3167 Create an interface whose methods return the constructed type, or any of its supertypes. The
3168 method's parameters are the arguments required to build the constructed type.
3169 <pre>public interface PaymentFactory {
3170 Payment create(Date startDate, Money amount);
3171 }</pre>
3172 You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i>
3173 or <i>newPayment</i>.
3174
3175 <h3>Creating a type that accepts factory parameters</h3>
3176 {@code constructedType} is a concrete class with an {@literal @}{@link Inject}-annotated
3177 constructor. In addition to injector-supplied parameters, the constructor should have
3178 parameters that match each of the factory method's parameters. Each factory-supplied parameter
3179 requires an {@literal @}{@link Assisted} annotation. This serves to document that the parameter
3180 is not bound by your application's modules.
3181 <pre>public class RealPayment implements Payment {
3182 {@literal @}Inject
3183 public RealPayment(
3184 CreditService creditService,
3185 AuthService authService,
3186 <strong>{@literal @}Assisted Date startDate</strong>,
3187 <strong>{@literal @}Assisted Money amount</strong>) {
3188 ...
3189 }
3190 }</pre>
3191 Any parameter that permits a null value should also be annotated {@code @Nullable}.
3192
3193 <h3>Configuring factories</h3>
3194 In your {@link com.google.inject.Module module}, bind the factory interface to the returned
3195 factory:
3196 <pre>bind(PaymentFactory.class).toProvider(
3197 FactoryProvider.newFactory(PaymentFactory.class, RealPayment.class));</pre>
3198 As a side-effect of this binding, Guice will inject the factory to initialize it for use. The
3199 factory cannot be used until the injector has been initialized.
3200
3201 <h3>Using the factory</h3>
3202 Inject your factory into your application classes. When you use the factory, your arguments
3203 will be combined with values from the injector to construct an instance.
3204 <pre>public class PaymentAction {
3205 {@literal @}Inject private PaymentFactory paymentFactory;
3206
3207 public void doPayment(Money amount) {
3208 Payment payment = paymentFactory.create(new Date(), amount);
3209 payment.apply();
3210 }
3211 }</pre>
3212
3213 <h3>Making parameter types distinct</h3>
3214 The types of the factory method's parameters must be distinct. To use multiple parameters of
3215 the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the
3216 parameters. The names must be applied to the factory method's parameters:
3217
3218 <pre>public interface PaymentFactory {
3219 Payment create(
3220 <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
3221 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
3222 Money amount);
3223 } </pre>
3224 ...and to the concrete type's constructor parameters:
3225 <pre>public class RealPayment implements Payment {
3226 {@literal @}Inject
3227 public RealPayment(
3228 CreditService creditService,
3229 AuthService authService,
3230 <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
3231 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
3232 <strong>{@literal @}Assisted</strong> Money amount) {
3233 ...
3234 }
3235 }</pre>
3236
3237 <h3>Values are created by Guice</h3>
3238 Returned factories use child injectors to create values. The values are eligible for method
3239 interception. In addition, {@literal @}{@literal Inject} members will be injected before they are
3240 returned.
3241
3242 <h3>Backwards compatibility using {@literal @}AssistedInject</h3>
3243 Instead of the {@literal @}Inject annotation, you may annotate the constructed classes with
3244 {@literal @}{@link AssistedInject}. This triggers a limited backwards-compatability mode.
3245
3246 <p>Instead of matching factory method arguments to constructor parameters using their names, the
3247 <strong>parameters are matched by their order</strong>. The first factory method argument is
3248 used for the first {@literal @}Assisted constructor parameter, etc.. Annotation names have no
3249 effect.
3250
3251 <p>Returned values are <strong>not created by Guice</strong>. These types are not eligible for
3252 method interception. They do receive post-construction member injection.
3253
3254 @param <F> The factory interface
3255
3256 @author jmourits@google.com (Jerome Mourits)
3257 @author jessewilson@google.com (Jesse Wilson)
3258 @author dtm@google.com (Daniel Martin)
3259
sameb1d3f8cd2014-10-07 15:32:12 -07003260 @deprecated use {@link FactoryModuleBuilder} instead.]]>
3261 </doc>
3262 </class>
3263 <!-- end class com.google.inject.assistedinject.FactoryProvider -->
3264</package>
3265<package name="com.google.inject.binder">
3266 <!-- start interface com.google.inject.binder.AnnotatedBindingBuilder -->
3267 <interface name="AnnotatedBindingBuilder" abstract="true"
3268 static="false" final="false" visibility="public"
3269 deprecated="not deprecated">
3270 <implements name="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"/>
3271 <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
3272 abstract="false" native="false" synchronized="false"
3273 static="false" final="false" visibility="public"
3274 deprecated="not deprecated">
3275 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
3276 <doc>
3277 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3278 </doc>
3279 </method>
3280 <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
3281 abstract="false" native="false" synchronized="false"
3282 static="false" final="false" visibility="public"
3283 deprecated="not deprecated">
3284 <param name="annotation" type="java.lang.annotation.Annotation"/>
3285 <doc>
3286 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3287 </doc>
3288 </method>
3289 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00003290 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3291
sameb1d3f8cd2014-10-07 15:32:12 -07003292 @author crazybob@google.com (Bob Lee)]]>
3293 </doc>
3294 </interface>
3295 <!-- end interface com.google.inject.binder.AnnotatedBindingBuilder -->
3296 <!-- start interface com.google.inject.binder.AnnotatedConstantBindingBuilder -->
3297 <interface name="AnnotatedConstantBindingBuilder" abstract="true"
3298 static="false" final="false" visibility="public"
3299 deprecated="not deprecated">
3300 <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder"
3301 abstract="false" native="false" synchronized="false"
3302 static="false" final="false" visibility="public"
3303 deprecated="not deprecated">
3304 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
3305 <doc>
3306 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3307 </doc>
3308 </method>
3309 <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder"
3310 abstract="false" native="false" synchronized="false"
3311 static="false" final="false" visibility="public"
3312 deprecated="not deprecated">
3313 <param name="annotation" type="java.lang.annotation.Annotation"/>
3314 <doc>
3315 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3316 </doc>
3317 </method>
3318 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00003319 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3320
sameb1d3f8cd2014-10-07 15:32:12 -07003321 @author crazybob@google.com (Bob Lee)]]>
3322 </doc>
3323 </interface>
3324 <!-- end interface com.google.inject.binder.AnnotatedConstantBindingBuilder -->
3325 <!-- start interface com.google.inject.binder.AnnotatedElementBuilder -->
3326 <interface name="AnnotatedElementBuilder" abstract="true"
3327 static="false" final="false" visibility="public"
3328 deprecated="not deprecated">
3329 <method name="annotatedWith"
3330 abstract="false" native="false" synchronized="false"
3331 static="false" final="false" visibility="public"
3332 deprecated="not deprecated">
3333 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
3334 <doc>
3335 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3336 </doc>
3337 </method>
3338 <method name="annotatedWith"
3339 abstract="false" native="false" synchronized="false"
3340 static="false" final="false" visibility="public"
3341 deprecated="not deprecated">
3342 <param name="annotation" type="java.lang.annotation.Annotation"/>
3343 <doc>
3344 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3345 </doc>
3346 </method>
3347 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00003348 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3349
3350 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07003351 @since 2.0]]>
3352 </doc>
3353 </interface>
3354 <!-- end interface com.google.inject.binder.AnnotatedElementBuilder -->
3355 <!-- start interface com.google.inject.binder.ConstantBindingBuilder -->
3356 <interface name="ConstantBindingBuilder" abstract="true"
3357 static="false" final="false" visibility="public"
3358 deprecated="not deprecated">
3359 <method name="to"
3360 abstract="false" native="false" synchronized="false"
3361 static="false" final="false" visibility="public"
3362 deprecated="not deprecated">
3363 <param name="value" type="java.lang.String"/>
3364 <doc>
3365 <![CDATA[Binds constant to the given value.]]>
3366 </doc>
3367 </method>
3368 <method name="to"
3369 abstract="false" native="false" synchronized="false"
3370 static="false" final="false" visibility="public"
3371 deprecated="not deprecated">
3372 <param name="value" type="int"/>
3373 <doc>
3374 <![CDATA[Binds constant to the given value.]]>
3375 </doc>
3376 </method>
3377 <method name="to"
3378 abstract="false" native="false" synchronized="false"
3379 static="false" final="false" visibility="public"
3380 deprecated="not deprecated">
3381 <param name="value" type="long"/>
3382 <doc>
3383 <![CDATA[Binds constant to the given value.]]>
3384 </doc>
3385 </method>
3386 <method name="to"
3387 abstract="false" native="false" synchronized="false"
3388 static="false" final="false" visibility="public"
3389 deprecated="not deprecated">
3390 <param name="value" type="boolean"/>
3391 <doc>
3392 <![CDATA[Binds constant to the given value.]]>
3393 </doc>
3394 </method>
3395 <method name="to"
3396 abstract="false" native="false" synchronized="false"
3397 static="false" final="false" visibility="public"
3398 deprecated="not deprecated">
3399 <param name="value" type="double"/>
3400 <doc>
3401 <![CDATA[Binds constant to the given value.]]>
3402 </doc>
3403 </method>
3404 <method name="to"
3405 abstract="false" native="false" synchronized="false"
3406 static="false" final="false" visibility="public"
3407 deprecated="not deprecated">
3408 <param name="value" type="float"/>
3409 <doc>
3410 <![CDATA[Binds constant to the given value.]]>
3411 </doc>
3412 </method>
3413 <method name="to"
3414 abstract="false" native="false" synchronized="false"
3415 static="false" final="false" visibility="public"
3416 deprecated="not deprecated">
3417 <param name="value" type="short"/>
3418 <doc>
3419 <![CDATA[Binds constant to the given value.]]>
3420 </doc>
3421 </method>
3422 <method name="to"
3423 abstract="false" native="false" synchronized="false"
3424 static="false" final="false" visibility="public"
3425 deprecated="not deprecated">
3426 <param name="value" type="char"/>
3427 <doc>
3428 <![CDATA[Binds constant to the given value.]]>
3429 </doc>
3430 </method>
3431 <method name="to"
3432 abstract="false" native="false" synchronized="false"
3433 static="false" final="false" visibility="public"
3434 deprecated="not deprecated">
3435 <param name="value" type="byte"/>
3436 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00003437 <![CDATA[Binds constant to the given value.
3438
sameb1d3f8cd2014-10-07 15:32:12 -07003439 @since 3.0]]>
3440 </doc>
3441 </method>
3442 <method name="to"
3443 abstract="false" native="false" synchronized="false"
3444 static="false" final="false" visibility="public"
3445 deprecated="not deprecated">
3446 <param name="value" type="java.lang.Class&lt;?&gt;"/>
3447 <doc>
3448 <![CDATA[Binds constant to the given value.]]>
3449 </doc>
3450 </method>
3451 <method name="to"
3452 abstract="false" native="false" synchronized="false"
3453 static="false" final="false" visibility="public"
3454 deprecated="not deprecated">
3455 <param name="value" type="E extends java.lang.Enum&lt;E&gt;"/>
3456 <doc>
3457 <![CDATA[Binds constant to the given value.]]>
3458 </doc>
3459 </method>
3460 <doc>
3461 <![CDATA[Binds to a constant value.]]>
3462 </doc>
3463 </interface>
3464 <!-- end interface com.google.inject.binder.ConstantBindingBuilder -->
3465 <!-- start interface com.google.inject.binder.LinkedBindingBuilder -->
3466 <interface name="LinkedBindingBuilder" abstract="true"
3467 static="false" final="false" visibility="public"
3468 deprecated="not deprecated">
3469 <implements name="com.google.inject.binder.ScopedBindingBuilder"/>
3470 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
3471 abstract="false" native="false" synchronized="false"
3472 static="false" final="false" visibility="public"
3473 deprecated="not deprecated">
3474 <param name="implementation" type="java.lang.Class&lt;? extends T&gt;"/>
3475 <doc>
3476 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3477 </doc>
3478 </method>
3479 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
3480 abstract="false" native="false" synchronized="false"
3481 static="false" final="false" visibility="public"
3482 deprecated="not deprecated">
3483 <param name="implementation" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
3484 <doc>
3485 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3486 </doc>
3487 </method>
3488 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
3489 abstract="false" native="false" synchronized="false"
3490 static="false" final="false" visibility="public"
3491 deprecated="not deprecated">
3492 <param name="targetKey" type="com.google.inject.Key&lt;? extends T&gt;"/>
3493 <doc>
3494 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3495 </doc>
3496 </method>
3497 <method name="toInstance"
3498 abstract="false" native="false" synchronized="false"
3499 static="false" final="false" visibility="public"
3500 deprecated="not deprecated">
3501 <param name="instance" type="T"/>
3502 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00003503 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3504
sameb1d3f8cd2014-10-07 15:32:12 -07003505 @see com.google.inject.Injector#injectMembers]]>
3506 </doc>
3507 </method>
3508 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
3509 abstract="false" native="false" synchronized="false"
3510 static="false" final="false" visibility="public"
3511 deprecated="not deprecated">
3512 <param name="provider" type="com.google.inject.Provider&lt;? extends T&gt;"/>
3513 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00003514 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3515
sameb1d3f8cd2014-10-07 15:32:12 -07003516 @see com.google.inject.Injector#injectMembers]]>
3517 </doc>
3518 </method>
3519 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
3520 abstract="false" native="false" synchronized="false"
3521 static="false" final="false" visibility="public"
3522 deprecated="not deprecated">
3523 <param name="providerType" type="java.lang.Class&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
3524 <doc>
3525 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3526 </doc>
3527 </method>
3528 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
3529 abstract="false" native="false" synchronized="false"
3530 static="false" final="false" visibility="public"
3531 deprecated="not deprecated">
3532 <param name="providerType" type="com.google.inject.TypeLiteral&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
3533 <doc>
3534 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3535 </doc>
3536 </method>
3537 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
3538 abstract="false" native="false" synchronized="false"
3539 static="false" final="false" visibility="public"
3540 deprecated="not deprecated">
3541 <param name="providerKey" type="com.google.inject.Key&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
3542 <doc>
3543 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3544 </doc>
3545 </method>
3546 <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder"
3547 abstract="false" native="false" synchronized="false"
3548 static="false" final="false" visibility="public"
3549 deprecated="not deprecated">
3550 <param name="constructor" type="java.lang.reflect.Constructor&lt;S&gt;"/>
3551 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00003552 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3553
sameb1d3f8cd2014-10-07 15:32:12 -07003554 @since 3.0]]>
3555 </doc>
3556 </method>
3557 <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder"
3558 abstract="false" native="false" synchronized="false"
3559 static="false" final="false" visibility="public"
3560 deprecated="not deprecated">
3561 <param name="constructor" type="java.lang.reflect.Constructor&lt;S&gt;"/>
3562 <param name="type" type="com.google.inject.TypeLiteral&lt;? extends S&gt;"/>
3563 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00003564 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3565
sameb1d3f8cd2014-10-07 15:32:12 -07003566 @since 3.0]]>
3567 </doc>
3568 </method>
3569 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00003570 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3571
sameb1d3f8cd2014-10-07 15:32:12 -07003572 @author crazybob@google.com (Bob Lee)]]>
3573 </doc>
3574 </interface>
3575 <!-- end interface com.google.inject.binder.LinkedBindingBuilder -->
3576 <!-- start interface com.google.inject.binder.ScopedBindingBuilder -->
3577 <interface name="ScopedBindingBuilder" abstract="true"
3578 static="false" final="false" visibility="public"
3579 deprecated="not deprecated">
3580 <method name="in"
3581 abstract="false" native="false" synchronized="false"
3582 static="false" final="false" visibility="public"
3583 deprecated="not deprecated">
3584 <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
3585 <doc>
3586 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3587 </doc>
3588 </method>
3589 <method name="in"
3590 abstract="false" native="false" synchronized="false"
3591 static="false" final="false" visibility="public"
3592 deprecated="not deprecated">
3593 <param name="scope" type="com.google.inject.Scope"/>
3594 <doc>
3595 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3596 </doc>
3597 </method>
3598 <method name="asEagerSingleton"
3599 abstract="false" native="false" synchronized="false"
3600 static="false" final="false" visibility="public"
3601 deprecated="not deprecated">
3602 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00003603 <![CDATA[Instructs the {@link com.google.inject.Injector} to eagerly initialize this
3604 singleton-scoped binding upon creation. Useful for application
3605 initialization logic. See the EDSL examples at
sameb1d3f8cd2014-10-07 15:32:12 -07003606 {@link com.google.inject.Binder}.]]>
3607 </doc>
3608 </method>
3609 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00003610 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3611
sameb1d3f8cd2014-10-07 15:32:12 -07003612 @author crazybob@google.com (Bob Lee)]]>
3613 </doc>
3614 </interface>
3615 <!-- end interface com.google.inject.binder.ScopedBindingBuilder -->
3616</package>
3617<package name="com.google.inject.grapher">
3618 <!-- start interface com.google.inject.grapher.BindingEdge -->
3619 <interface name="BindingEdge" abstract="true"
3620 static="false" final="false" visibility="public"
3621 deprecated="not deprecated">
3622 <method name="setType"
3623 abstract="false" native="false" synchronized="false"
3624 static="false" final="false" visibility="public"
3625 deprecated="not deprecated">
3626 <param name="type" type="com.google.inject.grapher.BindingEdge.Type"/>
3627 </method>
3628 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003629 <![CDATA[Interface for an edge that connects an interface to the type or instance
3630 that is bound to implement it.
3631
3632 @author phopkins@gmail.com (Pete Hopkins)
3633
sameb1d3f8cd2014-10-07 15:32:12 -07003634 @param <K> The type for node IDs.]]>
3635 </doc>
3636 </interface>
3637 <!-- end interface com.google.inject.grapher.BindingEdge -->
3638 <!-- start interface com.google.inject.grapher.BindingEdge.Factory -->
3639 <interface name="BindingEdge.Factory" abstract="true"
3640 static="true" final="false" visibility="public"
3641 deprecated="not deprecated">
3642 <method name="newBindingEdge" return="T extends com.google.inject.grapher.BindingEdge&lt;K&gt;"
3643 abstract="false" native="false" synchronized="false"
3644 static="false" final="false" visibility="public"
3645 deprecated="not deprecated">
3646 <param name="fromId" type="K"/>
3647 <param name="toId" type="K"/>
3648 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003649 <![CDATA[Creates a new {@link BindingEdge} instance and adds it to the graph.
3650
3651 @param fromId Node ID for the interface node.
3652 @param toId Node ID for the implementation (class or instance) node.
sameb1d3f8cd2014-10-07 15:32:12 -07003653 @return The newly created and added {@link BindingEdge}.]]>
3654 </doc>
3655 </method>
3656 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003657 <![CDATA[Factory interface for {@link BindingEdge}s. Renderer implementations will
3658 need to provide an implementation for this.
3659
3660 @param <K> The type for node IDs.
sameb1d3f8cd2014-10-07 15:32:12 -07003661 @param <T> The {@link BindingEdge} sub-type that this factory provides.]]>
3662 </doc>
3663 </interface>
3664 <!-- end interface com.google.inject.grapher.BindingEdge.Factory -->
3665 <!-- start class com.google.inject.grapher.BindingEdge.Type -->
3666 <class name="BindingEdge.Type" extends="java.lang.Enum&lt;com.google.inject.grapher.BindingEdge.Type&gt;"
3667 abstract="false"
3668 static="true" final="true" visibility="public"
3669 deprecated="not deprecated">
3670 <method name="values" return="com.google.inject.grapher.BindingEdge.Type[]"
3671 abstract="false" native="false" synchronized="false"
3672 static="true" final="false" visibility="public"
3673 deprecated="not deprecated">
3674 </method>
3675 <method name="valueOf" return="com.google.inject.grapher.BindingEdge.Type"
3676 abstract="false" native="false" synchronized="false"
3677 static="true" final="false" visibility="public"
3678 deprecated="not deprecated">
3679 <param name="name" type="java.lang.String"/>
3680 </method>
3681 <doc>
3682 <![CDATA[Classification for what kind of binding this edge represents.]]>
3683 </doc>
3684 </class>
3685 <!-- end class com.google.inject.grapher.BindingEdge.Type -->
3686 <!-- start interface com.google.inject.grapher.DependencyEdge -->
3687 <interface name="DependencyEdge" abstract="true"
3688 static="false" final="false" visibility="public"
3689 deprecated="not deprecated">
3690 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003691 <![CDATA[Interface for an edge from a class or {@link InjectionPoint} to the
3692 interface node that will satisfy the dependency.
3693
3694 @author phopkins@gmail.com (Pete Hopkins)
3695
sameb1d3f8cd2014-10-07 15:32:12 -07003696 @param <K> The type for node IDs.]]>
3697 </doc>
3698 </interface>
3699 <!-- end interface com.google.inject.grapher.DependencyEdge -->
3700 <!-- start interface com.google.inject.grapher.DependencyEdge.Factory -->
3701 <interface name="DependencyEdge.Factory" abstract="true"
3702 static="true" final="false" visibility="public"
3703 deprecated="not deprecated">
3704 <method name="newDependencyEdge" return="T extends com.google.inject.grapher.DependencyEdge&lt;K&gt;"
3705 abstract="false" native="false" synchronized="false"
3706 static="false" final="false" visibility="public"
3707 deprecated="not deprecated">
3708 <param name="fromId" type="K"/>
3709 <param name="fromPoint" type="com.google.inject.spi.InjectionPoint"/>
3710 <param name="toId" type="K"/>
3711 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003712 <![CDATA[Creates a new {@link DependencyEdge} and adds it to the graph.
3713
3714 @param fromId The ID for the class or instance node that has the
3715 dependency.
3716 @param fromPoint The point where the dependency will be
3717 {@literal @}{@link Inject}ed.
sameb1d3f8cd2014-10-07 15:32:12 -07003718 @param toId The ID for the interface node that satisfies the dependency.]]>
3719 </doc>
3720 </method>
3721 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003722 <![CDATA[Factory interface for {@link DependencyEdge}s. Renderer implementations
3723 will need to provide an implementation for this.
3724
3725 @param <K> The type for node IDs.
sameb1d3f8cd2014-10-07 15:32:12 -07003726 @param <T> The {@link DependencyEdge} sub-type that this factory provides.]]>
3727 </doc>
3728 </interface>
3729 <!-- end interface com.google.inject.grapher.DependencyEdge.Factory -->
3730 <!-- start class com.google.inject.grapher.GrapherModule -->
3731 <class name="GrapherModule" extends="com.google.inject.AbstractModule"
3732 abstract="false"
3733 static="false" final="false" visibility="public"
3734 deprecated="not deprecated">
3735 <constructor name="GrapherModule"
3736 static="false" final="false" visibility="public"
3737 deprecated="not deprecated">
3738 </constructor>
3739 <method name="configure"
3740 abstract="false" native="false" synchronized="false"
3741 static="false" final="false" visibility="protected"
3742 deprecated="not deprecated">
3743 </method>
3744 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003745 <![CDATA[Module for the common bindings for {@link InjectorGrapher}. You will also
3746 need to bind a {@link Module} that satisfies the {@link Renderer}
3747 dependency.
3748 <p>
3749 If you want to use subtypes of the node and edge classes, or a different
3750 node ID type, you will need to override the {@link GraphingVisitor} binding
3751 to specify the new type parameters.
3752
sameb1d3f8cd2014-10-07 15:32:12 -07003753 @author phopkins@gmail.com (Pete Hopkins)]]>
3754 </doc>
3755 </class>
3756 <!-- end class com.google.inject.grapher.GrapherModule -->
3757 <!-- start class com.google.inject.grapher.GraphingVisitor -->
3758 <class name="GraphingVisitor" extends="java.lang.Object"
3759 abstract="false"
3760 static="false" final="false" visibility="public"
3761 deprecated="not deprecated">
3762 <implements name="com.google.inject.spi.BindingTargetVisitor&lt;java.lang.Object, java.lang.Void&gt;"/>
3763 <constructor name="GraphingVisitor" type="com.google.inject.grapher.NodeIdFactory&lt;K&gt;, com.google.inject.grapher.InterfaceNode.Factory&lt;K, N&gt;, com.google.inject.grapher.ImplementationNode.Factory&lt;K, M&gt;, com.google.inject.grapher.BindingEdge.Factory&lt;K, B&gt;, com.google.inject.grapher.DependencyEdge.Factory&lt;K, D&gt;, com.google.inject.grapher.NodeAliasFactory&lt;K&gt;"
3764 static="false" final="false" visibility="public"
3765 deprecated="not deprecated">
3766 </constructor>
3767 <method name="getClassNodeId" return="K"
3768 abstract="false" native="false" synchronized="false"
3769 static="false" final="true" visibility="protected"
3770 deprecated="not deprecated">
3771 <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
3772 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003773 <![CDATA[Helper method to return the standard node ID for the {@link Binding}'s
3774 {@link Key}.
3775
sameb1d3f8cd2014-10-07 15:32:12 -07003776 @see NodeIdFactory#getClassNodeId(Key)]]>
3777 </doc>
3778 </method>
3779 <method name="getInstanceNodeId" return="K"
3780 abstract="false" native="false" synchronized="false"
3781 static="false" final="true" visibility="protected"
3782 deprecated="not deprecated">
3783 <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
3784 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003785 <![CDATA[Helper method to return the instance node ID for the {@link Binding}'s
3786 {@link Key}.
3787
sameb1d3f8cd2014-10-07 15:32:12 -07003788 @see NodeIdFactory#getInstanceNodeId(Key)]]>
3789 </doc>
3790 </method>
3791 <method name="newInterfaceNode" return="N extends com.google.inject.grapher.InterfaceNode&lt;K&gt;"
3792 abstract="false" native="false" synchronized="false"
3793 static="false" final="false" visibility="protected"
3794 deprecated="not deprecated">
3795 <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
3796 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003797 <![CDATA[Creates and returns a new {@link InterfaceNode} object for the given
sameb1d3f8cd2014-10-07 15:32:12 -07003798 {@link Binding}.]]>
3799 </doc>
3800 </method>
3801 <method name="newClassImplementationNode" return="M extends com.google.inject.grapher.ImplementationNode&lt;K&gt;"
3802 abstract="false" native="false" synchronized="false"
3803 static="false" final="false" visibility="protected"
3804 deprecated="not deprecated">
3805 <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
3806 <param name="constructorInjectionPoint" type="com.google.inject.spi.InjectionPoint"/>
3807 <param name="memberInjectionPoints" type="java.util.Collection&lt;com.google.inject.spi.InjectionPoint&gt;"/>
3808 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003809 <![CDATA[Creates and returns a new {@link ImplementationNode} for the given
3810 {@link Binding}, where the {@link Binding} is for a class that Guice
sameb1d3f8cd2014-10-07 15:32:12 -07003811 will instantiate, rather than a specific instance.]]>
3812 </doc>
3813 </method>
3814 <method name="newInstanceImplementationNode" return="M extends com.google.inject.grapher.ImplementationNode&lt;K&gt;"
3815 abstract="false" native="false" synchronized="false"
3816 static="false" final="false" visibility="protected"
3817 deprecated="not deprecated">
3818 <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
3819 <param name="instance" type="java.lang.Object"/>
3820 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003821 <![CDATA[Creates and returns a new {@link ImplementationNode} for the given
3822 {@link Binding}, where the {@link Binding} is for an instance, rather than
sameb1d3f8cd2014-10-07 15:32:12 -07003823 a class.]]>
3824 </doc>
3825 </method>
3826 <method name="newBindingEdge" return="B extends com.google.inject.grapher.BindingEdge&lt;K&gt;"
3827 abstract="false" native="false" synchronized="false"
3828 static="false" final="false" visibility="protected"
3829 deprecated="not deprecated">
3830 <param name="nodeId" type="K"/>
3831 <param name="toId" type="K"/>
3832 <param name="type" type="com.google.inject.grapher.BindingEdge.Type"/>
3833 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003834 <![CDATA[Creates a new {@link BindingEdge} from the given node to the specified
3835 node.
3836
3837 @param nodeId ID of the {@link InterfaceNode} that binds to the other.
3838 @param toId The node ID of a class or instance that is bound.
3839 @param type The {@link BindingEdge.Type} of this binding.
sameb1d3f8cd2014-10-07 15:32:12 -07003840 @return The newly-created and added {@link BindingEdge}.]]>
3841 </doc>
3842 </method>
3843 <method name="newDependencyEdges" return="java.util.Collection&lt;D&gt;"
3844 abstract="false" native="false" synchronized="false"
3845 static="false" final="false" visibility="protected"
3846 deprecated="not deprecated">
3847 <param name="nodeId" type="K"/>
3848 <param name="node" type="M extends com.google.inject.grapher.ImplementationNode&lt;K&gt;"/>
3849 <param name="dependencies" type="java.util.Collection&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"/>
3850 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003851 <![CDATA[Adds {@link DependencyEdge}s to the graph for each of the provided
3852 {@link Dependency}s. These will be from the given node ID to the
3853 {@link Dependency}'s {@link Key}.
3854 <p>
3855 If a {@link Dependency} has an associated {@link InjectionPoint}, its
3856 member will be added to the given {@link ImplementationNode} and the edge
3857 will start at the {@link Member}.
3858
3859 @see #newDependencyEdge(Object, InjectionPoint, Dependency)
3860
3861 @param nodeId ID of the node that should be the tail of the
3862 {@link DependencyEdge}s.
3863 @param node An {@link ImplementationNode} to add {@link Member}s to.
3864 @param dependencies {@link Collection} of {@link Dependency}s from the
3865 {@link Binding}.
3866 @return A {@link Collection} of the {@link DependencyEdge}s that were
sameb1d3f8cd2014-10-07 15:32:12 -07003867 added to the graph.]]>
3868 </doc>
3869 </method>
3870 <method name="newDependencyEdge" return="D extends com.google.inject.grapher.DependencyEdge&lt;K&gt;"
3871 abstract="false" native="false" synchronized="false"
3872 static="false" final="false" visibility="protected"
3873 deprecated="not deprecated">
3874 <param name="nodeId" type="K"/>
3875 <param name="injectionPoint" type="com.google.inject.spi.InjectionPoint"/>
3876 <param name="dependency" type="com.google.inject.spi.Dependency&lt;?&gt;"/>
3877 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003878 <![CDATA[Creates a new {@link DependencyEdge} from the given node to a
3879 {@link Dependency}.
3880 <p>
3881 This method takes more comprehensive parameters than strictly necessary
3882 in case they would be useful to overriding implementations.
3883
3884 @param nodeId ID of the {@link ImplementationNode} where the edges will start.
3885 @param injectionPoint The {@link InjectionPoint} that gave rise to this
3886 {@link Dependency}, if one exists. Used to figure out which
3887 {@link Member} the edge should point from.
3888 @param dependency The {@link Dependency} to represent with this edge.
sameb1d3f8cd2014-10-07 15:32:12 -07003889 @return The newly-created and added {@link DependencyEdge}.]]>
3890 </doc>
3891 </method>
3892 <method name="visit" return="java.lang.Void"
3893 abstract="false" native="false" synchronized="false"
3894 static="false" final="false" visibility="public"
3895 deprecated="not deprecated">
3896 <param name="binding" type="com.google.inject.spi.ConstructorBinding&lt;?&gt;"/>
3897 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003898 <![CDATA[Visitor for {@link ConstructorBinding}s. These are for classes that Guice
3899 will instantiate to satisfy injection requests. We create a new
3900 {@link ImplementationNode} for the class, then add edges to everything
3901 that it depends on to be instantiated.
3902
3903 @see #newClassImplementationNode(Binding, InjectionPoint, Collection)
sameb1d3f8cd2014-10-07 15:32:12 -07003904 @see #newDependencyEdges(Object, ImplementationNode, Collection)]]>
3905 </doc>
3906 </method>
3907 <method name="visit" return="java.lang.Void"
3908 abstract="false" native="false" synchronized="false"
3909 static="false" final="false" visibility="public"
3910 deprecated="not deprecated">
3911 <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding&lt;?&gt;"/>
3912 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003913 <![CDATA[Visitor for {@link ConvertedConstantBinding}. The {@link Binding}'s
3914 {@link Key} will be of an annotated primitive type, and the value of
3915 {@link ConvertedConstantBinding#getSourceKey()} will be of a
3916 {@link String} with the same annotation.
3917 <p>
3918 We render this as an {@link InterfaceNode} that has a
3919 {@link BindingEdge} to the source {@link Key}. That will then be rendered
3920 by {@link #visit(InstanceBinding)} as an {@link InterfaceNode}
3921 with a {@link BindingEdge} to the {@link String} instance.
3922
3923 @see #newInterfaceNode(Binding)
sameb1d3f8cd2014-10-07 15:32:12 -07003924 @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type)]]>
3925 </doc>
3926 </method>
3927 <method name="visit" return="java.lang.Void"
3928 abstract="false" native="false" synchronized="false"
3929 static="false" final="false" visibility="public"
3930 deprecated="not deprecated">
3931 <param name="binding" type="com.google.inject.spi.ExposedBinding&lt;?&gt;"/>
3932 <doc>
3933 <![CDATA[Currently not displayed on the graph.]]>
3934 </doc>
3935 </method>
3936 <method name="visit" return="java.lang.Void"
3937 abstract="false" native="false" synchronized="false"
3938 static="false" final="false" visibility="public"
3939 deprecated="not deprecated">
3940 <param name="binding" type="com.google.inject.spi.InstanceBinding&lt;?&gt;"/>
3941 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003942 <![CDATA[Visitor for {@link InstanceBinding}. We render two nodes in this case: a
3943 {@link InterfaceNode} for the binding's {@link Key}, and then an
3944 {@link ImplementationNode} for the instance {@link Object} itself. We run
3945 a binding node between them.
3946 <p>
3947 We then render any {@link DependencyEdge}s that the instance may have,
3948 which come either from {@link InjectionPoint}s (method and field) on the
3949 instance, or on {@link Dependency}s the instance declares through the
3950 {@link HasDependencies} interface.
3951
3952 @see #newInterfaceNode(Binding)
3953 @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type)
3954 @see #newInstanceImplementationNode(Binding, Object)
sameb1d3f8cd2014-10-07 15:32:12 -07003955 @see #newDependencyEdges(Object, ImplementationNode, java.util.Collection)]]>
3956 </doc>
3957 </method>
3958 <method name="visit" return="java.lang.Void"
3959 abstract="false" native="false" synchronized="false"
3960 static="false" final="false" visibility="public"
3961 deprecated="not deprecated">
3962 <param name="binding" type="com.google.inject.spi.LinkedKeyBinding&lt;?&gt;"/>
3963 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003964 <![CDATA[Visitor for {@link LinkedKeyBinding}. This is the standard {@link Binding}
3965 you get from binding an interface class to an implementation class. We
3966 create an {@link InterfaceNode}, then draw a {@link BindingEdge} to the
3967 node of the implementing class.
3968
3969 @see #newInterfaceNode(Binding)
sameb1d3f8cd2014-10-07 15:32:12 -07003970 @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type)]]>
3971 </doc>
3972 </method>
3973 <method name="visit" return="java.lang.Void"
3974 abstract="false" native="false" synchronized="false"
3975 static="false" final="false" visibility="public"
3976 deprecated="not deprecated">
3977 <param name="binding" type="com.google.inject.spi.ProviderBinding&lt;?&gt;"/>
3978 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003979 <![CDATA[Visitor for {@link ProviderBinding}. These {@link Binding}s arise from an
3980 {@link InjectionPoint} for the {@link Provider} interface. Since this
3981 isn't tremendously interesting information, we don't render this binding
3982 on the graph, and instead let the {@link DependencyEdge} go straight from
3983 the {@link InjectionPoint} to the node specified by
3984 {@link ProviderBinding#getProvidedKey()}.
3985
sameb1d3f8cd2014-10-07 15:32:12 -07003986 @see NodeAliasFactory#newAlias(Object, Object)]]>
3987 </doc>
3988 </method>
3989 <method name="visit" return="java.lang.Void"
3990 abstract="false" native="false" synchronized="false"
3991 static="false" final="false" visibility="public"
3992 deprecated="not deprecated">
3993 <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;?&gt;"/>
3994 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003995 <![CDATA[Same as {@link #visit(InstanceBinding)}, but the
3996 {@link BindingEdge} is {@link BindingEdge.Type#PROVIDER}.
3997
3998 @see #newInterfaceNode(Binding)
3999 @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type)
4000 @see #newInstanceImplementationNode(Binding, Object)
sameb1d3f8cd2014-10-07 15:32:12 -07004001 @see #newDependencyEdges(Object, ImplementationNode, java.util.Collection)]]>
4002 </doc>
4003 </method>
4004 <method name="visit" return="java.lang.Void"
4005 abstract="false" native="false" synchronized="false"
4006 static="false" final="false" visibility="public"
4007 deprecated="not deprecated">
4008 <param name="binding" type="com.google.inject.spi.ProviderKeyBinding&lt;?&gt;"/>
4009 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004010 <![CDATA[Same as {@link #visit(LinkedKeyBinding)}, but the
4011 {@link BindingEdge} is {@link BindingEdge.Type#PROVIDER}.
4012
4013 @see #newInterfaceNode(Binding)
sameb1d3f8cd2014-10-07 15:32:12 -07004014 @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type)]]>
4015 </doc>
4016 </method>
4017 <method name="visit" return="java.lang.Void"
4018 abstract="false" native="false" synchronized="false"
4019 static="false" final="false" visibility="public"
4020 deprecated="not deprecated">
4021 <param name="binding" type="com.google.inject.spi.UntargettedBinding&lt;?&gt;"/>
4022 <doc>
4023 <![CDATA[Currently not displayed on the graph.]]>
4024 </doc>
4025 </method>
4026 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004027 <![CDATA[{@link BindingTargetVisitor} that adds nodes and edges to the graph based on
4028 the visited {@link Binding}.
4029 <p>
4030 This class is parameterized over the four graph element types
4031 ({@link InterfaceNode}, {@link ImplementationNode}, {@link BindingEdge}, and
4032 {@link DependencyEdge}) so that you can extend those interfaces and also
4033 extend this class, and the helper methods will all return your new types.
4034
4035 @author phopkins@gmail.com (Pete Hopkins)
4036
4037 @param <K> The type for node IDs.
4038 @param <N> Type for {@link InterfaceNode}s.
4039 @param <M> Type for {@link ImplementationNode}.s
4040 @param <B> Type for {@link BindingEdge}s.
sameb1d3f8cd2014-10-07 15:32:12 -07004041 @param <D> Type for {@link DependencyEdge}s.]]>
4042 </doc>
4043 </class>
4044 <!-- end class com.google.inject.grapher.GraphingVisitor -->
4045 <!-- start interface com.google.inject.grapher.ImplementationNode -->
4046 <interface name="ImplementationNode" abstract="true"
4047 static="false" final="false" visibility="public"
4048 deprecated="not deprecated">
4049 <method name="setClassKey"
4050 abstract="false" native="false" synchronized="false"
4051 static="false" final="false" visibility="public"
4052 deprecated="not deprecated">
4053 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4054 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004055 <![CDATA[Sets the {@link Key} that this node is for. Used when the node is
sameb1d3f8cd2014-10-07 15:32:12 -07004056 representing a class that Guice will instantiate.]]>
4057 </doc>
4058 </method>
4059 <method name="setInstance"
4060 abstract="false" native="false" synchronized="false"
4061 static="false" final="false" visibility="public"
4062 deprecated="not deprecated">
4063 <param name="instance" type="java.lang.Object"/>
4064 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004065 <![CDATA[Sets the {@link Object} that's the already-created instance. Used when
sameb1d3f8cd2014-10-07 15:32:12 -07004066 this node is represeting the instance instead of a class.]]>
4067 </doc>
4068 </method>
4069 <method name="setSource"
4070 abstract="false" native="false" synchronized="false"
4071 static="false" final="false" visibility="public"
4072 deprecated="not deprecated">
4073 <param name="source" type="java.lang.Object"/>
4074 </method>
4075 <method name="addMember"
4076 abstract="false" native="false" synchronized="false"
4077 static="false" final="false" visibility="public"
4078 deprecated="not deprecated">
4079 <param name="member" type="java.lang.reflect.Member"/>
4080 </method>
4081 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004082 <![CDATA[Node for classes and instances that have {@link Dependency}s and are
4083 bound to {@link InterfaceNode}s. These nodes will often have fields for
4084 {@link Member}s that are {@link InjectionPoint}s.
4085
4086 @see DependencyEdge
4087
4088 @author phopkins@gmail.com (Pete Hopkins)
4089
sameb1d3f8cd2014-10-07 15:32:12 -07004090 @param <K> The type for node IDs.]]>
4091 </doc>
4092 </interface>
4093 <!-- end interface com.google.inject.grapher.ImplementationNode -->
4094 <!-- start interface com.google.inject.grapher.ImplementationNode.Factory -->
4095 <interface name="ImplementationNode.Factory" abstract="true"
4096 static="true" final="false" visibility="public"
4097 deprecated="not deprecated">
4098 <method name="newImplementationNode" return="T extends com.google.inject.grapher.ImplementationNode&lt;K&gt;"
4099 abstract="false" native="false" synchronized="false"
4100 static="false" final="false" visibility="public"
4101 deprecated="not deprecated">
4102 <param name="nodeId" type="K"/>
4103 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004104 <![CDATA[Creates a new {@link ImplementationNode} and adds it to the graph.
4105
4106 @param nodeId ID for the node.
sameb1d3f8cd2014-10-07 15:32:12 -07004107 @return The new {@link ImplementationNode} instance.]]>
4108 </doc>
4109 </method>
4110 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004111 <![CDATA[Factory interface for {@link ImplementationNode}s. Renderer
4112 implementations will need to provide an implementation for this.
4113
4114 @param <K> The type for node IDs.
4115 @param <T> The {@link ImplementationNode} sub-type that this factory
sameb1d3f8cd2014-10-07 15:32:12 -07004116 provides.]]>
4117 </doc>
4118 </interface>
4119 <!-- end interface com.google.inject.grapher.ImplementationNode.Factory -->
4120 <!-- start class com.google.inject.grapher.InjectorGrapher -->
4121 <class name="InjectorGrapher" extends="java.lang.Object"
4122 abstract="false"
4123 static="false" final="false" visibility="public"
4124 deprecated="not deprecated">
4125 <constructor name="InjectorGrapher" type="com.google.inject.spi.BindingTargetVisitor&lt;java.lang.Object, java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;&gt;, com.google.inject.spi.BindingTargetVisitor&lt;java.lang.Object, java.lang.Void&gt;, com.google.inject.grapher.Renderer"
4126 static="false" final="false" visibility="public"
4127 deprecated="not deprecated">
4128 </constructor>
4129 <method name="of" return="com.google.inject.grapher.InjectorGrapher"
4130 abstract="false" native="false" synchronized="false"
4131 static="false" final="false" visibility="public"
4132 deprecated="not deprecated">
4133 <param name="injector" type="com.google.inject.Injector"/>
4134 <doc>
4135 <![CDATA[Sets the {@link Injector} to graph.]]>
4136 </doc>
4137 </method>
4138 <method name="rootedAt" return="com.google.inject.grapher.InjectorGrapher"
4139 abstract="false" native="false" synchronized="false"
4140 static="false" final="false" visibility="public"
4141 deprecated="not deprecated">
4142 <param name="classes" type="java.lang.Class[]"/>
4143 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004144 <![CDATA[Sets an initial group of {@link Class}es to use as the starting point for
4145 the graph. The graph will be of these classes and their transitive
sameb1d3f8cd2014-10-07 15:32:12 -07004146 dependencies and bindings.]]>
4147 </doc>
4148 </method>
4149 <method name="rootedAt" return="com.google.inject.grapher.InjectorGrapher"
4150 abstract="false" native="false" synchronized="false"
4151 static="false" final="false" visibility="public"
4152 deprecated="not deprecated">
4153 <param name="keys" type="com.google.inject.Key[]"/>
4154 <doc>
sberlin@gmail.com3cff1b22011-03-06 23:30:55 +00004155 <![CDATA[Sets an initial group of {@link Key}s to use as the starting point for
4156 the graph. The graph will be of these keys and their transitive
sameb1d3f8cd2014-10-07 15:32:12 -07004157 dependencies and bindings.]]>
4158 </doc>
4159 </method>
4160 <method name="graph"
4161 abstract="false" native="false" synchronized="false"
4162 static="false" final="false" visibility="public"
4163 deprecated="not deprecated">
4164 <exception name="IOException" type="java.io.IOException"/>
4165 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004166 <![CDATA[Renders a graph with the bound {@link Renderer}. The {@link Injector}
sameb1d3f8cd2014-10-07 15:32:12 -07004167 must have already been specified with {@link #of(Injector)}.]]>
4168 </doc>
4169 </method>
4170 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004171 <![CDATA[Root class for graphing an {@link Injector}. Bound in {@link GrapherModule}.
4172 <p>
4173 Use {@link #of(Injector)} to specify the {@link Injector} to use, and
4174 {@link graph()} to graph the {@link Injector} using the currently-bound
4175 {@link Renderer}.
4176 <p>
4177 By default, this will graph the entire {@link Injector}. Use
sberlin@gmail.com3cff1b22011-03-06 23:30:55 +00004178 {@link #rootedAt(Class...)} or {@link #rootedAt(Key...)} to specify an
4179 initial set of {@link Class}es or {@link Key}s to use, and this will graph
4180 their transitive bindings and dependencies.
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004181
sameb1d3f8cd2014-10-07 15:32:12 -07004182 @author phopkins@gmail.com (Pete Hopkins)]]>
4183 </doc>
4184 </class>
4185 <!-- end class com.google.inject.grapher.InjectorGrapher -->
4186 <!-- start interface com.google.inject.grapher.InterfaceNode -->
4187 <interface name="InterfaceNode" abstract="true"
4188 static="false" final="false" visibility="public"
4189 deprecated="not deprecated">
4190 <method name="setKey"
4191 abstract="false" native="false" synchronized="false"
4192 static="false" final="false" visibility="public"
4193 deprecated="not deprecated">
4194 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4195 </method>
4196 <method name="setSource"
4197 abstract="false" native="false" synchronized="false"
4198 static="false" final="false" visibility="public"
4199 deprecated="not deprecated">
4200 <param name="source" type="java.lang.Object"/>
4201 </method>
4202 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004203 <![CDATA[Node for an interface class that has been bound to an implementation class
4204 or instance. These nodes are basically defined by a {@link Key}.
4205
4206 @see BindingEdge
4207
4208 @author phopkins@gmail.com (Pete Hopkins)
4209
sameb1d3f8cd2014-10-07 15:32:12 -07004210 @param <K> The type for node IDs.]]>
4211 </doc>
4212 </interface>
4213 <!-- end interface com.google.inject.grapher.InterfaceNode -->
4214 <!-- start interface com.google.inject.grapher.InterfaceNode.Factory -->
4215 <interface name="InterfaceNode.Factory" abstract="true"
4216 static="true" final="false" visibility="public"
4217 deprecated="not deprecated">
4218 <method name="newInterfaceNode" return="T extends com.google.inject.grapher.InterfaceNode&lt;K&gt;"
4219 abstract="false" native="false" synchronized="false"
4220 static="false" final="false" visibility="public"
4221 deprecated="not deprecated">
4222 <param name="nodeId" type="K"/>
4223 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004224 <![CDATA[Creates a new {@link InterfaceNode} and adds it to the graph.
4225
4226 @param nodeId ID for the node.
sameb1d3f8cd2014-10-07 15:32:12 -07004227 @return The new {@link InterfaceNode} instance.]]>
4228 </doc>
4229 </method>
4230 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004231 <![CDATA[Factory interface for {@link InterfaceNode}s. Renderer implementations
4232 will need to provide an implementation for this.
4233
4234 @param <K> The type for node IDs.
sameb1d3f8cd2014-10-07 15:32:12 -07004235 @param <T> The {@link InterfaceNode} sub-type that this factory provides.]]>
4236 </doc>
4237 </interface>
4238 <!-- end interface com.google.inject.grapher.InterfaceNode.Factory -->
4239 <!-- start interface com.google.inject.grapher.NameFactory -->
4240 <interface name="NameFactory" abstract="true"
4241 static="false" final="false" visibility="public"
4242 deprecated="not deprecated">
4243 <method name="getMemberName" return="java.lang.String"
4244 abstract="false" native="false" synchronized="false"
4245 static="false" final="false" visibility="public"
4246 deprecated="not deprecated">
4247 <param name="member" type="java.lang.reflect.Member"/>
4248 </method>
4249 <method name="getClassName" return="java.lang.String"
4250 abstract="false" native="false" synchronized="false"
4251 static="false" final="false" visibility="public"
4252 deprecated="not deprecated">
4253 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4254 </method>
4255 <method name="getInstanceName" return="java.lang.String"
4256 abstract="false" native="false" synchronized="false"
4257 static="false" final="false" visibility="public"
4258 deprecated="not deprecated">
4259 <param name="instance" type="java.lang.Object"/>
4260 </method>
4261 <method name="getAnnotationName" return="java.lang.String"
4262 abstract="false" native="false" synchronized="false"
4263 static="false" final="false" visibility="public"
4264 deprecated="not deprecated">
4265 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4266 </method>
4267 <method name="getSourceName" return="java.lang.String"
4268 abstract="false" native="false" synchronized="false"
4269 static="false" final="false" visibility="public"
4270 deprecated="not deprecated">
4271 <param name="source" type="java.lang.Object"/>
4272 </method>
4273 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004274 <![CDATA[Interface for a service that provides nice {@link String}s that we can
4275 display in the graph for the types that come up in {@link Binding}s.
4276
sameb1d3f8cd2014-10-07 15:32:12 -07004277 @author phopkins@gmail.com (Pete Hopkins)]]>
4278 </doc>
4279 </interface>
4280 <!-- end interface com.google.inject.grapher.NameFactory -->
4281 <!-- start interface com.google.inject.grapher.NodeAliasFactory -->
4282 <interface name="NodeAliasFactory" abstract="true"
4283 static="false" final="false" visibility="public"
4284 deprecated="not deprecated">
4285 <method name="newAlias"
4286 abstract="false" native="false" synchronized="false"
4287 static="false" final="false" visibility="public"
4288 deprecated="not deprecated">
4289 <param name="fromId" type="K"/>
4290 <param name="toId" type="K"/>
4291 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004292 <![CDATA[Makes edges that would point to {@code fromId} point to
sameb1d3f8cd2014-10-07 15:32:12 -07004293 {@code toId} instead.]]>
4294 </doc>
4295 </method>
4296 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004297 <![CDATA[Factory for aliasing one node ID to another. Used when we don't want to
4298 render {@link Key}s from {@link Binding}s that are not interesting.
4299
sameb1d3f8cd2014-10-07 15:32:12 -07004300 @author phopkins@gmail.com (Pete Hopkins)]]>
4301 </doc>
4302 </interface>
4303 <!-- end interface com.google.inject.grapher.NodeAliasFactory -->
4304 <!-- start interface com.google.inject.grapher.NodeIdFactory -->
4305 <interface name="NodeIdFactory" abstract="true"
4306 static="false" final="false" visibility="public"
4307 deprecated="not deprecated">
4308 <method name="getClassNodeId" return="K"
4309 abstract="false" native="false" synchronized="false"
4310 static="false" final="false" visibility="public"
4311 deprecated="not deprecated">
4312 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4313 </method>
4314 <method name="getInstanceNodeId" return="K"
4315 abstract="false" native="false" synchronized="false"
4316 static="false" final="false" visibility="public"
4317 deprecated="not deprecated">
4318 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4319 </method>
4320 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004321 <![CDATA[Factory for abstract identifiers for elements on the graph. Most graph nodes
4322 will correspond directly to {@link Key}s, but we do this for additional
4323 flexibility and because instances do not have separate {@link Key}s from the
4324 interfaces they are bound to.
4325 <p>
4326 Node IDs are treated as opaque values by {@link GraphingVisitor} and the
4327 other classes in this package.
4328
4329 @author phopkins@gmail.com (Pete Hopkins)
4330
sameb1d3f8cd2014-10-07 15:32:12 -07004331 @param <K> The type for node IDs.]]>
4332 </doc>
4333 </interface>
4334 <!-- end interface com.google.inject.grapher.NodeIdFactory -->
4335 <!-- start interface com.google.inject.grapher.Renderer -->
4336 <interface name="Renderer" abstract="true"
4337 static="false" final="false" visibility="public"
4338 deprecated="not deprecated">
4339 <method name="render"
4340 abstract="false" native="false" synchronized="false"
4341 static="false" final="false" visibility="public"
4342 deprecated="not deprecated">
4343 <exception name="IOException" type="java.io.IOException"/>
4344 </method>
4345 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004346 <![CDATA[Interface for the service that renders the graph. It is assumed that the
4347 implementations for {@link BindingEdge.Factory},
4348 {@link ImplementationNode.Factory}, etc. will have direct access to the
4349 internals of the {@link Renderer} implementation, so the only external
4350 interface needed is the {@link #render()} call that {@link InjectorGrapher}
4351 calls when it's done.
4352
sameb1d3f8cd2014-10-07 15:32:12 -07004353 @author phopkins@gmail.com (Pete Hopkins)]]>
4354 </doc>
4355 </interface>
4356 <!-- end interface com.google.inject.grapher.Renderer -->
4357 <!-- start class com.google.inject.grapher.ShortNameFactory -->
4358 <class name="ShortNameFactory" extends="java.lang.Object"
4359 abstract="false"
4360 static="false" final="false" visibility="public"
4361 deprecated="not deprecated">
4362 <implements name="com.google.inject.grapher.NameFactory"/>
4363 <constructor name="ShortNameFactory"
4364 static="false" final="false" visibility="public"
4365 deprecated="not deprecated">
4366 </constructor>
4367 <method name="getMemberName" return="java.lang.String"
4368 abstract="false" native="false" synchronized="false"
4369 static="false" final="false" visibility="public"
4370 deprecated="not deprecated">
4371 <param name="member" type="java.lang.reflect.Member"/>
4372 </method>
4373 <method name="getAnnotationName" return="java.lang.String"
4374 abstract="false" native="false" synchronized="false"
4375 static="false" final="false" visibility="public"
4376 deprecated="not deprecated">
4377 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4378 </method>
4379 <method name="getClassName" return="java.lang.String"
4380 abstract="false" native="false" synchronized="false"
4381 static="false" final="false" visibility="public"
4382 deprecated="not deprecated">
4383 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4384 </method>
4385 <method name="getInstanceName" return="java.lang.String"
4386 abstract="false" native="false" synchronized="false"
4387 static="false" final="false" visibility="public"
4388 deprecated="not deprecated">
4389 <param name="instance" type="java.lang.Object"/>
4390 </method>
4391 <method name="getSourceName" return="java.lang.String"
4392 abstract="false" native="false" synchronized="false"
4393 static="false" final="false" visibility="public"
4394 deprecated="not deprecated">
4395 <param name="source" type="java.lang.Object"/>
4396 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004397 <![CDATA[Returns a name for a Guice "source" object. This will typically be either
4398 a {@link StackTraceElement} for when the binding is made to the instance,
sameb1d3f8cd2014-10-07 15:32:12 -07004399 or a {@link Method} when a provider method is used.]]>
4400 </doc>
4401 </method>
4402 <method name="getFileString" return="java.lang.String"
4403 abstract="false" native="false" synchronized="false"
4404 static="false" final="false" visibility="protected"
4405 deprecated="not deprecated">
4406 <param name="stackTraceElement" type="java.lang.StackTraceElement"/>
4407 </method>
4408 <method name="getMethodString" return="java.lang.String"
4409 abstract="false" native="false" synchronized="false"
4410 static="false" final="false" visibility="protected"
4411 deprecated="not deprecated">
4412 <param name="method" type="java.lang.reflect.Method"/>
4413 </method>
4414 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004415 <![CDATA[Reasonable implementation for {@link NameFactory}. Mostly takes various
4416 {@link Object#toString()}s and strips package names out of them so that
4417 they'll fit on the graph.
4418
sameb1d3f8cd2014-10-07 15:32:12 -07004419 @author phopkins@gmail.com (Pete Hopkins)]]>
4420 </doc>
4421 </class>
4422 <!-- end class com.google.inject.grapher.ShortNameFactory -->
4423 <!-- start class com.google.inject.grapher.StringNodeIdFactory -->
4424 <class name="StringNodeIdFactory" extends="java.lang.Object"
4425 abstract="false"
4426 static="false" final="false" visibility="public"
4427 deprecated="not deprecated">
4428 <implements name="com.google.inject.grapher.NodeIdFactory&lt;java.lang.String&gt;"/>
4429 <constructor name="StringNodeIdFactory"
4430 static="false" final="false" visibility="public"
4431 deprecated="not deprecated">
4432 </constructor>
4433 <method name="getClassNodeId" return="java.lang.String"
4434 abstract="false" native="false" synchronized="false"
4435 static="false" final="false" visibility="public"
4436 deprecated="not deprecated">
4437 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4438 </method>
4439 <method name="getInstanceNodeId" return="java.lang.String"
4440 abstract="false" native="false" synchronized="false"
4441 static="false" final="false" visibility="public"
4442 deprecated="not deprecated">
4443 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4444 </method>
4445 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004446 <![CDATA[{@link IdFactory} implementation that for {@link String} node IDs. The IDs
4447 are comprised of letters, numbers and underscores.
4448
sameb1d3f8cd2014-10-07 15:32:12 -07004449 @author phopkins@gmail.com (Pete Hopkins)]]>
4450 </doc>
4451 </class>
4452 <!-- end class com.google.inject.grapher.StringNodeIdFactory -->
4453 <!-- start class com.google.inject.grapher.TransitiveDependencyVisitor -->
4454 <class name="TransitiveDependencyVisitor" extends="java.lang.Object"
4455 abstract="false"
4456 static="false" final="false" visibility="public"
4457 deprecated="not deprecated">
4458 <implements name="com.google.inject.spi.BindingTargetVisitor&lt;java.lang.Object, java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;&gt;"/>
4459 <constructor name="TransitiveDependencyVisitor"
4460 static="false" final="false" visibility="public"
4461 deprecated="not deprecated">
4462 </constructor>
4463 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4464 abstract="false" native="false" synchronized="false"
4465 static="false" final="false" visibility="public"
4466 deprecated="not deprecated">
4467 <param name="binding" type="com.google.inject.spi.ConstructorBinding&lt;?&gt;"/>
4468 </method>
4469 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4470 abstract="false" native="false" synchronized="false"
4471 static="false" final="false" visibility="public"
4472 deprecated="not deprecated">
4473 <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding&lt;?&gt;"/>
4474 </method>
4475 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4476 abstract="false" native="false" synchronized="false"
4477 static="false" final="false" visibility="public"
4478 deprecated="not deprecated">
4479 <param name="binding" type="com.google.inject.spi.ExposedBinding&lt;?&gt;"/>
4480 </method>
4481 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4482 abstract="false" native="false" synchronized="false"
4483 static="false" final="false" visibility="public"
4484 deprecated="not deprecated">
4485 <param name="binding" type="com.google.inject.spi.InstanceBinding&lt;?&gt;"/>
4486 </method>
4487 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4488 abstract="false" native="false" synchronized="false"
4489 static="false" final="false" visibility="public"
4490 deprecated="not deprecated">
4491 <param name="binding" type="com.google.inject.spi.LinkedKeyBinding&lt;?&gt;"/>
4492 </method>
4493 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4494 abstract="false" native="false" synchronized="false"
4495 static="false" final="false" visibility="public"
4496 deprecated="not deprecated">
4497 <param name="binding" type="com.google.inject.spi.ProviderBinding&lt;?&gt;"/>
4498 </method>
4499 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4500 abstract="false" native="false" synchronized="false"
4501 static="false" final="false" visibility="public"
4502 deprecated="not deprecated">
4503 <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;?&gt;"/>
4504 </method>
4505 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4506 abstract="false" native="false" synchronized="false"
4507 static="false" final="false" visibility="public"
4508 deprecated="not deprecated">
4509 <param name="binding" type="com.google.inject.spi.ProviderKeyBinding&lt;?&gt;"/>
4510 </method>
4511 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4512 abstract="false" native="false" synchronized="false"
4513 static="false" final="false" visibility="public"
4514 deprecated="not deprecated">
4515 <param name="binding" type="com.google.inject.spi.UntargettedBinding&lt;?&gt;"/>
4516 </method>
4517 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004518 <![CDATA[{@link BindingTargetVisitor} that returns a {@link Collection} of the
4519 {@link Key}s of each {@link Binding}'s dependencies. Used by
4520 {@link InjectorGropher} to walk the dependency graph from a starting set of
4521 {@link Binding}s.
4522
sameb1d3f8cd2014-10-07 15:32:12 -07004523 @author phopkins@gmail.com (Pete Hopkins)]]>
4524 </doc>
4525 </class>
4526 <!-- end class com.google.inject.grapher.TransitiveDependencyVisitor -->
4527</package>
4528<package name="com.google.inject.grapher.graphviz">
4529 <!-- start class com.google.inject.grapher.graphviz.ArrowType -->
4530 <class name="ArrowType" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"
4531 abstract="false"
4532 static="false" final="true" visibility="public"
4533 deprecated="not deprecated">
4534 <method name="values" return="com.google.inject.grapher.graphviz.ArrowType[]"
4535 abstract="false" native="false" synchronized="false"
4536 static="true" final="false" visibility="public"
4537 deprecated="not deprecated">
4538 </method>
4539 <method name="valueOf" return="com.google.inject.grapher.graphviz.ArrowType"
4540 abstract="false" native="false" synchronized="false"
4541 static="true" final="false" visibility="public"
4542 deprecated="not deprecated">
4543 <param name="name" type="java.lang.String"/>
4544 </method>
4545 <method name="toString" return="java.lang.String"
4546 abstract="false" native="false" synchronized="false"
4547 static="false" final="false" visibility="public"
4548 deprecated="not deprecated">
4549 </method>
4550 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004551 <![CDATA[Arrow symbols that are available from Graphviz. These can be composed by
4552 concatenation to make double arrows and such.
4553 <p>
4554 See: http://www.graphviz.org/doc/info/arrows.html
4555
sameb1d3f8cd2014-10-07 15:32:12 -07004556 @author phopkins@gmail.com (Pete Hopkins)]]>
4557 </doc>
4558 </class>
4559 <!-- end class com.google.inject.grapher.graphviz.ArrowType -->
4560 <!-- start class com.google.inject.grapher.graphviz.BindingEdgeFactory -->
4561 <class name="BindingEdgeFactory" extends="java.lang.Object"
4562 abstract="false"
4563 static="false" final="false" visibility="public"
4564 deprecated="not deprecated">
4565 <implements name="com.google.inject.grapher.BindingEdge.Factory&lt;java.lang.String, com.google.inject.grapher.BindingEdge&lt;java.lang.String&gt;&gt;"/>
4566 <constructor name="BindingEdgeFactory" type="com.google.inject.grapher.graphviz.GraphvizRenderer"
4567 static="false" final="false" visibility="public"
4568 deprecated="not deprecated">
4569 </constructor>
4570 <method name="newBindingEdge" return="com.google.inject.grapher.BindingEdge&lt;java.lang.String&gt;"
4571 abstract="false" native="false" synchronized="false"
4572 static="false" final="false" visibility="public"
4573 deprecated="not deprecated">
4574 <param name="fromId" type="java.lang.String"/>
4575 <param name="toId" type="java.lang.String"/>
4576 </method>
4577 <method name="newAdaptor" return="com.google.inject.grapher.graphviz.BindingEdgeFactory.GraphvizEdgeAdaptor"
4578 abstract="false" native="false" synchronized="false"
4579 static="false" final="false" visibility="protected"
4580 deprecated="not deprecated">
4581 <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
4582 </method>
4583 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004584 <![CDATA[Graphviz-specific implementation of {@link BindingEdge.Factory}. Uses a
4585 {@link GraphvizEdgeAdaptor} to delegate to a {@link GraphvizEdge}.
4586
sameb1d3f8cd2014-10-07 15:32:12 -07004587 @author phopkins@gmail.com (Pete Hopkins)]]>
4588 </doc>
4589 </class>
4590 <!-- end class com.google.inject.grapher.graphviz.BindingEdgeFactory -->
4591 <!-- start class com.google.inject.grapher.graphviz.BindingEdgeFactory.GraphvizEdgeAdaptor -->
4592 <class name="BindingEdgeFactory.GraphvizEdgeAdaptor" extends="java.lang.Object"
4593 abstract="false"
4594 static="false" final="false" visibility="protected"
4595 deprecated="not deprecated">
4596 <implements name="com.google.inject.grapher.BindingEdge&lt;java.lang.String&gt;"/>
4597 <constructor name="BindingEdgeFactory.GraphvizEdgeAdaptor" type="com.google.inject.grapher.graphviz.GraphvizEdge"
4598 static="false" final="false" visibility="public"
4599 deprecated="not deprecated">
4600 </constructor>
4601 <method name="setType"
4602 abstract="false" native="false" synchronized="false"
4603 static="false" final="false" visibility="public"
4604 deprecated="not deprecated">
4605 <param name="type" type="com.google.inject.grapher.BindingEdge.Type"/>
4606 </method>
4607 <field name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"
4608 transient="false" volatile="false"
4609 static="false" final="true" visibility="protected"
4610 deprecated="not deprecated">
4611 </field>
4612 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004613 <![CDATA[Adaptor class that converts {@link BindingEdge} methods to display
sameb1d3f8cd2014-10-07 15:32:12 -07004614 operations on a {@link GraphvizEdge}.]]>
4615 </doc>
4616 </class>
4617 <!-- end class com.google.inject.grapher.graphviz.BindingEdgeFactory.GraphvizEdgeAdaptor -->
4618 <!-- start class com.google.inject.grapher.graphviz.CompassPoint -->
4619 <class name="CompassPoint" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.CompassPoint&gt;"
4620 abstract="false"
4621 static="false" final="true" visibility="public"
4622 deprecated="not deprecated">
4623 <method name="values" return="com.google.inject.grapher.graphviz.CompassPoint[]"
4624 abstract="false" native="false" synchronized="false"
4625 static="true" final="false" visibility="public"
4626 deprecated="not deprecated">
4627 </method>
4628 <method name="valueOf" return="com.google.inject.grapher.graphviz.CompassPoint"
4629 abstract="false" native="false" synchronized="false"
4630 static="true" final="false" visibility="public"
4631 deprecated="not deprecated">
4632 <param name="name" type="java.lang.String"/>
4633 </method>
4634 <method name="toString" return="java.lang.String"
4635 abstract="false" native="false" synchronized="false"
4636 static="false" final="false" visibility="public"
4637 deprecated="not deprecated">
4638 </method>
4639 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004640 <![CDATA[Enum for the "compass point" values used to control where edge
4641 end points appear on the graph.
4642 <p>
4643 See: http://www.graphviz.org/doc/info/attrs.html#k:portPos
4644
sameb1d3f8cd2014-10-07 15:32:12 -07004645 @author phopkins@gmail.com (Pete Hopkins)]]>
4646 </doc>
4647 </class>
4648 <!-- end class com.google.inject.grapher.graphviz.CompassPoint -->
4649 <!-- start class com.google.inject.grapher.graphviz.DependencyEdgeFactory -->
4650 <class name="DependencyEdgeFactory" extends="java.lang.Object"
4651 abstract="false"
4652 static="false" final="false" visibility="public"
4653 deprecated="not deprecated">
4654 <implements name="com.google.inject.grapher.DependencyEdge.Factory&lt;java.lang.String, com.google.inject.grapher.DependencyEdge&lt;java.lang.String&gt;&gt;"/>
4655 <constructor name="DependencyEdgeFactory" type="com.google.inject.grapher.graphviz.GraphvizRenderer, com.google.inject.grapher.graphviz.PortIdFactory"
4656 static="false" final="false" visibility="public"
4657 deprecated="not deprecated">
4658 </constructor>
4659 <method name="newDependencyEdge" return="com.google.inject.grapher.DependencyEdge&lt;java.lang.String&gt;"
4660 abstract="false" native="false" synchronized="false"
4661 static="false" final="false" visibility="public"
4662 deprecated="not deprecated">
4663 <param name="fromId" type="java.lang.String"/>
4664 <param name="fromPoint" type="com.google.inject.spi.InjectionPoint"/>
4665 <param name="toId" type="java.lang.String"/>
4666 </method>
4667 <method name="newAdaptor" return="com.google.inject.grapher.graphviz.DependencyEdgeFactory.GraphvizEdgeAdaptor"
4668 abstract="false" native="false" synchronized="false"
4669 static="false" final="false" visibility="protected"
4670 deprecated="not deprecated">
4671 <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
4672 </method>
4673 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004674 <![CDATA[Graphviz-specific implementation of {@link DependencyEdge.Factory}. Uses a
4675 {@link GraphvizEdgeAdaptor} to delegate to a {@link GraphvizEdge}.
4676
sameb1d3f8cd2014-10-07 15:32:12 -07004677 @author phopkins@gmail.com (Pete Hopkins)]]>
4678 </doc>
4679 </class>
4680 <!-- end class com.google.inject.grapher.graphviz.DependencyEdgeFactory -->
4681 <!-- start class com.google.inject.grapher.graphviz.DependencyEdgeFactory.GraphvizEdgeAdaptor -->
4682 <class name="DependencyEdgeFactory.GraphvizEdgeAdaptor" extends="java.lang.Object"
4683 abstract="false"
4684 static="false" final="false" visibility="protected"
4685 deprecated="not deprecated">
4686 <implements name="com.google.inject.grapher.DependencyEdge&lt;java.lang.String&gt;"/>
4687 <constructor name="DependencyEdgeFactory.GraphvizEdgeAdaptor" type="com.google.inject.grapher.graphviz.GraphvizEdge"
4688 static="false" final="false" visibility="public"
4689 deprecated="not deprecated">
4690 </constructor>
4691 <field name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"
4692 transient="false" volatile="false"
4693 static="false" final="true" visibility="protected"
4694 deprecated="not deprecated">
4695 </field>
4696 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004697 <![CDATA[Adaptor class that converts {@link DependencyEdge} methods to display
sameb1d3f8cd2014-10-07 15:32:12 -07004698 operations on a {@link GraphvizEdge}.]]>
4699 </doc>
4700 </class>
4701 <!-- end class com.google.inject.grapher.graphviz.DependencyEdgeFactory.GraphvizEdgeAdaptor -->
4702 <!-- start class com.google.inject.grapher.graphviz.EdgeStyle -->
4703 <class name="EdgeStyle" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.EdgeStyle&gt;"
4704 abstract="false"
4705 static="false" final="true" visibility="public"
4706 deprecated="not deprecated">
4707 <method name="values" return="com.google.inject.grapher.graphviz.EdgeStyle[]"
4708 abstract="false" native="false" synchronized="false"
4709 static="true" final="false" visibility="public"
4710 deprecated="not deprecated">
4711 </method>
4712 <method name="valueOf" return="com.google.inject.grapher.graphviz.EdgeStyle"
4713 abstract="false" native="false" synchronized="false"
4714 static="true" final="false" visibility="public"
4715 deprecated="not deprecated">
4716 <param name="name" type="java.lang.String"/>
4717 </method>
4718 <method name="toString" return="java.lang.String"
4719 abstract="false" native="false" synchronized="false"
4720 static="false" final="false" visibility="public"
4721 deprecated="not deprecated">
4722 </method>
4723 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004724 <![CDATA[Styles for edges.
4725 <p>
4726 See: http://www.graphviz.org/doc/info/attrs.html#k:style
4727
sameb1d3f8cd2014-10-07 15:32:12 -07004728 @author phopkins@gmail.com (Pete Hopkins)]]>
4729 </doc>
4730 </class>
4731 <!-- end class com.google.inject.grapher.graphviz.EdgeStyle -->
4732 <!-- start class com.google.inject.grapher.graphviz.GraphvizEdge -->
4733 <class name="GraphvizEdge" extends="java.lang.Object"
4734 abstract="false"
4735 static="false" final="false" visibility="public"
4736 deprecated="not deprecated">
4737 <constructor name="GraphvizEdge" type="java.lang.String, java.lang.String"
4738 static="false" final="false" visibility="public"
4739 deprecated="not deprecated">
4740 </constructor>
4741 <method name="getHeadNodeId" return="java.lang.String"
4742 abstract="false" native="false" synchronized="false"
4743 static="false" final="false" visibility="public"
4744 deprecated="not deprecated">
4745 </method>
4746 <method name="getHeadPortId" return="java.lang.String"
4747 abstract="false" native="false" synchronized="false"
4748 static="false" final="false" visibility="public"
4749 deprecated="not deprecated">
4750 </method>
4751 <method name="setHeadPortId"
4752 abstract="false" native="false" synchronized="false"
4753 static="false" final="false" visibility="public"
4754 deprecated="not deprecated">
4755 <param name="headPortId" type="java.lang.String"/>
4756 </method>
4757 <method name="getHeadCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint"
4758 abstract="false" native="false" synchronized="false"
4759 static="false" final="false" visibility="public"
4760 deprecated="not deprecated">
4761 </method>
4762 <method name="setHeadCompassPoint"
4763 abstract="false" native="false" synchronized="false"
4764 static="false" final="false" visibility="public"
4765 deprecated="not deprecated">
4766 <param name="headCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/>
4767 </method>
4768 <method name="getArrowHead" return="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"
4769 abstract="false" native="false" synchronized="false"
4770 static="false" final="false" visibility="public"
4771 deprecated="not deprecated">
4772 </method>
4773 <method name="setArrowHead"
4774 abstract="false" native="false" synchronized="false"
4775 static="false" final="false" visibility="public"
4776 deprecated="not deprecated">
4777 <param name="arrowHead" type="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"/>
4778 </method>
4779 <method name="getTailNodeId" return="java.lang.String"
4780 abstract="false" native="false" synchronized="false"
4781 static="false" final="false" visibility="public"
4782 deprecated="not deprecated">
4783 </method>
4784 <method name="getTailPortId" return="java.lang.String"
4785 abstract="false" native="false" synchronized="false"
4786 static="false" final="false" visibility="public"
4787 deprecated="not deprecated">
4788 </method>
4789 <method name="setTailPortId"
4790 abstract="false" native="false" synchronized="false"
4791 static="false" final="false" visibility="public"
4792 deprecated="not deprecated">
4793 <param name="tailPortId" type="java.lang.String"/>
4794 </method>
4795 <method name="getTailCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint"
4796 abstract="false" native="false" synchronized="false"
4797 static="false" final="false" visibility="public"
4798 deprecated="not deprecated">
4799 </method>
4800 <method name="setTailCompassPoint"
4801 abstract="false" native="false" synchronized="false"
4802 static="false" final="false" visibility="public"
4803 deprecated="not deprecated">
4804 <param name="tailCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/>
4805 </method>
4806 <method name="getArrowTail" return="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"
4807 abstract="false" native="false" synchronized="false"
4808 static="false" final="false" visibility="public"
4809 deprecated="not deprecated">
4810 </method>
4811 <method name="setArrowTail"
4812 abstract="false" native="false" synchronized="false"
4813 static="false" final="false" visibility="public"
4814 deprecated="not deprecated">
4815 <param name="arrowTail" type="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"/>
4816 </method>
4817 <method name="getStyle" return="com.google.inject.grapher.graphviz.EdgeStyle"
4818 abstract="false" native="false" synchronized="false"
4819 static="false" final="false" visibility="public"
4820 deprecated="not deprecated">
4821 </method>
4822 <method name="setStyle"
4823 abstract="false" native="false" synchronized="false"
4824 static="false" final="false" visibility="public"
4825 deprecated="not deprecated">
4826 <param name="style" type="com.google.inject.grapher.graphviz.EdgeStyle"/>
4827 </method>
4828 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004829 <![CDATA[Data object to encapsulate the attributes of Graphviz edges that we're
4830 interested in drawing.
4831
sameb1d3f8cd2014-10-07 15:32:12 -07004832 @author phopkins@gmail.com (Pete Hopkins)]]>
4833 </doc>
4834 </class>
4835 <!-- end class com.google.inject.grapher.graphviz.GraphvizEdge -->
4836 <!-- start class com.google.inject.grapher.graphviz.GraphvizModule -->
4837 <class name="GraphvizModule" extends="com.google.inject.AbstractModule"
4838 abstract="false"
4839 static="false" final="false" visibility="public"
4840 deprecated="not deprecated">
4841 <constructor name="GraphvizModule"
4842 static="false" final="false" visibility="public"
4843 deprecated="not deprecated">
4844 </constructor>
4845 <method name="configure"
4846 abstract="false" native="false" synchronized="false"
4847 static="false" final="false" visibility="protected"
4848 deprecated="not deprecated">
4849 </method>
4850 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004851 <![CDATA[Module that provides {@link GraphvizRenderer} as the {@link Renderer} and
4852 binds the other Graphviz factories.
4853
sameb1d3f8cd2014-10-07 15:32:12 -07004854 @author phopkins@gmail.com (Pete Hopkins)]]>
4855 </doc>
4856 </class>
4857 <!-- end class com.google.inject.grapher.graphviz.GraphvizModule -->
4858 <!-- start class com.google.inject.grapher.graphviz.GraphvizNode -->
4859 <class name="GraphvizNode" extends="java.lang.Object"
4860 abstract="false"
4861 static="false" final="false" visibility="public"
4862 deprecated="not deprecated">
4863 <constructor name="GraphvizNode" type="java.lang.String"
4864 static="false" final="false" visibility="public"
4865 deprecated="not deprecated">
4866 </constructor>
4867 <method name="getNodeId" return="java.lang.String"
4868 abstract="false" native="false" synchronized="false"
4869 static="false" final="false" visibility="public"
4870 deprecated="not deprecated">
4871 </method>
4872 <method name="getShape" return="com.google.inject.grapher.graphviz.NodeShape"
4873 abstract="false" native="false" synchronized="false"
4874 static="false" final="false" visibility="public"
4875 deprecated="not deprecated">
4876 </method>
4877 <method name="setShape"
4878 abstract="false" native="false" synchronized="false"
4879 static="false" final="false" visibility="public"
4880 deprecated="not deprecated">
4881 <param name="shape" type="com.google.inject.grapher.graphviz.NodeShape"/>
4882 </method>
4883 <method name="getStyle" return="com.google.inject.grapher.graphviz.NodeStyle"
4884 abstract="false" native="false" synchronized="false"
4885 static="false" final="false" visibility="public"
4886 deprecated="not deprecated">
4887 </method>
4888 <method name="setStyle"
4889 abstract="false" native="false" synchronized="false"
4890 static="false" final="false" visibility="public"
4891 deprecated="not deprecated">
4892 <param name="style" type="com.google.inject.grapher.graphviz.NodeStyle"/>
4893 </method>
4894 <method name="getTitle" return="java.lang.String"
4895 abstract="false" native="false" synchronized="false"
4896 static="false" final="false" visibility="public"
4897 deprecated="not deprecated">
4898 </method>
4899 <method name="setTitle"
4900 abstract="false" native="false" synchronized="false"
4901 static="false" final="false" visibility="public"
4902 deprecated="not deprecated">
4903 <param name="title" type="java.lang.String"/>
4904 </method>
4905 <method name="getSubtitles" return="java.util.List&lt;java.lang.String&gt;"
4906 abstract="false" native="false" synchronized="false"
4907 static="false" final="false" visibility="public"
4908 deprecated="not deprecated">
4909 </method>
4910 <method name="addSubtitle"
4911 abstract="false" native="false" synchronized="false"
4912 static="false" final="false" visibility="public"
4913 deprecated="not deprecated">
4914 <param name="position" type="int"/>
4915 <param name="subtitle" type="java.lang.String"/>
4916 </method>
4917 <method name="getHeaderTextColor" return="java.lang.String"
4918 abstract="false" native="false" synchronized="false"
4919 static="false" final="false" visibility="public"
4920 deprecated="not deprecated">
4921 </method>
4922 <method name="setHeaderTextColor"
4923 abstract="false" native="false" synchronized="false"
4924 static="false" final="false" visibility="public"
4925 deprecated="not deprecated">
4926 <param name="headerTextColor" type="java.lang.String"/>
4927 </method>
4928 <method name="getHeaderBackgroundColor" return="java.lang.String"
4929 abstract="false" native="false" synchronized="false"
4930 static="false" final="false" visibility="public"
4931 deprecated="not deprecated">
4932 </method>
4933 <method name="setHeaderBackgroundColor"
4934 abstract="false" native="false" synchronized="false"
4935 static="false" final="false" visibility="public"
4936 deprecated="not deprecated">
4937 <param name="headerBackgroundColor" type="java.lang.String"/>
4938 </method>
4939 <method name="addField"
4940 abstract="false" native="false" synchronized="false"
4941 static="false" final="false" visibility="public"
4942 deprecated="not deprecated">
4943 <param name="portId" type="java.lang.String"/>
4944 <param name="title" type="java.lang.String"/>
4945 </method>
4946 <method name="getFields" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
4947 abstract="false" native="false" synchronized="false"
4948 static="false" final="false" visibility="public"
4949 deprecated="not deprecated">
4950 </method>
4951 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004952 <![CDATA[Data object to encapsulate the attributes of Graphviz nodes that we're
4953 interested in drawing.
4954
sameb1d3f8cd2014-10-07 15:32:12 -07004955 @author phopkins@gmail.com (Pete Hopkins)]]>
4956 </doc>
4957 </class>
4958 <!-- end class com.google.inject.grapher.graphviz.GraphvizNode -->
4959 <!-- start class com.google.inject.grapher.graphviz.GraphvizRenderer -->
4960 <class name="GraphvizRenderer" extends="java.lang.Object"
4961 abstract="false"
4962 static="false" final="false" visibility="public"
4963 deprecated="not deprecated">
4964 <implements name="com.google.inject.grapher.Renderer"/>
4965 <implements name="com.google.inject.grapher.NodeAliasFactory&lt;java.lang.String&gt;"/>
4966 <constructor name="GraphvizRenderer"
4967 static="false" final="false" visibility="public"
4968 deprecated="not deprecated">
4969 </constructor>
4970 <method name="setOut" return="com.google.inject.grapher.graphviz.GraphvizRenderer"
4971 abstract="false" native="false" synchronized="false"
4972 static="false" final="false" visibility="public"
4973 deprecated="not deprecated">
4974 <param name="out" type="java.io.PrintWriter"/>
4975 </method>
4976 <method name="setRankdir" return="com.google.inject.grapher.graphviz.GraphvizRenderer"
4977 abstract="false" native="false" synchronized="false"
4978 static="false" final="false" visibility="public"
4979 deprecated="not deprecated">
4980 <param name="rankdir" type="java.lang.String"/>
4981 </method>
4982 <method name="addNode"
4983 abstract="false" native="false" synchronized="false"
4984 static="false" final="false" visibility="public"
4985 deprecated="not deprecated">
4986 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
4987 </method>
4988 <method name="addEdge"
4989 abstract="false" native="false" synchronized="false"
4990 static="false" final="false" visibility="public"
4991 deprecated="not deprecated">
4992 <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
4993 </method>
4994 <method name="newAlias"
4995 abstract="false" native="false" synchronized="false"
4996 static="false" final="false" visibility="public"
4997 deprecated="not deprecated">
4998 <param name="fromId" type="java.lang.String"/>
4999 <param name="toId" type="java.lang.String"/>
5000 </method>
5001 <method name="resolveAlias" return="java.lang.String"
5002 abstract="false" native="false" synchronized="false"
5003 static="false" final="false" visibility="protected"
5004 deprecated="not deprecated">
5005 <param name="id" type="java.lang.String"/>
5006 </method>
5007 <method name="render"
5008 abstract="false" native="false" synchronized="false"
5009 static="false" final="false" visibility="public"
5010 deprecated="not deprecated">
5011 </method>
5012 <method name="getGraphAttributes" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
5013 abstract="false" native="false" synchronized="false"
5014 static="false" final="false" visibility="protected"
5015 deprecated="not deprecated">
5016 </method>
5017 <method name="start"
5018 abstract="false" native="false" synchronized="false"
5019 static="false" final="false" visibility="protected"
5020 deprecated="not deprecated">
5021 </method>
5022 <method name="finish"
5023 abstract="false" native="false" synchronized="false"
5024 static="false" final="false" visibility="protected"
5025 deprecated="not deprecated">
5026 </method>
5027 <method name="renderNode"
5028 abstract="false" native="false" synchronized="false"
5029 static="false" final="false" visibility="protected"
5030 deprecated="not deprecated">
5031 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
5032 </method>
5033 <method name="getNodeAttributes" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
5034 abstract="false" native="false" synchronized="false"
5035 static="false" final="false" visibility="protected"
5036 deprecated="not deprecated">
5037 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
5038 </method>
5039 <method name="getNodeLabel" return="java.lang.String"
5040 abstract="false" native="false" synchronized="false"
5041 static="false" final="false" visibility="protected"
5042 deprecated="not deprecated">
5043 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
5044 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00005045 <![CDATA[Creates the "label" for a node. This is a string of HTML that defines a
5046 table with a heading at the top and (in the case of
sameb1d3f8cd2014-10-07 15:32:12 -07005047 {@link ImplementationNode}s) rows for each of the member fields.]]>
5048 </doc>
5049 </method>
5050 <method name="renderEdge"
5051 abstract="false" native="false" synchronized="false"
5052 static="false" final="false" visibility="protected"
5053 deprecated="not deprecated">
5054 <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
5055 </method>
5056 <method name="getEdgeAttributes" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
5057 abstract="false" native="false" synchronized="false"
5058 static="false" final="false" visibility="protected"
5059 deprecated="not deprecated">
5060 <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
5061 </method>
5062 <method name="getArrowString" return="java.lang.String"
5063 abstract="false" native="false" synchronized="false"
5064 static="false" final="false" visibility="protected"
5065 deprecated="not deprecated">
5066 <param name="arrows" type="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"/>
5067 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00005068 <![CDATA[Turns a {@link List} of {@link ArrowType}s into a {@link String} that
5069 represents combining them. With Graphviz, that just means concatenating
sameb1d3f8cd2014-10-07 15:32:12 -07005070 them.]]>
5071 </doc>
5072 </method>
5073 <method name="getEdgeEndPoint" return="java.lang.String"
5074 abstract="false" native="false" synchronized="false"
5075 static="false" final="false" visibility="protected"
5076 deprecated="not deprecated">
5077 <param name="nodeId" type="java.lang.String"/>
5078 <param name="portId" type="java.lang.String"/>
5079 <param name="compassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/>
5080 </method>
5081 <method name="htmlEscape" return="java.lang.String"
5082 abstract="false" native="false" synchronized="false"
5083 static="false" final="false" visibility="protected"
5084 deprecated="not deprecated">
5085 <param name="str" type="java.lang.String"/>
5086 </method>
5087 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00005088 <![CDATA[{@link Renderer} implementation that writes out a Graphviz DOT file of the
5089 graph. Bound in {@link GraphvizModule}.
5090 <p>
5091 Specify the {@link PrintWriter} to output to with
5092 {@link #setOut(PrintWriter)}.
5093
sameb1d3f8cd2014-10-07 15:32:12 -07005094 @author phopkins@gmail.com (Pete Hopkins)]]>
5095 </doc>
5096 </class>
5097 <!-- end class com.google.inject.grapher.graphviz.GraphvizRenderer -->
5098 <!-- start class com.google.inject.grapher.graphviz.ImplementationNodeFactory -->
5099 <class name="ImplementationNodeFactory" extends="java.lang.Object"
5100 abstract="false"
5101 static="false" final="false" visibility="public"
5102 deprecated="not deprecated">
5103 <implements name="com.google.inject.grapher.ImplementationNode.Factory&lt;java.lang.String, com.google.inject.grapher.ImplementationNode&lt;java.lang.String&gt;&gt;"/>
5104 <constructor name="ImplementationNodeFactory" type="com.google.inject.grapher.graphviz.GraphvizRenderer, com.google.inject.grapher.NameFactory, com.google.inject.grapher.graphviz.PortIdFactory"
5105 static="false" final="false" visibility="public"
5106 deprecated="not deprecated">
5107 </constructor>
5108 <method name="newImplementationNode" return="com.google.inject.grapher.ImplementationNode&lt;java.lang.String&gt;"
5109 abstract="false" native="false" synchronized="false"
5110 static="false" final="false" visibility="public"
5111 deprecated="not deprecated">
5112 <param name="nodeId" type="java.lang.String"/>
5113 </method>
5114 <method name="newAdaptor" return="com.google.inject.grapher.graphviz.ImplementationNodeFactory.GraphvizNodeAdaptor"
5115 abstract="false" native="false" synchronized="false"
5116 static="false" final="false" visibility="protected"
5117 deprecated="not deprecated">
5118 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
5119 </method>
5120 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00005121 <![CDATA[Graphviz-specific implementation of {@link ImplementationNode.Factory}. Uses
5122 a {@link GraphvizEdgeAdaptor} to delegate to a {@link GraphvizNode}.
5123
sameb1d3f8cd2014-10-07 15:32:12 -07005124 @author phopkins@gmail.com (Pete Hopkins)]]>
5125 </doc>
5126 </class>
5127 <!-- end class com.google.inject.grapher.graphviz.ImplementationNodeFactory -->
5128 <!-- start class com.google.inject.grapher.graphviz.ImplementationNodeFactory.GraphvizNodeAdaptor -->
5129 <class name="ImplementationNodeFactory.GraphvizNodeAdaptor" extends="java.lang.Object"
5130 abstract="false"
5131 static="false" final="false" visibility="protected"
5132 deprecated="not deprecated">
5133 <implements name="com.google.inject.grapher.ImplementationNode&lt;java.lang.String&gt;"/>
5134 <constructor name="ImplementationNodeFactory.GraphvizNodeAdaptor" type="com.google.inject.grapher.graphviz.GraphvizNode"
5135 static="false" final="false" visibility="public"
5136 deprecated="not deprecated">
5137 </constructor>
5138 <method name="setClassKey"
5139 abstract="false" native="false" synchronized="false"
5140 static="false" final="false" visibility="public"
5141 deprecated="not deprecated">
5142 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
5143 </method>
5144 <method name="setInstance"
5145 abstract="false" native="false" synchronized="false"
5146 static="false" final="false" visibility="public"
5147 deprecated="not deprecated">
5148 <param name="instance" type="java.lang.Object"/>
5149 </method>
5150 <method name="setSource"
5151 abstract="false" native="false" synchronized="false"
5152 static="false" final="false" visibility="public"
5153 deprecated="not deprecated">
5154 <param name="source" type="java.lang.Object"/>
5155 </method>
5156 <method name="addMember"
5157 abstract="false" native="false" synchronized="false"
5158 static="false" final="false" visibility="public"
5159 deprecated="not deprecated">
5160 <param name="member" type="java.lang.reflect.Member"/>
5161 </method>
5162 <field name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"
5163 transient="false" volatile="false"
5164 static="false" final="true" visibility="protected"
5165 deprecated="not deprecated">
5166 </field>
5167 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00005168 <![CDATA[Adaptor class that converts {@link ImplementationNode} methods to display
sameb1d3f8cd2014-10-07 15:32:12 -07005169 operations on a {@link GraphvizNode}.]]>
5170 </doc>
5171 </class>
5172 <!-- end class com.google.inject.grapher.graphviz.ImplementationNodeFactory.GraphvizNodeAdaptor -->
5173 <!-- start class com.google.inject.grapher.graphviz.InterfaceNodeFactory -->
5174 <class name="InterfaceNodeFactory" extends="java.lang.Object"
5175 abstract="false"
5176 static="false" final="false" visibility="public"
5177 deprecated="not deprecated">
5178 <implements name="com.google.inject.grapher.InterfaceNode.Factory&lt;java.lang.String, com.google.inject.grapher.InterfaceNode&lt;java.lang.String&gt;&gt;"/>
5179 <constructor name="InterfaceNodeFactory" type="com.google.inject.grapher.graphviz.GraphvizRenderer, com.google.inject.grapher.NameFactory"
5180 static="false" final="false" visibility="public"
5181 deprecated="not deprecated">
5182 </constructor>
5183 <method name="newInterfaceNode" return="com.google.inject.grapher.InterfaceNode&lt;java.lang.String&gt;"
5184 abstract="false" native="false" synchronized="false"
5185 static="false" final="false" visibility="public"
5186 deprecated="not deprecated">
5187 <param name="nodeId" type="java.lang.String"/>
5188 </method>
5189 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00005190 <![CDATA[Graphviz-specific implementation of {@link InterfaceNode.Factory}. Uses
5191 a {@link GraphvizEdgeAdaptor} to delegate to a {@link GraphvizNode}.
5192
sameb1d3f8cd2014-10-07 15:32:12 -07005193 @author phopkins@gmail.com (Pete Hopkins)]]>
5194 </doc>
5195 </class>
5196 <!-- end class com.google.inject.grapher.graphviz.InterfaceNodeFactory -->
5197 <!-- start class com.google.inject.grapher.graphviz.InterfaceNodeFactory.GraphvizNodeAdaptor -->
5198 <class name="InterfaceNodeFactory.GraphvizNodeAdaptor" extends="java.lang.Object"
5199 abstract="false"
5200 static="false" final="false" visibility="protected"
5201 deprecated="not deprecated">
5202 <implements name="com.google.inject.grapher.InterfaceNode&lt;java.lang.String&gt;"/>
5203 <constructor name="InterfaceNodeFactory.GraphvizNodeAdaptor" type="com.google.inject.grapher.graphviz.GraphvizNode"
5204 static="false" final="false" visibility="public"
5205 deprecated="not deprecated">
5206 </constructor>
5207 <method name="setKey"
5208 abstract="false" native="false" synchronized="false"
5209 static="false" final="false" visibility="public"
5210 deprecated="not deprecated">
5211 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
5212 </method>
5213 <method name="setSource"
5214 abstract="false" native="false" synchronized="false"
5215 static="false" final="false" visibility="public"
5216 deprecated="not deprecated">
5217 <param name="source" type="java.lang.Object"/>
5218 </method>
5219 <field name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"
5220 transient="false" volatile="false"
5221 static="false" final="true" visibility="protected"
5222 deprecated="not deprecated">
5223 </field>
5224 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00005225 <![CDATA[Adaptor class that converts {@link InterfaceNode} methods to display
sameb1d3f8cd2014-10-07 15:32:12 -07005226 operations on a {@link GraphvizNode}.]]>
5227 </doc>
5228 </class>
5229 <!-- end class com.google.inject.grapher.graphviz.InterfaceNodeFactory.GraphvizNodeAdaptor -->
5230 <!-- start class com.google.inject.grapher.graphviz.NodeShape -->
5231 <class name="NodeShape" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.NodeShape&gt;"
5232 abstract="false"
5233 static="false" final="true" visibility="public"
5234 deprecated="not deprecated">
5235 <method name="values" return="com.google.inject.grapher.graphviz.NodeShape[]"
5236 abstract="false" native="false" synchronized="false"
5237 static="true" final="false" visibility="public"
5238 deprecated="not deprecated">
5239 </method>
5240 <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeShape"
5241 abstract="false" native="false" synchronized="false"
5242 static="true" final="false" visibility="public"
5243 deprecated="not deprecated">
5244 <param name="name" type="java.lang.String"/>
5245 </method>
5246 <method name="toString" return="java.lang.String"
5247 abstract="false" native="false" synchronized="false"
5248 static="false" final="false" visibility="public"
5249 deprecated="not deprecated">
5250 </method>
5251 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00005252 <![CDATA[Enum for the shapes that are most interesting for Guice graphing.
5253 <p>
5254 See: http://www.graphviz.org/doc/info/shapes.html
5255
sameb1d3f8cd2014-10-07 15:32:12 -07005256 @author phopkins@gmail.com (Pete Hopkins)]]>
5257 </doc>
5258 </class>
5259 <!-- end class com.google.inject.grapher.graphviz.NodeShape -->
5260 <!-- start class com.google.inject.grapher.graphviz.NodeStyle -->
5261 <class name="NodeStyle" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.NodeStyle&gt;"
5262 abstract="false"
5263 static="false" final="true" visibility="public"
5264 deprecated="not deprecated">
5265 <method name="values" return="com.google.inject.grapher.graphviz.NodeStyle[]"
5266 abstract="false" native="false" synchronized="false"
5267 static="true" final="false" visibility="public"
5268 deprecated="not deprecated">
5269 </method>
5270 <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeStyle"
5271 abstract="false" native="false" synchronized="false"
5272 static="true" final="false" visibility="public"
5273 deprecated="not deprecated">
5274 <param name="name" type="java.lang.String"/>
5275 </method>
5276 <method name="toString" return="java.lang.String"
5277 abstract="false" native="false" synchronized="false"
5278 static="false" final="false" visibility="public"
5279 deprecated="not deprecated">
5280 </method>
5281 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00005282 <![CDATA[Styles for nodes. Similar to {@link EdgeStyle} but with a few more options.
5283 <p>
5284 See: http://www.graphviz.org/doc/info/attrs.html#k:style
5285
sameb1d3f8cd2014-10-07 15:32:12 -07005286 @author phopkins@gmail.com (Pete Hopkins)]]>
5287 </doc>
5288 </class>
5289 <!-- end class com.google.inject.grapher.graphviz.NodeStyle -->
5290 <!-- start interface com.google.inject.grapher.graphviz.PortIdFactory -->
5291 <interface name="PortIdFactory" abstract="true"
5292 static="false" final="false" visibility="public"
5293 deprecated="not deprecated">
5294 <method name="getPortId" return="java.lang.String"
5295 abstract="false" native="false" synchronized="false"
5296 static="false" final="false" visibility="public"
5297 deprecated="not deprecated">
5298 <param name="member" type="java.lang.reflect.Member"/>
5299 </method>
5300 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00005301 <![CDATA[Interface for a service that returns Graphviz port IDs, used for naming the
5302 rows in {@link ImplementationNode}-displaying {@link GraphvizNode}s.
5303 Implemented by {@link StringNodeIdFactory}.
5304
sameb1d3f8cd2014-10-07 15:32:12 -07005305 @author phopkins@gmail.com (Pete Hopkins)]]>
5306 </doc>
5307 </interface>
5308 <!-- end interface com.google.inject.grapher.graphviz.PortIdFactory -->
5309 <!-- start class com.google.inject.grapher.graphviz.PortIdFactoryImpl -->
5310 <class name="PortIdFactoryImpl" extends="java.lang.Object"
5311 abstract="false"
5312 static="false" final="false" visibility="public"
5313 deprecated="not deprecated">
5314 <implements name="com.google.inject.grapher.graphviz.PortIdFactory"/>
5315 <constructor name="PortIdFactoryImpl"
5316 static="false" final="false" visibility="public"
5317 deprecated="not deprecated">
5318 </constructor>
5319 <method name="getPortId" return="java.lang.String"
5320 abstract="false" native="false" synchronized="false"
5321 static="false" final="false" visibility="public"
5322 deprecated="not deprecated">
5323 <param name="member" type="java.lang.reflect.Member"/>
5324 </method>
5325 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00005326 <![CDATA[Implementation of {@link PortIdFactory}. Bound in {@link GraphvizModule}.
5327
sameb1d3f8cd2014-10-07 15:32:12 -07005328 @author phopkins@gmail.com (Pete Hopkins)]]>
5329 </doc>
5330 </class>
5331 <!-- end class com.google.inject.grapher.graphviz.PortIdFactoryImpl -->
5332</package>
5333<package name="com.google.inject.jndi">
5334 <!-- start class com.google.inject.jndi.JndiIntegration -->
5335 <class name="JndiIntegration" extends="java.lang.Object"
5336 abstract="false"
5337 static="false" final="false" visibility="public"
5338 deprecated="not deprecated">
5339 <method name="fromJndi" return="com.google.inject.Provider&lt;T&gt;"
5340 abstract="false" native="false" synchronized="false"
5341 static="true" final="false" visibility="public"
5342 deprecated="not deprecated">
5343 <param name="type" type="java.lang.Class&lt;T&gt;"/>
5344 <param name="name" type="java.lang.String"/>
5345 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005346 <![CDATA[Creates a provider which looks up objects in JNDI using the given name.
5347 Example usage:
5348
5349 <pre>
5350 bind(DataSource.class).toProvider(fromJndi(DataSource.class, "java:..."));
sameb1d3f8cd2014-10-07 15:32:12 -07005351 </pre>]]>
5352 </doc>
5353 </method>
5354 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005355 <![CDATA[Integrates Guice with JNDI. Requires a binding to
5356 {@link javax.naming.Context}.
5357
sameb1d3f8cd2014-10-07 15:32:12 -07005358 @author crazybob@google.com (Bob Lee)]]>
5359 </doc>
5360 </class>
5361 <!-- end class com.google.inject.jndi.JndiIntegration -->
5362</package>
5363<package name="com.google.inject.matcher">
5364 <!-- start class com.google.inject.matcher.AbstractMatcher -->
5365 <class name="AbstractMatcher" extends="java.lang.Object"
5366 abstract="true"
5367 static="false" final="false" visibility="public"
5368 deprecated="not deprecated">
5369 <implements name="com.google.inject.matcher.Matcher&lt;T&gt;"/>
5370 <constructor name="AbstractMatcher"
5371 static="false" final="false" visibility="public"
5372 deprecated="not deprecated">
5373 </constructor>
5374 <method name="and" return="com.google.inject.matcher.Matcher&lt;T&gt;"
5375 abstract="false" native="false" synchronized="false"
5376 static="false" final="false" visibility="public"
5377 deprecated="not deprecated">
5378 <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
5379 </method>
5380 <method name="or" return="com.google.inject.matcher.Matcher&lt;T&gt;"
5381 abstract="false" native="false" synchronized="false"
5382 static="false" final="false" visibility="public"
5383 deprecated="not deprecated">
5384 <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
5385 </method>
5386 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005387 <![CDATA[Implements {@code and()} and {@code or()}.
5388
sameb1d3f8cd2014-10-07 15:32:12 -07005389 @author crazybob@google.com (Bob Lee)]]>
5390 </doc>
5391 </class>
5392 <!-- end class com.google.inject.matcher.AbstractMatcher -->
5393 <!-- start interface com.google.inject.matcher.Matcher -->
5394 <interface name="Matcher" abstract="true"
5395 static="false" final="false" visibility="public"
5396 deprecated="not deprecated">
5397 <method name="matches" return="boolean"
5398 abstract="false" native="false" synchronized="false"
5399 static="false" final="false" visibility="public"
5400 deprecated="not deprecated">
5401 <param name="t" type="T"/>
5402 <doc>
5403 <![CDATA[Returns {@code true} if this matches {@code t}, {@code false} otherwise.]]>
5404 </doc>
5405 </method>
5406 <method name="and" return="com.google.inject.matcher.Matcher&lt;T&gt;"
5407 abstract="false" native="false" synchronized="false"
5408 static="false" final="false" visibility="public"
5409 deprecated="not deprecated">
5410 <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
5411 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005412 <![CDATA[Returns a new matcher which returns {@code true} if both this and the
sameb1d3f8cd2014-10-07 15:32:12 -07005413 given matcher return {@code true}.]]>
5414 </doc>
5415 </method>
5416 <method name="or" return="com.google.inject.matcher.Matcher&lt;T&gt;"
5417 abstract="false" native="false" synchronized="false"
5418 static="false" final="false" visibility="public"
5419 deprecated="not deprecated">
5420 <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
5421 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005422 <![CDATA[Returns a new matcher which returns {@code true} if either this or the
sameb1d3f8cd2014-10-07 15:32:12 -07005423 given matcher return {@code true}.]]>
5424 </doc>
5425 </method>
5426 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005427 <![CDATA[Returns {@code true} or {@code false} for a given input.
5428
sameb1d3f8cd2014-10-07 15:32:12 -07005429 @author crazybob@google.com (Bob Lee)]]>
5430 </doc>
5431 </interface>
5432 <!-- end interface com.google.inject.matcher.Matcher -->
5433 <!-- start class com.google.inject.matcher.Matchers -->
5434 <class name="Matchers" extends="java.lang.Object"
5435 abstract="false"
5436 static="false" final="false" visibility="public"
5437 deprecated="not deprecated">
5438 <method name="any" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
5439 abstract="false" native="false" synchronized="false"
5440 static="true" final="false" visibility="public"
5441 deprecated="not deprecated">
5442 <doc>
5443 <![CDATA[Returns a matcher which matches any input.]]>
5444 </doc>
5445 </method>
5446 <method name="not" return="com.google.inject.matcher.Matcher&lt;T&gt;"
5447 abstract="false" native="false" synchronized="false"
5448 static="true" final="false" visibility="public"
5449 deprecated="not deprecated">
5450 <param name="p" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
5451 <doc>
5452 <![CDATA[Inverts the given matcher.]]>
5453 </doc>
5454 </method>
5455 <method name="annotatedWith" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.AnnotatedElement&gt;"
5456 abstract="false" native="false" synchronized="false"
5457 static="true" final="false" visibility="public"
5458 deprecated="not deprecated">
5459 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
5460 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005461 <![CDATA[Returns a matcher which matches elements (methods, classes, etc.)
sameb1d3f8cd2014-10-07 15:32:12 -07005462 with a given annotation.]]>
5463 </doc>
5464 </method>
5465 <method name="annotatedWith" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.AnnotatedElement&gt;"
5466 abstract="false" native="false" synchronized="false"
5467 static="true" final="false" visibility="public"
5468 deprecated="not deprecated">
5469 <param name="annotation" type="java.lang.annotation.Annotation"/>
5470 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005471 <![CDATA[Returns a matcher which matches elements (methods, classes, etc.)
sameb1d3f8cd2014-10-07 15:32:12 -07005472 with a given annotation.]]>
5473 </doc>
5474 </method>
5475 <method name="subclassesOf" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
5476 abstract="false" native="false" synchronized="false"
5477 static="true" final="false" visibility="public"
5478 deprecated="not deprecated">
5479 <param name="superclass" type="java.lang.Class&lt;?&gt;"/>
5480 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005481 <![CDATA[Returns a matcher which matches subclasses of the given type (as well as
sameb1d3f8cd2014-10-07 15:32:12 -07005482 the given type).]]>
5483 </doc>
5484 </method>
5485 <method name="only" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
5486 abstract="false" native="false" synchronized="false"
5487 static="true" final="false" visibility="public"
5488 deprecated="not deprecated">
5489 <param name="value" type="java.lang.Object"/>
5490 <doc>
5491 <![CDATA[Returns a matcher which matches objects equal to the given object.]]>
5492 </doc>
5493 </method>
5494 <method name="identicalTo" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
5495 abstract="false" native="false" synchronized="false"
5496 static="true" final="false" visibility="public"
5497 deprecated="not deprecated">
5498 <param name="value" type="java.lang.Object"/>
5499 <doc>
5500 <![CDATA[Returns a matcher which matches only the given object.]]>
5501 </doc>
5502 </method>
5503 <method name="inPackage" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
5504 abstract="false" native="false" synchronized="false"
5505 static="true" final="false" visibility="public"
5506 deprecated="not deprecated">
5507 <param name="targetPackage" type="java.lang.Package"/>
5508 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005509 <![CDATA[Returns a matcher which matches classes in the given package. Packages are specific to their
sameb1d3f8cd2014-10-07 15:32:12 -07005510 classloader, so classes with the same package name may not have the same package at runtime.]]>
5511 </doc>
5512 </method>
5513 <method name="inSubpackage" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
5514 abstract="false" native="false" synchronized="false"
5515 static="true" final="false" visibility="public"
5516 deprecated="not deprecated">
5517 <param name="targetPackageName" type="java.lang.String"/>
5518 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005519 <![CDATA[Returns a matcher which matches classes in the given package and its subpackages. Unlike
5520 {@link #inPackage(Package) inPackage()}, this matches classes from any classloader.
5521
sameb1d3f8cd2014-10-07 15:32:12 -07005522 @since 2.0]]>
5523 </doc>
5524 </method>
5525 <method name="returns" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.Method&gt;"
5526 abstract="false" native="false" synchronized="false"
5527 static="true" final="false" visibility="public"
5528 deprecated="not deprecated">
5529 <param name="returnType" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
5530 <doc>
5531 <![CDATA[Returns a matcher which matches methods with matching return types.]]>
5532 </doc>
5533 </method>
5534 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005535 <![CDATA[Matcher implementations. Supports matching classes and methods.
5536
sameb1d3f8cd2014-10-07 15:32:12 -07005537 @author crazybob@google.com (Bob Lee)]]>
5538 </doc>
5539 </class>
5540 <!-- end class com.google.inject.matcher.Matchers -->
5541</package>
5542<package name="com.google.inject.multibindings">
5543 <!-- start class com.google.inject.multibindings.MapBinder -->
5544 <class name="MapBinder" extends="java.lang.Object"
5545 abstract="true"
5546 static="false" final="false" visibility="public"
5547 deprecated="not deprecated">
5548 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
5549 abstract="false" native="false" synchronized="false"
5550 static="true" final="false" visibility="public"
5551 deprecated="not deprecated">
5552 <param name="binder" type="com.google.inject.Binder"/>
5553 <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
5554 <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
5555 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005556 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
sameb1d3f8cd2014-10-07 15:32:12 -07005557 {@link Map} that is itself bound with no binding annotation.]]>
5558 </doc>
5559 </method>
5560 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
5561 abstract="false" native="false" synchronized="false"
5562 static="true" final="false" visibility="public"
5563 deprecated="not deprecated">
5564 <param name="binder" type="com.google.inject.Binder"/>
5565 <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
5566 <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
5567 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005568 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
sameb1d3f8cd2014-10-07 15:32:12 -07005569 {@link Map} that is itself bound with no binding annotation.]]>
5570 </doc>
5571 </method>
5572 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
5573 abstract="false" native="false" synchronized="false"
5574 static="true" final="false" visibility="public"
5575 deprecated="not deprecated">
5576 <param name="binder" type="com.google.inject.Binder"/>
5577 <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
5578 <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
5579 <param name="annotation" type="java.lang.annotation.Annotation"/>
5580 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005581 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
sameb1d3f8cd2014-10-07 15:32:12 -07005582 {@link Map} that is itself bound with {@code annotation}.]]>
5583 </doc>
5584 </method>
5585 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
5586 abstract="false" native="false" synchronized="false"
5587 static="true" final="false" visibility="public"
5588 deprecated="not deprecated">
5589 <param name="binder" type="com.google.inject.Binder"/>
5590 <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
5591 <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
5592 <param name="annotation" type="java.lang.annotation.Annotation"/>
5593 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005594 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
sameb1d3f8cd2014-10-07 15:32:12 -07005595 {@link Map} that is itself bound with {@code annotation}.]]>
5596 </doc>
5597 </method>
5598 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
5599 abstract="false" native="false" synchronized="false"
5600 static="true" final="false" visibility="public"
5601 deprecated="not deprecated">
5602 <param name="binder" type="com.google.inject.Binder"/>
5603 <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
5604 <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
5605 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
5606 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005607 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
sameb1d3f8cd2014-10-07 15:32:12 -07005608 {@link Map} that is itself bound with {@code annotationType}.]]>
5609 </doc>
5610 </method>
5611 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
5612 abstract="false" native="false" synchronized="false"
5613 static="true" final="false" visibility="public"
5614 deprecated="not deprecated">
5615 <param name="binder" type="com.google.inject.Binder"/>
5616 <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
5617 <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
5618 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
5619 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005620 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
sameb1d3f8cd2014-10-07 15:32:12 -07005621 {@link Map} that is itself bound with {@code annotationType}.]]>
5622 </doc>
5623 </method>
5624 <method name="permitDuplicates" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
5625 abstract="true" native="false" synchronized="false"
5626 static="false" final="false" visibility="public"
5627 deprecated="not deprecated">
5628 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005629 <![CDATA[Configures the {@code MapBinder} to handle duplicate entries.
5630 <p>When multiple equal keys are bound, the value that gets included in the map is
5631 arbitrary.
5632 <p>In addition to the {@code Map<K, V>} and {@code Map<K, Provider<V>>}
5633 maps that are normally bound, a {@code Map<K, Set<V>>} and
5634 {@code Map<K, Set<Provider<V>>>} are <em>also</em> bound, which contain
5635 all values bound to each key.
5636 <p>
5637 When multiple modules contribute elements to the map, this configuration
5638 option impacts all of them.
5639
5640 @return this map binder
sameb1d3f8cd2014-10-07 15:32:12 -07005641 @since 3.0]]>
5642 </doc>
5643 </method>
5644 <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder&lt;V&gt;"
5645 abstract="true" native="false" synchronized="false"
5646 static="false" final="false" visibility="public"
5647 deprecated="not deprecated">
5648 <param name="key" type="K"/>
5649 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005650 <![CDATA[Returns a binding builder used to add a new entry in the map. Each
5651 key must be distinct (and non-null). Bound providers will be evaluated each
5652 time the map is injected.
5653
5654 <p>It is an error to call this method without also calling one of the
5655 {@code to} methods on the returned binding builder.
5656
5657 <p>Scoping elements independently is supported. Use the {@code in} method
sameb1d3f8cd2014-10-07 15:32:12 -07005658 to specify a binding scope.]]>
5659 </doc>
5660 </method>
5661 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005662 <![CDATA[An API to bind multiple map entries separately, only to later inject them as
5663 a complete map. MapBinder is intended for use in your application's module:
5664 <pre><code>
5665 public class SnacksModule extends AbstractModule {
5666 protected void configure() {
5667 MapBinder&lt;String, Snack&gt; mapbinder
5668 = MapBinder.newMapBinder(binder(), String.class, Snack.class);
5669 mapbinder.addBinding("twix").toInstance(new Twix());
5670 mapbinder.addBinding("snickers").toProvider(SnickersProvider.class);
5671 mapbinder.addBinding("skittles").to(Skittles.class);
5672 }
5673 }</code></pre>
5674
5675 <p>With this binding, a {@link Map}{@code <String, Snack>} can now be
5676 injected:
5677 <pre><code>
5678 class SnackMachine {
5679 {@literal @}Inject
5680 public SnackMachine(Map&lt;String, Snack&gt; snacks) { ... }
5681 }</code></pre>
5682
5683 <p>In addition to binding {@code Map<K, V>}, a mapbinder will also bind
5684 {@code Map<K, Provider<V>>} for lazy value provision:
5685 <pre><code>
5686 class SnackMachine {
5687 {@literal @}Inject
5688 public SnackMachine(Map&lt;String, Provider&lt;Snack&gt;&gt; snackProviders) { ... }
5689 }</code></pre>
5690
5691 <p>Contributing mapbindings from different modules is supported. For example,
5692 it is okay to have both {@code CandyModule} and {@code ChipsModule} both
5693 create their own {@code MapBinder<String, Snack>}, and to each contribute
5694 bindings to the snacks map. When that map is injected, it will contain
5695 entries from both modules.
5696
5697 <p>The map's iteration order is consistent with the binding order. This is
5698 convenient when multiple elements are contributed by the same module because
5699 that module can order its bindings appropriately. Avoid relying on the
5700 iteration order of elements contributed by different modules, since there is
5701 no equivalent mechanism to order modules.
5702
5703 <p>The map is unmodifiable. Elements can only be added to the map by
5704 configuring the MapBinder. Elements can never be removed from the map.
5705
5706 <p>Values are resolved at map injection time. If a value is bound to a
5707 provider, that provider's get method will be called each time the map is
5708 injected (unless the binding is also scoped, or a map of providers is injected).
5709
5710 <p>Annotations are used to create different maps of the same key/value
5711 type. Each distinct annotation gets its own independent map.
5712
5713 <p><strong>Keys must be distinct.</strong> If the same key is bound more than
5714 once, map injection will fail. However, use {@link #permitDuplicates()} in
5715 order to allow duplicate keys; extra bindings to {@code Map<K, Set<V>>} and
5716 {@code Map<K, Set<Provider<V>>} will be added.
5717
5718 <p><strong>Keys must be non-null.</strong> {@code addBinding(null)} will
5719 throw an unchecked exception.
5720
5721 <p><strong>Values must be non-null to use map injection.</strong> If any
5722 value is null, map injection will fail (although injecting a map of providers
5723 will not).
5724
sameb1d3f8cd2014-10-07 15:32:12 -07005725 @author dpb@google.com (David P. Baker)]]>
5726 </doc>
5727 </class>
5728 <!-- end class com.google.inject.multibindings.MapBinder -->
5729 <!-- start interface com.google.inject.multibindings.MapBinderBinding -->
5730 <interface name="MapBinderBinding" abstract="true"
5731 static="false" final="false" visibility="public"
5732 deprecated="not deprecated">
5733 <method name="getMapKey" return="com.google.inject.Key&lt;T&gt;"
5734 abstract="false" native="false" synchronized="false"
5735 static="false" final="false" visibility="public"
5736 deprecated="not deprecated">
5737 <doc>
5738 <![CDATA[Returns the {@link Key} for the map.]]>
5739 </doc>
5740 </method>
5741 <method name="getKeyTypeLiteral" return="com.google.inject.TypeLiteral&lt;?&gt;"
5742 abstract="false" native="false" synchronized="false"
5743 static="false" final="false" visibility="public"
5744 deprecated="not deprecated">
5745 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005746 <![CDATA[Returns the TypeLiteral describing the keys of the map.
5747 <p>
5748 The TypeLiteral will always match the type Map's generic type. For example, if getMapKey
5749 returns a key of <code>Map&lt;String, Snack></code>, then this will always return a
sameb1d3f8cd2014-10-07 15:32:12 -07005750 <code>TypeLiteral&lt;String></code>.]]>
5751 </doc>
5752 </method>
5753 <method name="getValueTypeLiteral" return="com.google.inject.TypeLiteral&lt;?&gt;"
5754 abstract="false" native="false" synchronized="false"
5755 static="false" final="false" visibility="public"
5756 deprecated="not deprecated">
5757 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005758 <![CDATA[Returns the TypeLiteral describing the values of the map.
5759 <p>
5760 The TypeLiteral will always match the type Map's generic type. For example, if getMapKey
5761 returns a key of <code>Map&lt;String, Snack></code>, then this will always return a
sameb1d3f8cd2014-10-07 15:32:12 -07005762 <code>TypeLiteral&lt;Snack></code>.]]>
5763 </doc>
5764 </method>
5765 <method name="getEntries" return="java.util.List&lt;java.util.Map.Entry&lt;?, com.google.inject.Binding&lt;?&gt;&gt;&gt;"
5766 abstract="false" native="false" synchronized="false"
5767 static="false" final="false" visibility="public"
5768 deprecated="not deprecated">
5769 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005770 <![CDATA[Returns all entries in the Map. The returned list of Map.Entries contains the key and a binding
5771 to the value. Duplicate keys or values will exist as separate Map.Entries in the returned list.
5772 This is only supported on bindings returned from an injector. This will throw
5773 {@link UnsupportedOperationException} if it is called on an element retrieved from
5774 {@link Elements#getElements}.
5775 <p>
5776 The elements will always match the type Map's generic type. For example, if getMapKey returns a
5777 key of <code>Map&lt;String, Snack></code>, then this will always return a list of type
sameb1d3f8cd2014-10-07 15:32:12 -07005778 <code>List&lt;Map.Entry&lt;String, Binding&lt;Snack>>></code>.]]>
5779 </doc>
5780 </method>
5781 <method name="permitsDuplicates" return="boolean"
5782 abstract="false" native="false" synchronized="false"
5783 static="false" final="false" visibility="public"
5784 deprecated="not deprecated">
5785 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005786 <![CDATA[Returns true if the MapBinder permits duplicates. This is only supported on bindings returned
5787 from an injector. This will throw {@link UnsupportedOperationException} if it is called on a
sameb1d3f8cd2014-10-07 15:32:12 -07005788 MapBinderBinding retrieved from {@link Elements#getElements}.]]>
5789 </doc>
5790 </method>
5791 <method name="containsElement" return="boolean"
5792 abstract="false" native="false" synchronized="false"
5793 static="false" final="false" visibility="public"
5794 deprecated="not deprecated">
5795 <param name="element" type="com.google.inject.spi.Element"/>
5796 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005797 <![CDATA[Returns true if this MapBinder contains the given Element in order to build the map or uses the
5798 given Element in order to support building and injecting the map. This will work for
5799 MapBinderBindings retrieved from an injector and {@link Elements#getElements}. Usually this is
5800 only necessary if you are working with elements retrieved from modules (without an Injector),
5801 otherwise {@link #getEntries} and {@link #permitsDuplicates} are better options.
5802 <p>
5803 If you need to introspect the details of the map, such as the keys, values or if it permits
5804 duplicates, it is necessary to pass the elements through an Injector and use
sameb1d3f8cd2014-10-07 15:32:12 -07005805 {@link #getEntries()} and {@link #permitsDuplicates()}.]]>
5806 </doc>
5807 </method>
5808 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005809 <![CDATA[A binding for a MapBinder.
5810 <p>
5811 Although MapBinders may be injected through a variety of generic types (Map&lt;K, V>, Map
5812 &lt;K, Provider&lt;V>>, Map&lt;K, Set&lt;V>>, Map<K, Set&lt;
5813 Provider&lt;V>>, and even Set&lt;Map.Entry&lt;K, Provider&lt;V>>), a
5814 MapBinderBinding exists only on the Binding associated with the Map&lt;K, V> key. Other
5815 bindings can be validated to be derived from this MapBinderBinding using
5816 {@link #containsElement(Element)}.
5817
5818 @param <T> The fully qualified type of the map, including Map. For example:
5819 <code>MapBinderBinding&lt;Map&lt;String, Snack>></code>
5820
5821 @since 3.0
sameb1d3f8cd2014-10-07 15:32:12 -07005822 @author sameb@google.com (Sam Berlin)]]>
5823 </doc>
5824 </interface>
5825 <!-- end interface com.google.inject.multibindings.MapBinderBinding -->
5826 <!-- start class com.google.inject.multibindings.Multibinder -->
5827 <class name="Multibinder" extends="java.lang.Object"
5828 abstract="true"
5829 static="false" final="false" visibility="public"
5830 deprecated="not deprecated">
5831 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
5832 abstract="false" native="false" synchronized="false"
5833 static="true" final="false" visibility="public"
5834 deprecated="not deprecated">
5835 <param name="binder" type="com.google.inject.Binder"/>
5836 <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
5837 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005838 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
sameb1d3f8cd2014-10-07 15:32:12 -07005839 itself bound with no binding annotation.]]>
5840 </doc>
5841 </method>
5842 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
5843 abstract="false" native="false" synchronized="false"
5844 static="true" final="false" visibility="public"
5845 deprecated="not deprecated">
5846 <param name="binder" type="com.google.inject.Binder"/>
5847 <param name="type" type="java.lang.Class&lt;T&gt;"/>
5848 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005849 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
sameb1d3f8cd2014-10-07 15:32:12 -07005850 itself bound with no binding annotation.]]>
5851 </doc>
5852 </method>
5853 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
5854 abstract="false" native="false" synchronized="false"
5855 static="true" final="false" visibility="public"
5856 deprecated="not deprecated">
5857 <param name="binder" type="com.google.inject.Binder"/>
5858 <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
5859 <param name="annotation" type="java.lang.annotation.Annotation"/>
5860 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005861 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
sameb1d3f8cd2014-10-07 15:32:12 -07005862 itself bound with {@code annotation}.]]>
5863 </doc>
5864 </method>
5865 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
5866 abstract="false" native="false" synchronized="false"
5867 static="true" final="false" visibility="public"
5868 deprecated="not deprecated">
5869 <param name="binder" type="com.google.inject.Binder"/>
5870 <param name="type" type="java.lang.Class&lt;T&gt;"/>
5871 <param name="annotation" type="java.lang.annotation.Annotation"/>
5872 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005873 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
sameb1d3f8cd2014-10-07 15:32:12 -07005874 itself bound with {@code annotation}.]]>
5875 </doc>
5876 </method>
5877 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
5878 abstract="false" native="false" synchronized="false"
5879 static="true" final="false" visibility="public"
5880 deprecated="not deprecated">
5881 <param name="binder" type="com.google.inject.Binder"/>
5882 <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
5883 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
5884 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005885 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
sameb1d3f8cd2014-10-07 15:32:12 -07005886 itself bound with {@code annotationType}.]]>
5887 </doc>
5888 </method>
5889 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
5890 abstract="false" native="false" synchronized="false"
5891 static="true" final="false" visibility="public"
5892 deprecated="not deprecated">
5893 <param name="binder" type="com.google.inject.Binder"/>
5894 <param name="type" type="java.lang.Class&lt;T&gt;"/>
5895 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
5896 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005897 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
sameb1d3f8cd2014-10-07 15:32:12 -07005898 itself bound with {@code annotationType}.]]>
5899 </doc>
5900 </method>
5901 <method name="permitDuplicates" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
5902 abstract="true" native="false" synchronized="false"
5903 static="false" final="false" visibility="public"
5904 deprecated="not deprecated">
5905 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005906 <![CDATA[Configures the bound set to silently discard duplicate elements. When multiple equal values are
5907 bound, the one that gets included is arbitrary. When multiple modules contribute elements to
5908 the set, this configuration option impacts all of them.
5909
5910 @return this multibinder
sameb1d3f8cd2014-10-07 15:32:12 -07005911 @since 3.0]]>
5912 </doc>
5913 </method>
5914 <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
5915 abstract="true" native="false" synchronized="false"
5916 static="false" final="false" visibility="public"
5917 deprecated="not deprecated">
5918 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005919 <![CDATA[Returns a binding builder used to add a new element in the set. Each
5920 bound element must have a distinct value. Bound providers will be
5921 evaluated each time the set is injected.
5922
5923 <p>It is an error to call this method without also calling one of the
5924 {@code to} methods on the returned binding builder.
5925
5926 <p>Scoping elements independently is supported. Use the {@code in} method
sameb1d3f8cd2014-10-07 15:32:12 -07005927 to specify a binding scope.]]>
5928 </doc>
5929 </method>
5930 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005931 <![CDATA[An API to bind multiple values separately, only to later inject them as a
5932 complete collection. Multibinder is intended for use in your application's
5933 module:
5934 <pre><code>
5935 public class SnacksModule extends AbstractModule {
5936 protected void configure() {
5937 Multibinder&lt;Snack&gt; multibinder
5938 = Multibinder.newSetBinder(binder(), Snack.class);
5939 multibinder.addBinding().toInstance(new Twix());
5940 multibinder.addBinding().toProvider(SnickersProvider.class);
5941 multibinder.addBinding().to(Skittles.class);
5942 }
5943 }</code></pre>
5944
5945 <p>With this binding, a {@link Set}{@code <Snack>} can now be injected:
5946 <pre><code>
5947 class SnackMachine {
5948 {@literal @}Inject
5949 public SnackMachine(Set&lt;Snack&gt; snacks) { ... }
5950 }</code></pre>
5951
5952 <p>Contributing multibindings from different modules is supported. For
5953 example, it is okay to have both {@code CandyModule} and {@code ChipsModule}
5954 to both create their own {@code Multibinder<Snack>}, and to each contribute
5955 bindings to the set of snacks. When that set is injected, it will contain
5956 elements from both modules.
5957
5958 <p>The set's iteration order is consistent with the binding order. This is
5959 convenient when multiple elements are contributed by the same module because
5960 that module can order its bindings appropriately. Avoid relying on the
5961 iteration order of elements contributed by different modules, since there is
5962 no equivalent mechanism to order modules.
5963
5964 <p>The set is unmodifiable. Elements can only be added to the set by
5965 configuring the multibinder. Elements can never be removed from the set.
5966
5967 <p>Elements are resolved at set injection time. If an element is bound to a
5968 provider, that provider's get method will be called each time the set is
5969 injected (unless the binding is also scoped).
5970
5971 <p>Annotations are be used to create different sets of the same element
5972 type. Each distinct annotation gets its own independent collection of
5973 elements.
5974
5975 <p><strong>Elements must be distinct.</strong> If multiple bound elements
5976 have the same value, set injection will fail.
5977
5978 <p><strong>Elements must be non-null.</strong> If any set element is null,
5979 set injection will fail.
5980
sameb1d3f8cd2014-10-07 15:32:12 -07005981 @author jessewilson@google.com (Jesse Wilson)]]>
5982 </doc>
5983 </class>
5984 <!-- end class com.google.inject.multibindings.Multibinder -->
5985 <!-- start interface com.google.inject.multibindings.MultibinderBinding -->
5986 <interface name="MultibinderBinding" abstract="true"
5987 static="false" final="false" visibility="public"
5988 deprecated="not deprecated">
5989 <method name="getSetKey" return="com.google.inject.Key&lt;T&gt;"
5990 abstract="false" native="false" synchronized="false"
5991 static="false" final="false" visibility="public"
5992 deprecated="not deprecated">
5993 <doc>
5994 <![CDATA[Returns the key for the set.]]>
5995 </doc>
5996 </method>
5997 <method name="getElementTypeLiteral" return="com.google.inject.TypeLiteral&lt;?&gt;"
5998 abstract="false" native="false" synchronized="false"
5999 static="false" final="false" visibility="public"
6000 deprecated="not deprecated">
6001 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006002 <![CDATA[Returns the TypeLiteral that describes the type of elements in the set.
6003 <p>
6004 The elements will always match the type Set's generic type. For example, if getSetKey returns a
6005 key of <code>Set&lt;String></code>, then this will always return a
sameb1d3f8cd2014-10-07 15:32:12 -07006006 <code>TypeLiteral&lt;String></code>.]]>
6007 </doc>
6008 </method>
6009 <method name="getElements" return="java.util.List&lt;com.google.inject.Binding&lt;?&gt;&gt;"
6010 abstract="false" native="false" synchronized="false"
6011 static="false" final="false" visibility="public"
6012 deprecated="not deprecated">
6013 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006014 <![CDATA[Returns all bindings that make up the set. This is only supported on bindings returned from an
6015 injector. This will throw {@link UnsupportedOperationException} if it is called on an element
6016 retrieved from {@link Elements#getElements}.
6017 <p>
6018 The elements will always match the type Set's generic type. For example, if getSetKey returns a
6019 key of <code>Set&lt;String></code>, then this will always return a list of type
sameb1d3f8cd2014-10-07 15:32:12 -07006020 <code>List&lt;Binding&lt;String>></code>.]]>
6021 </doc>
6022 </method>
6023 <method name="permitsDuplicates" return="boolean"
6024 abstract="false" native="false" synchronized="false"
6025 static="false" final="false" visibility="public"
6026 deprecated="not deprecated">
6027 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006028 <![CDATA[Returns true if the multibinder permits duplicates. This is only supported on bindings returned
6029 from an injector. This will throw {@link UnsupportedOperationException} if it is called on a
sameb1d3f8cd2014-10-07 15:32:12 -07006030 MultibinderBinding retrieved from {@link Elements#getElements}.]]>
6031 </doc>
6032 </method>
6033 <method name="containsElement" return="boolean"
6034 abstract="false" native="false" synchronized="false"
6035 static="false" final="false" visibility="public"
6036 deprecated="not deprecated">
6037 <param name="element" type="com.google.inject.spi.Element"/>
6038 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006039 <![CDATA[Returns true if this Multibinder uses the given Element. This will be true for bindings that
6040 derive the elements of the set and other bindings that Multibinder uses internally. This will
6041 work for MultibinderBindings retrieved from an injector and {@link Elements#getElements}.
6042 Usually this is only necessary if you are working with elements retrieved from modules (without
6043 an Injector), otherwise {@link #getElements} and {@link #permitsDuplicates} are better options.
6044 <p>
6045 If you need to introspect the details of the set, such as the values or if it permits
6046 duplicates, it is necessary to pass the elements through an Injector and use
sameb1d3f8cd2014-10-07 15:32:12 -07006047 {@link #getElements()} and {@link #permitsDuplicates()}.]]>
6048 </doc>
6049 </method>
6050 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006051 <![CDATA[A binding for a Multibinder.
6052
6053 @param <T> The fully qualified type of the set, including Set. For example:
6054 <code>MultibinderBinding&lt;Set&lt;Boolean>></code>
6055
6056 @since 3.0
sameb1d3f8cd2014-10-07 15:32:12 -07006057 @author sameb@google.com (Sam Berlin)]]>
6058 </doc>
6059 </interface>
6060 <!-- end interface com.google.inject.multibindings.MultibinderBinding -->
6061 <!-- start interface com.google.inject.multibindings.MultibindingsTargetVisitor -->
6062 <interface name="MultibindingsTargetVisitor" abstract="true"
6063 static="false" final="false" visibility="public"
6064 deprecated="not deprecated">
6065 <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
6066 <method name="visit" return="V"
6067 abstract="false" native="false" synchronized="false"
6068 static="false" final="false" visibility="public"
6069 deprecated="not deprecated">
6070 <param name="multibinding" type="com.google.inject.multibindings.MultibinderBinding&lt;? extends T&gt;"/>
6071 <doc>
6072 <![CDATA[Visits a binding created through {@link Multibinder}.]]>
6073 </doc>
6074 </method>
6075 <method name="visit" return="V"
6076 abstract="false" native="false" synchronized="false"
6077 static="false" final="false" visibility="public"
6078 deprecated="not deprecated">
6079 <param name="mapbinding" type="com.google.inject.multibindings.MapBinderBinding&lt;? extends T&gt;"/>
6080 <doc>
6081 <![CDATA[Visits a binding created through {@link MapBinder}.]]>
6082 </doc>
6083 </method>
6084 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006085 <![CDATA[A visitor for the multibinder extension.
6086 <p>
6087 If your {@link BindingTargetVisitor} implements this interface, bindings created by using
6088 {@link Multibinder} or {@link MapBinder} will be visited through this interface.
6089
6090 @since 3.0
sameb1d3f8cd2014-10-07 15:32:12 -07006091 @author sameb@google.com (Sam Berlin)]]>
6092 </doc>
6093 </interface>
6094 <!-- end interface com.google.inject.multibindings.MultibindingsTargetVisitor -->
6095</package>
6096<package name="com.google.inject.name">
6097 <!-- start class com.google.inject.name.Named -->
6098 <class name="Named" abstract="true"
6099 static="false" final="false" visibility="public"
6100 deprecated="not deprecated">
6101 <implements name="java.lang.annotation.Annotation"/>
6102 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006103 <![CDATA[Annotates named things.
6104
sameb1d3f8cd2014-10-07 15:32:12 -07006105 @author crazybob@google.com (Bob Lee)]]>
6106 </doc>
6107 </class>
6108 <!-- end class com.google.inject.name.Named -->
6109 <!-- start class com.google.inject.name.Names -->
6110 <class name="Names" extends="java.lang.Object"
6111 abstract="false"
6112 static="false" final="false" visibility="public"
6113 deprecated="not deprecated">
6114 <method name="named" return="com.google.inject.name.Named"
6115 abstract="false" native="false" synchronized="false"
6116 static="true" final="false" visibility="public"
6117 deprecated="not deprecated">
6118 <param name="name" type="java.lang.String"/>
6119 <doc>
6120 <![CDATA[Creates a {@link Named} annotation with {@code name} as the value.]]>
6121 </doc>
6122 </method>
6123 <method name="bindProperties"
6124 abstract="false" native="false" synchronized="false"
6125 static="true" final="false" visibility="public"
6126 deprecated="not deprecated">
6127 <param name="binder" type="com.google.inject.Binder"/>
6128 <param name="properties" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
6129 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006130 <![CDATA[Creates a constant binding to {@code @Named(key)} for each entry in
sameb1d3f8cd2014-10-07 15:32:12 -07006131 {@code properties}.]]>
6132 </doc>
6133 </method>
6134 <method name="bindProperties"
6135 abstract="false" native="false" synchronized="false"
6136 static="true" final="false" visibility="public"
6137 deprecated="not deprecated">
6138 <param name="binder" type="com.google.inject.Binder"/>
6139 <param name="properties" type="java.util.Properties"/>
6140 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006141 <![CDATA[Creates a constant binding to {@code @Named(key)} for each property. This
6142 method binds all properties including those inherited from
sameb1d3f8cd2014-10-07 15:32:12 -07006143 {@link Properties#defaults defaults}.]]>
6144 </doc>
6145 </method>
6146 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006147 <![CDATA[Utility methods for use with {@code @}{@link Named}.
6148
sameb1d3f8cd2014-10-07 15:32:12 -07006149 @author crazybob@google.com (Bob Lee)]]>
6150 </doc>
6151 </class>
6152 <!-- end class com.google.inject.name.Names -->
6153</package>
6154<package name="com.google.inject.persist">
6155 <!-- start class com.google.inject.persist.PersistFilter -->
6156 <class name="PersistFilter" extends="java.lang.Object"
6157 abstract="false"
6158 static="false" final="true" visibility="public"
6159 deprecated="not deprecated">
6160 <constructor name="PersistFilter" type="com.google.inject.persist.UnitOfWork, com.google.inject.persist.PersistService"
6161 static="false" final="false" visibility="public"
6162 deprecated="not deprecated">
6163 </constructor>
6164 <method name="init"
6165 abstract="false" native="false" synchronized="false"
6166 static="false" final="false" visibility="public"
6167 deprecated="not deprecated">
6168 <param name="filterConfig" type="FilterConfig"/>
6169 <exception name="ServletException" type="ServletException"/>
6170 </method>
6171 <method name="destroy"
6172 abstract="false" native="false" synchronized="false"
6173 static="false" final="false" visibility="public"
6174 deprecated="not deprecated">
6175 </method>
6176 <method name="doFilter"
6177 abstract="false" native="false" synchronized="false"
6178 static="false" final="false" visibility="public"
6179 deprecated="not deprecated">
6180 <param name="servletRequest" type="ServletRequest"/>
6181 <param name="servletResponse" type="ServletResponse"/>
6182 <param name="filterChain" type="FilterChain"/>
6183 <exception name="IOException" type="java.io.IOException"/>
6184 <exception name="ServletException" type="ServletException"/>
6185 </method>
6186 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006187 <![CDATA[Apply this filter to enable the HTTP Request unit of work and to have
6188 guice-persist manage the lifecycle of active units of work.
6189 The filter automatically starts and stops the relevant {@link PersistService}
6190 upon {@link javax.servlet.Filter#init(javax.servlet.FilterConfig)} and
6191 {@link javax.servlet.Filter#destroy()} respectively.
6192
6193 <p> To be able to use the open session-in-view pattern (i.e. work per request),
6194 register this filter <b>once</b> in your Guice {@code ServletModule}. It is
6195 important that you register this filter before any other filter.
6196
6197 For multiple providers, you should register this filter once per provider, inside
6198 a private module for each persist module installed (this must be the same private
6199 module where the specific persist module is itself installed).
6200
6201 <p>
6202 Example configuration:
6203 <pre>{@code
6204 public class MyModule extends ServletModule {
6205 public void configureServlets() {
6206 filter("/*").through(PersistFilter.class);
6207
6208 serve("/index.html").with(MyHtmlServlet.class);
6209 // Etc.
6210 }
6211 }
6212 }</pre>
6213 <p>
6214 This filter is thread safe and allows you to create injectors concurrently
6215 and deploy multiple guice-persist modules within the same injector, or even
6216 multiple injectors with persist modules withing the same JVM or web app.
6217 <p>
6218 This filter requires the Guice Servlet extension.
6219
sameb1d3f8cd2014-10-07 15:32:12 -07006220 @author Dhanji R. Prasanna (dhanji@gmail.com)]]>
6221 </doc>
6222 </class>
6223 <!-- end class com.google.inject.persist.PersistFilter -->
6224 <!-- start class com.google.inject.persist.PersistModule -->
6225 <class name="PersistModule" extends="com.google.inject.AbstractModule"
6226 abstract="true"
6227 static="false" final="false" visibility="public"
6228 deprecated="not deprecated">
6229 <constructor name="PersistModule"
6230 static="false" final="false" visibility="public"
6231 deprecated="not deprecated">
6232 </constructor>
6233 <method name="configure"
6234 abstract="false" native="false" synchronized="false"
6235 static="false" final="true" visibility="protected"
6236 deprecated="not deprecated">
6237 </method>
6238 <method name="configurePersistence"
6239 abstract="true" native="false" synchronized="false"
6240 static="false" final="false" visibility="protected"
6241 deprecated="not deprecated">
6242 </method>
6243 <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor"
6244 abstract="true" native="false" synchronized="false"
6245 static="false" final="false" visibility="protected"
6246 deprecated="not deprecated">
6247 </method>
6248 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006249 <![CDATA[Install this module to add guice-persist library support for JPA persistence
6250 providers.
6251
sameb1d3f8cd2014-10-07 15:32:12 -07006252 @author dhanji@gmail.com (Dhanji R. Prasanna)]]>
6253 </doc>
6254 </class>
6255 <!-- end class com.google.inject.persist.PersistModule -->
6256 <!-- start interface com.google.inject.persist.PersistService -->
6257 <interface name="PersistService" abstract="true"
6258 static="false" final="false" visibility="public"
6259 deprecated="not deprecated">
6260 <method name="start"
6261 abstract="false" native="false" synchronized="false"
6262 static="false" final="false" visibility="public"
6263 deprecated="not deprecated">
6264 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006265 <![CDATA[Starts the underlying persistence engine and makes guice-persist ready for
6266 use. For instance, with JPA, it creates an EntityManagerFactory and may
6267 open connection pools. This method must be called by your code prior to
6268 using any guice-persist or JPA artifacts. If already started,
6269 calling this method does nothing, if already stopped, it also does
sameb1d3f8cd2014-10-07 15:32:12 -07006270 nothing.]]>
6271 </doc>
6272 </method>
6273 <method name="stop"
6274 abstract="false" native="false" synchronized="false"
6275 static="false" final="false" visibility="public"
6276 deprecated="not deprecated">
6277 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006278 <![CDATA[Stops the underlying persistence engine. For instance, with JPA, it
6279 closes the {@code EntityManagerFactory}. If already stopped, calling this
sameb1d3f8cd2014-10-07 15:32:12 -07006280 method does nothing. If not yet started, it also does nothing.]]>
6281 </doc>
6282 </method>
6283 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006284 <![CDATA[Persistence provider service. Use this to manage the overall
6285 startup and stop of the persistence module(s).
6286
6287 TODO(dhanji): Integrate with Service API when appropriate.
6288
sameb1d3f8cd2014-10-07 15:32:12 -07006289 @author dhanji@gmail.com (Dhanji R. Prasanna)]]>
6290 </doc>
6291 </interface>
6292 <!-- end interface com.google.inject.persist.PersistService -->
6293 <!-- start class com.google.inject.persist.Transactional -->
6294 <class name="Transactional" abstract="true"
6295 static="false" final="false" visibility="public"
6296 deprecated="not deprecated">
6297 <implements name="java.lang.annotation.Annotation"/>
6298 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006299 <![CDATA[<p> Any method or class marked with this annotation will be considered for transactionality.
6300 Consult the documentation on http://code.google.com/p/google-guice for detailed semantics.
6301 Marking a method {@code @Transactional} will start a new transaction before the method
6302 executes and commit it after the method returns.
6303 <p>
6304 If the method throws an exception, the transaction will be rolled back <em>unless</em>
6305 you have specifically requested not to in the {@link #ignore()} clause.
6306 <p>
6307 Similarly, the set of exceptions that will trigger a rollback can be defined in
6308 the {@link #rollbackOn()} clause. By default, only unchecked exceptions trigger a
6309 rollback.
6310
sameb1d3f8cd2014-10-07 15:32:12 -07006311 @author Dhanji R. Prasanna (dhanji@gmail.com)]]>
6312 </doc>
6313 </class>
6314 <!-- end class com.google.inject.persist.Transactional -->
6315 <!-- start interface com.google.inject.persist.UnitOfWork -->
6316 <interface name="UnitOfWork" abstract="true"
6317 static="false" final="false" visibility="public"
6318 deprecated="not deprecated">
6319 <method name="begin"
6320 abstract="false" native="false" synchronized="false"
6321 static="false" final="false" visibility="public"
6322 deprecated="not deprecated">
6323 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006324 <![CDATA[Starts a Unit Of Work. Underneath, causes a session to the data layer to be opened. If there
6325 is already one open, the invocation will do nothing. In this way, you can define arbitrary
6326 units-of-work that nest within one another safely.
6327
sameb1d3f8cd2014-10-07 15:32:12 -07006328 Transaction semantics are not affected.]]>
6329 </doc>
6330 </method>
6331 <method name="end"
6332 abstract="false" native="false" synchronized="false"
6333 static="false" final="false" visibility="public"
6334 deprecated="not deprecated">
6335 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006336 <![CDATA[Declares an end to the current Unit of Work. Underneath, causes any open session to the data
6337 layer to close. If there is no Unit of work open, then the call returns silently. You can
6338 safely invoke end() repeatedly.
6339 <p>
sameb1d3f8cd2014-10-07 15:32:12 -07006340 Transaction semantics are not affected.]]>
6341 </doc>
6342 </method>
6343 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006344 <![CDATA[This interface is used to gain manual control over the unit of work. This is mostly to do
6345 work in non-request, non-transactional threads. Or where more fine-grained control over the unit
6346 of work is required. Starting and ending a unit of work directly corresponds to opening and
6347 closing a {@code Session}, {@code EntityManager} or {@code ObjectContainer} respectively.
6348 <p> The
6349 Unit of Work referred to by UnitOfWork will always be local to the calling thread. Be careful to
6350 end() in a finally block. Neither JPA, nor Hibernate supports threadsafe sessions (reasoning
6351 behind thread-locality of Unit of Work semantics).
6352
6353 <ul>
6354 <li>Using UnitOfWork with the PersistFilter inside a request is not recommended.</li>
6355 <li>Using UnitOfWork with session-per-txn strategy is not terribly clever either.</li>
6356 <li>Using UnitOfWork with session-per-request strategy but *outside* a request (i.e. in a
6357 background or bootstrap thread) is probably a good use case.</li>
6358 </ul>
6359
sameb1d3f8cd2014-10-07 15:32:12 -07006360 @author Dhanji R. Prasanna (dhanji@gmail com)]]>
6361 </doc>
6362 </interface>
6363 <!-- end interface com.google.inject.persist.UnitOfWork -->
6364</package>
6365<package name="com.google.inject.persist.finder">
6366 <!-- start class com.google.inject.persist.finder.DynamicFinder -->
6367 <class name="DynamicFinder" extends="java.lang.Object"
6368 abstract="false"
6369 static="false" final="true" visibility="public"
6370 deprecated="not deprecated">
6371 <constructor name="DynamicFinder" type="java.lang.reflect.Method"
6372 static="false" final="false" visibility="public"
6373 deprecated="not deprecated">
6374 </constructor>
6375 <method name="from" return="com.google.inject.persist.finder.DynamicFinder"
6376 abstract="false" native="false" synchronized="false"
6377 static="true" final="false" visibility="public"
6378 deprecated="not deprecated">
6379 <param name="method" type="java.lang.reflect.Method"/>
6380 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006381 <![CDATA[Returns some metadata if the method is annotated {@code @Finder} or null.
6382
sameb1d3f8cd2014-10-07 15:32:12 -07006383 @param method a method you want to test as a dynamic finder]]>
6384 </doc>
6385 </method>
6386 <method name="metadata" return="com.google.inject.persist.finder.Finder"
6387 abstract="false" native="false" synchronized="false"
6388 static="false" final="false" visibility="public"
6389 deprecated="not deprecated">
6390 </method>
6391 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006392 <![CDATA[Utility that helps you introspect dynamic finder methods.
6393
sameb1d3f8cd2014-10-07 15:32:12 -07006394 @author dhanji@gmail.com (Dhanji R. Prasanna)]]>
6395 </doc>
6396 </class>
6397 <!-- end class com.google.inject.persist.finder.DynamicFinder -->
6398 <!-- start class com.google.inject.persist.finder.Finder -->
6399 <class name="Finder" abstract="true"
6400 static="false" final="false" visibility="public"
6401 deprecated="not deprecated">
6402 <implements name="java.lang.annotation.Annotation"/>
6403 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006404 <![CDATA[Marks a method stub as a dynamic finder. The method is intercepted and replaced with the
6405 specified JPAQL query. Provides result auto-boxing and automatic parameter binding.
6406
sameb1d3f8cd2014-10-07 15:32:12 -07006407 @author Dhanji R. Prasanna (dhanji@gmail.com)]]>
6408 </doc>
6409 </class>
6410 <!-- end class com.google.inject.persist.finder.Finder -->
6411 <!-- start class com.google.inject.persist.finder.FirstResult -->
6412 <class name="FirstResult" abstract="true"
6413 static="false" final="false" visibility="public"
6414 deprecated="not deprecated">
6415 <implements name="java.lang.annotation.Annotation"/>
6416 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006417 <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in
6418 the index of the first result in the result set you are interested in.
6419 Useful for paging result sets. Complemented by {@link MaxResults}.
6420
sameb1d3f8cd2014-10-07 15:32:12 -07006421 @author Dhanji R. Prasanna (dhanji@gmail.com)]]>
6422 </doc>
6423 </class>
6424 <!-- end class com.google.inject.persist.finder.FirstResult -->
6425 <!-- start class com.google.inject.persist.finder.MaxResults -->
6426 <class name="MaxResults" abstract="true"
6427 static="false" final="false" visibility="public"
6428 deprecated="not deprecated">
6429 <implements name="java.lang.annotation.Annotation"/>
6430 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006431 <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in
6432 the maximum size of returned result window. Usefule for paging result sets.
6433 Complement of {@link FirstResult}.
6434
sameb1d3f8cd2014-10-07 15:32:12 -07006435 @author Dhanji R. Prasanna (dhanji@gmail.com)]]>
6436 </doc>
6437 </class>
6438 <!-- end class com.google.inject.persist.finder.MaxResults -->
6439</package>
6440<package name="com.google.inject.persist.jpa">
6441 <!-- start class com.google.inject.persist.jpa.JpaPersistModule -->
6442 <class name="JpaPersistModule" extends="com.google.inject.persist.PersistModule"
6443 abstract="false"
6444 static="false" final="true" visibility="public"
6445 deprecated="not deprecated">
6446 <constructor name="JpaPersistModule" type="java.lang.String"
6447 static="false" final="false" visibility="public"
6448 deprecated="not deprecated">
6449 </constructor>
6450 <method name="configurePersistence"
6451 abstract="false" native="false" synchronized="false"
6452 static="false" final="false" visibility="protected"
6453 deprecated="not deprecated">
6454 </method>
6455 <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor"
6456 abstract="false" native="false" synchronized="false"
6457 static="false" final="false" visibility="protected"
6458 deprecated="not deprecated">
6459 </method>
6460 <method name="properties" return="com.google.inject.persist.jpa.JpaPersistModule"
6461 abstract="false" native="false" synchronized="false"
6462 static="false" final="false" visibility="public"
6463 deprecated="not deprecated">
6464 <param name="properties" type="java.util.Properties"/>
6465 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006466 <![CDATA[Configures the JPA persistence provider with a set of properties.
6467
6468 @param properties A set of name value pairs that configure a JPA persistence
sameb1d3f8cd2014-10-07 15:32:12 -07006469 provider as per the specification.]]>
6470 </doc>
6471 </method>
6472 <method name="addFinder" return="com.google.inject.persist.jpa.JpaPersistModule"
6473 abstract="false" native="false" synchronized="false"
6474 static="false" final="false" visibility="public"
6475 deprecated="not deprecated">
6476 <param name="iface" type="java.lang.Class&lt;T&gt;"/>
6477 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006478 <![CDATA[Adds an interface to this module to use as a dynamic finder.
6479
sameb1d3f8cd2014-10-07 15:32:12 -07006480 @param iface Any interface type whose methods are all dynamic finders.]]>
6481 </doc>
6482 </method>
6483 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006484 <![CDATA[JPA provider for guice persist.
6485
sameb1d3f8cd2014-10-07 15:32:12 -07006486 @author dhanji@gmail.com (Dhanji R. Prasanna)]]>
6487 </doc>
6488 </class>
6489 <!-- end class com.google.inject.persist.jpa.JpaPersistModule -->
6490</package>
6491<package name="com.google.inject.servlet">
6492 <!-- start class com.google.inject.servlet.GuiceFilter -->
6493 <class name="GuiceFilter" extends="java.lang.Object"
6494 abstract="false"
6495 static="false" final="false" visibility="public"
6496 deprecated="not deprecated">
6497 <constructor name="GuiceFilter"
6498 static="false" final="false" visibility="public"
6499 deprecated="not deprecated">
6500 </constructor>
6501 <method name="doFilter"
6502 abstract="false" native="false" synchronized="false"
6503 static="false" final="false" visibility="public"
6504 deprecated="not deprecated">
6505 <param name="servletRequest" type="ServletRequest"/>
6506 <param name="servletResponse" type="ServletResponse"/>
6507 <param name="filterChain" type="FilterChain"/>
6508 <exception name="IOException" type="java.io.IOException"/>
6509 <exception name="ServletException" type="ServletException"/>
6510 </method>
6511 <method name="init"
6512 abstract="false" native="false" synchronized="false"
6513 static="false" final="false" visibility="public"
6514 deprecated="not deprecated">
6515 <param name="filterConfig" type="FilterConfig"/>
6516 <exception name="ServletException" type="ServletException"/>
6517 </method>
6518 <method name="destroy"
6519 abstract="false" native="false" synchronized="false"
6520 static="false" final="false" visibility="public"
6521 deprecated="not deprecated">
6522 </method>
6523 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006524 <![CDATA[<p>
6525 Apply this filter in web.xml above all other filters (typically), to all requests where you plan
6526 to use servlet scopes. This is also needed in order to dispatch requests to injectable filters
6527 and servlets:
6528 <pre>
6529 &lt;filter&gt;
6530 &lt;filter-name&gt;guiceFilter&lt;/filter-name&gt;
6531 &lt;filter-class&gt;<b>com.google.inject.servlet.GuiceFilter</b>&lt;/filter-class&gt;
6532 &lt;/filter&gt;
6533
6534 &lt;filter-mapping&gt;
6535 &lt;filter-name&gt;guiceFilter&lt;/filter-name&gt;
6536 &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
6537 &lt;/filter-mapping&gt;
6538 </pre>
6539
6540 This filter must appear before every filter that makes use of Guice injection or servlet
6541 scopes functionality. Typically, you will only register this filter in web.xml and register
6542 any other filters (and servlets) using a {@link ServletModule}.
6543
6544 @author crazybob@google.com (Bob Lee)
sameb1d3f8cd2014-10-07 15:32:12 -07006545 @author dhanji@gmail.com (Dhanji R. Prasanna)]]>
6546 </doc>
6547 </class>
6548 <!-- end class com.google.inject.servlet.GuiceFilter -->
6549 <!-- start class com.google.inject.servlet.GuiceServletContextListener -->
6550 <class name="GuiceServletContextListener" extends="java.lang.Object"
6551 abstract="true"
6552 static="false" final="false" visibility="public"
6553 deprecated="not deprecated">
6554 <constructor name="GuiceServletContextListener"
6555 static="false" final="false" visibility="public"
6556 deprecated="not deprecated">
6557 </constructor>
6558 <method name="contextInitialized"
6559 abstract="false" native="false" synchronized="false"
6560 static="false" final="false" visibility="public"
6561 deprecated="not deprecated">
6562 <param name="servletContextEvent" type="ServletContextEvent"/>
6563 </method>
6564 <method name="contextDestroyed"
6565 abstract="false" native="false" synchronized="false"
6566 static="false" final="false" visibility="public"
6567 deprecated="not deprecated">
6568 <param name="servletContextEvent" type="ServletContextEvent"/>
6569 </method>
6570 <method name="getInjector" return="com.google.inject.Injector"
6571 abstract="true" native="false" synchronized="false"
6572 static="false" final="false" visibility="protected"
6573 deprecated="not deprecated">
6574 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006575 <![CDATA[Override this method to create (or otherwise obtain a reference to) your
sameb1d3f8cd2014-10-07 15:32:12 -07006576 injector.]]>
6577 </doc>
6578 </method>
6579 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006580 <![CDATA[As of Guice 2.0 you can still use (your subclasses of) {@code GuiceServletContextListener}
6581 class as a logical place to create and configure your injector. This will ensure the injector
6582 is created when the web application is deployed.
6583
6584 @author Kevin Bourrillion (kevinb@google.com)
sameb1d3f8cd2014-10-07 15:32:12 -07006585 @since 2.0]]>
6586 </doc>
6587 </class>
6588 <!-- end class com.google.inject.servlet.GuiceServletContextListener -->
6589 <!-- start interface com.google.inject.servlet.InstanceFilterBinding -->
6590 <interface name="InstanceFilterBinding" abstract="true"
6591 static="false" final="false" visibility="public"
6592 deprecated="not deprecated">
6593 <implements name="com.google.inject.servlet.ServletModuleBinding"/>
6594 <method name="getFilterInstance" return="Filter"
6595 abstract="false" native="false" synchronized="false"
6596 static="false" final="false" visibility="public"
6597 deprecated="not deprecated">
6598 <doc>
6599 <![CDATA[Returns the filter instance that will be used.]]>
6600 </doc>
6601 </method>
6602 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006603 <![CDATA[A binding to a single instance of a filter.
6604
6605 @author sameb@google.com
sameb1d3f8cd2014-10-07 15:32:12 -07006606 @since 3.0]]>
6607 </doc>
6608 </interface>
6609 <!-- end interface com.google.inject.servlet.InstanceFilterBinding -->
6610 <!-- start interface com.google.inject.servlet.InstanceServletBinding -->
6611 <interface name="InstanceServletBinding" abstract="true"
6612 static="false" final="false" visibility="public"
6613 deprecated="not deprecated">
6614 <implements name="com.google.inject.servlet.ServletModuleBinding"/>
6615 <method name="getServletInstance" return="HttpServlet"
6616 abstract="false" native="false" synchronized="false"
6617 static="false" final="false" visibility="public"
6618 deprecated="not deprecated">
6619 <doc>
6620 <![CDATA[Returns the servlet instance that will be used.]]>
6621 </doc>
6622 </method>
6623 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006624 <![CDATA[A binding to a single instance of a servlet.
6625
6626 @author sameb@google.com
sameb1d3f8cd2014-10-07 15:32:12 -07006627 @since 3.0]]>
6628 </doc>
6629 </interface>
6630 <!-- end interface com.google.inject.servlet.InstanceServletBinding -->
6631 <!-- start interface com.google.inject.servlet.LinkedFilterBinding -->
6632 <interface name="LinkedFilterBinding" abstract="true"
6633 static="false" final="false" visibility="public"
6634 deprecated="not deprecated">
6635 <implements name="com.google.inject.servlet.ServletModuleBinding"/>
6636 <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends Filter&gt;"
6637 abstract="false" native="false" synchronized="false"
6638 static="false" final="false" visibility="public"
6639 deprecated="not deprecated">
6640 <doc>
6641 <![CDATA[Returns the key used to lookup the filter instance.]]>
6642 </doc>
6643 </method>
6644 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006645 <![CDATA[A linked binding to a filter.
6646
6647 @author sameb@google.com
sameb1d3f8cd2014-10-07 15:32:12 -07006648 @since 3.0]]>
6649 </doc>
6650 </interface>
6651 <!-- end interface com.google.inject.servlet.LinkedFilterBinding -->
6652 <!-- start interface com.google.inject.servlet.LinkedServletBinding -->
6653 <interface name="LinkedServletBinding" abstract="true"
6654 static="false" final="false" visibility="public"
6655 deprecated="not deprecated">
6656 <implements name="com.google.inject.servlet.ServletModuleBinding"/>
6657 <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends HttpServlet&gt;"
6658 abstract="false" native="false" synchronized="false"
6659 static="false" final="false" visibility="public"
6660 deprecated="not deprecated">
6661 <doc>
6662 <![CDATA[Returns the key used to lookup the servlet instance.]]>
6663 </doc>
6664 </method>
6665 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006666 <![CDATA[A linked binding to a servlet.
6667
6668 @author sameb@google.com
sameb1d3f8cd2014-10-07 15:32:12 -07006669 @since 3.0]]>
6670 </doc>
6671 </interface>
6672 <!-- end interface com.google.inject.servlet.LinkedServletBinding -->
6673 <!-- start class com.google.inject.servlet.RequestParameters -->
6674 <class name="RequestParameters" abstract="true"
6675 static="false" final="false" visibility="public"
6676 deprecated="not deprecated">
6677 <implements name="java.lang.annotation.Annotation"/>
6678 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006679 <![CDATA[Apply this to field or parameters of type {@code Map<String, String[]>}
6680 when you want the HTTP request parameter map to be injected.
6681
sameb1d3f8cd2014-10-07 15:32:12 -07006682 @author crazybob@google.com (Bob Lee)]]>
6683 </doc>
6684 </class>
6685 <!-- end class com.google.inject.servlet.RequestParameters -->
6686 <!-- start class com.google.inject.servlet.RequestScoped -->
6687 <class name="RequestScoped" abstract="true"
6688 static="false" final="false" visibility="public"
6689 deprecated="not deprecated">
6690 <implements name="java.lang.annotation.Annotation"/>
6691 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006692 <![CDATA[Apply this to implementation classes when you want one instance per request.
6693
sameb1d3f8cd2014-10-07 15:32:12 -07006694 @author crazybob@google.com (Bob Lee)]]>
6695 </doc>
6696 </class>
6697 <!-- end class com.google.inject.servlet.RequestScoped -->
6698 <!-- start class com.google.inject.servlet.ServletModule -->
6699 <class name="ServletModule" extends="com.google.inject.AbstractModule"
6700 abstract="false"
6701 static="false" final="false" visibility="public"
6702 deprecated="not deprecated">
6703 <constructor name="ServletModule"
6704 static="false" final="false" visibility="public"
6705 deprecated="not deprecated">
6706 </constructor>
6707 <method name="configure"
6708 abstract="false" native="false" synchronized="false"
6709 static="false" final="true" visibility="protected"
6710 deprecated="not deprecated">
6711 </method>
6712 <method name="configureServlets"
6713 abstract="false" native="false" synchronized="false"
6714 static="false" final="false" visibility="protected"
6715 deprecated="not deprecated">
6716 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006717 <![CDATA[<h3>Servlet Mapping EDSL</h3>
6718
6719 <p> Part of the EDSL builder language for configuring servlets
6720 and filters with guice-servlet. Think of this as an in-code replacement for web.xml.
6721 Filters and servlets are configured here using simple java method calls. Here is a typical
6722 example of registering a filter when creating your Guice injector:
6723
6724 <pre>
6725 Guice.createInjector(..., new ServletModule() {
6726
6727 {@literal @}Override
6728 protected void configureServlets() {
6729 <b>serve("*.html").with(MyServlet.class)</b>
6730 }
6731 }
6732 </pre>
6733
6734 This registers a servlet (subclass of {@code HttpServlet}) called {@code MyServlet} to service
6735 any web pages ending in {@code .html}. You can also use a path-style syntax to register
6736 servlets:
6737
6738 <pre>
6739 <b>serve("/my/*").with(MyServlet.class)</b>
6740 </pre>
6741
6742 Every servlet (or filter) is required to be a singleton. If you cannot annotate the class
6743 directly, you should add a separate {@code bind(..).in(Singleton.class)} rule elsewhere in
6744 your module. Mapping a servlet that is bound under any other scope is an error.
6745
6746 <p>
6747 <h4>Dispatch Order</h4>
6748 You are free to register as many servlets and filters as you like this way. They will
6749 be compared and dispatched in the order in which the filter methods are called:
6750
6751 <pre>
6752
6753 Guice.createInjector(..., new ServletModule() {
6754
6755 {@literal @}Override
6756 protected void configureServlets() {
6757 filter("/*").through(MyFilter.class);
6758 filter("*.css").through(MyCssFilter.class);
6759 filter("*.jpg").through(new MyJpgFilter());
6760 // etc..
6761
6762 serve("*.html").with(MyServlet.class);
6763 serve("/my/*").with(MyServlet.class);
6764 serve("*.jpg").with(new MyServlet());
6765 // etc..
6766 }
6767 }
6768 </pre>
6769 This will traverse down the list of rules in lexical order. For example, a url
6770 "{@code /my/file.js}" (after it runs through the matching filters) will first
6771 be compared against the servlet mapping:
6772
6773 <pre>
6774 serve("*.html").with(MyServlet.class);
6775 </pre>
6776 And failing that, it will descend to the next servlet mapping:
6777
6778 <pre>
6779 serve("/my/*").with(MyServlet.class);
6780 </pre>
6781
6782 Since this rule matches, Guice Servlet will dispatch to {@code MyServlet}. These
6783 two mapping rules can also be written in more compact form using varargs syntax:
6784
6785 <pre>
6786 serve(<b>"*.html", "/my/*"</b>).with(MyServlet.class);
6787 </pre>
6788
6789 This way you can map several URI patterns to the same servlet. A similar syntax is
6790 also available for filter mappings.
6791
6792 <p>
6793 <h4>Regular Expressions</h4>
6794 You can also map servlets (or filters) to URIs using regular expressions:
6795 <pre>
6796 <b>serveRegex("(.)*ajax(.)*").with(MyAjaxServlet.class)</b>
6797 </pre>
6798
6799 This will map any URI containing the text "ajax" in it to {@code MyAjaxServlet}. Such as:
6800 <ul>
6801 <li>http://www.google.com/ajax.html</li>
6802 <li>http://www.google.com/content/ajax/index</li>
6803 <li>http://www.google.com/it/is_totally_ajaxian</li>
6804 </ul>
6805
6806
6807 <h3>Initialization Parameters</h3>
6808
6809 Servlets (and filters) allow you to pass in init params
6810 using the {@code <init-param>} tag in web.xml. You can similarly pass in parameters to
6811 Servlets and filters registered in Guice-servlet using a {@link java.util.Map} of parameter
6812 name/value pairs. For example, to initialize {@code MyServlet} with two parameters
6813 ({@code name="Dhanji", site="google.com"}) you could write:
6814
6815 <pre>
6816 Map&lt;String, String&gt; params = new HashMap&lt;String, String&gt;();
6817 params.put("name", "Dhanji");
6818 params.put("site", "google.com");
6819
6820 ...
6821 serve("/*").with(MyServlet.class, <b>params</b>)
6822 </pre>
6823
6824 <p>
6825 <h3>Binding Keys</h3>
6826
6827 You can also bind keys rather than classes. This lets you hide
6828 implementations with package-local visbility and expose them using
6829 only a Guice module and an annotation:
6830
6831 <pre>
6832 ...
6833 filter("/*").through(<b>Key.get(Filter.class, Fave.class)</b>);
6834 </pre>
6835
6836 Where {@code Filter.class} refers to the Servlet API interface and {@code Fave.class} is a
6837 custom binding annotation. Elsewhere (in one of your own modules) you can bind this
6838 filter's implementation:
6839
6840 <pre>
6841 bind(Filter.class)<b>.annotatedWith(Fave.class)</b>.to(MyFilterImpl.class);
6842 </pre>
6843
6844 See {@link com.google.inject.Binder} for more information on binding syntax.
6845
6846 <p>
6847 <h3>Multiple Modules</h3>
6848
6849 It is sometimes useful to capture servlet and filter mappings from multiple different
6850 modules. This is essential if you want to package and offer drop-in Guice plugins that
6851 provide servlet functionality.
6852
6853 <p>
6854 Guice Servlet allows you to register several instances of {@code ServletModule} to your
6855 injector. The order in which these modules are installed determines the dispatch order
6856 of filters and the precedence order of servlets. For example, if you had two servlet modules,
6857 {@code RpcModule} and {@code WebServiceModule} and they each contained a filter that mapped
6858 to the same URI pattern, {@code "/*"}:
6859
6860 <p>
6861 In {@code RpcModule}:
6862 <pre>
6863 filter("/*").through(RpcFilter.class);
6864 </pre>
6865
6866 In {@code WebServiceModule}:
6867 <pre>
6868 filter("/*").through(WebServiceFilter.class);
6869 </pre>
6870
6871 Then the order in which these filters are dispatched is determined by the order in which
6872 the modules are installed:
6873
6874 <pre>
6875 <b>install(new WebServiceModule());</b>
6876 install(new RpcModule());
6877 </pre>
6878
6879 In the case shown above {@code WebServiceFilter} will run first.
6880
sameb1d3f8cd2014-10-07 15:32:12 -07006881 @since 2.0]]>
6882 </doc>
6883 </method>
6884 <method name="filter" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder"
6885 abstract="false" native="false" synchronized="false"
6886 static="false" final="true" visibility="protected"
6887 deprecated="not deprecated">
6888 <param name="urlPattern" type="java.lang.String"/>
6889 <param name="morePatterns" type="java.lang.String[]"/>
6890 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006891 <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc.
sameb1d3f8cd2014-10-07 15:32:12 -07006892 @since 2.0]]>
6893 </doc>
6894 </method>
6895 <method name="filterRegex" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder"
6896 abstract="false" native="false" synchronized="false"
6897 static="false" final="true" visibility="protected"
6898 deprecated="not deprecated">
6899 <param name="regex" type="java.lang.String"/>
6900 <param name="regexes" type="java.lang.String[]"/>
6901 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006902 <![CDATA[@param regex Any Java-style regular expression.
sameb1d3f8cd2014-10-07 15:32:12 -07006903 @since 2.0]]>
6904 </doc>
6905 </method>
6906 <method name="serve" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder"
6907 abstract="false" native="false" synchronized="false"
6908 static="false" final="true" visibility="protected"
6909 deprecated="not deprecated">
6910 <param name="urlPattern" type="java.lang.String"/>
6911 <param name="morePatterns" type="java.lang.String[]"/>
6912 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006913 <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc.
sameb1d3f8cd2014-10-07 15:32:12 -07006914 @since 2.0]]>
6915 </doc>
6916 </method>
6917 <method name="serveRegex" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder"
6918 abstract="false" native="false" synchronized="false"
6919 static="false" final="true" visibility="protected"
6920 deprecated="not deprecated">
6921 <param name="regex" type="java.lang.String"/>
6922 <param name="regexes" type="java.lang.String[]"/>
6923 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006924 <![CDATA[@param regex Any Java-style regular expression.
sameb1d3f8cd2014-10-07 15:32:12 -07006925 @since 2.0]]>
6926 </doc>
6927 </method>
6928 <method name="getServletContext" return="ServletContext"
6929 abstract="false" native="false" synchronized="false"
6930 static="false" final="true" visibility="protected"
6931 deprecated="not deprecated">
6932 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006933 <![CDATA[This method only works if you are using the {@linkplain GuiceServletContextListener} to
6934 create your injector. Otherwise, it returns null.
6935 @return The current servlet context.
sameb1d3f8cd2014-10-07 15:32:12 -07006936 @since 3.0]]>
6937 </doc>
6938 </method>
6939 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006940 <![CDATA[Configures the servlet scopes and creates bindings for the servlet API
6941 objects so you can inject the request, response, session, etc.
6942
6943 <p>
6944 You should subclass this module to register servlets and
6945 filters in the {@link #configureServlets()} method.
6946
6947 @author crazybob@google.com (Bob Lee)
sameb1d3f8cd2014-10-07 15:32:12 -07006948 @author dhanji@gmail.com (Dhanji R. Prasanna)]]>
6949 </doc>
6950 </class>
6951 <!-- end class com.google.inject.servlet.ServletModule -->
6952 <!-- start interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder -->
6953 <interface name="ServletModule.FilterKeyBindingBuilder" abstract="true"
6954 static="true" final="false" visibility="public"
6955 deprecated="not deprecated">
6956 <method name="through"
6957 abstract="false" native="false" synchronized="false"
6958 static="false" final="false" visibility="public"
6959 deprecated="not deprecated">
6960 <param name="filterKey" type="java.lang.Class&lt;? extends Filter&gt;"/>
6961 </method>
6962 <method name="through"
6963 abstract="false" native="false" synchronized="false"
6964 static="false" final="false" visibility="public"
6965 deprecated="not deprecated">
6966 <param name="filterKey" type="com.google.inject.Key&lt;? extends Filter&gt;"/>
6967 </method>
6968 <method name="through"
6969 abstract="false" native="false" synchronized="false"
6970 static="false" final="false" visibility="public"
6971 deprecated="not deprecated">
6972 <param name="filter" type="Filter"/>
6973 <doc>
6974 <![CDATA[@since 3.0]]>
6975 </doc>
6976 </method>
6977 <method name="through"
6978 abstract="false" native="false" synchronized="false"
6979 static="false" final="false" visibility="public"
6980 deprecated="not deprecated">
6981 <param name="filterKey" type="java.lang.Class&lt;? extends Filter&gt;"/>
6982 <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
6983 </method>
6984 <method name="through"
6985 abstract="false" native="false" synchronized="false"
6986 static="false" final="false" visibility="public"
6987 deprecated="not deprecated">
6988 <param name="filterKey" type="com.google.inject.Key&lt;? extends Filter&gt;"/>
6989 <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
6990 </method>
6991 <method name="through"
6992 abstract="false" native="false" synchronized="false"
6993 static="false" final="false" visibility="public"
6994 deprecated="not deprecated">
6995 <param name="filter" type="Filter"/>
6996 <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
6997 <doc>
6998 <![CDATA[@since 3.0]]>
6999 </doc>
7000 </method>
7001 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007002 <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()}
7003
sameb1d3f8cd2014-10-07 15:32:12 -07007004 @since 2.0]]>
7005 </doc>
7006 </interface>
7007 <!-- end interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder -->
7008 <!-- start interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder -->
7009 <interface name="ServletModule.ServletKeyBindingBuilder" abstract="true"
7010 static="true" final="false" visibility="public"
7011 deprecated="not deprecated">
7012 <method name="with"
7013 abstract="false" native="false" synchronized="false"
7014 static="false" final="false" visibility="public"
7015 deprecated="not deprecated">
7016 <param name="servletKey" type="java.lang.Class&lt;? extends HttpServlet&gt;"/>
7017 </method>
7018 <method name="with"
7019 abstract="false" native="false" synchronized="false"
7020 static="false" final="false" visibility="public"
7021 deprecated="not deprecated">
7022 <param name="servletKey" type="com.google.inject.Key&lt;? extends HttpServlet&gt;"/>
7023 </method>
7024 <method name="with"
7025 abstract="false" native="false" synchronized="false"
7026 static="false" final="false" visibility="public"
7027 deprecated="not deprecated">
7028 <param name="servlet" type="HttpServlet"/>
7029 <doc>
7030 <![CDATA[@since 3.0]]>
7031 </doc>
7032 </method>
7033 <method name="with"
7034 abstract="false" native="false" synchronized="false"
7035 static="false" final="false" visibility="public"
7036 deprecated="not deprecated">
7037 <param name="servletKey" type="java.lang.Class&lt;? extends HttpServlet&gt;"/>
7038 <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
7039 </method>
7040 <method name="with"
7041 abstract="false" native="false" synchronized="false"
7042 static="false" final="false" visibility="public"
7043 deprecated="not deprecated">
7044 <param name="servletKey" type="com.google.inject.Key&lt;? extends HttpServlet&gt;"/>
7045 <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
7046 </method>
7047 <method name="with"
7048 abstract="false" native="false" synchronized="false"
7049 static="false" final="false" visibility="public"
7050 deprecated="not deprecated">
7051 <param name="servlet" type="HttpServlet"/>
7052 <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
7053 <doc>
7054 <![CDATA[@since 3.0]]>
7055 </doc>
7056 </method>
7057 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007058 <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()}
7059
sameb1d3f8cd2014-10-07 15:32:12 -07007060 @since 2.0]]>
7061 </doc>
7062 </interface>
7063 <!-- end interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder -->
7064 <!-- start interface com.google.inject.servlet.ServletModuleBinding -->
7065 <interface name="ServletModuleBinding" abstract="true"
7066 static="false" final="false" visibility="public"
7067 deprecated="not deprecated">
7068 <method name="getUriPatternType" return="com.google.inject.servlet.UriPatternType"
7069 abstract="false" native="false" synchronized="false"
7070 static="false" final="false" visibility="public"
7071 deprecated="not deprecated">
7072 <doc>
7073 <![CDATA[Returns the pattern type that this binding was created with.]]>
7074 </doc>
7075 </method>
7076 <method name="getPattern" return="java.lang.String"
7077 abstract="false" native="false" synchronized="false"
7078 static="false" final="false" visibility="public"
7079 deprecated="not deprecated">
7080 <doc>
7081 <![CDATA[Returns the pattern used to match against the binding.]]>
7082 </doc>
7083 </method>
7084 <method name="getInitParams" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
7085 abstract="false" native="false" synchronized="false"
7086 static="false" final="false" visibility="public"
7087 deprecated="not deprecated">
7088 <doc>
7089 <![CDATA[Returns any context params supplied when creating the binding.]]>
7090 </doc>
7091 </method>
7092 <method name="matchesUri" return="boolean"
7093 abstract="false" native="false" synchronized="false"
7094 static="false" final="false" visibility="public"
7095 deprecated="not deprecated">
7096 <param name="uri" type="java.lang.String"/>
7097 <doc>
7098 <![CDATA[Returns true if the given URI will match this binding.]]>
7099 </doc>
7100 </method>
7101 <doc>
sberlin@gmail.com251cda62010-12-09 03:27:02 +00007102 <![CDATA[A binding created by {@link ServletModule}.
7103
7104 @author sameb@google.com (Sam Berlin)
sameb1d3f8cd2014-10-07 15:32:12 -07007105 @since 3.0]]>
7106 </doc>
7107 </interface>
7108 <!-- end interface com.google.inject.servlet.ServletModuleBinding -->
7109 <!-- start interface com.google.inject.servlet.ServletModuleTargetVisitor -->
7110 <interface name="ServletModuleTargetVisitor" abstract="true"
7111 static="false" final="false" visibility="public"
7112 deprecated="not deprecated">
7113 <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
7114 <method name="visit" return="V"
7115 abstract="false" native="false" synchronized="false"
7116 static="false" final="false" visibility="public"
7117 deprecated="not deprecated">
7118 <param name="binding" type="com.google.inject.servlet.LinkedFilterBinding"/>
7119 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007120 <![CDATA[Visits a filter binding created by {@link ServletModule#filter}, where
7121 {@link FilterKeyBindingBuilder#through} is called with a Class or Key.
7122
sameb1d3f8cd2014-10-07 15:32:12 -07007123 If multiple patterns were specified, this will be called multiple times.]]>
7124 </doc>
7125 </method>
7126 <method name="visit" return="V"
7127 abstract="false" native="false" synchronized="false"
7128 static="false" final="false" visibility="public"
7129 deprecated="not deprecated">
7130 <param name="binding" type="com.google.inject.servlet.InstanceFilterBinding"/>
7131 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007132 <![CDATA[Visits a filter binding created by {@link ServletModule#filter} where
7133 {@link FilterKeyBindingBuilder#through} is called with a {@link Filter}.
7134
sameb1d3f8cd2014-10-07 15:32:12 -07007135 If multiple patterns were specified, this will be called multiple times.]]>
7136 </doc>
7137 </method>
7138 <method name="visit" return="V"
7139 abstract="false" native="false" synchronized="false"
7140 static="false" final="false" visibility="public"
7141 deprecated="not deprecated">
7142 <param name="binding" type="com.google.inject.servlet.LinkedServletBinding"/>
7143 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007144 <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where
7145 {@link ServletKeyBindingBuilder#with}, is called with a Class or Key.
7146
sameb1d3f8cd2014-10-07 15:32:12 -07007147 If multiple patterns were specified, this will be called multiple times.]]>
7148 </doc>
7149 </method>
7150 <method name="visit" return="V"
7151 abstract="false" native="false" synchronized="false"
7152 static="false" final="false" visibility="public"
7153 deprecated="not deprecated">
7154 <param name="binding" type="com.google.inject.servlet.InstanceServletBinding"/>
7155 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007156 <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where
7157 {@link ServletKeyBindingBuilder#with}, is called with an {@link HttpServlet}.
7158
sameb1d3f8cd2014-10-07 15:32:12 -07007159 If multiple patterns were specified, this will be called multiple times.]]>
7160 </doc>
7161 </method>
7162 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007163 <![CDATA[A visitor for the servlet extension.
7164
7165 If your {@link BindingTargetVisitor} implements this interface, bindings created by using
7166 {@link ServletModule} will be visited through this interface.
7167
7168 @since 3.0
sameb1d3f8cd2014-10-07 15:32:12 -07007169 @author sameb@google.com (Sam Berlin)]]>
7170 </doc>
7171 </interface>
7172 <!-- end interface com.google.inject.servlet.ServletModuleTargetVisitor -->
7173 <!-- start class com.google.inject.servlet.ServletScopes -->
7174 <class name="ServletScopes" extends="java.lang.Object"
7175 abstract="false"
7176 static="false" final="false" visibility="public"
7177 deprecated="not deprecated">
7178 <method name="continueRequest" return="java.util.concurrent.Callable&lt;T&gt;"
7179 abstract="false" native="false" synchronized="false"
7180 static="true" final="false" visibility="public"
7181 deprecated="not deprecated">
7182 <param name="callable" type="java.util.concurrent.Callable&lt;T&gt;"/>
7183 <param name="seedMap" type="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, java.lang.Object&gt;"/>
7184 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007185 <![CDATA[Wraps the given callable in a contextual callable that "continues" the
7186 HTTP request in another thread. This acts as a way of transporting
7187 request context data from the request processing thread to to worker
7188 threads.
7189 <p>
7190 There are some limitations:
7191 <ul>
7192 <li>Derived objects (i.e. anything marked @RequestScoped will not be
7193 transported.</li>
7194 <li>State changes to the HttpServletRequest after this method is called
7195 will not be seen in the continued thread.</li>
7196 <li>Only the HttpServletRequest, ServletContext and request parameter
7197 map are available in the continued thread. The response and session
7198 are not available.</li>
7199 </ul>
7200
7201 @param callable code to be executed in another thread, which depends on
7202 the request scope.
sberlin@gmail.com251cda62010-12-09 03:27:02 +00007203 @param seedMap the initial set of scoped instances for Guice to seed the
7204 request scope with. To seed a key with null, use {@code null} as
7205 the value.
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007206 @return a callable that will invoke the given callable, making the request
7207 context available to it.
7208 @throws OutOfScopeException if this method is called from a non-request
7209 thread, or if the request has completed.
7210
sameb1d3f8cd2014-10-07 15:32:12 -07007211 @since 3.0]]>
7212 </doc>
7213 </method>
7214 <method name="scopeRequest" return="java.util.concurrent.Callable&lt;T&gt;"
7215 abstract="false" native="false" synchronized="false"
7216 static="true" final="false" visibility="public"
7217 deprecated="not deprecated">
7218 <param name="callable" type="java.util.concurrent.Callable&lt;T&gt;"/>
7219 <param name="seedMap" type="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, java.lang.Object&gt;"/>
7220 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007221 <![CDATA[Scopes the given callable inside a request scope. This is not the same
7222 as the HTTP request scope, but is used if no HTTP request scope is in
7223 progress. In this way, keys can be scoped as @RequestScoped and exist
7224 in non-HTTP requests (for example: RPC requests) as well as in HTTP
7225 request threads.
7226
7227 @param callable code to be executed which depends on the request scope.
7228 Typically in another thread, but not necessarily so.
7229 @param seedMap the initial set of scoped instances for Guice to seed the
sberlin@gmail.com251cda62010-12-09 03:27:02 +00007230 request scope with. To seed a key with null, use {@code null} as
7231 the value.
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007232 @return a callable that when called will run inside the a request scope
7233 that exposes the instances in the {@code seedMap} as scoped keys.
sameb1d3f8cd2014-10-07 15:32:12 -07007234 @since 3.0]]>
7235 </doc>
7236 </method>
7237 <field name="REQUEST" type="com.google.inject.Scope"
7238 transient="false" volatile="false"
7239 static="true" final="true" visibility="public"
7240 deprecated="not deprecated">
7241 <doc>
7242 <![CDATA[HTTP servlet request scope.]]>
7243 </doc>
7244 </field>
7245 <field name="SESSION" type="com.google.inject.Scope"
7246 transient="false" volatile="false"
7247 static="true" final="true" visibility="public"
7248 deprecated="not deprecated">
7249 <doc>
7250 <![CDATA[HTTP session scope.]]>
7251 </doc>
7252 </field>
7253 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007254 <![CDATA[Servlet scopes.
7255
sameb1d3f8cd2014-10-07 15:32:12 -07007256 @author crazybob@google.com (Bob Lee)]]>
7257 </doc>
7258 </class>
7259 <!-- end class com.google.inject.servlet.ServletScopes -->
7260 <!-- start class com.google.inject.servlet.SessionScoped -->
7261 <class name="SessionScoped" abstract="true"
7262 static="false" final="false" visibility="public"
7263 deprecated="not deprecated">
7264 <implements name="java.lang.annotation.Annotation"/>
7265 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007266 <![CDATA[Apply this to implementation classes when you want one instance per session.
7267
7268 @see com.google.inject.Scopes#SINGLETON
sameb1d3f8cd2014-10-07 15:32:12 -07007269 @author crazybob@google.com (Bob Lee)]]>
7270 </doc>
7271 </class>
7272 <!-- end class com.google.inject.servlet.SessionScoped -->
7273 <!-- start class com.google.inject.servlet.UriPatternType -->
7274 <class name="UriPatternType" extends="java.lang.Enum&lt;com.google.inject.servlet.UriPatternType&gt;"
7275 abstract="false"
7276 static="false" final="true" visibility="public"
7277 deprecated="not deprecated">
7278 <method name="values" return="com.google.inject.servlet.UriPatternType[]"
7279 abstract="false" native="false" synchronized="false"
7280 static="true" final="false" visibility="public"
7281 deprecated="not deprecated">
7282 </method>
7283 <method name="valueOf" return="com.google.inject.servlet.UriPatternType"
7284 abstract="false" native="false" synchronized="false"
7285 static="true" final="false" visibility="public"
7286 deprecated="not deprecated">
7287 <param name="name" type="java.lang.String"/>
7288 </method>
7289 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007290 <![CDATA[An enumeration of the available URI-pattern matching styles
7291
sameb1d3f8cd2014-10-07 15:32:12 -07007292 @since 3.0]]>
7293 </doc>
7294 </class>
7295 <!-- end class com.google.inject.servlet.UriPatternType -->
7296</package>
7297<package name="com.google.inject.spi">
7298 <!-- start interface com.google.inject.spi.BindingScopingVisitor -->
7299 <interface name="BindingScopingVisitor" abstract="true"
7300 static="false" final="false" visibility="public"
7301 deprecated="not deprecated">
7302 <method name="visitEagerSingleton" return="V"
7303 abstract="false" native="false" synchronized="false"
7304 static="false" final="false" visibility="public"
7305 deprecated="not deprecated">
7306 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007307 <![CDATA[Visit an eager singleton or single instance. This scope strategy is found on both module and
sameb1d3f8cd2014-10-07 15:32:12 -07007308 injector bindings.]]>
7309 </doc>
7310 </method>
7311 <method name="visitScope" return="V"
7312 abstract="false" native="false" synchronized="false"
7313 static="false" final="false" visibility="public"
7314 deprecated="not deprecated">
7315 <param name="scope" type="com.google.inject.Scope"/>
7316 <doc>
7317 <![CDATA[Visit a scope instance. This scope strategy is found on both module and injector bindings.]]>
7318 </doc>
7319 </method>
7320 <method name="visitScopeAnnotation" return="V"
7321 abstract="false" native="false" synchronized="false"
7322 static="false" final="false" visibility="public"
7323 deprecated="not deprecated">
7324 <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
7325 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007326 <![CDATA[Visit a scope annotation. This scope strategy is found only on module bindings. The instance
7327 that implements this scope is registered by {@link com.google.inject.Binder#bindScope(Class,
sameb1d3f8cd2014-10-07 15:32:12 -07007328 Scope) Binder.bindScope()}.]]>
7329 </doc>
7330 </method>
7331 <method name="visitNoScoping" return="V"
7332 abstract="false" native="false" synchronized="false"
7333 static="false" final="false" visibility="public"
7334 deprecated="not deprecated">
7335 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007336 <![CDATA[Visit an unspecified or unscoped strategy. On a module, this strategy indicates that the
7337 injector should use scoping annotations to find a scope. On an injector, it indicates that
7338 no scope is applied to the binding. An unscoped binding will behave like a scoped one when it
sameb1d3f8cd2014-10-07 15:32:12 -07007339 is linked to a scoped binding.]]>
7340 </doc>
7341 </method>
7342 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007343 <![CDATA[Visits each of the strategies used to scope an injection.
7344
7345 @param <V> any type to be returned by the visit method. Use {@link Void} with
7346 {@code return null} if no return type is needed.
sameb1d3f8cd2014-10-07 15:32:12 -07007347 @since 2.0]]>
7348 </doc>
7349 </interface>
7350 <!-- end interface com.google.inject.spi.BindingScopingVisitor -->
7351 <!-- start interface com.google.inject.spi.BindingTargetVisitor -->
7352 <interface name="BindingTargetVisitor" abstract="true"
7353 static="false" final="false" visibility="public"
7354 deprecated="not deprecated">
7355 <method name="visit" return="V"
7356 abstract="false" native="false" synchronized="false"
7357 static="false" final="false" visibility="public"
7358 deprecated="not deprecated">
7359 <param name="binding" type="com.google.inject.spi.InstanceBinding&lt;? extends T&gt;"/>
7360 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007361 <![CDATA[Visit a instance binding. The same instance is returned for every injection. This target is
sameb1d3f8cd2014-10-07 15:32:12 -07007362 found in both module and injector bindings.]]>
7363 </doc>
7364 </method>
7365 <method name="visit" return="V"
7366 abstract="false" native="false" synchronized="false"
7367 static="false" final="false" visibility="public"
7368 deprecated="not deprecated">
7369 <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends T&gt;"/>
7370 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007371 <![CDATA[Visit a provider instance binding. The provider's {@code get} method is invoked to resolve
sameb1d3f8cd2014-10-07 15:32:12 -07007372 injections. This target is found in both module and injector bindings.]]>
7373 </doc>
7374 </method>
7375 <method name="visit" return="V"
7376 abstract="false" native="false" synchronized="false"
7377 static="false" final="false" visibility="public"
7378 deprecated="not deprecated">
7379 <param name="binding" type="com.google.inject.spi.ProviderKeyBinding&lt;? extends T&gt;"/>
7380 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007381 <![CDATA[Visit a provider key binding. To resolve injections, the provider key is first resolved, then
7382 that provider's {@code get} method is invoked. This target is found in both module and injector
sameb1d3f8cd2014-10-07 15:32:12 -07007383 bindings.]]>
7384 </doc>
7385 </method>
7386 <method name="visit" return="V"
7387 abstract="false" native="false" synchronized="false"
7388 static="false" final="false" visibility="public"
7389 deprecated="not deprecated">
7390 <param name="binding" type="com.google.inject.spi.LinkedKeyBinding&lt;? extends T&gt;"/>
7391 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007392 <![CDATA[Visit a linked key binding. The other key's binding is used to resolve injections. This
sameb1d3f8cd2014-10-07 15:32:12 -07007393 target is found in both module and injector bindings.]]>
7394 </doc>
7395 </method>
7396 <method name="visit" return="V"
7397 abstract="false" native="false" synchronized="false"
7398 static="false" final="false" visibility="public"
7399 deprecated="not deprecated">
7400 <param name="binding" type="com.google.inject.spi.ExposedBinding&lt;? extends T&gt;"/>
7401 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007402 <![CDATA[Visit a binding to a key exposed from an enclosed private environment. This target is only
sameb1d3f8cd2014-10-07 15:32:12 -07007403 found in injector bindings.]]>
7404 </doc>
7405 </method>
7406 <method name="visit" return="V"
7407 abstract="false" native="false" synchronized="false"
7408 static="false" final="false" visibility="public"
7409 deprecated="not deprecated">
7410 <param name="binding" type="com.google.inject.spi.UntargettedBinding&lt;? extends T&gt;"/>
7411 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007412 <![CDATA[Visit an untargetted binding. This target is found only on module bindings. It indicates
sameb1d3f8cd2014-10-07 15:32:12 -07007413 that the injector should use its implicit binding strategies to resolve injections.]]>
7414 </doc>
7415 </method>
7416 <method name="visit" return="V"
7417 abstract="false" native="false" synchronized="false"
7418 static="false" final="false" visibility="public"
7419 deprecated="not deprecated">
7420 <param name="binding" type="com.google.inject.spi.ConstructorBinding&lt;? extends T&gt;"/>
7421 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007422 <![CDATA[Visit a constructor binding. To resolve injections, an instance is instantiated by invoking
sameb1d3f8cd2014-10-07 15:32:12 -07007423 {@code constructor}. This target is found only on injector bindings.]]>
7424 </doc>
7425 </method>
7426 <method name="visit" return="V"
7427 abstract="false" native="false" synchronized="false"
7428 static="false" final="false" visibility="public"
7429 deprecated="not deprecated">
7430 <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding&lt;? extends T&gt;"/>
7431 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007432 <![CDATA[Visit a binding created from converting a bound instance to a new type. The source binding
7433 has the same binding annotation but a different type. This target is found only on injector
sameb1d3f8cd2014-10-07 15:32:12 -07007434 bindings.]]>
7435 </doc>
7436 </method>
7437 <method name="visit" return="V"
7438 abstract="false" native="false" synchronized="false"
7439 static="false" final="false" visibility="public"
7440 deprecated="not deprecated">
7441 <param name="binding" type="com.google.inject.spi.ProviderBinding&lt;? extends T&gt;"/>
7442 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007443 <![CDATA[Visit a binding to a {@link com.google.inject.Provider} that delegates to the binding for the
sameb1d3f8cd2014-10-07 15:32:12 -07007444 provided type. This target is found only on injector bindings.]]>
7445 </doc>
7446 </method>
7447 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007448 <![CDATA[Visits each of the strategies used to find an instance to satisfy an injection.
7449
7450 @param <V> any type to be returned by the visit method. Use {@link Void} with
7451 {@code return null} if no return type is needed.
sameb1d3f8cd2014-10-07 15:32:12 -07007452 @since 2.0]]>
7453 </doc>
7454 </interface>
7455 <!-- end interface com.google.inject.spi.BindingTargetVisitor -->
7456 <!-- start interface com.google.inject.spi.ConstructorBinding -->
7457 <interface name="ConstructorBinding" abstract="true"
7458 static="false" final="false" visibility="public"
7459 deprecated="not deprecated">
7460 <implements name="com.google.inject.Binding&lt;T&gt;"/>
7461 <implements name="com.google.inject.spi.HasDependencies"/>
7462 <method name="getConstructor" return="com.google.inject.spi.InjectionPoint"
7463 abstract="false" native="false" synchronized="false"
7464 static="false" final="false" visibility="public"
7465 deprecated="not deprecated">
7466 <doc>
7467 <![CDATA[Gets the constructor this binding injects.]]>
7468 </doc>
7469 </method>
7470 <method name="getInjectableMembers" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
7471 abstract="false" native="false" synchronized="false"
7472 static="false" final="false" visibility="public"
7473 deprecated="not deprecated">
7474 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007475 <![CDATA[Returns all instance method and field injection points on {@code type}.
7476
7477 @return a possibly empty set of injection points. The set has a specified iteration order. All
7478 fields are returned and then all methods. Within the fields, supertype fields are returned
sameb1d3f8cd2014-10-07 15:32:12 -07007479 before subtype fields. Similarly, supertype methods are returned before subtype methods.]]>
7480 </doc>
7481 </method>
7482 <method name="getMethodInterceptors" return="java.util.Map&lt;java.lang.reflect.Method, java.util.List&lt;org.aopalliance.intercept.MethodInterceptor&gt;&gt;"
7483 abstract="false" native="false" synchronized="false"
7484 static="false" final="false" visibility="public"
7485 deprecated="not deprecated">
7486 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007487 <![CDATA[Returns the interceptors applied to each method, in the order that they will be applied.
7488
sameb1d3f8cd2014-10-07 15:32:12 -07007489 @return a possibly empty map]]>
7490 </doc>
7491 </method>
7492 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007493 <![CDATA[A binding to the constructor of a concrete clss. To resolve injections, an instance is
7494 instantiated by invoking the constructor.
7495
7496 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07007497 @since 2.0]]>
7498 </doc>
7499 </interface>
7500 <!-- end interface com.google.inject.spi.ConstructorBinding -->
7501 <!-- start interface com.google.inject.spi.ConvertedConstantBinding -->
7502 <interface name="ConvertedConstantBinding" abstract="true"
7503 static="false" final="false" visibility="public"
7504 deprecated="not deprecated">
7505 <implements name="com.google.inject.Binding&lt;T&gt;"/>
7506 <implements name="com.google.inject.spi.HasDependencies"/>
7507 <method name="getValue" return="T"
7508 abstract="false" native="false" synchronized="false"
7509 static="false" final="false" visibility="public"
7510 deprecated="not deprecated">
7511 <doc>
7512 <![CDATA[Returns the converted value.]]>
7513 </doc>
7514 </method>
7515 <method name="getTypeConverterBinding" return="com.google.inject.spi.TypeConverterBinding"
7516 abstract="false" native="false" synchronized="false"
7517 static="false" final="false" visibility="public"
7518 deprecated="not deprecated">
7519 <doc>
sberlin@gmail.com251cda62010-12-09 03:27:02 +00007520 <![CDATA[Returns the type converter binding used to convert the constant.
7521
sameb1d3f8cd2014-10-07 15:32:12 -07007522 @since 3.0]]>
7523 </doc>
7524 </method>
7525 <method name="getSourceKey" return="com.google.inject.Key&lt;java.lang.String&gt;"
7526 abstract="false" native="false" synchronized="false"
7527 static="false" final="false" visibility="public"
7528 deprecated="not deprecated">
7529 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007530 <![CDATA[Returns the key for the source binding. That binding can e retrieved from an injector using
sameb1d3f8cd2014-10-07 15:32:12 -07007531 {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]>
7532 </doc>
7533 </method>
7534 <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
7535 abstract="false" native="false" synchronized="false"
7536 static="false" final="false" visibility="public"
7537 deprecated="not deprecated">
7538 <doc>
7539 <![CDATA[Returns a singleton set containing only the converted key.]]>
7540 </doc>
7541 </method>
7542 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007543 <![CDATA[A binding created from converting a bound instance to a new type. The source binding has the same
7544 binding annotation but a different type.
7545
7546 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07007547 @since 2.0]]>
7548 </doc>
7549 </interface>
7550 <!-- end interface com.google.inject.spi.ConvertedConstantBinding -->
7551 <!-- start class com.google.inject.spi.DefaultBindingScopingVisitor -->
7552 <class name="DefaultBindingScopingVisitor" extends="java.lang.Object"
7553 abstract="false"
7554 static="false" final="false" visibility="public"
7555 deprecated="not deprecated">
7556 <implements name="com.google.inject.spi.BindingScopingVisitor&lt;V&gt;"/>
7557 <constructor name="DefaultBindingScopingVisitor"
7558 static="false" final="false" visibility="public"
7559 deprecated="not deprecated">
7560 </constructor>
7561 <method name="visitOther" return="V"
7562 abstract="false" native="false" synchronized="false"
7563 static="false" final="false" visibility="protected"
7564 deprecated="not deprecated">
7565 <doc>
7566 <![CDATA[Default visit implementation. Returns {@code null}.]]>
7567 </doc>
7568 </method>
7569 <method name="visitEagerSingleton" return="V"
7570 abstract="false" native="false" synchronized="false"
7571 static="false" final="false" visibility="public"
7572 deprecated="not deprecated">
7573 </method>
7574 <method name="visitScope" return="V"
7575 abstract="false" native="false" synchronized="false"
7576 static="false" final="false" visibility="public"
7577 deprecated="not deprecated">
7578 <param name="scope" type="com.google.inject.Scope"/>
7579 </method>
7580 <method name="visitScopeAnnotation" return="V"
7581 abstract="false" native="false" synchronized="false"
7582 static="false" final="false" visibility="public"
7583 deprecated="not deprecated">
7584 <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
7585 </method>
7586 <method name="visitNoScoping" return="V"
7587 abstract="false" native="false" synchronized="false"
7588 static="false" final="false" visibility="public"
7589 deprecated="not deprecated">
7590 </method>
7591 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007592 <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to
7593 {@link #visitOther()}, returning its result.
7594
7595 @param <V> any type to be returned by the visit method. Use {@link Void} with
7596 {@code return null} if no return type is needed.
7597
7598 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07007599 @since 2.0]]>
7600 </doc>
7601 </class>
7602 <!-- end class com.google.inject.spi.DefaultBindingScopingVisitor -->
7603 <!-- start class com.google.inject.spi.DefaultBindingTargetVisitor -->
7604 <class name="DefaultBindingTargetVisitor" extends="java.lang.Object"
7605 abstract="true"
7606 static="false" final="false" visibility="public"
7607 deprecated="not deprecated">
7608 <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
7609 <constructor name="DefaultBindingTargetVisitor"
7610 static="false" final="false" visibility="public"
7611 deprecated="not deprecated">
7612 </constructor>
7613 <method name="visitOther" return="V"
7614 abstract="false" native="false" synchronized="false"
7615 static="false" final="false" visibility="protected"
7616 deprecated="not deprecated">
7617 <param name="binding" type="com.google.inject.Binding&lt;? extends T&gt;"/>
7618 <doc>
7619 <![CDATA[Default visit implementation. Returns {@code null}.]]>
7620 </doc>
7621 </method>
7622 <method name="visit" return="V"
7623 abstract="false" native="false" synchronized="false"
7624 static="false" final="false" visibility="public"
7625 deprecated="not deprecated">
7626 <param name="instanceBinding" type="com.google.inject.spi.InstanceBinding&lt;? extends T&gt;"/>
7627 </method>
7628 <method name="visit" return="V"
7629 abstract="false" native="false" synchronized="false"
7630 static="false" final="false" visibility="public"
7631 deprecated="not deprecated">
7632 <param name="providerInstanceBinding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends T&gt;"/>
7633 </method>
7634 <method name="visit" return="V"
7635 abstract="false" native="false" synchronized="false"
7636 static="false" final="false" visibility="public"
7637 deprecated="not deprecated">
7638 <param name="providerKeyBinding" type="com.google.inject.spi.ProviderKeyBinding&lt;? extends T&gt;"/>
7639 </method>
7640 <method name="visit" return="V"
7641 abstract="false" native="false" synchronized="false"
7642 static="false" final="false" visibility="public"
7643 deprecated="not deprecated">
7644 <param name="linkedKeyBinding" type="com.google.inject.spi.LinkedKeyBinding&lt;? extends T&gt;"/>
7645 </method>
7646 <method name="visit" return="V"
7647 abstract="false" native="false" synchronized="false"
7648 static="false" final="false" visibility="public"
7649 deprecated="not deprecated">
7650 <param name="exposedBinding" type="com.google.inject.spi.ExposedBinding&lt;? extends T&gt;"/>
7651 </method>
7652 <method name="visit" return="V"
7653 abstract="false" native="false" synchronized="false"
7654 static="false" final="false" visibility="public"
7655 deprecated="not deprecated">
7656 <param name="untargettedBinding" type="com.google.inject.spi.UntargettedBinding&lt;? extends T&gt;"/>
7657 </method>
7658 <method name="visit" return="V"
7659 abstract="false" native="false" synchronized="false"
7660 static="false" final="false" visibility="public"
7661 deprecated="not deprecated">
7662 <param name="constructorBinding" type="com.google.inject.spi.ConstructorBinding&lt;? extends T&gt;"/>
7663 </method>
7664 <method name="visit" return="V"
7665 abstract="false" native="false" synchronized="false"
7666 static="false" final="false" visibility="public"
7667 deprecated="not deprecated">
7668 <param name="convertedConstantBinding" type="com.google.inject.spi.ConvertedConstantBinding&lt;? extends T&gt;"/>
7669 </method>
7670 <method name="visit" return="V"
7671 abstract="false" native="false" synchronized="false"
7672 static="false" final="false" visibility="public"
7673 deprecated="not deprecated">
7674 <param name="providerBinding" type="com.google.inject.spi.ProviderBinding&lt;? extends T&gt;"/>
7675 </method>
7676 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007677 <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to {@link
7678 #visitOther(Binding)}, returning its result.
7679
7680 @param <V> any type to be returned by the visit method. Use {@link Void} with
7681 {@code return null} if no return type is needed.
7682
7683 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07007684 @since 2.0]]>
7685 </doc>
7686 </class>
7687 <!-- end class com.google.inject.spi.DefaultBindingTargetVisitor -->
7688 <!-- start class com.google.inject.spi.DefaultElementVisitor -->
7689 <class name="DefaultElementVisitor" extends="java.lang.Object"
7690 abstract="true"
7691 static="false" final="false" visibility="public"
7692 deprecated="not deprecated">
7693 <implements name="com.google.inject.spi.ElementVisitor&lt;V&gt;"/>
7694 <constructor name="DefaultElementVisitor"
7695 static="false" final="false" visibility="public"
7696 deprecated="not deprecated">
7697 </constructor>
7698 <method name="visitOther" return="V"
7699 abstract="false" native="false" synchronized="false"
7700 static="false" final="false" visibility="protected"
7701 deprecated="not deprecated">
7702 <param name="element" type="com.google.inject.spi.Element"/>
7703 <doc>
7704 <![CDATA[Default visit implementation. Returns {@code null}.]]>
7705 </doc>
7706 </method>
7707 <method name="visit" return="V"
7708 abstract="false" native="false" synchronized="false"
7709 static="false" final="false" visibility="public"
7710 deprecated="not deprecated">
7711 <param name="message" type="com.google.inject.spi.Message"/>
7712 </method>
7713 <method name="visit" return="V"
7714 abstract="false" native="false" synchronized="false"
7715 static="false" final="false" visibility="public"
7716 deprecated="not deprecated">
7717 <param name="binding" type="com.google.inject.Binding&lt;T&gt;"/>
7718 </method>
7719 <method name="visit" return="V"
7720 abstract="false" native="false" synchronized="false"
7721 static="false" final="false" visibility="public"
7722 deprecated="not deprecated">
7723 <param name="interceptorBinding" type="com.google.inject.spi.InterceptorBinding"/>
7724 </method>
7725 <method name="visit" return="V"
7726 abstract="false" native="false" synchronized="false"
7727 static="false" final="false" visibility="public"
7728 deprecated="not deprecated">
7729 <param name="scopeBinding" type="com.google.inject.spi.ScopeBinding"/>
7730 </method>
7731 <method name="visit" return="V"
7732 abstract="false" native="false" synchronized="false"
7733 static="false" final="false" visibility="public"
7734 deprecated="not deprecated">
7735 <param name="typeConverterBinding" type="com.google.inject.spi.TypeConverterBinding"/>
7736 </method>
7737 <method name="visit" return="V"
7738 abstract="false" native="false" synchronized="false"
7739 static="false" final="false" visibility="public"
7740 deprecated="not deprecated">
7741 <param name="providerLookup" type="com.google.inject.spi.ProviderLookup&lt;T&gt;"/>
7742 </method>
7743 <method name="visit" return="V"
7744 abstract="false" native="false" synchronized="false"
7745 static="false" final="false" visibility="public"
7746 deprecated="not deprecated">
7747 <param name="injectionRequest" type="com.google.inject.spi.InjectionRequest&lt;?&gt;"/>
7748 </method>
7749 <method name="visit" return="V"
7750 abstract="false" native="false" synchronized="false"
7751 static="false" final="false" visibility="public"
7752 deprecated="not deprecated">
7753 <param name="staticInjectionRequest" type="com.google.inject.spi.StaticInjectionRequest"/>
7754 </method>
7755 <method name="visit" return="V"
7756 abstract="false" native="false" synchronized="false"
7757 static="false" final="false" visibility="public"
7758 deprecated="not deprecated">
7759 <param name="privateElements" type="com.google.inject.spi.PrivateElements"/>
7760 </method>
7761 <method name="visit" return="V"
7762 abstract="false" native="false" synchronized="false"
7763 static="false" final="false" visibility="public"
7764 deprecated="not deprecated">
7765 <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup&lt;T&gt;"/>
7766 </method>
7767 <method name="visit" return="V"
7768 abstract="false" native="false" synchronized="false"
7769 static="false" final="false" visibility="public"
7770 deprecated="not deprecated">
7771 <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/>
7772 </method>
7773 <method name="visit" return="V"
7774 abstract="false" native="false" synchronized="false"
7775 static="false" final="false" visibility="public"
7776 deprecated="not deprecated">
7777 <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/>
7778 </method>
7779 <method name="visit" return="V"
7780 abstract="false" native="false" synchronized="false"
7781 static="false" final="false" visibility="public"
7782 deprecated="not deprecated">
7783 <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/>
7784 </method>
7785 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007786 <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to
7787 {@link #visitOther(Element)}, returning its result.
7788
7789 @param <V> any type to be returned by the visit method. Use {@link Void} with
7790 {@code return null} if no return type is needed.
7791
7792 @author sberlin@gmail.com (Sam Berlin)
sameb1d3f8cd2014-10-07 15:32:12 -07007793 @since 2.0]]>
7794 </doc>
7795 </class>
7796 <!-- end class com.google.inject.spi.DefaultElementVisitor -->
7797 <!-- start class com.google.inject.spi.Dependency -->
7798 <class name="Dependency" extends="java.lang.Object"
7799 abstract="false"
7800 static="false" final="true" visibility="public"
7801 deprecated="not deprecated">
7802 <method name="get" return="com.google.inject.spi.Dependency&lt;T&gt;"
7803 abstract="false" native="false" synchronized="false"
7804 static="true" final="false" visibility="public"
7805 deprecated="not deprecated">
7806 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
7807 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007808 <![CDATA[Returns a new dependency that is not attached to an injection point. The returned dependency is
sameb1d3f8cd2014-10-07 15:32:12 -07007809 nullable.]]>
7810 </doc>
7811 </method>
7812 <method name="forInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
7813 abstract="false" native="false" synchronized="false"
7814 static="true" final="false" visibility="public"
7815 deprecated="not deprecated">
7816 <param name="injectionPoints" type="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"/>
7817 <doc>
7818 <![CDATA[Returns the dependencies from the given injection points.]]>
7819 </doc>
7820 </method>
7821 <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
7822 abstract="false" native="false" synchronized="false"
7823 static="false" final="false" visibility="public"
7824 deprecated="not deprecated">
7825 <doc>
7826 <![CDATA[Returns the key to the binding that satisfies this dependency.]]>
7827 </doc>
7828 </method>
7829 <method name="isNullable" return="boolean"
7830 abstract="false" native="false" synchronized="false"
7831 static="false" final="false" visibility="public"
7832 deprecated="not deprecated">
7833 <doc>
7834 <![CDATA[Returns true if null is a legal value for this dependency.]]>
7835 </doc>
7836 </method>
7837 <method name="getInjectionPoint" return="com.google.inject.spi.InjectionPoint"
7838 abstract="false" native="false" synchronized="false"
7839 static="false" final="false" visibility="public"
7840 deprecated="not deprecated">
7841 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007842 <![CDATA[Returns the injection point to which this dependency belongs, or null if this dependency isn't
sameb1d3f8cd2014-10-07 15:32:12 -07007843 attached to a particular injection point.]]>
7844 </doc>
7845 </method>
7846 <method name="getParameterIndex" return="int"
7847 abstract="false" native="false" synchronized="false"
7848 static="false" final="false" visibility="public"
7849 deprecated="not deprecated">
7850 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007851 <![CDATA[Returns the index of this dependency in the injection point's parameter list, or {@code -1} if
7852 this dependency does not belong to a parameter list. Only method and constuctor dependencies
sameb1d3f8cd2014-10-07 15:32:12 -07007853 are elements in a parameter list.]]>
7854 </doc>
7855 </method>
7856 <method name="hashCode" return="int"
7857 abstract="false" native="false" synchronized="false"
7858 static="false" final="false" visibility="public"
7859 deprecated="not deprecated">
7860 </method>
7861 <method name="equals" return="boolean"
7862 abstract="false" native="false" synchronized="false"
7863 static="false" final="false" visibility="public"
7864 deprecated="not deprecated">
7865 <param name="o" type="java.lang.Object"/>
7866 </method>
7867 <method name="toString" return="java.lang.String"
7868 abstract="false" native="false" synchronized="false"
7869 static="false" final="false" visibility="public"
7870 deprecated="not deprecated">
7871 </method>
7872 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007873 <![CDATA[A variable that can be resolved by an injector.
7874
7875 <p>Use {@link #get} to build a freestanding dependency, or {@link InjectionPoint} to build one
7876 that's attached to a constructor, method or field.
7877
7878 @author crazybob@google.com (Bob Lee)
7879 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07007880 @since 2.0]]>
7881 </doc>
7882 </class>
7883 <!-- end class com.google.inject.spi.Dependency -->
7884 <!-- start class com.google.inject.spi.DisableCircularProxiesOption -->
7885 <class name="DisableCircularProxiesOption" extends="java.lang.Object"
7886 abstract="false"
7887 static="false" final="true" visibility="public"
7888 deprecated="not deprecated">
7889 <implements name="com.google.inject.spi.Element"/>
7890 <method name="getSource" return="java.lang.Object"
7891 abstract="false" native="false" synchronized="false"
7892 static="false" final="false" visibility="public"
7893 deprecated="not deprecated">
7894 </method>
7895 <method name="applyTo"
7896 abstract="false" native="false" synchronized="false"
7897 static="false" final="false" visibility="public"
7898 deprecated="not deprecated">
7899 <param name="binder" type="com.google.inject.Binder"/>
7900 </method>
7901 <method name="acceptVisitor" return="T"
7902 abstract="false" native="false" synchronized="false"
7903 static="false" final="false" visibility="public"
7904 deprecated="not deprecated">
7905 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
7906 </method>
7907 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00007908 <![CDATA[A request to disable circular proxies.
7909
7910 @author sameb@google.com (Sam Berlin)
sameb1d3f8cd2014-10-07 15:32:12 -07007911 @since 3.0]]>
7912 </doc>
7913 </class>
7914 <!-- end class com.google.inject.spi.DisableCircularProxiesOption -->
7915 <!-- start interface com.google.inject.spi.Element -->
7916 <interface name="Element" abstract="true"
7917 static="false" final="false" visibility="public"
7918 deprecated="not deprecated">
7919 <method name="getSource" return="java.lang.Object"
7920 abstract="false" native="false" synchronized="false"
7921 static="false" final="false" visibility="public"
7922 deprecated="not deprecated">
7923 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007924 <![CDATA[Returns an arbitrary object containing information about the "place" where this element was
7925 configured. Used by Guice in the production of descriptive error messages.
7926
7927 <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good
7928 example. Tools should simply call {@code toString()} on the source object if the type is
sameb1d3f8cd2014-10-07 15:32:12 -07007929 unfamiliar.]]>
7930 </doc>
7931 </method>
7932 <method name="acceptVisitor" return="T"
7933 abstract="false" native="false" synchronized="false"
7934 static="false" final="false" visibility="public"
7935 deprecated="not deprecated">
7936 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
7937 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007938 <![CDATA[Accepts an element visitor. Invokes the visitor method specific to this element's type.
7939
sameb1d3f8cd2014-10-07 15:32:12 -07007940 @param visitor to call back on]]>
7941 </doc>
7942 </method>
7943 <method name="applyTo"
7944 abstract="false" native="false" synchronized="false"
7945 static="false" final="false" visibility="public"
7946 deprecated="not deprecated">
7947 <param name="binder" type="com.google.inject.Binder"/>
7948 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007949 <![CDATA[Writes this module element to the given binder (optional operation).
7950
7951 @param binder to apply configuration element to
7952 @throws UnsupportedOperationException if the {@code applyTo} method is not supported by this
sameb1d3f8cd2014-10-07 15:32:12 -07007953 element.]]>
7954 </doc>
7955 </method>
7956 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007957 <![CDATA[A core component of a module or injector.
7958
7959 <p>The elements of a module can be inspected, validated and rewritten. Use {@link
7960 Elements#getElements(com.google.inject.Module[]) Elements.getElements()} to read the elements
7961 from a module, and {@link Elements#getModule(Iterable) Elements.getModule()} to rewrite them.
7962 This can be used for static analysis and generation of Guice modules.
7963
7964 <p>The elements of an injector can be inspected and exercised. Use {@link
7965 com.google.inject.Injector#getBindings Injector.getBindings()} to reflect on Guice injectors.
7966
7967 @author jessewilson@google.com (Jesse Wilson)
7968 @author crazybob@google.com (Bob Lee)
sameb1d3f8cd2014-10-07 15:32:12 -07007969 @since 2.0]]>
7970 </doc>
7971 </interface>
7972 <!-- end interface com.google.inject.spi.Element -->
7973 <!-- start class com.google.inject.spi.Elements -->
7974 <class name="Elements" extends="java.lang.Object"
7975 abstract="false"
7976 static="false" final="true" visibility="public"
7977 deprecated="not deprecated">
7978 <constructor name="Elements"
7979 static="false" final="false" visibility="public"
7980 deprecated="not deprecated">
7981 </constructor>
7982 <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
7983 abstract="false" native="false" synchronized="false"
7984 static="true" final="false" visibility="public"
7985 deprecated="not deprecated">
7986 <param name="modules" type="com.google.inject.Module[]"/>
7987 <doc>
7988 <![CDATA[Records the elements executed by {@code modules}.]]>
7989 </doc>
7990 </method>
7991 <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
7992 abstract="false" native="false" synchronized="false"
7993 static="true" final="false" visibility="public"
7994 deprecated="not deprecated">
7995 <param name="stage" type="com.google.inject.Stage"/>
7996 <param name="modules" type="com.google.inject.Module[]"/>
7997 <doc>
7998 <![CDATA[Records the elements executed by {@code modules}.]]>
7999 </doc>
8000 </method>
8001 <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
8002 abstract="false" native="false" synchronized="false"
8003 static="true" final="false" visibility="public"
8004 deprecated="not deprecated">
8005 <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
8006 <doc>
8007 <![CDATA[Records the elements executed by {@code modules}.]]>
8008 </doc>
8009 </method>
8010 <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
8011 abstract="false" native="false" synchronized="false"
8012 static="true" final="false" visibility="public"
8013 deprecated="not deprecated">
8014 <param name="stage" type="com.google.inject.Stage"/>
8015 <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
8016 <doc>
8017 <![CDATA[Records the elements executed by {@code modules}.]]>
8018 </doc>
8019 </method>
8020 <method name="getModule" return="com.google.inject.Module"
8021 abstract="false" native="false" synchronized="false"
8022 static="true" final="false" visibility="public"
8023 deprecated="not deprecated">
8024 <param name="elements" type="java.lang.Iterable&lt;? extends com.google.inject.spi.Element&gt;"/>
8025 <doc>
8026 <![CDATA[Returns the module composed of {@code elements}.]]>
8027 </doc>
8028 </method>
8029 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008030 <![CDATA[Exposes elements of a module so they can be inspected, validated or {@link
8031 Element#applyTo(Binder) rewritten}.
8032
8033 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07008034 @since 2.0]]>
8035 </doc>
8036 </class>
8037 <!-- end class com.google.inject.spi.Elements -->
8038 <!-- start interface com.google.inject.spi.ElementVisitor -->
8039 <interface name="ElementVisitor" abstract="true"
8040 static="false" final="false" visibility="public"
8041 deprecated="not deprecated">
8042 <method name="visit" return="V"
8043 abstract="false" native="false" synchronized="false"
8044 static="false" final="false" visibility="public"
8045 deprecated="not deprecated">
8046 <param name="binding" type="com.google.inject.Binding&lt;T&gt;"/>
8047 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008048 <![CDATA[Visit a mapping from a key (type and optional annotation) to the strategy for getting
sameb1d3f8cd2014-10-07 15:32:12 -07008049 instances of the type.]]>
8050 </doc>
8051 </method>
8052 <method name="visit" return="V"
8053 abstract="false" native="false" synchronized="false"
8054 static="false" final="false" visibility="public"
8055 deprecated="not deprecated">
8056 <param name="binding" type="com.google.inject.spi.InterceptorBinding"/>
8057 <doc>
8058 <![CDATA[Visit a registration of interceptors for matching methods of matching classes.]]>
8059 </doc>
8060 </method>
8061 <method name="visit" return="V"
8062 abstract="false" native="false" synchronized="false"
8063 static="false" final="false" visibility="public"
8064 deprecated="not deprecated">
8065 <param name="binding" type="com.google.inject.spi.ScopeBinding"/>
8066 <doc>
8067 <![CDATA[Visit a registration of a scope annotation with the scope that implements it.]]>
8068 </doc>
8069 </method>
8070 <method name="visit" return="V"
8071 abstract="false" native="false" synchronized="false"
8072 static="false" final="false" visibility="public"
8073 deprecated="not deprecated">
8074 <param name="binding" type="com.google.inject.spi.TypeConverterBinding"/>
8075 <doc>
8076 <![CDATA[Visit a registration of type converters for matching target types.]]>
8077 </doc>
8078 </method>
8079 <method name="visit" return="V"
8080 abstract="false" native="false" synchronized="false"
8081 static="false" final="false" visibility="public"
8082 deprecated="not deprecated">
8083 <param name="request" type="com.google.inject.spi.InjectionRequest&lt;?&gt;"/>
8084 <doc>
8085 <![CDATA[Visit a request to inject the instance fields and methods of an instance.]]>
8086 </doc>
8087 </method>
8088 <method name="visit" return="V"
8089 abstract="false" native="false" synchronized="false"
8090 static="false" final="false" visibility="public"
8091 deprecated="not deprecated">
8092 <param name="request" type="com.google.inject.spi.StaticInjectionRequest"/>
8093 <doc>
8094 <![CDATA[Visit a request to inject the static fields and methods of type.]]>
8095 </doc>
8096 </method>
8097 <method name="visit" return="V"
8098 abstract="false" native="false" synchronized="false"
8099 static="false" final="false" visibility="public"
8100 deprecated="not deprecated">
8101 <param name="lookup" type="com.google.inject.spi.ProviderLookup&lt;T&gt;"/>
8102 <doc>
8103 <![CDATA[Visit a lookup of the provider for a type.]]>
8104 </doc>
8105 </method>
8106 <method name="visit" return="V"
8107 abstract="false" native="false" synchronized="false"
8108 static="false" final="false" visibility="public"
8109 deprecated="not deprecated">
8110 <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup&lt;T&gt;"/>
8111 <doc>
8112 <![CDATA[Visit a lookup of the members injector.]]>
8113 </doc>
8114 </method>
8115 <method name="visit" return="V"
8116 abstract="false" native="false" synchronized="false"
8117 static="false" final="false" visibility="public"
8118 deprecated="not deprecated">
8119 <param name="message" type="com.google.inject.spi.Message"/>
8120 <doc>
8121 <![CDATA[Visit an error message and the context in which it occured.]]>
8122 </doc>
8123 </method>
8124 <method name="visit" return="V"
8125 abstract="false" native="false" synchronized="false"
8126 static="false" final="false" visibility="public"
8127 deprecated="not deprecated">
8128 <param name="elements" type="com.google.inject.spi.PrivateElements"/>
8129 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008130 <![CDATA[Visit a collection of configuration elements for a {@linkplain com.google.inject.PrivateBinder
sameb1d3f8cd2014-10-07 15:32:12 -07008131 private binder}.]]>
8132 </doc>
8133 </method>
8134 <method name="visit" return="V"
8135 abstract="false" native="false" synchronized="false"
8136 static="false" final="false" visibility="public"
8137 deprecated="not deprecated">
8138 <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/>
8139 <doc>
8140 <![CDATA[Visit an injectable type listener binding.]]>
8141 </doc>
8142 </method>
8143 <method name="visit" return="V"
8144 abstract="false" native="false" synchronized="false"
8145 static="false" final="false" visibility="public"
8146 deprecated="not deprecated">
8147 <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/>
8148 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00008149 <![CDATA[Visit a require explicit bindings command.
8150
sameb1d3f8cd2014-10-07 15:32:12 -07008151 @since 3.0]]>
8152 </doc>
8153 </method>
8154 <method name="visit" return="V"
8155 abstract="false" native="false" synchronized="false"
8156 static="false" final="false" visibility="public"
8157 deprecated="not deprecated">
8158 <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/>
8159 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00008160 <![CDATA[Visit a disable circular proxies command.
8161
sameb1d3f8cd2014-10-07 15:32:12 -07008162 @since 3.0]]>
8163 </doc>
8164 </method>
8165 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008166 <![CDATA[Visit elements.
8167
8168 @param <V> any type to be returned by the visit method. Use {@link Void} with
8169 {@code return null} if no return type is needed.
8170
sameb1d3f8cd2014-10-07 15:32:12 -07008171 @since 2.0]]>
8172 </doc>
8173 </interface>
8174 <!-- end interface com.google.inject.spi.ElementVisitor -->
8175 <!-- start interface com.google.inject.spi.ExposedBinding -->
8176 <interface name="ExposedBinding" abstract="true"
8177 static="false" final="false" visibility="public"
8178 deprecated="not deprecated">
8179 <implements name="com.google.inject.Binding&lt;T&gt;"/>
8180 <implements name="com.google.inject.spi.HasDependencies"/>
8181 <method name="getPrivateElements" return="com.google.inject.spi.PrivateElements"
8182 abstract="false" native="false" synchronized="false"
8183 static="false" final="false" visibility="public"
8184 deprecated="not deprecated">
8185 <doc>
8186 <![CDATA[Returns the enclosed environment that holds the original binding.]]>
8187 </doc>
8188 </method>
8189 <method name="applyTo"
8190 abstract="false" native="false" synchronized="false"
8191 static="false" final="false" visibility="public"
8192 deprecated="not deprecated">
8193 <param name="binder" type="com.google.inject.Binder"/>
8194 <doc>
8195 <![CDATA[Unsupported. Always throws {@link UnsupportedOperationException}.]]>
8196 </doc>
8197 </method>
8198 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008199 <![CDATA[A binding to a key exposed from an enclosed private environment.
8200
8201 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07008202 @since 2.0]]>
8203 </doc>
8204 </interface>
8205 <!-- end interface com.google.inject.spi.ExposedBinding -->
8206 <!-- start interface com.google.inject.spi.HasDependencies -->
8207 <interface name="HasDependencies" abstract="true"
8208 static="false" final="false" visibility="public"
8209 deprecated="not deprecated">
8210 <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
8211 abstract="false" native="false" synchronized="false"
8212 static="false" final="false" visibility="public"
8213 deprecated="not deprecated">
8214 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008215 <![CDATA[Returns the known dependencies for this type. If this has dependencies whose values are not
8216 known statically, a dependency for the {@link com.google.inject.Injector Injector} will be
8217 included in the returned set.
8218
sameb1d3f8cd2014-10-07 15:32:12 -07008219 @return a possibly empty set]]>
8220 </doc>
8221 </method>
8222 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008223 <![CDATA[Implemented by {@link com.google.inject.Binding bindings}, {@link com.google.inject.Provider
8224 providers} and instances that expose their dependencies explicitly.
8225
8226 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07008227 @since 2.0]]>
8228 </doc>
8229 </interface>
8230 <!-- end interface com.google.inject.spi.HasDependencies -->
8231 <!-- start interface com.google.inject.spi.InjectionListener -->
8232 <interface name="InjectionListener" abstract="true"
8233 static="false" final="false" visibility="public"
8234 deprecated="not deprecated">
8235 <method name="afterInjection"
8236 abstract="false" native="false" synchronized="false"
8237 static="false" final="false" visibility="public"
8238 deprecated="not deprecated">
8239 <param name="injectee" type="I"/>
8240 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008241 <![CDATA[Invoked by Guice after it injects the fields and methods of instance.
8242
sameb1d3f8cd2014-10-07 15:32:12 -07008243 @param injectee instance that Guice injected dependencies into]]>
8244 </doc>
8245 </method>
8246 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008247 <![CDATA[Listens for injections into instances of type {@code I}. Useful for performing further
8248 injections, post-injection initialization, and more.
8249
8250 @author crazybob@google.com (Bob Lee)
8251 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07008252 @since 2.0]]>
8253 </doc>
8254 </interface>
8255 <!-- end interface com.google.inject.spi.InjectionListener -->
8256 <!-- start class com.google.inject.spi.InjectionPoint -->
8257 <class name="InjectionPoint" extends="java.lang.Object"
8258 abstract="false"
8259 static="false" final="true" visibility="public"
8260 deprecated="not deprecated">
8261 <method name="getMember" return="java.lang.reflect.Member"
8262 abstract="false" native="false" synchronized="false"
8263 static="false" final="false" visibility="public"
8264 deprecated="not deprecated">
8265 <doc>
8266 <![CDATA[Returns the injected constructor, field, or method.]]>
8267 </doc>
8268 </method>
8269 <method name="getDependencies" return="java.util.List&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
8270 abstract="false" native="false" synchronized="false"
8271 static="false" final="false" visibility="public"
8272 deprecated="not deprecated">
8273 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008274 <![CDATA[Returns the dependencies for this injection point. If the injection point is for a method or
8275 constructor, the dependencies will correspond to that member's parameters. Field injection
8276 points always have a single dependency for the field itself.
8277
sameb1d3f8cd2014-10-07 15:32:12 -07008278 @return a possibly-empty list]]>
8279 </doc>
8280 </method>
8281 <method name="isOptional" return="boolean"
8282 abstract="false" native="false" synchronized="false"
8283 static="false" final="false" visibility="public"
8284 deprecated="not deprecated">
8285 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008286 <![CDATA[Returns true if this injection point shall be skipped if the injector cannot resolve bindings
8287 for all required dependencies. Both explicit bindings (as specified in a module), and implicit
8288 bindings ({@literal @}{@link com.google.inject.ImplementedBy ImplementedBy}, default
sameb1d3f8cd2014-10-07 15:32:12 -07008289 constructors etc.) may be used to satisfy optional injection points.]]>
8290 </doc>
8291 </method>
8292 <method name="isToolable" return="boolean"
8293 abstract="false" native="false" synchronized="false"
8294 static="false" final="false" visibility="public"
8295 deprecated="not deprecated">
8296 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008297 <![CDATA[Returns true if the element is annotated with {@literal @}{@link Toolable}.
8298
sameb1d3f8cd2014-10-07 15:32:12 -07008299 @since 3.0]]>
8300 </doc>
8301 </method>
8302 <method name="getDeclaringType" return="com.google.inject.TypeLiteral&lt;?&gt;"
8303 abstract="false" native="false" synchronized="false"
8304 static="false" final="false" visibility="public"
8305 deprecated="not deprecated">
8306 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008307 <![CDATA[Returns the generic type that defines this injection point. If the member exists on a
8308 parameterized type, the result will include more type information than the member's {@link
8309 Member#getDeclaringClass() raw declaring class}.
8310
sameb1d3f8cd2014-10-07 15:32:12 -07008311 @since 3.0]]>
8312 </doc>
8313 </method>
8314 <method name="equals" return="boolean"
8315 abstract="false" native="false" synchronized="false"
8316 static="false" final="false" visibility="public"
8317 deprecated="not deprecated">
8318 <param name="o" type="java.lang.Object"/>
8319 </method>
8320 <method name="hashCode" return="int"
8321 abstract="false" native="false" synchronized="false"
8322 static="false" final="false" visibility="public"
8323 deprecated="not deprecated">
8324 </method>
8325 <method name="toString" return="java.lang.String"
8326 abstract="false" native="false" synchronized="false"
8327 static="false" final="false" visibility="public"
8328 deprecated="not deprecated">
8329 </method>
8330 <method name="forConstructor" return="com.google.inject.spi.InjectionPoint"
8331 abstract="false" native="false" synchronized="false"
8332 static="true" final="false" visibility="public"
8333 deprecated="not deprecated">
8334 <param name="constructor" type="java.lang.reflect.Constructor&lt;T&gt;"/>
8335 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008336 <![CDATA[Returns a new injection point for the specified constructor. If the declaring type of {@code
8337 constructor} is parameterized (such as {@code List<T>}), prefer the overload that includes a
8338 type literal.
8339
8340 @param constructor any single constructor present on {@code type}.
8341
sameb1d3f8cd2014-10-07 15:32:12 -07008342 @since 3.0]]>
8343 </doc>
8344 </method>
8345 <method name="forConstructor" return="com.google.inject.spi.InjectionPoint"
8346 abstract="false" native="false" synchronized="false"
8347 static="true" final="false" visibility="public"
8348 deprecated="not deprecated">
8349 <param name="constructor" type="java.lang.reflect.Constructor&lt;T&gt;"/>
8350 <param name="type" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
8351 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008352 <![CDATA[Returns a new injection point for the specified constructor of {@code type}.
8353
8354 @param constructor any single constructor present on {@code type}.
8355 @param type the concrete type that defines {@code constructor}.
8356
sameb1d3f8cd2014-10-07 15:32:12 -07008357 @since 3.0]]>
8358 </doc>
8359 </method>
8360 <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint"
8361 abstract="false" native="false" synchronized="false"
8362 static="true" final="false" visibility="public"
8363 deprecated="not deprecated">
8364 <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
8365 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008366 <![CDATA[Returns a new injection point for the injectable constructor of {@code type}.
8367
8368 @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject},
8369 or a no-arguments constructor that is not private.
8370 @throws ConfigurationException if there is no injectable constructor, more than one injectable
8371 constructor, or if parameters of the injectable constructor are malformed, such as a
sameb1d3f8cd2014-10-07 15:32:12 -07008372 parameter with multiple binding annotations.]]>
8373 </doc>
8374 </method>
8375 <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint"
8376 abstract="false" native="false" synchronized="false"
8377 static="true" final="false" visibility="public"
8378 deprecated="not deprecated">
8379 <param name="type" type="java.lang.Class&lt;?&gt;"/>
8380 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008381 <![CDATA[Returns a new injection point for the injectable constructor of {@code type}.
8382
8383 @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject},
8384 or a no-arguments constructor that is not private.
8385 @throws ConfigurationException if there is no injectable constructor, more than one injectable
8386 constructor, or if parameters of the injectable constructor are malformed, such as a
sameb1d3f8cd2014-10-07 15:32:12 -07008387 parameter with multiple binding annotations.]]>
8388 </doc>
8389 </method>
8390 <method name="forStaticMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
8391 abstract="false" native="false" synchronized="false"
8392 static="true" final="false" visibility="public"
8393 deprecated="not deprecated">
8394 <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
8395 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008396 <![CDATA[Returns all static method and field injection points on {@code type}.
8397
8398 @return a possibly empty set of injection points. The set has a specified iteration order. All
8399 fields are returned and then all methods. Within the fields, supertype fields are returned
8400 before subtype fields. Similarly, supertype methods are returned before subtype methods.
8401 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
8402 a field with multiple binding annotations. The exception's {@link
8403 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
sameb1d3f8cd2014-10-07 15:32:12 -07008404 of the valid injection points.]]>
8405 </doc>
8406 </method>
8407 <method name="forStaticMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
8408 abstract="false" native="false" synchronized="false"
8409 static="true" final="false" visibility="public"
8410 deprecated="not deprecated">
8411 <param name="type" type="java.lang.Class&lt;?&gt;"/>
8412 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008413 <![CDATA[Returns all static method and field injection points on {@code type}.
8414
8415 @return a possibly empty set of injection points. The set has a specified iteration order. All
8416 fields are returned and then all methods. Within the fields, supertype fields are returned
8417 before subtype fields. Similarly, supertype methods are returned before subtype methods.
8418 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
8419 a field with multiple binding annotations. The exception's {@link
8420 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
sameb1d3f8cd2014-10-07 15:32:12 -07008421 of the valid injection points.]]>
8422 </doc>
8423 </method>
8424 <method name="forInstanceMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
8425 abstract="false" native="false" synchronized="false"
8426 static="true" final="false" visibility="public"
8427 deprecated="not deprecated">
8428 <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
8429 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008430 <![CDATA[Returns all instance method and field injection points on {@code type}.
8431
8432 @return a possibly empty set of injection points. The set has a specified iteration order. All
8433 fields are returned and then all methods. Within the fields, supertype fields are returned
8434 before subtype fields. Similarly, supertype methods are returned before subtype methods.
8435 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
8436 a field with multiple binding annotations. The exception's {@link
8437 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
sameb1d3f8cd2014-10-07 15:32:12 -07008438 of the valid injection points.]]>
8439 </doc>
8440 </method>
8441 <method name="forInstanceMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
8442 abstract="false" native="false" synchronized="false"
8443 static="true" final="false" visibility="public"
8444 deprecated="not deprecated">
8445 <param name="type" type="java.lang.Class&lt;?&gt;"/>
8446 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008447 <![CDATA[Returns all instance method and field injection points on {@code type}.
8448
8449 @return a possibly empty set of injection points. The set has a specified iteration order. All
8450 fields are returned and then all methods. Within the fields, supertype fields are returned
8451 before subtype fields. Similarly, supertype methods are returned before subtype methods.
8452 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
8453 a field with multiple binding annotations. The exception's {@link
8454 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
sameb1d3f8cd2014-10-07 15:32:12 -07008455 of the valid injection points.]]>
8456 </doc>
8457 </method>
8458 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008459 <![CDATA[A constructor, field or method that can receive injections. Typically this is a member with the
8460 {@literal @}{@link Inject} annotation. For non-private, no argument constructors, the member may
8461 omit the annotation.
8462
8463 @author crazybob@google.com (Bob Lee)
sameb1d3f8cd2014-10-07 15:32:12 -07008464 @since 2.0]]>
8465 </doc>
8466 </class>
8467 <!-- end class com.google.inject.spi.InjectionPoint -->
8468 <!-- start class com.google.inject.spi.InjectionRequest -->
8469 <class name="InjectionRequest" extends="java.lang.Object"
8470 abstract="false"
8471 static="false" final="true" visibility="public"
8472 deprecated="not deprecated">
8473 <implements name="com.google.inject.spi.Element"/>
8474 <constructor name="InjectionRequest" type="java.lang.Object, com.google.inject.TypeLiteral&lt;T&gt;, T"
8475 static="false" final="false" visibility="public"
8476 deprecated="not deprecated">
8477 </constructor>
8478 <method name="getSource" return="java.lang.Object"
8479 abstract="false" native="false" synchronized="false"
8480 static="false" final="false" visibility="public"
8481 deprecated="not deprecated">
8482 </method>
8483 <method name="getInstance" return="T"
8484 abstract="false" native="false" synchronized="false"
8485 static="false" final="false" visibility="public"
8486 deprecated="not deprecated">
8487 </method>
8488 <method name="getType" return="com.google.inject.TypeLiteral&lt;T&gt;"
8489 abstract="false" native="false" synchronized="false"
8490 static="false" final="false" visibility="public"
8491 deprecated="not deprecated">
8492 </method>
8493 <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
8494 abstract="false" native="false" synchronized="false"
8495 static="false" final="false" visibility="public"
8496 deprecated="not deprecated">
8497 <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/>
8498 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008499 <![CDATA[Returns the instance methods and fields of {@code instance} that will be injected to fulfill
8500 this request.
8501
8502 @return a possibly empty set of injection points. The set has a specified iteration order. All
8503 fields are returned and then all methods. Within the fields, supertype fields are returned
8504 before subtype fields. Similarly, supertype methods are returned before subtype methods.
8505 @throws ConfigurationException if there is a malformed injection point on the class of {@code
8506 instance}, such as a field with multiple binding annotations. The exception's {@link
8507 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
sameb1d3f8cd2014-10-07 15:32:12 -07008508 of the valid injection points.]]>
8509 </doc>
8510 </method>
8511 <method name="acceptVisitor" return="R"
8512 abstract="false" native="false" synchronized="false"
8513 static="false" final="false" visibility="public"
8514 deprecated="not deprecated">
8515 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;R&gt;"/>
8516 </method>
8517 <method name="applyTo"
8518 abstract="false" native="false" synchronized="false"
8519 static="false" final="false" visibility="public"
8520 deprecated="not deprecated">
8521 <param name="binder" type="com.google.inject.Binder"/>
8522 </method>
8523 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008524 <![CDATA[A request to inject the instance fields and methods of an instance. Requests are created
8525 explicitly in a module using {@link com.google.inject.Binder#requestInjection(Object)
8526 requestInjection()} statements:
8527 <pre>
8528 requestInjection(serviceInstance);</pre>
8529
8530 @author mikeward@google.com (Mike Ward)
sameb1d3f8cd2014-10-07 15:32:12 -07008531 @since 2.0]]>
8532 </doc>
8533 </class>
8534 <!-- end class com.google.inject.spi.InjectionRequest -->
8535 <!-- start interface com.google.inject.spi.InstanceBinding -->
8536 <interface name="InstanceBinding" abstract="true"
8537 static="false" final="false" visibility="public"
8538 deprecated="not deprecated">
8539 <implements name="com.google.inject.Binding&lt;T&gt;"/>
8540 <implements name="com.google.inject.spi.HasDependencies"/>
8541 <method name="getInstance" return="T"
8542 abstract="false" native="false" synchronized="false"
8543 static="false" final="false" visibility="public"
8544 deprecated="not deprecated">
8545 <doc>
8546 <![CDATA[Returns the user-supplied instance.]]>
8547 </doc>
8548 </method>
8549 <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
8550 abstract="false" native="false" synchronized="false"
8551 static="false" final="false" visibility="public"
8552 deprecated="not deprecated">
8553 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008554 <![CDATA[Returns the field and method injection points of the instance, injected at injector-creation
8555 time only.
8556
sameb1d3f8cd2014-10-07 15:32:12 -07008557 @return a possibly empty set]]>
8558 </doc>
8559 </method>
8560 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008561 <![CDATA[A binding to a single instance. The same instance is returned for every injection.
8562
8563 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07008564 @since 2.0]]>
8565 </doc>
8566 </interface>
8567 <!-- end interface com.google.inject.spi.InstanceBinding -->
8568 <!-- start class com.google.inject.spi.InterceptorBinding -->
8569 <class name="InterceptorBinding" extends="java.lang.Object"
8570 abstract="false"
8571 static="false" final="true" visibility="public"
8572 deprecated="not deprecated">
8573 <implements name="com.google.inject.spi.Element"/>
8574 <method name="getSource" return="java.lang.Object"
8575 abstract="false" native="false" synchronized="false"
8576 static="false" final="false" visibility="public"
8577 deprecated="not deprecated">
8578 </method>
8579 <method name="getClassMatcher" return="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"
8580 abstract="false" native="false" synchronized="false"
8581 static="false" final="false" visibility="public"
8582 deprecated="not deprecated">
8583 </method>
8584 <method name="getMethodMatcher" return="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"
8585 abstract="false" native="false" synchronized="false"
8586 static="false" final="false" visibility="public"
8587 deprecated="not deprecated">
8588 </method>
8589 <method name="getInterceptors" return="java.util.List&lt;org.aopalliance.intercept.MethodInterceptor&gt;"
8590 abstract="false" native="false" synchronized="false"
8591 static="false" final="false" visibility="public"
8592 deprecated="not deprecated">
8593 </method>
8594 <method name="acceptVisitor" return="T"
8595 abstract="false" native="false" synchronized="false"
8596 static="false" final="false" visibility="public"
8597 deprecated="not deprecated">
8598 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
8599 </method>
8600 <method name="applyTo"
8601 abstract="false" native="false" synchronized="false"
8602 static="false" final="false" visibility="public"
8603 deprecated="not deprecated">
8604 <param name="binder" type="com.google.inject.Binder"/>
8605 </method>
8606 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008607 <![CDATA[Registration of interceptors for matching methods of matching classes. Instances are created
8608 explicitly in a module using {@link com.google.inject.Binder#bindInterceptor(
8609 Matcher, Matcher, MethodInterceptor[]) bindInterceptor()} statements:
8610 <pre>
8611 bindInterceptor(Matchers.subclassesOf(MyAction.class),
8612 Matchers.annotatedWith(Transactional.class),
8613 new MyTransactionInterceptor());</pre>
8614
8615 or from an injectable type listener using {@link TypeEncounter#bindInterceptor(Matcher,
8616 org.aopalliance.intercept.MethodInterceptor[]) TypeEncounter.bindInterceptor()}.
8617
8618 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07008619 @since 2.0]]>
8620 </doc>
8621 </class>
8622 <!-- end class com.google.inject.spi.InterceptorBinding -->
8623 <!-- start interface com.google.inject.spi.LinkedKeyBinding -->
8624 <interface name="LinkedKeyBinding" abstract="true"
8625 static="false" final="false" visibility="public"
8626 deprecated="not deprecated">
8627 <implements name="com.google.inject.Binding&lt;T&gt;"/>
8628 <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends T&gt;"
8629 abstract="false" native="false" synchronized="false"
8630 static="false" final="false" visibility="public"
8631 deprecated="not deprecated">
8632 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008633 <![CDATA[Returns the linked key used to resolve injections. That binding can be retrieved from an
sameb1d3f8cd2014-10-07 15:32:12 -07008634 injector using {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]>
8635 </doc>
8636 </method>
8637 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008638 <![CDATA[A binding to a linked key. The other key's binding is used to resolve injections.
8639
8640 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07008641 @since 2.0]]>
8642 </doc>
8643 </interface>
8644 <!-- end interface com.google.inject.spi.LinkedKeyBinding -->
8645 <!-- start class com.google.inject.spi.MembersInjectorLookup -->
8646 <class name="MembersInjectorLookup" extends="java.lang.Object"
8647 abstract="false"
8648 static="false" final="true" visibility="public"
8649 deprecated="not deprecated">
8650 <implements name="com.google.inject.spi.Element"/>
8651 <constructor name="MembersInjectorLookup" type="java.lang.Object, com.google.inject.TypeLiteral&lt;T&gt;"
8652 static="false" final="false" visibility="public"
8653 deprecated="not deprecated">
8654 </constructor>
8655 <method name="getSource" return="java.lang.Object"
8656 abstract="false" native="false" synchronized="false"
8657 static="false" final="false" visibility="public"
8658 deprecated="not deprecated">
8659 </method>
8660 <method name="getType" return="com.google.inject.TypeLiteral&lt;T&gt;"
8661 abstract="false" native="false" synchronized="false"
8662 static="false" final="false" visibility="public"
8663 deprecated="not deprecated">
8664 <doc>
8665 <![CDATA[Gets the type containing the members to be injected.]]>
8666 </doc>
8667 </method>
8668 <method name="acceptVisitor" return="T"
8669 abstract="false" native="false" synchronized="false"
8670 static="false" final="false" visibility="public"
8671 deprecated="not deprecated">
8672 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
8673 </method>
8674 <method name="initializeDelegate"
8675 abstract="false" native="false" synchronized="false"
8676 static="false" final="false" visibility="public"
8677 deprecated="not deprecated">
8678 <param name="delegate" type="com.google.inject.MembersInjector&lt;T&gt;"/>
8679 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008680 <![CDATA[Sets the actual members injector.
8681
sameb1d3f8cd2014-10-07 15:32:12 -07008682 @throws IllegalStateException if the delegate is already set]]>
8683 </doc>
8684 </method>
8685 <method name="applyTo"
8686 abstract="false" native="false" synchronized="false"
8687 static="false" final="false" visibility="public"
8688 deprecated="not deprecated">
8689 <param name="binder" type="com.google.inject.Binder"/>
8690 </method>
8691 <method name="getDelegate" return="com.google.inject.MembersInjector&lt;T&gt;"
8692 abstract="false" native="false" synchronized="false"
8693 static="false" final="false" visibility="public"
8694 deprecated="not deprecated">
8695 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008696 <![CDATA[Returns the delegate members injector, or {@code null} if it has not yet been initialized.
8697 The delegate will be initialized when this element is processed, or otherwise used to create
sameb1d3f8cd2014-10-07 15:32:12 -07008698 an injector.]]>
8699 </doc>
8700 </method>
8701 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
8702 abstract="false" native="false" synchronized="false"
8703 static="false" final="false" visibility="public"
8704 deprecated="not deprecated">
8705 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008706 <![CDATA[Returns the looked up members injector. The result is not valid until this lookup has been
8707 initialized, which usually happens when the injector is created. The members injector will
sameb1d3f8cd2014-10-07 15:32:12 -07008708 throw an {@code IllegalStateException} if you try to use it beforehand.]]>
8709 </doc>
8710 </method>
8711 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008712 <![CDATA[A lookup of the members injector for a type. Lookups are created explicitly in a module using
8713 {@link com.google.inject.Binder#getMembersInjector(Class) getMembersInjector()} statements:
8714 <pre>
8715 MembersInjector&lt;PaymentService&gt; membersInjector
8716 = getMembersInjector(PaymentService.class);</pre>
8717
8718 @author crazybob@google.com (Bob Lee)
sameb1d3f8cd2014-10-07 15:32:12 -07008719 @since 2.0]]>
8720 </doc>
8721 </class>
8722 <!-- end class com.google.inject.spi.MembersInjectorLookup -->
8723 <!-- start class com.google.inject.spi.Message -->
8724 <class name="Message" extends="java.lang.Object"
8725 abstract="false"
8726 static="false" final="true" visibility="public"
8727 deprecated="not deprecated">
8728 <implements name="java.io.Serializable"/>
8729 <implements name="com.google.inject.spi.Element"/>
8730 <constructor name="Message" type="java.util.List&lt;java.lang.Object&gt;, java.lang.String, java.lang.Throwable"
8731 static="false" final="false" visibility="public"
8732 deprecated="not deprecated">
8733 <doc>
8734 <![CDATA[@since 2.0]]>
8735 </doc>
8736 </constructor>
8737 <constructor name="Message" type="java.lang.Object, java.lang.String"
8738 static="false" final="false" visibility="public"
8739 deprecated="not deprecated">
8740 </constructor>
8741 <constructor name="Message" type="java.lang.String"
8742 static="false" final="false" visibility="public"
8743 deprecated="not deprecated">
8744 </constructor>
8745 <method name="getSource" return="java.lang.String"
8746 abstract="false" native="false" synchronized="false"
8747 static="false" final="false" visibility="public"
8748 deprecated="not deprecated">
8749 </method>
8750 <method name="getSources" return="java.util.List&lt;java.lang.Object&gt;"
8751 abstract="false" native="false" synchronized="false"
8752 static="false" final="false" visibility="public"
8753 deprecated="not deprecated">
8754 <doc>
8755 <![CDATA[@since 2.0]]>
8756 </doc>
8757 </method>
8758 <method name="getMessage" return="java.lang.String"
8759 abstract="false" native="false" synchronized="false"
8760 static="false" final="false" visibility="public"
8761 deprecated="not deprecated">
8762 <doc>
8763 <![CDATA[Gets the error message text.]]>
8764 </doc>
8765 </method>
8766 <method name="acceptVisitor" return="T"
8767 abstract="false" native="false" synchronized="false"
8768 static="false" final="false" visibility="public"
8769 deprecated="not deprecated">
8770 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
8771 <doc>
8772 <![CDATA[@since 2.0]]>
8773 </doc>
8774 </method>
8775 <method name="getCause" return="java.lang.Throwable"
8776 abstract="false" native="false" synchronized="false"
8777 static="false" final="false" visibility="public"
8778 deprecated="not deprecated">
8779 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008780 <![CDATA[Returns the throwable that caused this message, or {@code null} if this
8781 message was not caused by a throwable.
8782
sameb1d3f8cd2014-10-07 15:32:12 -07008783 @since 2.0]]>
8784 </doc>
8785 </method>
8786 <method name="toString" return="java.lang.String"
8787 abstract="false" native="false" synchronized="false"
8788 static="false" final="false" visibility="public"
8789 deprecated="not deprecated">
8790 </method>
8791 <method name="hashCode" return="int"
8792 abstract="false" native="false" synchronized="false"
8793 static="false" final="false" visibility="public"
8794 deprecated="not deprecated">
8795 </method>
8796 <method name="equals" return="boolean"
8797 abstract="false" native="false" synchronized="false"
8798 static="false" final="false" visibility="public"
8799 deprecated="not deprecated">
8800 <param name="o" type="java.lang.Object"/>
8801 </method>
8802 <method name="applyTo"
8803 abstract="false" native="false" synchronized="false"
8804 static="false" final="false" visibility="public"
8805 deprecated="not deprecated">
8806 <param name="binder" type="com.google.inject.Binder"/>
8807 <doc>
8808 <![CDATA[@since 2.0]]>
8809 </doc>
8810 </method>
8811 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008812 <![CDATA[An error message and the context in which it occured. Messages are usually created internally by
8813 Guice and its extensions. Messages can be created explicitly in a module using {@link
8814 com.google.inject.Binder#addError(Throwable) addError()} statements:
8815 <pre>
8816 try {
8817 bindPropertiesFromFile();
8818 } catch (IOException e) {
8819 addError(e);
8820 }</pre>
8821
sameb1d3f8cd2014-10-07 15:32:12 -07008822 @author crazybob@google.com (Bob Lee)]]>
8823 </doc>
8824 </class>
8825 <!-- end class com.google.inject.spi.Message -->
8826 <!-- start interface com.google.inject.spi.PrivateElements -->
8827 <interface name="PrivateElements" abstract="true"
8828 static="false" final="false" visibility="public"
8829 deprecated="not deprecated">
8830 <implements name="com.google.inject.spi.Element"/>
8831 <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
8832 abstract="false" native="false" synchronized="false"
8833 static="false" final="false" visibility="public"
8834 deprecated="not deprecated">
8835 <doc>
8836 <![CDATA[Returns the configuration information in this private environment.]]>
8837 </doc>
8838 </method>
8839 <method name="getInjector" return="com.google.inject.Injector"
8840 abstract="false" native="false" synchronized="false"
8841 static="false" final="false" visibility="public"
8842 deprecated="not deprecated">
8843 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008844 <![CDATA[Returns the child injector that hosts these private elements, or null if the elements haven't
sameb1d3f8cd2014-10-07 15:32:12 -07008845 been used to create an injector.]]>
8846 </doc>
8847 </method>
8848 <method name="getExposedKeys" return="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"
8849 abstract="false" native="false" synchronized="false"
8850 static="false" final="false" visibility="public"
8851 deprecated="not deprecated">
8852 <doc>
8853 <![CDATA[Returns the unique exposed keys for these private elements.]]>
8854 </doc>
8855 </method>
8856 <method name="getExposedSource" return="java.lang.Object"
8857 abstract="false" native="false" synchronized="false"
8858 static="false" final="false" visibility="public"
8859 deprecated="not deprecated">
8860 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
8861 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008862 <![CDATA[Returns an arbitrary object containing information about the "place" where this key was
8863 exposed. Used by Guice in the production of descriptive error messages.
8864
8865 <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good
8866 example. Tools should simply call {@code toString()} on the source object if the type is
8867 unfamiliar.
8868
sameb1d3f8cd2014-10-07 15:32:12 -07008869 @param key one of the keys exposed by this module.]]>
8870 </doc>
8871 </method>
8872 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008873 <![CDATA[A private collection of elements that are hidden from the enclosing injector or module by
8874 default. See {@link com.google.inject.PrivateModule PrivateModule} for details.
8875
8876 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07008877 @since 2.0]]>
8878 </doc>
8879 </interface>
8880 <!-- end interface com.google.inject.spi.PrivateElements -->
8881 <!-- start interface com.google.inject.spi.ProviderBinding -->
8882 <interface name="ProviderBinding" abstract="true"
8883 static="false" final="false" visibility="public"
8884 deprecated="not deprecated">
8885 <implements name="com.google.inject.Binding&lt;T&gt;"/>
8886 <method name="getProvidedKey" return="com.google.inject.Key&lt;?&gt;"
8887 abstract="false" native="false" synchronized="false"
8888 static="false" final="false" visibility="public"
8889 deprecated="not deprecated">
8890 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008891 <![CDATA[Returns the key whose binding is used to {@link Provider#get provide instances}. That binding
8892 can be retrieved from an injector using {@link com.google.inject.Injector#getBinding(Key)
sameb1d3f8cd2014-10-07 15:32:12 -07008893 Injector.getBinding(providedKey)}]]>
8894 </doc>
8895 </method>
8896 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008897 <![CDATA[A binding to a {@link Provider} that delegates to the binding for the provided type. This binding
8898 is used whenever a {@code Provider<T>} is injected (as opposed to injecting {@code T} directly).
8899
8900 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07008901 @since 2.0]]>
8902 </doc>
8903 </interface>
8904 <!-- end interface com.google.inject.spi.ProviderBinding -->
8905 <!-- start interface com.google.inject.spi.ProviderInstanceBinding -->
8906 <interface name="ProviderInstanceBinding" abstract="true"
8907 static="false" final="false" visibility="public"
8908 deprecated="not deprecated">
8909 <implements name="com.google.inject.Binding&lt;T&gt;"/>
8910 <implements name="com.google.inject.spi.HasDependencies"/>
8911 <method name="getProviderInstance" return="com.google.inject.Provider&lt;? extends T&gt;"
8912 abstract="false" native="false" synchronized="false"
8913 static="false" final="false" visibility="public"
8914 deprecated="not deprecated">
8915 <doc>
8916 <![CDATA[Returns the user-supplied, unscoped provider.]]>
8917 </doc>
8918 </method>
8919 <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
8920 abstract="false" native="false" synchronized="false"
8921 static="false" final="false" visibility="public"
8922 deprecated="not deprecated">
8923 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008924 <![CDATA[Returns the field and method injection points of the provider, injected at injector-creation
8925 time only.
8926
sameb1d3f8cd2014-10-07 15:32:12 -07008927 @return a possibly empty set]]>
8928 </doc>
8929 </method>
8930 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008931 <![CDATA[A binding to a provider instance. The provider's {@code get} method is invoked to resolve
8932 injections.
8933
8934 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07008935 @since 2.0]]>
8936 </doc>
8937 </interface>
8938 <!-- end interface com.google.inject.spi.ProviderInstanceBinding -->
8939 <!-- start interface com.google.inject.spi.ProviderKeyBinding -->
8940 <interface name="ProviderKeyBinding" abstract="true"
8941 static="false" final="false" visibility="public"
8942 deprecated="not deprecated">
8943 <implements name="com.google.inject.Binding&lt;T&gt;"/>
8944 <method name="getProviderKey" return="com.google.inject.Key&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"
8945 abstract="false" native="false" synchronized="false"
8946 static="false" final="false" visibility="public"
8947 deprecated="not deprecated">
8948 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008949 <![CDATA[Returns the key used to resolve the provider's binding. That binding can be retrieved from an
8950 injector using {@link com.google.inject.Injector#getBinding(Key)
sameb1d3f8cd2014-10-07 15:32:12 -07008951 Injector.getBinding(providerKey)}]]>
8952 </doc>
8953 </method>
8954 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008955 <![CDATA[A binding to a provider key. To resolve injections, the provider key is first resolved, then that
8956 provider's {@code get} method is invoked.
8957
8958 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07008959 @since 2.0]]>
8960 </doc>
8961 </interface>
8962 <!-- end interface com.google.inject.spi.ProviderKeyBinding -->
8963 <!-- start class com.google.inject.spi.ProviderLookup -->
8964 <class name="ProviderLookup" extends="java.lang.Object"
8965 abstract="false"
8966 static="false" final="true" visibility="public"
8967 deprecated="not deprecated">
8968 <implements name="com.google.inject.spi.Element"/>
8969 <constructor name="ProviderLookup" type="java.lang.Object, com.google.inject.Key&lt;T&gt;"
8970 static="false" final="false" visibility="public"
8971 deprecated="not deprecated">
8972 </constructor>
8973 <method name="getSource" return="java.lang.Object"
8974 abstract="false" native="false" synchronized="false"
8975 static="false" final="false" visibility="public"
8976 deprecated="not deprecated">
8977 </method>
8978 <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
8979 abstract="false" native="false" synchronized="false"
8980 static="false" final="false" visibility="public"
8981 deprecated="not deprecated">
8982 </method>
8983 <method name="acceptVisitor" return="T"
8984 abstract="false" native="false" synchronized="false"
8985 static="false" final="false" visibility="public"
8986 deprecated="not deprecated">
8987 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
8988 </method>
8989 <method name="initializeDelegate"
8990 abstract="false" native="false" synchronized="false"
8991 static="false" final="false" visibility="public"
8992 deprecated="not deprecated">
8993 <param name="delegate" type="com.google.inject.Provider&lt;T&gt;"/>
8994 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008995 <![CDATA[Sets the actual provider.
8996
sameb1d3f8cd2014-10-07 15:32:12 -07008997 @throws IllegalStateException if the delegate is already set]]>
8998 </doc>
8999 </method>
9000 <method name="applyTo"
9001 abstract="false" native="false" synchronized="false"
9002 static="false" final="false" visibility="public"
9003 deprecated="not deprecated">
9004 <param name="binder" type="com.google.inject.Binder"/>
9005 </method>
9006 <method name="getDelegate" return="com.google.inject.Provider&lt;T&gt;"
9007 abstract="false" native="false" synchronized="false"
9008 static="false" final="false" visibility="public"
9009 deprecated="not deprecated">
9010 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009011 <![CDATA[Returns the delegate provider, or {@code null} if it has not yet been initialized. The delegate
sameb1d3f8cd2014-10-07 15:32:12 -07009012 will be initialized when this element is processed, or otherwise used to create an injector.]]>
9013 </doc>
9014 </method>
9015 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
9016 abstract="false" native="false" synchronized="false"
9017 static="false" final="false" visibility="public"
9018 deprecated="not deprecated">
9019 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009020 <![CDATA[Returns the looked up provider. The result is not valid until this lookup has been initialized,
9021 which usually happens when the injector is created. The provider will throw an {@code
sameb1d3f8cd2014-10-07 15:32:12 -07009022 IllegalStateException} if you try to use it beforehand.]]>
9023 </doc>
9024 </method>
9025 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009026 <![CDATA[A lookup of the provider for a type. Lookups are created explicitly in a module using
9027 {@link com.google.inject.Binder#getProvider(Class) getProvider()} statements:
9028 <pre>
9029 Provider&lt;PaymentService&gt; paymentServiceProvider
9030 = getProvider(PaymentService.class);</pre>
9031
9032 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07009033 @since 2.0]]>
9034 </doc>
9035 </class>
9036 <!-- end class com.google.inject.spi.ProviderLookup -->
9037 <!-- start interface com.google.inject.spi.ProviderWithDependencies -->
9038 <interface name="ProviderWithDependencies" abstract="true"
9039 static="false" final="false" visibility="public"
9040 deprecated="not deprecated">
9041 <implements name="com.google.inject.Provider&lt;T&gt;"/>
9042 <implements name="com.google.inject.spi.HasDependencies"/>
9043 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009044 <![CDATA[A provider with dependencies on other injected types. If a {@link Provider} has dependencies that
9045 aren't specified in injections, this interface should be used to expose all dependencies.
9046
sameb1d3f8cd2014-10-07 15:32:12 -07009047 @since 2.0]]>
9048 </doc>
9049 </interface>
9050 <!-- end interface com.google.inject.spi.ProviderWithDependencies -->
9051 <!-- start interface com.google.inject.spi.ProviderWithExtensionVisitor -->
9052 <interface name="ProviderWithExtensionVisitor" abstract="true"
9053 static="false" final="false" visibility="public"
9054 deprecated="not deprecated">
9055 <implements name="com.google.inject.Provider&lt;T&gt;"/>
9056 <method name="acceptExtensionVisitor" return="V"
9057 abstract="false" native="false" synchronized="false"
9058 static="false" final="false" visibility="public"
9059 deprecated="not deprecated">
9060 <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor&lt;B, V&gt;"/>
9061 <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends B&gt;"/>
9062 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009063 <![CDATA[Instructs the extension determine if the visitor is an instance of a custom
9064 extension visitor, and if so, visit it using that method. If the visitor is
9065 not an instance of the custom extension visitor, this method <b>MUST</b>
9066 call visitor.visit(binding).
9067 <p>
9068 Due to issues with generics, the type parameters of this method do not
9069 relate to the type of the provider. In practice, the 'B' type will always
sameb1d3f8cd2014-10-07 15:32:12 -07009070 be a supertype of 'T'.]]>
9071 </doc>
9072 </method>
9073 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009074 <![CDATA[A Provider that is part of an extension which supports a custom
9075 BindingTargetVisitor.
9076 <p>
9077 When an extension binds a provider instance, the provider can implement this
9078 interface to allow users using the
9079 {@link Binding#acceptTargetVisitor(BindingTargetVisitor)} method to visit a
9080 custom visitor designed for that extension. A typical implementation within
9081 the extension would look like
9082 <pre>
9083 &lt;V, B> V acceptExtensionVisitor(BindingTargetVisitor&lt;B, V> visitor, ProviderInstanceBinding&lt;? extends B> binding) {
9084 if(visitor instanceof MyCustomExtensionVisitor) {
9085 return ((MyCustomExtensionVisitor&lt;B, V>)visitor).visitCustomExtension(customProperties, binding);
9086 } else {
9087 return visitor.visit(binding);
9088 }
9089 }</pre>
9090 'MyCustomExtensionVisitor' in the example above would be an interface the
9091 extension provides that users can implement in order to be notified of custom
9092 extension information. These visitor interfaces must extend from
9093 BindingTargetVisitor.
9094
9095 @since 3.0
sameb1d3f8cd2014-10-07 15:32:12 -07009096 @author sameb@google.com (Sam Berlin)]]>
9097 </doc>
9098 </interface>
9099 <!-- end interface com.google.inject.spi.ProviderWithExtensionVisitor -->
9100 <!-- start class com.google.inject.spi.RequireExplicitBindingsOption -->
9101 <class name="RequireExplicitBindingsOption" extends="java.lang.Object"
9102 abstract="false"
9103 static="false" final="true" visibility="public"
9104 deprecated="not deprecated">
9105 <implements name="com.google.inject.spi.Element"/>
9106 <method name="getSource" return="java.lang.Object"
9107 abstract="false" native="false" synchronized="false"
9108 static="false" final="false" visibility="public"
9109 deprecated="not deprecated">
9110 </method>
9111 <method name="applyTo"
9112 abstract="false" native="false" synchronized="false"
9113 static="false" final="false" visibility="public"
9114 deprecated="not deprecated">
9115 <param name="binder" type="com.google.inject.Binder"/>
9116 </method>
9117 <method name="acceptVisitor" return="T"
9118 abstract="false" native="false" synchronized="false"
9119 static="false" final="false" visibility="public"
9120 deprecated="not deprecated">
9121 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
9122 </method>
9123 <doc>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00009124 <![CDATA[A request to require explicit bindings.
9125
9126 @author sameb@google.com (Sam Berlin)
sameb1d3f8cd2014-10-07 15:32:12 -07009127 @since 3.0]]>
9128 </doc>
9129 </class>
9130 <!-- end class com.google.inject.spi.RequireExplicitBindingsOption -->
9131 <!-- start class com.google.inject.spi.ScopeBinding -->
9132 <class name="ScopeBinding" extends="java.lang.Object"
9133 abstract="false"
9134 static="false" final="true" visibility="public"
9135 deprecated="not deprecated">
9136 <implements name="com.google.inject.spi.Element"/>
9137 <method name="getSource" return="java.lang.Object"
9138 abstract="false" native="false" synchronized="false"
9139 static="false" final="false" visibility="public"
9140 deprecated="not deprecated">
9141 </method>
9142 <method name="getAnnotationType" return="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
9143 abstract="false" native="false" synchronized="false"
9144 static="false" final="false" visibility="public"
9145 deprecated="not deprecated">
9146 </method>
9147 <method name="getScope" return="com.google.inject.Scope"
9148 abstract="false" native="false" synchronized="false"
9149 static="false" final="false" visibility="public"
9150 deprecated="not deprecated">
9151 </method>
9152 <method name="acceptVisitor" return="T"
9153 abstract="false" native="false" synchronized="false"
9154 static="false" final="false" visibility="public"
9155 deprecated="not deprecated">
9156 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
9157 </method>
9158 <method name="applyTo"
9159 abstract="false" native="false" synchronized="false"
9160 static="false" final="false" visibility="public"
9161 deprecated="not deprecated">
9162 <param name="binder" type="com.google.inject.Binder"/>
9163 </method>
9164 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009165 <![CDATA[Registration of a scope annotation with the scope that implements it. Instances are created
9166 explicitly in a module using {@link com.google.inject.Binder#bindScope(Class, Scope) bindScope()}
9167 statements:
9168 <pre>
9169 Scope recordScope = new RecordScope();
9170 bindScope(RecordScoped.class, new RecordScope());</pre>
9171
9172 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07009173 @since 2.0]]>
9174 </doc>
9175 </class>
9176 <!-- end class com.google.inject.spi.ScopeBinding -->
9177 <!-- start class com.google.inject.spi.StaticInjectionRequest -->
9178 <class name="StaticInjectionRequest" extends="java.lang.Object"
9179 abstract="false"
9180 static="false" final="true" visibility="public"
9181 deprecated="not deprecated">
9182 <implements name="com.google.inject.spi.Element"/>
9183 <method name="getSource" return="java.lang.Object"
9184 abstract="false" native="false" synchronized="false"
9185 static="false" final="false" visibility="public"
9186 deprecated="not deprecated">
9187 </method>
9188 <method name="getType" return="java.lang.Class&lt;?&gt;"
9189 abstract="false" native="false" synchronized="false"
9190 static="false" final="false" visibility="public"
9191 deprecated="not deprecated">
9192 </method>
9193 <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
9194 abstract="false" native="false" synchronized="false"
9195 static="false" final="false" visibility="public"
9196 deprecated="not deprecated">
9197 <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/>
9198 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009199 <![CDATA[Returns the static methods and fields of {@code type} that will be injected to fulfill this
9200 request.
9201
9202 @return a possibly empty set of injection points. The set has a specified iteration order. All
9203 fields are returned and then all methods. Within the fields, supertype fields are returned
9204 before subtype fields. Similarly, supertype methods are returned before subtype methods.
9205 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
9206 a field with multiple binding annotations. The exception's {@link
9207 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
sameb1d3f8cd2014-10-07 15:32:12 -07009208 of the valid injection points.]]>
9209 </doc>
9210 </method>
9211 <method name="applyTo"
9212 abstract="false" native="false" synchronized="false"
9213 static="false" final="false" visibility="public"
9214 deprecated="not deprecated">
9215 <param name="binder" type="com.google.inject.Binder"/>
9216 </method>
9217 <method name="acceptVisitor" return="T"
9218 abstract="false" native="false" synchronized="false"
9219 static="false" final="false" visibility="public"
9220 deprecated="not deprecated">
9221 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
9222 </method>
9223 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009224 <![CDATA[A request to inject the static fields and methods of a type. Requests are created
9225 explicitly in a module using {@link com.google.inject.Binder#requestStaticInjection(Class[])
9226 requestStaticInjection()} statements:
9227 <pre>
9228 requestStaticInjection(MyLegacyService.class);</pre>
9229
9230 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07009231 @since 2.0]]>
9232 </doc>
9233 </class>
9234 <!-- end class com.google.inject.spi.StaticInjectionRequest -->
9235 <!-- start class com.google.inject.spi.Toolable -->
9236 <class name="Toolable" abstract="true"
9237 static="false" final="false" visibility="public"
9238 deprecated="not deprecated">
9239 <implements name="java.lang.annotation.Annotation"/>
9240 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009241 <![CDATA[Instructs an {@link Injector} running in {@link Stage#TOOL} that a method should be injected.
9242 This is typically useful for for extensions to Guice that perform additional validation in an
9243 injected method or field. This only applies to objects that are already constructed when
9244 bindings are created (ie., something bound using {@link
9245 com.google.inject.binder.LinkedBindingBuilder#toProvider toProvider}, {@link
9246 com.google.inject.binder.LinkedBindingBuilder#toInstance toInstance}, or {@link
9247 com.google.inject.Binder#requestInjection requestInjection}.
9248
9249 @author sberlin@gmail.com (Sam Berlin)
sameb1d3f8cd2014-10-07 15:32:12 -07009250 @since 3.0]]>
9251 </doc>
9252 </class>
9253 <!-- end class com.google.inject.spi.Toolable -->
9254 <!-- start interface com.google.inject.spi.TypeConverter -->
9255 <interface name="TypeConverter" abstract="true"
9256 static="false" final="false" visibility="public"
9257 deprecated="not deprecated">
9258 <method name="convert" return="java.lang.Object"
9259 abstract="false" native="false" synchronized="false"
9260 static="false" final="false" visibility="public"
9261 deprecated="not deprecated">
9262 <param name="value" type="java.lang.String"/>
9263 <param name="toType" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
9264 <doc>
9265 <![CDATA[Converts a string value. Throws an exception if a conversion error occurs.]]>
9266 </doc>
9267 </method>
9268 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009269 <![CDATA[Converts constant string values to a different type.
9270
9271 @author crazybob@google.com (Bob Lee)
sameb1d3f8cd2014-10-07 15:32:12 -07009272 @since 2.0]]>
9273 </doc>
9274 </interface>
9275 <!-- end interface com.google.inject.spi.TypeConverter -->
9276 <!-- start class com.google.inject.spi.TypeConverterBinding -->
9277 <class name="TypeConverterBinding" extends="java.lang.Object"
9278 abstract="false"
9279 static="false" final="true" visibility="public"
9280 deprecated="not deprecated">
9281 <implements name="com.google.inject.spi.Element"/>
9282 <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"
9283 static="false" final="false" visibility="public"
9284 deprecated="not deprecated">
9285 <doc>
9286 <![CDATA[@since 3.0]]>
9287 </doc>
9288 </constructor>
9289 <method name="getSource" return="java.lang.Object"
9290 abstract="false" native="false" synchronized="false"
9291 static="false" final="false" visibility="public"
9292 deprecated="not deprecated">
9293 </method>
9294 <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"
9295 abstract="false" native="false" synchronized="false"
9296 static="false" final="false" visibility="public"
9297 deprecated="not deprecated">
9298 </method>
9299 <method name="getTypeConverter" return="com.google.inject.spi.TypeConverter"
9300 abstract="false" native="false" synchronized="false"
9301 static="false" final="false" visibility="public"
9302 deprecated="not deprecated">
9303 </method>
9304 <method name="acceptVisitor" return="T"
9305 abstract="false" native="false" synchronized="false"
9306 static="false" final="false" visibility="public"
9307 deprecated="not deprecated">
9308 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
9309 </method>
9310 <method name="applyTo"
9311 abstract="false" native="false" synchronized="false"
9312 static="false" final="false" visibility="public"
9313 deprecated="not deprecated">
9314 <param name="binder" type="com.google.inject.Binder"/>
9315 </method>
9316 <method name="toString" return="java.lang.String"
9317 abstract="false" native="false" synchronized="false"
9318 static="false" final="false" visibility="public"
9319 deprecated="not deprecated">
9320 </method>
9321 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009322 <![CDATA[Registration of type converters for matching target types. Instances are created
9323 explicitly in a module using {@link com.google.inject.Binder#convertToTypes(Matcher,
9324 TypeConverter) convertToTypes()} statements:
9325 <pre>
9326 convertToTypes(Matchers.only(TypeLiteral.get(DateTime.class)), new DateTimeConverter());</pre>
9327
9328 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07009329 @since 2.0]]>
9330 </doc>
9331 </class>
9332 <!-- end class com.google.inject.spi.TypeConverterBinding -->
9333 <!-- start interface com.google.inject.spi.TypeEncounter -->
9334 <interface name="TypeEncounter" abstract="true"
9335 static="false" final="false" visibility="public"
9336 deprecated="not deprecated">
9337 <method name="addError"
9338 abstract="false" native="false" synchronized="false"
9339 static="false" final="false" visibility="public"
9340 deprecated="not deprecated">
9341 <param name="message" type="java.lang.String"/>
9342 <param name="arguments" type="java.lang.Object[]"/>
9343 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009344 <![CDATA[Records an error message for type {@code I} which will be presented to the user at a later
9345 time. Unlike throwing an exception, this enable us to continue configuring the Injector and
9346 discover more errors. Uses {@link String#format(String, Object[])} to insert the arguments
sameb1d3f8cd2014-10-07 15:32:12 -07009347 into the message.]]>
9348 </doc>
9349 </method>
9350 <method name="addError"
9351 abstract="false" native="false" synchronized="false"
9352 static="false" final="false" visibility="public"
9353 deprecated="not deprecated">
9354 <param name="t" type="java.lang.Throwable"/>
9355 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009356 <![CDATA[Records an exception for type {@code I}, the full details of which will be logged, and the
9357 message of which will be presented to the user at a later time. If your type listener calls
sameb1d3f8cd2014-10-07 15:32:12 -07009358 something that you worry may fail, you should catch the exception and pass it to this method.]]>
9359 </doc>
9360 </method>
9361 <method name="addError"
9362 abstract="false" native="false" synchronized="false"
9363 static="false" final="false" visibility="public"
9364 deprecated="not deprecated">
9365 <param name="message" type="com.google.inject.spi.Message"/>
9366 <doc>
9367 <![CDATA[Records an error message to be presented to the user at a later time.]]>
9368 </doc>
9369 </method>
9370 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
9371 abstract="false" native="false" synchronized="false"
9372 static="false" final="false" visibility="public"
9373 deprecated="not deprecated">
9374 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
9375 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009376 <![CDATA[Returns the provider used to obtain instances for the given injection key. The returned
9377 provider will not be valid until the injector has been created. The provider will throw an
sameb1d3f8cd2014-10-07 15:32:12 -07009378 {@code IllegalStateException} if you try to use it beforehand.]]>
9379 </doc>
9380 </method>
9381 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
9382 abstract="false" native="false" synchronized="false"
9383 static="false" final="false" visibility="public"
9384 deprecated="not deprecated">
9385 <param name="type" type="java.lang.Class&lt;T&gt;"/>
9386 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009387 <![CDATA[Returns the provider used to obtain instances for the given injection type. The returned
9388 provider will not be valid until the injetor has been created. The provider will throw an
sameb1d3f8cd2014-10-07 15:32:12 -07009389 {@code IllegalStateException} if you try to use it beforehand.]]>
9390 </doc>
9391 </method>
9392 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
9393 abstract="false" native="false" synchronized="false"
9394 static="false" final="false" visibility="public"
9395 deprecated="not deprecated">
9396 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
9397 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009398 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
9399 of the given type {@code T}. The returned members injector will not be valid until the main
9400 injector has been created. The members injector will throw an {@code IllegalStateException}
9401 if you try to use it beforehand.
9402
sameb1d3f8cd2014-10-07 15:32:12 -07009403 @param typeLiteral type to get members injector for]]>
9404 </doc>
9405 </method>
9406 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
9407 abstract="false" native="false" synchronized="false"
9408 static="false" final="false" visibility="public"
9409 deprecated="not deprecated">
9410 <param name="type" type="java.lang.Class&lt;T&gt;"/>
9411 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009412 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
9413 of the given type {@code T}. The returned members injector will not be valid until the main
9414 injector has been created. The members injector will throw an {@code IllegalStateException}
9415 if you try to use it beforehand.
9416
sameb1d3f8cd2014-10-07 15:32:12 -07009417 @param type type to get members injector for]]>
9418 </doc>
9419 </method>
9420 <method name="register"
9421 abstract="false" native="false" synchronized="false"
9422 static="false" final="false" visibility="public"
9423 deprecated="not deprecated">
9424 <param name="membersInjector" type="com.google.inject.MembersInjector&lt;? super I&gt;"/>
9425 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009426 <![CDATA[Registers a members injector for type {@code I}. Guice will use the members injector after its
sameb1d3f8cd2014-10-07 15:32:12 -07009427 performed its own injections on an instance of {@code I}.]]>
9428 </doc>
9429 </method>
9430 <method name="register"
9431 abstract="false" native="false" synchronized="false"
9432 static="false" final="false" visibility="public"
9433 deprecated="not deprecated">
9434 <param name="listener" type="com.google.inject.spi.InjectionListener&lt;? super I&gt;"/>
9435 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009436 <![CDATA[Registers an injection listener for type {@code I}. Guice will notify the listener after all
sameb1d3f8cd2014-10-07 15:32:12 -07009437 injections have been performed on an instance of {@code I}.]]>
9438 </doc>
9439 </method>
9440 <method name="bindInterceptor"
9441 abstract="false" native="false" synchronized="false"
9442 static="false" final="false" visibility="public"
9443 deprecated="not deprecated">
9444 <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
9445 <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
9446 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009447 <![CDATA[Binds method interceptor[s] to methods matched in type {@code I} and its supertypes. A
9448 method is eligible for interception if:
9449
9450 <ul>
9451 <li>Guice created the instance the method is on</li>
9452 <li>Neither the enclosing type nor the method is final</li>
9453 <li>And the method is package-private or more accessible</li>
9454 </ul>
9455
9456 @param methodMatcher matches methods the interceptor should apply to. For
9457 example: {@code annotatedWith(Transactional.class)}.
sameb1d3f8cd2014-10-07 15:32:12 -07009458 @param interceptors to bind]]>
9459 </doc>
9460 </method>
9461 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009462 <![CDATA[Context of an injectable type encounter. Enables reporting errors, registering injection
9463 listeners and binding method interceptors for injectable type {@code I}. It is an error to use
9464 an encounter after the {@link TypeListener#hear(TypeLiteral, TypeEncounter) hear()} method has
9465 returned.
9466
9467 @param <I> the injectable type encountered
sameb1d3f8cd2014-10-07 15:32:12 -07009468 @since 2.0]]>
9469 </doc>
9470 </interface>
9471 <!-- end interface com.google.inject.spi.TypeEncounter -->
9472 <!-- start interface com.google.inject.spi.TypeListener -->
9473 <interface name="TypeListener" abstract="true"
9474 static="false" final="false" visibility="public"
9475 deprecated="not deprecated">
9476 <method name="hear"
9477 abstract="false" native="false" synchronized="false"
9478 static="false" final="false" visibility="public"
9479 deprecated="not deprecated">
9480 <param name="type" type="com.google.inject.TypeLiteral&lt;I&gt;"/>
9481 <param name="encounter" type="com.google.inject.spi.TypeEncounter&lt;I&gt;"/>
9482 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009483 <![CDATA[Invoked when Guice encounters a new type eligible for constructor or members injection.
9484 Called during injector creation (or afterwords if Guice encounters a type at run time and
9485 creates a JIT binding).
9486
9487 @param type encountered by Guice
9488 @param encounter context of this encounter, enables reporting errors, registering injection
9489 listeners and binding method interceptors for {@code type}.
9490
sameb1d3f8cd2014-10-07 15:32:12 -07009491 @param <I> the injectable type]]>
9492 </doc>
9493 </method>
9494 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009495 <![CDATA[Listens for Guice to encounter injectable types. If a given type has its constructor injected in
9496 one situation but only its methods and fields injected in another, Guice will notify this
9497 listener once.
9498
9499 <p>Useful for extra type checking, {@linkplain TypeEncounter#register(InjectionListener)
9500 registering injection listeners}, and {@linkplain TypeEncounter#bindInterceptor(
9501 com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])
9502 binding method interceptors}.
9503
sameb1d3f8cd2014-10-07 15:32:12 -07009504 @since 2.0]]>
9505 </doc>
9506 </interface>
9507 <!-- end interface com.google.inject.spi.TypeListener -->
9508 <!-- start class com.google.inject.spi.TypeListenerBinding -->
9509 <class name="TypeListenerBinding" extends="java.lang.Object"
9510 abstract="false"
9511 static="false" final="true" visibility="public"
9512 deprecated="not deprecated">
9513 <implements name="com.google.inject.spi.Element"/>
9514 <method name="getListener" return="com.google.inject.spi.TypeListener"
9515 abstract="false" native="false" synchronized="false"
9516 static="false" final="false" visibility="public"
9517 deprecated="not deprecated">
9518 <doc>
9519 <![CDATA[Returns the registered listener.]]>
9520 </doc>
9521 </method>
9522 <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"
9523 abstract="false" native="false" synchronized="false"
9524 static="false" final="false" visibility="public"
9525 deprecated="not deprecated">
9526 <doc>
9527 <![CDATA[Returns the type matcher which chooses which types the listener should be notified of.]]>
9528 </doc>
9529 </method>
9530 <method name="getSource" return="java.lang.Object"
9531 abstract="false" native="false" synchronized="false"
9532 static="false" final="false" visibility="public"
9533 deprecated="not deprecated">
9534 </method>
9535 <method name="acceptVisitor" return="T"
9536 abstract="false" native="false" synchronized="false"
9537 static="false" final="false" visibility="public"
9538 deprecated="not deprecated">
9539 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
9540 </method>
9541 <method name="applyTo"
9542 abstract="false" native="false" synchronized="false"
9543 static="false" final="false" visibility="public"
9544 deprecated="not deprecated">
9545 <param name="binder" type="com.google.inject.Binder"/>
9546 </method>
9547 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009548 <![CDATA[Binds types (picked using a Matcher) to an type listener. Registrations are created explicitly in
9549 a module using {@link com.google.inject.Binder#bindListener(Matcher, TypeListener)} statements:
9550
9551 <pre>
9552 register(only(new TypeLiteral&lt;PaymentService&lt;CreditCard>>() {}), listener);</pre>
9553
9554 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07009555 @since 2.0]]>
9556 </doc>
9557 </class>
9558 <!-- end class com.google.inject.spi.TypeListenerBinding -->
9559 <!-- start interface com.google.inject.spi.UntargettedBinding -->
9560 <interface name="UntargettedBinding" abstract="true"
9561 static="false" final="false" visibility="public"
9562 deprecated="not deprecated">
9563 <implements name="com.google.inject.Binding&lt;T&gt;"/>
9564 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009565 <![CDATA[An untargetted binding. This binding indicates that the injector should use its implicit binding
9566 strategies to resolve injections.
9567
9568 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07009569 @since 2.0]]>
9570 </doc>
9571 </interface>
9572 <!-- end interface com.google.inject.spi.UntargettedBinding -->
9573</package>
9574<package name="com.google.inject.spring">
9575 <!-- start class com.google.inject.spring.SpringIntegration -->
9576 <class name="SpringIntegration" extends="java.lang.Object"
9577 abstract="false"
9578 static="false" final="false" visibility="public"
9579 deprecated="not deprecated">
9580 <method name="fromSpring" return="com.google.inject.Provider&lt;T&gt;"
9581 abstract="false" native="false" synchronized="false"
9582 static="true" final="false" visibility="public"
9583 deprecated="not deprecated">
9584 <param name="type" type="java.lang.Class&lt;T&gt;"/>
9585 <param name="name" type="java.lang.String"/>
9586 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009587 <![CDATA[Creates a provider which looks up objects from Spring using the given name.
9588 Expects a binding to {@link
9589 org.springframework.beans.factory.BeanFactory}. Example usage:
9590
9591 <pre>
9592 bind(DataSource.class)
9593 .toProvider(fromSpring(DataSource.class, "dataSource"));
sameb1d3f8cd2014-10-07 15:32:12 -07009594 </pre>]]>
9595 </doc>
9596 </method>
9597 <method name="bindAll"
9598 abstract="false" native="false" synchronized="false"
9599 static="true" final="false" visibility="public"
9600 deprecated="not deprecated">
9601 <param name="binder" type="com.google.inject.Binder"/>
9602 <param name="beanFactory" type="ListableBeanFactory"/>
9603 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009604 <![CDATA[Binds all Spring beans from the given factory by name. For a Spring bean
9605 named "foo", this method creates a binding to the bean's type and
9606 {@code @Named("foo")}.
9607
9608 @see com.google.inject.name.Named
sameb1d3f8cd2014-10-07 15:32:12 -07009609 @see com.google.inject.name.Names#named(String)]]>
9610 </doc>
9611 </method>
9612 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009613 <![CDATA[Integrates Guice with Spring.
9614
sameb1d3f8cd2014-10-07 15:32:12 -07009615 @author crazybob@google.com (Bob Lee)]]>
9616 </doc>
9617 </class>
9618 <!-- end class com.google.inject.spring.SpringIntegration -->
9619</package>
9620<package name="com.google.inject.struts2">
9621 <!-- start class com.google.inject.struts2.GuiceObjectFactory -->
9622 <class name="GuiceObjectFactory" extends="ObjectFactory"
9623 abstract="false"
9624 static="false" final="false" visibility="public"
9625 deprecated="Use {@link com.google.inject.servlet.Struts2Factory} instead.">
9626 <constructor name="GuiceObjectFactory"
9627 static="false" final="false" visibility="public"
9628 deprecated="not deprecated">
9629 </constructor>
9630 <method name="isNoArgConstructorRequired" return="boolean"
9631 abstract="false" native="false" synchronized="false"
9632 static="false" final="false" visibility="public"
9633 deprecated="not deprecated">
9634 </method>
9635 <method name="getClassInstance" return="java.lang.Class"
9636 abstract="false" native="false" synchronized="false"
9637 static="false" final="false" visibility="public"
9638 deprecated="not deprecated">
9639 <param name="name" type="java.lang.String"/>
9640 <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/>
9641 </method>
9642 <method name="buildBean" return="java.lang.Object"
9643 abstract="false" native="false" synchronized="false"
9644 static="false" final="false" visibility="public"
9645 deprecated="not deprecated">
9646 <param name="clazz" type="java.lang.Class"/>
9647 <param name="extraContext" type="java.util.Map"/>
9648 </method>
9649 <method name="buildInterceptor" return="Interceptor"
9650 abstract="false" native="false" synchronized="false"
9651 static="false" final="false" visibility="public"
9652 deprecated="not deprecated">
9653 <param name="interceptorConfig" type="InterceptorConfig"/>
9654 <param name="interceptorRefParams" type="java.util.Map"/>
9655 <exception name="ConfigurationException" type="ConfigurationException"/>
9656 </method>
9657 <doc>
9658 <![CDATA[@deprecated Use {@link com.google.inject.servlet.Struts2Factory} instead.]]>
9659 </doc>
9660 </class>
9661 <!-- end class com.google.inject.struts2.GuiceObjectFactory -->
9662 <!-- start class com.google.inject.struts2.Struts2Factory -->
9663 <class name="Struts2Factory" extends="ObjectFactory"
9664 abstract="false"
9665 static="false" final="false" visibility="public"
9666 deprecated="not deprecated">
9667 <constructor name="Struts2Factory"
9668 static="false" final="false" visibility="public"
9669 deprecated="not deprecated">
9670 </constructor>
9671 <method name="isNoArgConstructorRequired" return="boolean"
9672 abstract="false" native="false" synchronized="false"
9673 static="false" final="false" visibility="public"
9674 deprecated="not deprecated">
9675 </method>
9676 <method name="getClassInstance" return="java.lang.Class&lt;?&gt;"
9677 abstract="false" native="false" synchronized="false"
9678 static="false" final="false" visibility="public"
9679 deprecated="not deprecated">
9680 <param name="name" type="java.lang.String"/>
9681 <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/>
9682 </method>
9683 <method name="buildBean" return="java.lang.Object"
9684 abstract="false" native="false" synchronized="false"
9685 static="false" final="false" visibility="public"
9686 deprecated="not deprecated">
9687 <param name="clazz" type="java.lang.Class"/>
9688 <param name="extraContext" type="java.util.Map&lt;java.lang.String, java.lang.Object&gt;"/>
9689 </method>
9690 <method name="buildInterceptor" return="Interceptor"
9691 abstract="false" native="false" synchronized="false"
9692 static="false" final="false" visibility="public"
9693 deprecated="not deprecated">
9694 <param name="interceptorConfig" type="InterceptorConfig"/>
9695 <param name="interceptorRefParams" type="java.util.Map"/>
9696 <exception name="ConfigurationException" type="ConfigurationException"/>
9697 </method>
9698 <doc>
sberlin@gmail.com251cda62010-12-09 03:27:02 +00009699 <![CDATA[Cleanup up version from Bob's GuiceObjectFactory. Now works properly with
9700 GS2 and fixes several bugs.
9701
9702 @author dhanji@gmail.com
sameb1d3f8cd2014-10-07 15:32:12 -07009703 @author benmccann.com]]>
9704 </doc>
9705 </class>
9706 <!-- end class com.google.inject.struts2.Struts2Factory -->
9707 <!-- start class com.google.inject.struts2.Struts2GuicePluginModule -->
9708 <class name="Struts2GuicePluginModule" extends="com.google.inject.AbstractModule"
9709 abstract="false"
9710 static="false" final="false" visibility="public"
9711 deprecated="not deprecated">
9712 <constructor name="Struts2GuicePluginModule"
9713 static="false" final="false" visibility="public"
9714 deprecated="not deprecated">
9715 </constructor>
9716 <method name="configure"
9717 abstract="false" native="false" synchronized="false"
9718 static="false" final="false" visibility="protected"
9719 deprecated="not deprecated">
9720 </method>
9721 <doc>
sberlin@gmail.com251cda62010-12-09 03:27:02 +00009722 <![CDATA[Initializes the Struts 2 Guice Plugin.
9723 Must be added to the injector returned by
9724 {@link GuiceServletContextListener.getInjector()}.
9725
sameb1d3f8cd2014-10-07 15:32:12 -07009726 @author benmccann.com]]>
9727 </doc>
9728 </class>
9729 <!-- end class com.google.inject.struts2.Struts2GuicePluginModule -->
9730</package>
9731<package name="com.google.inject.throwingproviders">
9732 <!-- start interface com.google.inject.throwingproviders.CheckedProvider -->
9733 <interface name="CheckedProvider" abstract="true"
9734 static="false" final="false" visibility="public"
9735 deprecated="not deprecated">
9736 <method name="get" return="T"
9737 abstract="false" native="false" synchronized="false"
9738 static="false" final="false" visibility="public"
9739 deprecated="not deprecated">
9740 <exception name="Exception" type="java.lang.Exception"/>
9741 </method>
9742 <doc>
sberlin@gmail.com251cda62010-12-09 03:27:02 +00009743 <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws
9744 a checked Exception. Users may not inject {@code T} directly.
9745
9746 <p>This interface must be extended to use application-specific exception types.
9747 Such subinterfaces may not define new methods, but may narrow the exception type.
9748 <pre>
9749 public interface RemoteProvider&lt;T&gt; extends CheckedProvider&lt;T&gt; {
9750 T get() throws CustomExceptionOne, CustomExceptionTwo;
9751 }
9752 </pre>
9753
9754 <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned
9755 or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get}
9756 will invoked at most once within each scope.
9757
sameb1d3f8cd2014-10-07 15:32:12 -07009758 @since 3.0]]>
9759 </doc>
9760 </interface>
9761 <!-- end interface com.google.inject.throwingproviders.CheckedProvider -->
9762 <!-- start class com.google.inject.throwingproviders.CheckedProvides -->
9763 <class name="CheckedProvides" abstract="true"
9764 static="false" final="false" visibility="public"
9765 deprecated="not deprecated">
9766 <implements name="java.lang.annotation.Annotation"/>
9767 <doc>
sberlin@gmail.com251cda62010-12-09 03:27:02 +00009768 <![CDATA[Annotates methods of a {@link Module} to create a {@link CheckedProvider}
9769 method binding that can throw exceptions. The method's return type is bound
9770 to a {@link CheckedProvider} that can be injected. Guice will pass
9771 dependencies to the method as parameters. Install {@literal @}CheckedProvides
9772 methods by using
9773 {@link ThrowingProviderBinder#forModule(com.google.inject.Module)} on the
9774 module where the methods are declared.
9775
9776 @author sameb@google.com (Sam Berlin)
sameb1d3f8cd2014-10-07 15:32:12 -07009777 @since 3.0]]>
9778 </doc>
9779 </class>
9780 <!-- end class com.google.inject.throwingproviders.CheckedProvides -->
9781 <!-- start interface com.google.inject.throwingproviders.ThrowingProvider -->
9782 <interface name="ThrowingProvider" abstract="true"
9783 static="false" final="false" visibility="public"
9784 deprecated="use {@link CheckedProvider} instead.">
9785 <implements name="com.google.inject.throwingproviders.CheckedProvider&lt;T&gt;"/>
9786 <method name="get" return="T"
9787 abstract="false" native="false" synchronized="false"
9788 static="false" final="false" visibility="public"
9789 deprecated="not deprecated">
9790 <exception name="Exception" type="java.lang.Exception"/>
9791 </method>
9792 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009793 <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws
9794 a checked Exception. Users may not inject {@code T} directly.
9795
9796 <p>This interface must be extended to use application-specific exception types.
9797 Such subinterfaces may not define new methods:
9798 <pre>
9799 public interface RemoteProvider&lt;T&gt; extends ThrowingProvider&lt;T, RemoteException&gt; { }
9800 </pre>
9801
9802 <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned
9803 or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get}
9804 will invoked at most once within each scope.
9805
9806 @author jmourits@google.com (Jerome Mourits)
sberlin@gmail.com251cda62010-12-09 03:27:02 +00009807 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -07009808 @deprecated use {@link CheckedProvider} instead.]]>
9809 </doc>
9810 </interface>
9811 <!-- end interface com.google.inject.throwingproviders.ThrowingProvider -->
9812 <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder -->
9813 <class name="ThrowingProviderBinder" extends="java.lang.Object"
9814 abstract="false"
9815 static="false" final="false" visibility="public"
9816 deprecated="not deprecated">
9817 <method name="create" return="com.google.inject.throwingproviders.ThrowingProviderBinder"
9818 abstract="false" native="false" synchronized="false"
9819 static="true" final="false" visibility="public"
9820 deprecated="not deprecated">
9821 <param name="binder" type="com.google.inject.Binder"/>
9822 </method>
9823 <method name="forModule" return="com.google.inject.Module"
9824 abstract="false" native="false" synchronized="false"
9825 static="true" final="false" visibility="public"
9826 deprecated="not deprecated">
9827 <param name="module" type="com.google.inject.Module"/>
9828 <doc>
sberlin@gmail.com251cda62010-12-09 03:27:02 +00009829 <![CDATA[Returns a module that installs {@literal @}{@link CheckedProvides} methods.
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009830
sameb1d3f8cd2014-10-07 15:32:12 -07009831 @since 3.0]]>
9832 </doc>
9833 </method>
9834 <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P&gt;"
9835 abstract="false" native="false" synchronized="false"
9836 static="false" final="false" visibility="public"
9837 deprecated="not deprecated">
9838 <param name="interfaceType" type="java.lang.Class&lt;P&gt;"/>
9839 <param name="valueType" type="java.lang.reflect.Type"/>
9840 </method>
9841 <doc>
sberlin@gmail.com251cda62010-12-09 03:27:02 +00009842 <![CDATA[<p>Builds a binding for a {@link CheckedProvider}.
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009843
9844 <p>You can use a fluent API and custom providers:
9845 <pre><code>ThrowingProviderBinder.create(binder())
9846 .bind(RemoteProvider.class, Customer.class)
9847 .to(RemoteCustomerProvider.class)
9848 .in(RequestScope.class);
9849 </code></pre>
9850 or, you can use throwing provider methods:
9851 <pre><code>class MyModule extends AbstractModule {
9852 configure() {
9853 ThrowingProviderBinder.install(this, binder());
9854 }
9855
sberlin@gmail.com251cda62010-12-09 03:27:02 +00009856 {@literal @}CheckedProvides(RemoteProvider.class)
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009857 {@literal @}RequestScope
9858 Customer provideCustomer(FlakyCustomerCreator creator) throws RemoteException {
9859 return creator.getCustomerOrThrow();
9860 }
9861 }
9862 </code></pre>
9863
9864 @author jmourits@google.com (Jerome Mourits)
sameb1d3f8cd2014-10-07 15:32:12 -07009865 @author jessewilson@google.com (Jesse Wilson)]]>
9866 </doc>
9867 </class>
9868 <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder -->
9869 <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder -->
9870 <class name="ThrowingProviderBinder.SecondaryBinder" extends="java.lang.Object"
9871 abstract="false"
9872 static="false" final="false" visibility="public"
9873 deprecated="not deprecated">
9874 <constructor name="ThrowingProviderBinder.SecondaryBinder" type="java.lang.Class&lt;P&gt;, java.lang.reflect.Type"
9875 static="false" final="false" visibility="public"
9876 deprecated="not deprecated">
9877 </constructor>
9878 <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P&gt;"
9879 abstract="false" native="false" synchronized="false"
9880 static="false" final="false" visibility="public"
9881 deprecated="not deprecated">
9882 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
9883 </method>
9884 <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P&gt;"
9885 abstract="false" native="false" synchronized="false"
9886 static="false" final="false" visibility="public"
9887 deprecated="not deprecated">
9888 <param name="annotation" type="java.lang.annotation.Annotation"/>
9889 </method>
9890 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
9891 abstract="false" native="false" synchronized="false"
9892 static="false" final="false" visibility="public"
9893 deprecated="not deprecated">
9894 <param name="target" type="P extends com.google.inject.throwingproviders.CheckedProvider"/>
9895 </method>
9896 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
9897 abstract="false" native="false" synchronized="false"
9898 static="false" final="false" visibility="public"
9899 deprecated="not deprecated">
9900 <param name="targetType" type="java.lang.Class&lt;? extends P&gt;"/>
9901 </method>
9902 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
9903 abstract="false" native="false" synchronized="false"
9904 static="false" final="false" visibility="public"
9905 deprecated="not deprecated">
9906 <param name="targetKey" type="com.google.inject.Key&lt;? extends P&gt;"/>
9907 </method>
9908 </class>
9909 <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder -->
9910</package>
9911<package name="com.google.inject.tools.jmx">
9912 <!-- start interface com.google.inject.tools.jmx.ManagedBindingMBean -->
9913 <interface name="ManagedBindingMBean" abstract="true"
9914 static="false" final="false" visibility="public"
9915 deprecated="not deprecated">
9916 <method name="getSource" return="java.lang.String"
9917 abstract="false" native="false" synchronized="false"
9918 static="false" final="false" visibility="public"
9919 deprecated="not deprecated">
9920 <doc>
9921 <![CDATA[Gets the source of this binding.]]>
9922 </doc>
9923 </method>
9924 <method name="getProvider" return="java.lang.String"
9925 abstract="false" native="false" synchronized="false"
9926 static="false" final="false" visibility="public"
9927 deprecated="not deprecated">
9928 <doc>
9929 <![CDATA[Gets the provider to which this binding is bound.]]>
9930 </doc>
9931 </method>
9932 <method name="getKey" return="java.lang.String"
9933 abstract="false" native="false" synchronized="false"
9934 static="false" final="false" visibility="public"
9935 deprecated="not deprecated">
9936 <doc>
9937 <![CDATA[Gets the binding key.]]>
9938 </doc>
9939 </method>
9940 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009941 <![CDATA[JMX interface to bindings.
9942
sameb1d3f8cd2014-10-07 15:32:12 -07009943 @author crazybob@google.com (Bob Lee)]]>
9944 </doc>
9945 </interface>
9946 <!-- end interface com.google.inject.tools.jmx.ManagedBindingMBean -->
9947 <!-- start class com.google.inject.tools.jmx.Manager -->
9948 <class name="Manager" extends="java.lang.Object"
9949 abstract="false"
9950 static="false" final="false" visibility="public"
9951 deprecated="not deprecated">
9952 <constructor name="Manager"
9953 static="false" final="false" visibility="public"
9954 deprecated="not deprecated">
9955 </constructor>
9956 <method name="manage"
9957 abstract="false" native="false" synchronized="false"
9958 static="true" final="false" visibility="public"
9959 deprecated="not deprecated">
9960 <param name="domain" type="java.lang.String"/>
9961 <param name="injector" type="com.google.inject.Injector"/>
9962 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009963 <![CDATA[Registers all the bindings of an Injector with the platform MBean server.
sameb1d3f8cd2014-10-07 15:32:12 -07009964 Consider using the name of your root {@link Module} class as the domain.]]>
9965 </doc>
9966 </method>
9967 <method name="manage"
9968 abstract="false" native="false" synchronized="false"
9969 static="true" final="false" visibility="public"
9970 deprecated="not deprecated">
9971 <param name="server" type="javax.management.MBeanServer"/>
9972 <param name="domain" type="java.lang.String"/>
9973 <param name="injector" type="com.google.inject.Injector"/>
9974 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009975 <![CDATA[Registers all the bindings of an Injector with the given MBean server.
sameb1d3f8cd2014-10-07 15:32:12 -07009976 Consider using the name of your root {@link Module} class as the domain.]]>
9977 </doc>
9978 </method>
9979 <method name="main"
9980 abstract="false" native="false" synchronized="false"
9981 static="true" final="false" visibility="public"
9982 deprecated="not deprecated">
9983 <param name="args" type="java.lang.String[]"/>
9984 <exception name="Exception" type="java.lang.Exception"/>
9985 <doc>
9986 <![CDATA[Run with no arguments for usage instructions.]]>
9987 </doc>
9988 </method>
9989 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009990 <![CDATA[Provides a JMX interface to Guice.
9991
sameb1d3f8cd2014-10-07 15:32:12 -07009992 @author crazybob@google.com (Bob Lee)]]>
9993 </doc>
9994 </class>
9995 <!-- end class com.google.inject.tools.jmx.Manager -->
9996</package>
9997<package name="com.google.inject.util">
9998 <!-- start class com.google.inject.util.Modules -->
9999 <class name="Modules" extends="java.lang.Object"
10000 abstract="false"
10001 static="false" final="true" visibility="public"
10002 deprecated="not deprecated">
10003 <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder"
10004 abstract="false" native="false" synchronized="false"
10005 static="true" final="false" visibility="public"
10006 deprecated="not deprecated">
10007 <param name="modules" type="com.google.inject.Module[]"/>
10008 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +000010009 <![CDATA[Returns a builder that creates a module that overlays override modules over the given
10010 modules. If a key is bound in both sets of modules, only the binding from the override modules
10011 is kept. If a single {@link PrivateModule} is supplied or all elements are from
10012 a single {@link PrivateBinder}, then this will overwrite the private bindings.
10013 Otherwise, private bindings will not be overwritten unless they are exposed.
10014 This can be used to replace the bindings of a production module with test bindings:
10015 <pre>
10016 Module functionalTestModule
10017 = Modules.override(new ProductionModule()).with(new TestModule());
10018 </pre>
10019
10020 <p>Prefer to write smaller modules that can be reused and tested without overrides.
10021
sameb1d3f8cd2014-10-07 15:32:12 -070010022 @param modules the modules whose bindings are open to be overridden]]>
10023 </doc>
10024 </method>
10025 <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder"
10026 abstract="false" native="false" synchronized="false"
10027 static="true" final="false" visibility="public"
10028 deprecated="not deprecated">
10029 <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
10030 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +000010031 <![CDATA[Returns a builder that creates a module that overlays override modules over the given
10032 modules. If a key is bound in both sets of modules, only the binding from the override modules
10033 is kept. If a single {@link PrivateModule} is supplied or all elements are from
10034 a single {@link PrivateBinder}, then this will overwrite the private bindings.
10035 Otherwise, private bindings will not be overwritten unless they are exposed.
10036 This can be used to replace the bindings of a production module with test bindings:
10037 <pre>
10038 Module functionalTestModule
10039 = Modules.override(getProductionModules()).with(getTestModules());
10040 </pre>
10041
10042 <p>Prefer to write smaller modules that can be reused and tested without overrides.
10043
sameb1d3f8cd2014-10-07 15:32:12 -070010044 @param modules the modules whose bindings are open to be overridden]]>
10045 </doc>
10046 </method>
10047 <method name="combine" return="com.google.inject.Module"
10048 abstract="false" native="false" synchronized="false"
10049 static="true" final="false" visibility="public"
10050 deprecated="not deprecated">
10051 <param name="modules" type="com.google.inject.Module[]"/>
10052 <doc>
10053 <![CDATA[Returns a new module that installs all of {@code modules}.]]>
10054 </doc>
10055 </method>
10056 <method name="combine" return="com.google.inject.Module"
10057 abstract="false" native="false" synchronized="false"
10058 static="true" final="false" visibility="public"
10059 deprecated="not deprecated">
10060 <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
10061 <doc>
10062 <![CDATA[Returns a new module that installs all of {@code modules}.]]>
10063 </doc>
10064 </method>
10065 <field name="EMPTY_MODULE" type="com.google.inject.Module"
10066 transient="false" volatile="false"
10067 static="true" final="true" visibility="public"
10068 deprecated="not deprecated">
10069 </field>
10070 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +000010071 <![CDATA[Static utility methods for creating and working with instances of {@link Module}.
10072
10073 @author jessewilson@google.com (Jesse Wilson)
sameb1d3f8cd2014-10-07 15:32:12 -070010074 @since 2.0]]>
10075 </doc>
10076 </class>
10077 <!-- end class com.google.inject.util.Modules -->
10078 <!-- start interface com.google.inject.util.Modules.OverriddenModuleBuilder -->
10079 <interface name="Modules.OverriddenModuleBuilder" abstract="true"
10080 static="true" final="false" visibility="public"
10081 deprecated="not deprecated">
10082 <method name="with" return="com.google.inject.Module"
10083 abstract="false" native="false" synchronized="false"
10084 static="false" final="false" visibility="public"
10085 deprecated="not deprecated">
10086 <param name="overrides" type="com.google.inject.Module[]"/>
10087 <doc>
10088 <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
10089 </doc>
10090 </method>
10091 <method name="with" return="com.google.inject.Module"
10092 abstract="false" native="false" synchronized="false"
10093 static="false" final="false" visibility="public"
10094 deprecated="not deprecated">
10095 <param name="overrides" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
10096 <doc>
10097 <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
10098 </doc>
10099 </method>
10100 <doc>
10101 <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
10102 </doc>
10103 </interface>
10104 <!-- end interface com.google.inject.util.Modules.OverriddenModuleBuilder -->
10105 <!-- start class com.google.inject.util.Providers -->
10106 <class name="Providers" extends="java.lang.Object"
10107 abstract="false"
10108 static="false" final="true" visibility="public"
10109 deprecated="not deprecated">
10110 <method name="of" return="com.google.inject.Provider&lt;T&gt;"
10111 abstract="false" native="false" synchronized="false"
10112 static="true" final="false" visibility="public"
10113 deprecated="not deprecated">
10114 <param name="instance" type="T"/>
10115 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +000010116 <![CDATA[Returns a provider which always provides {@code instance}. This should not
10117 be necessary to use in your application, but is helpful for several types
10118 of unit tests.
10119
10120 @param instance the instance that should always be provided. This is also
10121 permitted to be null, to enable aggressive testing, although in real
sameb1d3f8cd2014-10-07 15:32:12 -070010122 life a Guice-supplied Provider will never return null.]]>
10123 </doc>
10124 </method>
10125 <method name="guicify" return="com.google.inject.Provider&lt;T&gt;"
10126 abstract="false" native="false" synchronized="false"
10127 static="true" final="false" visibility="public"
10128 deprecated="not deprecated">
10129 <param name="provider" type="javax.inject.Provider&lt;T&gt;"/>
10130 <doc>
sberlin@gmail.com251cda62010-12-09 03:27:02 +000010131 <![CDATA[Returns a Guice-friendly {@code com.google.inject.Provider} for the given
10132 JSR-330 {@code javax.inject.Provider}. The converse method is unnecessary,
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +000010133 since Guice providers directly implement the JSR-330 interface.
10134
sameb1d3f8cd2014-10-07 15:32:12 -070010135 @since 3.0]]>
10136 </doc>
10137 </method>
10138 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +000010139 <![CDATA[Static utility methods for creating and working with instances of
10140 {@link Provider}.
10141
10142 @author Kevin Bourrillion (kevinb9n@gmail.com)
sameb1d3f8cd2014-10-07 15:32:12 -070010143 @since 2.0]]>
10144 </doc>
10145 </class>
10146 <!-- end class com.google.inject.util.Providers -->
10147 <!-- start class com.google.inject.util.Types -->
10148 <class name="Types" extends="java.lang.Object"
10149 abstract="false"
10150 static="false" final="true" visibility="public"
10151 deprecated="not deprecated">
10152 <method name="newParameterizedType" return="java.lang.reflect.ParameterizedType"
10153 abstract="false" native="false" synchronized="false"
10154 static="true" final="false" visibility="public"
10155 deprecated="not deprecated">
10156 <param name="rawType" type="java.lang.reflect.Type"/>
10157 <param name="typeArguments" type="java.lang.reflect.Type[]"/>
10158 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +000010159 <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to
10160 {@code rawType}. The returned type does not have an owner type.
10161
sameb1d3f8cd2014-10-07 15:32:12 -070010162 @return a {@link java.io.Serializable serializable} parameterized type.]]>
10163 </doc>
10164 </method>
10165 <method name="newParameterizedTypeWithOwner" return="java.lang.reflect.ParameterizedType"
10166 abstract="false" native="false" synchronized="false"
10167 static="true" final="false" visibility="public"
10168 deprecated="not deprecated">
10169 <param name="ownerType" type="java.lang.reflect.Type"/>
10170 <param name="rawType" type="java.lang.reflect.Type"/>
10171 <param name="typeArguments" type="java.lang.reflect.Type[]"/>
10172 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +000010173 <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to
10174 {@code rawType} and enclosed by {@code ownerType}.
10175
sameb1d3f8cd2014-10-07 15:32:12 -070010176 @return a {@link java.io.Serializable serializable} parameterized type.]]>
10177 </doc>
10178 </method>
10179 <method name="arrayOf" return="java.lang.reflect.GenericArrayType"
10180 abstract="false" native="false" synchronized="false"
10181 static="true" final="false" visibility="public"
10182 deprecated="not deprecated">
10183 <param name="componentType" type="java.lang.reflect.Type"/>
10184 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +000010185 <![CDATA[Returns an array type whose elements are all instances of
10186 {@code componentType}.
10187
sameb1d3f8cd2014-10-07 15:32:12 -070010188 @return a {@link java.io.Serializable serializable} generic array type.]]>
10189 </doc>
10190 </method>
10191 <method name="subtypeOf" return="java.lang.reflect.WildcardType"
10192 abstract="false" native="false" synchronized="false"
10193 static="true" final="false" visibility="public"
10194 deprecated="not deprecated">
10195 <param name="bound" type="java.lang.reflect.Type"/>
10196 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +000010197 <![CDATA[Returns a type that represents an unknown type that extends {@code bound}.
10198 For example, if {@code bound} is {@code CharSequence.class}, this returns
10199 {@code ? extends CharSequence}. If {@code bound} is {@code Object.class},
sameb1d3f8cd2014-10-07 15:32:12 -070010200 this returns {@code ?}, which is shorthand for {@code ? extends Object}.]]>
10201 </doc>
10202 </method>
10203 <method name="supertypeOf" return="java.lang.reflect.WildcardType"
10204 abstract="false" native="false" synchronized="false"
10205 static="true" final="false" visibility="public"
10206 deprecated="not deprecated">
10207 <param name="bound" type="java.lang.reflect.Type"/>
10208 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +000010209 <![CDATA[Returns a type that represents an unknown supertype of {@code bound}. For
10210 example, if {@code bound} is {@code String.class}, this returns {@code ?
sameb1d3f8cd2014-10-07 15:32:12 -070010211 super String}.]]>
10212 </doc>
10213 </method>
10214 <method name="listOf" return="java.lang.reflect.ParameterizedType"
10215 abstract="false" native="false" synchronized="false"
10216 static="true" final="false" visibility="public"
10217 deprecated="not deprecated">
10218 <param name="elementType" type="java.lang.reflect.Type"/>
10219 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +000010220 <![CDATA[Returns a type modelling a {@link List} whose elements are of type
10221 {@code elementType}.
10222
sameb1d3f8cd2014-10-07 15:32:12 -070010223 @return a {@link java.io.Serializable serializable} parameterized type.]]>
10224 </doc>
10225 </method>
10226 <method name="setOf" return="java.lang.reflect.ParameterizedType"
10227 abstract="false" native="false" synchronized="false"
10228 static="true" final="false" visibility="public"
10229 deprecated="not deprecated">
10230 <param name="elementType" type="java.lang.reflect.Type"/>
10231 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +000010232 <![CDATA[Returns a type modelling a {@link Set} whose elements are of type
10233 {@code elementType}.
10234
sameb1d3f8cd2014-10-07 15:32:12 -070010235 @return a {@link java.io.Serializable serializable} parameterized type.]]>
10236 </doc>
10237 </method>
10238 <method name="mapOf" return="java.lang.reflect.ParameterizedType"
10239 abstract="false" native="false" synchronized="false"
10240 static="true" final="false" visibility="public"
10241 deprecated="not deprecated">
10242 <param name="keyType" type="java.lang.reflect.Type"/>
10243 <param name="valueType" type="java.lang.reflect.Type"/>
10244 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +000010245 <![CDATA[Returns a type modelling a {@link Map} whose keys are of type
10246 {@code keyType} and whose values are of type {@code valueType}.
10247
sameb1d3f8cd2014-10-07 15:32:12 -070010248 @return a {@link java.io.Serializable serializable} parameterized type.]]>
10249 </doc>
10250 </method>
10251 <method name="providerOf" return="java.lang.reflect.ParameterizedType"
10252 abstract="false" native="false" synchronized="false"
10253 static="true" final="false" visibility="public"
10254 deprecated="not deprecated">
10255 <param name="providedType" type="java.lang.reflect.Type"/>
10256 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +000010257 <![CDATA[Returns a type modelling a {@link Provider} that provides elements of type
10258 {@code elementType}.
10259
sameb1d3f8cd2014-10-07 15:32:12 -070010260 @return a {@link java.io.Serializable serializable} parameterized type.]]>
10261 </doc>
10262 </method>
10263 <doc>
sberlin@gmail.com42fef492010-10-31 20:13:24 +000010264 <![CDATA[Static methods for working with types.
10265
10266 @author crazybob@google.com (Bob Lee)
sameb1d3f8cd2014-10-07 15:32:12 -070010267 @since 2.0]]>
10268 </doc>
10269 </class>
10270 <!-- end class com.google.inject.util.Types -->
10271</package>
10272
10273</api>