blob: fa5595bdbb8761678e652090d3ff25de947683c2 [file] [log] [blame]
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
2<!-- Generated by the JDiff Javadoc doclet -->
3<!-- (http://www.jdiff.org) -->
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00004<!-- on Sun Jan 09 11:27:08 EST 2011 -->
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005
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>
125 <![CDATA[@see Binder#addError(Message)
126 @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>
135 <![CDATA[@see Binder#requestInjection(Object)
136 @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>
156 <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher,
157 com.google.inject.matcher.Matcher,
158 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>
167 <![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
172 @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>
181 <![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
186 @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>
195 <![CDATA[@see Binder#getProvider(Key)
196 @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>
205 <![CDATA[@see Binder#getProvider(Class)
206 @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>
216 <![CDATA[@see Binder#convertToTypes
217 @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>
225 <![CDATA[@see Binder#currentStage()
226 @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>
235 <![CDATA[@see Binder#getMembersInjector(Class)
236 @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>
245 <![CDATA[@see Binder#getMembersInjector(TypeLiteral)
246 @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>
256 <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher,
257 com.google.inject.spi.TypeListener)
258 @since 2.0]]>
259 </doc>
260 </method>
261 <doc>
262 <![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
278 @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>
294 <![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)}.
307 @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>
362 <![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
367 @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>
376 <![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
380 @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>
389 <![CDATA[Upon successful creation, the {@link Injector} will inject static fields
390 and methods in the given classes.
391
392 @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>
419 <![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
423 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>
432 <![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
435 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>
444 <![CDATA[Records an error message to be presented to the user at a later time.
445
446 @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>
455 <![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
460 @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>
469 <![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
474 @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>
483 <![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
489 @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>
498 <![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
504 @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>
514 <![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
519 @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>
529 <![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
534 @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>
543 <![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
551 @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>
560 <![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.
567 @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>
575 <![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.
581 @since 2.0]]>
582 </doc>
583 </method>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +0000584 <method name="requireExplicitBindings"
585 abstract="false" native="false" synchronized="false"
586 static="false" final="false" visibility="public"
587 deprecated="not deprecated">
588 <doc>
589 <![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
614 @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>
622 <![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
632 @since 3.0]]>
633 </doc>
634 </method>
sberlin@gmail.com42fef492010-10-31 20:13:24 +0000635 <doc>
636 <![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)
805 @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>
827 <![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
832 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>
841 <![CDATA[Accepts a target visitor. Invokes the visitor method specific to this binding's target.
842
843 @param visitor to call back on
844 @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>
853 <![CDATA[Accepts a scoping visitor. Invokes the visitor method specific to this binding's scoping.
854
855 @param visitor to call back on
856 @since 2.0]]>
857 </doc>
858 </method>
859 <doc>
860 <![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)
894 @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>
904 <![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
915 @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>
953 <![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
957 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>
966 <![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)
970 @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>
1000 <![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
1003 @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>
1013 <![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)
1017 @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
1035 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
1047 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>
1057 <![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
1061 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>
1071 <![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
1075 construction]]>
1076 </doc>
1077 </method>
1078 <doc>
1079 <![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 }
1103 </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>
1113 <![CDATA[A pointer to the default implementation of a type.
1114
1115 @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>
1125 <![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
1148 @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>
1162 <![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
1172 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>
1181 <![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
1187 @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>
1196 <![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
1203 @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>
1211 <![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
1218 <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>
1226 <![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
1236 @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>
1245 <![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
1251 @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>
1260 <![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.
1267 @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>
1276 <![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
1282 @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>
1291 <![CDATA[Returns all explicit bindings for {@code type}.
1292
1293 <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>
1302 <![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.
1306 @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>
1315 <![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.
1319 @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>
1328 <![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.
1333 @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>
1342 <![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.
1347 @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>
1355 <![CDATA[Returns this injector's parent, or {@code null} if this is a top-level injector.
1356
1357 @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>
1366 <![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
1372 explicit bindings to prevent bindings from being shared with the parent injector.
1373
1374 <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time
1375 bindings. The lone exception is the key for {@code Injector.class}, which is bound by each
1376 injector to itself.
1377
1378 @since 2.0]]>
1379 </doc>
1380 </method>
1381 <method name="createChildInjector" return="com.google.inject.Injector"
1382 abstract="false" native="false" synchronized="false"
1383 static="false" final="false" visibility="public"
1384 deprecated="not deprecated">
1385 <param name="modules" type="com.google.inject.Module[]"/>
1386 <doc>
1387 <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes,
1388 interceptors and type converters are inherited -- they are visible to the child injector.
1389 Elements of the child injector are not visible to its parent.
1390
1391 <p>Just-in-time bindings created for child injectors will be created in an ancestor injector
1392 whenever possible. This allows for scoped instances to be shared between injectors. Use
1393 explicit bindings to prevent bindings from being shared with the parent injector.
1394
1395 <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time
1396 bindings. The lone exception is the key for {@code Injector.class}, which is bound by each
1397 injector to itself.
1398
1399 @since 2.0]]>
1400 </doc>
1401 </method>
1402 <method name="getScopeBindings" return="java.util.Map&lt;java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;, com.google.inject.Scope&gt;"
1403 abstract="false" native="false" synchronized="false"
1404 static="false" final="false" visibility="public"
1405 deprecated="not deprecated">
1406 <doc>
1407 <![CDATA[Returns a map containing all scopes in the injector. The maps keys are scoping annotations
1408 like {@code Singleton.class}, and the values are scope instances, such as {@code
1409 Scopes.SINGLETON}. The returned map is immutable.
1410
1411 <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
1412
1413 @since 3.0]]>
1414 </doc>
1415 </method>
sberlin@gmail.com251cda62010-12-09 03:27:02 +00001416 <method name="getTypeConverterBindings" return="java.util.Set&lt;com.google.inject.spi.TypeConverterBinding&gt;"
1417 abstract="false" native="false" synchronized="false"
1418 static="false" final="false" visibility="public"
1419 deprecated="not deprecated">
1420 <doc>
1421 <![CDATA[Returns a set containing all type converter bindings in the injector. The returned set is
1422 immutable.
1423
1424 <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
1425
1426 @since 3.0]]>
1427 </doc>
1428 </method>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001429 <doc>
1430 <![CDATA[Builds the graphs of objects that make up your application. The injector tracks the dependencies
1431 for each type and uses bindings to inject them. This is the core of Guice, although you rarely
1432 interact with it directly. This "behind-the-scenes" operation is what distinguishes dependency
1433 injection from its cousin, the service locator pattern.
1434
1435 <p>Contains several default bindings:
1436
1437 <ul>
1438 <li>This {@link Injector} instance itself
1439 <li>A {@code Provider<T>} for each binding of type {@code T}
1440 <li>The {@link java.util.logging.Logger} for the class being injected
1441 <li>The {@link Stage} in which the Injector was created
1442 </ul>
1443
1444 Injectors are created using the facade class {@link Guice}.
1445
1446 <p>An injector can also {@link #injectMembers(Object) inject the dependencies} of
1447 already-constructed instances. This can be used to interoperate with objects created by other
1448 frameworks or services.
1449
1450 <p>Injectors can be {@link #createChildInjector(Iterable) hierarchical}. Child injectors inherit
1451 the configuration of their parent injectors, but the converse does not hold.
1452
1453 <p>The injector's {@link #getBindings() internal bindings} are available for introspection. This
1454 enables tools and extensions to operate on an injector reflectively.
1455
1456 @author crazybob@google.com (Bob Lee)
1457 @author jessewilson@google.com (Jesse Wilson)]]>
1458 </doc>
1459 </interface>
1460 <!-- end interface com.google.inject.Injector -->
sberlin@gmail.com42fef492010-10-31 20:13:24 +00001461 <!-- start class com.google.inject.Key -->
1462 <class name="Key" extends="java.lang.Object"
1463 abstract="false"
1464 static="false" final="false" visibility="public"
1465 deprecated="not deprecated">
1466 <constructor name="Key" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
1467 static="false" final="false" visibility="protected"
1468 deprecated="not deprecated">
1469 <doc>
1470 <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
1471
1472 <p>Clients create an empty anonymous subclass. Doing so embeds the type
1473 parameter in the anonymous class's type hierarchy so we can reconstitute it
1474 at runtime despite erasure.
1475
1476 <p>Example usage for a binding of type {@code Foo} annotated with
1477 {@code @Bar}:
1478
1479 <p>{@code new Key<Foo>(Bar.class) {}}.]]>
1480 </doc>
1481 </constructor>
1482 <constructor name="Key" type="java.lang.annotation.Annotation"
1483 static="false" final="false" visibility="protected"
1484 deprecated="not deprecated">
1485 <doc>
1486 <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
1487
1488 <p>Clients create an empty anonymous subclass. Doing so embeds the type
1489 parameter in the anonymous class's type hierarchy so we can reconstitute it
1490 at runtime despite erasure.
1491
1492 <p>Example usage for a binding of type {@code Foo} annotated with
1493 {@code @Bar}:
1494
1495 <p>{@code new Key<Foo>(new Bar()) {}}.]]>
1496 </doc>
1497 </constructor>
1498 <constructor name="Key"
1499 static="false" final="false" visibility="protected"
1500 deprecated="not deprecated">
1501 <doc>
1502 <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
1503
1504 <p>Clients create an empty anonymous subclass. Doing so embeds the type
1505 parameter in the anonymous class's type hierarchy so we can reconstitute it
1506 at runtime despite erasure.
1507
1508 <p>Example usage for a binding of type {@code Foo}:
1509
1510 <p>{@code new Key<Foo>() {}}.]]>
1511 </doc>
1512 </constructor>
1513 <method name="getTypeLiteral" return="com.google.inject.TypeLiteral&lt;T&gt;"
1514 abstract="false" native="false" synchronized="false"
1515 static="false" final="true" visibility="public"
1516 deprecated="not deprecated">
1517 <doc>
1518 <![CDATA[Gets the key type.]]>
1519 </doc>
1520 </method>
1521 <method name="getAnnotationType" return="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
1522 abstract="false" native="false" synchronized="false"
1523 static="false" final="true" visibility="public"
1524 deprecated="not deprecated">
1525 <doc>
1526 <![CDATA[Gets the annotation type.]]>
1527 </doc>
1528 </method>
1529 <method name="getAnnotation" return="java.lang.annotation.Annotation"
1530 abstract="false" native="false" synchronized="false"
1531 static="false" final="true" visibility="public"
1532 deprecated="not deprecated">
1533 <doc>
1534 <![CDATA[Gets the annotation.]]>
1535 </doc>
1536 </method>
1537 <method name="equals" return="boolean"
1538 abstract="false" native="false" synchronized="false"
1539 static="false" final="true" visibility="public"
1540 deprecated="not deprecated">
1541 <param name="o" type="java.lang.Object"/>
1542 </method>
1543 <method name="hashCode" return="int"
1544 abstract="false" native="false" synchronized="false"
1545 static="false" final="true" visibility="public"
1546 deprecated="not deprecated">
1547 </method>
1548 <method name="toString" return="java.lang.String"
1549 abstract="false" native="false" synchronized="false"
1550 static="false" final="true" visibility="public"
1551 deprecated="not deprecated">
1552 </method>
1553 <method name="get" return="com.google.inject.Key&lt;T&gt;"
1554 abstract="false" native="false" synchronized="false"
1555 static="true" final="false" visibility="public"
1556 deprecated="not deprecated">
1557 <param name="type" type="java.lang.Class&lt;T&gt;"/>
1558 <doc>
1559 <![CDATA[Gets a key for an injection type.]]>
1560 </doc>
1561 </method>
1562 <method name="get" return="com.google.inject.Key&lt;T&gt;"
1563 abstract="false" native="false" synchronized="false"
1564 static="true" final="false" visibility="public"
1565 deprecated="not deprecated">
1566 <param name="type" type="java.lang.Class&lt;T&gt;"/>
1567 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
1568 <doc>
1569 <![CDATA[Gets a key for an injection type and an annotation type.]]>
1570 </doc>
1571 </method>
1572 <method name="get" return="com.google.inject.Key&lt;T&gt;"
1573 abstract="false" native="false" synchronized="false"
1574 static="true" final="false" visibility="public"
1575 deprecated="not deprecated">
1576 <param name="type" type="java.lang.Class&lt;T&gt;"/>
1577 <param name="annotation" type="java.lang.annotation.Annotation"/>
1578 <doc>
1579 <![CDATA[Gets a key for an injection type and an annotation.]]>
1580 </doc>
1581 </method>
1582 <method name="get" return="com.google.inject.Key&lt;?&gt;"
1583 abstract="false" native="false" synchronized="false"
1584 static="true" final="false" visibility="public"
1585 deprecated="not deprecated">
1586 <param name="type" type="java.lang.reflect.Type"/>
1587 <doc>
1588 <![CDATA[Gets a key for an injection type.]]>
1589 </doc>
1590 </method>
1591 <method name="get" return="com.google.inject.Key&lt;?&gt;"
1592 abstract="false" native="false" synchronized="false"
1593 static="true" final="false" visibility="public"
1594 deprecated="not deprecated">
1595 <param name="type" type="java.lang.reflect.Type"/>
1596 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
1597 <doc>
1598 <![CDATA[Gets a key for an injection type and an annotation type.]]>
1599 </doc>
1600 </method>
1601 <method name="get" return="com.google.inject.Key&lt;?&gt;"
1602 abstract="false" native="false" synchronized="false"
1603 static="true" final="false" visibility="public"
1604 deprecated="not deprecated">
1605 <param name="type" type="java.lang.reflect.Type"/>
1606 <param name="annotation" type="java.lang.annotation.Annotation"/>
1607 <doc>
1608 <![CDATA[Gets a key for an injection type and an annotation.]]>
1609 </doc>
1610 </method>
1611 <method name="get" return="com.google.inject.Key&lt;T&gt;"
1612 abstract="false" native="false" synchronized="false"
1613 static="true" final="false" visibility="public"
1614 deprecated="not deprecated">
1615 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1616 <doc>
1617 <![CDATA[Gets a key for an injection type.]]>
1618 </doc>
1619 </method>
1620 <method name="get" return="com.google.inject.Key&lt;T&gt;"
1621 abstract="false" native="false" synchronized="false"
1622 static="true" final="false" visibility="public"
1623 deprecated="not deprecated">
1624 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1625 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
1626 <doc>
1627 <![CDATA[Gets a key for an injection type and an annotation type.]]>
1628 </doc>
1629 </method>
1630 <method name="get" return="com.google.inject.Key&lt;T&gt;"
1631 abstract="false" native="false" synchronized="false"
1632 static="true" final="false" visibility="public"
1633 deprecated="not deprecated">
1634 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1635 <param name="annotation" type="java.lang.annotation.Annotation"/>
1636 <doc>
1637 <![CDATA[Gets a key for an injection type and an annotation.]]>
1638 </doc>
1639 </method>
1640 <method name="ofType" return="com.google.inject.Key&lt;T&gt;"
1641 abstract="false" native="false" synchronized="false"
1642 static="false" final="false" visibility="public"
1643 deprecated="not deprecated">
1644 <param name="type" type="java.lang.Class&lt;T&gt;"/>
1645 <doc>
1646 <![CDATA[Returns a new key of the specified type with the same annotation as this
1647 key.
1648
1649 @since 3.0]]>
1650 </doc>
1651 </method>
1652 <method name="ofType" return="com.google.inject.Key&lt;?&gt;"
1653 abstract="false" native="false" synchronized="false"
1654 static="false" final="false" visibility="public"
1655 deprecated="not deprecated">
1656 <param name="type" type="java.lang.reflect.Type"/>
1657 <doc>
1658 <![CDATA[Returns a new key of the specified type with the same annotation as this
1659 key.
1660
1661 @since 3.0]]>
1662 </doc>
1663 </method>
1664 <method name="ofType" return="com.google.inject.Key&lt;T&gt;"
1665 abstract="false" native="false" synchronized="false"
1666 static="false" final="false" visibility="public"
1667 deprecated="not deprecated">
1668 <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1669 <doc>
1670 <![CDATA[Returns a new key of the specified type with the same annotation as this
1671 key.
1672
1673 @since 3.0]]>
1674 </doc>
1675 </method>
1676 <method name="hasAttributes" return="boolean"
1677 abstract="false" native="false" synchronized="false"
1678 static="false" final="false" visibility="public"
1679 deprecated="not deprecated">
1680 <doc>
1681 <![CDATA[Returns true if this key has annotation attributes.
1682
1683 @since 3.0]]>
1684 </doc>
1685 </method>
1686 <method name="withoutAttributes" return="com.google.inject.Key&lt;T&gt;"
1687 abstract="false" native="false" synchronized="false"
1688 static="false" final="false" visibility="public"
1689 deprecated="not deprecated">
1690 <doc>
1691 <![CDATA[Returns this key without annotation attributes, i.e. with only the
1692 annotation type.
1693
1694 @since 3.0]]>
1695 </doc>
1696 </method>
1697 <doc>
1698 <![CDATA[Binding key consisting of an injection type and an optional annotation.
1699 Matches the type and annotation at a point of injection.
1700
1701 <p>For example, {@code Key.get(Service.class, Transactional.class)} will
1702 match:
1703
1704 <pre>
1705 {@literal @}Inject
1706 public void setService({@literal @}Transactional Service service) {
1707 ...
1708 }
1709 </pre>
1710
1711 <p>{@code Key} supports generic types via subclassing just like {@link
1712 TypeLiteral}.
1713
1714 <p>Keys do not differentiate between primitive types (int, char, etc.) and
1715 their correpsonding wrapper types (Integer, Character, etc.). Primitive
1716 types will be replaced with their wrapper types when keys are created.
1717
1718 @author crazybob@google.com (Bob Lee)]]>
1719 </doc>
1720 </class>
1721 <!-- end class com.google.inject.Key -->
1722 <!-- start interface com.google.inject.MembersInjector -->
1723 <interface name="MembersInjector" abstract="true"
1724 static="false" final="false" visibility="public"
1725 deprecated="not deprecated">
1726 <method name="injectMembers"
1727 abstract="false" native="false" synchronized="false"
1728 static="false" final="false" visibility="public"
1729 deprecated="not deprecated">
1730 <param name="instance" type="T"/>
1731 <doc>
1732 <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or
1733 absence of an injectable constructor.
1734
1735 <p>Whenever Guice creates an instance, it performs this injection automatically (after first
1736 performing constructor injection), so if you're able to let Guice create all your objects for
1737 you, you'll never need to use this method.
1738
1739 @param instance to inject members on. May be {@code null}.]]>
1740 </doc>
1741 </method>
1742 <doc>
1743 <![CDATA[Injects dependencies into the fields and methods on instances of type {@code T}. Ignores the
1744 presence or absence of an injectable constructor.
1745
1746 @param <T> type to inject members of
1747
1748 @author crazybob@google.com (Bob Lee)
1749 @author jessewilson@google.com (Jesse Wilson)
1750 @since 2.0]]>
1751 </doc>
1752 </interface>
1753 <!-- end interface com.google.inject.MembersInjector -->
1754 <!-- start interface com.google.inject.Module -->
1755 <interface name="Module" abstract="true"
1756 static="false" final="false" visibility="public"
1757 deprecated="not deprecated">
1758 <method name="configure"
1759 abstract="false" native="false" synchronized="false"
1760 static="false" final="false" visibility="public"
1761 deprecated="not deprecated">
1762 <param name="binder" type="com.google.inject.Binder"/>
1763 <doc>
1764 <![CDATA[Contributes bindings and other configurations for this module to {@code binder}.
1765
1766 <p><strong>Do not invoke this method directly</strong> to install submodules. Instead use
1767 {@link Binder#install(Module)}, which ensures that {@link Provides provider methods} are
1768 discovered.]]>
1769 </doc>
1770 </method>
1771 <doc>
1772 <![CDATA[A module contributes configuration information, typically interface
1773 bindings, which will be used to create an {@link Injector}. A Guice-based
1774 application is ultimately composed of little more than a set of
1775 {@code Module}s and some bootstrapping code.
1776
1777 <p>Your Module classes can use a more streamlined syntax by extending
1778 {@link AbstractModule} rather than implementing this interface directly.
1779
1780 <p>In addition to the bindings configured via {@link #configure}, bindings
1781 will be created for all methods annotated with {@literal @}{@link Provides}.
1782 Use scope and binding annotations on these methods to configure the
1783 bindings.]]>
1784 </doc>
1785 </interface>
1786 <!-- end interface com.google.inject.Module -->
1787 <!-- start class com.google.inject.OutOfScopeException -->
1788 <class name="OutOfScopeException" extends="java.lang.RuntimeException"
1789 abstract="false"
1790 static="false" final="true" visibility="public"
1791 deprecated="not deprecated">
1792 <constructor name="OutOfScopeException" type="java.lang.String"
1793 static="false" final="false" visibility="public"
1794 deprecated="not deprecated">
1795 </constructor>
1796 <constructor name="OutOfScopeException" type="java.lang.String, java.lang.Throwable"
1797 static="false" final="false" visibility="public"
1798 deprecated="not deprecated">
1799 </constructor>
1800 <constructor name="OutOfScopeException" type="java.lang.Throwable"
1801 static="false" final="false" visibility="public"
1802 deprecated="not deprecated">
1803 </constructor>
1804 <doc>
1805 <![CDATA[Thrown from {@link Provider#get} when an attempt is made to access a scoped
1806 object while the scope in question is not currently active.
1807
1808 @author kevinb@google.com (Kevin Bourrillion)
1809 @since 2.0]]>
1810 </doc>
1811 </class>
1812 <!-- end class com.google.inject.OutOfScopeException -->
1813 <!-- start interface com.google.inject.PrivateBinder -->
1814 <interface name="PrivateBinder" abstract="true"
1815 static="false" final="false" visibility="public"
1816 deprecated="not deprecated">
1817 <implements name="com.google.inject.Binder"/>
1818 <method name="expose"
1819 abstract="false" native="false" synchronized="false"
1820 static="false" final="false" visibility="public"
1821 deprecated="not deprecated">
1822 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
1823 <doc>
1824 <![CDATA[Makes the binding for {@code key} available to the enclosing environment]]>
1825 </doc>
1826 </method>
1827 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
1828 abstract="false" native="false" synchronized="false"
1829 static="false" final="false" visibility="public"
1830 deprecated="not deprecated">
1831 <param name="type" type="java.lang.Class&lt;?&gt;"/>
1832 <doc>
1833 <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link
1834 com.google.inject.binder.AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
1835 binding annotation.]]>
1836 </doc>
1837 </method>
1838 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
1839 abstract="false" native="false" synchronized="false"
1840 static="false" final="false" visibility="public"
1841 deprecated="not deprecated">
1842 <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
1843 <doc>
1844 <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link
1845 AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
1846 binding annotation.]]>
1847 </doc>
1848 </method>
1849 <method name="withSource" return="com.google.inject.PrivateBinder"
1850 abstract="false" native="false" synchronized="false"
1851 static="false" final="false" visibility="public"
1852 deprecated="not deprecated">
1853 <param name="source" type="java.lang.Object"/>
1854 </method>
1855 <method name="skipSources" return="com.google.inject.PrivateBinder"
1856 abstract="false" native="false" synchronized="false"
1857 static="false" final="false" visibility="public"
1858 deprecated="not deprecated">
1859 <param name="classesToSkip" type="java.lang.Class[]"/>
1860 </method>
1861 <doc>
1862 <![CDATA[Returns a binder whose configuration information is hidden from its environment by default. See
1863 {@link com.google.inject.PrivateModule PrivateModule} for details.
1864
1865 @author jessewilson@google.com (Jesse Wilson)
1866 @since 2.0]]>
1867 </doc>
1868 </interface>
1869 <!-- end interface com.google.inject.PrivateBinder -->
1870 <!-- start class com.google.inject.PrivateModule -->
1871 <class name="PrivateModule" extends="java.lang.Object"
1872 abstract="true"
1873 static="false" final="false" visibility="public"
1874 deprecated="not deprecated">
1875 <implements name="com.google.inject.Module"/>
1876 <constructor name="PrivateModule"
1877 static="false" final="false" visibility="public"
1878 deprecated="not deprecated">
1879 </constructor>
1880 <method name="configure"
1881 abstract="false" native="false" synchronized="true"
1882 static="false" final="true" visibility="public"
1883 deprecated="not deprecated">
1884 <param name="binder" type="com.google.inject.Binder"/>
1885 </method>
1886 <method name="configure"
1887 abstract="true" native="false" synchronized="false"
1888 static="false" final="false" visibility="protected"
1889 deprecated="not deprecated">
1890 <doc>
1891 <![CDATA[Creates bindings and other configurations private to this module. Use {@link #expose(Class)
1892 expose()} to make the bindings in this module available externally.]]>
1893 </doc>
1894 </method>
1895 <method name="expose"
1896 abstract="false" native="false" synchronized="false"
1897 static="false" final="true" visibility="protected"
1898 deprecated="not deprecated">
1899 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
1900 <doc>
1901 <![CDATA[Makes the binding for {@code key} available to other modules and the injector.]]>
1902 </doc>
1903 </method>
1904 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
1905 abstract="false" native="false" synchronized="false"
1906 static="false" final="true" visibility="protected"
1907 deprecated="not deprecated">
1908 <param name="type" type="java.lang.Class&lt;?&gt;"/>
1909 <doc>
1910 <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link
1911 AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
1912 binding annotation.]]>
1913 </doc>
1914 </method>
1915 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
1916 abstract="false" native="false" synchronized="false"
1917 static="false" final="true" visibility="protected"
1918 deprecated="not deprecated">
1919 <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
1920 <doc>
1921 <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link
1922 AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
1923 binding annotation.]]>
1924 </doc>
1925 </method>
1926 <method name="binder" return="com.google.inject.PrivateBinder"
1927 abstract="false" native="false" synchronized="false"
1928 static="false" final="true" visibility="protected"
1929 deprecated="not deprecated">
1930 <doc>
1931 <![CDATA[Returns the current binder.]]>
1932 </doc>
1933 </method>
1934 <method name="bindScope"
1935 abstract="false" native="false" synchronized="false"
1936 static="false" final="true" visibility="protected"
1937 deprecated="not deprecated">
1938 <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
1939 <param name="scope" type="com.google.inject.Scope"/>
1940 <doc>
1941 <![CDATA[@see Binder#bindScope(Class, Scope)]]>
1942 </doc>
1943 </method>
1944 <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
1945 abstract="false" native="false" synchronized="false"
1946 static="false" final="true" visibility="protected"
1947 deprecated="not deprecated">
1948 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
1949 <doc>
1950 <![CDATA[@see Binder#bind(Key)]]>
1951 </doc>
1952 </method>
1953 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
1954 abstract="false" native="false" synchronized="false"
1955 static="false" final="true" visibility="protected"
1956 deprecated="not deprecated">
1957 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
1958 <doc>
1959 <![CDATA[@see Binder#bind(TypeLiteral)]]>
1960 </doc>
1961 </method>
1962 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
1963 abstract="false" native="false" synchronized="false"
1964 static="false" final="true" visibility="protected"
1965 deprecated="not deprecated">
1966 <param name="clazz" type="java.lang.Class&lt;T&gt;"/>
1967 <doc>
1968 <![CDATA[@see Binder#bind(Class)]]>
1969 </doc>
1970 </method>
1971 <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder"
1972 abstract="false" native="false" synchronized="false"
1973 static="false" final="true" visibility="protected"
1974 deprecated="not deprecated">
1975 <doc>
1976 <![CDATA[@see Binder#bindConstant()]]>
1977 </doc>
1978 </method>
1979 <method name="install"
1980 abstract="false" native="false" synchronized="false"
1981 static="false" final="true" visibility="protected"
1982 deprecated="not deprecated">
1983 <param name="module" type="com.google.inject.Module"/>
1984 <doc>
1985 <![CDATA[@see Binder#install(Module)]]>
1986 </doc>
1987 </method>
1988 <method name="addError"
1989 abstract="false" native="false" synchronized="false"
1990 static="false" final="true" visibility="protected"
1991 deprecated="not deprecated">
1992 <param name="message" type="java.lang.String"/>
1993 <param name="arguments" type="java.lang.Object[]"/>
1994 <doc>
1995 <![CDATA[@see Binder#addError(String, Object[])]]>
1996 </doc>
1997 </method>
1998 <method name="addError"
1999 abstract="false" native="false" synchronized="false"
2000 static="false" final="true" visibility="protected"
2001 deprecated="not deprecated">
2002 <param name="t" type="java.lang.Throwable"/>
2003 <doc>
2004 <![CDATA[@see Binder#addError(Throwable)]]>
2005 </doc>
2006 </method>
2007 <method name="addError"
2008 abstract="false" native="false" synchronized="false"
2009 static="false" final="true" visibility="protected"
2010 deprecated="not deprecated">
2011 <param name="message" type="com.google.inject.spi.Message"/>
2012 <doc>
2013 <![CDATA[@see Binder#addError(Message)]]>
2014 </doc>
2015 </method>
2016 <method name="requestInjection"
2017 abstract="false" native="false" synchronized="false"
2018 static="false" final="true" visibility="protected"
2019 deprecated="not deprecated">
2020 <param name="instance" type="java.lang.Object"/>
2021 <doc>
2022 <![CDATA[@see Binder#requestInjection(Object)]]>
2023 </doc>
2024 </method>
2025 <method name="requestStaticInjection"
2026 abstract="false" native="false" synchronized="false"
2027 static="false" final="true" visibility="protected"
2028 deprecated="not deprecated">
2029 <param name="types" type="java.lang.Class[]"/>
2030 <doc>
2031 <![CDATA[@see Binder#requestStaticInjection(Class[])]]>
2032 </doc>
2033 </method>
2034 <method name="bindInterceptor"
2035 abstract="false" native="false" synchronized="false"
2036 static="false" final="true" visibility="protected"
2037 deprecated="not deprecated">
2038 <param name="classMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
2039 <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
2040 <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
2041 <doc>
2042 <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher, com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])]]>
2043 </doc>
2044 </method>
2045 <method name="requireBinding"
2046 abstract="false" native="false" synchronized="false"
2047 static="false" final="true" visibility="protected"
2048 deprecated="not deprecated">
2049 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
2050 <doc>
2051 <![CDATA[Instructs Guice to require a binding to the given key.]]>
2052 </doc>
2053 </method>
2054 <method name="requireBinding"
2055 abstract="false" native="false" synchronized="false"
2056 static="false" final="true" visibility="protected"
2057 deprecated="not deprecated">
2058 <param name="type" type="java.lang.Class&lt;?&gt;"/>
2059 <doc>
2060 <![CDATA[Instructs Guice to require a binding to the given type.]]>
2061 </doc>
2062 </method>
2063 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
2064 abstract="false" native="false" synchronized="false"
2065 static="false" final="true" visibility="protected"
2066 deprecated="not deprecated">
2067 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
2068 <doc>
2069 <![CDATA[@see Binder#getProvider(Key)]]>
2070 </doc>
2071 </method>
2072 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
2073 abstract="false" native="false" synchronized="false"
2074 static="false" final="true" visibility="protected"
2075 deprecated="not deprecated">
2076 <param name="type" type="java.lang.Class&lt;T&gt;"/>
2077 <doc>
2078 <![CDATA[@see Binder#getProvider(Class)]]>
2079 </doc>
2080 </method>
2081 <method name="convertToTypes"
2082 abstract="false" native="false" synchronized="false"
2083 static="false" final="true" visibility="protected"
2084 deprecated="not deprecated">
2085 <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
2086 <param name="converter" type="com.google.inject.spi.TypeConverter"/>
2087 <doc>
2088 <![CDATA[@see Binder#convertToTypes(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeConverter)]]>
2089 </doc>
2090 </method>
2091 <method name="currentStage" return="com.google.inject.Stage"
2092 abstract="false" native="false" synchronized="false"
2093 static="false" final="true" visibility="protected"
2094 deprecated="not deprecated">
2095 <doc>
2096 <![CDATA[@see Binder#currentStage()]]>
2097 </doc>
2098 </method>
2099 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
2100 abstract="false" native="false" synchronized="false"
2101 static="false" final="false" visibility="protected"
2102 deprecated="not deprecated">
2103 <param name="type" type="java.lang.Class&lt;T&gt;"/>
2104 <doc>
2105 <![CDATA[@see Binder#getMembersInjector(Class)]]>
2106 </doc>
2107 </method>
2108 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
2109 abstract="false" native="false" synchronized="false"
2110 static="false" final="false" visibility="protected"
2111 deprecated="not deprecated">
2112 <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
2113 <doc>
2114 <![CDATA[@see Binder#getMembersInjector(TypeLiteral)]]>
2115 </doc>
2116 </method>
2117 <method name="bindListener"
2118 abstract="false" native="false" synchronized="false"
2119 static="false" final="false" visibility="protected"
2120 deprecated="not deprecated">
2121 <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
2122 <param name="listener" type="com.google.inject.spi.TypeListener"/>
2123 <doc>
2124 <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeListener)]]>
2125 </doc>
2126 </method>
2127 <doc>
2128 <![CDATA[A module whose configuration information is hidden from its environment by default. Only bindings
2129 that are explicitly exposed will be available to other modules and to the users of the injector.
2130 This module may expose the bindings it creates and the bindings of the modules it installs.
2131
2132 <p>A private module can be nested within a regular module or within another private module using
2133 {@link Binder#install install()}. Its bindings live in a new environment that inherits bindings,
2134 type converters, scopes, and interceptors from the surrounding ("parent") environment. When you
2135 nest multiple private modules, the result is a tree of environments where the injector's
2136 environment is the root.
2137
2138 <p>Guice EDSL bindings can be exposed with {@link #expose(Class) expose()}. {@literal @}{@link
2139 com.google.inject.Provides Provides} bindings can be exposed with the {@literal @}{@link
2140 Exposed} annotation:
2141
2142 <pre>
2143 public class FooBarBazModule extends PrivateModule {
2144 protected void configure() {
2145 bind(Foo.class).to(RealFoo.class);
2146 expose(Foo.class);
2147
2148 install(new TransactionalBarModule());
2149 expose(Bar.class).annotatedWith(Transactional.class);
2150
2151 bind(SomeImplementationDetail.class);
2152 install(new MoreImplementationDetailsModule());
2153 }
2154
2155 {@literal @}Provides {@literal @}Exposed
2156 public Baz provideBaz() {
2157 return new SuperBaz();
2158 }
2159 }
2160 </pre>
2161
2162 <p>Private modules are implemented using {@link Injector#createChildInjector(Module[]) parent
2163 injectors}. When it can satisfy their dependencies, just-in-time bindings will be created in the
2164 root environment. Such bindings are shared among all environments in the tree.
2165
2166 <p>The scope of a binding is constrained to its environment. A singleton bound in a private
2167 module will be unique to its environment. But a binding for the same type in a different private
2168 module will yield a different instance.
2169
2170 <p>A shared binding that injects the {@code Injector} gets the root injector, which only has
2171 access to bindings in the root environment. An explicit binding that injects the {@code Injector}
2172 gets access to all bindings in the child environment.
2173
2174 <p>To promote a just-in-time binding to an explicit binding, bind it:
2175 <pre>
2176 bind(FooImpl.class);
2177 </pre>
2178
2179 @author jessewilson@google.com (Jesse Wilson)
2180 @since 2.0]]>
2181 </doc>
2182 </class>
2183 <!-- end class com.google.inject.PrivateModule -->
2184 <!-- start class com.google.inject.ProvidedBy -->
2185 <class name="ProvidedBy" abstract="true"
2186 static="false" final="false" visibility="public"
2187 deprecated="not deprecated">
2188 <implements name="java.lang.annotation.Annotation"/>
2189 <doc>
2190 <![CDATA[A pointer to the default provider type for a type.
2191
2192 @author crazybob@google.com (Bob Lee)]]>
2193 </doc>
2194 </class>
2195 <!-- end class com.google.inject.ProvidedBy -->
2196 <!-- start interface com.google.inject.Provider -->
2197 <interface name="Provider" abstract="true"
2198 static="false" final="false" visibility="public"
2199 deprecated="not deprecated">
2200 <implements name="javax.inject.Provider&lt;T&gt;"/>
2201 <method name="get" return="T"
2202 abstract="false" native="false" synchronized="false"
2203 static="false" final="false" visibility="public"
2204 deprecated="not deprecated">
2205 <doc>
2206 <![CDATA[Provides an instance of {@code T}. Must never return {@code null}.
2207
2208 @throws OutOfScopeException when an attempt is made to access a scoped object while the scope
2209 in question is not currently active
2210 @throws ProvisionException if an instance cannot be provided. Such exceptions include messages
2211 and throwables to describe why provision failed.]]>
2212 </doc>
2213 </method>
2214 <doc>
2215 <![CDATA[An object capable of providing instances of type {@code T}. Providers are used in numerous ways
2216 by Guice:
2217
2218 <ul>
2219 <li>When the default means for obtaining instances (an injectable or parameterless constructor)
2220 is insufficient for a particular binding, the module can specify a custom {@code Provider}
2221 instead, to control exactly how Guice creates or obtains instances for the binding.
2222
2223 <li>An implementation class may always choose to have a {@code Provider<T>} instance injected,
2224 rather than having a {@code T} injected directly. This may give you access to multiple
2225 instances, instances you wish to safely mutate and discard, instances which are out of scope
2226 (e.g. using a {@code @RequestScoped} object from within a {@code @SessionScoped} object), or
2227 instances that will be initialized lazily.
2228
2229 <li>A custom {@link Scope} is implemented as a decorator of {@code Provider<T>}, which decides
2230 when to delegate to the backing provider and when to provide the instance some other way.
2231
2232 <li>The {@link Injector} offers access to the {@code Provider<T>} it uses to fulfill requests
2233 for a given key, via the {@link Injector#getProvider} methods.
2234 </ul>
2235
2236 @param <T> the type of object this provides
2237
2238 @author crazybob@google.com (Bob Lee)]]>
2239 </doc>
2240 </interface>
2241 <!-- end interface com.google.inject.Provider -->
2242 <!-- start class com.google.inject.Provides -->
2243 <class name="Provides" abstract="true"
2244 static="false" final="false" visibility="public"
2245 deprecated="not deprecated">
2246 <implements name="java.lang.annotation.Annotation"/>
2247 <doc>
2248 <![CDATA[Annotates methods of a {@link Module} to create a provider method binding. The method's return
2249 type is bound to it's returned value. Guice will pass dependencies to the method as parameters.
2250
2251 @author crazybob@google.com (Bob Lee)
2252 @since 2.0]]>
2253 </doc>
2254 </class>
2255 <!-- end class com.google.inject.Provides -->
2256 <!-- start class com.google.inject.ProvisionException -->
2257 <class name="ProvisionException" extends="java.lang.RuntimeException"
2258 abstract="false"
2259 static="false" final="true" visibility="public"
2260 deprecated="not deprecated">
2261 <constructor name="ProvisionException" type="java.lang.Iterable&lt;com.google.inject.spi.Message&gt;"
2262 static="false" final="false" visibility="public"
2263 deprecated="not deprecated">
2264 <doc>
2265 <![CDATA[Creates a ConfigurationException containing {@code messages}.]]>
2266 </doc>
2267 </constructor>
2268 <constructor name="ProvisionException" type="java.lang.String, java.lang.Throwable"
2269 static="false" final="false" visibility="public"
2270 deprecated="not deprecated">
2271 </constructor>
2272 <constructor name="ProvisionException" type="java.lang.String"
2273 static="false" final="false" visibility="public"
2274 deprecated="not deprecated">
2275 </constructor>
2276 <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
2277 abstract="false" native="false" synchronized="false"
2278 static="false" final="false" visibility="public"
2279 deprecated="not deprecated">
2280 <doc>
2281 <![CDATA[Returns messages for the errors that caused this exception.]]>
2282 </doc>
2283 </method>
2284 <method name="getMessage" return="java.lang.String"
2285 abstract="false" native="false" synchronized="false"
2286 static="false" final="false" visibility="public"
2287 deprecated="not deprecated">
2288 </method>
2289 <doc>
2290 <![CDATA[Indicates that there was a runtime failure while providing an instance.
2291
2292 @author kevinb@google.com (Kevin Bourrillion)
2293 @author jessewilson@google.com (Jesse Wilson)
2294 @since 2.0]]>
2295 </doc>
2296 </class>
2297 <!-- end class com.google.inject.ProvisionException -->
2298 <!-- start interface com.google.inject.Scope -->
2299 <interface name="Scope" abstract="true"
2300 static="false" final="false" visibility="public"
2301 deprecated="not deprecated">
2302 <method name="scope" return="com.google.inject.Provider&lt;T&gt;"
2303 abstract="false" native="false" synchronized="false"
2304 static="false" final="false" visibility="public"
2305 deprecated="not deprecated">
2306 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
2307 <param name="unscoped" type="com.google.inject.Provider&lt;T&gt;"/>
2308 <doc>
2309 <![CDATA[Scopes a provider. The returned provider returns objects from this scope.
2310 If an object does not exist in this scope, the provider can use the given
2311 unscoped provider to retrieve one.
2312
2313 <p>Scope implementations are strongly encouraged to override
2314 {@link Object#toString} in the returned provider and include the backing
2315 provider's {@code toString()} output.
2316
2317 @param key binding key
2318 @param unscoped locates an instance when one doesn't already exist in this
2319 scope.
2320 @return a new provider which only delegates to the given unscoped provider
2321 when an instance of the requested object doesn't already exist in this
2322 scope]]>
2323 </doc>
2324 </method>
2325 <method name="toString" return="java.lang.String"
2326 abstract="false" native="false" synchronized="false"
2327 static="false" final="false" visibility="public"
2328 deprecated="not deprecated">
2329 <doc>
2330 <![CDATA[A short but useful description of this scope. For comparison, the standard
2331 scopes that ship with guice use the descriptions
2332 {@code "Scopes.SINGLETON"}, {@code "ServletScopes.SESSION"} and
2333 {@code "ServletScopes.REQUEST"}.]]>
2334 </doc>
2335 </method>
2336 <doc>
2337 <![CDATA[A scope is a level of visibility that instances provided by Guice may have.
2338 By default, an instance created by the {@link Injector} has <i>no scope</i>,
2339 meaning it has no state from the framework's perspective -- the
2340 {@code Injector} creates it, injects it once into the class that required it,
2341 and then immediately forgets it. Associating a scope with a particular
2342 binding allows the created instance to be "remembered" and possibly used
2343 again for other injections.
2344
2345 <p>An example of a scope is {@link Scopes#SINGLETON}.
2346
2347 @author crazybob@google.com (Bob Lee)]]>
2348 </doc>
2349 </interface>
2350 <!-- end interface com.google.inject.Scope -->
2351 <!-- start class com.google.inject.ScopeAnnotation -->
2352 <class name="ScopeAnnotation" abstract="true"
2353 static="false" final="false" visibility="public"
2354 deprecated="not deprecated">
2355 <implements name="java.lang.annotation.Annotation"/>
2356 <doc>
2357 <![CDATA[Annotates annotations which are used for scoping. Only one such annotation
2358 may apply to a single implementation class. You must also annotate scope
2359 annotations with {@code @Retention(RUNTIME)}. For example:
2360
2361 <pre>
2362 {@code @}Retention(RUNTIME)
2363 {@code @}Target(TYPE, METHOD)
2364 {@code @}ScopeAnnotation
2365 public {@code @}interface SessionScoped {}
2366 </pre>
2367
2368 @author crazybob@google.com (Bob Lee)]]>
2369 </doc>
2370 </class>
2371 <!-- end class com.google.inject.ScopeAnnotation -->
2372 <!-- start class com.google.inject.Scopes -->
2373 <class name="Scopes" extends="java.lang.Object"
2374 abstract="false"
2375 static="false" final="false" visibility="public"
2376 deprecated="not deprecated">
2377 <method name="isSingleton" return="boolean"
2378 abstract="false" native="false" synchronized="false"
2379 static="true" final="false" visibility="public"
2380 deprecated="not deprecated">
2381 <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
2382 <doc>
2383 <![CDATA[Returns true if {@code binding} is singleton-scoped. If the binding is a {@link
2384 com.google.inject.spi.LinkedKeyBinding linked key binding} and belongs to an injector (ie. it
2385 was retrieved via {@link Injector#getBinding Injector.getBinding()}), then this method will
2386 also true if the target binding is singleton-scoped.
2387
2388 @since 3.0]]>
2389 </doc>
2390 </method>
2391 <field name="SINGLETON" type="com.google.inject.Scope"
2392 transient="false" volatile="false"
2393 static="true" final="true" visibility="public"
2394 deprecated="not deprecated">
2395 <doc>
2396 <![CDATA[One instance per {@link Injector}. Also see {@code @}{@link Singleton}.]]>
2397 </doc>
2398 </field>
2399 <field name="NO_SCOPE" type="com.google.inject.Scope"
2400 transient="false" volatile="false"
2401 static="true" final="true" visibility="public"
2402 deprecated="not deprecated">
2403 <doc>
2404 <![CDATA[No scope; the same as not applying any scope at all. Each time the
2405 Injector obtains an instance of an object with "no scope", it injects this
2406 instance then immediately forgets it. When the next request for the same
2407 binding arrives it will need to obtain the instance over again.
2408
2409 <p>This exists only in case a class has been annotated with a scope
2410 annotation such as {@link Singleton @Singleton}, and you need to override
2411 this to "no scope" in your binding.
2412
2413 @since 2.0]]>
2414 </doc>
2415 </field>
2416 <doc>
2417 <![CDATA[Built-in scope implementations.
2418
2419 @author crazybob@google.com (Bob Lee)]]>
2420 </doc>
2421 </class>
2422 <!-- end class com.google.inject.Scopes -->
2423 <!-- start class com.google.inject.Singleton -->
2424 <class name="Singleton" abstract="true"
2425 static="false" final="false" visibility="public"
2426 deprecated="not deprecated">
2427 <implements name="java.lang.annotation.Annotation"/>
2428 <doc>
2429 <![CDATA[Apply this to implementation classes when you want only one instance
2430 (per {@link Injector}) to be reused for all injections for that binding.
2431
2432 @author crazybob@google.com (Bob Lee)]]>
2433 </doc>
2434 </class>
2435 <!-- end class com.google.inject.Singleton -->
2436 <!-- start class com.google.inject.Stage -->
2437 <class name="Stage" extends="java.lang.Enum&lt;com.google.inject.Stage&gt;"
2438 abstract="false"
2439 static="false" final="true" visibility="public"
2440 deprecated="not deprecated">
2441 <method name="values" return="com.google.inject.Stage[]"
2442 abstract="false" native="false" synchronized="false"
2443 static="true" final="false" visibility="public"
2444 deprecated="not deprecated">
2445 </method>
2446 <method name="valueOf" return="com.google.inject.Stage"
2447 abstract="false" native="false" synchronized="false"
2448 static="true" final="false" visibility="public"
2449 deprecated="not deprecated">
2450 <param name="name" type="java.lang.String"/>
2451 </method>
2452 <doc>
2453 <![CDATA[The stage we're running in.
2454
2455 @author crazybob@google.com (Bob Lee)]]>
2456 </doc>
2457 </class>
2458 <!-- end class com.google.inject.Stage -->
2459 <!-- start class com.google.inject.TypeLiteral -->
2460 <class name="TypeLiteral" extends="java.lang.Object"
2461 abstract="false"
2462 static="false" final="false" visibility="public"
2463 deprecated="not deprecated">
2464 <constructor name="TypeLiteral"
2465 static="false" final="false" visibility="protected"
2466 deprecated="not deprecated">
2467 <doc>
2468 <![CDATA[Constructs a new type literal. Derives represented class from type
2469 parameter.
2470
2471 <p>Clients create an empty anonymous subclass. Doing so embeds the type
2472 parameter in the anonymous class's type hierarchy so we can reconstitute it
2473 at runtime despite erasure.]]>
2474 </doc>
2475 </constructor>
2476 <method name="getRawType" return="java.lang.Class&lt;? super T&gt;"
2477 abstract="false" native="false" synchronized="false"
2478 static="false" final="true" visibility="public"
2479 deprecated="not deprecated">
2480 <doc>
2481 <![CDATA[Returns the raw (non-generic) type for this type.
2482
2483 @since 2.0]]>
2484 </doc>
2485 </method>
2486 <method name="getType" return="java.lang.reflect.Type"
2487 abstract="false" native="false" synchronized="false"
2488 static="false" final="true" visibility="public"
2489 deprecated="not deprecated">
2490 <doc>
2491 <![CDATA[Gets underlying {@code Type} instance.]]>
2492 </doc>
2493 </method>
2494 <method name="hashCode" return="int"
2495 abstract="false" native="false" synchronized="false"
2496 static="false" final="true" visibility="public"
2497 deprecated="not deprecated">
2498 </method>
2499 <method name="equals" return="boolean"
2500 abstract="false" native="false" synchronized="false"
2501 static="false" final="true" visibility="public"
2502 deprecated="not deprecated">
2503 <param name="o" type="java.lang.Object"/>
2504 </method>
2505 <method name="toString" return="java.lang.String"
2506 abstract="false" native="false" synchronized="false"
2507 static="false" final="true" visibility="public"
2508 deprecated="not deprecated">
2509 </method>
2510 <method name="get" return="com.google.inject.TypeLiteral&lt;?&gt;"
2511 abstract="false" native="false" synchronized="false"
2512 static="true" final="false" visibility="public"
2513 deprecated="not deprecated">
2514 <param name="type" type="java.lang.reflect.Type"/>
2515 <doc>
2516 <![CDATA[Gets type literal for the given {@code Type} instance.]]>
2517 </doc>
2518 </method>
2519 <method name="get" return="com.google.inject.TypeLiteral&lt;T&gt;"
2520 abstract="false" native="false" synchronized="false"
2521 static="true" final="false" visibility="public"
2522 deprecated="not deprecated">
2523 <param name="type" type="java.lang.Class&lt;T&gt;"/>
2524 <doc>
2525 <![CDATA[Gets type literal for the given {@code Class} instance.]]>
2526 </doc>
2527 </method>
2528 <method name="getSupertype" return="com.google.inject.TypeLiteral&lt;?&gt;"
2529 abstract="false" native="false" synchronized="false"
2530 static="false" final="false" visibility="public"
2531 deprecated="not deprecated">
2532 <param name="supertype" type="java.lang.Class&lt;?&gt;"/>
2533 <doc>
2534 <![CDATA[Returns the generic form of {@code supertype}. For example, if this is {@code
2535 ArrayList<String>}, this returns {@code Iterable<String>} given the input {@code
2536 Iterable.class}.
2537
2538 @param supertype a superclass of, or interface implemented by, this.
2539 @since 2.0]]>
2540 </doc>
2541 </method>
2542 <method name="getFieldType" return="com.google.inject.TypeLiteral&lt;?&gt;"
2543 abstract="false" native="false" synchronized="false"
2544 static="false" final="false" visibility="public"
2545 deprecated="not deprecated">
2546 <param name="field" type="java.lang.reflect.Field"/>
2547 <doc>
2548 <![CDATA[Returns the resolved generic type of {@code field}.
2549
2550 @param field a field defined by this or any superclass.
2551 @since 2.0]]>
2552 </doc>
2553 </method>
2554 <method name="getParameterTypes" return="java.util.List&lt;com.google.inject.TypeLiteral&lt;?&gt;&gt;"
2555 abstract="false" native="false" synchronized="false"
2556 static="false" final="false" visibility="public"
2557 deprecated="not deprecated">
2558 <param name="methodOrConstructor" type="java.lang.reflect.Member"/>
2559 <doc>
2560 <![CDATA[Returns the resolved generic parameter types of {@code methodOrConstructor}.
2561
2562 @param methodOrConstructor a method or constructor defined by this or any supertype.
2563 @since 2.0]]>
2564 </doc>
2565 </method>
2566 <method name="getExceptionTypes" return="java.util.List&lt;com.google.inject.TypeLiteral&lt;?&gt;&gt;"
2567 abstract="false" native="false" synchronized="false"
2568 static="false" final="false" visibility="public"
2569 deprecated="not deprecated">
2570 <param name="methodOrConstructor" type="java.lang.reflect.Member"/>
2571 <doc>
2572 <![CDATA[Returns the resolved generic exception types thrown by {@code constructor}.
2573
2574 @param methodOrConstructor a method or constructor defined by this or any supertype.
2575 @since 2.0]]>
2576 </doc>
2577 </method>
2578 <method name="getReturnType" return="com.google.inject.TypeLiteral&lt;?&gt;"
2579 abstract="false" native="false" synchronized="false"
2580 static="false" final="false" visibility="public"
2581 deprecated="not deprecated">
2582 <param name="method" type="java.lang.reflect.Method"/>
2583 <doc>
2584 <![CDATA[Returns the resolved generic return type of {@code method}.
2585
2586 @param method a method defined by this or any supertype.
2587 @since 2.0]]>
2588 </doc>
2589 </method>
2590 <doc>
2591 <![CDATA[Represents a generic type {@code T}. Java doesn't yet provide a way to
2592 represent generic types, so this class does. Forces clients to create a
2593 subclass of this class which enables retrieval the type information even at
2594 runtime.
2595
2596 <p>For example, to create a type literal for {@code List<String>}, you can
2597 create an empty anonymous inner class:
2598
2599 <p>
2600 {@code TypeLiteral<List<String>> list = new TypeLiteral<List<String>>() {};}
2601
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002602 <p>Along with modeling generic types, this class can resolve type parameters.
2603 For example, to figure out what type {@code keySet()} returns on a {@code
2604 Map<Integer, String>}, use this code:<pre> {@code
2605
2606 TypeLiteral<Map<Integer, String>> mapType
2607 = new TypeLiteral<Map<Integer, String>>() {};
2608 TypeLiteral<?> keySetType
2609 = mapType.getReturnType(Map.class.getMethod("keySet"));
2610 System.out.println(keySetType); // prints "Set<Integer>"}</pre>
2611
2612 @author crazybob@google.com (Bob Lee)
2613 @author jessewilson@google.com (Jesse Wilson)]]>
2614 </doc>
2615 </class>
2616 <!-- end class com.google.inject.TypeLiteral -->
2617</package>
2618<package name="com.google.inject.assistedinject">
2619 <!-- start class com.google.inject.assistedinject.Assisted -->
2620 <class name="Assisted" abstract="true"
2621 static="false" final="false" visibility="public"
2622 deprecated="not deprecated">
2623 <implements name="java.lang.annotation.Annotation"/>
2624 <doc>
2625 <![CDATA[Annotates an injected parameter or field whose value comes from an argument to a factory method.
2626
2627 @author jmourits@google.com (Jerome Mourits)
2628 @author jessewilson@google.com (Jesse Wilson)]]>
2629 </doc>
2630 </class>
2631 <!-- end class com.google.inject.assistedinject.Assisted -->
2632 <!-- start class com.google.inject.assistedinject.AssistedInject -->
2633 <class name="AssistedInject" abstract="true"
2634 static="false" final="false" visibility="public"
2635 deprecated="not deprecated">
2636 <implements name="java.lang.annotation.Annotation"/>
2637 <doc>
2638 <![CDATA[<p>
2639 When used in tandem with {@link FactoryModuleBuilder}, constructors annotated with
2640 {@code @AssistedInject} indicate that multiple constructors can be injected, each with different
2641 parameters. AssistedInject annotations should not be mixed with {@literal @}{@link Inject}
2642 annotations. The assisted parameters must exactly match one corresponding factory method within
2643 the factory interface, but the parameters do not need to be in the same order. Constructors
2644 annotated with AssistedInject <b>are</b> created by Guice and receive all the benefits
2645 (such as AOP).
2646
2647 <p>
2648 <strong>Obsolete Usage:</strong> When used in tandem with {@link FactoryProvider}, constructors
2649 annotated with {@code @AssistedInject} trigger a "backwards compatibility mode". The assisted
2650 parameters must exactly match one corresponding factory method within the factory interface and
2651 all must be in the same order as listed in the factory. In this backwards compatable mode,
2652 constructors annotated with AssistedInject <b>are not</b> created by Guice and thus receive
2653 none of the benefits.
2654
2655 <p>
2656 Constructor parameters must be either supplied by the factory interface and marked with
2657 <code>@Assisted</code>, or they must be injectable.
2658
2659 @author jmourits@google.com (Jerome Mourits)
2660 @author jessewilson@google.com (Jesse Wilson)]]>
2661 </doc>
2662 </class>
2663 <!-- end class com.google.inject.assistedinject.AssistedInject -->
2664 <!-- start interface com.google.inject.assistedinject.AssistedInjectBinding -->
2665 <interface name="AssistedInjectBinding" abstract="true"
2666 static="false" final="false" visibility="public"
2667 deprecated="not deprecated">
2668 <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
2669 abstract="false" native="false" synchronized="false"
2670 static="false" final="false" visibility="public"
2671 deprecated="not deprecated">
2672 <doc>
2673 <![CDATA[Returns the {@link Key} for the factory binding.]]>
2674 </doc>
2675 </method>
2676 <method name="getAssistedMethods" return="java.util.Collection&lt;com.google.inject.assistedinject.AssistedMethod&gt;"
2677 abstract="false" native="false" synchronized="false"
2678 static="false" final="false" visibility="public"
2679 deprecated="not deprecated">
2680 <doc>
2681 <![CDATA[Returns an {@link AssistedMethod} for each method in the factory.]]>
2682 </doc>
2683 </method>
2684 <doc>
2685 <![CDATA[A binding for a factory created by FactoryModuleBuilder.
2686
2687 @param <T> The fully qualified type of the factory.
2688
2689 @since 3.0
2690 @author ramakrishna@google.com (Ramakrishna Rajanna)]]>
2691 </doc>
2692 </interface>
2693 <!-- end interface com.google.inject.assistedinject.AssistedInjectBinding -->
2694 <!-- start interface com.google.inject.assistedinject.AssistedInjectTargetVisitor -->
2695 <interface name="AssistedInjectTargetVisitor" abstract="true"
2696 static="false" final="false" visibility="public"
2697 deprecated="not deprecated">
2698 <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
2699 <method name="visit" return="V"
2700 abstract="false" native="false" synchronized="false"
2701 static="false" final="false" visibility="public"
2702 deprecated="not deprecated">
2703 <param name="assistedInjectBinding" type="com.google.inject.assistedinject.AssistedInjectBinding&lt;? extends T&gt;"/>
2704 <doc>
2705 <![CDATA[Visits an {@link AssistedInjectBinding} created through {@link FactoryModuleBuilder}.]]>
2706 </doc>
2707 </method>
2708 <doc>
2709 <![CDATA[A visitor for the AssistedInject extension.
2710 <p>
2711 If your {@link BindingTargetVisitor} implements this interface, bindings created by using
2712 {@link FactoryModuleBuilder} will be visited through this interface.
2713
2714 @since 3.0
2715 @author ramakrishna@google.com (Ramakrishna Rajanna)]]>
2716 </doc>
2717 </interface>
2718 <!-- end interface com.google.inject.assistedinject.AssistedInjectTargetVisitor -->
2719 <!-- start interface com.google.inject.assistedinject.AssistedMethod -->
2720 <interface name="AssistedMethod" abstract="true"
2721 static="false" final="false" visibility="public"
2722 deprecated="not deprecated">
2723 <method name="getFactoryMethod" return="java.lang.reflect.Method"
2724 abstract="false" native="false" synchronized="false"
2725 static="false" final="false" visibility="public"
2726 deprecated="not deprecated">
2727 <doc>
2728 <![CDATA[Returns the factory method that is being assisted.]]>
2729 </doc>
2730 </method>
2731 <method name="getImplementationType" return="com.google.inject.TypeLiteral&lt;?&gt;"
2732 abstract="false" native="false" synchronized="false"
2733 static="false" final="false" visibility="public"
2734 deprecated="not deprecated">
2735 <doc>
2736 <![CDATA[Returns the implementation type that will be created when the method is
2737 used.]]>
2738 </doc>
2739 </method>
2740 <method name="getImplementationConstructor" return="java.lang.reflect.Constructor&lt;?&gt;"
2741 abstract="false" native="false" synchronized="false"
2742 static="false" final="false" visibility="public"
2743 deprecated="not deprecated">
2744 <doc>
2745 <![CDATA[Returns the constructor that will be used to construct instances of the
2746 implementation.]]>
2747 </doc>
2748 </method>
2749 <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
2750 abstract="false" native="false" synchronized="false"
2751 static="false" final="false" visibility="public"
2752 deprecated="not deprecated">
2753 <doc>
2754 <![CDATA[Returns all non-assisted dependencies required to construct and inject
2755 the implementation.]]>
2756 </doc>
2757 </method>
2758 <doc>
2759 <![CDATA[Details about how a method in an assisted inject factory will be assisted.
2760
2761 @since 3.0
2762 @author ramakrishna@google.com (Ramakrishna Rajanna)]]>
2763 </doc>
2764 </interface>
2765 <!-- end interface com.google.inject.assistedinject.AssistedMethod -->
2766 <!-- start class com.google.inject.assistedinject.FactoryModuleBuilder -->
2767 <class name="FactoryModuleBuilder" extends="java.lang.Object"
2768 abstract="false"
sberlin@gmail.com251cda62010-12-09 03:27:02 +00002769 static="false" final="true" visibility="public"
sberlin@gmail.com42fef492010-10-31 20:13:24 +00002770 deprecated="not deprecated">
2771 <constructor name="FactoryModuleBuilder"
2772 static="false" final="false" visibility="public"
2773 deprecated="not deprecated">
2774 </constructor>
2775 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2776 abstract="false" native="false" synchronized="false"
2777 static="false" final="false" visibility="public"
2778 deprecated="not deprecated">
2779 <param name="source" type="java.lang.Class&lt;T&gt;"/>
2780 <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
2781 <doc>
2782 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2783 </doc>
2784 </method>
2785 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2786 abstract="false" native="false" synchronized="false"
2787 static="false" final="false" visibility="public"
2788 deprecated="not deprecated">
2789 <param name="source" type="java.lang.Class&lt;T&gt;"/>
2790 <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
2791 <doc>
2792 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2793 </doc>
2794 </method>
2795 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2796 abstract="false" native="false" synchronized="false"
2797 static="false" final="false" visibility="public"
2798 deprecated="not deprecated">
2799 <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
2800 <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
2801 <doc>
2802 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2803 </doc>
2804 </method>
2805 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2806 abstract="false" native="false" synchronized="false"
2807 static="false" final="false" visibility="public"
2808 deprecated="not deprecated">
2809 <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
2810 <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
2811 <doc>
2812 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2813 </doc>
2814 </method>
2815 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2816 abstract="false" native="false" synchronized="false"
2817 static="false" final="false" visibility="public"
2818 deprecated="not deprecated">
2819 <param name="source" type="java.lang.Class&lt;T&gt;"/>
2820 <param name="annotation" type="java.lang.annotation.Annotation"/>
2821 <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
2822 <doc>
2823 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2824 </doc>
2825 </method>
2826 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2827 abstract="false" native="false" synchronized="false"
2828 static="false" final="false" visibility="public"
2829 deprecated="not deprecated">
2830 <param name="source" type="java.lang.Class&lt;T&gt;"/>
2831 <param name="annotation" type="java.lang.annotation.Annotation"/>
2832 <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
2833 <doc>
2834 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2835 </doc>
2836 </method>
2837 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2838 abstract="false" native="false" synchronized="false"
2839 static="false" final="false" visibility="public"
2840 deprecated="not deprecated">
2841 <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
2842 <param name="annotation" type="java.lang.annotation.Annotation"/>
2843 <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
2844 <doc>
2845 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2846 </doc>
2847 </method>
2848 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2849 abstract="false" native="false" synchronized="false"
2850 static="false" final="false" visibility="public"
2851 deprecated="not deprecated">
2852 <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
2853 <param name="annotation" type="java.lang.annotation.Annotation"/>
2854 <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
2855 <doc>
2856 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2857 </doc>
2858 </method>
2859 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2860 abstract="false" native="false" synchronized="false"
2861 static="false" final="false" visibility="public"
2862 deprecated="not deprecated">
2863 <param name="source" type="java.lang.Class&lt;T&gt;"/>
2864 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
2865 <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
2866 <doc>
2867 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2868 </doc>
2869 </method>
2870 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2871 abstract="false" native="false" synchronized="false"
2872 static="false" final="false" visibility="public"
2873 deprecated="not deprecated">
2874 <param name="source" type="java.lang.Class&lt;T&gt;"/>
2875 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
2876 <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
2877 <doc>
2878 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2879 </doc>
2880 </method>
2881 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2882 abstract="false" native="false" synchronized="false"
2883 static="false" final="false" visibility="public"
2884 deprecated="not deprecated">
2885 <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
2886 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
2887 <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
2888 <doc>
2889 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2890 </doc>
2891 </method>
2892 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2893 abstract="false" native="false" synchronized="false"
2894 static="false" final="false" visibility="public"
2895 deprecated="not deprecated">
2896 <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
2897 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
2898 <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
2899 <doc>
2900 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2901 </doc>
2902 </method>
2903 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2904 abstract="false" native="false" synchronized="false"
2905 static="false" final="false" visibility="public"
2906 deprecated="not deprecated">
2907 <param name="source" type="com.google.inject.Key&lt;T&gt;"/>
2908 <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
2909 <doc>
2910 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2911 </doc>
2912 </method>
2913 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
2914 abstract="false" native="false" synchronized="false"
2915 static="false" final="false" visibility="public"
2916 deprecated="not deprecated">
2917 <param name="source" type="com.google.inject.Key&lt;T&gt;"/>
2918 <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
2919 <doc>
2920 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2921 </doc>
2922 </method>
2923 <method name="build" return="com.google.inject.Module"
2924 abstract="false" native="false" synchronized="false"
2925 static="false" final="false" visibility="public"
2926 deprecated="not deprecated">
2927 <param name="factoryInterface" type="java.lang.Class&lt;F&gt;"/>
2928 <doc>
2929 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2930 </doc>
2931 </method>
2932 <method name="build" return="com.google.inject.Module"
2933 abstract="false" native="false" synchronized="false"
2934 static="false" final="false" visibility="public"
2935 deprecated="not deprecated">
2936 <param name="factoryInterface" type="com.google.inject.TypeLiteral&lt;F&gt;"/>
2937 <doc>
2938 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
2939 </doc>
2940 </method>
2941 <method name="build" return="com.google.inject.Module"
2942 abstract="false" native="false" synchronized="false"
2943 static="false" final="false" visibility="public"
2944 deprecated="not deprecated">
2945 <param name="factoryInterface" type="com.google.inject.Key&lt;F&gt;"/>
2946 </method>
2947 <doc>
2948 <![CDATA[Provides a factory that combines the caller's arguments with injector-supplied values to
2949 construct objects.
2950
2951 <h3>Defining a factory</h3>
2952 Create an interface whose methods return the constructed type, or any of its supertypes. The
2953 method's parameters are the arguments required to build the constructed type.
2954
2955 <pre>public interface PaymentFactory {
2956 Payment create(Date startDate, Money amount);
2957 }</pre>
2958
2959 You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i>
2960 or <i>newPayment</i>.
2961
2962 <h3>Creating a type that accepts factory parameters</h3>
2963 {@code constructedType} is a concrete class with an {@literal @}{@link com.google.inject.Inject
2964 Inject}-annotated constructor. In addition to injector-supplied parameters, the constructor
2965 should have parameters that match each of the factory method's parameters. Each factory-supplied
2966 parameter requires an {@literal @}{@link Assisted} annotation. This serves to document that the
2967 parameter is not bound by your application's modules.
2968
2969 <pre>public class RealPayment implements Payment {
2970 {@literal @}Inject
2971 public RealPayment(
2972 CreditService creditService,
2973 AuthService authService,
2974 <strong>{@literal @}Assisted Date startDate</strong>,
2975 <strong>{@literal @}Assisted Money amount</strong>) {
2976 ...
2977 }
2978 }</pre>
2979
2980 <h3>Multiple factory methods for the same type</h3>
2981 If the factory contains many methods that return the same type, you can create multiple
2982 constructors in your concrete class, each constructor marked with with
2983 {@literal @}{@link AssistedInject}, in order to match the different parameters types of the
2984 factory methods.
2985
2986 <pre>public interface PaymentFactory {
2987 Payment create(Date startDate, Money amount);
2988 Payment createWithoutDate(Money amount);
2989 }
2990
2991 public class RealPayment implements Payment {
2992 {@literal @}AssistedInject
2993 public RealPayment(
2994 CreditService creditService,
2995 AuthService authService,
2996 <strong>{@literal @}Assisted Date startDate</strong>,
2997 <strong>{@literal @}Assisted Money amount</strong>) {
2998 ...
2999 }
3000
3001 {@literal @}AssistedInject
3002 public RealPayment(
3003 CreditService creditService,
3004 AuthService authService,
3005 <strong>{@literal @}Assisted Money amount</strong>) {
3006 ...
3007 }
3008 }</pre>
3009
3010 <h3>Configuring simple factories</h3>
3011 In your {@link Module module}, install a {@code FactoryModuleBuilder} that creates the
3012 factory:
3013
3014 <pre>install(new FactoryModuleBuilder()
3015 .implement(Payment.class, RealPayment.class)
3016 .build(PaymentFactory.class);</pre>
3017
3018 As a side-effect of this binding, Guice will inject the factory to initialize it for use. The
3019 factory cannot be used until the injector has been initialized.
3020
3021 <h3>Using the factory</h3>
3022 Inject your factory into your application classes. When you use the factory, your arguments
3023 will be combined with values from the injector to construct an instance.
3024
3025 <pre>public class PaymentAction {
3026 {@literal @}Inject private PaymentFactory paymentFactory;
3027
3028 public void doPayment(Money amount) {
3029 Payment payment = paymentFactory.create(new Date(), amount);
3030 payment.apply();
3031 }
3032 }</pre>
3033
3034 <h3>Making parameter types distinct</h3>
3035 The types of the factory method's parameters must be distinct. To use multiple parameters of
3036 the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the
3037 parameters. The names must be applied to the factory method's parameters:
3038
3039 <pre>public interface PaymentFactory {
3040 Payment create(
3041 <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
3042 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
3043 Money amount);
3044 } </pre>
3045
3046 ...and to the concrete type's constructor parameters:
3047
3048 <pre>public class RealPayment implements Payment {
3049 {@literal @}Inject
3050 public RealPayment(
3051 CreditService creditService,
3052 AuthService authService,
3053 <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
3054 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
3055 <strong>{@literal @}Assisted</strong> Money amount) {
3056 ...
3057 }
3058 }</pre>
3059
3060 <h3>Values are created by Guice</h3>
3061 Returned factories use child injectors to create values. The values are eligible for method
3062 interception. In addition, {@literal @}{@literal Inject} members will be injected before they are
3063 returned.
3064
3065 <h3>More configuration options</h3>
3066 In addition to simply specifying an implementation class for any returned type, factories' return
3067 values can be automatic or can be configured to use annotations:
3068 <p/>
3069 If you just want to return the types specified in the factory, do not configure any
3070 implementations:
3071
3072 <pre>public interface FruitFactory {
3073 Apple getApple(Color color);
3074 }
3075 ...
3076 protected void configure() {
3077 install(new FactoryModuleBuilder().build(FruitFactory.class));
3078 }</pre>
3079
3080 Note that any type returned by the factory in this manner needs to be an implementation class.
3081 <p/>
3082 To return two different implementations for the same interface from your factory, use binding
3083 annotations on your return types:
3084
3085 <pre>interface CarFactory {
3086 {@literal @}Named("fast") Car getFastCar(Color color);
3087 {@literal @}Named("clean") Car getCleanCar(Color color);
3088 }
3089 ...
3090 protected void configure() {
3091 install(new FactoryModuleBuilder()
3092 .implement(Car.class, Names.named("fast"), Porsche.class)
3093 .implement(Car.class, Names.named("clean"), Prius.class)
3094 .build(CarFactory.class));
3095 }</pre>
3096
3097 <h3>Implementation limitations</h3>
3098 As a limitation of the implementation, it is prohibited to declare a factory method that
3099 accepts a {@code Provider} as one of its arguments.
3100
3101 @since 3.0
3102 @author schmitt@google.com (Peter Schmitt)]]>
3103 </doc>
3104 </class>
3105 <!-- end class com.google.inject.assistedinject.FactoryModuleBuilder -->
3106 <!-- start class com.google.inject.assistedinject.FactoryProvider -->
3107 <class name="FactoryProvider" extends="java.lang.Object"
3108 abstract="false"
3109 static="false" final="false" visibility="public"
3110 deprecated="use {@link FactoryModuleBuilder} instead.">
3111 <implements name="com.google.inject.Provider&lt;F&gt;"/>
3112 <implements name="com.google.inject.spi.HasDependencies"/>
3113 <method name="newFactory" return="com.google.inject.Provider&lt;F&gt;"
3114 abstract="false" native="false" synchronized="false"
3115 static="true" final="false" visibility="public"
3116 deprecated="not deprecated">
3117 <param name="factoryType" type="java.lang.Class&lt;F&gt;"/>
3118 <param name="implementationType" type="java.lang.Class&lt;?&gt;"/>
3119 </method>
3120 <method name="newFactory" return="com.google.inject.Provider&lt;F&gt;"
3121 abstract="false" native="false" synchronized="false"
3122 static="true" final="false" visibility="public"
3123 deprecated="not deprecated">
3124 <param name="factoryType" type="com.google.inject.TypeLiteral&lt;F&gt;"/>
3125 <param name="implementationType" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
3126 </method>
3127 <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
3128 abstract="false" native="false" synchronized="false"
3129 static="false" final="false" visibility="public"
3130 deprecated="not deprecated">
3131 </method>
3132 <method name="get" return="F"
3133 abstract="false" native="false" synchronized="false"
3134 static="false" final="false" visibility="public"
3135 deprecated="not deprecated">
3136 </method>
3137 <doc>
3138 <![CDATA[<strong>Obsolete.</strong> Prefer {@link FactoryModuleBuilder} for its more concise API and
3139 additional capability.
3140
3141 <p>Provides a factory that combines the caller's arguments with injector-supplied values to
3142 construct objects.
3143
3144 <h3>Defining a factory</h3>
3145 Create an interface whose methods return the constructed type, or any of its supertypes. The
3146 method's parameters are the arguments required to build the constructed type.
3147 <pre>public interface PaymentFactory {
3148 Payment create(Date startDate, Money amount);
3149 }</pre>
3150 You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i>
3151 or <i>newPayment</i>.
3152
3153 <h3>Creating a type that accepts factory parameters</h3>
3154 {@code constructedType} is a concrete class with an {@literal @}{@link Inject}-annotated
3155 constructor. In addition to injector-supplied parameters, the constructor should have
3156 parameters that match each of the factory method's parameters. Each factory-supplied parameter
3157 requires an {@literal @}{@link Assisted} annotation. This serves to document that the parameter
3158 is not bound by your application's modules.
3159 <pre>public class RealPayment implements Payment {
3160 {@literal @}Inject
3161 public RealPayment(
3162 CreditService creditService,
3163 AuthService authService,
3164 <strong>{@literal @}Assisted Date startDate</strong>,
3165 <strong>{@literal @}Assisted Money amount</strong>) {
3166 ...
3167 }
3168 }</pre>
3169 Any parameter that permits a null value should also be annotated {@code @Nullable}.
3170
3171 <h3>Configuring factories</h3>
3172 In your {@link com.google.inject.Module module}, bind the factory interface to the returned
3173 factory:
3174 <pre>bind(PaymentFactory.class).toProvider(
3175 FactoryProvider.newFactory(PaymentFactory.class, RealPayment.class));</pre>
3176 As a side-effect of this binding, Guice will inject the factory to initialize it for use. The
3177 factory cannot be used until the injector has been initialized.
3178
3179 <h3>Using the factory</h3>
3180 Inject your factory into your application classes. When you use the factory, your arguments
3181 will be combined with values from the injector to construct an instance.
3182 <pre>public class PaymentAction {
3183 {@literal @}Inject private PaymentFactory paymentFactory;
3184
3185 public void doPayment(Money amount) {
3186 Payment payment = paymentFactory.create(new Date(), amount);
3187 payment.apply();
3188 }
3189 }</pre>
3190
3191 <h3>Making parameter types distinct</h3>
3192 The types of the factory method's parameters must be distinct. To use multiple parameters of
3193 the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the
3194 parameters. The names must be applied to the factory method's parameters:
3195
3196 <pre>public interface PaymentFactory {
3197 Payment create(
3198 <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
3199 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
3200 Money amount);
3201 } </pre>
3202 ...and to the concrete type's constructor parameters:
3203 <pre>public class RealPayment implements Payment {
3204 {@literal @}Inject
3205 public RealPayment(
3206 CreditService creditService,
3207 AuthService authService,
3208 <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
3209 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
3210 <strong>{@literal @}Assisted</strong> Money amount) {
3211 ...
3212 }
3213 }</pre>
3214
3215 <h3>Values are created by Guice</h3>
3216 Returned factories use child injectors to create values. The values are eligible for method
3217 interception. In addition, {@literal @}{@literal Inject} members will be injected before they are
3218 returned.
3219
3220 <h3>Backwards compatibility using {@literal @}AssistedInject</h3>
3221 Instead of the {@literal @}Inject annotation, you may annotate the constructed classes with
3222 {@literal @}{@link AssistedInject}. This triggers a limited backwards-compatability mode.
3223
3224 <p>Instead of matching factory method arguments to constructor parameters using their names, the
3225 <strong>parameters are matched by their order</strong>. The first factory method argument is
3226 used for the first {@literal @}Assisted constructor parameter, etc.. Annotation names have no
3227 effect.
3228
3229 <p>Returned values are <strong>not created by Guice</strong>. These types are not eligible for
3230 method interception. They do receive post-construction member injection.
3231
3232 @param <F> The factory interface
3233
3234 @author jmourits@google.com (Jerome Mourits)
3235 @author jessewilson@google.com (Jesse Wilson)
3236 @author dtm@google.com (Daniel Martin)
3237
3238 @deprecated use {@link FactoryModuleBuilder} instead.]]>
3239 </doc>
3240 </class>
3241 <!-- end class com.google.inject.assistedinject.FactoryProvider -->
3242</package>
3243<package name="com.google.inject.binder">
3244 <!-- start interface com.google.inject.binder.AnnotatedBindingBuilder -->
3245 <interface name="AnnotatedBindingBuilder" abstract="true"
3246 static="false" final="false" visibility="public"
3247 deprecated="not deprecated">
3248 <implements name="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"/>
3249 <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
3250 abstract="false" native="false" synchronized="false"
3251 static="false" final="false" visibility="public"
3252 deprecated="not deprecated">
3253 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
3254 <doc>
3255 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3256 </doc>
3257 </method>
3258 <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
3259 abstract="false" native="false" synchronized="false"
3260 static="false" final="false" visibility="public"
3261 deprecated="not deprecated">
3262 <param name="annotation" type="java.lang.annotation.Annotation"/>
3263 <doc>
3264 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3265 </doc>
3266 </method>
3267 <doc>
3268 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3269
3270 @author crazybob@google.com (Bob Lee)]]>
3271 </doc>
3272 </interface>
3273 <!-- end interface com.google.inject.binder.AnnotatedBindingBuilder -->
3274 <!-- start interface com.google.inject.binder.AnnotatedConstantBindingBuilder -->
3275 <interface name="AnnotatedConstantBindingBuilder" abstract="true"
3276 static="false" final="false" visibility="public"
3277 deprecated="not deprecated">
3278 <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder"
3279 abstract="false" native="false" synchronized="false"
3280 static="false" final="false" visibility="public"
3281 deprecated="not deprecated">
3282 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
3283 <doc>
3284 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3285 </doc>
3286 </method>
3287 <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder"
3288 abstract="false" native="false" synchronized="false"
3289 static="false" final="false" visibility="public"
3290 deprecated="not deprecated">
3291 <param name="annotation" type="java.lang.annotation.Annotation"/>
3292 <doc>
3293 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3294 </doc>
3295 </method>
3296 <doc>
3297 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3298
3299 @author crazybob@google.com (Bob Lee)]]>
3300 </doc>
3301 </interface>
3302 <!-- end interface com.google.inject.binder.AnnotatedConstantBindingBuilder -->
3303 <!-- start interface com.google.inject.binder.AnnotatedElementBuilder -->
3304 <interface name="AnnotatedElementBuilder" abstract="true"
3305 static="false" final="false" visibility="public"
3306 deprecated="not deprecated">
3307 <method name="annotatedWith"
3308 abstract="false" native="false" synchronized="false"
3309 static="false" final="false" visibility="public"
3310 deprecated="not deprecated">
3311 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
3312 <doc>
3313 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3314 </doc>
3315 </method>
3316 <method name="annotatedWith"
3317 abstract="false" native="false" synchronized="false"
3318 static="false" final="false" visibility="public"
3319 deprecated="not deprecated">
3320 <param name="annotation" type="java.lang.annotation.Annotation"/>
3321 <doc>
3322 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3323 </doc>
3324 </method>
3325 <doc>
3326 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3327
3328 @author jessewilson@google.com (Jesse Wilson)
3329 @since 2.0]]>
3330 </doc>
3331 </interface>
3332 <!-- end interface com.google.inject.binder.AnnotatedElementBuilder -->
3333 <!-- start interface com.google.inject.binder.ConstantBindingBuilder -->
3334 <interface name="ConstantBindingBuilder" abstract="true"
3335 static="false" final="false" visibility="public"
3336 deprecated="not deprecated">
3337 <method name="to"
3338 abstract="false" native="false" synchronized="false"
3339 static="false" final="false" visibility="public"
3340 deprecated="not deprecated">
3341 <param name="value" type="java.lang.String"/>
3342 <doc>
3343 <![CDATA[Binds constant to the given value.]]>
3344 </doc>
3345 </method>
3346 <method name="to"
3347 abstract="false" native="false" synchronized="false"
3348 static="false" final="false" visibility="public"
3349 deprecated="not deprecated">
3350 <param name="value" type="int"/>
3351 <doc>
3352 <![CDATA[Binds constant to the given value.]]>
3353 </doc>
3354 </method>
3355 <method name="to"
3356 abstract="false" native="false" synchronized="false"
3357 static="false" final="false" visibility="public"
3358 deprecated="not deprecated">
3359 <param name="value" type="long"/>
3360 <doc>
3361 <![CDATA[Binds constant to the given value.]]>
3362 </doc>
3363 </method>
3364 <method name="to"
3365 abstract="false" native="false" synchronized="false"
3366 static="false" final="false" visibility="public"
3367 deprecated="not deprecated">
3368 <param name="value" type="boolean"/>
3369 <doc>
3370 <![CDATA[Binds constant to the given value.]]>
3371 </doc>
3372 </method>
3373 <method name="to"
3374 abstract="false" native="false" synchronized="false"
3375 static="false" final="false" visibility="public"
3376 deprecated="not deprecated">
3377 <param name="value" type="double"/>
3378 <doc>
3379 <![CDATA[Binds constant to the given value.]]>
3380 </doc>
3381 </method>
3382 <method name="to"
3383 abstract="false" native="false" synchronized="false"
3384 static="false" final="false" visibility="public"
3385 deprecated="not deprecated">
3386 <param name="value" type="float"/>
3387 <doc>
3388 <![CDATA[Binds constant to the given value.]]>
3389 </doc>
3390 </method>
3391 <method name="to"
3392 abstract="false" native="false" synchronized="false"
3393 static="false" final="false" visibility="public"
3394 deprecated="not deprecated">
3395 <param name="value" type="short"/>
3396 <doc>
3397 <![CDATA[Binds constant to the given value.]]>
3398 </doc>
3399 </method>
3400 <method name="to"
3401 abstract="false" native="false" synchronized="false"
3402 static="false" final="false" visibility="public"
3403 deprecated="not deprecated">
3404 <param name="value" type="char"/>
3405 <doc>
3406 <![CDATA[Binds constant to the given value.]]>
3407 </doc>
3408 </method>
3409 <method name="to"
3410 abstract="false" native="false" synchronized="false"
3411 static="false" final="false" visibility="public"
3412 deprecated="not deprecated">
3413 <param name="value" type="byte"/>
3414 <doc>
3415 <![CDATA[Binds constant to the given value.
3416
3417 @since 3.0]]>
3418 </doc>
3419 </method>
3420 <method name="to"
3421 abstract="false" native="false" synchronized="false"
3422 static="false" final="false" visibility="public"
3423 deprecated="not deprecated">
3424 <param name="value" type="java.lang.Class&lt;?&gt;"/>
3425 <doc>
3426 <![CDATA[Binds constant to the given value.]]>
3427 </doc>
3428 </method>
3429 <method name="to"
3430 abstract="false" native="false" synchronized="false"
3431 static="false" final="false" visibility="public"
3432 deprecated="not deprecated">
3433 <param name="value" type="E extends java.lang.Enum&lt;E&gt;"/>
3434 <doc>
3435 <![CDATA[Binds constant to the given value.]]>
3436 </doc>
3437 </method>
3438 <doc>
3439 <![CDATA[Binds to a constant value.]]>
3440 </doc>
3441 </interface>
3442 <!-- end interface com.google.inject.binder.ConstantBindingBuilder -->
3443 <!-- start interface com.google.inject.binder.LinkedBindingBuilder -->
3444 <interface name="LinkedBindingBuilder" abstract="true"
3445 static="false" final="false" visibility="public"
3446 deprecated="not deprecated">
3447 <implements name="com.google.inject.binder.ScopedBindingBuilder"/>
3448 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
3449 abstract="false" native="false" synchronized="false"
3450 static="false" final="false" visibility="public"
3451 deprecated="not deprecated">
3452 <param name="implementation" type="java.lang.Class&lt;? extends T&gt;"/>
3453 <doc>
3454 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3455 </doc>
3456 </method>
3457 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
3458 abstract="false" native="false" synchronized="false"
3459 static="false" final="false" visibility="public"
3460 deprecated="not deprecated">
3461 <param name="implementation" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
3462 <doc>
3463 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3464 </doc>
3465 </method>
3466 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
3467 abstract="false" native="false" synchronized="false"
3468 static="false" final="false" visibility="public"
3469 deprecated="not deprecated">
3470 <param name="targetKey" type="com.google.inject.Key&lt;? extends T&gt;"/>
3471 <doc>
3472 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3473 </doc>
3474 </method>
3475 <method name="toInstance"
3476 abstract="false" native="false" synchronized="false"
3477 static="false" final="false" visibility="public"
3478 deprecated="not deprecated">
3479 <param name="instance" type="T"/>
3480 <doc>
3481 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3482
3483 @see com.google.inject.Injector#injectMembers]]>
3484 </doc>
3485 </method>
3486 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
3487 abstract="false" native="false" synchronized="false"
3488 static="false" final="false" visibility="public"
3489 deprecated="not deprecated">
3490 <param name="provider" type="com.google.inject.Provider&lt;? extends T&gt;"/>
3491 <doc>
3492 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3493
3494 @see com.google.inject.Injector#injectMembers]]>
3495 </doc>
3496 </method>
3497 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
3498 abstract="false" native="false" synchronized="false"
3499 static="false" final="false" visibility="public"
3500 deprecated="not deprecated">
3501 <param name="providerType" type="java.lang.Class&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
3502 <doc>
3503 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3504 </doc>
3505 </method>
3506 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
3507 abstract="false" native="false" synchronized="false"
3508 static="false" final="false" visibility="public"
3509 deprecated="not deprecated">
3510 <param name="providerType" type="com.google.inject.TypeLiteral&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
3511 <doc>
3512 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3513 </doc>
3514 </method>
3515 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
3516 abstract="false" native="false" synchronized="false"
3517 static="false" final="false" visibility="public"
3518 deprecated="not deprecated">
3519 <param name="providerKey" type="com.google.inject.Key&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
3520 <doc>
3521 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3522 </doc>
3523 </method>
3524 <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder"
3525 abstract="false" native="false" synchronized="false"
3526 static="false" final="false" visibility="public"
3527 deprecated="not deprecated">
3528 <param name="constructor" type="java.lang.reflect.Constructor&lt;S&gt;"/>
3529 <doc>
3530 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3531
3532 @since 3.0]]>
3533 </doc>
3534 </method>
3535 <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder"
3536 abstract="false" native="false" synchronized="false"
3537 static="false" final="false" visibility="public"
3538 deprecated="not deprecated">
3539 <param name="constructor" type="java.lang.reflect.Constructor&lt;S&gt;"/>
3540 <param name="type" type="com.google.inject.TypeLiteral&lt;? extends S&gt;"/>
3541 <doc>
3542 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3543
3544 @since 3.0]]>
3545 </doc>
3546 </method>
3547 <doc>
3548 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3549
3550 @author crazybob@google.com (Bob Lee)]]>
3551 </doc>
3552 </interface>
3553 <!-- end interface com.google.inject.binder.LinkedBindingBuilder -->
3554 <!-- start interface com.google.inject.binder.ScopedBindingBuilder -->
3555 <interface name="ScopedBindingBuilder" abstract="true"
3556 static="false" final="false" visibility="public"
3557 deprecated="not deprecated">
3558 <method name="in"
3559 abstract="false" native="false" synchronized="false"
3560 static="false" final="false" visibility="public"
3561 deprecated="not deprecated">
3562 <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
3563 <doc>
3564 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3565 </doc>
3566 </method>
3567 <method name="in"
3568 abstract="false" native="false" synchronized="false"
3569 static="false" final="false" visibility="public"
3570 deprecated="not deprecated">
3571 <param name="scope" type="com.google.inject.Scope"/>
3572 <doc>
3573 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
3574 </doc>
3575 </method>
3576 <method name="asEagerSingleton"
3577 abstract="false" native="false" synchronized="false"
3578 static="false" final="false" visibility="public"
3579 deprecated="not deprecated">
3580 <doc>
3581 <![CDATA[Instructs the {@link com.google.inject.Injector} to eagerly initialize this
3582 singleton-scoped binding upon creation. Useful for application
3583 initialization logic. See the EDSL examples at
3584 {@link com.google.inject.Binder}.]]>
3585 </doc>
3586 </method>
3587 <doc>
3588 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
3589
3590 @author crazybob@google.com (Bob Lee)]]>
3591 </doc>
3592 </interface>
3593 <!-- end interface com.google.inject.binder.ScopedBindingBuilder -->
3594</package>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00003595<package name="com.google.inject.grapher">
3596 <!-- start interface com.google.inject.grapher.BindingEdge -->
3597 <interface name="BindingEdge" abstract="true"
3598 static="false" final="false" visibility="public"
3599 deprecated="not deprecated">
3600 <method name="setType"
3601 abstract="false" native="false" synchronized="false"
3602 static="false" final="false" visibility="public"
3603 deprecated="not deprecated">
3604 <param name="type" type="com.google.inject.grapher.BindingEdge.Type"/>
3605 </method>
3606 <doc>
3607 <![CDATA[Interface for an edge that connects an interface to the type or instance
3608 that is bound to implement it.
3609
3610 @author phopkins@gmail.com (Pete Hopkins)
3611
3612 @param <K> The type for node IDs.]]>
3613 </doc>
3614 </interface>
3615 <!-- end interface com.google.inject.grapher.BindingEdge -->
3616 <!-- start interface com.google.inject.grapher.BindingEdge.Factory -->
3617 <interface name="BindingEdge.Factory" abstract="true"
3618 static="true" final="false" visibility="public"
3619 deprecated="not deprecated">
3620 <method name="newBindingEdge" return="T extends com.google.inject.grapher.BindingEdge&lt;K&gt;"
3621 abstract="false" native="false" synchronized="false"
3622 static="false" final="false" visibility="public"
3623 deprecated="not deprecated">
3624 <param name="fromId" type="K"/>
3625 <param name="toId" type="K"/>
3626 <doc>
3627 <![CDATA[Creates a new {@link BindingEdge} instance and adds it to the graph.
3628
3629 @param fromId Node ID for the interface node.
3630 @param toId Node ID for the implementation (class or instance) node.
3631 @return The newly created and added {@link BindingEdge}.]]>
3632 </doc>
3633 </method>
3634 <doc>
3635 <![CDATA[Factory interface for {@link BindingEdge}s. Renderer implementations will
3636 need to provide an implementation for this.
3637
3638 @param <K> The type for node IDs.
3639 @param <T> The {@link BindingEdge} sub-type that this factory provides.]]>
3640 </doc>
3641 </interface>
3642 <!-- end interface com.google.inject.grapher.BindingEdge.Factory -->
3643 <!-- start class com.google.inject.grapher.BindingEdge.Type -->
3644 <class name="BindingEdge.Type" extends="java.lang.Enum&lt;com.google.inject.grapher.BindingEdge.Type&gt;"
3645 abstract="false"
3646 static="true" final="true" visibility="public"
3647 deprecated="not deprecated">
3648 <method name="values" return="com.google.inject.grapher.BindingEdge.Type[]"
3649 abstract="false" native="false" synchronized="false"
3650 static="true" final="false" visibility="public"
3651 deprecated="not deprecated">
3652 </method>
3653 <method name="valueOf" return="com.google.inject.grapher.BindingEdge.Type"
3654 abstract="false" native="false" synchronized="false"
3655 static="true" final="false" visibility="public"
3656 deprecated="not deprecated">
3657 <param name="name" type="java.lang.String"/>
3658 </method>
3659 <doc>
3660 <![CDATA[Classification for what kind of binding this edge represents.]]>
3661 </doc>
3662 </class>
3663 <!-- end class com.google.inject.grapher.BindingEdge.Type -->
3664 <!-- start interface com.google.inject.grapher.DependencyEdge -->
3665 <interface name="DependencyEdge" abstract="true"
3666 static="false" final="false" visibility="public"
3667 deprecated="not deprecated">
3668 <doc>
3669 <![CDATA[Interface for an edge from a class or {@link InjectionPoint} to the
3670 interface node that will satisfy the dependency.
3671
3672 @author phopkins@gmail.com (Pete Hopkins)
3673
3674 @param <K> The type for node IDs.]]>
3675 </doc>
3676 </interface>
3677 <!-- end interface com.google.inject.grapher.DependencyEdge -->
3678 <!-- start interface com.google.inject.grapher.DependencyEdge.Factory -->
3679 <interface name="DependencyEdge.Factory" abstract="true"
3680 static="true" final="false" visibility="public"
3681 deprecated="not deprecated">
3682 <method name="newDependencyEdge" return="T extends com.google.inject.grapher.DependencyEdge&lt;K&gt;"
3683 abstract="false" native="false" synchronized="false"
3684 static="false" final="false" visibility="public"
3685 deprecated="not deprecated">
3686 <param name="fromId" type="K"/>
3687 <param name="fromPoint" type="com.google.inject.spi.InjectionPoint"/>
3688 <param name="toId" type="K"/>
3689 <doc>
3690 <![CDATA[Creates a new {@link DependencyEdge} and adds it to the graph.
3691
3692 @param fromId The ID for the class or instance node that has the
3693 dependency.
3694 @param fromPoint The point where the dependency will be
3695 {@literal @}{@link Inject}ed.
3696 @param toId The ID for the interface node that satisfies the dependency.]]>
3697 </doc>
3698 </method>
3699 <doc>
3700 <![CDATA[Factory interface for {@link DependencyEdge}s. Renderer implementations
3701 will need to provide an implementation for this.
3702
3703 @param <K> The type for node IDs.
3704 @param <T> The {@link DependencyEdge} sub-type that this factory provides.]]>
3705 </doc>
3706 </interface>
3707 <!-- end interface com.google.inject.grapher.DependencyEdge.Factory -->
3708 <!-- start class com.google.inject.grapher.GrapherModule -->
3709 <class name="GrapherModule" extends="com.google.inject.AbstractModule"
3710 abstract="false"
3711 static="false" final="false" visibility="public"
3712 deprecated="not deprecated">
3713 <constructor name="GrapherModule"
3714 static="false" final="false" visibility="public"
3715 deprecated="not deprecated">
3716 </constructor>
3717 <method name="configure"
3718 abstract="false" native="false" synchronized="false"
3719 static="false" final="false" visibility="protected"
3720 deprecated="not deprecated">
3721 </method>
3722 <doc>
3723 <![CDATA[Module for the common bindings for {@link InjectorGrapher}. You will also
3724 need to bind a {@link Module} that satisfies the {@link Renderer}
3725 dependency.
3726 <p>
3727 If you want to use subtypes of the node and edge classes, or a different
3728 node ID type, you will need to override the {@link GraphingVisitor} binding
3729 to specify the new type parameters.
3730
3731 @author phopkins@gmail.com (Pete Hopkins)]]>
3732 </doc>
3733 </class>
3734 <!-- end class com.google.inject.grapher.GrapherModule -->
3735 <!-- start class com.google.inject.grapher.GraphingVisitor -->
3736 <class name="GraphingVisitor" extends="java.lang.Object"
3737 abstract="false"
3738 static="false" final="false" visibility="public"
3739 deprecated="not deprecated">
3740 <implements name="com.google.inject.spi.BindingTargetVisitor&lt;java.lang.Object, java.lang.Void&gt;"/>
3741 <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;"
3742 static="false" final="false" visibility="public"
3743 deprecated="not deprecated">
3744 </constructor>
3745 <method name="getClassNodeId" return="K"
3746 abstract="false" native="false" synchronized="false"
3747 static="false" final="true" visibility="protected"
3748 deprecated="not deprecated">
3749 <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
3750 <doc>
3751 <![CDATA[Helper method to return the standard node ID for the {@link Binding}'s
3752 {@link Key}.
3753
3754 @see NodeIdFactory#getClassNodeId(Key)]]>
3755 </doc>
3756 </method>
3757 <method name="getInstanceNodeId" return="K"
3758 abstract="false" native="false" synchronized="false"
3759 static="false" final="true" visibility="protected"
3760 deprecated="not deprecated">
3761 <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
3762 <doc>
3763 <![CDATA[Helper method to return the instance node ID for the {@link Binding}'s
3764 {@link Key}.
3765
3766 @see NodeIdFactory#getInstanceNodeId(Key)]]>
3767 </doc>
3768 </method>
3769 <method name="newInterfaceNode" return="N extends com.google.inject.grapher.InterfaceNode&lt;K&gt;"
3770 abstract="false" native="false" synchronized="false"
3771 static="false" final="false" visibility="protected"
3772 deprecated="not deprecated">
3773 <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
3774 <doc>
3775 <![CDATA[Creates and returns a new {@link InterfaceNode} object for the given
3776 {@link Binding}.]]>
3777 </doc>
3778 </method>
3779 <method name="newClassImplementationNode" return="M extends com.google.inject.grapher.ImplementationNode&lt;K&gt;"
3780 abstract="false" native="false" synchronized="false"
3781 static="false" final="false" visibility="protected"
3782 deprecated="not deprecated">
3783 <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
3784 <param name="constructorInjectionPoint" type="com.google.inject.spi.InjectionPoint"/>
3785 <param name="memberInjectionPoints" type="java.util.Collection&lt;com.google.inject.spi.InjectionPoint&gt;"/>
3786 <doc>
3787 <![CDATA[Creates and returns a new {@link ImplementationNode} for the given
3788 {@link Binding}, where the {@link Binding} is for a class that Guice
3789 will instantiate, rather than a specific instance.]]>
3790 </doc>
3791 </method>
3792 <method name="newInstanceImplementationNode" return="M extends com.google.inject.grapher.ImplementationNode&lt;K&gt;"
3793 abstract="false" native="false" synchronized="false"
3794 static="false" final="false" visibility="protected"
3795 deprecated="not deprecated">
3796 <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
3797 <param name="instance" type="java.lang.Object"/>
3798 <doc>
3799 <![CDATA[Creates and returns a new {@link ImplementationNode} for the given
3800 {@link Binding}, where the {@link Binding} is for an instance, rather than
3801 a class.]]>
3802 </doc>
3803 </method>
3804 <method name="newBindingEdge" return="B extends com.google.inject.grapher.BindingEdge&lt;K&gt;"
3805 abstract="false" native="false" synchronized="false"
3806 static="false" final="false" visibility="protected"
3807 deprecated="not deprecated">
3808 <param name="nodeId" type="K"/>
3809 <param name="toId" type="K"/>
3810 <param name="type" type="com.google.inject.grapher.BindingEdge.Type"/>
3811 <doc>
3812 <![CDATA[Creates a new {@link BindingEdge} from the given node to the specified
3813 node.
3814
3815 @param nodeId ID of the {@link InterfaceNode} that binds to the other.
3816 @param toId The node ID of a class or instance that is bound.
3817 @param type The {@link BindingEdge.Type} of this binding.
3818 @return The newly-created and added {@link BindingEdge}.]]>
3819 </doc>
3820 </method>
3821 <method name="newDependencyEdges" return="java.util.Collection&lt;D&gt;"
3822 abstract="false" native="false" synchronized="false"
3823 static="false" final="false" visibility="protected"
3824 deprecated="not deprecated">
3825 <param name="nodeId" type="K"/>
3826 <param name="node" type="M extends com.google.inject.grapher.ImplementationNode&lt;K&gt;"/>
3827 <param name="dependencies" type="java.util.Collection&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"/>
3828 <doc>
3829 <![CDATA[Adds {@link DependencyEdge}s to the graph for each of the provided
3830 {@link Dependency}s. These will be from the given node ID to the
3831 {@link Dependency}'s {@link Key}.
3832 <p>
3833 If a {@link Dependency} has an associated {@link InjectionPoint}, its
3834 member will be added to the given {@link ImplementationNode} and the edge
3835 will start at the {@link Member}.
3836
3837 @see #newDependencyEdge(Object, InjectionPoint, Dependency)
3838
3839 @param nodeId ID of the node that should be the tail of the
3840 {@link DependencyEdge}s.
3841 @param node An {@link ImplementationNode} to add {@link Member}s to.
3842 @param dependencies {@link Collection} of {@link Dependency}s from the
3843 {@link Binding}.
3844 @return A {@link Collection} of the {@link DependencyEdge}s that were
3845 added to the graph.]]>
3846 </doc>
3847 </method>
3848 <method name="newDependencyEdge" return="D extends com.google.inject.grapher.DependencyEdge&lt;K&gt;"
3849 abstract="false" native="false" synchronized="false"
3850 static="false" final="false" visibility="protected"
3851 deprecated="not deprecated">
3852 <param name="nodeId" type="K"/>
3853 <param name="injectionPoint" type="com.google.inject.spi.InjectionPoint"/>
3854 <param name="dependency" type="com.google.inject.spi.Dependency&lt;?&gt;"/>
3855 <doc>
3856 <![CDATA[Creates a new {@link DependencyEdge} from the given node to a
3857 {@link Dependency}.
3858 <p>
3859 This method takes more comprehensive parameters than strictly necessary
3860 in case they would be useful to overriding implementations.
3861
3862 @param nodeId ID of the {@link ImplementationNode} where the edges will start.
3863 @param injectionPoint The {@link InjectionPoint} that gave rise to this
3864 {@link Dependency}, if one exists. Used to figure out which
3865 {@link Member} the edge should point from.
3866 @param dependency The {@link Dependency} to represent with this edge.
3867 @return The newly-created and added {@link DependencyEdge}.]]>
3868 </doc>
3869 </method>
3870 <method name="visit" return="java.lang.Void"
3871 abstract="false" native="false" synchronized="false"
3872 static="false" final="false" visibility="public"
3873 deprecated="not deprecated">
3874 <param name="binding" type="com.google.inject.spi.ConstructorBinding&lt;?&gt;"/>
3875 <doc>
3876 <![CDATA[Visitor for {@link ConstructorBinding}s. These are for classes that Guice
3877 will instantiate to satisfy injection requests. We create a new
3878 {@link ImplementationNode} for the class, then add edges to everything
3879 that it depends on to be instantiated.
3880
3881 @see #newClassImplementationNode(Binding, InjectionPoint, Collection)
3882 @see #newDependencyEdges(Object, ImplementationNode, Collection)]]>
3883 </doc>
3884 </method>
3885 <method name="visit" return="java.lang.Void"
3886 abstract="false" native="false" synchronized="false"
3887 static="false" final="false" visibility="public"
3888 deprecated="not deprecated">
3889 <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding&lt;?&gt;"/>
3890 <doc>
3891 <![CDATA[Visitor for {@link ConvertedConstantBinding}. The {@link Binding}'s
3892 {@link Key} will be of an annotated primitive type, and the value of
3893 {@link ConvertedConstantBinding#getSourceKey()} will be of a
3894 {@link String} with the same annotation.
3895 <p>
3896 We render this as an {@link InterfaceNode} that has a
3897 {@link BindingEdge} to the source {@link Key}. That will then be rendered
3898 by {@link #visit(InstanceBinding)} as an {@link InterfaceNode}
3899 with a {@link BindingEdge} to the {@link String} instance.
3900
3901 @see #newInterfaceNode(Binding)
3902 @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type)]]>
3903 </doc>
3904 </method>
3905 <method name="visit" return="java.lang.Void"
3906 abstract="false" native="false" synchronized="false"
3907 static="false" final="false" visibility="public"
3908 deprecated="not deprecated">
3909 <param name="binding" type="com.google.inject.spi.ExposedBinding&lt;?&gt;"/>
3910 <doc>
3911 <![CDATA[Currently not displayed on the graph.]]>
3912 </doc>
3913 </method>
3914 <method name="visit" return="java.lang.Void"
3915 abstract="false" native="false" synchronized="false"
3916 static="false" final="false" visibility="public"
3917 deprecated="not deprecated">
3918 <param name="binding" type="com.google.inject.spi.InstanceBinding&lt;?&gt;"/>
3919 <doc>
3920 <![CDATA[Visitor for {@link InstanceBinding}. We render two nodes in this case: a
3921 {@link InterfaceNode} for the binding's {@link Key}, and then an
3922 {@link ImplementationNode} for the instance {@link Object} itself. We run
3923 a binding node between them.
3924 <p>
3925 We then render any {@link DependencyEdge}s that the instance may have,
3926 which come either from {@link InjectionPoint}s (method and field) on the
3927 instance, or on {@link Dependency}s the instance declares through the
3928 {@link HasDependencies} interface.
3929
3930 @see #newInterfaceNode(Binding)
3931 @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type)
3932 @see #newInstanceImplementationNode(Binding, Object)
3933 @see #newDependencyEdges(Object, ImplementationNode, java.util.Collection)]]>
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.LinkedKeyBinding&lt;?&gt;"/>
3941 <doc>
3942 <![CDATA[Visitor for {@link LinkedKeyBinding}. This is the standard {@link Binding}
3943 you get from binding an interface class to an implementation class. We
3944 create an {@link InterfaceNode}, then draw a {@link BindingEdge} to the
3945 node of the implementing class.
3946
3947 @see #newInterfaceNode(Binding)
3948 @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type)]]>
3949 </doc>
3950 </method>
3951 <method name="visit" return="java.lang.Void"
3952 abstract="false" native="false" synchronized="false"
3953 static="false" final="false" visibility="public"
3954 deprecated="not deprecated">
3955 <param name="binding" type="com.google.inject.spi.ProviderBinding&lt;?&gt;"/>
3956 <doc>
3957 <![CDATA[Visitor for {@link ProviderBinding}. These {@link Binding}s arise from an
3958 {@link InjectionPoint} for the {@link Provider} interface. Since this
3959 isn't tremendously interesting information, we don't render this binding
3960 on the graph, and instead let the {@link DependencyEdge} go straight from
3961 the {@link InjectionPoint} to the node specified by
3962 {@link ProviderBinding#getProvidedKey()}.
3963
3964 @see NodeAliasFactory#newAlias(Object, Object)]]>
3965 </doc>
3966 </method>
3967 <method name="visit" return="java.lang.Void"
3968 abstract="false" native="false" synchronized="false"
3969 static="false" final="false" visibility="public"
3970 deprecated="not deprecated">
3971 <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;?&gt;"/>
3972 <doc>
3973 <![CDATA[Same as {@link #visit(InstanceBinding)}, but the
3974 {@link BindingEdge} is {@link BindingEdge.Type#PROVIDER}.
3975
3976 @see #newInterfaceNode(Binding)
3977 @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type)
3978 @see #newInstanceImplementationNode(Binding, Object)
3979 @see #newDependencyEdges(Object, ImplementationNode, java.util.Collection)]]>
3980 </doc>
3981 </method>
3982 <method name="visit" return="java.lang.Void"
3983 abstract="false" native="false" synchronized="false"
3984 static="false" final="false" visibility="public"
3985 deprecated="not deprecated">
3986 <param name="binding" type="com.google.inject.spi.ProviderKeyBinding&lt;?&gt;"/>
3987 <doc>
3988 <![CDATA[Same as {@link #visit(LinkedKeyBinding)}, but the
3989 {@link BindingEdge} is {@link BindingEdge.Type#PROVIDER}.
3990
3991 @see #newInterfaceNode(Binding)
3992 @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type)]]>
3993 </doc>
3994 </method>
3995 <method name="visit" return="java.lang.Void"
3996 abstract="false" native="false" synchronized="false"
3997 static="false" final="false" visibility="public"
3998 deprecated="not deprecated">
3999 <param name="binding" type="com.google.inject.spi.UntargettedBinding&lt;?&gt;"/>
4000 <doc>
4001 <![CDATA[Currently not displayed on the graph.]]>
4002 </doc>
4003 </method>
4004 <doc>
4005 <![CDATA[{@link BindingTargetVisitor} that adds nodes and edges to the graph based on
4006 the visited {@link Binding}.
4007 <p>
4008 This class is parameterized over the four graph element types
4009 ({@link InterfaceNode}, {@link ImplementationNode}, {@link BindingEdge}, and
4010 {@link DependencyEdge}) so that you can extend those interfaces and also
4011 extend this class, and the helper methods will all return your new types.
4012
4013 @author phopkins@gmail.com (Pete Hopkins)
4014
4015 @param <K> The type for node IDs.
4016 @param <N> Type for {@link InterfaceNode}s.
4017 @param <M> Type for {@link ImplementationNode}.s
4018 @param <B> Type for {@link BindingEdge}s.
4019 @param <D> Type for {@link DependencyEdge}s.]]>
4020 </doc>
4021 </class>
4022 <!-- end class com.google.inject.grapher.GraphingVisitor -->
4023 <!-- start interface com.google.inject.grapher.ImplementationNode -->
4024 <interface name="ImplementationNode" abstract="true"
4025 static="false" final="false" visibility="public"
4026 deprecated="not deprecated">
4027 <method name="setClassKey"
4028 abstract="false" native="false" synchronized="false"
4029 static="false" final="false" visibility="public"
4030 deprecated="not deprecated">
4031 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4032 <doc>
4033 <![CDATA[Sets the {@link Key} that this node is for. Used when the node is
4034 representing a class that Guice will instantiate.]]>
4035 </doc>
4036 </method>
4037 <method name="setInstance"
4038 abstract="false" native="false" synchronized="false"
4039 static="false" final="false" visibility="public"
4040 deprecated="not deprecated">
4041 <param name="instance" type="java.lang.Object"/>
4042 <doc>
4043 <![CDATA[Sets the {@link Object} that's the already-created instance. Used when
4044 this node is represeting the instance instead of a class.]]>
4045 </doc>
4046 </method>
4047 <method name="setSource"
4048 abstract="false" native="false" synchronized="false"
4049 static="false" final="false" visibility="public"
4050 deprecated="not deprecated">
4051 <param name="source" type="java.lang.Object"/>
4052 </method>
4053 <method name="addMember"
4054 abstract="false" native="false" synchronized="false"
4055 static="false" final="false" visibility="public"
4056 deprecated="not deprecated">
4057 <param name="member" type="java.lang.reflect.Member"/>
4058 </method>
4059 <doc>
4060 <![CDATA[Node for classes and instances that have {@link Dependency}s and are
4061 bound to {@link InterfaceNode}s. These nodes will often have fields for
4062 {@link Member}s that are {@link InjectionPoint}s.
4063
4064 @see DependencyEdge
4065
4066 @author phopkins@gmail.com (Pete Hopkins)
4067
4068 @param <K> The type for node IDs.]]>
4069 </doc>
4070 </interface>
4071 <!-- end interface com.google.inject.grapher.ImplementationNode -->
4072 <!-- start interface com.google.inject.grapher.ImplementationNode.Factory -->
4073 <interface name="ImplementationNode.Factory" abstract="true"
4074 static="true" final="false" visibility="public"
4075 deprecated="not deprecated">
4076 <method name="newImplementationNode" return="T extends com.google.inject.grapher.ImplementationNode&lt;K&gt;"
4077 abstract="false" native="false" synchronized="false"
4078 static="false" final="false" visibility="public"
4079 deprecated="not deprecated">
4080 <param name="nodeId" type="K"/>
4081 <doc>
4082 <![CDATA[Creates a new {@link ImplementationNode} and adds it to the graph.
4083
4084 @param nodeId ID for the node.
4085 @return The new {@link ImplementationNode} instance.]]>
4086 </doc>
4087 </method>
4088 <doc>
4089 <![CDATA[Factory interface for {@link ImplementationNode}s. Renderer
4090 implementations will need to provide an implementation for this.
4091
4092 @param <K> The type for node IDs.
4093 @param <T> The {@link ImplementationNode} sub-type that this factory
4094 provides.]]>
4095 </doc>
4096 </interface>
4097 <!-- end interface com.google.inject.grapher.ImplementationNode.Factory -->
4098 <!-- start class com.google.inject.grapher.InjectorGrapher -->
4099 <class name="InjectorGrapher" extends="java.lang.Object"
4100 abstract="false"
4101 static="false" final="false" visibility="public"
4102 deprecated="not deprecated">
4103 <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"
4104 static="false" final="false" visibility="public"
4105 deprecated="not deprecated">
4106 </constructor>
4107 <method name="of" return="com.google.inject.grapher.InjectorGrapher"
4108 abstract="false" native="false" synchronized="false"
4109 static="false" final="false" visibility="public"
4110 deprecated="not deprecated">
4111 <param name="injector" type="com.google.inject.Injector"/>
4112 <doc>
4113 <![CDATA[Sets the {@link Injector} to graph.]]>
4114 </doc>
4115 </method>
4116 <method name="rootedAt" return="com.google.inject.grapher.InjectorGrapher"
4117 abstract="false" native="false" synchronized="false"
4118 static="false" final="false" visibility="public"
4119 deprecated="not deprecated">
4120 <param name="classes" type="java.lang.Class[]"/>
4121 <doc>
4122 <![CDATA[Sets an initial group of {@link Class}es to use as the starting point for
4123 the graph. The graph will be of these classes and their transitive
4124 dependencies and bindings.]]>
4125 </doc>
4126 </method>
4127 <method name="graph"
4128 abstract="false" native="false" synchronized="false"
4129 static="false" final="false" visibility="public"
4130 deprecated="not deprecated">
4131 <exception name="IOException" type="java.io.IOException"/>
4132 <doc>
4133 <![CDATA[Renders a graph with the bound {@link Renderer}. The {@link Injector}
4134 must have already been specified with {@link #of(Injector)}.]]>
4135 </doc>
4136 </method>
4137 <doc>
4138 <![CDATA[Root class for graphing an {@link Injector}. Bound in {@link GrapherModule}.
4139 <p>
4140 Use {@link #of(Injector)} to specify the {@link Injector} to use, and
4141 {@link graph()} to graph the {@link Injector} using the currently-bound
4142 {@link Renderer}.
4143 <p>
4144 By default, this will graph the entire {@link Injector}. Use
4145 {@link #rootedAt(Class...)} to specify an initial set of {@link Class}es to
4146 use, and this will graph their transitive bindings and dependencies.
4147
4148 @author phopkins@gmail.com (Pete Hopkins)]]>
4149 </doc>
4150 </class>
4151 <!-- end class com.google.inject.grapher.InjectorGrapher -->
4152 <!-- start interface com.google.inject.grapher.InterfaceNode -->
4153 <interface name="InterfaceNode" abstract="true"
4154 static="false" final="false" visibility="public"
4155 deprecated="not deprecated">
4156 <method name="setKey"
4157 abstract="false" native="false" synchronized="false"
4158 static="false" final="false" visibility="public"
4159 deprecated="not deprecated">
4160 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4161 </method>
4162 <method name="setSource"
4163 abstract="false" native="false" synchronized="false"
4164 static="false" final="false" visibility="public"
4165 deprecated="not deprecated">
4166 <param name="source" type="java.lang.Object"/>
4167 </method>
4168 <doc>
4169 <![CDATA[Node for an interface class that has been bound to an implementation class
4170 or instance. These nodes are basically defined by a {@link Key}.
4171
4172 @see BindingEdge
4173
4174 @author phopkins@gmail.com (Pete Hopkins)
4175
4176 @param <K> The type for node IDs.]]>
4177 </doc>
4178 </interface>
4179 <!-- end interface com.google.inject.grapher.InterfaceNode -->
4180 <!-- start interface com.google.inject.grapher.InterfaceNode.Factory -->
4181 <interface name="InterfaceNode.Factory" abstract="true"
4182 static="true" final="false" visibility="public"
4183 deprecated="not deprecated">
4184 <method name="newInterfaceNode" return="T extends com.google.inject.grapher.InterfaceNode&lt;K&gt;"
4185 abstract="false" native="false" synchronized="false"
4186 static="false" final="false" visibility="public"
4187 deprecated="not deprecated">
4188 <param name="nodeId" type="K"/>
4189 <doc>
4190 <![CDATA[Creates a new {@link InterfaceNode} and adds it to the graph.
4191
4192 @param nodeId ID for the node.
4193 @return The new {@link InterfaceNode} instance.]]>
4194 </doc>
4195 </method>
4196 <doc>
4197 <![CDATA[Factory interface for {@link InterfaceNode}s. Renderer implementations
4198 will need to provide an implementation for this.
4199
4200 @param <K> The type for node IDs.
4201 @param <T> The {@link InterfaceNode} sub-type that this factory provides.]]>
4202 </doc>
4203 </interface>
4204 <!-- end interface com.google.inject.grapher.InterfaceNode.Factory -->
4205 <!-- start interface com.google.inject.grapher.NameFactory -->
4206 <interface name="NameFactory" abstract="true"
4207 static="false" final="false" visibility="public"
4208 deprecated="not deprecated">
4209 <method name="getMemberName" return="java.lang.String"
4210 abstract="false" native="false" synchronized="false"
4211 static="false" final="false" visibility="public"
4212 deprecated="not deprecated">
4213 <param name="member" type="java.lang.reflect.Member"/>
4214 </method>
4215 <method name="getClassName" return="java.lang.String"
4216 abstract="false" native="false" synchronized="false"
4217 static="false" final="false" visibility="public"
4218 deprecated="not deprecated">
4219 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4220 </method>
4221 <method name="getInstanceName" return="java.lang.String"
4222 abstract="false" native="false" synchronized="false"
4223 static="false" final="false" visibility="public"
4224 deprecated="not deprecated">
4225 <param name="instance" type="java.lang.Object"/>
4226 </method>
4227 <method name="getAnnotationName" return="java.lang.String"
4228 abstract="false" native="false" synchronized="false"
4229 static="false" final="false" visibility="public"
4230 deprecated="not deprecated">
4231 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4232 </method>
4233 <method name="getSourceName" return="java.lang.String"
4234 abstract="false" native="false" synchronized="false"
4235 static="false" final="false" visibility="public"
4236 deprecated="not deprecated">
4237 <param name="source" type="java.lang.Object"/>
4238 </method>
4239 <doc>
4240 <![CDATA[Interface for a service that provides nice {@link String}s that we can
4241 display in the graph for the types that come up in {@link Binding}s.
4242
4243 @author phopkins@gmail.com (Pete Hopkins)]]>
4244 </doc>
4245 </interface>
4246 <!-- end interface com.google.inject.grapher.NameFactory -->
4247 <!-- start interface com.google.inject.grapher.NodeAliasFactory -->
4248 <interface name="NodeAliasFactory" abstract="true"
4249 static="false" final="false" visibility="public"
4250 deprecated="not deprecated">
4251 <method name="newAlias"
4252 abstract="false" native="false" synchronized="false"
4253 static="false" final="false" visibility="public"
4254 deprecated="not deprecated">
4255 <param name="fromId" type="K"/>
4256 <param name="toId" type="K"/>
4257 <doc>
4258 <![CDATA[Makes edges that would point to {@code fromId} point to
4259 {@code toId} instead.]]>
4260 </doc>
4261 </method>
4262 <doc>
4263 <![CDATA[Factory for aliasing one node ID to another. Used when we don't want to
4264 render {@link Key}s from {@link Binding}s that are not interesting.
4265
4266 @author phopkins@gmail.com (Pete Hopkins)]]>
4267 </doc>
4268 </interface>
4269 <!-- end interface com.google.inject.grapher.NodeAliasFactory -->
4270 <!-- start interface com.google.inject.grapher.NodeIdFactory -->
4271 <interface name="NodeIdFactory" abstract="true"
4272 static="false" final="false" visibility="public"
4273 deprecated="not deprecated">
4274 <method name="getClassNodeId" return="K"
4275 abstract="false" native="false" synchronized="false"
4276 static="false" final="false" visibility="public"
4277 deprecated="not deprecated">
4278 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4279 </method>
4280 <method name="getInstanceNodeId" return="K"
4281 abstract="false" native="false" synchronized="false"
4282 static="false" final="false" visibility="public"
4283 deprecated="not deprecated">
4284 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4285 </method>
4286 <doc>
4287 <![CDATA[Factory for abstract identifiers for elements on the graph. Most graph nodes
4288 will correspond directly to {@link Key}s, but we do this for additional
4289 flexibility and because instances do not have separate {@link Key}s from the
4290 interfaces they are bound to.
4291 <p>
4292 Node IDs are treated as opaque values by {@link GraphingVisitor} and the
4293 other classes in this package.
4294
4295 @author phopkins@gmail.com (Pete Hopkins)
4296
4297 @param <K> The type for node IDs.]]>
4298 </doc>
4299 </interface>
4300 <!-- end interface com.google.inject.grapher.NodeIdFactory -->
4301 <!-- start interface com.google.inject.grapher.Renderer -->
4302 <interface name="Renderer" abstract="true"
4303 static="false" final="false" visibility="public"
4304 deprecated="not deprecated">
4305 <method name="render"
4306 abstract="false" native="false" synchronized="false"
4307 static="false" final="false" visibility="public"
4308 deprecated="not deprecated">
4309 <exception name="IOException" type="java.io.IOException"/>
4310 </method>
4311 <doc>
4312 <![CDATA[Interface for the service that renders the graph. It is assumed that the
4313 implementations for {@link BindingEdge.Factory},
4314 {@link ImplementationNode.Factory}, etc. will have direct access to the
4315 internals of the {@link Renderer} implementation, so the only external
4316 interface needed is the {@link #render()} call that {@link InjectorGrapher}
4317 calls when it's done.
4318
4319 @author phopkins@gmail.com (Pete Hopkins)]]>
4320 </doc>
4321 </interface>
4322 <!-- end interface com.google.inject.grapher.Renderer -->
4323 <!-- start class com.google.inject.grapher.ShortNameFactory -->
4324 <class name="ShortNameFactory" extends="java.lang.Object"
4325 abstract="false"
4326 static="false" final="false" visibility="public"
4327 deprecated="not deprecated">
4328 <implements name="com.google.inject.grapher.NameFactory"/>
4329 <constructor name="ShortNameFactory"
4330 static="false" final="false" visibility="public"
4331 deprecated="not deprecated">
4332 </constructor>
4333 <method name="getMemberName" return="java.lang.String"
4334 abstract="false" native="false" synchronized="false"
4335 static="false" final="false" visibility="public"
4336 deprecated="not deprecated">
4337 <param name="member" type="java.lang.reflect.Member"/>
4338 </method>
4339 <method name="getAnnotationName" return="java.lang.String"
4340 abstract="false" native="false" synchronized="false"
4341 static="false" final="false" visibility="public"
4342 deprecated="not deprecated">
4343 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4344 </method>
4345 <method name="getClassName" return="java.lang.String"
4346 abstract="false" native="false" synchronized="false"
4347 static="false" final="false" visibility="public"
4348 deprecated="not deprecated">
4349 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4350 </method>
4351 <method name="getInstanceName" return="java.lang.String"
4352 abstract="false" native="false" synchronized="false"
4353 static="false" final="false" visibility="public"
4354 deprecated="not deprecated">
4355 <param name="instance" type="java.lang.Object"/>
4356 </method>
4357 <method name="getSourceName" return="java.lang.String"
4358 abstract="false" native="false" synchronized="false"
4359 static="false" final="false" visibility="public"
4360 deprecated="not deprecated">
4361 <param name="source" type="java.lang.Object"/>
4362 <doc>
4363 <![CDATA[Returns a name for a Guice "source" object. This will typically be either
4364 a {@link StackTraceElement} for when the binding is made to the instance,
4365 or a {@link Method} when a provider method is used.]]>
4366 </doc>
4367 </method>
4368 <method name="getFileString" return="java.lang.String"
4369 abstract="false" native="false" synchronized="false"
4370 static="false" final="false" visibility="protected"
4371 deprecated="not deprecated">
4372 <param name="stackTraceElement" type="java.lang.StackTraceElement"/>
4373 </method>
4374 <method name="getMethodString" return="java.lang.String"
4375 abstract="false" native="false" synchronized="false"
4376 static="false" final="false" visibility="protected"
4377 deprecated="not deprecated">
4378 <param name="method" type="java.lang.reflect.Method"/>
4379 </method>
4380 <doc>
4381 <![CDATA[Reasonable implementation for {@link NameFactory}. Mostly takes various
4382 {@link Object#toString()}s and strips package names out of them so that
4383 they'll fit on the graph.
4384
4385 @author phopkins@gmail.com (Pete Hopkins)]]>
4386 </doc>
4387 </class>
4388 <!-- end class com.google.inject.grapher.ShortNameFactory -->
4389 <!-- start class com.google.inject.grapher.StringNodeIdFactory -->
4390 <class name="StringNodeIdFactory" extends="java.lang.Object"
4391 abstract="false"
4392 static="false" final="false" visibility="public"
4393 deprecated="not deprecated">
4394 <implements name="com.google.inject.grapher.NodeIdFactory&lt;java.lang.String&gt;"/>
4395 <constructor name="StringNodeIdFactory"
4396 static="false" final="false" visibility="public"
4397 deprecated="not deprecated">
4398 </constructor>
4399 <method name="getClassNodeId" return="java.lang.String"
4400 abstract="false" native="false" synchronized="false"
4401 static="false" final="false" visibility="public"
4402 deprecated="not deprecated">
4403 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4404 </method>
4405 <method name="getInstanceNodeId" return="java.lang.String"
4406 abstract="false" native="false" synchronized="false"
4407 static="false" final="false" visibility="public"
4408 deprecated="not deprecated">
4409 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
4410 </method>
4411 <doc>
4412 <![CDATA[{@link IdFactory} implementation that for {@link String} node IDs. The IDs
4413 are comprised of letters, numbers and underscores.
4414
4415 @author phopkins@gmail.com (Pete Hopkins)]]>
4416 </doc>
4417 </class>
4418 <!-- end class com.google.inject.grapher.StringNodeIdFactory -->
4419 <!-- start class com.google.inject.grapher.TransitiveDependencyVisitor -->
4420 <class name="TransitiveDependencyVisitor" extends="java.lang.Object"
4421 abstract="false"
4422 static="false" final="false" visibility="public"
4423 deprecated="not deprecated">
4424 <implements name="com.google.inject.spi.BindingTargetVisitor&lt;java.lang.Object, java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;&gt;"/>
4425 <constructor name="TransitiveDependencyVisitor"
4426 static="false" final="false" visibility="public"
4427 deprecated="not deprecated">
4428 </constructor>
4429 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4430 abstract="false" native="false" synchronized="false"
4431 static="false" final="false" visibility="public"
4432 deprecated="not deprecated">
4433 <param name="binding" type="com.google.inject.spi.ConstructorBinding&lt;?&gt;"/>
4434 </method>
4435 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4436 abstract="false" native="false" synchronized="false"
4437 static="false" final="false" visibility="public"
4438 deprecated="not deprecated">
4439 <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding&lt;?&gt;"/>
4440 </method>
4441 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4442 abstract="false" native="false" synchronized="false"
4443 static="false" final="false" visibility="public"
4444 deprecated="not deprecated">
4445 <param name="binding" type="com.google.inject.spi.ExposedBinding&lt;?&gt;"/>
4446 </method>
4447 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4448 abstract="false" native="false" synchronized="false"
4449 static="false" final="false" visibility="public"
4450 deprecated="not deprecated">
4451 <param name="binding" type="com.google.inject.spi.InstanceBinding&lt;?&gt;"/>
4452 </method>
4453 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4454 abstract="false" native="false" synchronized="false"
4455 static="false" final="false" visibility="public"
4456 deprecated="not deprecated">
4457 <param name="binding" type="com.google.inject.spi.LinkedKeyBinding&lt;?&gt;"/>
4458 </method>
4459 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4460 abstract="false" native="false" synchronized="false"
4461 static="false" final="false" visibility="public"
4462 deprecated="not deprecated">
4463 <param name="binding" type="com.google.inject.spi.ProviderBinding&lt;?&gt;"/>
4464 </method>
4465 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4466 abstract="false" native="false" synchronized="false"
4467 static="false" final="false" visibility="public"
4468 deprecated="not deprecated">
4469 <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;?&gt;"/>
4470 </method>
4471 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4472 abstract="false" native="false" synchronized="false"
4473 static="false" final="false" visibility="public"
4474 deprecated="not deprecated">
4475 <param name="binding" type="com.google.inject.spi.ProviderKeyBinding&lt;?&gt;"/>
4476 </method>
4477 <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
4478 abstract="false" native="false" synchronized="false"
4479 static="false" final="false" visibility="public"
4480 deprecated="not deprecated">
4481 <param name="binding" type="com.google.inject.spi.UntargettedBinding&lt;?&gt;"/>
4482 </method>
4483 <doc>
4484 <![CDATA[{@link BindingTargetVisitor} that returns a {@link Collection} of the
4485 {@link Key}s of each {@link Binding}'s dependencies. Used by
4486 {@link InjectorGropher} to walk the dependency graph from a starting set of
4487 {@link Binding}s.
4488
4489 @author phopkins@gmail.com (Pete Hopkins)]]>
4490 </doc>
4491 </class>
4492 <!-- end class com.google.inject.grapher.TransitiveDependencyVisitor -->
4493</package>
4494<package name="com.google.inject.grapher.graphviz">
4495 <!-- start class com.google.inject.grapher.graphviz.ArrowType -->
4496 <class name="ArrowType" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"
4497 abstract="false"
4498 static="false" final="true" visibility="public"
4499 deprecated="not deprecated">
4500 <method name="values" return="com.google.inject.grapher.graphviz.ArrowType[]"
4501 abstract="false" native="false" synchronized="false"
4502 static="true" final="false" visibility="public"
4503 deprecated="not deprecated">
4504 </method>
4505 <method name="valueOf" return="com.google.inject.grapher.graphviz.ArrowType"
4506 abstract="false" native="false" synchronized="false"
4507 static="true" final="false" visibility="public"
4508 deprecated="not deprecated">
4509 <param name="name" type="java.lang.String"/>
4510 </method>
4511 <method name="toString" return="java.lang.String"
4512 abstract="false" native="false" synchronized="false"
4513 static="false" final="false" visibility="public"
4514 deprecated="not deprecated">
4515 </method>
4516 <doc>
4517 <![CDATA[Arrow symbols that are available from Graphviz. These can be composed by
4518 concatenation to make double arrows and such.
4519 <p>
4520 See: http://www.graphviz.org/doc/info/arrows.html
4521
4522 @author phopkins@gmail.com (Pete Hopkins)]]>
4523 </doc>
4524 </class>
4525 <!-- end class com.google.inject.grapher.graphviz.ArrowType -->
4526 <!-- start class com.google.inject.grapher.graphviz.BindingEdgeFactory -->
4527 <class name="BindingEdgeFactory" extends="java.lang.Object"
4528 abstract="false"
4529 static="false" final="false" visibility="public"
4530 deprecated="not deprecated">
4531 <implements name="com.google.inject.grapher.BindingEdge.Factory&lt;java.lang.String, com.google.inject.grapher.BindingEdge&lt;java.lang.String&gt;&gt;"/>
4532 <constructor name="BindingEdgeFactory" type="com.google.inject.grapher.graphviz.GraphvizRenderer"
4533 static="false" final="false" visibility="public"
4534 deprecated="not deprecated">
4535 </constructor>
4536 <method name="newBindingEdge" return="com.google.inject.grapher.BindingEdge&lt;java.lang.String&gt;"
4537 abstract="false" native="false" synchronized="false"
4538 static="false" final="false" visibility="public"
4539 deprecated="not deprecated">
4540 <param name="fromId" type="java.lang.String"/>
4541 <param name="toId" type="java.lang.String"/>
4542 </method>
4543 <method name="newAdaptor" return="com.google.inject.grapher.graphviz.BindingEdgeFactory.GraphvizEdgeAdaptor"
4544 abstract="false" native="false" synchronized="false"
4545 static="false" final="false" visibility="protected"
4546 deprecated="not deprecated">
4547 <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
4548 </method>
4549 <doc>
4550 <![CDATA[Graphviz-specific implementation of {@link BindingEdge.Factory}. Uses a
4551 {@link GraphvizEdgeAdaptor} to delegate to a {@link GraphvizEdge}.
4552
4553 @author phopkins@gmail.com (Pete Hopkins)]]>
4554 </doc>
4555 </class>
4556 <!-- end class com.google.inject.grapher.graphviz.BindingEdgeFactory -->
4557 <!-- start class com.google.inject.grapher.graphviz.BindingEdgeFactory.GraphvizEdgeAdaptor -->
4558 <class name="BindingEdgeFactory.GraphvizEdgeAdaptor" extends="java.lang.Object"
4559 abstract="false"
4560 static="false" final="false" visibility="protected"
4561 deprecated="not deprecated">
4562 <implements name="com.google.inject.grapher.BindingEdge&lt;java.lang.String&gt;"/>
4563 <constructor name="BindingEdgeFactory.GraphvizEdgeAdaptor" type="com.google.inject.grapher.graphviz.GraphvizEdge"
4564 static="false" final="false" visibility="public"
4565 deprecated="not deprecated">
4566 </constructor>
4567 <method name="setType"
4568 abstract="false" native="false" synchronized="false"
4569 static="false" final="false" visibility="public"
4570 deprecated="not deprecated">
4571 <param name="type" type="com.google.inject.grapher.BindingEdge.Type"/>
4572 </method>
4573 <field name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"
4574 transient="false" volatile="false"
4575 static="false" final="true" visibility="protected"
4576 deprecated="not deprecated">
4577 </field>
4578 <doc>
4579 <![CDATA[Adaptor class that converts {@link BindingEdge} methods to display
4580 operations on a {@link GraphvizEdge}.]]>
4581 </doc>
4582 </class>
4583 <!-- end class com.google.inject.grapher.graphviz.BindingEdgeFactory.GraphvizEdgeAdaptor -->
4584 <!-- start class com.google.inject.grapher.graphviz.CompassPoint -->
4585 <class name="CompassPoint" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.CompassPoint&gt;"
4586 abstract="false"
4587 static="false" final="true" visibility="public"
4588 deprecated="not deprecated">
4589 <method name="values" return="com.google.inject.grapher.graphviz.CompassPoint[]"
4590 abstract="false" native="false" synchronized="false"
4591 static="true" final="false" visibility="public"
4592 deprecated="not deprecated">
4593 </method>
4594 <method name="valueOf" return="com.google.inject.grapher.graphviz.CompassPoint"
4595 abstract="false" native="false" synchronized="false"
4596 static="true" final="false" visibility="public"
4597 deprecated="not deprecated">
4598 <param name="name" type="java.lang.String"/>
4599 </method>
4600 <method name="toString" return="java.lang.String"
4601 abstract="false" native="false" synchronized="false"
4602 static="false" final="false" visibility="public"
4603 deprecated="not deprecated">
4604 </method>
4605 <doc>
4606 <![CDATA[Enum for the "compass point" values used to control where edge
4607 end points appear on the graph.
4608 <p>
4609 See: http://www.graphviz.org/doc/info/attrs.html#k:portPos
4610
4611 @author phopkins@gmail.com (Pete Hopkins)]]>
4612 </doc>
4613 </class>
4614 <!-- end class com.google.inject.grapher.graphviz.CompassPoint -->
4615 <!-- start class com.google.inject.grapher.graphviz.DependencyEdgeFactory -->
4616 <class name="DependencyEdgeFactory" extends="java.lang.Object"
4617 abstract="false"
4618 static="false" final="false" visibility="public"
4619 deprecated="not deprecated">
4620 <implements name="com.google.inject.grapher.DependencyEdge.Factory&lt;java.lang.String, com.google.inject.grapher.DependencyEdge&lt;java.lang.String&gt;&gt;"/>
4621 <constructor name="DependencyEdgeFactory" type="com.google.inject.grapher.graphviz.GraphvizRenderer, com.google.inject.grapher.graphviz.PortIdFactory"
4622 static="false" final="false" visibility="public"
4623 deprecated="not deprecated">
4624 </constructor>
4625 <method name="newDependencyEdge" return="com.google.inject.grapher.DependencyEdge&lt;java.lang.String&gt;"
4626 abstract="false" native="false" synchronized="false"
4627 static="false" final="false" visibility="public"
4628 deprecated="not deprecated">
4629 <param name="fromId" type="java.lang.String"/>
4630 <param name="fromPoint" type="com.google.inject.spi.InjectionPoint"/>
4631 <param name="toId" type="java.lang.String"/>
4632 </method>
4633 <method name="newAdaptor" return="com.google.inject.grapher.graphviz.DependencyEdgeFactory.GraphvizEdgeAdaptor"
4634 abstract="false" native="false" synchronized="false"
4635 static="false" final="false" visibility="protected"
4636 deprecated="not deprecated">
4637 <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
4638 </method>
4639 <doc>
4640 <![CDATA[Graphviz-specific implementation of {@link DependencyEdge.Factory}. Uses a
4641 {@link GraphvizEdgeAdaptor} to delegate to a {@link GraphvizEdge}.
4642
4643 @author phopkins@gmail.com (Pete Hopkins)]]>
4644 </doc>
4645 </class>
4646 <!-- end class com.google.inject.grapher.graphviz.DependencyEdgeFactory -->
4647 <!-- start class com.google.inject.grapher.graphviz.DependencyEdgeFactory.GraphvizEdgeAdaptor -->
4648 <class name="DependencyEdgeFactory.GraphvizEdgeAdaptor" extends="java.lang.Object"
4649 abstract="false"
4650 static="false" final="false" visibility="protected"
4651 deprecated="not deprecated">
4652 <implements name="com.google.inject.grapher.DependencyEdge&lt;java.lang.String&gt;"/>
4653 <constructor name="DependencyEdgeFactory.GraphvizEdgeAdaptor" type="com.google.inject.grapher.graphviz.GraphvizEdge"
4654 static="false" final="false" visibility="public"
4655 deprecated="not deprecated">
4656 </constructor>
4657 <field name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"
4658 transient="false" volatile="false"
4659 static="false" final="true" visibility="protected"
4660 deprecated="not deprecated">
4661 </field>
4662 <doc>
4663 <![CDATA[Adaptor class that converts {@link DependencyEdge} methods to display
4664 operations on a {@link GraphvizEdge}.]]>
4665 </doc>
4666 </class>
4667 <!-- end class com.google.inject.grapher.graphviz.DependencyEdgeFactory.GraphvizEdgeAdaptor -->
4668 <!-- start class com.google.inject.grapher.graphviz.EdgeStyle -->
4669 <class name="EdgeStyle" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.EdgeStyle&gt;"
4670 abstract="false"
4671 static="false" final="true" visibility="public"
4672 deprecated="not deprecated">
4673 <method name="values" return="com.google.inject.grapher.graphviz.EdgeStyle[]"
4674 abstract="false" native="false" synchronized="false"
4675 static="true" final="false" visibility="public"
4676 deprecated="not deprecated">
4677 </method>
4678 <method name="valueOf" return="com.google.inject.grapher.graphviz.EdgeStyle"
4679 abstract="false" native="false" synchronized="false"
4680 static="true" final="false" visibility="public"
4681 deprecated="not deprecated">
4682 <param name="name" type="java.lang.String"/>
4683 </method>
4684 <method name="toString" return="java.lang.String"
4685 abstract="false" native="false" synchronized="false"
4686 static="false" final="false" visibility="public"
4687 deprecated="not deprecated">
4688 </method>
4689 <doc>
4690 <![CDATA[Styles for edges.
4691 <p>
4692 See: http://www.graphviz.org/doc/info/attrs.html#k:style
4693
4694 @author phopkins@gmail.com (Pete Hopkins)]]>
4695 </doc>
4696 </class>
4697 <!-- end class com.google.inject.grapher.graphviz.EdgeStyle -->
4698 <!-- start class com.google.inject.grapher.graphviz.GraphvizEdge -->
4699 <class name="GraphvizEdge" extends="java.lang.Object"
4700 abstract="false"
4701 static="false" final="false" visibility="public"
4702 deprecated="not deprecated">
4703 <constructor name="GraphvizEdge" type="java.lang.String, java.lang.String"
4704 static="false" final="false" visibility="public"
4705 deprecated="not deprecated">
4706 </constructor>
4707 <method name="getHeadNodeId" return="java.lang.String"
4708 abstract="false" native="false" synchronized="false"
4709 static="false" final="false" visibility="public"
4710 deprecated="not deprecated">
4711 </method>
4712 <method name="getHeadPortId" return="java.lang.String"
4713 abstract="false" native="false" synchronized="false"
4714 static="false" final="false" visibility="public"
4715 deprecated="not deprecated">
4716 </method>
4717 <method name="setHeadPortId"
4718 abstract="false" native="false" synchronized="false"
4719 static="false" final="false" visibility="public"
4720 deprecated="not deprecated">
4721 <param name="headPortId" type="java.lang.String"/>
4722 </method>
4723 <method name="getHeadCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint"
4724 abstract="false" native="false" synchronized="false"
4725 static="false" final="false" visibility="public"
4726 deprecated="not deprecated">
4727 </method>
4728 <method name="setHeadCompassPoint"
4729 abstract="false" native="false" synchronized="false"
4730 static="false" final="false" visibility="public"
4731 deprecated="not deprecated">
4732 <param name="headCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/>
4733 </method>
4734 <method name="getArrowHead" return="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"
4735 abstract="false" native="false" synchronized="false"
4736 static="false" final="false" visibility="public"
4737 deprecated="not deprecated">
4738 </method>
4739 <method name="setArrowHead"
4740 abstract="false" native="false" synchronized="false"
4741 static="false" final="false" visibility="public"
4742 deprecated="not deprecated">
4743 <param name="arrowHead" type="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"/>
4744 </method>
4745 <method name="getTailNodeId" return="java.lang.String"
4746 abstract="false" native="false" synchronized="false"
4747 static="false" final="false" visibility="public"
4748 deprecated="not deprecated">
4749 </method>
4750 <method name="getTailPortId" return="java.lang.String"
4751 abstract="false" native="false" synchronized="false"
4752 static="false" final="false" visibility="public"
4753 deprecated="not deprecated">
4754 </method>
4755 <method name="setTailPortId"
4756 abstract="false" native="false" synchronized="false"
4757 static="false" final="false" visibility="public"
4758 deprecated="not deprecated">
4759 <param name="tailPortId" type="java.lang.String"/>
4760 </method>
4761 <method name="getTailCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint"
4762 abstract="false" native="false" synchronized="false"
4763 static="false" final="false" visibility="public"
4764 deprecated="not deprecated">
4765 </method>
4766 <method name="setTailCompassPoint"
4767 abstract="false" native="false" synchronized="false"
4768 static="false" final="false" visibility="public"
4769 deprecated="not deprecated">
4770 <param name="tailCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/>
4771 </method>
4772 <method name="getArrowTail" return="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"
4773 abstract="false" native="false" synchronized="false"
4774 static="false" final="false" visibility="public"
4775 deprecated="not deprecated">
4776 </method>
4777 <method name="setArrowTail"
4778 abstract="false" native="false" synchronized="false"
4779 static="false" final="false" visibility="public"
4780 deprecated="not deprecated">
4781 <param name="arrowTail" type="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"/>
4782 </method>
4783 <method name="getStyle" return="com.google.inject.grapher.graphviz.EdgeStyle"
4784 abstract="false" native="false" synchronized="false"
4785 static="false" final="false" visibility="public"
4786 deprecated="not deprecated">
4787 </method>
4788 <method name="setStyle"
4789 abstract="false" native="false" synchronized="false"
4790 static="false" final="false" visibility="public"
4791 deprecated="not deprecated">
4792 <param name="style" type="com.google.inject.grapher.graphviz.EdgeStyle"/>
4793 </method>
4794 <doc>
4795 <![CDATA[Data object to encapsulate the attributes of Graphviz edges that we're
4796 interested in drawing.
4797
4798 @author phopkins@gmail.com (Pete Hopkins)]]>
4799 </doc>
4800 </class>
4801 <!-- end class com.google.inject.grapher.graphviz.GraphvizEdge -->
4802 <!-- start class com.google.inject.grapher.graphviz.GraphvizModule -->
4803 <class name="GraphvizModule" extends="com.google.inject.AbstractModule"
4804 abstract="false"
4805 static="false" final="false" visibility="public"
4806 deprecated="not deprecated">
4807 <constructor name="GraphvizModule"
4808 static="false" final="false" visibility="public"
4809 deprecated="not deprecated">
4810 </constructor>
4811 <method name="configure"
4812 abstract="false" native="false" synchronized="false"
4813 static="false" final="false" visibility="protected"
4814 deprecated="not deprecated">
4815 </method>
4816 <doc>
4817 <![CDATA[Module that provides {@link GraphvizRenderer} as the {@link Renderer} and
4818 binds the other Graphviz factories.
4819
4820 @author phopkins@gmail.com (Pete Hopkins)]]>
4821 </doc>
4822 </class>
4823 <!-- end class com.google.inject.grapher.graphviz.GraphvizModule -->
4824 <!-- start class com.google.inject.grapher.graphviz.GraphvizNode -->
4825 <class name="GraphvizNode" extends="java.lang.Object"
4826 abstract="false"
4827 static="false" final="false" visibility="public"
4828 deprecated="not deprecated">
4829 <constructor name="GraphvizNode" type="java.lang.String"
4830 static="false" final="false" visibility="public"
4831 deprecated="not deprecated">
4832 </constructor>
4833 <method name="getNodeId" return="java.lang.String"
4834 abstract="false" native="false" synchronized="false"
4835 static="false" final="false" visibility="public"
4836 deprecated="not deprecated">
4837 </method>
4838 <method name="getShape" return="com.google.inject.grapher.graphviz.NodeShape"
4839 abstract="false" native="false" synchronized="false"
4840 static="false" final="false" visibility="public"
4841 deprecated="not deprecated">
4842 </method>
4843 <method name="setShape"
4844 abstract="false" native="false" synchronized="false"
4845 static="false" final="false" visibility="public"
4846 deprecated="not deprecated">
4847 <param name="shape" type="com.google.inject.grapher.graphviz.NodeShape"/>
4848 </method>
4849 <method name="getStyle" return="com.google.inject.grapher.graphviz.NodeStyle"
4850 abstract="false" native="false" synchronized="false"
4851 static="false" final="false" visibility="public"
4852 deprecated="not deprecated">
4853 </method>
4854 <method name="setStyle"
4855 abstract="false" native="false" synchronized="false"
4856 static="false" final="false" visibility="public"
4857 deprecated="not deprecated">
4858 <param name="style" type="com.google.inject.grapher.graphviz.NodeStyle"/>
4859 </method>
4860 <method name="getTitle" return="java.lang.String"
4861 abstract="false" native="false" synchronized="false"
4862 static="false" final="false" visibility="public"
4863 deprecated="not deprecated">
4864 </method>
4865 <method name="setTitle"
4866 abstract="false" native="false" synchronized="false"
4867 static="false" final="false" visibility="public"
4868 deprecated="not deprecated">
4869 <param name="title" type="java.lang.String"/>
4870 </method>
4871 <method name="getSubtitles" return="java.util.List&lt;java.lang.String&gt;"
4872 abstract="false" native="false" synchronized="false"
4873 static="false" final="false" visibility="public"
4874 deprecated="not deprecated">
4875 </method>
4876 <method name="addSubtitle"
4877 abstract="false" native="false" synchronized="false"
4878 static="false" final="false" visibility="public"
4879 deprecated="not deprecated">
4880 <param name="position" type="int"/>
4881 <param name="subtitle" type="java.lang.String"/>
4882 </method>
4883 <method name="getHeaderTextColor" return="java.lang.String"
4884 abstract="false" native="false" synchronized="false"
4885 static="false" final="false" visibility="public"
4886 deprecated="not deprecated">
4887 </method>
4888 <method name="setHeaderTextColor"
4889 abstract="false" native="false" synchronized="false"
4890 static="false" final="false" visibility="public"
4891 deprecated="not deprecated">
4892 <param name="headerTextColor" type="java.lang.String"/>
4893 </method>
4894 <method name="getHeaderBackgroundColor" 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="setHeaderBackgroundColor"
4900 abstract="false" native="false" synchronized="false"
4901 static="false" final="false" visibility="public"
4902 deprecated="not deprecated">
4903 <param name="headerBackgroundColor" type="java.lang.String"/>
4904 </method>
4905 <method name="addField"
4906 abstract="false" native="false" synchronized="false"
4907 static="false" final="false" visibility="public"
4908 deprecated="not deprecated">
4909 <param name="portId" type="java.lang.String"/>
4910 <param name="title" type="java.lang.String"/>
4911 </method>
4912 <method name="getFields" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
4913 abstract="false" native="false" synchronized="false"
4914 static="false" final="false" visibility="public"
4915 deprecated="not deprecated">
4916 </method>
4917 <doc>
4918 <![CDATA[Data object to encapsulate the attributes of Graphviz nodes that we're
4919 interested in drawing.
4920
4921 @author phopkins@gmail.com (Pete Hopkins)]]>
4922 </doc>
4923 </class>
4924 <!-- end class com.google.inject.grapher.graphviz.GraphvizNode -->
4925 <!-- start class com.google.inject.grapher.graphviz.GraphvizRenderer -->
4926 <class name="GraphvizRenderer" extends="java.lang.Object"
4927 abstract="false"
4928 static="false" final="false" visibility="public"
4929 deprecated="not deprecated">
4930 <implements name="com.google.inject.grapher.Renderer"/>
4931 <implements name="com.google.inject.grapher.NodeAliasFactory&lt;java.lang.String&gt;"/>
4932 <constructor name="GraphvizRenderer"
4933 static="false" final="false" visibility="public"
4934 deprecated="not deprecated">
4935 </constructor>
4936 <method name="setOut" return="com.google.inject.grapher.graphviz.GraphvizRenderer"
4937 abstract="false" native="false" synchronized="false"
4938 static="false" final="false" visibility="public"
4939 deprecated="not deprecated">
4940 <param name="out" type="java.io.PrintWriter"/>
4941 </method>
4942 <method name="setRankdir" return="com.google.inject.grapher.graphviz.GraphvizRenderer"
4943 abstract="false" native="false" synchronized="false"
4944 static="false" final="false" visibility="public"
4945 deprecated="not deprecated">
4946 <param name="rankdir" type="java.lang.String"/>
4947 </method>
4948 <method name="addNode"
4949 abstract="false" native="false" synchronized="false"
4950 static="false" final="false" visibility="public"
4951 deprecated="not deprecated">
4952 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
4953 </method>
4954 <method name="addEdge"
4955 abstract="false" native="false" synchronized="false"
4956 static="false" final="false" visibility="public"
4957 deprecated="not deprecated">
4958 <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
4959 </method>
4960 <method name="newAlias"
4961 abstract="false" native="false" synchronized="false"
4962 static="false" final="false" visibility="public"
4963 deprecated="not deprecated">
4964 <param name="fromId" type="java.lang.String"/>
4965 <param name="toId" type="java.lang.String"/>
4966 </method>
4967 <method name="resolveAlias" return="java.lang.String"
4968 abstract="false" native="false" synchronized="false"
4969 static="false" final="false" visibility="protected"
4970 deprecated="not deprecated">
4971 <param name="id" type="java.lang.String"/>
4972 </method>
4973 <method name="render"
4974 abstract="false" native="false" synchronized="false"
4975 static="false" final="false" visibility="public"
4976 deprecated="not deprecated">
4977 </method>
4978 <method name="getGraphAttributes" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
4979 abstract="false" native="false" synchronized="false"
4980 static="false" final="false" visibility="protected"
4981 deprecated="not deprecated">
4982 </method>
4983 <method name="start"
4984 abstract="false" native="false" synchronized="false"
4985 static="false" final="false" visibility="protected"
4986 deprecated="not deprecated">
4987 </method>
4988 <method name="finish"
4989 abstract="false" native="false" synchronized="false"
4990 static="false" final="false" visibility="protected"
4991 deprecated="not deprecated">
4992 </method>
4993 <method name="renderNode"
4994 abstract="false" native="false" synchronized="false"
4995 static="false" final="false" visibility="protected"
4996 deprecated="not deprecated">
4997 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
4998 </method>
4999 <method name="getNodeAttributes" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
5000 abstract="false" native="false" synchronized="false"
5001 static="false" final="false" visibility="protected"
5002 deprecated="not deprecated">
5003 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
5004 </method>
5005 <method name="getNodeLabel" return="java.lang.String"
5006 abstract="false" native="false" synchronized="false"
5007 static="false" final="false" visibility="protected"
5008 deprecated="not deprecated">
5009 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
5010 <doc>
5011 <![CDATA[Creates the "label" for a node. This is a string of HTML that defines a
5012 table with a heading at the top and (in the case of
5013 {@link ImplementationNode}s) rows for each of the member fields.]]>
5014 </doc>
5015 </method>
5016 <method name="renderEdge"
5017 abstract="false" native="false" synchronized="false"
5018 static="false" final="false" visibility="protected"
5019 deprecated="not deprecated">
5020 <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
5021 </method>
5022 <method name="getEdgeAttributes" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
5023 abstract="false" native="false" synchronized="false"
5024 static="false" final="false" visibility="protected"
5025 deprecated="not deprecated">
5026 <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
5027 </method>
5028 <method name="getArrowString" return="java.lang.String"
5029 abstract="false" native="false" synchronized="false"
5030 static="false" final="false" visibility="protected"
5031 deprecated="not deprecated">
5032 <param name="arrows" type="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"/>
5033 <doc>
5034 <![CDATA[Turns a {@link List} of {@link ArrowType}s into a {@link String} that
5035 represents combining them. With Graphviz, that just means concatenating
5036 them.]]>
5037 </doc>
5038 </method>
5039 <method name="getEdgeEndPoint" 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="nodeId" type="java.lang.String"/>
5044 <param name="portId" type="java.lang.String"/>
5045 <param name="compassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/>
5046 </method>
5047 <method name="htmlEscape" return="java.lang.String"
5048 abstract="false" native="false" synchronized="false"
5049 static="false" final="false" visibility="protected"
5050 deprecated="not deprecated">
5051 <param name="str" type="java.lang.String"/>
5052 </method>
5053 <doc>
5054 <![CDATA[{@link Renderer} implementation that writes out a Graphviz DOT file of the
5055 graph. Bound in {@link GraphvizModule}.
5056 <p>
5057 Specify the {@link PrintWriter} to output to with
5058 {@link #setOut(PrintWriter)}.
5059
5060 @author phopkins@gmail.com (Pete Hopkins)]]>
5061 </doc>
5062 </class>
5063 <!-- end class com.google.inject.grapher.graphviz.GraphvizRenderer -->
5064 <!-- start class com.google.inject.grapher.graphviz.ImplementationNodeFactory -->
5065 <class name="ImplementationNodeFactory" extends="java.lang.Object"
5066 abstract="false"
5067 static="false" final="false" visibility="public"
5068 deprecated="not deprecated">
5069 <implements name="com.google.inject.grapher.ImplementationNode.Factory&lt;java.lang.String, com.google.inject.grapher.ImplementationNode&lt;java.lang.String&gt;&gt;"/>
5070 <constructor name="ImplementationNodeFactory" type="com.google.inject.grapher.graphviz.GraphvizRenderer, com.google.inject.grapher.NameFactory, com.google.inject.grapher.graphviz.PortIdFactory"
5071 static="false" final="false" visibility="public"
5072 deprecated="not deprecated">
5073 </constructor>
5074 <method name="newImplementationNode" return="com.google.inject.grapher.ImplementationNode&lt;java.lang.String&gt;"
5075 abstract="false" native="false" synchronized="false"
5076 static="false" final="false" visibility="public"
5077 deprecated="not deprecated">
5078 <param name="nodeId" type="java.lang.String"/>
5079 </method>
5080 <method name="newAdaptor" return="com.google.inject.grapher.graphviz.ImplementationNodeFactory.GraphvizNodeAdaptor"
5081 abstract="false" native="false" synchronized="false"
5082 static="false" final="false" visibility="protected"
5083 deprecated="not deprecated">
5084 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
5085 </method>
5086 <doc>
5087 <![CDATA[Graphviz-specific implementation of {@link ImplementationNode.Factory}. Uses
5088 a {@link GraphvizEdgeAdaptor} to delegate to a {@link GraphvizNode}.
5089
5090 @author phopkins@gmail.com (Pete Hopkins)]]>
5091 </doc>
5092 </class>
5093 <!-- end class com.google.inject.grapher.graphviz.ImplementationNodeFactory -->
5094 <!-- start class com.google.inject.grapher.graphviz.ImplementationNodeFactory.GraphvizNodeAdaptor -->
5095 <class name="ImplementationNodeFactory.GraphvizNodeAdaptor" extends="java.lang.Object"
5096 abstract="false"
5097 static="false" final="false" visibility="protected"
5098 deprecated="not deprecated">
5099 <implements name="com.google.inject.grapher.ImplementationNode&lt;java.lang.String&gt;"/>
5100 <constructor name="ImplementationNodeFactory.GraphvizNodeAdaptor" type="com.google.inject.grapher.graphviz.GraphvizNode"
5101 static="false" final="false" visibility="public"
5102 deprecated="not deprecated">
5103 </constructor>
5104 <method name="setClassKey"
5105 abstract="false" native="false" synchronized="false"
5106 static="false" final="false" visibility="public"
5107 deprecated="not deprecated">
5108 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
5109 </method>
5110 <method name="setInstance"
5111 abstract="false" native="false" synchronized="false"
5112 static="false" final="false" visibility="public"
5113 deprecated="not deprecated">
5114 <param name="instance" type="java.lang.Object"/>
5115 </method>
5116 <method name="setSource"
5117 abstract="false" native="false" synchronized="false"
5118 static="false" final="false" visibility="public"
5119 deprecated="not deprecated">
5120 <param name="source" type="java.lang.Object"/>
5121 </method>
5122 <method name="addMember"
5123 abstract="false" native="false" synchronized="false"
5124 static="false" final="false" visibility="public"
5125 deprecated="not deprecated">
5126 <param name="member" type="java.lang.reflect.Member"/>
5127 </method>
5128 <field name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"
5129 transient="false" volatile="false"
5130 static="false" final="true" visibility="protected"
5131 deprecated="not deprecated">
5132 </field>
5133 <doc>
5134 <![CDATA[Adaptor class that converts {@link ImplementationNode} methods to display
5135 operations on a {@link GraphvizNode}.]]>
5136 </doc>
5137 </class>
5138 <!-- end class com.google.inject.grapher.graphviz.ImplementationNodeFactory.GraphvizNodeAdaptor -->
5139 <!-- start class com.google.inject.grapher.graphviz.InterfaceNodeFactory -->
5140 <class name="InterfaceNodeFactory" extends="java.lang.Object"
5141 abstract="false"
5142 static="false" final="false" visibility="public"
5143 deprecated="not deprecated">
5144 <implements name="com.google.inject.grapher.InterfaceNode.Factory&lt;java.lang.String, com.google.inject.grapher.InterfaceNode&lt;java.lang.String&gt;&gt;"/>
5145 <constructor name="InterfaceNodeFactory" type="com.google.inject.grapher.graphviz.GraphvizRenderer, com.google.inject.grapher.NameFactory"
5146 static="false" final="false" visibility="public"
5147 deprecated="not deprecated">
5148 </constructor>
5149 <method name="newInterfaceNode" return="com.google.inject.grapher.InterfaceNode&lt;java.lang.String&gt;"
5150 abstract="false" native="false" synchronized="false"
5151 static="false" final="false" visibility="public"
5152 deprecated="not deprecated">
5153 <param name="nodeId" type="java.lang.String"/>
5154 </method>
5155 <doc>
5156 <![CDATA[Graphviz-specific implementation of {@link InterfaceNode.Factory}. Uses
5157 a {@link GraphvizEdgeAdaptor} to delegate to a {@link GraphvizNode}.
5158
5159 @author phopkins@gmail.com (Pete Hopkins)]]>
5160 </doc>
5161 </class>
5162 <!-- end class com.google.inject.grapher.graphviz.InterfaceNodeFactory -->
5163 <!-- start class com.google.inject.grapher.graphviz.InterfaceNodeFactory.GraphvizNodeAdaptor -->
5164 <class name="InterfaceNodeFactory.GraphvizNodeAdaptor" extends="java.lang.Object"
5165 abstract="false"
5166 static="false" final="false" visibility="protected"
5167 deprecated="not deprecated">
5168 <implements name="com.google.inject.grapher.InterfaceNode&lt;java.lang.String&gt;"/>
5169 <constructor name="InterfaceNodeFactory.GraphvizNodeAdaptor" type="com.google.inject.grapher.graphviz.GraphvizNode"
5170 static="false" final="false" visibility="public"
5171 deprecated="not deprecated">
5172 </constructor>
5173 <method name="setKey"
5174 abstract="false" native="false" synchronized="false"
5175 static="false" final="false" visibility="public"
5176 deprecated="not deprecated">
5177 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
5178 </method>
5179 <method name="setSource"
5180 abstract="false" native="false" synchronized="false"
5181 static="false" final="false" visibility="public"
5182 deprecated="not deprecated">
5183 <param name="source" type="java.lang.Object"/>
5184 </method>
5185 <field name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"
5186 transient="false" volatile="false"
5187 static="false" final="true" visibility="protected"
5188 deprecated="not deprecated">
5189 </field>
5190 <doc>
5191 <![CDATA[Adaptor class that converts {@link InterfaceNode} methods to display
5192 operations on a {@link GraphvizNode}.]]>
5193 </doc>
5194 </class>
5195 <!-- end class com.google.inject.grapher.graphviz.InterfaceNodeFactory.GraphvizNodeAdaptor -->
5196 <!-- start class com.google.inject.grapher.graphviz.NodeShape -->
5197 <class name="NodeShape" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.NodeShape&gt;"
5198 abstract="false"
5199 static="false" final="true" visibility="public"
5200 deprecated="not deprecated">
5201 <method name="values" return="com.google.inject.grapher.graphviz.NodeShape[]"
5202 abstract="false" native="false" synchronized="false"
5203 static="true" final="false" visibility="public"
5204 deprecated="not deprecated">
5205 </method>
5206 <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeShape"
5207 abstract="false" native="false" synchronized="false"
5208 static="true" final="false" visibility="public"
5209 deprecated="not deprecated">
5210 <param name="name" type="java.lang.String"/>
5211 </method>
5212 <method name="toString" return="java.lang.String"
5213 abstract="false" native="false" synchronized="false"
5214 static="false" final="false" visibility="public"
5215 deprecated="not deprecated">
5216 </method>
5217 <doc>
5218 <![CDATA[Enum for the shapes that are most interesting for Guice graphing.
5219 <p>
5220 See: http://www.graphviz.org/doc/info/shapes.html
5221
5222 @author phopkins@gmail.com (Pete Hopkins)]]>
5223 </doc>
5224 </class>
5225 <!-- end class com.google.inject.grapher.graphviz.NodeShape -->
5226 <!-- start class com.google.inject.grapher.graphviz.NodeStyle -->
5227 <class name="NodeStyle" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.NodeStyle&gt;"
5228 abstract="false"
5229 static="false" final="true" visibility="public"
5230 deprecated="not deprecated">
5231 <method name="values" return="com.google.inject.grapher.graphviz.NodeStyle[]"
5232 abstract="false" native="false" synchronized="false"
5233 static="true" final="false" visibility="public"
5234 deprecated="not deprecated">
5235 </method>
5236 <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeStyle"
5237 abstract="false" native="false" synchronized="false"
5238 static="true" final="false" visibility="public"
5239 deprecated="not deprecated">
5240 <param name="name" type="java.lang.String"/>
5241 </method>
5242 <method name="toString" return="java.lang.String"
5243 abstract="false" native="false" synchronized="false"
5244 static="false" final="false" visibility="public"
5245 deprecated="not deprecated">
5246 </method>
5247 <doc>
5248 <![CDATA[Styles for nodes. Similar to {@link EdgeStyle} but with a few more options.
5249 <p>
5250 See: http://www.graphviz.org/doc/info/attrs.html#k:style
5251
5252 @author phopkins@gmail.com (Pete Hopkins)]]>
5253 </doc>
5254 </class>
5255 <!-- end class com.google.inject.grapher.graphviz.NodeStyle -->
5256 <!-- start interface com.google.inject.grapher.graphviz.PortIdFactory -->
5257 <interface name="PortIdFactory" abstract="true"
5258 static="false" final="false" visibility="public"
5259 deprecated="not deprecated">
5260 <method name="getPortId" return="java.lang.String"
5261 abstract="false" native="false" synchronized="false"
5262 static="false" final="false" visibility="public"
5263 deprecated="not deprecated">
5264 <param name="member" type="java.lang.reflect.Member"/>
5265 </method>
5266 <doc>
5267 <![CDATA[Interface for a service that returns Graphviz port IDs, used for naming the
5268 rows in {@link ImplementationNode}-displaying {@link GraphvizNode}s.
5269 Implemented by {@link StringNodeIdFactory}.
5270
5271 @author phopkins@gmail.com (Pete Hopkins)]]>
5272 </doc>
5273 </interface>
5274 <!-- end interface com.google.inject.grapher.graphviz.PortIdFactory -->
5275 <!-- start class com.google.inject.grapher.graphviz.PortIdFactoryImpl -->
5276 <class name="PortIdFactoryImpl" extends="java.lang.Object"
5277 abstract="false"
5278 static="false" final="false" visibility="public"
5279 deprecated="not deprecated">
5280 <implements name="com.google.inject.grapher.graphviz.PortIdFactory"/>
5281 <constructor name="PortIdFactoryImpl"
5282 static="false" final="false" visibility="public"
5283 deprecated="not deprecated">
5284 </constructor>
5285 <method name="getPortId" return="java.lang.String"
5286 abstract="false" native="false" synchronized="false"
5287 static="false" final="false" visibility="public"
5288 deprecated="not deprecated">
5289 <param name="member" type="java.lang.reflect.Member"/>
5290 </method>
5291 <doc>
5292 <![CDATA[Implementation of {@link PortIdFactory}. Bound in {@link GraphvizModule}.
5293
5294 @author phopkins@gmail.com (Pete Hopkins)]]>
5295 </doc>
5296 </class>
5297 <!-- end class com.google.inject.grapher.graphviz.PortIdFactoryImpl -->
5298</package>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00005299<package name="com.google.inject.jndi">
5300 <!-- start class com.google.inject.jndi.JndiIntegration -->
5301 <class name="JndiIntegration" extends="java.lang.Object"
5302 abstract="false"
5303 static="false" final="false" visibility="public"
5304 deprecated="not deprecated">
5305 <method name="fromJndi" return="com.google.inject.Provider&lt;T&gt;"
5306 abstract="false" native="false" synchronized="false"
5307 static="true" final="false" visibility="public"
5308 deprecated="not deprecated">
5309 <param name="type" type="java.lang.Class&lt;T&gt;"/>
5310 <param name="name" type="java.lang.String"/>
5311 <doc>
5312 <![CDATA[Creates a provider which looks up objects in JNDI using the given name.
5313 Example usage:
5314
5315 <pre>
5316 bind(DataSource.class).toProvider(fromJndi(DataSource.class, "java:..."));
5317 </pre>]]>
5318 </doc>
5319 </method>
5320 <doc>
5321 <![CDATA[Integrates Guice with JNDI. Requires a binding to
5322 {@link javax.naming.Context}.
5323
5324 @author crazybob@google.com (Bob Lee)]]>
5325 </doc>
5326 </class>
5327 <!-- end class com.google.inject.jndi.JndiIntegration -->
5328</package>
5329<package name="com.google.inject.matcher">
5330 <!-- start class com.google.inject.matcher.AbstractMatcher -->
5331 <class name="AbstractMatcher" extends="java.lang.Object"
5332 abstract="true"
5333 static="false" final="false" visibility="public"
5334 deprecated="not deprecated">
5335 <implements name="com.google.inject.matcher.Matcher&lt;T&gt;"/>
5336 <constructor name="AbstractMatcher"
5337 static="false" final="false" visibility="public"
5338 deprecated="not deprecated">
5339 </constructor>
5340 <method name="and" return="com.google.inject.matcher.Matcher&lt;T&gt;"
5341 abstract="false" native="false" synchronized="false"
5342 static="false" final="false" visibility="public"
5343 deprecated="not deprecated">
5344 <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
5345 </method>
5346 <method name="or" return="com.google.inject.matcher.Matcher&lt;T&gt;"
5347 abstract="false" native="false" synchronized="false"
5348 static="false" final="false" visibility="public"
5349 deprecated="not deprecated">
5350 <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
5351 </method>
5352 <doc>
5353 <![CDATA[Implements {@code and()} and {@code or()}.
5354
5355 @author crazybob@google.com (Bob Lee)]]>
5356 </doc>
5357 </class>
5358 <!-- end class com.google.inject.matcher.AbstractMatcher -->
5359 <!-- start interface com.google.inject.matcher.Matcher -->
5360 <interface name="Matcher" abstract="true"
5361 static="false" final="false" visibility="public"
5362 deprecated="not deprecated">
5363 <method name="matches" return="boolean"
5364 abstract="false" native="false" synchronized="false"
5365 static="false" final="false" visibility="public"
5366 deprecated="not deprecated">
5367 <param name="t" type="T"/>
5368 <doc>
5369 <![CDATA[Returns {@code true} if this matches {@code t}, {@code false} otherwise.]]>
5370 </doc>
5371 </method>
5372 <method name="and" return="com.google.inject.matcher.Matcher&lt;T&gt;"
5373 abstract="false" native="false" synchronized="false"
5374 static="false" final="false" visibility="public"
5375 deprecated="not deprecated">
5376 <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
5377 <doc>
5378 <![CDATA[Returns a new matcher which returns {@code true} if both this and the
5379 given matcher return {@code true}.]]>
5380 </doc>
5381 </method>
5382 <method name="or" return="com.google.inject.matcher.Matcher&lt;T&gt;"
5383 abstract="false" native="false" synchronized="false"
5384 static="false" final="false" visibility="public"
5385 deprecated="not deprecated">
5386 <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
5387 <doc>
5388 <![CDATA[Returns a new matcher which returns {@code true} if either this or the
5389 given matcher return {@code true}.]]>
5390 </doc>
5391 </method>
5392 <doc>
5393 <![CDATA[Returns {@code true} or {@code false} for a given input.
5394
5395 @author crazybob@google.com (Bob Lee)]]>
5396 </doc>
5397 </interface>
5398 <!-- end interface com.google.inject.matcher.Matcher -->
5399 <!-- start class com.google.inject.matcher.Matchers -->
5400 <class name="Matchers" extends="java.lang.Object"
5401 abstract="false"
5402 static="false" final="false" visibility="public"
5403 deprecated="not deprecated">
5404 <method name="any" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
5405 abstract="false" native="false" synchronized="false"
5406 static="true" final="false" visibility="public"
5407 deprecated="not deprecated">
5408 <doc>
5409 <![CDATA[Returns a matcher which matches any input.]]>
5410 </doc>
5411 </method>
5412 <method name="not" return="com.google.inject.matcher.Matcher&lt;T&gt;"
5413 abstract="false" native="false" synchronized="false"
5414 static="true" final="false" visibility="public"
5415 deprecated="not deprecated">
5416 <param name="p" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
5417 <doc>
5418 <![CDATA[Inverts the given matcher.]]>
5419 </doc>
5420 </method>
5421 <method name="annotatedWith" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.AnnotatedElement&gt;"
5422 abstract="false" native="false" synchronized="false"
5423 static="true" final="false" visibility="public"
5424 deprecated="not deprecated">
5425 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
5426 <doc>
5427 <![CDATA[Returns a matcher which matches elements (methods, classes, etc.)
5428 with a given annotation.]]>
5429 </doc>
5430 </method>
5431 <method name="annotatedWith" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.AnnotatedElement&gt;"
5432 abstract="false" native="false" synchronized="false"
5433 static="true" final="false" visibility="public"
5434 deprecated="not deprecated">
5435 <param name="annotation" type="java.lang.annotation.Annotation"/>
5436 <doc>
5437 <![CDATA[Returns a matcher which matches elements (methods, classes, etc.)
5438 with a given annotation.]]>
5439 </doc>
5440 </method>
5441 <method name="subclassesOf" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
5442 abstract="false" native="false" synchronized="false"
5443 static="true" final="false" visibility="public"
5444 deprecated="not deprecated">
5445 <param name="superclass" type="java.lang.Class&lt;?&gt;"/>
5446 <doc>
5447 <![CDATA[Returns a matcher which matches subclasses of the given type (as well as
5448 the given type).]]>
5449 </doc>
5450 </method>
5451 <method name="only" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
5452 abstract="false" native="false" synchronized="false"
5453 static="true" final="false" visibility="public"
5454 deprecated="not deprecated">
5455 <param name="value" type="java.lang.Object"/>
5456 <doc>
5457 <![CDATA[Returns a matcher which matches objects equal to the given object.]]>
5458 </doc>
5459 </method>
5460 <method name="identicalTo" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
5461 abstract="false" native="false" synchronized="false"
5462 static="true" final="false" visibility="public"
5463 deprecated="not deprecated">
5464 <param name="value" type="java.lang.Object"/>
5465 <doc>
5466 <![CDATA[Returns a matcher which matches only the given object.]]>
5467 </doc>
5468 </method>
5469 <method name="inPackage" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
5470 abstract="false" native="false" synchronized="false"
5471 static="true" final="false" visibility="public"
5472 deprecated="not deprecated">
5473 <param name="targetPackage" type="java.lang.Package"/>
5474 <doc>
5475 <![CDATA[Returns a matcher which matches classes in the given package. Packages are specific to their
5476 classloader, so classes with the same package name may not have the same package at runtime.]]>
5477 </doc>
5478 </method>
5479 <method name="inSubpackage" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
5480 abstract="false" native="false" synchronized="false"
5481 static="true" final="false" visibility="public"
5482 deprecated="not deprecated">
5483 <param name="targetPackageName" type="java.lang.String"/>
5484 <doc>
5485 <![CDATA[Returns a matcher which matches classes in the given package and its subpackages. Unlike
5486 {@link #inPackage(Package) inPackage()}, this matches classes from any classloader.
5487
5488 @since 2.0]]>
5489 </doc>
5490 </method>
5491 <method name="returns" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.Method&gt;"
5492 abstract="false" native="false" synchronized="false"
5493 static="true" final="false" visibility="public"
5494 deprecated="not deprecated">
5495 <param name="returnType" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
5496 <doc>
5497 <![CDATA[Returns a matcher which matches methods with matching return types.]]>
5498 </doc>
5499 </method>
5500 <doc>
5501 <![CDATA[Matcher implementations. Supports matching classes and methods.
5502
5503 @author crazybob@google.com (Bob Lee)]]>
5504 </doc>
5505 </class>
5506 <!-- end class com.google.inject.matcher.Matchers -->
5507</package>
5508<package name="com.google.inject.multibindings">
5509 <!-- start class com.google.inject.multibindings.MapBinder -->
5510 <class name="MapBinder" extends="java.lang.Object"
5511 abstract="true"
5512 static="false" final="false" visibility="public"
5513 deprecated="not deprecated">
5514 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
5515 abstract="false" native="false" synchronized="false"
5516 static="true" final="false" visibility="public"
5517 deprecated="not deprecated">
5518 <param name="binder" type="com.google.inject.Binder"/>
5519 <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
5520 <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
5521 <doc>
5522 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
5523 {@link Map} that is itself bound with no binding annotation.]]>
5524 </doc>
5525 </method>
5526 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
5527 abstract="false" native="false" synchronized="false"
5528 static="true" final="false" visibility="public"
5529 deprecated="not deprecated">
5530 <param name="binder" type="com.google.inject.Binder"/>
5531 <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
5532 <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
5533 <doc>
5534 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
5535 {@link Map} that is itself bound with no binding annotation.]]>
5536 </doc>
5537 </method>
5538 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
5539 abstract="false" native="false" synchronized="false"
5540 static="true" final="false" visibility="public"
5541 deprecated="not deprecated">
5542 <param name="binder" type="com.google.inject.Binder"/>
5543 <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
5544 <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
5545 <param name="annotation" type="java.lang.annotation.Annotation"/>
5546 <doc>
5547 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
5548 {@link Map} that is itself bound with {@code annotation}.]]>
5549 </doc>
5550 </method>
5551 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
5552 abstract="false" native="false" synchronized="false"
5553 static="true" final="false" visibility="public"
5554 deprecated="not deprecated">
5555 <param name="binder" type="com.google.inject.Binder"/>
5556 <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
5557 <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
5558 <param name="annotation" type="java.lang.annotation.Annotation"/>
5559 <doc>
5560 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
5561 {@link Map} that is itself bound with {@code annotation}.]]>
5562 </doc>
5563 </method>
5564 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
5565 abstract="false" native="false" synchronized="false"
5566 static="true" final="false" visibility="public"
5567 deprecated="not deprecated">
5568 <param name="binder" type="com.google.inject.Binder"/>
5569 <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
5570 <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
5571 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
5572 <doc>
5573 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
5574 {@link Map} that is itself bound with {@code annotationType}.]]>
5575 </doc>
5576 </method>
5577 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
5578 abstract="false" native="false" synchronized="false"
5579 static="true" final="false" visibility="public"
5580 deprecated="not deprecated">
5581 <param name="binder" type="com.google.inject.Binder"/>
5582 <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
5583 <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
5584 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
5585 <doc>
5586 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
5587 {@link Map} that is itself bound with {@code annotationType}.]]>
5588 </doc>
5589 </method>
5590 <method name="permitDuplicates" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
5591 abstract="true" native="false" synchronized="false"
5592 static="false" final="false" visibility="public"
5593 deprecated="not deprecated">
5594 <doc>
5595 <![CDATA[Configures the {@code MapBinder} to handle duplicate entries.
5596 <p>When multiple equal keys are bound, the value that gets included in the map is
5597 arbitrary.
5598 <p>In addition to the {@code Map<K, V>} and {@code Map<K, Provider<V>>}
5599 maps that are normally bound, a {@code Map<K, Set<V>>} and
5600 {@code Map<K, Set<Provider<V>>>} are <em>also</em> bound, which contain
5601 all values bound to each key.
5602 <p>
5603 When multiple modules contribute elements to the map, this configuration
5604 option impacts all of them.
5605
5606 @return this map binder
5607 @since 3.0]]>
5608 </doc>
5609 </method>
5610 <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder&lt;V&gt;"
5611 abstract="true" native="false" synchronized="false"
5612 static="false" final="false" visibility="public"
5613 deprecated="not deprecated">
5614 <param name="key" type="K"/>
5615 <doc>
5616 <![CDATA[Returns a binding builder used to add a new entry in the map. Each
5617 key must be distinct (and non-null). Bound providers will be evaluated each
5618 time the map is injected.
5619
5620 <p>It is an error to call this method without also calling one of the
5621 {@code to} methods on the returned binding builder.
5622
5623 <p>Scoping elements independently is supported. Use the {@code in} method
5624 to specify a binding scope.]]>
5625 </doc>
5626 </method>
5627 <doc>
5628 <![CDATA[An API to bind multiple map entries separately, only to later inject them as
5629 a complete map. MapBinder is intended for use in your application's module:
5630 <pre><code>
5631 public class SnacksModule extends AbstractModule {
5632 protected void configure() {
5633 MapBinder&lt;String, Snack&gt; mapbinder
5634 = MapBinder.newMapBinder(binder(), String.class, Snack.class);
5635 mapbinder.addBinding("twix").toInstance(new Twix());
5636 mapbinder.addBinding("snickers").toProvider(SnickersProvider.class);
5637 mapbinder.addBinding("skittles").to(Skittles.class);
5638 }
5639 }</code></pre>
5640
5641 <p>With this binding, a {@link Map}{@code <String, Snack>} can now be
5642 injected:
5643 <pre><code>
5644 class SnackMachine {
5645 {@literal @}Inject
5646 public SnackMachine(Map&lt;String, Snack&gt; snacks) { ... }
5647 }</code></pre>
5648
5649 <p>In addition to binding {@code Map<K, V>}, a mapbinder will also bind
5650 {@code Map<K, Provider<V>>} for lazy value provision:
5651 <pre><code>
5652 class SnackMachine {
5653 {@literal @}Inject
5654 public SnackMachine(Map&lt;String, Provider&lt;Snack&gt;&gt; snackProviders) { ... }
5655 }</code></pre>
5656
5657 <p>Contributing mapbindings from different modules is supported. For example,
5658 it is okay to have both {@code CandyModule} and {@code ChipsModule} both
5659 create their own {@code MapBinder<String, Snack>}, and to each contribute
5660 bindings to the snacks map. When that map is injected, it will contain
5661 entries from both modules.
5662
5663 <p>The map's iteration order is consistent with the binding order. This is
5664 convenient when multiple elements are contributed by the same module because
5665 that module can order its bindings appropriately. Avoid relying on the
5666 iteration order of elements contributed by different modules, since there is
5667 no equivalent mechanism to order modules.
5668
5669 <p>The map is unmodifiable. Elements can only be added to the map by
5670 configuring the MapBinder. Elements can never be removed from the map.
5671
5672 <p>Values are resolved at map injection time. If a value is bound to a
5673 provider, that provider's get method will be called each time the map is
5674 injected (unless the binding is also scoped, or a map of providers is injected).
5675
5676 <p>Annotations are used to create different maps of the same key/value
5677 type. Each distinct annotation gets its own independent map.
5678
5679 <p><strong>Keys must be distinct.</strong> If the same key is bound more than
5680 once, map injection will fail. However, use {@link #permitDuplicates()} in
5681 order to allow duplicate keys; extra bindings to {@code Map<K, Set<V>>} and
5682 {@code Map<K, Set<Provider<V>>} will be added.
5683
5684 <p><strong>Keys must be non-null.</strong> {@code addBinding(null)} will
5685 throw an unchecked exception.
5686
5687 <p><strong>Values must be non-null to use map injection.</strong> If any
5688 value is null, map injection will fail (although injecting a map of providers
5689 will not).
5690
5691 @author dpb@google.com (David P. Baker)]]>
5692 </doc>
5693 </class>
5694 <!-- end class com.google.inject.multibindings.MapBinder -->
5695 <!-- start interface com.google.inject.multibindings.MapBinderBinding -->
5696 <interface name="MapBinderBinding" abstract="true"
5697 static="false" final="false" visibility="public"
5698 deprecated="not deprecated">
5699 <method name="getMapKey" return="com.google.inject.Key&lt;T&gt;"
5700 abstract="false" native="false" synchronized="false"
5701 static="false" final="false" visibility="public"
5702 deprecated="not deprecated">
5703 <doc>
5704 <![CDATA[Returns the {@link Key} for the map.]]>
5705 </doc>
5706 </method>
5707 <method name="getKeyTypeLiteral" return="com.google.inject.TypeLiteral&lt;?&gt;"
5708 abstract="false" native="false" synchronized="false"
5709 static="false" final="false" visibility="public"
5710 deprecated="not deprecated">
5711 <doc>
5712 <![CDATA[Returns the TypeLiteral describing the keys of the map.
5713 <p>
5714 The TypeLiteral will always match the type Map's generic type. For example, if getMapKey
5715 returns a key of <code>Map&lt;String, Snack></code>, then this will always return a
5716 <code>TypeLiteral&lt;String></code>.]]>
5717 </doc>
5718 </method>
5719 <method name="getValueTypeLiteral" return="com.google.inject.TypeLiteral&lt;?&gt;"
5720 abstract="false" native="false" synchronized="false"
5721 static="false" final="false" visibility="public"
5722 deprecated="not deprecated">
5723 <doc>
5724 <![CDATA[Returns the TypeLiteral describing the values of the map.
5725 <p>
5726 The TypeLiteral will always match the type Map's generic type. For example, if getMapKey
5727 returns a key of <code>Map&lt;String, Snack></code>, then this will always return a
5728 <code>TypeLiteral&lt;Snack></code>.]]>
5729 </doc>
5730 </method>
5731 <method name="getEntries" return="java.util.List&lt;java.util.Map.Entry&lt;?, com.google.inject.Binding&lt;?&gt;&gt;&gt;"
5732 abstract="false" native="false" synchronized="false"
5733 static="false" final="false" visibility="public"
5734 deprecated="not deprecated">
5735 <doc>
5736 <![CDATA[Returns all entries in the Map. The returned list of Map.Entries contains the key and a binding
5737 to the value. Duplicate keys or values will exist as separate Map.Entries in the returned list.
5738 This is only supported on bindings returned from an injector. This will throw
5739 {@link UnsupportedOperationException} if it is called on an element retrieved from
5740 {@link Elements#getElements}.
5741 <p>
5742 The elements will always match the type Map's generic type. For example, if getMapKey returns a
5743 key of <code>Map&lt;String, Snack></code>, then this will always return a list of type
5744 <code>List&lt;Map.Entry&lt;String, Binding&lt;Snack>>></code>.]]>
5745 </doc>
5746 </method>
5747 <method name="permitsDuplicates" return="boolean"
5748 abstract="false" native="false" synchronized="false"
5749 static="false" final="false" visibility="public"
5750 deprecated="not deprecated">
5751 <doc>
5752 <![CDATA[Returns true if the MapBinder permits duplicates. This is only supported on bindings returned
5753 from an injector. This will throw {@link UnsupportedOperationException} if it is called on a
5754 MapBinderBinding retrieved from {@link Elements#getElements}.]]>
5755 </doc>
5756 </method>
5757 <method name="containsElement" return="boolean"
5758 abstract="false" native="false" synchronized="false"
5759 static="false" final="false" visibility="public"
5760 deprecated="not deprecated">
5761 <param name="element" type="com.google.inject.spi.Element"/>
5762 <doc>
5763 <![CDATA[Returns true if this MapBinder contains the given Element in order to build the map or uses the
5764 given Element in order to support building and injecting the map. This will work for
5765 MapBinderBindings retrieved from an injector and {@link Elements#getElements}. Usually this is
5766 only necessary if you are working with elements retrieved from modules (without an Injector),
5767 otherwise {@link #getEntries} and {@link #permitsDuplicates} are better options.
5768 <p>
5769 If you need to introspect the details of the map, such as the keys, values or if it permits
5770 duplicates, it is necessary to pass the elements through an Injector and use
5771 {@link #getEntries()} and {@link #permitsDuplicates()}.]]>
5772 </doc>
5773 </method>
5774 <doc>
5775 <![CDATA[A binding for a MapBinder.
5776 <p>
5777 Although MapBinders may be injected through a variety of generic types (Map&lt;K, V>, Map
5778 &lt;K, Provider&lt;V>>, Map&lt;K, Set&lt;V>>, Map<K, Set&lt;
5779 Provider&lt;V>>, and even Set&lt;Map.Entry&lt;K, Provider&lt;V>>), a
5780 MapBinderBinding exists only on the Binding associated with the Map&lt;K, V> key. Other
5781 bindings can be validated to be derived from this MapBinderBinding using
5782 {@link #containsElement(Element)}.
5783
5784 @param <T> The fully qualified type of the map, including Map. For example:
5785 <code>MapBinderBinding&lt;Map&lt;String, Snack>></code>
5786
5787 @since 3.0
5788 @author sameb@google.com (Sam Berlin)]]>
5789 </doc>
5790 </interface>
5791 <!-- end interface com.google.inject.multibindings.MapBinderBinding -->
5792 <!-- start class com.google.inject.multibindings.Multibinder -->
5793 <class name="Multibinder" extends="java.lang.Object"
5794 abstract="true"
5795 static="false" final="false" visibility="public"
5796 deprecated="not deprecated">
5797 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
5798 abstract="false" native="false" synchronized="false"
5799 static="true" final="false" visibility="public"
5800 deprecated="not deprecated">
5801 <param name="binder" type="com.google.inject.Binder"/>
5802 <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
5803 <doc>
5804 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
5805 itself bound with no binding annotation.]]>
5806 </doc>
5807 </method>
5808 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
5809 abstract="false" native="false" synchronized="false"
5810 static="true" final="false" visibility="public"
5811 deprecated="not deprecated">
5812 <param name="binder" type="com.google.inject.Binder"/>
5813 <param name="type" type="java.lang.Class&lt;T&gt;"/>
5814 <doc>
5815 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
5816 itself bound with no binding annotation.]]>
5817 </doc>
5818 </method>
5819 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
5820 abstract="false" native="false" synchronized="false"
5821 static="true" final="false" visibility="public"
5822 deprecated="not deprecated">
5823 <param name="binder" type="com.google.inject.Binder"/>
5824 <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
5825 <param name="annotation" type="java.lang.annotation.Annotation"/>
5826 <doc>
5827 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
5828 itself bound with {@code annotation}.]]>
5829 </doc>
5830 </method>
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="java.lang.Class&lt;T&gt;"/>
5837 <param name="annotation" type="java.lang.annotation.Annotation"/>
5838 <doc>
5839 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
5840 itself bound with {@code annotation}.]]>
5841 </doc>
5842 </method>
5843 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
5844 abstract="false" native="false" synchronized="false"
5845 static="true" final="false" visibility="public"
5846 deprecated="not deprecated">
5847 <param name="binder" type="com.google.inject.Binder"/>
5848 <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
5849 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
5850 <doc>
5851 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
5852 itself bound with {@code annotationType}.]]>
5853 </doc>
5854 </method>
5855 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
5856 abstract="false" native="false" synchronized="false"
5857 static="true" final="false" visibility="public"
5858 deprecated="not deprecated">
5859 <param name="binder" type="com.google.inject.Binder"/>
5860 <param name="type" type="java.lang.Class&lt;T&gt;"/>
5861 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
5862 <doc>
5863 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
5864 itself bound with {@code annotationType}.]]>
5865 </doc>
5866 </method>
5867 <method name="permitDuplicates" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
5868 abstract="true" native="false" synchronized="false"
5869 static="false" final="false" visibility="public"
5870 deprecated="not deprecated">
5871 <doc>
5872 <![CDATA[Configures the bound set to silently discard duplicate elements. When multiple equal values are
5873 bound, the one that gets included is arbitrary. When multiple modules contribute elements to
5874 the set, this configuration option impacts all of them.
5875
5876 @return this multibinder
5877 @since 3.0]]>
5878 </doc>
5879 </method>
5880 <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
5881 abstract="true" native="false" synchronized="false"
5882 static="false" final="false" visibility="public"
5883 deprecated="not deprecated">
5884 <doc>
5885 <![CDATA[Returns a binding builder used to add a new element in the set. Each
5886 bound element must have a distinct value. Bound providers will be
5887 evaluated each time the set is injected.
5888
5889 <p>It is an error to call this method without also calling one of the
5890 {@code to} methods on the returned binding builder.
5891
5892 <p>Scoping elements independently is supported. Use the {@code in} method
5893 to specify a binding scope.]]>
5894 </doc>
5895 </method>
5896 <doc>
5897 <![CDATA[An API to bind multiple values separately, only to later inject them as a
5898 complete collection. Multibinder is intended for use in your application's
5899 module:
5900 <pre><code>
5901 public class SnacksModule extends AbstractModule {
5902 protected void configure() {
5903 Multibinder&lt;Snack&gt; multibinder
5904 = Multibinder.newSetBinder(binder(), Snack.class);
5905 multibinder.addBinding().toInstance(new Twix());
5906 multibinder.addBinding().toProvider(SnickersProvider.class);
5907 multibinder.addBinding().to(Skittles.class);
5908 }
5909 }</code></pre>
5910
5911 <p>With this binding, a {@link Set}{@code <Snack>} can now be injected:
5912 <pre><code>
5913 class SnackMachine {
5914 {@literal @}Inject
5915 public SnackMachine(Set&lt;Snack&gt; snacks) { ... }
5916 }</code></pre>
5917
5918 <p>Contributing multibindings from different modules is supported. For
5919 example, it is okay to have both {@code CandyModule} and {@code ChipsModule}
5920 to both create their own {@code Multibinder<Snack>}, and to each contribute
5921 bindings to the set of snacks. When that set is injected, it will contain
5922 elements from both modules.
5923
5924 <p>The set's iteration order is consistent with the binding order. This is
5925 convenient when multiple elements are contributed by the same module because
5926 that module can order its bindings appropriately. Avoid relying on the
5927 iteration order of elements contributed by different modules, since there is
5928 no equivalent mechanism to order modules.
5929
5930 <p>The set is unmodifiable. Elements can only be added to the set by
5931 configuring the multibinder. Elements can never be removed from the set.
5932
5933 <p>Elements are resolved at set injection time. If an element is bound to a
5934 provider, that provider's get method will be called each time the set is
5935 injected (unless the binding is also scoped).
5936
5937 <p>Annotations are be used to create different sets of the same element
5938 type. Each distinct annotation gets its own independent collection of
5939 elements.
5940
5941 <p><strong>Elements must be distinct.</strong> If multiple bound elements
5942 have the same value, set injection will fail.
5943
5944 <p><strong>Elements must be non-null.</strong> If any set element is null,
5945 set injection will fail.
5946
5947 @author jessewilson@google.com (Jesse Wilson)]]>
5948 </doc>
5949 </class>
5950 <!-- end class com.google.inject.multibindings.Multibinder -->
5951 <!-- start interface com.google.inject.multibindings.MultibinderBinding -->
5952 <interface name="MultibinderBinding" abstract="true"
5953 static="false" final="false" visibility="public"
5954 deprecated="not deprecated">
5955 <method name="getSetKey" return="com.google.inject.Key&lt;T&gt;"
5956 abstract="false" native="false" synchronized="false"
5957 static="false" final="false" visibility="public"
5958 deprecated="not deprecated">
5959 <doc>
5960 <![CDATA[Returns the key for the set.]]>
5961 </doc>
5962 </method>
5963 <method name="getElementTypeLiteral" return="com.google.inject.TypeLiteral&lt;?&gt;"
5964 abstract="false" native="false" synchronized="false"
5965 static="false" final="false" visibility="public"
5966 deprecated="not deprecated">
5967 <doc>
5968 <![CDATA[Returns the TypeLiteral that describes the type of elements in the set.
5969 <p>
5970 The elements will always match the type Set's generic type. For example, if getSetKey returns a
5971 key of <code>Set&lt;String></code>, then this will always return a
5972 <code>TypeLiteral&lt;String></code>.]]>
5973 </doc>
5974 </method>
5975 <method name="getElements" return="java.util.List&lt;com.google.inject.Binding&lt;?&gt;&gt;"
5976 abstract="false" native="false" synchronized="false"
5977 static="false" final="false" visibility="public"
5978 deprecated="not deprecated">
5979 <doc>
5980 <![CDATA[Returns all bindings that make up the set. This is only supported on bindings returned from an
5981 injector. This will throw {@link UnsupportedOperationException} if it is called on an element
5982 retrieved from {@link Elements#getElements}.
5983 <p>
5984 The elements will always match the type Set's generic type. For example, if getSetKey returns a
5985 key of <code>Set&lt;String></code>, then this will always return a list of type
5986 <code>List&lt;Binding&lt;String>></code>.]]>
5987 </doc>
5988 </method>
5989 <method name="permitsDuplicates" return="boolean"
5990 abstract="false" native="false" synchronized="false"
5991 static="false" final="false" visibility="public"
5992 deprecated="not deprecated">
5993 <doc>
5994 <![CDATA[Returns true if the multibinder permits duplicates. This is only supported on bindings returned
5995 from an injector. This will throw {@link UnsupportedOperationException} if it is called on a
5996 MultibinderBinding retrieved from {@link Elements#getElements}.]]>
5997 </doc>
5998 </method>
5999 <method name="containsElement" return="boolean"
6000 abstract="false" native="false" synchronized="false"
6001 static="false" final="false" visibility="public"
6002 deprecated="not deprecated">
6003 <param name="element" type="com.google.inject.spi.Element"/>
6004 <doc>
6005 <![CDATA[Returns true if this Multibinder uses the given Element. This will be true for bindings that
6006 derive the elements of the set and other bindings that Multibinder uses internally. This will
6007 work for MultibinderBindings retrieved from an injector and {@link Elements#getElements}.
6008 Usually this is only necessary if you are working with elements retrieved from modules (without
6009 an Injector), otherwise {@link #getElements} and {@link #permitsDuplicates} are better options.
6010 <p>
6011 If you need to introspect the details of the set, such as the values or if it permits
6012 duplicates, it is necessary to pass the elements through an Injector and use
6013 {@link #getElements()} and {@link #permitsDuplicates()}.]]>
6014 </doc>
6015 </method>
6016 <doc>
6017 <![CDATA[A binding for a Multibinder.
6018
6019 @param <T> The fully qualified type of the set, including Set. For example:
6020 <code>MultibinderBinding&lt;Set&lt;Boolean>></code>
6021
6022 @since 3.0
6023 @author sameb@google.com (Sam Berlin)]]>
6024 </doc>
6025 </interface>
6026 <!-- end interface com.google.inject.multibindings.MultibinderBinding -->
6027 <!-- start interface com.google.inject.multibindings.MultibindingsTargetVisitor -->
6028 <interface name="MultibindingsTargetVisitor" abstract="true"
6029 static="false" final="false" visibility="public"
6030 deprecated="not deprecated">
6031 <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
6032 <method name="visit" return="V"
6033 abstract="false" native="false" synchronized="false"
6034 static="false" final="false" visibility="public"
6035 deprecated="not deprecated">
6036 <param name="multibinding" type="com.google.inject.multibindings.MultibinderBinding&lt;? extends T&gt;"/>
6037 <doc>
6038 <![CDATA[Visits a binding created through {@link Multibinder}.]]>
6039 </doc>
6040 </method>
6041 <method name="visit" return="V"
6042 abstract="false" native="false" synchronized="false"
6043 static="false" final="false" visibility="public"
6044 deprecated="not deprecated">
6045 <param name="mapbinding" type="com.google.inject.multibindings.MapBinderBinding&lt;? extends T&gt;"/>
6046 <doc>
6047 <![CDATA[Visits a binding created through {@link MapBinder}.]]>
6048 </doc>
6049 </method>
6050 <doc>
6051 <![CDATA[A visitor for the multibinder extension.
6052 <p>
6053 If your {@link BindingTargetVisitor} implements this interface, bindings created by using
6054 {@link Multibinder} or {@link MapBinder} will be visited through this interface.
6055
6056 @since 3.0
6057 @author sameb@google.com (Sam Berlin)]]>
6058 </doc>
6059 </interface>
6060 <!-- end interface com.google.inject.multibindings.MultibindingsTargetVisitor -->
6061</package>
6062<package name="com.google.inject.name">
6063 <!-- start class com.google.inject.name.Named -->
6064 <class name="Named" abstract="true"
6065 static="false" final="false" visibility="public"
6066 deprecated="not deprecated">
6067 <implements name="java.lang.annotation.Annotation"/>
6068 <doc>
6069 <![CDATA[Annotates named things.
6070
6071 @author crazybob@google.com (Bob Lee)]]>
6072 </doc>
6073 </class>
6074 <!-- end class com.google.inject.name.Named -->
6075 <!-- start class com.google.inject.name.Names -->
6076 <class name="Names" extends="java.lang.Object"
6077 abstract="false"
6078 static="false" final="false" visibility="public"
6079 deprecated="not deprecated">
6080 <method name="named" return="com.google.inject.name.Named"
6081 abstract="false" native="false" synchronized="false"
6082 static="true" final="false" visibility="public"
6083 deprecated="not deprecated">
6084 <param name="name" type="java.lang.String"/>
6085 <doc>
6086 <![CDATA[Creates a {@link Named} annotation with {@code name} as the value.]]>
6087 </doc>
6088 </method>
6089 <method name="bindProperties"
6090 abstract="false" native="false" synchronized="false"
6091 static="true" final="false" visibility="public"
6092 deprecated="not deprecated">
6093 <param name="binder" type="com.google.inject.Binder"/>
6094 <param name="properties" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
6095 <doc>
6096 <![CDATA[Creates a constant binding to {@code @Named(key)} for each entry in
6097 {@code properties}.]]>
6098 </doc>
6099 </method>
6100 <method name="bindProperties"
6101 abstract="false" native="false" synchronized="false"
6102 static="true" final="false" visibility="public"
6103 deprecated="not deprecated">
6104 <param name="binder" type="com.google.inject.Binder"/>
6105 <param name="properties" type="java.util.Properties"/>
6106 <doc>
6107 <![CDATA[Creates a constant binding to {@code @Named(key)} for each property. This
6108 method binds all properties including those inherited from
6109 {@link Properties#defaults defaults}.]]>
6110 </doc>
6111 </method>
6112 <doc>
6113 <![CDATA[Utility methods for use with {@code @}{@link Named}.
6114
6115 @author crazybob@google.com (Bob Lee)]]>
6116 </doc>
6117 </class>
6118 <!-- end class com.google.inject.name.Names -->
6119</package>
6120<package name="com.google.inject.persist">
6121 <!-- start class com.google.inject.persist.PersistFilter -->
6122 <class name="PersistFilter" extends="java.lang.Object"
6123 abstract="false"
6124 static="false" final="true" visibility="public"
6125 deprecated="not deprecated">
6126 <constructor name="PersistFilter" type="com.google.inject.persist.UnitOfWork, com.google.inject.persist.PersistService"
6127 static="false" final="false" visibility="public"
6128 deprecated="not deprecated">
6129 </constructor>
6130 <method name="init"
6131 abstract="false" native="false" synchronized="false"
6132 static="false" final="false" visibility="public"
6133 deprecated="not deprecated">
6134 <param name="filterConfig" type="FilterConfig"/>
6135 <exception name="ServletException" type="ServletException"/>
6136 </method>
6137 <method name="destroy"
6138 abstract="false" native="false" synchronized="false"
6139 static="false" final="false" visibility="public"
6140 deprecated="not deprecated">
6141 </method>
6142 <method name="doFilter"
6143 abstract="false" native="false" synchronized="false"
6144 static="false" final="false" visibility="public"
6145 deprecated="not deprecated">
6146 <param name="servletRequest" type="ServletRequest"/>
6147 <param name="servletResponse" type="ServletResponse"/>
6148 <param name="filterChain" type="FilterChain"/>
6149 <exception name="IOException" type="java.io.IOException"/>
6150 <exception name="ServletException" type="ServletException"/>
6151 </method>
6152 <doc>
6153 <![CDATA[Apply this filter to enable the HTTP Request unit of work and to have
6154 guice-persist manage the lifecycle of active units of work.
6155 The filter automatically starts and stops the relevant {@link PersistService}
6156 upon {@link javax.servlet.Filter#init(javax.servlet.FilterConfig)} and
6157 {@link javax.servlet.Filter#destroy()} respectively.
6158
6159 <p> To be able to use the open session-in-view pattern (i.e. work per request),
6160 register this filter <b>once</b> in your Guice {@code ServletModule}. It is
6161 important that you register this filter before any other filter.
6162
6163 For multiple providers, you should register this filter once per provider, inside
6164 a private module for each persist module installed (this must be the same private
6165 module where the specific persist module is itself installed).
6166
6167 <p>
6168 Example configuration:
6169 <pre>{@code
6170 public class MyModule extends ServletModule {
6171 public void configureServlets() {
6172 filter("/*").through(PersistFilter.class);
6173
6174 serve("/index.html").with(MyHtmlServlet.class);
6175 // Etc.
6176 }
6177 }
6178 }</pre>
6179 <p>
6180 This filter is thread safe and allows you to create injectors concurrently
6181 and deploy multiple guice-persist modules within the same injector, or even
6182 multiple injectors with persist modules withing the same JVM or web app.
6183 <p>
6184 This filter requires the Guice Servlet extension.
6185
6186 @author Dhanji R. Prasanna (dhanji@gmail.com)]]>
6187 </doc>
6188 </class>
6189 <!-- end class com.google.inject.persist.PersistFilter -->
6190 <!-- start class com.google.inject.persist.PersistModule -->
6191 <class name="PersistModule" extends="com.google.inject.AbstractModule"
6192 abstract="true"
6193 static="false" final="false" visibility="public"
6194 deprecated="not deprecated">
6195 <constructor name="PersistModule"
6196 static="false" final="false" visibility="public"
6197 deprecated="not deprecated">
6198 </constructor>
6199 <method name="configure"
6200 abstract="false" native="false" synchronized="false"
6201 static="false" final="true" visibility="protected"
6202 deprecated="not deprecated">
6203 </method>
6204 <method name="configurePersistence"
6205 abstract="true" native="false" synchronized="false"
6206 static="false" final="false" visibility="protected"
6207 deprecated="not deprecated">
6208 </method>
6209 <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor"
6210 abstract="true" native="false" synchronized="false"
6211 static="false" final="false" visibility="protected"
6212 deprecated="not deprecated">
6213 </method>
6214 <doc>
6215 <![CDATA[Install this module to add guice-persist library support for JPA persistence
6216 providers.
6217
6218 @author dhanji@gmail.com (Dhanji R. Prasanna)]]>
6219 </doc>
6220 </class>
6221 <!-- end class com.google.inject.persist.PersistModule -->
6222 <!-- start interface com.google.inject.persist.PersistService -->
6223 <interface name="PersistService" abstract="true"
6224 static="false" final="false" visibility="public"
6225 deprecated="not deprecated">
6226 <method name="start"
6227 abstract="false" native="false" synchronized="false"
6228 static="false" final="false" visibility="public"
6229 deprecated="not deprecated">
6230 <doc>
6231 <![CDATA[Starts the underlying persistence engine and makes guice-persist ready for
6232 use. For instance, with JPA, it creates an EntityManagerFactory and may
6233 open connection pools. This method must be called by your code prior to
6234 using any guice-persist or JPA artifacts. If already started,
6235 calling this method does nothing, if already stopped, it also does
6236 nothing.]]>
6237 </doc>
6238 </method>
6239 <method name="stop"
6240 abstract="false" native="false" synchronized="false"
6241 static="false" final="false" visibility="public"
6242 deprecated="not deprecated">
6243 <doc>
6244 <![CDATA[Stops the underlying persistence engine. For instance, with JPA, it
6245 closes the {@code EntityManagerFactory}. If already stopped, calling this
6246 method does nothing. If not yet started, it also does nothing.]]>
6247 </doc>
6248 </method>
6249 <doc>
6250 <![CDATA[Persistence provider service. Use this to manage the overall
6251 startup and stop of the persistence module(s).
6252
6253 TODO(dhanji): Integrate with Service API when appropriate.
6254
6255 @author dhanji@gmail.com (Dhanji R. Prasanna)]]>
6256 </doc>
6257 </interface>
6258 <!-- end interface com.google.inject.persist.PersistService -->
6259 <!-- start class com.google.inject.persist.Transactional -->
6260 <class name="Transactional" abstract="true"
6261 static="false" final="false" visibility="public"
6262 deprecated="not deprecated">
6263 <implements name="java.lang.annotation.Annotation"/>
6264 <doc>
6265 <![CDATA[<p> Any method or class marked with this annotation will be considered for transactionality.
6266 Consult the documentation on http://code.google.com/p/google-guice for detailed semantics.
6267 Marking a method {@code @Transactional} will start a new transaction before the method
6268 executes and commit it after the method returns.
6269 <p>
6270 If the method throws an exception, the transaction will be rolled back <em>unless</em>
6271 you have specifically requested not to in the {@link #ignore()} clause.
6272 <p>
6273 Similarly, the set of exceptions that will trigger a rollback can be defined in
6274 the {@link #rollbackOn()} clause. By default, only unchecked exceptions trigger a
6275 rollback.
6276
6277 @author Dhanji R. Prasanna (dhanji@gmail.com)]]>
6278 </doc>
6279 </class>
6280 <!-- end class com.google.inject.persist.Transactional -->
6281 <!-- start interface com.google.inject.persist.UnitOfWork -->
6282 <interface name="UnitOfWork" abstract="true"
6283 static="false" final="false" visibility="public"
6284 deprecated="not deprecated">
6285 <method name="begin"
6286 abstract="false" native="false" synchronized="false"
6287 static="false" final="false" visibility="public"
6288 deprecated="not deprecated">
6289 <doc>
6290 <![CDATA[Starts a Unit Of Work. Underneath, causes a session to the data layer to be opened. If there
6291 is already one open, the invocation will do nothing. In this way, you can define arbitrary
6292 units-of-work that nest within one another safely.
6293
6294 Transaction semantics are not affected.]]>
6295 </doc>
6296 </method>
6297 <method name="end"
6298 abstract="false" native="false" synchronized="false"
6299 static="false" final="false" visibility="public"
6300 deprecated="not deprecated">
6301 <doc>
6302 <![CDATA[Declares an end to the current Unit of Work. Underneath, causes any open session to the data
6303 layer to close. If there is no Unit of work open, then the call returns silently. You can
6304 safely invoke end() repeatedly.
6305 <p>
6306 Transaction semantics are not affected.]]>
6307 </doc>
6308 </method>
6309 <doc>
6310 <![CDATA[This interface is used to gain manual control over the unit of work. This is mostly to do
6311 work in non-request, non-transactional threads. Or where more fine-grained control over the unit
6312 of work is required. Starting and ending a unit of work directly corresponds to opening and
6313 closing a {@code Session}, {@code EntityManager} or {@code ObjectContainer} respectively.
6314 <p> The
6315 Unit of Work referred to by UnitOfWork will always be local to the calling thread. Be careful to
6316 end() in a finally block. Neither JPA, nor Hibernate supports threadsafe sessions (reasoning
6317 behind thread-locality of Unit of Work semantics).
6318
6319 <ul>
6320 <li>Using UnitOfWork with the PersistFilter inside a request is not recommended.</li>
6321 <li>Using UnitOfWork with session-per-txn strategy is not terribly clever either.</li>
6322 <li>Using UnitOfWork with session-per-request strategy but *outside* a request (i.e. in a
6323 background or bootstrap thread) is probably a good use case.</li>
6324 </ul>
6325
6326 @author Dhanji R. Prasanna (dhanji@gmail com)]]>
6327 </doc>
6328 </interface>
6329 <!-- end interface com.google.inject.persist.UnitOfWork -->
6330</package>
6331<package name="com.google.inject.persist.finder">
6332 <!-- start class com.google.inject.persist.finder.DynamicFinder -->
6333 <class name="DynamicFinder" extends="java.lang.Object"
6334 abstract="false"
6335 static="false" final="true" visibility="public"
6336 deprecated="not deprecated">
6337 <constructor name="DynamicFinder" type="java.lang.reflect.Method"
6338 static="false" final="false" visibility="public"
6339 deprecated="not deprecated">
6340 </constructor>
6341 <method name="from" return="com.google.inject.persist.finder.DynamicFinder"
6342 abstract="false" native="false" synchronized="false"
6343 static="true" final="false" visibility="public"
6344 deprecated="not deprecated">
6345 <param name="method" type="java.lang.reflect.Method"/>
6346 <doc>
6347 <![CDATA[Returns some metadata if the method is annotated {@code @Finder} or null.
6348
6349 @param method a method you want to test as a dynamic finder]]>
6350 </doc>
6351 </method>
6352 <method name="metadata" return="com.google.inject.persist.finder.Finder"
6353 abstract="false" native="false" synchronized="false"
6354 static="false" final="false" visibility="public"
6355 deprecated="not deprecated">
6356 </method>
6357 <doc>
6358 <![CDATA[Utility that helps you introspect dynamic finder methods.
6359
6360 @author dhanji@gmail.com (Dhanji R. Prasanna)]]>
6361 </doc>
6362 </class>
6363 <!-- end class com.google.inject.persist.finder.DynamicFinder -->
6364 <!-- start class com.google.inject.persist.finder.Finder -->
6365 <class name="Finder" abstract="true"
6366 static="false" final="false" visibility="public"
6367 deprecated="not deprecated">
6368 <implements name="java.lang.annotation.Annotation"/>
6369 <doc>
6370 <![CDATA[Marks a method stub as a dynamic finder. The method is intercepted and replaced with the
6371 specified JPAQL query. Provides result auto-boxing and automatic parameter binding.
6372
6373 @author Dhanji R. Prasanna (dhanji@gmail.com)]]>
6374 </doc>
6375 </class>
6376 <!-- end class com.google.inject.persist.finder.Finder -->
6377 <!-- start class com.google.inject.persist.finder.FirstResult -->
6378 <class name="FirstResult" abstract="true"
6379 static="false" final="false" visibility="public"
6380 deprecated="not deprecated">
6381 <implements name="java.lang.annotation.Annotation"/>
6382 <doc>
6383 <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in
6384 the index of the first result in the result set you are interested in.
6385 Useful for paging result sets. Complemented by {@link MaxResults}.
6386
6387 @author Dhanji R. Prasanna (dhanji@gmail.com)]]>
6388 </doc>
6389 </class>
6390 <!-- end class com.google.inject.persist.finder.FirstResult -->
6391 <!-- start class com.google.inject.persist.finder.MaxResults -->
6392 <class name="MaxResults" abstract="true"
6393 static="false" final="false" visibility="public"
6394 deprecated="not deprecated">
6395 <implements name="java.lang.annotation.Annotation"/>
6396 <doc>
6397 <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in
6398 the maximum size of returned result window. Usefule for paging result sets.
6399 Complement of {@link FirstResult}.
6400
6401 @author Dhanji R. Prasanna (dhanji@gmail.com)]]>
6402 </doc>
6403 </class>
6404 <!-- end class com.google.inject.persist.finder.MaxResults -->
6405</package>
6406<package name="com.google.inject.persist.jpa">
6407 <!-- start class com.google.inject.persist.jpa.JpaPersistModule -->
6408 <class name="JpaPersistModule" extends="com.google.inject.persist.PersistModule"
6409 abstract="false"
6410 static="false" final="true" visibility="public"
6411 deprecated="not deprecated">
6412 <constructor name="JpaPersistModule" type="java.lang.String"
6413 static="false" final="false" visibility="public"
6414 deprecated="not deprecated">
6415 </constructor>
6416 <method name="configurePersistence"
6417 abstract="false" native="false" synchronized="false"
6418 static="false" final="false" visibility="protected"
6419 deprecated="not deprecated">
6420 </method>
6421 <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor"
6422 abstract="false" native="false" synchronized="false"
6423 static="false" final="false" visibility="protected"
6424 deprecated="not deprecated">
6425 </method>
6426 <method name="properties" return="com.google.inject.persist.jpa.JpaPersistModule"
6427 abstract="false" native="false" synchronized="false"
6428 static="false" final="false" visibility="public"
6429 deprecated="not deprecated">
6430 <param name="properties" type="java.util.Properties"/>
6431 <doc>
6432 <![CDATA[Configures the JPA persistence provider with a set of properties.
6433
6434 @param properties A set of name value pairs that configure a JPA persistence
6435 provider as per the specification.]]>
6436 </doc>
6437 </method>
6438 <method name="addFinder" return="com.google.inject.persist.jpa.JpaPersistModule"
6439 abstract="false" native="false" synchronized="false"
6440 static="false" final="false" visibility="public"
6441 deprecated="not deprecated">
6442 <param name="iface" type="java.lang.Class&lt;T&gt;"/>
6443 <doc>
6444 <![CDATA[Adds an interface to this module to use as a dynamic finder.
6445
6446 @param iface Any interface type whose methods are all dynamic finders.]]>
6447 </doc>
6448 </method>
6449 <doc>
6450 <![CDATA[JPA provider for guice persist.
6451
6452 @author dhanji@gmail.com (Dhanji R. Prasanna)]]>
6453 </doc>
6454 </class>
6455 <!-- end class com.google.inject.persist.jpa.JpaPersistModule -->
6456</package>
6457<package name="com.google.inject.servlet">
6458 <!-- start class com.google.inject.servlet.GuiceFilter -->
6459 <class name="GuiceFilter" extends="java.lang.Object"
6460 abstract="false"
6461 static="false" final="false" visibility="public"
6462 deprecated="not deprecated">
6463 <constructor name="GuiceFilter"
6464 static="false" final="false" visibility="public"
6465 deprecated="not deprecated">
6466 </constructor>
6467 <method name="doFilter"
6468 abstract="false" native="false" synchronized="false"
6469 static="false" final="false" visibility="public"
6470 deprecated="not deprecated">
6471 <param name="servletRequest" type="ServletRequest"/>
6472 <param name="servletResponse" type="ServletResponse"/>
6473 <param name="filterChain" type="FilterChain"/>
6474 <exception name="IOException" type="java.io.IOException"/>
6475 <exception name="ServletException" type="ServletException"/>
6476 </method>
6477 <method name="init"
6478 abstract="false" native="false" synchronized="false"
6479 static="false" final="false" visibility="public"
6480 deprecated="not deprecated">
6481 <param name="filterConfig" type="FilterConfig"/>
6482 <exception name="ServletException" type="ServletException"/>
6483 </method>
6484 <method name="destroy"
6485 abstract="false" native="false" synchronized="false"
6486 static="false" final="false" visibility="public"
6487 deprecated="not deprecated">
6488 </method>
6489 <doc>
6490 <![CDATA[<p>
6491 Apply this filter in web.xml above all other filters (typically), to all requests where you plan
6492 to use servlet scopes. This is also needed in order to dispatch requests to injectable filters
6493 and servlets:
6494 <pre>
6495 &lt;filter&gt;
6496 &lt;filter-name&gt;guiceFilter&lt;/filter-name&gt;
6497 &lt;filter-class&gt;<b>com.google.inject.servlet.GuiceFilter</b>&lt;/filter-class&gt;
6498 &lt;/filter&gt;
6499
6500 &lt;filter-mapping&gt;
6501 &lt;filter-name&gt;guiceFilter&lt;/filter-name&gt;
6502 &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
6503 &lt;/filter-mapping&gt;
6504 </pre>
6505
6506 This filter must appear before every filter that makes use of Guice injection or servlet
6507 scopes functionality. Typically, you will only register this filter in web.xml and register
6508 any other filters (and servlets) using a {@link ServletModule}.
6509
6510 @author crazybob@google.com (Bob Lee)
6511 @author dhanji@gmail.com (Dhanji R. Prasanna)]]>
6512 </doc>
6513 </class>
6514 <!-- end class com.google.inject.servlet.GuiceFilter -->
6515 <!-- start class com.google.inject.servlet.GuiceServletContextListener -->
6516 <class name="GuiceServletContextListener" extends="java.lang.Object"
6517 abstract="true"
6518 static="false" final="false" visibility="public"
6519 deprecated="not deprecated">
6520 <constructor name="GuiceServletContextListener"
6521 static="false" final="false" visibility="public"
6522 deprecated="not deprecated">
6523 </constructor>
6524 <method name="contextInitialized"
6525 abstract="false" native="false" synchronized="false"
6526 static="false" final="false" visibility="public"
6527 deprecated="not deprecated">
6528 <param name="servletContextEvent" type="ServletContextEvent"/>
6529 </method>
6530 <method name="contextDestroyed"
6531 abstract="false" native="false" synchronized="false"
6532 static="false" final="false" visibility="public"
6533 deprecated="not deprecated">
6534 <param name="servletContextEvent" type="ServletContextEvent"/>
6535 </method>
6536 <method name="getInjector" return="com.google.inject.Injector"
6537 abstract="true" native="false" synchronized="false"
6538 static="false" final="false" visibility="protected"
6539 deprecated="not deprecated">
6540 <doc>
6541 <![CDATA[Override this method to create (or otherwise obtain a reference to) your
6542 injector.]]>
6543 </doc>
6544 </method>
6545 <doc>
6546 <![CDATA[As of Guice 2.0 you can still use (your subclasses of) {@code GuiceServletContextListener}
6547 class as a logical place to create and configure your injector. This will ensure the injector
6548 is created when the web application is deployed.
6549
6550 @author Kevin Bourrillion (kevinb@google.com)
6551 @since 2.0]]>
6552 </doc>
6553 </class>
6554 <!-- end class com.google.inject.servlet.GuiceServletContextListener -->
6555 <!-- start interface com.google.inject.servlet.InstanceFilterBinding -->
6556 <interface name="InstanceFilterBinding" abstract="true"
6557 static="false" final="false" visibility="public"
6558 deprecated="not deprecated">
sberlin@gmail.com251cda62010-12-09 03:27:02 +00006559 <implements name="com.google.inject.servlet.ServletModuleBinding"/>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006560 <method name="getFilterInstance" return="Filter"
6561 abstract="false" native="false" synchronized="false"
6562 static="false" final="false" visibility="public"
6563 deprecated="not deprecated">
6564 <doc>
6565 <![CDATA[Returns the filter instance that will be used.]]>
6566 </doc>
6567 </method>
6568 <doc>
6569 <![CDATA[A binding to a single instance of a filter.
6570
6571 @author sameb@google.com
6572 @since 3.0]]>
6573 </doc>
6574 </interface>
6575 <!-- end interface com.google.inject.servlet.InstanceFilterBinding -->
6576 <!-- start interface com.google.inject.servlet.InstanceServletBinding -->
6577 <interface name="InstanceServletBinding" abstract="true"
6578 static="false" final="false" visibility="public"
6579 deprecated="not deprecated">
sberlin@gmail.com251cda62010-12-09 03:27:02 +00006580 <implements name="com.google.inject.servlet.ServletModuleBinding"/>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006581 <method name="getServletInstance" return="HttpServlet"
6582 abstract="false" native="false" synchronized="false"
6583 static="false" final="false" visibility="public"
6584 deprecated="not deprecated">
6585 <doc>
6586 <![CDATA[Returns the servlet instance that will be used.]]>
6587 </doc>
6588 </method>
6589 <doc>
6590 <![CDATA[A binding to a single instance of a servlet.
6591
6592 @author sameb@google.com
6593 @since 3.0]]>
6594 </doc>
6595 </interface>
6596 <!-- end interface com.google.inject.servlet.InstanceServletBinding -->
6597 <!-- start interface com.google.inject.servlet.LinkedFilterBinding -->
6598 <interface name="LinkedFilterBinding" abstract="true"
6599 static="false" final="false" visibility="public"
6600 deprecated="not deprecated">
sberlin@gmail.com251cda62010-12-09 03:27:02 +00006601 <implements name="com.google.inject.servlet.ServletModuleBinding"/>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006602 <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends Filter&gt;"
6603 abstract="false" native="false" synchronized="false"
6604 static="false" final="false" visibility="public"
6605 deprecated="not deprecated">
6606 <doc>
6607 <![CDATA[Returns the key used to lookup the filter instance.]]>
6608 </doc>
6609 </method>
6610 <doc>
6611 <![CDATA[A linked binding to a filter.
6612
6613 @author sameb@google.com
6614 @since 3.0]]>
6615 </doc>
6616 </interface>
6617 <!-- end interface com.google.inject.servlet.LinkedFilterBinding -->
6618 <!-- start interface com.google.inject.servlet.LinkedServletBinding -->
6619 <interface name="LinkedServletBinding" abstract="true"
6620 static="false" final="false" visibility="public"
6621 deprecated="not deprecated">
sberlin@gmail.com251cda62010-12-09 03:27:02 +00006622 <implements name="com.google.inject.servlet.ServletModuleBinding"/>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006623 <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends HttpServlet&gt;"
6624 abstract="false" native="false" synchronized="false"
6625 static="false" final="false" visibility="public"
6626 deprecated="not deprecated">
6627 <doc>
6628 <![CDATA[Returns the key used to lookup the servlet instance.]]>
6629 </doc>
6630 </method>
6631 <doc>
6632 <![CDATA[A linked binding to a servlet.
6633
6634 @author sameb@google.com
6635 @since 3.0]]>
6636 </doc>
6637 </interface>
6638 <!-- end interface com.google.inject.servlet.LinkedServletBinding -->
6639 <!-- start class com.google.inject.servlet.RequestParameters -->
6640 <class name="RequestParameters" abstract="true"
6641 static="false" final="false" visibility="public"
6642 deprecated="not deprecated">
6643 <implements name="java.lang.annotation.Annotation"/>
6644 <doc>
6645 <![CDATA[Apply this to field or parameters of type {@code Map<String, String[]>}
6646 when you want the HTTP request parameter map to be injected.
6647
6648 @author crazybob@google.com (Bob Lee)]]>
6649 </doc>
6650 </class>
6651 <!-- end class com.google.inject.servlet.RequestParameters -->
6652 <!-- start class com.google.inject.servlet.RequestScoped -->
6653 <class name="RequestScoped" abstract="true"
6654 static="false" final="false" visibility="public"
6655 deprecated="not deprecated">
6656 <implements name="java.lang.annotation.Annotation"/>
6657 <doc>
6658 <![CDATA[Apply this to implementation classes when you want one instance per request.
6659
6660 @author crazybob@google.com (Bob Lee)]]>
6661 </doc>
6662 </class>
6663 <!-- end class com.google.inject.servlet.RequestScoped -->
6664 <!-- start class com.google.inject.servlet.ServletModule -->
6665 <class name="ServletModule" extends="com.google.inject.AbstractModule"
6666 abstract="false"
6667 static="false" final="false" visibility="public"
6668 deprecated="not deprecated">
6669 <constructor name="ServletModule"
6670 static="false" final="false" visibility="public"
6671 deprecated="not deprecated">
6672 </constructor>
6673 <method name="configure"
6674 abstract="false" native="false" synchronized="false"
6675 static="false" final="true" visibility="protected"
6676 deprecated="not deprecated">
6677 </method>
6678 <method name="configureServlets"
6679 abstract="false" native="false" synchronized="false"
6680 static="false" final="false" visibility="protected"
6681 deprecated="not deprecated">
6682 <doc>
6683 <![CDATA[<h3>Servlet Mapping EDSL</h3>
6684
6685 <p> Part of the EDSL builder language for configuring servlets
6686 and filters with guice-servlet. Think of this as an in-code replacement for web.xml.
6687 Filters and servlets are configured here using simple java method calls. Here is a typical
6688 example of registering a filter when creating your Guice injector:
6689
6690 <pre>
6691 Guice.createInjector(..., new ServletModule() {
6692
6693 {@literal @}Override
6694 protected void configureServlets() {
6695 <b>serve("*.html").with(MyServlet.class)</b>
6696 }
6697 }
6698 </pre>
6699
6700 This registers a servlet (subclass of {@code HttpServlet}) called {@code MyServlet} to service
6701 any web pages ending in {@code .html}. You can also use a path-style syntax to register
6702 servlets:
6703
6704 <pre>
6705 <b>serve("/my/*").with(MyServlet.class)</b>
6706 </pre>
6707
6708 Every servlet (or filter) is required to be a singleton. If you cannot annotate the class
6709 directly, you should add a separate {@code bind(..).in(Singleton.class)} rule elsewhere in
6710 your module. Mapping a servlet that is bound under any other scope is an error.
6711
6712 <p>
6713 <h4>Dispatch Order</h4>
6714 You are free to register as many servlets and filters as you like this way. They will
6715 be compared and dispatched in the order in which the filter methods are called:
6716
6717 <pre>
6718
6719 Guice.createInjector(..., new ServletModule() {
6720
6721 {@literal @}Override
6722 protected void configureServlets() {
6723 filter("/*").through(MyFilter.class);
6724 filter("*.css").through(MyCssFilter.class);
6725 filter("*.jpg").through(new MyJpgFilter());
6726 // etc..
6727
6728 serve("*.html").with(MyServlet.class);
6729 serve("/my/*").with(MyServlet.class);
6730 serve("*.jpg").with(new MyServlet());
6731 // etc..
6732 }
6733 }
6734 </pre>
6735 This will traverse down the list of rules in lexical order. For example, a url
6736 "{@code /my/file.js}" (after it runs through the matching filters) will first
6737 be compared against the servlet mapping:
6738
6739 <pre>
6740 serve("*.html").with(MyServlet.class);
6741 </pre>
6742 And failing that, it will descend to the next servlet mapping:
6743
6744 <pre>
6745 serve("/my/*").with(MyServlet.class);
6746 </pre>
6747
6748 Since this rule matches, Guice Servlet will dispatch to {@code MyServlet}. These
6749 two mapping rules can also be written in more compact form using varargs syntax:
6750
6751 <pre>
6752 serve(<b>"*.html", "/my/*"</b>).with(MyServlet.class);
6753 </pre>
6754
6755 This way you can map several URI patterns to the same servlet. A similar syntax is
6756 also available for filter mappings.
6757
6758 <p>
6759 <h4>Regular Expressions</h4>
6760 You can also map servlets (or filters) to URIs using regular expressions:
6761 <pre>
6762 <b>serveRegex("(.)*ajax(.)*").with(MyAjaxServlet.class)</b>
6763 </pre>
6764
6765 This will map any URI containing the text "ajax" in it to {@code MyAjaxServlet}. Such as:
6766 <ul>
6767 <li>http://www.google.com/ajax.html</li>
6768 <li>http://www.google.com/content/ajax/index</li>
6769 <li>http://www.google.com/it/is_totally_ajaxian</li>
6770 </ul>
6771
6772
6773 <h3>Initialization Parameters</h3>
6774
6775 Servlets (and filters) allow you to pass in init params
6776 using the {@code <init-param>} tag in web.xml. You can similarly pass in parameters to
6777 Servlets and filters registered in Guice-servlet using a {@link java.util.Map} of parameter
6778 name/value pairs. For example, to initialize {@code MyServlet} with two parameters
6779 ({@code name="Dhanji", site="google.com"}) you could write:
6780
6781 <pre>
6782 Map&lt;String, String&gt; params = new HashMap&lt;String, String&gt;();
6783 params.put("name", "Dhanji");
6784 params.put("site", "google.com");
6785
6786 ...
6787 serve("/*").with(MyServlet.class, <b>params</b>)
6788 </pre>
6789
6790 <p>
6791 <h3>Binding Keys</h3>
6792
6793 You can also bind keys rather than classes. This lets you hide
6794 implementations with package-local visbility and expose them using
6795 only a Guice module and an annotation:
6796
6797 <pre>
6798 ...
6799 filter("/*").through(<b>Key.get(Filter.class, Fave.class)</b>);
6800 </pre>
6801
6802 Where {@code Filter.class} refers to the Servlet API interface and {@code Fave.class} is a
6803 custom binding annotation. Elsewhere (in one of your own modules) you can bind this
6804 filter's implementation:
6805
6806 <pre>
6807 bind(Filter.class)<b>.annotatedWith(Fave.class)</b>.to(MyFilterImpl.class);
6808 </pre>
6809
6810 See {@link com.google.inject.Binder} for more information on binding syntax.
6811
6812 <p>
6813 <h3>Multiple Modules</h3>
6814
6815 It is sometimes useful to capture servlet and filter mappings from multiple different
6816 modules. This is essential if you want to package and offer drop-in Guice plugins that
6817 provide servlet functionality.
6818
6819 <p>
6820 Guice Servlet allows you to register several instances of {@code ServletModule} to your
6821 injector. The order in which these modules are installed determines the dispatch order
6822 of filters and the precedence order of servlets. For example, if you had two servlet modules,
6823 {@code RpcModule} and {@code WebServiceModule} and they each contained a filter that mapped
6824 to the same URI pattern, {@code "/*"}:
6825
6826 <p>
6827 In {@code RpcModule}:
6828 <pre>
6829 filter("/*").through(RpcFilter.class);
6830 </pre>
6831
6832 In {@code WebServiceModule}:
6833 <pre>
6834 filter("/*").through(WebServiceFilter.class);
6835 </pre>
6836
6837 Then the order in which these filters are dispatched is determined by the order in which
6838 the modules are installed:
6839
6840 <pre>
6841 <b>install(new WebServiceModule());</b>
6842 install(new RpcModule());
6843 </pre>
6844
6845 In the case shown above {@code WebServiceFilter} will run first.
6846
6847 @since 2.0]]>
6848 </doc>
6849 </method>
6850 <method name="filter" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder"
6851 abstract="false" native="false" synchronized="false"
6852 static="false" final="true" visibility="protected"
6853 deprecated="not deprecated">
6854 <param name="urlPattern" type="java.lang.String"/>
6855 <param name="morePatterns" type="java.lang.String[]"/>
6856 <doc>
6857 <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc.
6858 @since 2.0]]>
6859 </doc>
6860 </method>
6861 <method name="filterRegex" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder"
6862 abstract="false" native="false" synchronized="false"
6863 static="false" final="true" visibility="protected"
6864 deprecated="not deprecated">
6865 <param name="regex" type="java.lang.String"/>
6866 <param name="regexes" type="java.lang.String[]"/>
6867 <doc>
6868 <![CDATA[@param regex Any Java-style regular expression.
6869 @since 2.0]]>
6870 </doc>
6871 </method>
6872 <method name="serve" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder"
6873 abstract="false" native="false" synchronized="false"
6874 static="false" final="true" visibility="protected"
6875 deprecated="not deprecated">
6876 <param name="urlPattern" type="java.lang.String"/>
6877 <param name="morePatterns" type="java.lang.String[]"/>
6878 <doc>
6879 <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc.
6880 @since 2.0]]>
6881 </doc>
6882 </method>
6883 <method name="serveRegex" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder"
6884 abstract="false" native="false" synchronized="false"
6885 static="false" final="true" visibility="protected"
6886 deprecated="not deprecated">
6887 <param name="regex" type="java.lang.String"/>
6888 <param name="regexes" type="java.lang.String[]"/>
6889 <doc>
6890 <![CDATA[@param regex Any Java-style regular expression.
6891 @since 2.0]]>
6892 </doc>
6893 </method>
6894 <method name="getServletContext" return="ServletContext"
6895 abstract="false" native="false" synchronized="false"
6896 static="false" final="true" visibility="protected"
6897 deprecated="not deprecated">
6898 <doc>
6899 <![CDATA[This method only works if you are using the {@linkplain GuiceServletContextListener} to
6900 create your injector. Otherwise, it returns null.
6901 @return The current servlet context.
sberlin@gmail.com251cda62010-12-09 03:27:02 +00006902 @since 3.0]]>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00006903 </doc>
6904 </method>
6905 <doc>
6906 <![CDATA[Configures the servlet scopes and creates bindings for the servlet API
6907 objects so you can inject the request, response, session, etc.
6908
6909 <p>
6910 You should subclass this module to register servlets and
6911 filters in the {@link #configureServlets()} method.
6912
6913 @author crazybob@google.com (Bob Lee)
6914 @author dhanji@gmail.com (Dhanji R. Prasanna)]]>
6915 </doc>
6916 </class>
6917 <!-- end class com.google.inject.servlet.ServletModule -->
6918 <!-- start interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder -->
6919 <interface name="ServletModule.FilterKeyBindingBuilder" abstract="true"
6920 static="true" final="false" visibility="public"
6921 deprecated="not deprecated">
6922 <method name="through"
6923 abstract="false" native="false" synchronized="false"
6924 static="false" final="false" visibility="public"
6925 deprecated="not deprecated">
6926 <param name="filterKey" type="java.lang.Class&lt;? extends Filter&gt;"/>
6927 </method>
6928 <method name="through"
6929 abstract="false" native="false" synchronized="false"
6930 static="false" final="false" visibility="public"
6931 deprecated="not deprecated">
6932 <param name="filterKey" type="com.google.inject.Key&lt;? extends Filter&gt;"/>
6933 </method>
6934 <method name="through"
6935 abstract="false" native="false" synchronized="false"
6936 static="false" final="false" visibility="public"
6937 deprecated="not deprecated">
6938 <param name="filter" type="Filter"/>
6939 <doc>
6940 <![CDATA[@since 3.0]]>
6941 </doc>
6942 </method>
6943 <method name="through"
6944 abstract="false" native="false" synchronized="false"
6945 static="false" final="false" visibility="public"
6946 deprecated="not deprecated">
6947 <param name="filterKey" type="java.lang.Class&lt;? extends Filter&gt;"/>
6948 <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
6949 </method>
6950 <method name="through"
6951 abstract="false" native="false" synchronized="false"
6952 static="false" final="false" visibility="public"
6953 deprecated="not deprecated">
6954 <param name="filterKey" type="com.google.inject.Key&lt;? extends Filter&gt;"/>
6955 <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
6956 </method>
6957 <method name="through"
6958 abstract="false" native="false" synchronized="false"
6959 static="false" final="false" visibility="public"
6960 deprecated="not deprecated">
6961 <param name="filter" type="Filter"/>
6962 <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
6963 <doc>
6964 <![CDATA[@since 3.0]]>
6965 </doc>
6966 </method>
6967 <doc>
6968 <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()}
6969
6970 @since 2.0]]>
6971 </doc>
6972 </interface>
6973 <!-- end interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder -->
6974 <!-- start interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder -->
6975 <interface name="ServletModule.ServletKeyBindingBuilder" abstract="true"
6976 static="true" final="false" visibility="public"
6977 deprecated="not deprecated">
6978 <method name="with"
6979 abstract="false" native="false" synchronized="false"
6980 static="false" final="false" visibility="public"
6981 deprecated="not deprecated">
6982 <param name="servletKey" type="java.lang.Class&lt;? extends HttpServlet&gt;"/>
6983 </method>
6984 <method name="with"
6985 abstract="false" native="false" synchronized="false"
6986 static="false" final="false" visibility="public"
6987 deprecated="not deprecated">
6988 <param name="servletKey" type="com.google.inject.Key&lt;? extends HttpServlet&gt;"/>
6989 </method>
6990 <method name="with"
6991 abstract="false" native="false" synchronized="false"
6992 static="false" final="false" visibility="public"
6993 deprecated="not deprecated">
6994 <param name="servlet" type="HttpServlet"/>
6995 <doc>
6996 <![CDATA[@since 3.0]]>
6997 </doc>
6998 </method>
6999 <method name="with"
7000 abstract="false" native="false" synchronized="false"
7001 static="false" final="false" visibility="public"
7002 deprecated="not deprecated">
7003 <param name="servletKey" type="java.lang.Class&lt;? extends HttpServlet&gt;"/>
7004 <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
7005 </method>
7006 <method name="with"
7007 abstract="false" native="false" synchronized="false"
7008 static="false" final="false" visibility="public"
7009 deprecated="not deprecated">
7010 <param name="servletKey" type="com.google.inject.Key&lt;? extends HttpServlet&gt;"/>
7011 <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
7012 </method>
7013 <method name="with"
7014 abstract="false" native="false" synchronized="false"
7015 static="false" final="false" visibility="public"
7016 deprecated="not deprecated">
7017 <param name="servlet" type="HttpServlet"/>
7018 <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
7019 <doc>
7020 <![CDATA[@since 3.0]]>
7021 </doc>
7022 </method>
7023 <doc>
7024 <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()}
7025
7026 @since 2.0]]>
7027 </doc>
7028 </interface>
7029 <!-- end interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder -->
sberlin@gmail.com251cda62010-12-09 03:27:02 +00007030 <!-- start interface com.google.inject.servlet.ServletModuleBinding -->
7031 <interface name="ServletModuleBinding" abstract="true"
7032 static="false" final="false" visibility="public"
7033 deprecated="not deprecated">
7034 <method name="getUriPatternType" return="com.google.inject.servlet.UriPatternType"
7035 abstract="false" native="false" synchronized="false"
7036 static="false" final="false" visibility="public"
7037 deprecated="not deprecated">
7038 <doc>
7039 <![CDATA[Returns the pattern type that this binding was created with.]]>
7040 </doc>
7041 </method>
7042 <method name="getPattern" return="java.lang.String"
7043 abstract="false" native="false" synchronized="false"
7044 static="false" final="false" visibility="public"
7045 deprecated="not deprecated">
7046 <doc>
7047 <![CDATA[Returns the pattern used to match against the binding.]]>
7048 </doc>
7049 </method>
7050 <method name="getInitParams" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
7051 abstract="false" native="false" synchronized="false"
7052 static="false" final="false" visibility="public"
7053 deprecated="not deprecated">
7054 <doc>
7055 <![CDATA[Returns any context params supplied when creating the binding.]]>
7056 </doc>
7057 </method>
7058 <method name="matchesUri" return="boolean"
7059 abstract="false" native="false" synchronized="false"
7060 static="false" final="false" visibility="public"
7061 deprecated="not deprecated">
7062 <param name="uri" type="java.lang.String"/>
7063 <doc>
7064 <![CDATA[Returns true if the given URI will match this binding.]]>
7065 </doc>
7066 </method>
7067 <doc>
7068 <![CDATA[A binding created by {@link ServletModule}.
7069
7070 @author sameb@google.com (Sam Berlin)
7071 @since 3.0]]>
7072 </doc>
7073 </interface>
7074 <!-- end interface com.google.inject.servlet.ServletModuleBinding -->
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007075 <!-- start interface com.google.inject.servlet.ServletModuleTargetVisitor -->
7076 <interface name="ServletModuleTargetVisitor" abstract="true"
7077 static="false" final="false" visibility="public"
7078 deprecated="not deprecated">
7079 <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
7080 <method name="visit" return="V"
7081 abstract="false" native="false" synchronized="false"
7082 static="false" final="false" visibility="public"
7083 deprecated="not deprecated">
7084 <param name="binding" type="com.google.inject.servlet.LinkedFilterBinding"/>
7085 <doc>
7086 <![CDATA[Visits a filter binding created by {@link ServletModule#filter}, where
7087 {@link FilterKeyBindingBuilder#through} is called with a Class or Key.
7088
7089 If multiple patterns were specified, this will be called multiple times.]]>
7090 </doc>
7091 </method>
7092 <method name="visit" return="V"
7093 abstract="false" native="false" synchronized="false"
7094 static="false" final="false" visibility="public"
7095 deprecated="not deprecated">
7096 <param name="binding" type="com.google.inject.servlet.InstanceFilterBinding"/>
7097 <doc>
7098 <![CDATA[Visits a filter binding created by {@link ServletModule#filter} where
7099 {@link FilterKeyBindingBuilder#through} is called with a {@link Filter}.
7100
7101 If multiple patterns were specified, this will be called multiple times.]]>
7102 </doc>
7103 </method>
7104 <method name="visit" return="V"
7105 abstract="false" native="false" synchronized="false"
7106 static="false" final="false" visibility="public"
7107 deprecated="not deprecated">
7108 <param name="binding" type="com.google.inject.servlet.LinkedServletBinding"/>
7109 <doc>
7110 <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where
7111 {@link ServletKeyBindingBuilder#with}, is called with a Class or Key.
7112
7113 If multiple patterns were specified, this will be called multiple times.]]>
7114 </doc>
7115 </method>
7116 <method name="visit" return="V"
7117 abstract="false" native="false" synchronized="false"
7118 static="false" final="false" visibility="public"
7119 deprecated="not deprecated">
7120 <param name="binding" type="com.google.inject.servlet.InstanceServletBinding"/>
7121 <doc>
7122 <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where
7123 {@link ServletKeyBindingBuilder#with}, is called with an {@link HttpServlet}.
7124
7125 If multiple patterns were specified, this will be called multiple times.]]>
7126 </doc>
7127 </method>
7128 <doc>
7129 <![CDATA[A visitor for the servlet extension.
7130
7131 If your {@link BindingTargetVisitor} implements this interface, bindings created by using
7132 {@link ServletModule} will be visited through this interface.
7133
7134 @since 3.0
7135 @author sameb@google.com (Sam Berlin)]]>
7136 </doc>
7137 </interface>
7138 <!-- end interface com.google.inject.servlet.ServletModuleTargetVisitor -->
7139 <!-- start class com.google.inject.servlet.ServletScopes -->
7140 <class name="ServletScopes" extends="java.lang.Object"
7141 abstract="false"
7142 static="false" final="false" visibility="public"
7143 deprecated="not deprecated">
7144 <method name="continueRequest" return="java.util.concurrent.Callable&lt;T&gt;"
7145 abstract="false" native="false" synchronized="false"
7146 static="true" final="false" visibility="public"
7147 deprecated="not deprecated">
7148 <param name="callable" type="java.util.concurrent.Callable&lt;T&gt;"/>
7149 <param name="seedMap" type="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, java.lang.Object&gt;"/>
7150 <doc>
7151 <![CDATA[Wraps the given callable in a contextual callable that "continues" the
7152 HTTP request in another thread. This acts as a way of transporting
7153 request context data from the request processing thread to to worker
7154 threads.
7155 <p>
7156 There are some limitations:
7157 <ul>
7158 <li>Derived objects (i.e. anything marked @RequestScoped will not be
7159 transported.</li>
7160 <li>State changes to the HttpServletRequest after this method is called
7161 will not be seen in the continued thread.</li>
7162 <li>Only the HttpServletRequest, ServletContext and request parameter
7163 map are available in the continued thread. The response and session
7164 are not available.</li>
7165 </ul>
7166
7167 @param callable code to be executed in another thread, which depends on
7168 the request scope.
sberlin@gmail.com251cda62010-12-09 03:27:02 +00007169 @param seedMap the initial set of scoped instances for Guice to seed the
7170 request scope with. To seed a key with null, use {@code null} as
7171 the value.
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007172 @return a callable that will invoke the given callable, making the request
7173 context available to it.
7174 @throws OutOfScopeException if this method is called from a non-request
7175 thread, or if the request has completed.
7176
7177 @since 3.0]]>
7178 </doc>
7179 </method>
7180 <method name="scopeRequest" return="java.util.concurrent.Callable&lt;T&gt;"
7181 abstract="false" native="false" synchronized="false"
7182 static="true" final="false" visibility="public"
7183 deprecated="not deprecated">
7184 <param name="callable" type="java.util.concurrent.Callable&lt;T&gt;"/>
7185 <param name="seedMap" type="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, java.lang.Object&gt;"/>
7186 <doc>
7187 <![CDATA[Scopes the given callable inside a request scope. This is not the same
7188 as the HTTP request scope, but is used if no HTTP request scope is in
7189 progress. In this way, keys can be scoped as @RequestScoped and exist
7190 in non-HTTP requests (for example: RPC requests) as well as in HTTP
7191 request threads.
7192
7193 @param callable code to be executed which depends on the request scope.
7194 Typically in another thread, but not necessarily so.
7195 @param seedMap the initial set of scoped instances for Guice to seed the
sberlin@gmail.com251cda62010-12-09 03:27:02 +00007196 request scope with. To seed a key with null, use {@code null} as
7197 the value.
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007198 @return a callable that when called will run inside the a request scope
7199 that exposes the instances in the {@code seedMap} as scoped keys.
7200 @since 3.0]]>
7201 </doc>
7202 </method>
7203 <field name="REQUEST" type="com.google.inject.Scope"
7204 transient="false" volatile="false"
7205 static="true" final="true" visibility="public"
7206 deprecated="not deprecated">
7207 <doc>
7208 <![CDATA[HTTP servlet request scope.]]>
7209 </doc>
7210 </field>
7211 <field name="SESSION" type="com.google.inject.Scope"
7212 transient="false" volatile="false"
7213 static="true" final="true" visibility="public"
7214 deprecated="not deprecated">
7215 <doc>
7216 <![CDATA[HTTP session scope.]]>
7217 </doc>
7218 </field>
7219 <doc>
7220 <![CDATA[Servlet scopes.
7221
7222 @author crazybob@google.com (Bob Lee)]]>
7223 </doc>
7224 </class>
7225 <!-- end class com.google.inject.servlet.ServletScopes -->
7226 <!-- start class com.google.inject.servlet.SessionScoped -->
7227 <class name="SessionScoped" abstract="true"
7228 static="false" final="false" visibility="public"
7229 deprecated="not deprecated">
7230 <implements name="java.lang.annotation.Annotation"/>
7231 <doc>
7232 <![CDATA[Apply this to implementation classes when you want one instance per session.
7233
7234 @see com.google.inject.Scopes#SINGLETON
7235 @author crazybob@google.com (Bob Lee)]]>
7236 </doc>
7237 </class>
7238 <!-- end class com.google.inject.servlet.SessionScoped -->
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007239 <!-- start class com.google.inject.servlet.UriPatternType -->
7240 <class name="UriPatternType" extends="java.lang.Enum&lt;com.google.inject.servlet.UriPatternType&gt;"
7241 abstract="false"
7242 static="false" final="true" visibility="public"
7243 deprecated="not deprecated">
7244 <method name="values" return="com.google.inject.servlet.UriPatternType[]"
7245 abstract="false" native="false" synchronized="false"
7246 static="true" final="false" visibility="public"
7247 deprecated="not deprecated">
7248 </method>
7249 <method name="valueOf" return="com.google.inject.servlet.UriPatternType"
7250 abstract="false" native="false" synchronized="false"
7251 static="true" final="false" visibility="public"
7252 deprecated="not deprecated">
7253 <param name="name" type="java.lang.String"/>
7254 </method>
7255 <doc>
7256 <![CDATA[An enumeration of the available URI-pattern matching styles
7257
7258 @since 3.0]]>
7259 </doc>
7260 </class>
7261 <!-- end class com.google.inject.servlet.UriPatternType -->
7262</package>
7263<package name="com.google.inject.spi">
7264 <!-- start interface com.google.inject.spi.BindingScopingVisitor -->
7265 <interface name="BindingScopingVisitor" abstract="true"
7266 static="false" final="false" visibility="public"
7267 deprecated="not deprecated">
7268 <method name="visitEagerSingleton" return="V"
7269 abstract="false" native="false" synchronized="false"
7270 static="false" final="false" visibility="public"
7271 deprecated="not deprecated">
7272 <doc>
7273 <![CDATA[Visit an eager singleton or single instance. This scope strategy is found on both module and
7274 injector bindings.]]>
7275 </doc>
7276 </method>
7277 <method name="visitScope" return="V"
7278 abstract="false" native="false" synchronized="false"
7279 static="false" final="false" visibility="public"
7280 deprecated="not deprecated">
7281 <param name="scope" type="com.google.inject.Scope"/>
7282 <doc>
7283 <![CDATA[Visit a scope instance. This scope strategy is found on both module and injector bindings.]]>
7284 </doc>
7285 </method>
7286 <method name="visitScopeAnnotation" return="V"
7287 abstract="false" native="false" synchronized="false"
7288 static="false" final="false" visibility="public"
7289 deprecated="not deprecated">
7290 <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
7291 <doc>
7292 <![CDATA[Visit a scope annotation. This scope strategy is found only on module bindings. The instance
7293 that implements this scope is registered by {@link com.google.inject.Binder#bindScope(Class,
7294 Scope) Binder.bindScope()}.]]>
7295 </doc>
7296 </method>
7297 <method name="visitNoScoping" return="V"
7298 abstract="false" native="false" synchronized="false"
7299 static="false" final="false" visibility="public"
7300 deprecated="not deprecated">
7301 <doc>
7302 <![CDATA[Visit an unspecified or unscoped strategy. On a module, this strategy indicates that the
7303 injector should use scoping annotations to find a scope. On an injector, it indicates that
7304 no scope is applied to the binding. An unscoped binding will behave like a scoped one when it
7305 is linked to a scoped binding.]]>
7306 </doc>
7307 </method>
7308 <doc>
7309 <![CDATA[Visits each of the strategies used to scope an injection.
7310
7311 @param <V> any type to be returned by the visit method. Use {@link Void} with
7312 {@code return null} if no return type is needed.
7313 @since 2.0]]>
7314 </doc>
7315 </interface>
7316 <!-- end interface com.google.inject.spi.BindingScopingVisitor -->
7317 <!-- start interface com.google.inject.spi.BindingTargetVisitor -->
7318 <interface name="BindingTargetVisitor" abstract="true"
7319 static="false" final="false" visibility="public"
7320 deprecated="not deprecated">
7321 <method name="visit" return="V"
7322 abstract="false" native="false" synchronized="false"
7323 static="false" final="false" visibility="public"
7324 deprecated="not deprecated">
7325 <param name="binding" type="com.google.inject.spi.InstanceBinding&lt;? extends T&gt;"/>
7326 <doc>
7327 <![CDATA[Visit a instance binding. The same instance is returned for every injection. This target is
7328 found in both module and injector bindings.]]>
7329 </doc>
7330 </method>
7331 <method name="visit" return="V"
7332 abstract="false" native="false" synchronized="false"
7333 static="false" final="false" visibility="public"
7334 deprecated="not deprecated">
7335 <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends T&gt;"/>
7336 <doc>
7337 <![CDATA[Visit a provider instance binding. The provider's {@code get} method is invoked to resolve
7338 injections. This target is found in both module and injector bindings.]]>
7339 </doc>
7340 </method>
7341 <method name="visit" return="V"
7342 abstract="false" native="false" synchronized="false"
7343 static="false" final="false" visibility="public"
7344 deprecated="not deprecated">
7345 <param name="binding" type="com.google.inject.spi.ProviderKeyBinding&lt;? extends T&gt;"/>
7346 <doc>
7347 <![CDATA[Visit a provider key binding. To resolve injections, the provider key is first resolved, then
7348 that provider's {@code get} method is invoked. This target is found in both module and injector
7349 bindings.]]>
7350 </doc>
7351 </method>
7352 <method name="visit" return="V"
7353 abstract="false" native="false" synchronized="false"
7354 static="false" final="false" visibility="public"
7355 deprecated="not deprecated">
7356 <param name="binding" type="com.google.inject.spi.LinkedKeyBinding&lt;? extends T&gt;"/>
7357 <doc>
7358 <![CDATA[Visit a linked key binding. The other key's binding is used to resolve injections. This
7359 target is found in both module and injector bindings.]]>
7360 </doc>
7361 </method>
7362 <method name="visit" return="V"
7363 abstract="false" native="false" synchronized="false"
7364 static="false" final="false" visibility="public"
7365 deprecated="not deprecated">
7366 <param name="binding" type="com.google.inject.spi.ExposedBinding&lt;? extends T&gt;"/>
7367 <doc>
7368 <![CDATA[Visit a binding to a key exposed from an enclosed private environment. This target is only
7369 found in injector bindings.]]>
7370 </doc>
7371 </method>
7372 <method name="visit" return="V"
7373 abstract="false" native="false" synchronized="false"
7374 static="false" final="false" visibility="public"
7375 deprecated="not deprecated">
7376 <param name="binding" type="com.google.inject.spi.UntargettedBinding&lt;? extends T&gt;"/>
7377 <doc>
7378 <![CDATA[Visit an untargetted binding. This target is found only on module bindings. It indicates
7379 that the injector should use its implicit binding strategies to resolve injections.]]>
7380 </doc>
7381 </method>
7382 <method name="visit" return="V"
7383 abstract="false" native="false" synchronized="false"
7384 static="false" final="false" visibility="public"
7385 deprecated="not deprecated">
7386 <param name="binding" type="com.google.inject.spi.ConstructorBinding&lt;? extends T&gt;"/>
7387 <doc>
7388 <![CDATA[Visit a constructor binding. To resolve injections, an instance is instantiated by invoking
7389 {@code constructor}. This target is found only on injector bindings.]]>
7390 </doc>
7391 </method>
7392 <method name="visit" return="V"
7393 abstract="false" native="false" synchronized="false"
7394 static="false" final="false" visibility="public"
7395 deprecated="not deprecated">
7396 <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding&lt;? extends T&gt;"/>
7397 <doc>
7398 <![CDATA[Visit a binding created from converting a bound instance to a new type. The source binding
7399 has the same binding annotation but a different type. This target is found only on injector
7400 bindings.]]>
7401 </doc>
7402 </method>
7403 <method name="visit" return="V"
7404 abstract="false" native="false" synchronized="false"
7405 static="false" final="false" visibility="public"
7406 deprecated="not deprecated">
7407 <param name="binding" type="com.google.inject.spi.ProviderBinding&lt;? extends T&gt;"/>
7408 <doc>
7409 <![CDATA[Visit a binding to a {@link com.google.inject.Provider} that delegates to the binding for the
7410 provided type. This target is found only on injector bindings.]]>
7411 </doc>
7412 </method>
7413 <doc>
7414 <![CDATA[Visits each of the strategies used to find an instance to satisfy an injection.
7415
7416 @param <V> any type to be returned by the visit method. Use {@link Void} with
7417 {@code return null} if no return type is needed.
7418 @since 2.0]]>
7419 </doc>
7420 </interface>
7421 <!-- end interface com.google.inject.spi.BindingTargetVisitor -->
7422 <!-- start interface com.google.inject.spi.ConstructorBinding -->
7423 <interface name="ConstructorBinding" abstract="true"
7424 static="false" final="false" visibility="public"
7425 deprecated="not deprecated">
7426 <implements name="com.google.inject.Binding&lt;T&gt;"/>
7427 <implements name="com.google.inject.spi.HasDependencies"/>
7428 <method name="getConstructor" return="com.google.inject.spi.InjectionPoint"
7429 abstract="false" native="false" synchronized="false"
7430 static="false" final="false" visibility="public"
7431 deprecated="not deprecated">
7432 <doc>
7433 <![CDATA[Gets the constructor this binding injects.]]>
7434 </doc>
7435 </method>
7436 <method name="getInjectableMembers" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
7437 abstract="false" native="false" synchronized="false"
7438 static="false" final="false" visibility="public"
7439 deprecated="not deprecated">
7440 <doc>
7441 <![CDATA[Returns all instance method and field injection points on {@code type}.
7442
7443 @return a possibly empty set of injection points. The set has a specified iteration order. All
7444 fields are returned and then all methods. Within the fields, supertype fields are returned
7445 before subtype fields. Similarly, supertype methods are returned before subtype methods.]]>
7446 </doc>
7447 </method>
7448 <method name="getMethodInterceptors" return="java.util.Map&lt;java.lang.reflect.Method, java.util.List&lt;org.aopalliance.intercept.MethodInterceptor&gt;&gt;"
7449 abstract="false" native="false" synchronized="false"
7450 static="false" final="false" visibility="public"
7451 deprecated="not deprecated">
7452 <doc>
7453 <![CDATA[Returns the interceptors applied to each method, in the order that they will be applied.
7454
7455 @return a possibly empty map]]>
7456 </doc>
7457 </method>
7458 <doc>
7459 <![CDATA[A binding to the constructor of a concrete clss. To resolve injections, an instance is
7460 instantiated by invoking the constructor.
7461
7462 @author jessewilson@google.com (Jesse Wilson)
7463 @since 2.0]]>
7464 </doc>
7465 </interface>
7466 <!-- end interface com.google.inject.spi.ConstructorBinding -->
7467 <!-- start interface com.google.inject.spi.ConvertedConstantBinding -->
7468 <interface name="ConvertedConstantBinding" abstract="true"
7469 static="false" final="false" visibility="public"
7470 deprecated="not deprecated">
7471 <implements name="com.google.inject.Binding&lt;T&gt;"/>
7472 <implements name="com.google.inject.spi.HasDependencies"/>
7473 <method name="getValue" return="T"
7474 abstract="false" native="false" synchronized="false"
7475 static="false" final="false" visibility="public"
7476 deprecated="not deprecated">
7477 <doc>
7478 <![CDATA[Returns the converted value.]]>
7479 </doc>
7480 </method>
sberlin@gmail.com251cda62010-12-09 03:27:02 +00007481 <method name="getTypeConverterBinding" return="com.google.inject.spi.TypeConverterBinding"
7482 abstract="false" native="false" synchronized="false"
7483 static="false" final="false" visibility="public"
7484 deprecated="not deprecated">
7485 <doc>
7486 <![CDATA[Returns the type converter binding used to convert the constant.
7487
7488 @since 3.0]]>
7489 </doc>
7490 </method>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007491 <method name="getSourceKey" return="com.google.inject.Key&lt;java.lang.String&gt;"
7492 abstract="false" native="false" synchronized="false"
7493 static="false" final="false" visibility="public"
7494 deprecated="not deprecated">
7495 <doc>
7496 <![CDATA[Returns the key for the source binding. That binding can e retrieved from an injector using
7497 {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]>
7498 </doc>
7499 </method>
7500 <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
7501 abstract="false" native="false" synchronized="false"
7502 static="false" final="false" visibility="public"
7503 deprecated="not deprecated">
7504 <doc>
7505 <![CDATA[Returns a singleton set containing only the converted key.]]>
7506 </doc>
7507 </method>
7508 <doc>
7509 <![CDATA[A binding created from converting a bound instance to a new type. The source binding has the same
7510 binding annotation but a different type.
7511
7512 @author jessewilson@google.com (Jesse Wilson)
7513 @since 2.0]]>
7514 </doc>
7515 </interface>
7516 <!-- end interface com.google.inject.spi.ConvertedConstantBinding -->
7517 <!-- start class com.google.inject.spi.DefaultBindingScopingVisitor -->
7518 <class name="DefaultBindingScopingVisitor" extends="java.lang.Object"
7519 abstract="false"
7520 static="false" final="false" visibility="public"
7521 deprecated="not deprecated">
7522 <implements name="com.google.inject.spi.BindingScopingVisitor&lt;V&gt;"/>
7523 <constructor name="DefaultBindingScopingVisitor"
7524 static="false" final="false" visibility="public"
7525 deprecated="not deprecated">
7526 </constructor>
7527 <method name="visitOther" return="V"
7528 abstract="false" native="false" synchronized="false"
7529 static="false" final="false" visibility="protected"
7530 deprecated="not deprecated">
7531 <doc>
7532 <![CDATA[Default visit implementation. Returns {@code null}.]]>
7533 </doc>
7534 </method>
7535 <method name="visitEagerSingleton" return="V"
7536 abstract="false" native="false" synchronized="false"
7537 static="false" final="false" visibility="public"
7538 deprecated="not deprecated">
7539 </method>
7540 <method name="visitScope" return="V"
7541 abstract="false" native="false" synchronized="false"
7542 static="false" final="false" visibility="public"
7543 deprecated="not deprecated">
7544 <param name="scope" type="com.google.inject.Scope"/>
7545 </method>
7546 <method name="visitScopeAnnotation" return="V"
7547 abstract="false" native="false" synchronized="false"
7548 static="false" final="false" visibility="public"
7549 deprecated="not deprecated">
7550 <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
7551 </method>
7552 <method name="visitNoScoping" return="V"
7553 abstract="false" native="false" synchronized="false"
7554 static="false" final="false" visibility="public"
7555 deprecated="not deprecated">
7556 </method>
7557 <doc>
7558 <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to
7559 {@link #visitOther()}, returning its result.
7560
7561 @param <V> any type to be returned by the visit method. Use {@link Void} with
7562 {@code return null} if no return type is needed.
7563
7564 @author jessewilson@google.com (Jesse Wilson)
7565 @since 2.0]]>
7566 </doc>
7567 </class>
7568 <!-- end class com.google.inject.spi.DefaultBindingScopingVisitor -->
7569 <!-- start class com.google.inject.spi.DefaultBindingTargetVisitor -->
7570 <class name="DefaultBindingTargetVisitor" extends="java.lang.Object"
7571 abstract="true"
7572 static="false" final="false" visibility="public"
7573 deprecated="not deprecated">
7574 <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
7575 <constructor name="DefaultBindingTargetVisitor"
7576 static="false" final="false" visibility="public"
7577 deprecated="not deprecated">
7578 </constructor>
7579 <method name="visitOther" return="V"
7580 abstract="false" native="false" synchronized="false"
7581 static="false" final="false" visibility="protected"
7582 deprecated="not deprecated">
7583 <param name="binding" type="com.google.inject.Binding&lt;? extends T&gt;"/>
7584 <doc>
7585 <![CDATA[Default visit implementation. Returns {@code null}.]]>
7586 </doc>
7587 </method>
7588 <method name="visit" return="V"
7589 abstract="false" native="false" synchronized="false"
7590 static="false" final="false" visibility="public"
7591 deprecated="not deprecated">
7592 <param name="instanceBinding" type="com.google.inject.spi.InstanceBinding&lt;? extends T&gt;"/>
7593 </method>
7594 <method name="visit" return="V"
7595 abstract="false" native="false" synchronized="false"
7596 static="false" final="false" visibility="public"
7597 deprecated="not deprecated">
7598 <param name="providerInstanceBinding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends T&gt;"/>
7599 </method>
7600 <method name="visit" return="V"
7601 abstract="false" native="false" synchronized="false"
7602 static="false" final="false" visibility="public"
7603 deprecated="not deprecated">
7604 <param name="providerKeyBinding" type="com.google.inject.spi.ProviderKeyBinding&lt;? extends T&gt;"/>
7605 </method>
7606 <method name="visit" return="V"
7607 abstract="false" native="false" synchronized="false"
7608 static="false" final="false" visibility="public"
7609 deprecated="not deprecated">
7610 <param name="linkedKeyBinding" type="com.google.inject.spi.LinkedKeyBinding&lt;? extends T&gt;"/>
7611 </method>
7612 <method name="visit" return="V"
7613 abstract="false" native="false" synchronized="false"
7614 static="false" final="false" visibility="public"
7615 deprecated="not deprecated">
7616 <param name="exposedBinding" type="com.google.inject.spi.ExposedBinding&lt;? extends T&gt;"/>
7617 </method>
7618 <method name="visit" return="V"
7619 abstract="false" native="false" synchronized="false"
7620 static="false" final="false" visibility="public"
7621 deprecated="not deprecated">
7622 <param name="untargettedBinding" type="com.google.inject.spi.UntargettedBinding&lt;? extends T&gt;"/>
7623 </method>
7624 <method name="visit" return="V"
7625 abstract="false" native="false" synchronized="false"
7626 static="false" final="false" visibility="public"
7627 deprecated="not deprecated">
7628 <param name="constructorBinding" type="com.google.inject.spi.ConstructorBinding&lt;? extends T&gt;"/>
7629 </method>
7630 <method name="visit" return="V"
7631 abstract="false" native="false" synchronized="false"
7632 static="false" final="false" visibility="public"
7633 deprecated="not deprecated">
7634 <param name="convertedConstantBinding" type="com.google.inject.spi.ConvertedConstantBinding&lt;? extends T&gt;"/>
7635 </method>
7636 <method name="visit" return="V"
7637 abstract="false" native="false" synchronized="false"
7638 static="false" final="false" visibility="public"
7639 deprecated="not deprecated">
7640 <param name="providerBinding" type="com.google.inject.spi.ProviderBinding&lt;? extends T&gt;"/>
7641 </method>
7642 <doc>
7643 <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to {@link
7644 #visitOther(Binding)}, returning its result.
7645
7646 @param <V> any type to be returned by the visit method. Use {@link Void} with
7647 {@code return null} if no return type is needed.
7648
7649 @author jessewilson@google.com (Jesse Wilson)
7650 @since 2.0]]>
7651 </doc>
7652 </class>
7653 <!-- end class com.google.inject.spi.DefaultBindingTargetVisitor -->
7654 <!-- start class com.google.inject.spi.DefaultElementVisitor -->
7655 <class name="DefaultElementVisitor" extends="java.lang.Object"
7656 abstract="true"
7657 static="false" final="false" visibility="public"
7658 deprecated="not deprecated">
7659 <implements name="com.google.inject.spi.ElementVisitor&lt;V&gt;"/>
7660 <constructor name="DefaultElementVisitor"
7661 static="false" final="false" visibility="public"
7662 deprecated="not deprecated">
7663 </constructor>
7664 <method name="visitOther" return="V"
7665 abstract="false" native="false" synchronized="false"
7666 static="false" final="false" visibility="protected"
7667 deprecated="not deprecated">
7668 <param name="element" type="com.google.inject.spi.Element"/>
7669 <doc>
7670 <![CDATA[Default visit implementation. Returns {@code null}.]]>
7671 </doc>
7672 </method>
7673 <method name="visit" return="V"
7674 abstract="false" native="false" synchronized="false"
7675 static="false" final="false" visibility="public"
7676 deprecated="not deprecated">
7677 <param name="message" type="com.google.inject.spi.Message"/>
7678 </method>
7679 <method name="visit" return="V"
7680 abstract="false" native="false" synchronized="false"
7681 static="false" final="false" visibility="public"
7682 deprecated="not deprecated">
7683 <param name="binding" type="com.google.inject.Binding&lt;T&gt;"/>
7684 </method>
7685 <method name="visit" return="V"
7686 abstract="false" native="false" synchronized="false"
7687 static="false" final="false" visibility="public"
7688 deprecated="not deprecated">
7689 <param name="interceptorBinding" type="com.google.inject.spi.InterceptorBinding"/>
7690 </method>
7691 <method name="visit" return="V"
7692 abstract="false" native="false" synchronized="false"
7693 static="false" final="false" visibility="public"
7694 deprecated="not deprecated">
7695 <param name="scopeBinding" type="com.google.inject.spi.ScopeBinding"/>
7696 </method>
7697 <method name="visit" return="V"
7698 abstract="false" native="false" synchronized="false"
7699 static="false" final="false" visibility="public"
7700 deprecated="not deprecated">
7701 <param name="typeConverterBinding" type="com.google.inject.spi.TypeConverterBinding"/>
7702 </method>
7703 <method name="visit" return="V"
7704 abstract="false" native="false" synchronized="false"
7705 static="false" final="false" visibility="public"
7706 deprecated="not deprecated">
7707 <param name="providerLookup" type="com.google.inject.spi.ProviderLookup&lt;T&gt;"/>
7708 </method>
7709 <method name="visit" return="V"
7710 abstract="false" native="false" synchronized="false"
7711 static="false" final="false" visibility="public"
7712 deprecated="not deprecated">
7713 <param name="injectionRequest" type="com.google.inject.spi.InjectionRequest&lt;?&gt;"/>
7714 </method>
7715 <method name="visit" return="V"
7716 abstract="false" native="false" synchronized="false"
7717 static="false" final="false" visibility="public"
7718 deprecated="not deprecated">
7719 <param name="staticInjectionRequest" type="com.google.inject.spi.StaticInjectionRequest"/>
7720 </method>
7721 <method name="visit" return="V"
7722 abstract="false" native="false" synchronized="false"
7723 static="false" final="false" visibility="public"
7724 deprecated="not deprecated">
7725 <param name="privateElements" type="com.google.inject.spi.PrivateElements"/>
7726 </method>
7727 <method name="visit" return="V"
7728 abstract="false" native="false" synchronized="false"
7729 static="false" final="false" visibility="public"
7730 deprecated="not deprecated">
7731 <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup&lt;T&gt;"/>
7732 </method>
7733 <method name="visit" return="V"
7734 abstract="false" native="false" synchronized="false"
7735 static="false" final="false" visibility="public"
7736 deprecated="not deprecated">
7737 <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/>
7738 </method>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00007739 <method name="visit" return="V"
7740 abstract="false" native="false" synchronized="false"
7741 static="false" final="false" visibility="public"
7742 deprecated="not deprecated">
7743 <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/>
7744 </method>
7745 <method name="visit" return="V"
7746 abstract="false" native="false" synchronized="false"
7747 static="false" final="false" visibility="public"
7748 deprecated="not deprecated">
7749 <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/>
7750 </method>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007751 <doc>
7752 <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to
7753 {@link #visitOther(Element)}, returning its result.
7754
7755 @param <V> any type to be returned by the visit method. Use {@link Void} with
7756 {@code return null} if no return type is needed.
7757
7758 @author sberlin@gmail.com (Sam Berlin)
7759 @since 2.0]]>
7760 </doc>
7761 </class>
7762 <!-- end class com.google.inject.spi.DefaultElementVisitor -->
7763 <!-- start class com.google.inject.spi.Dependency -->
7764 <class name="Dependency" extends="java.lang.Object"
7765 abstract="false"
7766 static="false" final="true" visibility="public"
7767 deprecated="not deprecated">
7768 <method name="get" return="com.google.inject.spi.Dependency&lt;T&gt;"
7769 abstract="false" native="false" synchronized="false"
7770 static="true" final="false" visibility="public"
7771 deprecated="not deprecated">
7772 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
7773 <doc>
7774 <![CDATA[Returns a new dependency that is not attached to an injection point. The returned dependency is
7775 nullable.]]>
7776 </doc>
7777 </method>
7778 <method name="forInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
7779 abstract="false" native="false" synchronized="false"
7780 static="true" final="false" visibility="public"
7781 deprecated="not deprecated">
7782 <param name="injectionPoints" type="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"/>
7783 <doc>
7784 <![CDATA[Returns the dependencies from the given injection points.]]>
7785 </doc>
7786 </method>
7787 <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
7788 abstract="false" native="false" synchronized="false"
7789 static="false" final="false" visibility="public"
7790 deprecated="not deprecated">
7791 <doc>
7792 <![CDATA[Returns the key to the binding that satisfies this dependency.]]>
7793 </doc>
7794 </method>
7795 <method name="isNullable" return="boolean"
7796 abstract="false" native="false" synchronized="false"
7797 static="false" final="false" visibility="public"
7798 deprecated="not deprecated">
7799 <doc>
7800 <![CDATA[Returns true if null is a legal value for this dependency.]]>
7801 </doc>
7802 </method>
7803 <method name="getInjectionPoint" return="com.google.inject.spi.InjectionPoint"
7804 abstract="false" native="false" synchronized="false"
7805 static="false" final="false" visibility="public"
7806 deprecated="not deprecated">
7807 <doc>
7808 <![CDATA[Returns the injection point to which this dependency belongs, or null if this dependency isn't
7809 attached to a particular injection point.]]>
7810 </doc>
7811 </method>
7812 <method name="getParameterIndex" return="int"
7813 abstract="false" native="false" synchronized="false"
7814 static="false" final="false" visibility="public"
7815 deprecated="not deprecated">
7816 <doc>
7817 <![CDATA[Returns the index of this dependency in the injection point's parameter list, or {@code -1} if
7818 this dependency does not belong to a parameter list. Only method and constuctor dependencies
7819 are elements in a parameter list.]]>
7820 </doc>
7821 </method>
7822 <method name="hashCode" return="int"
7823 abstract="false" native="false" synchronized="false"
7824 static="false" final="false" visibility="public"
7825 deprecated="not deprecated">
7826 </method>
7827 <method name="equals" return="boolean"
7828 abstract="false" native="false" synchronized="false"
7829 static="false" final="false" visibility="public"
7830 deprecated="not deprecated">
7831 <param name="o" type="java.lang.Object"/>
7832 </method>
7833 <method name="toString" return="java.lang.String"
7834 abstract="false" native="false" synchronized="false"
7835 static="false" final="false" visibility="public"
7836 deprecated="not deprecated">
7837 </method>
7838 <doc>
7839 <![CDATA[A variable that can be resolved by an injector.
7840
7841 <p>Use {@link #get} to build a freestanding dependency, or {@link InjectionPoint} to build one
7842 that's attached to a constructor, method or field.
7843
7844 @author crazybob@google.com (Bob Lee)
7845 @author jessewilson@google.com (Jesse Wilson)
7846 @since 2.0]]>
7847 </doc>
7848 </class>
7849 <!-- end class com.google.inject.spi.Dependency -->
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00007850 <!-- start class com.google.inject.spi.DisableCircularProxiesOption -->
7851 <class name="DisableCircularProxiesOption" extends="java.lang.Object"
7852 abstract="false"
7853 static="false" final="true" visibility="public"
7854 deprecated="not deprecated">
7855 <implements name="com.google.inject.spi.Element"/>
7856 <method name="getSource" return="java.lang.Object"
7857 abstract="false" native="false" synchronized="false"
7858 static="false" final="false" visibility="public"
7859 deprecated="not deprecated">
7860 </method>
7861 <method name="applyTo"
7862 abstract="false" native="false" synchronized="false"
7863 static="false" final="false" visibility="public"
7864 deprecated="not deprecated">
7865 <param name="binder" type="com.google.inject.Binder"/>
7866 </method>
7867 <method name="acceptVisitor" return="T"
7868 abstract="false" native="false" synchronized="false"
7869 static="false" final="false" visibility="public"
7870 deprecated="not deprecated">
7871 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
7872 </method>
7873 <doc>
7874 <![CDATA[A request to disable circular proxies.
7875
7876 @author sameb@google.com (Sam Berlin)
7877 @since 3.0]]>
7878 </doc>
7879 </class>
7880 <!-- end class com.google.inject.spi.DisableCircularProxiesOption -->
sberlin@gmail.com42fef492010-10-31 20:13:24 +00007881 <!-- start interface com.google.inject.spi.Element -->
7882 <interface name="Element" abstract="true"
7883 static="false" final="false" visibility="public"
7884 deprecated="not deprecated">
7885 <method name="getSource" return="java.lang.Object"
7886 abstract="false" native="false" synchronized="false"
7887 static="false" final="false" visibility="public"
7888 deprecated="not deprecated">
7889 <doc>
7890 <![CDATA[Returns an arbitrary object containing information about the "place" where this element was
7891 configured. Used by Guice in the production of descriptive error messages.
7892
7893 <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good
7894 example. Tools should simply call {@code toString()} on the source object if the type is
7895 unfamiliar.]]>
7896 </doc>
7897 </method>
7898 <method name="acceptVisitor" return="T"
7899 abstract="false" native="false" synchronized="false"
7900 static="false" final="false" visibility="public"
7901 deprecated="not deprecated">
7902 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
7903 <doc>
7904 <![CDATA[Accepts an element visitor. Invokes the visitor method specific to this element's type.
7905
7906 @param visitor to call back on]]>
7907 </doc>
7908 </method>
7909 <method name="applyTo"
7910 abstract="false" native="false" synchronized="false"
7911 static="false" final="false" visibility="public"
7912 deprecated="not deprecated">
7913 <param name="binder" type="com.google.inject.Binder"/>
7914 <doc>
7915 <![CDATA[Writes this module element to the given binder (optional operation).
7916
7917 @param binder to apply configuration element to
7918 @throws UnsupportedOperationException if the {@code applyTo} method is not supported by this
7919 element.]]>
7920 </doc>
7921 </method>
7922 <doc>
7923 <![CDATA[A core component of a module or injector.
7924
7925 <p>The elements of a module can be inspected, validated and rewritten. Use {@link
7926 Elements#getElements(com.google.inject.Module[]) Elements.getElements()} to read the elements
7927 from a module, and {@link Elements#getModule(Iterable) Elements.getModule()} to rewrite them.
7928 This can be used for static analysis and generation of Guice modules.
7929
7930 <p>The elements of an injector can be inspected and exercised. Use {@link
7931 com.google.inject.Injector#getBindings Injector.getBindings()} to reflect on Guice injectors.
7932
7933 @author jessewilson@google.com (Jesse Wilson)
7934 @author crazybob@google.com (Bob Lee)
7935 @since 2.0]]>
7936 </doc>
7937 </interface>
7938 <!-- end interface com.google.inject.spi.Element -->
7939 <!-- start class com.google.inject.spi.Elements -->
7940 <class name="Elements" extends="java.lang.Object"
7941 abstract="false"
7942 static="false" final="true" visibility="public"
7943 deprecated="not deprecated">
7944 <constructor name="Elements"
7945 static="false" final="false" visibility="public"
7946 deprecated="not deprecated">
7947 </constructor>
7948 <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
7949 abstract="false" native="false" synchronized="false"
7950 static="true" final="false" visibility="public"
7951 deprecated="not deprecated">
7952 <param name="modules" type="com.google.inject.Module[]"/>
7953 <doc>
7954 <![CDATA[Records the elements executed by {@code modules}.]]>
7955 </doc>
7956 </method>
7957 <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
7958 abstract="false" native="false" synchronized="false"
7959 static="true" final="false" visibility="public"
7960 deprecated="not deprecated">
7961 <param name="stage" type="com.google.inject.Stage"/>
7962 <param name="modules" type="com.google.inject.Module[]"/>
7963 <doc>
7964 <![CDATA[Records the elements executed by {@code modules}.]]>
7965 </doc>
7966 </method>
7967 <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
7968 abstract="false" native="false" synchronized="false"
7969 static="true" final="false" visibility="public"
7970 deprecated="not deprecated">
7971 <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
7972 <doc>
7973 <![CDATA[Records the elements executed by {@code modules}.]]>
7974 </doc>
7975 </method>
7976 <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
7977 abstract="false" native="false" synchronized="false"
7978 static="true" final="false" visibility="public"
7979 deprecated="not deprecated">
7980 <param name="stage" type="com.google.inject.Stage"/>
7981 <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
7982 <doc>
7983 <![CDATA[Records the elements executed by {@code modules}.]]>
7984 </doc>
7985 </method>
7986 <method name="getModule" return="com.google.inject.Module"
7987 abstract="false" native="false" synchronized="false"
7988 static="true" final="false" visibility="public"
7989 deprecated="not deprecated">
7990 <param name="elements" type="java.lang.Iterable&lt;? extends com.google.inject.spi.Element&gt;"/>
7991 <doc>
7992 <![CDATA[Returns the module composed of {@code elements}.]]>
7993 </doc>
7994 </method>
7995 <doc>
7996 <![CDATA[Exposes elements of a module so they can be inspected, validated or {@link
7997 Element#applyTo(Binder) rewritten}.
7998
7999 @author jessewilson@google.com (Jesse Wilson)
8000 @since 2.0]]>
8001 </doc>
8002 </class>
8003 <!-- end class com.google.inject.spi.Elements -->
8004 <!-- start interface com.google.inject.spi.ElementVisitor -->
8005 <interface name="ElementVisitor" abstract="true"
8006 static="false" final="false" visibility="public"
8007 deprecated="not deprecated">
8008 <method name="visit" return="V"
8009 abstract="false" native="false" synchronized="false"
8010 static="false" final="false" visibility="public"
8011 deprecated="not deprecated">
8012 <param name="binding" type="com.google.inject.Binding&lt;T&gt;"/>
8013 <doc>
8014 <![CDATA[Visit a mapping from a key (type and optional annotation) to the strategy for getting
8015 instances of the type.]]>
8016 </doc>
8017 </method>
8018 <method name="visit" return="V"
8019 abstract="false" native="false" synchronized="false"
8020 static="false" final="false" visibility="public"
8021 deprecated="not deprecated">
8022 <param name="binding" type="com.google.inject.spi.InterceptorBinding"/>
8023 <doc>
8024 <![CDATA[Visit a registration of interceptors for matching methods of matching classes.]]>
8025 </doc>
8026 </method>
8027 <method name="visit" return="V"
8028 abstract="false" native="false" synchronized="false"
8029 static="false" final="false" visibility="public"
8030 deprecated="not deprecated">
8031 <param name="binding" type="com.google.inject.spi.ScopeBinding"/>
8032 <doc>
8033 <![CDATA[Visit a registration of a scope annotation with the scope that implements it.]]>
8034 </doc>
8035 </method>
8036 <method name="visit" return="V"
8037 abstract="false" native="false" synchronized="false"
8038 static="false" final="false" visibility="public"
8039 deprecated="not deprecated">
8040 <param name="binding" type="com.google.inject.spi.TypeConverterBinding"/>
8041 <doc>
8042 <![CDATA[Visit a registration of type converters for matching target types.]]>
8043 </doc>
8044 </method>
8045 <method name="visit" return="V"
8046 abstract="false" native="false" synchronized="false"
8047 static="false" final="false" visibility="public"
8048 deprecated="not deprecated">
8049 <param name="request" type="com.google.inject.spi.InjectionRequest&lt;?&gt;"/>
8050 <doc>
8051 <![CDATA[Visit a request to inject the instance fields and methods of an instance.]]>
8052 </doc>
8053 </method>
8054 <method name="visit" return="V"
8055 abstract="false" native="false" synchronized="false"
8056 static="false" final="false" visibility="public"
8057 deprecated="not deprecated">
8058 <param name="request" type="com.google.inject.spi.StaticInjectionRequest"/>
8059 <doc>
8060 <![CDATA[Visit a request to inject the static fields and methods of type.]]>
8061 </doc>
8062 </method>
8063 <method name="visit" return="V"
8064 abstract="false" native="false" synchronized="false"
8065 static="false" final="false" visibility="public"
8066 deprecated="not deprecated">
8067 <param name="lookup" type="com.google.inject.spi.ProviderLookup&lt;T&gt;"/>
8068 <doc>
8069 <![CDATA[Visit a lookup of the provider for a type.]]>
8070 </doc>
8071 </method>
8072 <method name="visit" return="V"
8073 abstract="false" native="false" synchronized="false"
8074 static="false" final="false" visibility="public"
8075 deprecated="not deprecated">
8076 <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup&lt;T&gt;"/>
8077 <doc>
8078 <![CDATA[Visit a lookup of the members injector.]]>
8079 </doc>
8080 </method>
8081 <method name="visit" return="V"
8082 abstract="false" native="false" synchronized="false"
8083 static="false" final="false" visibility="public"
8084 deprecated="not deprecated">
8085 <param name="message" type="com.google.inject.spi.Message"/>
8086 <doc>
8087 <![CDATA[Visit an error message and the context in which it occured.]]>
8088 </doc>
8089 </method>
8090 <method name="visit" return="V"
8091 abstract="false" native="false" synchronized="false"
8092 static="false" final="false" visibility="public"
8093 deprecated="not deprecated">
8094 <param name="elements" type="com.google.inject.spi.PrivateElements"/>
8095 <doc>
8096 <![CDATA[Visit a collection of configuration elements for a {@linkplain com.google.inject.PrivateBinder
8097 private binder}.]]>
8098 </doc>
8099 </method>
8100 <method name="visit" return="V"
8101 abstract="false" native="false" synchronized="false"
8102 static="false" final="false" visibility="public"
8103 deprecated="not deprecated">
8104 <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/>
8105 <doc>
8106 <![CDATA[Visit an injectable type listener binding.]]>
8107 </doc>
8108 </method>
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00008109 <method name="visit" return="V"
8110 abstract="false" native="false" synchronized="false"
8111 static="false" final="false" visibility="public"
8112 deprecated="not deprecated">
8113 <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/>
8114 <doc>
8115 <![CDATA[Visit a require explicit bindings command.
8116
8117 @since 3.0]]>
8118 </doc>
8119 </method>
8120 <method name="visit" return="V"
8121 abstract="false" native="false" synchronized="false"
8122 static="false" final="false" visibility="public"
8123 deprecated="not deprecated">
8124 <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/>
8125 <doc>
8126 <![CDATA[Visit a disable circular proxies command.
8127
8128 @since 3.0]]>
8129 </doc>
8130 </method>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00008131 <doc>
8132 <![CDATA[Visit elements.
8133
8134 @param <V> any type to be returned by the visit method. Use {@link Void} with
8135 {@code return null} if no return type is needed.
8136
8137 @since 2.0]]>
8138 </doc>
8139 </interface>
8140 <!-- end interface com.google.inject.spi.ElementVisitor -->
8141 <!-- start interface com.google.inject.spi.ExposedBinding -->
8142 <interface name="ExposedBinding" abstract="true"
8143 static="false" final="false" visibility="public"
8144 deprecated="not deprecated">
8145 <implements name="com.google.inject.Binding&lt;T&gt;"/>
8146 <implements name="com.google.inject.spi.HasDependencies"/>
8147 <method name="getPrivateElements" return="com.google.inject.spi.PrivateElements"
8148 abstract="false" native="false" synchronized="false"
8149 static="false" final="false" visibility="public"
8150 deprecated="not deprecated">
8151 <doc>
8152 <![CDATA[Returns the enclosed environment that holds the original binding.]]>
8153 </doc>
8154 </method>
8155 <method name="applyTo"
8156 abstract="false" native="false" synchronized="false"
8157 static="false" final="false" visibility="public"
8158 deprecated="not deprecated">
8159 <param name="binder" type="com.google.inject.Binder"/>
8160 <doc>
8161 <![CDATA[Unsupported. Always throws {@link UnsupportedOperationException}.]]>
8162 </doc>
8163 </method>
8164 <doc>
8165 <![CDATA[A binding to a key exposed from an enclosed private environment.
8166
8167 @author jessewilson@google.com (Jesse Wilson)
8168 @since 2.0]]>
8169 </doc>
8170 </interface>
8171 <!-- end interface com.google.inject.spi.ExposedBinding -->
8172 <!-- start interface com.google.inject.spi.HasDependencies -->
8173 <interface name="HasDependencies" abstract="true"
8174 static="false" final="false" visibility="public"
8175 deprecated="not deprecated">
8176 <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
8177 abstract="false" native="false" synchronized="false"
8178 static="false" final="false" visibility="public"
8179 deprecated="not deprecated">
8180 <doc>
8181 <![CDATA[Returns the known dependencies for this type. If this has dependencies whose values are not
8182 known statically, a dependency for the {@link com.google.inject.Injector Injector} will be
8183 included in the returned set.
8184
8185 @return a possibly empty set]]>
8186 </doc>
8187 </method>
8188 <doc>
8189 <![CDATA[Implemented by {@link com.google.inject.Binding bindings}, {@link com.google.inject.Provider
8190 providers} and instances that expose their dependencies explicitly.
8191
8192 @author jessewilson@google.com (Jesse Wilson)
8193 @since 2.0]]>
8194 </doc>
8195 </interface>
8196 <!-- end interface com.google.inject.spi.HasDependencies -->
8197 <!-- start interface com.google.inject.spi.InjectionListener -->
8198 <interface name="InjectionListener" abstract="true"
8199 static="false" final="false" visibility="public"
8200 deprecated="not deprecated">
8201 <method name="afterInjection"
8202 abstract="false" native="false" synchronized="false"
8203 static="false" final="false" visibility="public"
8204 deprecated="not deprecated">
8205 <param name="injectee" type="I"/>
8206 <doc>
8207 <![CDATA[Invoked by Guice after it injects the fields and methods of instance.
8208
8209 @param injectee instance that Guice injected dependencies into]]>
8210 </doc>
8211 </method>
8212 <doc>
8213 <![CDATA[Listens for injections into instances of type {@code I}. Useful for performing further
8214 injections, post-injection initialization, and more.
8215
8216 @author crazybob@google.com (Bob Lee)
8217 @author jessewilson@google.com (Jesse Wilson)
8218 @since 2.0]]>
8219 </doc>
8220 </interface>
8221 <!-- end interface com.google.inject.spi.InjectionListener -->
8222 <!-- start class com.google.inject.spi.InjectionPoint -->
8223 <class name="InjectionPoint" extends="java.lang.Object"
8224 abstract="false"
8225 static="false" final="true" visibility="public"
8226 deprecated="not deprecated">
8227 <method name="getMember" return="java.lang.reflect.Member"
8228 abstract="false" native="false" synchronized="false"
8229 static="false" final="false" visibility="public"
8230 deprecated="not deprecated">
8231 <doc>
8232 <![CDATA[Returns the injected constructor, field, or method.]]>
8233 </doc>
8234 </method>
8235 <method name="getDependencies" return="java.util.List&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
8236 abstract="false" native="false" synchronized="false"
8237 static="false" final="false" visibility="public"
8238 deprecated="not deprecated">
8239 <doc>
8240 <![CDATA[Returns the dependencies for this injection point. If the injection point is for a method or
8241 constructor, the dependencies will correspond to that member's parameters. Field injection
8242 points always have a single dependency for the field itself.
8243
8244 @return a possibly-empty list]]>
8245 </doc>
8246 </method>
8247 <method name="isOptional" return="boolean"
8248 abstract="false" native="false" synchronized="false"
8249 static="false" final="false" visibility="public"
8250 deprecated="not deprecated">
8251 <doc>
8252 <![CDATA[Returns true if this injection point shall be skipped if the injector cannot resolve bindings
8253 for all required dependencies. Both explicit bindings (as specified in a module), and implicit
8254 bindings ({@literal @}{@link com.google.inject.ImplementedBy ImplementedBy}, default
8255 constructors etc.) may be used to satisfy optional injection points.]]>
8256 </doc>
8257 </method>
8258 <method name="isToolable" return="boolean"
8259 abstract="false" native="false" synchronized="false"
8260 static="false" final="false" visibility="public"
8261 deprecated="not deprecated">
8262 <doc>
8263 <![CDATA[Returns true if the element is annotated with {@literal @}{@link Toolable}.
8264
8265 @since 3.0]]>
8266 </doc>
8267 </method>
8268 <method name="getDeclaringType" return="com.google.inject.TypeLiteral&lt;?&gt;"
8269 abstract="false" native="false" synchronized="false"
8270 static="false" final="false" visibility="public"
8271 deprecated="not deprecated">
8272 <doc>
8273 <![CDATA[Returns the generic type that defines this injection point. If the member exists on a
8274 parameterized type, the result will include more type information than the member's {@link
8275 Member#getDeclaringClass() raw declaring class}.
8276
8277 @since 3.0]]>
8278 </doc>
8279 </method>
8280 <method name="equals" return="boolean"
8281 abstract="false" native="false" synchronized="false"
8282 static="false" final="false" visibility="public"
8283 deprecated="not deprecated">
8284 <param name="o" type="java.lang.Object"/>
8285 </method>
8286 <method name="hashCode" return="int"
8287 abstract="false" native="false" synchronized="false"
8288 static="false" final="false" visibility="public"
8289 deprecated="not deprecated">
8290 </method>
8291 <method name="toString" return="java.lang.String"
8292 abstract="false" native="false" synchronized="false"
8293 static="false" final="false" visibility="public"
8294 deprecated="not deprecated">
8295 </method>
8296 <method name="forConstructor" return="com.google.inject.spi.InjectionPoint"
8297 abstract="false" native="false" synchronized="false"
8298 static="true" final="false" visibility="public"
8299 deprecated="not deprecated">
8300 <param name="constructor" type="java.lang.reflect.Constructor&lt;T&gt;"/>
8301 <doc>
8302 <![CDATA[Returns a new injection point for the specified constructor. If the declaring type of {@code
8303 constructor} is parameterized (such as {@code List<T>}), prefer the overload that includes a
8304 type literal.
8305
8306 @param constructor any single constructor present on {@code type}.
8307
8308 @since 3.0]]>
8309 </doc>
8310 </method>
8311 <method name="forConstructor" return="com.google.inject.spi.InjectionPoint"
8312 abstract="false" native="false" synchronized="false"
8313 static="true" final="false" visibility="public"
8314 deprecated="not deprecated">
8315 <param name="constructor" type="java.lang.reflect.Constructor&lt;T&gt;"/>
8316 <param name="type" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
8317 <doc>
8318 <![CDATA[Returns a new injection point for the specified constructor of {@code type}.
8319
8320 @param constructor any single constructor present on {@code type}.
8321 @param type the concrete type that defines {@code constructor}.
8322
8323 @since 3.0]]>
8324 </doc>
8325 </method>
8326 <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint"
8327 abstract="false" native="false" synchronized="false"
8328 static="true" final="false" visibility="public"
8329 deprecated="not deprecated">
8330 <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
8331 <doc>
8332 <![CDATA[Returns a new injection point for the injectable constructor of {@code type}.
8333
8334 @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject},
8335 or a no-arguments constructor that is not private.
8336 @throws ConfigurationException if there is no injectable constructor, more than one injectable
8337 constructor, or if parameters of the injectable constructor are malformed, such as a
8338 parameter with multiple binding annotations.]]>
8339 </doc>
8340 </method>
8341 <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint"
8342 abstract="false" native="false" synchronized="false"
8343 static="true" final="false" visibility="public"
8344 deprecated="not deprecated">
8345 <param name="type" type="java.lang.Class&lt;?&gt;"/>
8346 <doc>
8347 <![CDATA[Returns a new injection point for the injectable constructor of {@code type}.
8348
8349 @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject},
8350 or a no-arguments constructor that is not private.
8351 @throws ConfigurationException if there is no injectable constructor, more than one injectable
8352 constructor, or if parameters of the injectable constructor are malformed, such as a
8353 parameter with multiple binding annotations.]]>
8354 </doc>
8355 </method>
8356 <method name="forStaticMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
8357 abstract="false" native="false" synchronized="false"
8358 static="true" final="false" visibility="public"
8359 deprecated="not deprecated">
8360 <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
8361 <doc>
8362 <![CDATA[Returns all static method and field injection points on {@code type}.
8363
8364 @return a possibly empty set of injection points. The set has a specified iteration order. All
8365 fields are returned and then all methods. Within the fields, supertype fields are returned
8366 before subtype fields. Similarly, supertype methods are returned before subtype methods.
8367 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
8368 a field with multiple binding annotations. The exception's {@link
8369 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
8370 of the valid injection points.]]>
8371 </doc>
8372 </method>
8373 <method name="forStaticMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
8374 abstract="false" native="false" synchronized="false"
8375 static="true" final="false" visibility="public"
8376 deprecated="not deprecated">
8377 <param name="type" type="java.lang.Class&lt;?&gt;"/>
8378 <doc>
8379 <![CDATA[Returns all static method and field injection points on {@code type}.
8380
8381 @return a possibly empty set of injection points. The set has a specified iteration order. All
8382 fields are returned and then all methods. Within the fields, supertype fields are returned
8383 before subtype fields. Similarly, supertype methods are returned before subtype methods.
8384 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
8385 a field with multiple binding annotations. The exception's {@link
8386 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
8387 of the valid injection points.]]>
8388 </doc>
8389 </method>
8390 <method name="forInstanceMethodsAndFields" 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>
8396 <![CDATA[Returns all instance 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>}
8404 of the valid injection points.]]>
8405 </doc>
8406 </method>
8407 <method name="forInstanceMethodsAndFields" 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>
8413 <![CDATA[Returns all instance 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>}
8421 of the valid injection points.]]>
8422 </doc>
8423 </method>
8424 <doc>
8425 <![CDATA[A constructor, field or method that can receive injections. Typically this is a member with the
8426 {@literal @}{@link Inject} annotation. For non-private, no argument constructors, the member may
8427 omit the annotation.
8428
8429 @author crazybob@google.com (Bob Lee)
8430 @since 2.0]]>
8431 </doc>
8432 </class>
8433 <!-- end class com.google.inject.spi.InjectionPoint -->
8434 <!-- start class com.google.inject.spi.InjectionRequest -->
8435 <class name="InjectionRequest" extends="java.lang.Object"
8436 abstract="false"
8437 static="false" final="true" visibility="public"
8438 deprecated="not deprecated">
8439 <implements name="com.google.inject.spi.Element"/>
8440 <constructor name="InjectionRequest" type="java.lang.Object, com.google.inject.TypeLiteral&lt;T&gt;, T"
8441 static="false" final="false" visibility="public"
8442 deprecated="not deprecated">
8443 </constructor>
8444 <method name="getSource" return="java.lang.Object"
8445 abstract="false" native="false" synchronized="false"
8446 static="false" final="false" visibility="public"
8447 deprecated="not deprecated">
8448 </method>
8449 <method name="getInstance" return="T"
8450 abstract="false" native="false" synchronized="false"
8451 static="false" final="false" visibility="public"
8452 deprecated="not deprecated">
8453 </method>
8454 <method name="getType" return="com.google.inject.TypeLiteral&lt;T&gt;"
8455 abstract="false" native="false" synchronized="false"
8456 static="false" final="false" visibility="public"
8457 deprecated="not deprecated">
8458 </method>
8459 <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
8460 abstract="false" native="false" synchronized="false"
8461 static="false" final="false" visibility="public"
8462 deprecated="not deprecated">
8463 <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/>
8464 <doc>
8465 <![CDATA[Returns the instance methods and fields of {@code instance} that will be injected to fulfill
8466 this request.
8467
8468 @return a possibly empty set of injection points. The set has a specified iteration order. All
8469 fields are returned and then all methods. Within the fields, supertype fields are returned
8470 before subtype fields. Similarly, supertype methods are returned before subtype methods.
8471 @throws ConfigurationException if there is a malformed injection point on the class of {@code
8472 instance}, such as a field with multiple binding annotations. The exception's {@link
8473 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
8474 of the valid injection points.]]>
8475 </doc>
8476 </method>
8477 <method name="acceptVisitor" return="R"
8478 abstract="false" native="false" synchronized="false"
8479 static="false" final="false" visibility="public"
8480 deprecated="not deprecated">
8481 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;R&gt;"/>
8482 </method>
8483 <method name="applyTo"
8484 abstract="false" native="false" synchronized="false"
8485 static="false" final="false" visibility="public"
8486 deprecated="not deprecated">
8487 <param name="binder" type="com.google.inject.Binder"/>
8488 </method>
8489 <doc>
8490 <![CDATA[A request to inject the instance fields and methods of an instance. Requests are created
8491 explicitly in a module using {@link com.google.inject.Binder#requestInjection(Object)
8492 requestInjection()} statements:
8493 <pre>
8494 requestInjection(serviceInstance);</pre>
8495
8496 @author mikeward@google.com (Mike Ward)
8497 @since 2.0]]>
8498 </doc>
8499 </class>
8500 <!-- end class com.google.inject.spi.InjectionRequest -->
8501 <!-- start interface com.google.inject.spi.InstanceBinding -->
8502 <interface name="InstanceBinding" abstract="true"
8503 static="false" final="false" visibility="public"
8504 deprecated="not deprecated">
8505 <implements name="com.google.inject.Binding&lt;T&gt;"/>
8506 <implements name="com.google.inject.spi.HasDependencies"/>
8507 <method name="getInstance" return="T"
8508 abstract="false" native="false" synchronized="false"
8509 static="false" final="false" visibility="public"
8510 deprecated="not deprecated">
8511 <doc>
8512 <![CDATA[Returns the user-supplied instance.]]>
8513 </doc>
8514 </method>
8515 <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
8516 abstract="false" native="false" synchronized="false"
8517 static="false" final="false" visibility="public"
8518 deprecated="not deprecated">
8519 <doc>
8520 <![CDATA[Returns the field and method injection points of the instance, injected at injector-creation
8521 time only.
8522
8523 @return a possibly empty set]]>
8524 </doc>
8525 </method>
8526 <doc>
8527 <![CDATA[A binding to a single instance. The same instance is returned for every injection.
8528
8529 @author jessewilson@google.com (Jesse Wilson)
8530 @since 2.0]]>
8531 </doc>
8532 </interface>
8533 <!-- end interface com.google.inject.spi.InstanceBinding -->
8534 <!-- start class com.google.inject.spi.InterceptorBinding -->
8535 <class name="InterceptorBinding" extends="java.lang.Object"
8536 abstract="false"
8537 static="false" final="true" visibility="public"
8538 deprecated="not deprecated">
8539 <implements name="com.google.inject.spi.Element"/>
8540 <method name="getSource" return="java.lang.Object"
8541 abstract="false" native="false" synchronized="false"
8542 static="false" final="false" visibility="public"
8543 deprecated="not deprecated">
8544 </method>
8545 <method name="getClassMatcher" return="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"
8546 abstract="false" native="false" synchronized="false"
8547 static="false" final="false" visibility="public"
8548 deprecated="not deprecated">
8549 </method>
8550 <method name="getMethodMatcher" return="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"
8551 abstract="false" native="false" synchronized="false"
8552 static="false" final="false" visibility="public"
8553 deprecated="not deprecated">
8554 </method>
8555 <method name="getInterceptors" return="java.util.List&lt;org.aopalliance.intercept.MethodInterceptor&gt;"
8556 abstract="false" native="false" synchronized="false"
8557 static="false" final="false" visibility="public"
8558 deprecated="not deprecated">
8559 </method>
8560 <method name="acceptVisitor" return="T"
8561 abstract="false" native="false" synchronized="false"
8562 static="false" final="false" visibility="public"
8563 deprecated="not deprecated">
8564 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
8565 </method>
8566 <method name="applyTo"
8567 abstract="false" native="false" synchronized="false"
8568 static="false" final="false" visibility="public"
8569 deprecated="not deprecated">
8570 <param name="binder" type="com.google.inject.Binder"/>
8571 </method>
8572 <doc>
8573 <![CDATA[Registration of interceptors for matching methods of matching classes. Instances are created
8574 explicitly in a module using {@link com.google.inject.Binder#bindInterceptor(
8575 Matcher, Matcher, MethodInterceptor[]) bindInterceptor()} statements:
8576 <pre>
8577 bindInterceptor(Matchers.subclassesOf(MyAction.class),
8578 Matchers.annotatedWith(Transactional.class),
8579 new MyTransactionInterceptor());</pre>
8580
8581 or from an injectable type listener using {@link TypeEncounter#bindInterceptor(Matcher,
8582 org.aopalliance.intercept.MethodInterceptor[]) TypeEncounter.bindInterceptor()}.
8583
8584 @author jessewilson@google.com (Jesse Wilson)
8585 @since 2.0]]>
8586 </doc>
8587 </class>
8588 <!-- end class com.google.inject.spi.InterceptorBinding -->
8589 <!-- start interface com.google.inject.spi.LinkedKeyBinding -->
8590 <interface name="LinkedKeyBinding" abstract="true"
8591 static="false" final="false" visibility="public"
8592 deprecated="not deprecated">
8593 <implements name="com.google.inject.Binding&lt;T&gt;"/>
8594 <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends T&gt;"
8595 abstract="false" native="false" synchronized="false"
8596 static="false" final="false" visibility="public"
8597 deprecated="not deprecated">
8598 <doc>
8599 <![CDATA[Returns the linked key used to resolve injections. That binding can be retrieved from an
8600 injector using {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]>
8601 </doc>
8602 </method>
8603 <doc>
8604 <![CDATA[A binding to a linked key. The other key's binding is used to resolve injections.
8605
8606 @author jessewilson@google.com (Jesse Wilson)
8607 @since 2.0]]>
8608 </doc>
8609 </interface>
8610 <!-- end interface com.google.inject.spi.LinkedKeyBinding -->
8611 <!-- start class com.google.inject.spi.MembersInjectorLookup -->
8612 <class name="MembersInjectorLookup" extends="java.lang.Object"
8613 abstract="false"
8614 static="false" final="true" visibility="public"
8615 deprecated="not deprecated">
8616 <implements name="com.google.inject.spi.Element"/>
8617 <constructor name="MembersInjectorLookup" type="java.lang.Object, com.google.inject.TypeLiteral&lt;T&gt;"
8618 static="false" final="false" visibility="public"
8619 deprecated="not deprecated">
8620 </constructor>
8621 <method name="getSource" return="java.lang.Object"
8622 abstract="false" native="false" synchronized="false"
8623 static="false" final="false" visibility="public"
8624 deprecated="not deprecated">
8625 </method>
8626 <method name="getType" return="com.google.inject.TypeLiteral&lt;T&gt;"
8627 abstract="false" native="false" synchronized="false"
8628 static="false" final="false" visibility="public"
8629 deprecated="not deprecated">
8630 <doc>
8631 <![CDATA[Gets the type containing the members to be injected.]]>
8632 </doc>
8633 </method>
8634 <method name="acceptVisitor" return="T"
8635 abstract="false" native="false" synchronized="false"
8636 static="false" final="false" visibility="public"
8637 deprecated="not deprecated">
8638 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
8639 </method>
8640 <method name="initializeDelegate"
8641 abstract="false" native="false" synchronized="false"
8642 static="false" final="false" visibility="public"
8643 deprecated="not deprecated">
8644 <param name="delegate" type="com.google.inject.MembersInjector&lt;T&gt;"/>
8645 <doc>
8646 <![CDATA[Sets the actual members injector.
8647
8648 @throws IllegalStateException if the delegate is already set]]>
8649 </doc>
8650 </method>
8651 <method name="applyTo"
8652 abstract="false" native="false" synchronized="false"
8653 static="false" final="false" visibility="public"
8654 deprecated="not deprecated">
8655 <param name="binder" type="com.google.inject.Binder"/>
8656 </method>
8657 <method name="getDelegate" return="com.google.inject.MembersInjector&lt;T&gt;"
8658 abstract="false" native="false" synchronized="false"
8659 static="false" final="false" visibility="public"
8660 deprecated="not deprecated">
8661 <doc>
8662 <![CDATA[Returns the delegate members injector, or {@code null} if it has not yet been initialized.
8663 The delegate will be initialized when this element is processed, or otherwise used to create
8664 an injector.]]>
8665 </doc>
8666 </method>
8667 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
8668 abstract="false" native="false" synchronized="false"
8669 static="false" final="false" visibility="public"
8670 deprecated="not deprecated">
8671 <doc>
8672 <![CDATA[Returns the looked up members injector. The result is not valid until this lookup has been
8673 initialized, which usually happens when the injector is created. The members injector will
8674 throw an {@code IllegalStateException} if you try to use it beforehand.]]>
8675 </doc>
8676 </method>
8677 <doc>
8678 <![CDATA[A lookup of the members injector for a type. Lookups are created explicitly in a module using
8679 {@link com.google.inject.Binder#getMembersInjector(Class) getMembersInjector()} statements:
8680 <pre>
8681 MembersInjector&lt;PaymentService&gt; membersInjector
8682 = getMembersInjector(PaymentService.class);</pre>
8683
8684 @author crazybob@google.com (Bob Lee)
8685 @since 2.0]]>
8686 </doc>
8687 </class>
8688 <!-- end class com.google.inject.spi.MembersInjectorLookup -->
8689 <!-- start class com.google.inject.spi.Message -->
8690 <class name="Message" extends="java.lang.Object"
8691 abstract="false"
8692 static="false" final="true" visibility="public"
8693 deprecated="not deprecated">
8694 <implements name="java.io.Serializable"/>
8695 <implements name="com.google.inject.spi.Element"/>
8696 <constructor name="Message" type="java.util.List&lt;java.lang.Object&gt;, java.lang.String, java.lang.Throwable"
8697 static="false" final="false" visibility="public"
8698 deprecated="not deprecated">
8699 <doc>
8700 <![CDATA[@since 2.0]]>
8701 </doc>
8702 </constructor>
8703 <constructor name="Message" type="java.lang.Object, java.lang.String"
8704 static="false" final="false" visibility="public"
8705 deprecated="not deprecated">
8706 </constructor>
8707 <constructor name="Message" type="java.lang.String"
8708 static="false" final="false" visibility="public"
8709 deprecated="not deprecated">
8710 </constructor>
8711 <method name="getSource" return="java.lang.String"
8712 abstract="false" native="false" synchronized="false"
8713 static="false" final="false" visibility="public"
8714 deprecated="not deprecated">
8715 </method>
8716 <method name="getSources" return="java.util.List&lt;java.lang.Object&gt;"
8717 abstract="false" native="false" synchronized="false"
8718 static="false" final="false" visibility="public"
8719 deprecated="not deprecated">
8720 <doc>
8721 <![CDATA[@since 2.0]]>
8722 </doc>
8723 </method>
8724 <method name="getMessage" return="java.lang.String"
8725 abstract="false" native="false" synchronized="false"
8726 static="false" final="false" visibility="public"
8727 deprecated="not deprecated">
8728 <doc>
8729 <![CDATA[Gets the error message text.]]>
8730 </doc>
8731 </method>
8732 <method name="acceptVisitor" return="T"
8733 abstract="false" native="false" synchronized="false"
8734 static="false" final="false" visibility="public"
8735 deprecated="not deprecated">
8736 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
8737 <doc>
8738 <![CDATA[@since 2.0]]>
8739 </doc>
8740 </method>
8741 <method name="getCause" return="java.lang.Throwable"
8742 abstract="false" native="false" synchronized="false"
8743 static="false" final="false" visibility="public"
8744 deprecated="not deprecated">
8745 <doc>
8746 <![CDATA[Returns the throwable that caused this message, or {@code null} if this
8747 message was not caused by a throwable.
8748
8749 @since 2.0]]>
8750 </doc>
8751 </method>
8752 <method name="toString" return="java.lang.String"
8753 abstract="false" native="false" synchronized="false"
8754 static="false" final="false" visibility="public"
8755 deprecated="not deprecated">
8756 </method>
8757 <method name="hashCode" return="int"
8758 abstract="false" native="false" synchronized="false"
8759 static="false" final="false" visibility="public"
8760 deprecated="not deprecated">
8761 </method>
8762 <method name="equals" return="boolean"
8763 abstract="false" native="false" synchronized="false"
8764 static="false" final="false" visibility="public"
8765 deprecated="not deprecated">
8766 <param name="o" type="java.lang.Object"/>
8767 </method>
8768 <method name="applyTo"
8769 abstract="false" native="false" synchronized="false"
8770 static="false" final="false" visibility="public"
8771 deprecated="not deprecated">
8772 <param name="binder" type="com.google.inject.Binder"/>
8773 <doc>
8774 <![CDATA[@since 2.0]]>
8775 </doc>
8776 </method>
8777 <doc>
8778 <![CDATA[An error message and the context in which it occured. Messages are usually created internally by
8779 Guice and its extensions. Messages can be created explicitly in a module using {@link
8780 com.google.inject.Binder#addError(Throwable) addError()} statements:
8781 <pre>
8782 try {
8783 bindPropertiesFromFile();
8784 } catch (IOException e) {
8785 addError(e);
8786 }</pre>
8787
8788 @author crazybob@google.com (Bob Lee)]]>
8789 </doc>
8790 </class>
8791 <!-- end class com.google.inject.spi.Message -->
8792 <!-- start interface com.google.inject.spi.PrivateElements -->
8793 <interface name="PrivateElements" abstract="true"
8794 static="false" final="false" visibility="public"
8795 deprecated="not deprecated">
8796 <implements name="com.google.inject.spi.Element"/>
8797 <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
8798 abstract="false" native="false" synchronized="false"
8799 static="false" final="false" visibility="public"
8800 deprecated="not deprecated">
8801 <doc>
8802 <![CDATA[Returns the configuration information in this private environment.]]>
8803 </doc>
8804 </method>
8805 <method name="getInjector" return="com.google.inject.Injector"
8806 abstract="false" native="false" synchronized="false"
8807 static="false" final="false" visibility="public"
8808 deprecated="not deprecated">
8809 <doc>
8810 <![CDATA[Returns the child injector that hosts these private elements, or null if the elements haven't
8811 been used to create an injector.]]>
8812 </doc>
8813 </method>
8814 <method name="getExposedKeys" return="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"
8815 abstract="false" native="false" synchronized="false"
8816 static="false" final="false" visibility="public"
8817 deprecated="not deprecated">
8818 <doc>
8819 <![CDATA[Returns the unique exposed keys for these private elements.]]>
8820 </doc>
8821 </method>
8822 <method name="getExposedSource" return="java.lang.Object"
8823 abstract="false" native="false" synchronized="false"
8824 static="false" final="false" visibility="public"
8825 deprecated="not deprecated">
8826 <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
8827 <doc>
8828 <![CDATA[Returns an arbitrary object containing information about the "place" where this key was
8829 exposed. Used by Guice in the production of descriptive error messages.
8830
8831 <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good
8832 example. Tools should simply call {@code toString()} on the source object if the type is
8833 unfamiliar.
8834
8835 @param key one of the keys exposed by this module.]]>
8836 </doc>
8837 </method>
8838 <doc>
8839 <![CDATA[A private collection of elements that are hidden from the enclosing injector or module by
8840 default. See {@link com.google.inject.PrivateModule PrivateModule} for details.
8841
8842 @author jessewilson@google.com (Jesse Wilson)
8843 @since 2.0]]>
8844 </doc>
8845 </interface>
8846 <!-- end interface com.google.inject.spi.PrivateElements -->
8847 <!-- start interface com.google.inject.spi.ProviderBinding -->
8848 <interface name="ProviderBinding" abstract="true"
8849 static="false" final="false" visibility="public"
8850 deprecated="not deprecated">
8851 <implements name="com.google.inject.Binding&lt;T&gt;"/>
8852 <method name="getProvidedKey" return="com.google.inject.Key&lt;?&gt;"
8853 abstract="false" native="false" synchronized="false"
8854 static="false" final="false" visibility="public"
8855 deprecated="not deprecated">
8856 <doc>
8857 <![CDATA[Returns the key whose binding is used to {@link Provider#get provide instances}. That binding
8858 can be retrieved from an injector using {@link com.google.inject.Injector#getBinding(Key)
8859 Injector.getBinding(providedKey)}]]>
8860 </doc>
8861 </method>
8862 <doc>
8863 <![CDATA[A binding to a {@link Provider} that delegates to the binding for the provided type. This binding
8864 is used whenever a {@code Provider<T>} is injected (as opposed to injecting {@code T} directly).
8865
8866 @author jessewilson@google.com (Jesse Wilson)
8867 @since 2.0]]>
8868 </doc>
8869 </interface>
8870 <!-- end interface com.google.inject.spi.ProviderBinding -->
8871 <!-- start interface com.google.inject.spi.ProviderInstanceBinding -->
8872 <interface name="ProviderInstanceBinding" abstract="true"
8873 static="false" final="false" visibility="public"
8874 deprecated="not deprecated">
8875 <implements name="com.google.inject.Binding&lt;T&gt;"/>
8876 <implements name="com.google.inject.spi.HasDependencies"/>
8877 <method name="getProviderInstance" return="com.google.inject.Provider&lt;? extends T&gt;"
8878 abstract="false" native="false" synchronized="false"
8879 static="false" final="false" visibility="public"
8880 deprecated="not deprecated">
8881 <doc>
8882 <![CDATA[Returns the user-supplied, unscoped provider.]]>
8883 </doc>
8884 </method>
8885 <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
8886 abstract="false" native="false" synchronized="false"
8887 static="false" final="false" visibility="public"
8888 deprecated="not deprecated">
8889 <doc>
8890 <![CDATA[Returns the field and method injection points of the provider, injected at injector-creation
8891 time only.
8892
8893 @return a possibly empty set]]>
8894 </doc>
8895 </method>
8896 <doc>
8897 <![CDATA[A binding to a provider instance. The provider's {@code get} method is invoked to resolve
8898 injections.
8899
8900 @author jessewilson@google.com (Jesse Wilson)
8901 @since 2.0]]>
8902 </doc>
8903 </interface>
8904 <!-- end interface com.google.inject.spi.ProviderInstanceBinding -->
8905 <!-- start interface com.google.inject.spi.ProviderKeyBinding -->
8906 <interface name="ProviderKeyBinding" abstract="true"
8907 static="false" final="false" visibility="public"
8908 deprecated="not deprecated">
8909 <implements name="com.google.inject.Binding&lt;T&gt;"/>
8910 <method name="getProviderKey" return="com.google.inject.Key&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"
8911 abstract="false" native="false" synchronized="false"
8912 static="false" final="false" visibility="public"
8913 deprecated="not deprecated">
8914 <doc>
8915 <![CDATA[Returns the key used to resolve the provider's binding. That binding can be retrieved from an
8916 injector using {@link com.google.inject.Injector#getBinding(Key)
8917 Injector.getBinding(providerKey)}]]>
8918 </doc>
8919 </method>
8920 <doc>
8921 <![CDATA[A binding to a provider key. To resolve injections, the provider key is first resolved, then that
8922 provider's {@code get} method is invoked.
8923
8924 @author jessewilson@google.com (Jesse Wilson)
8925 @since 2.0]]>
8926 </doc>
8927 </interface>
8928 <!-- end interface com.google.inject.spi.ProviderKeyBinding -->
8929 <!-- start class com.google.inject.spi.ProviderLookup -->
8930 <class name="ProviderLookup" extends="java.lang.Object"
8931 abstract="false"
8932 static="false" final="true" visibility="public"
8933 deprecated="not deprecated">
8934 <implements name="com.google.inject.spi.Element"/>
8935 <constructor name="ProviderLookup" type="java.lang.Object, com.google.inject.Key&lt;T&gt;"
8936 static="false" final="false" visibility="public"
8937 deprecated="not deprecated">
8938 </constructor>
8939 <method name="getSource" return="java.lang.Object"
8940 abstract="false" native="false" synchronized="false"
8941 static="false" final="false" visibility="public"
8942 deprecated="not deprecated">
8943 </method>
8944 <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
8945 abstract="false" native="false" synchronized="false"
8946 static="false" final="false" visibility="public"
8947 deprecated="not deprecated">
8948 </method>
8949 <method name="acceptVisitor" return="T"
8950 abstract="false" native="false" synchronized="false"
8951 static="false" final="false" visibility="public"
8952 deprecated="not deprecated">
8953 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
8954 </method>
8955 <method name="initializeDelegate"
8956 abstract="false" native="false" synchronized="false"
8957 static="false" final="false" visibility="public"
8958 deprecated="not deprecated">
8959 <param name="delegate" type="com.google.inject.Provider&lt;T&gt;"/>
8960 <doc>
8961 <![CDATA[Sets the actual provider.
8962
8963 @throws IllegalStateException if the delegate is already set]]>
8964 </doc>
8965 </method>
8966 <method name="applyTo"
8967 abstract="false" native="false" synchronized="false"
8968 static="false" final="false" visibility="public"
8969 deprecated="not deprecated">
8970 <param name="binder" type="com.google.inject.Binder"/>
8971 </method>
8972 <method name="getDelegate" return="com.google.inject.Provider&lt;T&gt;"
8973 abstract="false" native="false" synchronized="false"
8974 static="false" final="false" visibility="public"
8975 deprecated="not deprecated">
8976 <doc>
8977 <![CDATA[Returns the delegate provider, or {@code null} if it has not yet been initialized. The delegate
8978 will be initialized when this element is processed, or otherwise used to create an injector.]]>
8979 </doc>
8980 </method>
8981 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
8982 abstract="false" native="false" synchronized="false"
8983 static="false" final="false" visibility="public"
8984 deprecated="not deprecated">
8985 <doc>
8986 <![CDATA[Returns the looked up provider. The result is not valid until this lookup has been initialized,
8987 which usually happens when the injector is created. The provider will throw an {@code
8988 IllegalStateException} if you try to use it beforehand.]]>
8989 </doc>
8990 </method>
8991 <doc>
8992 <![CDATA[A lookup of the provider for a type. Lookups are created explicitly in a module using
8993 {@link com.google.inject.Binder#getProvider(Class) getProvider()} statements:
8994 <pre>
8995 Provider&lt;PaymentService&gt; paymentServiceProvider
8996 = getProvider(PaymentService.class);</pre>
8997
8998 @author jessewilson@google.com (Jesse Wilson)
8999 @since 2.0]]>
9000 </doc>
9001 </class>
9002 <!-- end class com.google.inject.spi.ProviderLookup -->
9003 <!-- start interface com.google.inject.spi.ProviderWithDependencies -->
9004 <interface name="ProviderWithDependencies" abstract="true"
9005 static="false" final="false" visibility="public"
9006 deprecated="not deprecated">
9007 <implements name="com.google.inject.Provider&lt;T&gt;"/>
9008 <implements name="com.google.inject.spi.HasDependencies"/>
9009 <doc>
9010 <![CDATA[A provider with dependencies on other injected types. If a {@link Provider} has dependencies that
9011 aren't specified in injections, this interface should be used to expose all dependencies.
9012
9013 @since 2.0]]>
9014 </doc>
9015 </interface>
9016 <!-- end interface com.google.inject.spi.ProviderWithDependencies -->
9017 <!-- start interface com.google.inject.spi.ProviderWithExtensionVisitor -->
9018 <interface name="ProviderWithExtensionVisitor" abstract="true"
9019 static="false" final="false" visibility="public"
9020 deprecated="not deprecated">
9021 <implements name="com.google.inject.Provider&lt;T&gt;"/>
9022 <method name="acceptExtensionVisitor" return="V"
9023 abstract="false" native="false" synchronized="false"
9024 static="false" final="false" visibility="public"
9025 deprecated="not deprecated">
9026 <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor&lt;B, V&gt;"/>
9027 <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends B&gt;"/>
9028 <doc>
9029 <![CDATA[Instructs the extension determine if the visitor is an instance of a custom
9030 extension visitor, and if so, visit it using that method. If the visitor is
9031 not an instance of the custom extension visitor, this method <b>MUST</b>
9032 call visitor.visit(binding).
9033 <p>
9034 Due to issues with generics, the type parameters of this method do not
9035 relate to the type of the provider. In practice, the 'B' type will always
9036 be a supertype of 'T'.]]>
9037 </doc>
9038 </method>
9039 <doc>
9040 <![CDATA[A Provider that is part of an extension which supports a custom
9041 BindingTargetVisitor.
9042 <p>
9043 When an extension binds a provider instance, the provider can implement this
9044 interface to allow users using the
9045 {@link Binding#acceptTargetVisitor(BindingTargetVisitor)} method to visit a
9046 custom visitor designed for that extension. A typical implementation within
9047 the extension would look like
9048 <pre>
9049 &lt;V, B> V acceptExtensionVisitor(BindingTargetVisitor&lt;B, V> visitor, ProviderInstanceBinding&lt;? extends B> binding) {
9050 if(visitor instanceof MyCustomExtensionVisitor) {
9051 return ((MyCustomExtensionVisitor&lt;B, V>)visitor).visitCustomExtension(customProperties, binding);
9052 } else {
9053 return visitor.visit(binding);
9054 }
9055 }</pre>
9056 'MyCustomExtensionVisitor' in the example above would be an interface the
9057 extension provides that users can implement in order to be notified of custom
9058 extension information. These visitor interfaces must extend from
9059 BindingTargetVisitor.
9060
9061 @since 3.0
9062 @author sameb@google.com (Sam Berlin)]]>
9063 </doc>
9064 </interface>
9065 <!-- end interface com.google.inject.spi.ProviderWithExtensionVisitor -->
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00009066 <!-- start class com.google.inject.spi.RequireExplicitBindingsOption -->
9067 <class name="RequireExplicitBindingsOption" extends="java.lang.Object"
9068 abstract="false"
9069 static="false" final="true" visibility="public"
9070 deprecated="not deprecated">
9071 <implements name="com.google.inject.spi.Element"/>
9072 <method name="getSource" return="java.lang.Object"
9073 abstract="false" native="false" synchronized="false"
9074 static="false" final="false" visibility="public"
9075 deprecated="not deprecated">
9076 </method>
9077 <method name="applyTo"
9078 abstract="false" native="false" synchronized="false"
9079 static="false" final="false" visibility="public"
9080 deprecated="not deprecated">
9081 <param name="binder" type="com.google.inject.Binder"/>
9082 </method>
9083 <method name="acceptVisitor" return="T"
9084 abstract="false" native="false" synchronized="false"
9085 static="false" final="false" visibility="public"
9086 deprecated="not deprecated">
9087 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
9088 </method>
9089 <doc>
9090 <![CDATA[A request to require explicit bindings.
9091
9092 @author sameb@google.com (Sam Berlin)
9093 @since 3.0]]>
9094 </doc>
9095 </class>
9096 <!-- end class com.google.inject.spi.RequireExplicitBindingsOption -->
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009097 <!-- start class com.google.inject.spi.ScopeBinding -->
9098 <class name="ScopeBinding" extends="java.lang.Object"
9099 abstract="false"
9100 static="false" final="true" visibility="public"
9101 deprecated="not deprecated">
9102 <implements name="com.google.inject.spi.Element"/>
9103 <method name="getSource" return="java.lang.Object"
9104 abstract="false" native="false" synchronized="false"
9105 static="false" final="false" visibility="public"
9106 deprecated="not deprecated">
9107 </method>
9108 <method name="getAnnotationType" return="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
9109 abstract="false" native="false" synchronized="false"
9110 static="false" final="false" visibility="public"
9111 deprecated="not deprecated">
9112 </method>
9113 <method name="getScope" return="com.google.inject.Scope"
9114 abstract="false" native="false" synchronized="false"
9115 static="false" final="false" visibility="public"
9116 deprecated="not deprecated">
9117 </method>
9118 <method name="acceptVisitor" return="T"
9119 abstract="false" native="false" synchronized="false"
9120 static="false" final="false" visibility="public"
9121 deprecated="not deprecated">
9122 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
9123 </method>
9124 <method name="applyTo"
9125 abstract="false" native="false" synchronized="false"
9126 static="false" final="false" visibility="public"
9127 deprecated="not deprecated">
9128 <param name="binder" type="com.google.inject.Binder"/>
9129 </method>
9130 <doc>
9131 <![CDATA[Registration of a scope annotation with the scope that implements it. Instances are created
9132 explicitly in a module using {@link com.google.inject.Binder#bindScope(Class, Scope) bindScope()}
9133 statements:
9134 <pre>
9135 Scope recordScope = new RecordScope();
9136 bindScope(RecordScoped.class, new RecordScope());</pre>
9137
9138 @author jessewilson@google.com (Jesse Wilson)
9139 @since 2.0]]>
9140 </doc>
9141 </class>
9142 <!-- end class com.google.inject.spi.ScopeBinding -->
9143 <!-- start class com.google.inject.spi.StaticInjectionRequest -->
9144 <class name="StaticInjectionRequest" extends="java.lang.Object"
9145 abstract="false"
9146 static="false" final="true" visibility="public"
9147 deprecated="not deprecated">
9148 <implements name="com.google.inject.spi.Element"/>
9149 <method name="getSource" return="java.lang.Object"
9150 abstract="false" native="false" synchronized="false"
9151 static="false" final="false" visibility="public"
9152 deprecated="not deprecated">
9153 </method>
9154 <method name="getType" return="java.lang.Class&lt;?&gt;"
9155 abstract="false" native="false" synchronized="false"
9156 static="false" final="false" visibility="public"
9157 deprecated="not deprecated">
9158 </method>
9159 <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
9160 abstract="false" native="false" synchronized="false"
9161 static="false" final="false" visibility="public"
9162 deprecated="not deprecated">
9163 <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/>
9164 <doc>
9165 <![CDATA[Returns the static methods and fields of {@code type} that will be injected to fulfill this
9166 request.
9167
9168 @return a possibly empty set of injection points. The set has a specified iteration order. All
9169 fields are returned and then all methods. Within the fields, supertype fields are returned
9170 before subtype fields. Similarly, supertype methods are returned before subtype methods.
9171 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
9172 a field with multiple binding annotations. The exception's {@link
9173 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
9174 of the valid injection points.]]>
9175 </doc>
9176 </method>
9177 <method name="applyTo"
9178 abstract="false" native="false" synchronized="false"
9179 static="false" final="false" visibility="public"
9180 deprecated="not deprecated">
9181 <param name="binder" type="com.google.inject.Binder"/>
9182 </method>
9183 <method name="acceptVisitor" return="T"
9184 abstract="false" native="false" synchronized="false"
9185 static="false" final="false" visibility="public"
9186 deprecated="not deprecated">
9187 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
9188 </method>
9189 <doc>
9190 <![CDATA[A request to inject the static fields and methods of a type. Requests are created
9191 explicitly in a module using {@link com.google.inject.Binder#requestStaticInjection(Class[])
9192 requestStaticInjection()} statements:
9193 <pre>
9194 requestStaticInjection(MyLegacyService.class);</pre>
9195
9196 @author jessewilson@google.com (Jesse Wilson)
9197 @since 2.0]]>
9198 </doc>
9199 </class>
9200 <!-- end class com.google.inject.spi.StaticInjectionRequest -->
9201 <!-- start class com.google.inject.spi.Toolable -->
9202 <class name="Toolable" abstract="true"
9203 static="false" final="false" visibility="public"
9204 deprecated="not deprecated">
9205 <implements name="java.lang.annotation.Annotation"/>
9206 <doc>
9207 <![CDATA[Instructs an {@link Injector} running in {@link Stage#TOOL} that a method should be injected.
9208 This is typically useful for for extensions to Guice that perform additional validation in an
9209 injected method or field. This only applies to objects that are already constructed when
9210 bindings are created (ie., something bound using {@link
9211 com.google.inject.binder.LinkedBindingBuilder#toProvider toProvider}, {@link
9212 com.google.inject.binder.LinkedBindingBuilder#toInstance toInstance}, or {@link
9213 com.google.inject.Binder#requestInjection requestInjection}.
9214
9215 @author sberlin@gmail.com (Sam Berlin)
9216 @since 3.0]]>
9217 </doc>
9218 </class>
9219 <!-- end class com.google.inject.spi.Toolable -->
9220 <!-- start interface com.google.inject.spi.TypeConverter -->
9221 <interface name="TypeConverter" abstract="true"
9222 static="false" final="false" visibility="public"
9223 deprecated="not deprecated">
9224 <method name="convert" return="java.lang.Object"
9225 abstract="false" native="false" synchronized="false"
9226 static="false" final="false" visibility="public"
9227 deprecated="not deprecated">
9228 <param name="value" type="java.lang.String"/>
9229 <param name="toType" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
9230 <doc>
9231 <![CDATA[Converts a string value. Throws an exception if a conversion error occurs.]]>
9232 </doc>
9233 </method>
9234 <doc>
9235 <![CDATA[Converts constant string values to a different type.
9236
9237 @author crazybob@google.com (Bob Lee)
9238 @since 2.0]]>
9239 </doc>
9240 </interface>
9241 <!-- end interface com.google.inject.spi.TypeConverter -->
9242 <!-- start class com.google.inject.spi.TypeConverterBinding -->
9243 <class name="TypeConverterBinding" extends="java.lang.Object"
9244 abstract="false"
9245 static="false" final="true" visibility="public"
9246 deprecated="not deprecated">
9247 <implements name="com.google.inject.spi.Element"/>
sberlin@gmail.com251cda62010-12-09 03:27:02 +00009248 <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"
9249 static="false" final="false" visibility="public"
9250 deprecated="not deprecated">
9251 <doc>
9252 <![CDATA[@since 3.0]]>
9253 </doc>
9254 </constructor>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009255 <method name="getSource" return="java.lang.Object"
9256 abstract="false" native="false" synchronized="false"
9257 static="false" final="false" visibility="public"
9258 deprecated="not deprecated">
9259 </method>
9260 <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"
9261 abstract="false" native="false" synchronized="false"
9262 static="false" final="false" visibility="public"
9263 deprecated="not deprecated">
9264 </method>
9265 <method name="getTypeConverter" return="com.google.inject.spi.TypeConverter"
9266 abstract="false" native="false" synchronized="false"
9267 static="false" final="false" visibility="public"
9268 deprecated="not deprecated">
9269 </method>
9270 <method name="acceptVisitor" return="T"
9271 abstract="false" native="false" synchronized="false"
9272 static="false" final="false" visibility="public"
9273 deprecated="not deprecated">
9274 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
9275 </method>
9276 <method name="applyTo"
9277 abstract="false" native="false" synchronized="false"
9278 static="false" final="false" visibility="public"
9279 deprecated="not deprecated">
9280 <param name="binder" type="com.google.inject.Binder"/>
9281 </method>
sberlin@gmail.com251cda62010-12-09 03:27:02 +00009282 <method name="toString" return="java.lang.String"
9283 abstract="false" native="false" synchronized="false"
9284 static="false" final="false" visibility="public"
9285 deprecated="not deprecated">
9286 </method>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009287 <doc>
9288 <![CDATA[Registration of type converters for matching target types. Instances are created
9289 explicitly in a module using {@link com.google.inject.Binder#convertToTypes(Matcher,
9290 TypeConverter) convertToTypes()} statements:
9291 <pre>
9292 convertToTypes(Matchers.only(TypeLiteral.get(DateTime.class)), new DateTimeConverter());</pre>
9293
9294 @author jessewilson@google.com (Jesse Wilson)
9295 @since 2.0]]>
9296 </doc>
9297 </class>
9298 <!-- end class com.google.inject.spi.TypeConverterBinding -->
9299 <!-- start interface com.google.inject.spi.TypeEncounter -->
9300 <interface name="TypeEncounter" abstract="true"
9301 static="false" final="false" visibility="public"
9302 deprecated="not deprecated">
9303 <method name="addError"
9304 abstract="false" native="false" synchronized="false"
9305 static="false" final="false" visibility="public"
9306 deprecated="not deprecated">
9307 <param name="message" type="java.lang.String"/>
9308 <param name="arguments" type="java.lang.Object[]"/>
9309 <doc>
9310 <![CDATA[Records an error message for type {@code I} which will be presented to the user at a later
9311 time. Unlike throwing an exception, this enable us to continue configuring the Injector and
9312 discover more errors. Uses {@link String#format(String, Object[])} to insert the arguments
9313 into the message.]]>
9314 </doc>
9315 </method>
9316 <method name="addError"
9317 abstract="false" native="false" synchronized="false"
9318 static="false" final="false" visibility="public"
9319 deprecated="not deprecated">
9320 <param name="t" type="java.lang.Throwable"/>
9321 <doc>
9322 <![CDATA[Records an exception for type {@code I}, the full details of which will be logged, and the
9323 message of which will be presented to the user at a later time. If your type listener calls
9324 something that you worry may fail, you should catch the exception and pass it to this method.]]>
9325 </doc>
9326 </method>
9327 <method name="addError"
9328 abstract="false" native="false" synchronized="false"
9329 static="false" final="false" visibility="public"
9330 deprecated="not deprecated">
9331 <param name="message" type="com.google.inject.spi.Message"/>
9332 <doc>
9333 <![CDATA[Records an error message to be presented to the user at a later time.]]>
9334 </doc>
9335 </method>
9336 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
9337 abstract="false" native="false" synchronized="false"
9338 static="false" final="false" visibility="public"
9339 deprecated="not deprecated">
9340 <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
9341 <doc>
9342 <![CDATA[Returns the provider used to obtain instances for the given injection key. The returned
9343 provider will not be valid until the injector has been created. The provider will throw an
9344 {@code IllegalStateException} if you try to use it beforehand.]]>
9345 </doc>
9346 </method>
9347 <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
9348 abstract="false" native="false" synchronized="false"
9349 static="false" final="false" visibility="public"
9350 deprecated="not deprecated">
9351 <param name="type" type="java.lang.Class&lt;T&gt;"/>
9352 <doc>
9353 <![CDATA[Returns the provider used to obtain instances for the given injection type. The returned
9354 provider will not be valid until the injetor has been created. The provider will throw an
9355 {@code IllegalStateException} if you try to use it beforehand.]]>
9356 </doc>
9357 </method>
9358 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
9359 abstract="false" native="false" synchronized="false"
9360 static="false" final="false" visibility="public"
9361 deprecated="not deprecated">
9362 <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
9363 <doc>
9364 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
9365 of the given type {@code T}. The returned members injector will not be valid until the main
9366 injector has been created. The members injector will throw an {@code IllegalStateException}
9367 if you try to use it beforehand.
9368
9369 @param typeLiteral type to get members injector for]]>
9370 </doc>
9371 </method>
9372 <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
9373 abstract="false" native="false" synchronized="false"
9374 static="false" final="false" visibility="public"
9375 deprecated="not deprecated">
9376 <param name="type" type="java.lang.Class&lt;T&gt;"/>
9377 <doc>
9378 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
9379 of the given type {@code T}. The returned members injector will not be valid until the main
9380 injector has been created. The members injector will throw an {@code IllegalStateException}
9381 if you try to use it beforehand.
9382
9383 @param type type to get members injector for]]>
9384 </doc>
9385 </method>
9386 <method name="register"
9387 abstract="false" native="false" synchronized="false"
9388 static="false" final="false" visibility="public"
9389 deprecated="not deprecated">
9390 <param name="membersInjector" type="com.google.inject.MembersInjector&lt;? super I&gt;"/>
9391 <doc>
9392 <![CDATA[Registers a members injector for type {@code I}. Guice will use the members injector after its
9393 performed its own injections on an instance of {@code I}.]]>
9394 </doc>
9395 </method>
9396 <method name="register"
9397 abstract="false" native="false" synchronized="false"
9398 static="false" final="false" visibility="public"
9399 deprecated="not deprecated">
9400 <param name="listener" type="com.google.inject.spi.InjectionListener&lt;? super I&gt;"/>
9401 <doc>
9402 <![CDATA[Registers an injection listener for type {@code I}. Guice will notify the listener after all
9403 injections have been performed on an instance of {@code I}.]]>
9404 </doc>
9405 </method>
9406 <method name="bindInterceptor"
9407 abstract="false" native="false" synchronized="false"
9408 static="false" final="false" visibility="public"
9409 deprecated="not deprecated">
9410 <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
9411 <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
9412 <doc>
9413 <![CDATA[Binds method interceptor[s] to methods matched in type {@code I} and its supertypes. A
9414 method is eligible for interception if:
9415
9416 <ul>
9417 <li>Guice created the instance the method is on</li>
9418 <li>Neither the enclosing type nor the method is final</li>
9419 <li>And the method is package-private or more accessible</li>
9420 </ul>
9421
9422 @param methodMatcher matches methods the interceptor should apply to. For
9423 example: {@code annotatedWith(Transactional.class)}.
9424 @param interceptors to bind]]>
9425 </doc>
9426 </method>
9427 <doc>
9428 <![CDATA[Context of an injectable type encounter. Enables reporting errors, registering injection
9429 listeners and binding method interceptors for injectable type {@code I}. It is an error to use
9430 an encounter after the {@link TypeListener#hear(TypeLiteral, TypeEncounter) hear()} method has
9431 returned.
9432
9433 @param <I> the injectable type encountered
9434 @since 2.0]]>
9435 </doc>
9436 </interface>
9437 <!-- end interface com.google.inject.spi.TypeEncounter -->
9438 <!-- start interface com.google.inject.spi.TypeListener -->
9439 <interface name="TypeListener" abstract="true"
9440 static="false" final="false" visibility="public"
9441 deprecated="not deprecated">
9442 <method name="hear"
9443 abstract="false" native="false" synchronized="false"
9444 static="false" final="false" visibility="public"
9445 deprecated="not deprecated">
9446 <param name="type" type="com.google.inject.TypeLiteral&lt;I&gt;"/>
9447 <param name="encounter" type="com.google.inject.spi.TypeEncounter&lt;I&gt;"/>
9448 <doc>
9449 <![CDATA[Invoked when Guice encounters a new type eligible for constructor or members injection.
9450 Called during injector creation (or afterwords if Guice encounters a type at run time and
9451 creates a JIT binding).
9452
9453 @param type encountered by Guice
9454 @param encounter context of this encounter, enables reporting errors, registering injection
9455 listeners and binding method interceptors for {@code type}.
9456
9457 @param <I> the injectable type]]>
9458 </doc>
9459 </method>
9460 <doc>
9461 <![CDATA[Listens for Guice to encounter injectable types. If a given type has its constructor injected in
9462 one situation but only its methods and fields injected in another, Guice will notify this
9463 listener once.
9464
9465 <p>Useful for extra type checking, {@linkplain TypeEncounter#register(InjectionListener)
9466 registering injection listeners}, and {@linkplain TypeEncounter#bindInterceptor(
9467 com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])
9468 binding method interceptors}.
9469
9470 @since 2.0]]>
9471 </doc>
9472 </interface>
9473 <!-- end interface com.google.inject.spi.TypeListener -->
9474 <!-- start class com.google.inject.spi.TypeListenerBinding -->
9475 <class name="TypeListenerBinding" extends="java.lang.Object"
9476 abstract="false"
9477 static="false" final="true" visibility="public"
9478 deprecated="not deprecated">
9479 <implements name="com.google.inject.spi.Element"/>
9480 <method name="getListener" return="com.google.inject.spi.TypeListener"
9481 abstract="false" native="false" synchronized="false"
9482 static="false" final="false" visibility="public"
9483 deprecated="not deprecated">
9484 <doc>
9485 <![CDATA[Returns the registered listener.]]>
9486 </doc>
9487 </method>
9488 <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"
9489 abstract="false" native="false" synchronized="false"
9490 static="false" final="false" visibility="public"
9491 deprecated="not deprecated">
9492 <doc>
9493 <![CDATA[Returns the type matcher which chooses which types the listener should be notified of.]]>
9494 </doc>
9495 </method>
9496 <method name="getSource" return="java.lang.Object"
9497 abstract="false" native="false" synchronized="false"
9498 static="false" final="false" visibility="public"
9499 deprecated="not deprecated">
9500 </method>
9501 <method name="acceptVisitor" return="T"
9502 abstract="false" native="false" synchronized="false"
9503 static="false" final="false" visibility="public"
9504 deprecated="not deprecated">
9505 <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
9506 </method>
9507 <method name="applyTo"
9508 abstract="false" native="false" synchronized="false"
9509 static="false" final="false" visibility="public"
9510 deprecated="not deprecated">
9511 <param name="binder" type="com.google.inject.Binder"/>
9512 </method>
9513 <doc>
9514 <![CDATA[Binds types (picked using a Matcher) to an type listener. Registrations are created explicitly in
9515 a module using {@link com.google.inject.Binder#bindListener(Matcher, TypeListener)} statements:
9516
9517 <pre>
9518 register(only(new TypeLiteral&lt;PaymentService&lt;CreditCard>>() {}), listener);</pre>
9519
9520 @author jessewilson@google.com (Jesse Wilson)
9521 @since 2.0]]>
9522 </doc>
9523 </class>
9524 <!-- end class com.google.inject.spi.TypeListenerBinding -->
9525 <!-- start interface com.google.inject.spi.UntargettedBinding -->
9526 <interface name="UntargettedBinding" abstract="true"
9527 static="false" final="false" visibility="public"
9528 deprecated="not deprecated">
9529 <implements name="com.google.inject.Binding&lt;T&gt;"/>
9530 <doc>
9531 <![CDATA[An untargetted binding. This binding indicates that the injector should use its implicit binding
9532 strategies to resolve injections.
9533
9534 @author jessewilson@google.com (Jesse Wilson)
9535 @since 2.0]]>
9536 </doc>
9537 </interface>
9538 <!-- end interface com.google.inject.spi.UntargettedBinding -->
9539</package>
9540<package name="com.google.inject.spring">
9541 <!-- start class com.google.inject.spring.SpringIntegration -->
9542 <class name="SpringIntegration" extends="java.lang.Object"
9543 abstract="false"
9544 static="false" final="false" visibility="public"
9545 deprecated="not deprecated">
9546 <method name="fromSpring" return="com.google.inject.Provider&lt;T&gt;"
9547 abstract="false" native="false" synchronized="false"
9548 static="true" final="false" visibility="public"
9549 deprecated="not deprecated">
9550 <param name="type" type="java.lang.Class&lt;T&gt;"/>
9551 <param name="name" type="java.lang.String"/>
9552 <doc>
9553 <![CDATA[Creates a provider which looks up objects from Spring using the given name.
9554 Expects a binding to {@link
9555 org.springframework.beans.factory.BeanFactory}. Example usage:
9556
9557 <pre>
9558 bind(DataSource.class)
9559 .toProvider(fromSpring(DataSource.class, "dataSource"));
9560 </pre>]]>
9561 </doc>
9562 </method>
9563 <method name="bindAll"
9564 abstract="false" native="false" synchronized="false"
9565 static="true" final="false" visibility="public"
9566 deprecated="not deprecated">
9567 <param name="binder" type="com.google.inject.Binder"/>
9568 <param name="beanFactory" type="ListableBeanFactory"/>
9569 <doc>
9570 <![CDATA[Binds all Spring beans from the given factory by name. For a Spring bean
9571 named "foo", this method creates a binding to the bean's type and
9572 {@code @Named("foo")}.
9573
9574 @see com.google.inject.name.Named
9575 @see com.google.inject.name.Names#named(String)]]>
9576 </doc>
9577 </method>
9578 <doc>
9579 <![CDATA[Integrates Guice with Spring.
9580
9581 @author crazybob@google.com (Bob Lee)]]>
9582 </doc>
9583 </class>
9584 <!-- end class com.google.inject.spring.SpringIntegration -->
9585</package>
9586<package name="com.google.inject.struts2">
9587 <!-- start class com.google.inject.struts2.GuiceObjectFactory -->
9588 <class name="GuiceObjectFactory" extends="ObjectFactory"
9589 abstract="false"
9590 static="false" final="false" visibility="public"
9591 deprecated="Use {@link com.google.inject.servlet.Struts2Factory} instead.">
9592 <constructor name="GuiceObjectFactory"
9593 static="false" final="false" visibility="public"
9594 deprecated="not deprecated">
9595 </constructor>
9596 <method name="isNoArgConstructorRequired" return="boolean"
9597 abstract="false" native="false" synchronized="false"
9598 static="false" final="false" visibility="public"
9599 deprecated="not deprecated">
9600 </method>
9601 <method name="getClassInstance" return="java.lang.Class"
9602 abstract="false" native="false" synchronized="false"
9603 static="false" final="false" visibility="public"
9604 deprecated="not deprecated">
9605 <param name="name" type="java.lang.String"/>
9606 <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/>
9607 </method>
9608 <method name="buildBean" return="java.lang.Object"
9609 abstract="false" native="false" synchronized="false"
9610 static="false" final="false" visibility="public"
9611 deprecated="not deprecated">
9612 <param name="clazz" type="java.lang.Class"/>
9613 <param name="extraContext" type="java.util.Map"/>
9614 </method>
9615 <method name="buildInterceptor" return="Interceptor"
9616 abstract="false" native="false" synchronized="false"
9617 static="false" final="false" visibility="public"
9618 deprecated="not deprecated">
9619 <param name="interceptorConfig" type="InterceptorConfig"/>
9620 <param name="interceptorRefParams" type="java.util.Map"/>
9621 <exception name="ConfigurationException" type="ConfigurationException"/>
9622 </method>
9623 <doc>
9624 <![CDATA[@deprecated Use {@link com.google.inject.servlet.Struts2Factory} instead.]]>
9625 </doc>
9626 </class>
9627 <!-- end class com.google.inject.struts2.GuiceObjectFactory -->
sberlin@gmail.com251cda62010-12-09 03:27:02 +00009628 <!-- start class com.google.inject.struts2.Struts2Factory -->
9629 <class name="Struts2Factory" extends="ObjectFactory"
9630 abstract="false"
9631 static="false" final="false" visibility="public"
9632 deprecated="not deprecated">
9633 <constructor name="Struts2Factory"
9634 static="false" final="false" visibility="public"
9635 deprecated="not deprecated">
9636 </constructor>
9637 <method name="isNoArgConstructorRequired" return="boolean"
9638 abstract="false" native="false" synchronized="false"
9639 static="false" final="false" visibility="public"
9640 deprecated="not deprecated">
9641 </method>
9642 <method name="getClassInstance" return="java.lang.Class&lt;?&gt;"
9643 abstract="false" native="false" synchronized="false"
9644 static="false" final="false" visibility="public"
9645 deprecated="not deprecated">
9646 <param name="name" type="java.lang.String"/>
9647 <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/>
9648 </method>
9649 <method name="buildBean" return="java.lang.Object"
9650 abstract="false" native="false" synchronized="false"
9651 static="false" final="false" visibility="public"
9652 deprecated="not deprecated">
9653 <param name="clazz" type="java.lang.Class"/>
9654 <param name="extraContext" type="java.util.Map&lt;java.lang.String, java.lang.Object&gt;"/>
9655 </method>
9656 <method name="buildInterceptor" return="Interceptor"
9657 abstract="false" native="false" synchronized="false"
9658 static="false" final="false" visibility="public"
9659 deprecated="not deprecated">
9660 <param name="interceptorConfig" type="InterceptorConfig"/>
9661 <param name="interceptorRefParams" type="java.util.Map"/>
9662 <exception name="ConfigurationException" type="ConfigurationException"/>
9663 </method>
9664 <doc>
9665 <![CDATA[Cleanup up version from Bob's GuiceObjectFactory. Now works properly with
9666 GS2 and fixes several bugs.
9667
9668 @author dhanji@gmail.com
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00009669 @author benmccann.com
9670 @since 3.0]]>
sberlin@gmail.com251cda62010-12-09 03:27:02 +00009671 </doc>
9672 </class>
9673 <!-- end class com.google.inject.struts2.Struts2Factory -->
9674 <!-- start class com.google.inject.struts2.Struts2GuicePluginModule -->
9675 <class name="Struts2GuicePluginModule" extends="com.google.inject.AbstractModule"
9676 abstract="false"
9677 static="false" final="false" visibility="public"
9678 deprecated="not deprecated">
9679 <constructor name="Struts2GuicePluginModule"
9680 static="false" final="false" visibility="public"
9681 deprecated="not deprecated">
9682 </constructor>
9683 <method name="configure"
9684 abstract="false" native="false" synchronized="false"
9685 static="false" final="false" visibility="protected"
9686 deprecated="not deprecated">
9687 </method>
9688 <doc>
9689 <![CDATA[Initializes the Struts 2 Guice Plugin.
9690 Must be added to the injector returned by
9691 {@link GuiceServletContextListener.getInjector()}.
9692
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +00009693 @author benmccann.com
9694 @since 3.0]]>
sberlin@gmail.com251cda62010-12-09 03:27:02 +00009695 </doc>
9696 </class>
9697 <!-- end class com.google.inject.struts2.Struts2GuicePluginModule -->
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009698</package>
9699<package name="com.google.inject.throwingproviders">
sberlin@gmail.com251cda62010-12-09 03:27:02 +00009700 <!-- start interface com.google.inject.throwingproviders.CheckedProvider -->
9701 <interface name="CheckedProvider" abstract="true"
9702 static="false" final="false" visibility="public"
9703 deprecated="not deprecated">
9704 <method name="get" return="T"
9705 abstract="false" native="false" synchronized="false"
9706 static="false" final="false" visibility="public"
9707 deprecated="not deprecated">
9708 <exception name="Exception" type="java.lang.Exception"/>
9709 </method>
9710 <doc>
9711 <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws
9712 a checked Exception. Users may not inject {@code T} directly.
9713
9714 <p>This interface must be extended to use application-specific exception types.
9715 Such subinterfaces may not define new methods, but may narrow the exception type.
9716 <pre>
9717 public interface RemoteProvider&lt;T&gt; extends CheckedProvider&lt;T&gt; {
9718 T get() throws CustomExceptionOne, CustomExceptionTwo;
9719 }
9720 </pre>
9721
9722 <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned
9723 or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get}
9724 will invoked at most once within each scope.
9725
9726 @since 3.0]]>
9727 </doc>
9728 </interface>
9729 <!-- end interface com.google.inject.throwingproviders.CheckedProvider -->
9730 <!-- start class com.google.inject.throwingproviders.CheckedProvides -->
9731 <class name="CheckedProvides" abstract="true"
9732 static="false" final="false" visibility="public"
9733 deprecated="not deprecated">
9734 <implements name="java.lang.annotation.Annotation"/>
9735 <doc>
9736 <![CDATA[Annotates methods of a {@link Module} to create a {@link CheckedProvider}
9737 method binding that can throw exceptions. The method's return type is bound
9738 to a {@link CheckedProvider} that can be injected. Guice will pass
9739 dependencies to the method as parameters. Install {@literal @}CheckedProvides
9740 methods by using
9741 {@link ThrowingProviderBinder#forModule(com.google.inject.Module)} on the
9742 module where the methods are declared.
9743
9744 @author sameb@google.com (Sam Berlin)
9745 @since 3.0]]>
9746 </doc>
9747 </class>
9748 <!-- end class com.google.inject.throwingproviders.CheckedProvides -->
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009749 <!-- start interface com.google.inject.throwingproviders.ThrowingProvider -->
9750 <interface name="ThrowingProvider" abstract="true"
9751 static="false" final="false" visibility="public"
sberlin@gmail.com251cda62010-12-09 03:27:02 +00009752 deprecated="use {@link CheckedProvider} instead.">
9753 <implements name="com.google.inject.throwingproviders.CheckedProvider&lt;T&gt;"/>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009754 <method name="get" return="T"
9755 abstract="false" native="false" synchronized="false"
9756 static="false" final="false" visibility="public"
9757 deprecated="not deprecated">
9758 <exception name="Exception" type="java.lang.Exception"/>
9759 </method>
9760 <doc>
9761 <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws
9762 a checked Exception. Users may not inject {@code T} directly.
9763
9764 <p>This interface must be extended to use application-specific exception types.
9765 Such subinterfaces may not define new methods:
9766 <pre>
9767 public interface RemoteProvider&lt;T&gt; extends ThrowingProvider&lt;T, RemoteException&gt; { }
9768 </pre>
9769
9770 <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned
9771 or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get}
9772 will invoked at most once within each scope.
9773
9774 @author jmourits@google.com (Jerome Mourits)
sberlin@gmail.com251cda62010-12-09 03:27:02 +00009775 @author jessewilson@google.com (Jesse Wilson)
9776 @deprecated use {@link CheckedProvider} instead.]]>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009777 </doc>
9778 </interface>
9779 <!-- end interface com.google.inject.throwingproviders.ThrowingProvider -->
9780 <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder -->
9781 <class name="ThrowingProviderBinder" extends="java.lang.Object"
9782 abstract="false"
9783 static="false" final="false" visibility="public"
9784 deprecated="not deprecated">
9785 <method name="create" return="com.google.inject.throwingproviders.ThrowingProviderBinder"
9786 abstract="false" native="false" synchronized="false"
9787 static="true" final="false" visibility="public"
9788 deprecated="not deprecated">
9789 <param name="binder" type="com.google.inject.Binder"/>
9790 </method>
sberlin@gmail.com251cda62010-12-09 03:27:02 +00009791 <method name="forModule" return="com.google.inject.Module"
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009792 abstract="false" native="false" synchronized="false"
9793 static="true" final="false" visibility="public"
9794 deprecated="not deprecated">
9795 <param name="module" type="com.google.inject.Module"/>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009796 <doc>
sberlin@gmail.com251cda62010-12-09 03:27:02 +00009797 <![CDATA[Returns a module that installs {@literal @}{@link CheckedProvides} methods.
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009798
9799 @since 3.0]]>
9800 </doc>
9801 </method>
9802 <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P&gt;"
9803 abstract="false" native="false" synchronized="false"
9804 static="false" final="false" visibility="public"
9805 deprecated="not deprecated">
9806 <param name="interfaceType" type="java.lang.Class&lt;P&gt;"/>
9807 <param name="valueType" type="java.lang.reflect.Type"/>
9808 </method>
9809 <doc>
sberlin@gmail.com251cda62010-12-09 03:27:02 +00009810 <![CDATA[<p>Builds a binding for a {@link CheckedProvider}.
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009811
9812 <p>You can use a fluent API and custom providers:
9813 <pre><code>ThrowingProviderBinder.create(binder())
9814 .bind(RemoteProvider.class, Customer.class)
9815 .to(RemoteCustomerProvider.class)
9816 .in(RequestScope.class);
9817 </code></pre>
9818 or, you can use throwing provider methods:
9819 <pre><code>class MyModule extends AbstractModule {
9820 configure() {
9821 ThrowingProviderBinder.install(this, binder());
9822 }
9823
sberlin@gmail.com251cda62010-12-09 03:27:02 +00009824 {@literal @}CheckedProvides(RemoteProvider.class)
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009825 {@literal @}RequestScope
9826 Customer provideCustomer(FlakyCustomerCreator creator) throws RemoteException {
9827 return creator.getCustomerOrThrow();
9828 }
9829 }
9830 </code></pre>
9831
9832 @author jmourits@google.com (Jerome Mourits)
9833 @author jessewilson@google.com (Jesse Wilson)]]>
9834 </doc>
9835 </class>
9836 <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder -->
9837 <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder -->
9838 <class name="ThrowingProviderBinder.SecondaryBinder" extends="java.lang.Object"
9839 abstract="false"
9840 static="false" final="false" visibility="public"
9841 deprecated="not deprecated">
9842 <constructor name="ThrowingProviderBinder.SecondaryBinder" type="java.lang.Class&lt;P&gt;, java.lang.reflect.Type"
9843 static="false" final="false" visibility="public"
9844 deprecated="not deprecated">
9845 </constructor>
9846 <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P&gt;"
9847 abstract="false" native="false" synchronized="false"
9848 static="false" final="false" visibility="public"
9849 deprecated="not deprecated">
9850 <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
9851 </method>
9852 <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P&gt;"
9853 abstract="false" native="false" synchronized="false"
9854 static="false" final="false" visibility="public"
9855 deprecated="not deprecated">
9856 <param name="annotation" type="java.lang.annotation.Annotation"/>
9857 </method>
9858 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
9859 abstract="false" native="false" synchronized="false"
9860 static="false" final="false" visibility="public"
9861 deprecated="not deprecated">
sberlin@gmail.com251cda62010-12-09 03:27:02 +00009862 <param name="target" type="P extends com.google.inject.throwingproviders.CheckedProvider"/>
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009863 </method>
9864 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
9865 abstract="false" native="false" synchronized="false"
9866 static="false" final="false" visibility="public"
9867 deprecated="not deprecated">
9868 <param name="targetType" type="java.lang.Class&lt;? extends P&gt;"/>
9869 </method>
9870 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
9871 abstract="false" native="false" synchronized="false"
9872 static="false" final="false" visibility="public"
9873 deprecated="not deprecated">
9874 <param name="targetKey" type="com.google.inject.Key&lt;? extends P&gt;"/>
9875 </method>
9876 </class>
9877 <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder -->
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009878</package>
9879<package name="com.google.inject.tools.jmx">
9880 <!-- start interface com.google.inject.tools.jmx.ManagedBindingMBean -->
9881 <interface name="ManagedBindingMBean" abstract="true"
9882 static="false" final="false" visibility="public"
9883 deprecated="not deprecated">
9884 <method name="getSource" return="java.lang.String"
9885 abstract="false" native="false" synchronized="false"
9886 static="false" final="false" visibility="public"
9887 deprecated="not deprecated">
9888 <doc>
9889 <![CDATA[Gets the source of this binding.]]>
9890 </doc>
9891 </method>
9892 <method name="getProvider" return="java.lang.String"
9893 abstract="false" native="false" synchronized="false"
9894 static="false" final="false" visibility="public"
9895 deprecated="not deprecated">
9896 <doc>
9897 <![CDATA[Gets the provider to which this binding is bound.]]>
9898 </doc>
9899 </method>
9900 <method name="getKey" return="java.lang.String"
9901 abstract="false" native="false" synchronized="false"
9902 static="false" final="false" visibility="public"
9903 deprecated="not deprecated">
9904 <doc>
9905 <![CDATA[Gets the binding key.]]>
9906 </doc>
9907 </method>
9908 <doc>
9909 <![CDATA[JMX interface to bindings.
9910
9911 @author crazybob@google.com (Bob Lee)]]>
9912 </doc>
9913 </interface>
9914 <!-- end interface com.google.inject.tools.jmx.ManagedBindingMBean -->
9915 <!-- start class com.google.inject.tools.jmx.Manager -->
9916 <class name="Manager" extends="java.lang.Object"
9917 abstract="false"
9918 static="false" final="false" visibility="public"
9919 deprecated="not deprecated">
9920 <constructor name="Manager"
9921 static="false" final="false" visibility="public"
9922 deprecated="not deprecated">
9923 </constructor>
9924 <method name="manage"
9925 abstract="false" native="false" synchronized="false"
9926 static="true" final="false" visibility="public"
9927 deprecated="not deprecated">
9928 <param name="domain" type="java.lang.String"/>
9929 <param name="injector" type="com.google.inject.Injector"/>
9930 <doc>
9931 <![CDATA[Registers all the bindings of an Injector with the platform MBean server.
9932 Consider using the name of your root {@link Module} class as the domain.]]>
9933 </doc>
9934 </method>
9935 <method name="manage"
9936 abstract="false" native="false" synchronized="false"
9937 static="true" final="false" visibility="public"
9938 deprecated="not deprecated">
9939 <param name="server" type="javax.management.MBeanServer"/>
9940 <param name="domain" type="java.lang.String"/>
9941 <param name="injector" type="com.google.inject.Injector"/>
9942 <doc>
9943 <![CDATA[Registers all the bindings of an Injector with the given MBean server.
9944 Consider using the name of your root {@link Module} class as the domain.]]>
9945 </doc>
9946 </method>
9947 <method name="main"
9948 abstract="false" native="false" synchronized="false"
9949 static="true" final="false" visibility="public"
9950 deprecated="not deprecated">
9951 <param name="args" type="java.lang.String[]"/>
9952 <exception name="Exception" type="java.lang.Exception"/>
9953 <doc>
9954 <![CDATA[Run with no arguments for usage instructions.]]>
9955 </doc>
9956 </method>
9957 <doc>
9958 <![CDATA[Provides a JMX interface to Guice.
9959
9960 @author crazybob@google.com (Bob Lee)]]>
9961 </doc>
9962 </class>
9963 <!-- end class com.google.inject.tools.jmx.Manager -->
9964</package>
9965<package name="com.google.inject.util">
sberlin@gmail.com42fef492010-10-31 20:13:24 +00009966 <!-- start class com.google.inject.util.Modules -->
9967 <class name="Modules" extends="java.lang.Object"
9968 abstract="false"
9969 static="false" final="true" visibility="public"
9970 deprecated="not deprecated">
9971 <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder"
9972 abstract="false" native="false" synchronized="false"
9973 static="true" final="false" visibility="public"
9974 deprecated="not deprecated">
9975 <param name="modules" type="com.google.inject.Module[]"/>
9976 <doc>
9977 <![CDATA[Returns a builder that creates a module that overlays override modules over the given
9978 modules. If a key is bound in both sets of modules, only the binding from the override modules
9979 is kept. If a single {@link PrivateModule} is supplied or all elements are from
9980 a single {@link PrivateBinder}, then this will overwrite the private bindings.
9981 Otherwise, private bindings will not be overwritten unless they are exposed.
9982 This can be used to replace the bindings of a production module with test bindings:
9983 <pre>
9984 Module functionalTestModule
9985 = Modules.override(new ProductionModule()).with(new TestModule());
9986 </pre>
9987
9988 <p>Prefer to write smaller modules that can be reused and tested without overrides.
9989
9990 @param modules the modules whose bindings are open to be overridden]]>
9991 </doc>
9992 </method>
9993 <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder"
9994 abstract="false" native="false" synchronized="false"
9995 static="true" final="false" visibility="public"
9996 deprecated="not deprecated">
9997 <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
9998 <doc>
9999 <![CDATA[Returns a builder that creates a module that overlays override modules over the given
10000 modules. If a key is bound in both sets of modules, only the binding from the override modules
10001 is kept. If a single {@link PrivateModule} is supplied or all elements are from
10002 a single {@link PrivateBinder}, then this will overwrite the private bindings.
10003 Otherwise, private bindings will not be overwritten unless they are exposed.
10004 This can be used to replace the bindings of a production module with test bindings:
10005 <pre>
10006 Module functionalTestModule
10007 = Modules.override(getProductionModules()).with(getTestModules());
10008 </pre>
10009
10010 <p>Prefer to write smaller modules that can be reused and tested without overrides.
10011
10012 @param modules the modules whose bindings are open to be overridden]]>
10013 </doc>
10014 </method>
10015 <method name="combine" return="com.google.inject.Module"
10016 abstract="false" native="false" synchronized="false"
10017 static="true" final="false" visibility="public"
10018 deprecated="not deprecated">
10019 <param name="modules" type="com.google.inject.Module[]"/>
10020 <doc>
10021 <![CDATA[Returns a new module that installs all of {@code modules}.]]>
10022 </doc>
10023 </method>
10024 <method name="combine" return="com.google.inject.Module"
10025 abstract="false" native="false" synchronized="false"
10026 static="true" final="false" visibility="public"
10027 deprecated="not deprecated">
10028 <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
10029 <doc>
10030 <![CDATA[Returns a new module that installs all of {@code modules}.]]>
10031 </doc>
10032 </method>
10033 <field name="EMPTY_MODULE" type="com.google.inject.Module"
10034 transient="false" volatile="false"
10035 static="true" final="true" visibility="public"
10036 deprecated="not deprecated">
10037 </field>
10038 <doc>
10039 <![CDATA[Static utility methods for creating and working with instances of {@link Module}.
10040
10041 @author jessewilson@google.com (Jesse Wilson)
10042 @since 2.0]]>
10043 </doc>
10044 </class>
10045 <!-- end class com.google.inject.util.Modules -->
10046 <!-- start interface com.google.inject.util.Modules.OverriddenModuleBuilder -->
10047 <interface name="Modules.OverriddenModuleBuilder" abstract="true"
10048 static="true" final="false" visibility="public"
10049 deprecated="not deprecated">
10050 <method name="with" return="com.google.inject.Module"
10051 abstract="false" native="false" synchronized="false"
10052 static="false" final="false" visibility="public"
10053 deprecated="not deprecated">
10054 <param name="overrides" type="com.google.inject.Module[]"/>
10055 <doc>
10056 <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
10057 </doc>
10058 </method>
10059 <method name="with" return="com.google.inject.Module"
10060 abstract="false" native="false" synchronized="false"
10061 static="false" final="false" visibility="public"
10062 deprecated="not deprecated">
10063 <param name="overrides" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
10064 <doc>
10065 <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
10066 </doc>
10067 </method>
10068 <doc>
10069 <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
10070 </doc>
10071 </interface>
10072 <!-- end interface com.google.inject.util.Modules.OverriddenModuleBuilder -->
10073 <!-- start class com.google.inject.util.Providers -->
10074 <class name="Providers" extends="java.lang.Object"
10075 abstract="false"
10076 static="false" final="true" visibility="public"
10077 deprecated="not deprecated">
10078 <method name="of" return="com.google.inject.Provider&lt;T&gt;"
10079 abstract="false" native="false" synchronized="false"
10080 static="true" final="false" visibility="public"
10081 deprecated="not deprecated">
10082 <param name="instance" type="T"/>
10083 <doc>
10084 <![CDATA[Returns a provider which always provides {@code instance}. This should not
10085 be necessary to use in your application, but is helpful for several types
10086 of unit tests.
10087
10088 @param instance the instance that should always be provided. This is also
10089 permitted to be null, to enable aggressive testing, although in real
10090 life a Guice-supplied Provider will never return null.]]>
10091 </doc>
10092 </method>
sberlin@gmail.com251cda62010-12-09 03:27:02 +000010093 <method name="guicify" return="com.google.inject.Provider&lt;T&gt;"
10094 abstract="false" native="false" synchronized="false"
10095 static="true" final="false" visibility="public"
10096 deprecated="not deprecated">
10097 <param name="provider" type="javax.inject.Provider&lt;T&gt;"/>
10098 <doc>
10099 <![CDATA[Returns a Guice-friendly {@code com.google.inject.Provider} for the given
10100 JSR-330 {@code javax.inject.Provider}. The converse method is unnecessary,
sberlin@gmail.comfe370ca2011-01-09 16:26:52 +000010101 since Guice providers directly implement the JSR-330 interface.
10102
10103 @since 3.0]]>
sberlin@gmail.com251cda62010-12-09 03:27:02 +000010104 </doc>
10105 </method>
sberlin@gmail.com42fef492010-10-31 20:13:24 +000010106 <doc>
10107 <![CDATA[Static utility methods for creating and working with instances of
10108 {@link Provider}.
10109
10110 @author Kevin Bourrillion (kevinb9n@gmail.com)
10111 @since 2.0]]>
10112 </doc>
10113 </class>
10114 <!-- end class com.google.inject.util.Providers -->
10115 <!-- start class com.google.inject.util.Types -->
10116 <class name="Types" extends="java.lang.Object"
10117 abstract="false"
10118 static="false" final="true" visibility="public"
10119 deprecated="not deprecated">
10120 <method name="newParameterizedType" return="java.lang.reflect.ParameterizedType"
10121 abstract="false" native="false" synchronized="false"
10122 static="true" final="false" visibility="public"
10123 deprecated="not deprecated">
10124 <param name="rawType" type="java.lang.reflect.Type"/>
10125 <param name="typeArguments" type="java.lang.reflect.Type[]"/>
10126 <doc>
10127 <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to
10128 {@code rawType}. The returned type does not have an owner type.
10129
10130 @return a {@link java.io.Serializable serializable} parameterized type.]]>
10131 </doc>
10132 </method>
10133 <method name="newParameterizedTypeWithOwner" return="java.lang.reflect.ParameterizedType"
10134 abstract="false" native="false" synchronized="false"
10135 static="true" final="false" visibility="public"
10136 deprecated="not deprecated">
10137 <param name="ownerType" type="java.lang.reflect.Type"/>
10138 <param name="rawType" type="java.lang.reflect.Type"/>
10139 <param name="typeArguments" type="java.lang.reflect.Type[]"/>
10140 <doc>
10141 <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to
10142 {@code rawType} and enclosed by {@code ownerType}.
10143
10144 @return a {@link java.io.Serializable serializable} parameterized type.]]>
10145 </doc>
10146 </method>
10147 <method name="arrayOf" return="java.lang.reflect.GenericArrayType"
10148 abstract="false" native="false" synchronized="false"
10149 static="true" final="false" visibility="public"
10150 deprecated="not deprecated">
10151 <param name="componentType" type="java.lang.reflect.Type"/>
10152 <doc>
10153 <![CDATA[Returns an array type whose elements are all instances of
10154 {@code componentType}.
10155
10156 @return a {@link java.io.Serializable serializable} generic array type.]]>
10157 </doc>
10158 </method>
10159 <method name="subtypeOf" return="java.lang.reflect.WildcardType"
10160 abstract="false" native="false" synchronized="false"
10161 static="true" final="false" visibility="public"
10162 deprecated="not deprecated">
10163 <param name="bound" type="java.lang.reflect.Type"/>
10164 <doc>
10165 <![CDATA[Returns a type that represents an unknown type that extends {@code bound}.
10166 For example, if {@code bound} is {@code CharSequence.class}, this returns
10167 {@code ? extends CharSequence}. If {@code bound} is {@code Object.class},
10168 this returns {@code ?}, which is shorthand for {@code ? extends Object}.]]>
10169 </doc>
10170 </method>
10171 <method name="supertypeOf" return="java.lang.reflect.WildcardType"
10172 abstract="false" native="false" synchronized="false"
10173 static="true" final="false" visibility="public"
10174 deprecated="not deprecated">
10175 <param name="bound" type="java.lang.reflect.Type"/>
10176 <doc>
10177 <![CDATA[Returns a type that represents an unknown supertype of {@code bound}. For
10178 example, if {@code bound} is {@code String.class}, this returns {@code ?
10179 super String}.]]>
10180 </doc>
10181 </method>
10182 <method name="listOf" return="java.lang.reflect.ParameterizedType"
10183 abstract="false" native="false" synchronized="false"
10184 static="true" final="false" visibility="public"
10185 deprecated="not deprecated">
10186 <param name="elementType" type="java.lang.reflect.Type"/>
10187 <doc>
10188 <![CDATA[Returns a type modelling a {@link List} whose elements are of type
10189 {@code elementType}.
10190
10191 @return a {@link java.io.Serializable serializable} parameterized type.]]>
10192 </doc>
10193 </method>
10194 <method name="setOf" return="java.lang.reflect.ParameterizedType"
10195 abstract="false" native="false" synchronized="false"
10196 static="true" final="false" visibility="public"
10197 deprecated="not deprecated">
10198 <param name="elementType" type="java.lang.reflect.Type"/>
10199 <doc>
10200 <![CDATA[Returns a type modelling a {@link Set} whose elements are of type
10201 {@code elementType}.
10202
10203 @return a {@link java.io.Serializable serializable} parameterized type.]]>
10204 </doc>
10205 </method>
10206 <method name="mapOf" return="java.lang.reflect.ParameterizedType"
10207 abstract="false" native="false" synchronized="false"
10208 static="true" final="false" visibility="public"
10209 deprecated="not deprecated">
10210 <param name="keyType" type="java.lang.reflect.Type"/>
10211 <param name="valueType" type="java.lang.reflect.Type"/>
10212 <doc>
10213 <![CDATA[Returns a type modelling a {@link Map} whose keys are of type
10214 {@code keyType} and whose values are of type {@code valueType}.
10215
10216 @return a {@link java.io.Serializable serializable} parameterized type.]]>
10217 </doc>
10218 </method>
10219 <method name="providerOf" return="java.lang.reflect.ParameterizedType"
10220 abstract="false" native="false" synchronized="false"
10221 static="true" final="false" visibility="public"
10222 deprecated="not deprecated">
10223 <param name="providedType" type="java.lang.reflect.Type"/>
10224 <doc>
10225 <![CDATA[Returns a type modelling a {@link Provider} that provides elements of type
10226 {@code elementType}.
10227
10228 @return a {@link java.io.Serializable serializable} parameterized type.]]>
10229 </doc>
10230 </method>
10231 <doc>
10232 <![CDATA[Static methods for working with types.
10233
10234 @author crazybob@google.com (Bob Lee)
10235 @since 2.0]]>
10236 </doc>
10237 </class>
10238 <!-- end class com.google.inject.util.Types -->
10239</package>
10240
10241</api>