1<?xml version="1.0" encoding="iso-8859-1" standalone="no"?> 2<!-- Generated by the JDiff Javadoc doclet --> 3<!-- (http://www.jdiff.org) --> 4<!-- on Thu Mar 24 21:41:19 EDT 2011 --> 5 6<api 7 xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 8 xsi:noNamespaceSchemaLocation='api.xsd' 9 name="3.0" 10 jdversion="1.1.1"> 11 12<!-- Command line arguments = -doclet jdiff.JDiff -docletpath C:\Documents and Settings\Sam Berlin\workspace\guice\lib\build\jdiff\jdiff.jar;C:\Documents and Settings\Sam Berlin\workspace\guice\lib\build\jdiff\xerces.jar -classpath C:\Documents and Settings\Sam Berlin\workspace\guice\lib\javax.inject.jar;C:\Documents and Settings\Sam Berlin\workspace\guice\lib\aopalliance.jar -apidir build/docs/latest-api-diffs -apiname 3.0 --> 13<package name="com.google.inject"> 14 <!-- start class com.google.inject.AbstractModule --> 15 <class name="AbstractModule" extends="java.lang.Object" 16 abstract="true" 17 static="false" final="false" visibility="public" 18 deprecated="not deprecated"> 19 <implements name="com.google.inject.Module"/> 20 <constructor name="AbstractModule" 21 static="false" final="false" visibility="public" 22 deprecated="not deprecated"> 23 </constructor> 24 <method name="configure" 25 abstract="false" native="false" synchronized="true" 26 static="false" final="true" visibility="public" 27 deprecated="not deprecated"> 28 <param name="builder" type="com.google.inject.Binder"/> 29 </method> 30 <method name="configure" 31 abstract="true" native="false" synchronized="false" 32 static="false" final="false" visibility="protected" 33 deprecated="not deprecated"> 34 <doc> 35 <![CDATA[Configures a {@link Binder} via the exposed methods.]]> 36 </doc> 37 </method> 38 <method name="binder" return="com.google.inject.Binder" 39 abstract="false" native="false" synchronized="false" 40 static="false" final="false" visibility="protected" 41 deprecated="not deprecated"> 42 <doc> 43 <![CDATA[Gets direct access to the underlying {@code Binder}.]]> 44 </doc> 45 </method> 46 <method name="bindScope" 47 abstract="false" native="false" synchronized="false" 48 static="false" final="false" visibility="protected" 49 deprecated="not deprecated"> 50 <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 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<T>" 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<T>"/> 61 <doc> 62 <![CDATA[@see Binder#bind(Key)]]> 63 </doc> 64 </method> 65 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 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<T>"/> 70 <doc> 71 <![CDATA[@see Binder#bind(TypeLiteral)]]> 72 </doc> 73 </method> 74 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 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<T>"/> 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<? super java.lang.Class<?>>"/> 153 <param name="methodMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>"/> 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<?>"/> 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<?>"/> 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<T>" 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<T>"/> 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<T>" 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<T>"/> 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<? super com.google.inject.TypeLiteral<?>>"/> 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<T>" 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<T>"/> 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<T>" 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<T>"/> 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<? super com.google.inject.TypeLiteral<?>>"/> 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<? super java.lang.Class<?>>"/> 291 <param name="methodMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>"/> 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<? extends java.lang.annotation.Annotation>"/> 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<T>" 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<T>"/> 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<T>" 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<T>"/> 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<T>" 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<T>"/> 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<T>"/> 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<T>" 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<T>"/> 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<T>" 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<T>"/> 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<T>" 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<T>"/> 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<T>" 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<T>"/> 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<? super com.google.inject.TypeLiteral<?>>"/> 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<? super com.google.inject.TypeLiteral<?>>"/> 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> 584 <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> 635 <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<PaymentService<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<T>" 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<T>" 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<? super T, V>"/> 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<V>"/> 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<com.google.inject.spi.Message>" 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<com.google.inject.spi.Message>" 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<com.google.inject.spi.Message>" 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<com.google.inject.spi.Message>" 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> 1032 <![CDATA[Creates an injector for the given set of modules. 1033 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<? extends com.google.inject.Module>"/> 1043 <doc> 1044 <![CDATA[Creates an injector for the given set of modules. 1045 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 1058 stage. 1059 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<? extends com.google.inject.Module>"/> 1070 <doc> 1071 <![CDATA[Creates an injector for the given set of modules, in a given development 1072 stage. 1073 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 1080 {@link Module}s. 1081 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<T>" 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<T>"/> 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<T>" 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<T>"/> 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<com.google.inject.Key<?>, com.google.inject.Binding<?>>" 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<com.google.inject.Key<?>, com.google.inject.Binding<?>>" 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<T>" 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<T>"/> 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<T>" 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<T>"/> 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<T>" 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<T>"/> 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<com.google.inject.Binding<T>>" 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<T>"/> 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<T>" 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<T>"/> 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<T>" 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<T>"/> 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<T>"/> 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<T>"/> 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<? extends com.google.inject.Module>"/> 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. Optional 1373 injections in just-in-time bindings (created in the parent injector) may be silently 1374 ignored if the optional dependencies are from the child injector. 1375 1376 <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time 1377 bindings. The lone exception is the key for {@code Injector.class}, which is bound by each 1378 injector to itself. 1379 1380 @since 2.0]]> 1381 </doc> 1382 </method> 1383 <method name="createChildInjector" return="com.google.inject.Injector" 1384 abstract="false" native="false" synchronized="false" 1385 static="false" final="false" visibility="public" 1386 deprecated="not deprecated"> 1387 <param name="modules" type="com.google.inject.Module[]"/> 1388 <doc> 1389 <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes, 1390 interceptors and type converters are inherited -- they are visible to the child injector. 1391 Elements of the child injector are not visible to its parent. 1392 1393 <p>Just-in-time bindings created for child injectors will be created in an ancestor injector 1394 whenever possible. This allows for scoped instances to be shared between injectors. Use 1395 explicit bindings to prevent bindings from being shared with the parent injector. 1396 1397 <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time 1398 bindings. The lone exception is the key for {@code Injector.class}, which is bound by each 1399 injector to itself. 1400 1401 @since 2.0]]> 1402 </doc> 1403 </method> 1404 <method name="getScopeBindings" return="java.util.Map<java.lang.Class<? extends java.lang.annotation.Annotation>, com.google.inject.Scope>" 1405 abstract="false" native="false" synchronized="false" 1406 static="false" final="false" visibility="public" 1407 deprecated="not deprecated"> 1408 <doc> 1409 <![CDATA[Returns a map containing all scopes in the injector. The maps keys are scoping annotations 1410 like {@code Singleton.class}, and the values are scope instances, such as {@code 1411 Scopes.SINGLETON}. The returned map is immutable. 1412 1413 <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1414 1415 @since 3.0]]> 1416 </doc> 1417 </method> 1418 <method name="getTypeConverterBindings" return="java.util.Set<com.google.inject.spi.TypeConverterBinding>" 1419 abstract="false" native="false" synchronized="false" 1420 static="false" final="false" visibility="public" 1421 deprecated="not deprecated"> 1422 <doc> 1423 <![CDATA[Returns a set containing all type converter bindings in the injector. The returned set is 1424 immutable. 1425 1426 <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1427 1428 @since 3.0]]> 1429 </doc> 1430 </method> 1431 <doc> 1432 <![CDATA[Builds the graphs of objects that make up your application. The injector tracks the dependencies 1433 for each type and uses bindings to inject them. This is the core of Guice, although you rarely 1434 interact with it directly. This "behind-the-scenes" operation is what distinguishes dependency 1435 injection from its cousin, the service locator pattern. 1436 1437 <p>Contains several default bindings: 1438 1439 <ul> 1440 <li>This {@link Injector} instance itself 1441 <li>A {@code Provider<T>} for each binding of type {@code T} 1442 <li>The {@link java.util.logging.Logger} for the class being injected 1443 <li>The {@link Stage} in which the Injector was created 1444 </ul> 1445 1446 Injectors are created using the facade class {@link Guice}. 1447 1448 <p>An injector can also {@link #injectMembers(Object) inject the dependencies} of 1449 already-constructed instances. This can be used to interoperate with objects created by other 1450 frameworks or services. 1451 1452 <p>Injectors can be {@link #createChildInjector(Iterable) hierarchical}. Child injectors inherit 1453 the configuration of their parent injectors, but the converse does not hold. 1454 1455 <p>The injector's {@link #getBindings() internal bindings} are available for introspection. This 1456 enables tools and extensions to operate on an injector reflectively. 1457 1458 @author crazybob@google.com (Bob Lee) 1459 @author jessewilson@google.com (Jesse Wilson)]]> 1460 </doc> 1461 </interface> 1462 <!-- end interface com.google.inject.Injector --> 1463 <!-- start class com.google.inject.Key --> 1464 <class name="Key" extends="java.lang.Object" 1465 abstract="false" 1466 static="false" final="false" visibility="public" 1467 deprecated="not deprecated"> 1468 <constructor name="Key" type="java.lang.Class<? extends java.lang.annotation.Annotation>" 1469 static="false" final="false" visibility="protected" 1470 deprecated="not deprecated"> 1471 <doc> 1472 <![CDATA[Constructs a new key. Derives the type from this class's type parameter. 1473 1474 <p>Clients create an empty anonymous subclass. Doing so embeds the type 1475 parameter in the anonymous class's type hierarchy so we can reconstitute it 1476 at runtime despite erasure. 1477 1478 <p>Example usage for a binding of type {@code Foo} annotated with 1479 {@code @Bar}: 1480 1481 <p>{@code new Key<Foo>(Bar.class) {}}.]]> 1482 </doc> 1483 </constructor> 1484 <constructor name="Key" type="java.lang.annotation.Annotation" 1485 static="false" final="false" visibility="protected" 1486 deprecated="not deprecated"> 1487 <doc> 1488 <![CDATA[Constructs a new key. Derives the type from this class's type parameter. 1489 1490 <p>Clients create an empty anonymous subclass. Doing so embeds the type 1491 parameter in the anonymous class's type hierarchy so we can reconstitute it 1492 at runtime despite erasure. 1493 1494 <p>Example usage for a binding of type {@code Foo} annotated with 1495 {@code @Bar}: 1496 1497 <p>{@code new Key<Foo>(new Bar()) {}}.]]> 1498 </doc> 1499 </constructor> 1500 <constructor name="Key" 1501 static="false" final="false" visibility="protected" 1502 deprecated="not deprecated"> 1503 <doc> 1504 <![CDATA[Constructs a new key. Derives the type from this class's type parameter. 1505 1506 <p>Clients create an empty anonymous subclass. Doing so embeds the type 1507 parameter in the anonymous class's type hierarchy so we can reconstitute it 1508 at runtime despite erasure. 1509 1510 <p>Example usage for a binding of type {@code Foo}: 1511 1512 <p>{@code new Key<Foo>() {}}.]]> 1513 </doc> 1514 </constructor> 1515 <method name="getTypeLiteral" return="com.google.inject.TypeLiteral<T>" 1516 abstract="false" native="false" synchronized="false" 1517 static="false" final="true" visibility="public" 1518 deprecated="not deprecated"> 1519 <doc> 1520 <![CDATA[Gets the key type.]]> 1521 </doc> 1522 </method> 1523 <method name="getAnnotationType" return="java.lang.Class<? extends java.lang.annotation.Annotation>" 1524 abstract="false" native="false" synchronized="false" 1525 static="false" final="true" visibility="public" 1526 deprecated="not deprecated"> 1527 <doc> 1528 <![CDATA[Gets the annotation type.]]> 1529 </doc> 1530 </method> 1531 <method name="getAnnotation" return="java.lang.annotation.Annotation" 1532 abstract="false" native="false" synchronized="false" 1533 static="false" final="true" visibility="public" 1534 deprecated="not deprecated"> 1535 <doc> 1536 <![CDATA[Gets the annotation.]]> 1537 </doc> 1538 </method> 1539 <method name="equals" return="boolean" 1540 abstract="false" native="false" synchronized="false" 1541 static="false" final="true" visibility="public" 1542 deprecated="not deprecated"> 1543 <param name="o" type="java.lang.Object"/> 1544 </method> 1545 <method name="hashCode" return="int" 1546 abstract="false" native="false" synchronized="false" 1547 static="false" final="true" visibility="public" 1548 deprecated="not deprecated"> 1549 </method> 1550 <method name="toString" return="java.lang.String" 1551 abstract="false" native="false" synchronized="false" 1552 static="false" final="true" visibility="public" 1553 deprecated="not deprecated"> 1554 </method> 1555 <method name="get" return="com.google.inject.Key<T>" 1556 abstract="false" native="false" synchronized="false" 1557 static="true" final="false" visibility="public" 1558 deprecated="not deprecated"> 1559 <param name="type" type="java.lang.Class<T>"/> 1560 <doc> 1561 <![CDATA[Gets a key for an injection type.]]> 1562 </doc> 1563 </method> 1564 <method name="get" return="com.google.inject.Key<T>" 1565 abstract="false" native="false" synchronized="false" 1566 static="true" final="false" visibility="public" 1567 deprecated="not deprecated"> 1568 <param name="type" type="java.lang.Class<T>"/> 1569 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 1570 <doc> 1571 <![CDATA[Gets a key for an injection type and an annotation type.]]> 1572 </doc> 1573 </method> 1574 <method name="get" return="com.google.inject.Key<T>" 1575 abstract="false" native="false" synchronized="false" 1576 static="true" final="false" visibility="public" 1577 deprecated="not deprecated"> 1578 <param name="type" type="java.lang.Class<T>"/> 1579 <param name="annotation" type="java.lang.annotation.Annotation"/> 1580 <doc> 1581 <![CDATA[Gets a key for an injection type and an annotation.]]> 1582 </doc> 1583 </method> 1584 <method name="get" return="com.google.inject.Key<?>" 1585 abstract="false" native="false" synchronized="false" 1586 static="true" final="false" visibility="public" 1587 deprecated="not deprecated"> 1588 <param name="type" type="java.lang.reflect.Type"/> 1589 <doc> 1590 <![CDATA[Gets a key for an injection type.]]> 1591 </doc> 1592 </method> 1593 <method name="get" return="com.google.inject.Key<?>" 1594 abstract="false" native="false" synchronized="false" 1595 static="true" final="false" visibility="public" 1596 deprecated="not deprecated"> 1597 <param name="type" type="java.lang.reflect.Type"/> 1598 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 1599 <doc> 1600 <![CDATA[Gets a key for an injection type and an annotation type.]]> 1601 </doc> 1602 </method> 1603 <method name="get" return="com.google.inject.Key<?>" 1604 abstract="false" native="false" synchronized="false" 1605 static="true" final="false" visibility="public" 1606 deprecated="not deprecated"> 1607 <param name="type" type="java.lang.reflect.Type"/> 1608 <param name="annotation" type="java.lang.annotation.Annotation"/> 1609 <doc> 1610 <![CDATA[Gets a key for an injection type and an annotation.]]> 1611 </doc> 1612 </method> 1613 <method name="get" return="com.google.inject.Key<T>" 1614 abstract="false" native="false" synchronized="false" 1615 static="true" final="false" visibility="public" 1616 deprecated="not deprecated"> 1617 <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1618 <doc> 1619 <![CDATA[Gets a key for an injection type.]]> 1620 </doc> 1621 </method> 1622 <method name="get" return="com.google.inject.Key<T>" 1623 abstract="false" native="false" synchronized="false" 1624 static="true" final="false" visibility="public" 1625 deprecated="not deprecated"> 1626 <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1627 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 1628 <doc> 1629 <![CDATA[Gets a key for an injection type and an annotation type.]]> 1630 </doc> 1631 </method> 1632 <method name="get" return="com.google.inject.Key<T>" 1633 abstract="false" native="false" synchronized="false" 1634 static="true" final="false" visibility="public" 1635 deprecated="not deprecated"> 1636 <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1637 <param name="annotation" type="java.lang.annotation.Annotation"/> 1638 <doc> 1639 <![CDATA[Gets a key for an injection type and an annotation.]]> 1640 </doc> 1641 </method> 1642 <method name="ofType" return="com.google.inject.Key<T>" 1643 abstract="false" native="false" synchronized="false" 1644 static="false" final="false" visibility="public" 1645 deprecated="not deprecated"> 1646 <param name="type" type="java.lang.Class<T>"/> 1647 <doc> 1648 <![CDATA[Returns a new key of the specified type with the same annotation as this 1649 key. 1650 1651 @since 3.0]]> 1652 </doc> 1653 </method> 1654 <method name="ofType" return="com.google.inject.Key<?>" 1655 abstract="false" native="false" synchronized="false" 1656 static="false" final="false" visibility="public" 1657 deprecated="not deprecated"> 1658 <param name="type" type="java.lang.reflect.Type"/> 1659 <doc> 1660 <![CDATA[Returns a new key of the specified type with the same annotation as this 1661 key. 1662 1663 @since 3.0]]> 1664 </doc> 1665 </method> 1666 <method name="ofType" return="com.google.inject.Key<T>" 1667 abstract="false" native="false" synchronized="false" 1668 static="false" final="false" visibility="public" 1669 deprecated="not deprecated"> 1670 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 1671 <doc> 1672 <![CDATA[Returns a new key of the specified type with the same annotation as this 1673 key. 1674 1675 @since 3.0]]> 1676 </doc> 1677 </method> 1678 <method name="hasAttributes" return="boolean" 1679 abstract="false" native="false" synchronized="false" 1680 static="false" final="false" visibility="public" 1681 deprecated="not deprecated"> 1682 <doc> 1683 <![CDATA[Returns true if this key has annotation attributes. 1684 1685 @since 3.0]]> 1686 </doc> 1687 </method> 1688 <method name="withoutAttributes" return="com.google.inject.Key<T>" 1689 abstract="false" native="false" synchronized="false" 1690 static="false" final="false" visibility="public" 1691 deprecated="not deprecated"> 1692 <doc> 1693 <![CDATA[Returns this key without annotation attributes, i.e. with only the 1694 annotation type. 1695 1696 @since 3.0]]> 1697 </doc> 1698 </method> 1699 <doc> 1700 <![CDATA[Binding key consisting of an injection type and an optional annotation. 1701 Matches the type and annotation at a point of injection. 1702 1703 <p>For example, {@code Key.get(Service.class, Transactional.class)} will 1704 match: 1705 1706 <pre> 1707 {@literal @}Inject 1708 public void setService({@literal @}Transactional Service service) { 1709 ... 1710 } 1711 </pre> 1712 1713 <p>{@code Key} supports generic types via subclassing just like {@link 1714 TypeLiteral}. 1715 1716 <p>Keys do not differentiate between primitive types (int, char, etc.) and 1717 their correpsonding wrapper types (Integer, Character, etc.). Primitive 1718 types will be replaced with their wrapper types when keys are created. 1719 1720 @author crazybob@google.com (Bob Lee)]]> 1721 </doc> 1722 </class> 1723 <!-- end class com.google.inject.Key --> 1724 <!-- start interface com.google.inject.MembersInjector --> 1725 <interface name="MembersInjector" abstract="true" 1726 static="false" final="false" visibility="public" 1727 deprecated="not deprecated"> 1728 <method name="injectMembers" 1729 abstract="false" native="false" synchronized="false" 1730 static="false" final="false" visibility="public" 1731 deprecated="not deprecated"> 1732 <param name="instance" type="T"/> 1733 <doc> 1734 <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or 1735 absence of an injectable constructor. 1736 1737 <p>Whenever Guice creates an instance, it performs this injection automatically (after first 1738 performing constructor injection), so if you're able to let Guice create all your objects for 1739 you, you'll never need to use this method. 1740 1741 @param instance to inject members on. May be {@code null}.]]> 1742 </doc> 1743 </method> 1744 <doc> 1745 <![CDATA[Injects dependencies into the fields and methods on instances of type {@code T}. Ignores the 1746 presence or absence of an injectable constructor. 1747 1748 @param <T> type to inject members of 1749 1750 @author crazybob@google.com (Bob Lee) 1751 @author jessewilson@google.com (Jesse Wilson) 1752 @since 2.0]]> 1753 </doc> 1754 </interface> 1755 <!-- end interface com.google.inject.MembersInjector --> 1756 <!-- start interface com.google.inject.Module --> 1757 <interface name="Module" abstract="true" 1758 static="false" final="false" visibility="public" 1759 deprecated="not deprecated"> 1760 <method name="configure" 1761 abstract="false" native="false" synchronized="false" 1762 static="false" final="false" visibility="public" 1763 deprecated="not deprecated"> 1764 <param name="binder" type="com.google.inject.Binder"/> 1765 <doc> 1766 <![CDATA[Contributes bindings and other configurations for this module to {@code binder}. 1767 1768 <p><strong>Do not invoke this method directly</strong> to install submodules. Instead use 1769 {@link Binder#install(Module)}, which ensures that {@link Provides provider methods} are 1770 discovered.]]> 1771 </doc> 1772 </method> 1773 <doc> 1774 <![CDATA[A module contributes configuration information, typically interface 1775 bindings, which will be used to create an {@link Injector}. A Guice-based 1776 application is ultimately composed of little more than a set of 1777 {@code Module}s and some bootstrapping code. 1778 1779 <p>Your Module classes can use a more streamlined syntax by extending 1780 {@link AbstractModule} rather than implementing this interface directly. 1781 1782 <p>In addition to the bindings configured via {@link #configure}, bindings 1783 will be created for all methods annotated with {@literal @}{@link Provides}. 1784 Use scope and binding annotations on these methods to configure the 1785 bindings.]]> 1786 </doc> 1787 </interface> 1788 <!-- end interface com.google.inject.Module --> 1789 <!-- start class com.google.inject.OutOfScopeException --> 1790 <class name="OutOfScopeException" extends="java.lang.RuntimeException" 1791 abstract="false" 1792 static="false" final="true" visibility="public" 1793 deprecated="not deprecated"> 1794 <constructor name="OutOfScopeException" type="java.lang.String" 1795 static="false" final="false" visibility="public" 1796 deprecated="not deprecated"> 1797 </constructor> 1798 <constructor name="OutOfScopeException" type="java.lang.String, java.lang.Throwable" 1799 static="false" final="false" visibility="public" 1800 deprecated="not deprecated"> 1801 </constructor> 1802 <constructor name="OutOfScopeException" type="java.lang.Throwable" 1803 static="false" final="false" visibility="public" 1804 deprecated="not deprecated"> 1805 </constructor> 1806 <doc> 1807 <![CDATA[Thrown from {@link Provider#get} when an attempt is made to access a scoped 1808 object while the scope in question is not currently active. 1809 1810 @author kevinb@google.com (Kevin Bourrillion) 1811 @since 2.0]]> 1812 </doc> 1813 </class> 1814 <!-- end class com.google.inject.OutOfScopeException --> 1815 <!-- start interface com.google.inject.PrivateBinder --> 1816 <interface name="PrivateBinder" abstract="true" 1817 static="false" final="false" visibility="public" 1818 deprecated="not deprecated"> 1819 <implements name="com.google.inject.Binder"/> 1820 <method name="expose" 1821 abstract="false" native="false" synchronized="false" 1822 static="false" final="false" visibility="public" 1823 deprecated="not deprecated"> 1824 <param name="key" type="com.google.inject.Key<?>"/> 1825 <doc> 1826 <![CDATA[Makes the binding for {@code key} available to the enclosing environment]]> 1827 </doc> 1828 </method> 1829 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 1830 abstract="false" native="false" synchronized="false" 1831 static="false" final="false" visibility="public" 1832 deprecated="not deprecated"> 1833 <param name="type" type="java.lang.Class<?>"/> 1834 <doc> 1835 <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link 1836 com.google.inject.binder.AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 1837 binding annotation.]]> 1838 </doc> 1839 </method> 1840 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 1841 abstract="false" native="false" synchronized="false" 1842 static="false" final="false" visibility="public" 1843 deprecated="not deprecated"> 1844 <param name="type" type="com.google.inject.TypeLiteral<?>"/> 1845 <doc> 1846 <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link 1847 AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 1848 binding annotation.]]> 1849 </doc> 1850 </method> 1851 <method name="withSource" return="com.google.inject.PrivateBinder" 1852 abstract="false" native="false" synchronized="false" 1853 static="false" final="false" visibility="public" 1854 deprecated="not deprecated"> 1855 <param name="source" type="java.lang.Object"/> 1856 </method> 1857 <method name="skipSources" return="com.google.inject.PrivateBinder" 1858 abstract="false" native="false" synchronized="false" 1859 static="false" final="false" visibility="public" 1860 deprecated="not deprecated"> 1861 <param name="classesToSkip" type="java.lang.Class[]"/> 1862 </method> 1863 <doc> 1864 <![CDATA[Returns a binder whose configuration information is hidden from its environment by default. See 1865 {@link com.google.inject.PrivateModule PrivateModule} for details. 1866 1867 @author jessewilson@google.com (Jesse Wilson) 1868 @since 2.0]]> 1869 </doc> 1870 </interface> 1871 <!-- end interface com.google.inject.PrivateBinder --> 1872 <!-- start class com.google.inject.PrivateModule --> 1873 <class name="PrivateModule" extends="java.lang.Object" 1874 abstract="true" 1875 static="false" final="false" visibility="public" 1876 deprecated="not deprecated"> 1877 <implements name="com.google.inject.Module"/> 1878 <constructor name="PrivateModule" 1879 static="false" final="false" visibility="public" 1880 deprecated="not deprecated"> 1881 </constructor> 1882 <method name="configure" 1883 abstract="false" native="false" synchronized="true" 1884 static="false" final="true" visibility="public" 1885 deprecated="not deprecated"> 1886 <param name="binder" type="com.google.inject.Binder"/> 1887 </method> 1888 <method name="configure" 1889 abstract="true" native="false" synchronized="false" 1890 static="false" final="false" visibility="protected" 1891 deprecated="not deprecated"> 1892 <doc> 1893 <![CDATA[Creates bindings and other configurations private to this module. Use {@link #expose(Class) 1894 expose()} to make the bindings in this module available externally.]]> 1895 </doc> 1896 </method> 1897 <method name="expose" 1898 abstract="false" native="false" synchronized="false" 1899 static="false" final="true" visibility="protected" 1900 deprecated="not deprecated"> 1901 <param name="key" type="com.google.inject.Key<T>"/> 1902 <doc> 1903 <![CDATA[Makes the binding for {@code key} available to other modules and the injector.]]> 1904 </doc> 1905 </method> 1906 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 1907 abstract="false" native="false" synchronized="false" 1908 static="false" final="true" visibility="protected" 1909 deprecated="not deprecated"> 1910 <param name="type" type="java.lang.Class<?>"/> 1911 <doc> 1912 <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link 1913 AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 1914 binding annotation.]]> 1915 </doc> 1916 </method> 1917 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 1918 abstract="false" native="false" synchronized="false" 1919 static="false" final="true" visibility="protected" 1920 deprecated="not deprecated"> 1921 <param name="type" type="com.google.inject.TypeLiteral<?>"/> 1922 <doc> 1923 <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link 1924 AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 1925 binding annotation.]]> 1926 </doc> 1927 </method> 1928 <method name="binder" return="com.google.inject.PrivateBinder" 1929 abstract="false" native="false" synchronized="false" 1930 static="false" final="true" visibility="protected" 1931 deprecated="not deprecated"> 1932 <doc> 1933 <![CDATA[Returns the current binder.]]> 1934 </doc> 1935 </method> 1936 <method name="bindScope" 1937 abstract="false" native="false" synchronized="false" 1938 static="false" final="true" visibility="protected" 1939 deprecated="not deprecated"> 1940 <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 1941 <param name="scope" type="com.google.inject.Scope"/> 1942 <doc> 1943 <![CDATA[@see Binder#bindScope(Class, Scope)]]> 1944 </doc> 1945 </method> 1946 <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder<T>" 1947 abstract="false" native="false" synchronized="false" 1948 static="false" final="true" visibility="protected" 1949 deprecated="not deprecated"> 1950 <param name="key" type="com.google.inject.Key<T>"/> 1951 <doc> 1952 <![CDATA[@see Binder#bind(Key)]]> 1953 </doc> 1954 </method> 1955 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 1956 abstract="false" native="false" synchronized="false" 1957 static="false" final="true" visibility="protected" 1958 deprecated="not deprecated"> 1959 <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1960 <doc> 1961 <![CDATA[@see Binder#bind(TypeLiteral)]]> 1962 </doc> 1963 </method> 1964 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 1965 abstract="false" native="false" synchronized="false" 1966 static="false" final="true" visibility="protected" 1967 deprecated="not deprecated"> 1968 <param name="clazz" type="java.lang.Class<T>"/> 1969 <doc> 1970 <![CDATA[@see Binder#bind(Class)]]> 1971 </doc> 1972 </method> 1973 <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder" 1974 abstract="false" native="false" synchronized="false" 1975 static="false" final="true" visibility="protected" 1976 deprecated="not deprecated"> 1977 <doc> 1978 <![CDATA[@see Binder#bindConstant()]]> 1979 </doc> 1980 </method> 1981 <method name="install" 1982 abstract="false" native="false" synchronized="false" 1983 static="false" final="true" visibility="protected" 1984 deprecated="not deprecated"> 1985 <param name="module" type="com.google.inject.Module"/> 1986 <doc> 1987 <![CDATA[@see Binder#install(Module)]]> 1988 </doc> 1989 </method> 1990 <method name="addError" 1991 abstract="false" native="false" synchronized="false" 1992 static="false" final="true" visibility="protected" 1993 deprecated="not deprecated"> 1994 <param name="message" type="java.lang.String"/> 1995 <param name="arguments" type="java.lang.Object[]"/> 1996 <doc> 1997 <![CDATA[@see Binder#addError(String, Object[])]]> 1998 </doc> 1999 </method> 2000 <method name="addError" 2001 abstract="false" native="false" synchronized="false" 2002 static="false" final="true" visibility="protected" 2003 deprecated="not deprecated"> 2004 <param name="t" type="java.lang.Throwable"/> 2005 <doc> 2006 <![CDATA[@see Binder#addError(Throwable)]]> 2007 </doc> 2008 </method> 2009 <method name="addError" 2010 abstract="false" native="false" synchronized="false" 2011 static="false" final="true" visibility="protected" 2012 deprecated="not deprecated"> 2013 <param name="message" type="com.google.inject.spi.Message"/> 2014 <doc> 2015 <![CDATA[@see Binder#addError(Message)]]> 2016 </doc> 2017 </method> 2018 <method name="requestInjection" 2019 abstract="false" native="false" synchronized="false" 2020 static="false" final="true" visibility="protected" 2021 deprecated="not deprecated"> 2022 <param name="instance" type="java.lang.Object"/> 2023 <doc> 2024 <![CDATA[@see Binder#requestInjection(Object)]]> 2025 </doc> 2026 </method> 2027 <method name="requestStaticInjection" 2028 abstract="false" native="false" synchronized="false" 2029 static="false" final="true" visibility="protected" 2030 deprecated="not deprecated"> 2031 <param name="types" type="java.lang.Class[]"/> 2032 <doc> 2033 <![CDATA[@see Binder#requestStaticInjection(Class[])]]> 2034 </doc> 2035 </method> 2036 <method name="bindInterceptor" 2037 abstract="false" native="false" synchronized="false" 2038 static="false" final="true" visibility="protected" 2039 deprecated="not deprecated"> 2040 <param name="classMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>"/> 2041 <param name="methodMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>"/> 2042 <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/> 2043 <doc> 2044 <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher, com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])]]> 2045 </doc> 2046 </method> 2047 <method name="requireBinding" 2048 abstract="false" native="false" synchronized="false" 2049 static="false" final="true" visibility="protected" 2050 deprecated="not deprecated"> 2051 <param name="key" type="com.google.inject.Key<?>"/> 2052 <doc> 2053 <![CDATA[Instructs Guice to require a binding to the given key.]]> 2054 </doc> 2055 </method> 2056 <method name="requireBinding" 2057 abstract="false" native="false" synchronized="false" 2058 static="false" final="true" visibility="protected" 2059 deprecated="not deprecated"> 2060 <param name="type" type="java.lang.Class<?>"/> 2061 <doc> 2062 <![CDATA[Instructs Guice to require a binding to the given type.]]> 2063 </doc> 2064 </method> 2065 <method name="getProvider" return="com.google.inject.Provider<T>" 2066 abstract="false" native="false" synchronized="false" 2067 static="false" final="true" visibility="protected" 2068 deprecated="not deprecated"> 2069 <param name="key" type="com.google.inject.Key<T>"/> 2070 <doc> 2071 <![CDATA[@see Binder#getProvider(Key)]]> 2072 </doc> 2073 </method> 2074 <method name="getProvider" return="com.google.inject.Provider<T>" 2075 abstract="false" native="false" synchronized="false" 2076 static="false" final="true" visibility="protected" 2077 deprecated="not deprecated"> 2078 <param name="type" type="java.lang.Class<T>"/> 2079 <doc> 2080 <![CDATA[@see Binder#getProvider(Class)]]> 2081 </doc> 2082 </method> 2083 <method name="convertToTypes" 2084 abstract="false" native="false" synchronized="false" 2085 static="false" final="true" visibility="protected" 2086 deprecated="not deprecated"> 2087 <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> 2088 <param name="converter" type="com.google.inject.spi.TypeConverter"/> 2089 <doc> 2090 <![CDATA[@see Binder#convertToTypes(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeConverter)]]> 2091 </doc> 2092 </method> 2093 <method name="currentStage" return="com.google.inject.Stage" 2094 abstract="false" native="false" synchronized="false" 2095 static="false" final="true" visibility="protected" 2096 deprecated="not deprecated"> 2097 <doc> 2098 <![CDATA[@see Binder#currentStage()]]> 2099 </doc> 2100 </method> 2101 <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 2102 abstract="false" native="false" synchronized="false" 2103 static="false" final="false" visibility="protected" 2104 deprecated="not deprecated"> 2105 <param name="type" type="java.lang.Class<T>"/> 2106 <doc> 2107 <![CDATA[@see Binder#getMembersInjector(Class)]]> 2108 </doc> 2109 </method> 2110 <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 2111 abstract="false" native="false" synchronized="false" 2112 static="false" final="false" visibility="protected" 2113 deprecated="not deprecated"> 2114 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 2115 <doc> 2116 <![CDATA[@see Binder#getMembersInjector(TypeLiteral)]]> 2117 </doc> 2118 </method> 2119 <method name="bindListener" 2120 abstract="false" native="false" synchronized="false" 2121 static="false" final="false" visibility="protected" 2122 deprecated="not deprecated"> 2123 <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> 2124 <param name="listener" type="com.google.inject.spi.TypeListener"/> 2125 <doc> 2126 <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeListener)]]> 2127 </doc> 2128 </method> 2129 <doc> 2130 <![CDATA[A module whose configuration information is hidden from its environment by default. Only bindings 2131 that are explicitly exposed will be available to other modules and to the users of the injector. 2132 This module may expose the bindings it creates and the bindings of the modules it installs. 2133 2134 <p>A private module can be nested within a regular module or within another private module using 2135 {@link Binder#install install()}. Its bindings live in a new environment that inherits bindings, 2136 type converters, scopes, and interceptors from the surrounding ("parent") environment. When you 2137 nest multiple private modules, the result is a tree of environments where the injector's 2138 environment is the root. 2139 2140 <p>Guice EDSL bindings can be exposed with {@link #expose(Class) expose()}. {@literal @}{@link 2141 com.google.inject.Provides Provides} bindings can be exposed with the {@literal @}{@link 2142 Exposed} annotation: 2143 2144 <pre> 2145 public class FooBarBazModule extends PrivateModule { 2146 protected void configure() { 2147 bind(Foo.class).to(RealFoo.class); 2148 expose(Foo.class); 2149 2150 install(new TransactionalBarModule()); 2151 expose(Bar.class).annotatedWith(Transactional.class); 2152 2153 bind(SomeImplementationDetail.class); 2154 install(new MoreImplementationDetailsModule()); 2155 } 2156 2157 {@literal @}Provides {@literal @}Exposed 2158 public Baz provideBaz() { 2159 return new SuperBaz(); 2160 } 2161 } 2162 </pre> 2163 2164 <p>Private modules are implemented using {@link Injector#createChildInjector(Module[]) parent 2165 injectors}. When it can satisfy their dependencies, just-in-time bindings will be created in the 2166 root environment. Such bindings are shared among all environments in the tree. 2167 2168 <p>The scope of a binding is constrained to its environment. A singleton bound in a private 2169 module will be unique to its environment. But a binding for the same type in a different private 2170 module will yield a different instance. 2171 2172 <p>A shared binding that injects the {@code Injector} gets the root injector, which only has 2173 access to bindings in the root environment. An explicit binding that injects the {@code Injector} 2174 gets access to all bindings in the child environment. 2175 2176 <p>To promote a just-in-time binding to an explicit binding, bind it: 2177 <pre> 2178 bind(FooImpl.class); 2179 </pre> 2180 2181 @author jessewilson@google.com (Jesse Wilson) 2182 @since 2.0]]> 2183 </doc> 2184 </class> 2185 <!-- end class com.google.inject.PrivateModule --> 2186 <!-- start class com.google.inject.ProvidedBy --> 2187 <class name="ProvidedBy" abstract="true" 2188 static="false" final="false" visibility="public" 2189 deprecated="not deprecated"> 2190 <implements name="java.lang.annotation.Annotation"/> 2191 <doc> 2192 <![CDATA[A pointer to the default provider type for a type. 2193 2194 @author crazybob@google.com (Bob Lee)]]> 2195 </doc> 2196 </class> 2197 <!-- end class com.google.inject.ProvidedBy --> 2198 <!-- start interface com.google.inject.Provider --> 2199 <interface name="Provider" abstract="true" 2200 static="false" final="false" visibility="public" 2201 deprecated="not deprecated"> 2202 <implements name="javax.inject.Provider<T>"/> 2203 <method name="get" return="T" 2204 abstract="false" native="false" synchronized="false" 2205 static="false" final="false" visibility="public" 2206 deprecated="not deprecated"> 2207 <doc> 2208 <![CDATA[Provides an instance of {@code T}. Must never return {@code null}. 2209 2210 @throws OutOfScopeException when an attempt is made to access a scoped object while the scope 2211 in question is not currently active 2212 @throws ProvisionException if an instance cannot be provided. Such exceptions include messages 2213 and throwables to describe why provision failed.]]> 2214 </doc> 2215 </method> 2216 <doc> 2217 <![CDATA[An object capable of providing instances of type {@code T}. Providers are used in numerous ways 2218 by Guice: 2219 2220 <ul> 2221 <li>When the default means for obtaining instances (an injectable or parameterless constructor) 2222 is insufficient for a particular binding, the module can specify a custom {@code Provider} 2223 instead, to control exactly how Guice creates or obtains instances for the binding. 2224 2225 <li>An implementation class may always choose to have a {@code Provider<T>} instance injected, 2226 rather than having a {@code T} injected directly. This may give you access to multiple 2227 instances, instances you wish to safely mutate and discard, instances which are out of scope 2228 (e.g. using a {@code @RequestScoped} object from within a {@code @SessionScoped} object), or 2229 instances that will be initialized lazily. 2230 2231 <li>A custom {@link Scope} is implemented as a decorator of {@code Provider<T>}, which decides 2232 when to delegate to the backing provider and when to provide the instance some other way. 2233 2234 <li>The {@link Injector} offers access to the {@code Provider<T>} it uses to fulfill requests 2235 for a given key, via the {@link Injector#getProvider} methods. 2236 </ul> 2237 2238 @param <T> the type of object this provides 2239 2240 @author crazybob@google.com (Bob Lee)]]> 2241 </doc> 2242 </interface> 2243 <!-- end interface com.google.inject.Provider --> 2244 <!-- start class com.google.inject.Provides --> 2245 <class name="Provides" abstract="true" 2246 static="false" final="false" visibility="public" 2247 deprecated="not deprecated"> 2248 <implements name="java.lang.annotation.Annotation"/> 2249 <doc> 2250 <![CDATA[Annotates methods of a {@link Module} to create a provider method binding. The method's return 2251 type is bound to it's returned value. Guice will pass dependencies to the method as parameters. 2252 2253 @author crazybob@google.com (Bob Lee) 2254 @since 2.0]]> 2255 </doc> 2256 </class> 2257 <!-- end class com.google.inject.Provides --> 2258 <!-- start class com.google.inject.ProvisionException --> 2259 <class name="ProvisionException" extends="java.lang.RuntimeException" 2260 abstract="false" 2261 static="false" final="true" visibility="public" 2262 deprecated="not deprecated"> 2263 <constructor name="ProvisionException" type="java.lang.Iterable<com.google.inject.spi.Message>" 2264 static="false" final="false" visibility="public" 2265 deprecated="not deprecated"> 2266 <doc> 2267 <![CDATA[Creates a ProvisionException containing {@code messages}.]]> 2268 </doc> 2269 </constructor> 2270 <constructor name="ProvisionException" type="java.lang.String, java.lang.Throwable" 2271 static="false" final="false" visibility="public" 2272 deprecated="not deprecated"> 2273 </constructor> 2274 <constructor name="ProvisionException" type="java.lang.String" 2275 static="false" final="false" visibility="public" 2276 deprecated="not deprecated"> 2277 </constructor> 2278 <method name="getErrorMessages" return="java.util.Collection<com.google.inject.spi.Message>" 2279 abstract="false" native="false" synchronized="false" 2280 static="false" final="false" visibility="public" 2281 deprecated="not deprecated"> 2282 <doc> 2283 <![CDATA[Returns messages for the errors that caused this exception.]]> 2284 </doc> 2285 </method> 2286 <method name="getMessage" return="java.lang.String" 2287 abstract="false" native="false" synchronized="false" 2288 static="false" final="false" visibility="public" 2289 deprecated="not deprecated"> 2290 </method> 2291 <doc> 2292 <![CDATA[Indicates that there was a runtime failure while providing an instance. 2293 2294 @author kevinb@google.com (Kevin Bourrillion) 2295 @author jessewilson@google.com (Jesse Wilson) 2296 @since 2.0]]> 2297 </doc> 2298 </class> 2299 <!-- end class com.google.inject.ProvisionException --> 2300 <!-- start interface com.google.inject.Scope --> 2301 <interface name="Scope" abstract="true" 2302 static="false" final="false" visibility="public" 2303 deprecated="not deprecated"> 2304 <method name="scope" return="com.google.inject.Provider<T>" 2305 abstract="false" native="false" synchronized="false" 2306 static="false" final="false" visibility="public" 2307 deprecated="not deprecated"> 2308 <param name="key" type="com.google.inject.Key<T>"/> 2309 <param name="unscoped" type="com.google.inject.Provider<T>"/> 2310 <doc> 2311 <![CDATA[Scopes a provider. The returned provider returns objects from this scope. 2312 If an object does not exist in this scope, the provider can use the given 2313 unscoped provider to retrieve one. 2314 2315 <p>Scope implementations are strongly encouraged to override 2316 {@link Object#toString} in the returned provider and include the backing 2317 provider's {@code toString()} output. 2318 2319 @param key binding key 2320 @param unscoped locates an instance when one doesn't already exist in this 2321 scope. 2322 @return a new provider which only delegates to the given unscoped provider 2323 when an instance of the requested object doesn't already exist in this 2324 scope]]> 2325 </doc> 2326 </method> 2327 <method name="toString" return="java.lang.String" 2328 abstract="false" native="false" synchronized="false" 2329 static="false" final="false" visibility="public" 2330 deprecated="not deprecated"> 2331 <doc> 2332 <![CDATA[A short but useful description of this scope. For comparison, the standard 2333 scopes that ship with guice use the descriptions 2334 {@code "Scopes.SINGLETON"}, {@code "ServletScopes.SESSION"} and 2335 {@code "ServletScopes.REQUEST"}.]]> 2336 </doc> 2337 </method> 2338 <doc> 2339 <![CDATA[A scope is a level of visibility that instances provided by Guice may have. 2340 By default, an instance created by the {@link Injector} has <i>no scope</i>, 2341 meaning it has no state from the framework's perspective -- the 2342 {@code Injector} creates it, injects it once into the class that required it, 2343 and then immediately forgets it. Associating a scope with a particular 2344 binding allows the created instance to be "remembered" and possibly used 2345 again for other injections. 2346 2347 <p>An example of a scope is {@link Scopes#SINGLETON}. 2348 2349 @author crazybob@google.com (Bob Lee)]]> 2350 </doc> 2351 </interface> 2352 <!-- end interface com.google.inject.Scope --> 2353 <!-- start class com.google.inject.ScopeAnnotation --> 2354 <class name="ScopeAnnotation" abstract="true" 2355 static="false" final="false" visibility="public" 2356 deprecated="not deprecated"> 2357 <implements name="java.lang.annotation.Annotation"/> 2358 <doc> 2359 <![CDATA[Annotates annotations which are used for scoping. Only one such annotation 2360 may apply to a single implementation class. You must also annotate scope 2361 annotations with {@code @Retention(RUNTIME)}. For example: 2362 2363 <pre> 2364 {@code @}Retention(RUNTIME) 2365 {@code @}Target(TYPE, METHOD) 2366 {@code @}ScopeAnnotation 2367 public {@code @}interface SessionScoped {} 2368 </pre> 2369 2370 @author crazybob@google.com (Bob Lee)]]> 2371 </doc> 2372 </class> 2373 <!-- end class com.google.inject.ScopeAnnotation --> 2374 <!-- start class com.google.inject.Scopes --> 2375 <class name="Scopes" extends="java.lang.Object" 2376 abstract="false" 2377 static="false" final="false" visibility="public" 2378 deprecated="not deprecated"> 2379 <method name="isSingleton" return="boolean" 2380 abstract="false" native="false" synchronized="false" 2381 static="true" final="false" visibility="public" 2382 deprecated="not deprecated"> 2383 <param name="binding" type="com.google.inject.Binding<?>"/> 2384 <doc> 2385 <![CDATA[Returns true if {@code binding} is singleton-scoped. If the binding is a {@link 2386 com.google.inject.spi.LinkedKeyBinding linked key binding} and belongs to an injector (ie. it 2387 was retrieved via {@link Injector#getBinding Injector.getBinding()}), then this method will 2388 also true if the target binding is singleton-scoped. 2389 2390 @since 3.0]]> 2391 </doc> 2392 </method> 2393 <field name="SINGLETON" type="com.google.inject.Scope" 2394 transient="false" volatile="false" 2395 static="true" final="true" visibility="public" 2396 deprecated="not deprecated"> 2397 <doc> 2398 <![CDATA[One instance per {@link Injector}. Also see {@code @}{@link Singleton}.]]> 2399 </doc> 2400 </field> 2401 <field name="NO_SCOPE" type="com.google.inject.Scope" 2402 transient="false" volatile="false" 2403 static="true" final="true" visibility="public" 2404 deprecated="not deprecated"> 2405 <doc> 2406 <![CDATA[No scope; the same as not applying any scope at all. Each time the 2407 Injector obtains an instance of an object with "no scope", it injects this 2408 instance then immediately forgets it. When the next request for the same 2409 binding arrives it will need to obtain the instance over again. 2410 2411 <p>This exists only in case a class has been annotated with a scope 2412 annotation such as {@link Singleton @Singleton}, and you need to override 2413 this to "no scope" in your binding. 2414 2415 @since 2.0]]> 2416 </doc> 2417 </field> 2418 <doc> 2419 <![CDATA[Built-in scope implementations. 2420 2421 @author crazybob@google.com (Bob Lee)]]> 2422 </doc> 2423 </class> 2424 <!-- end class com.google.inject.Scopes --> 2425 <!-- start class com.google.inject.Singleton --> 2426 <class name="Singleton" abstract="true" 2427 static="false" final="false" visibility="public" 2428 deprecated="not deprecated"> 2429 <implements name="java.lang.annotation.Annotation"/> 2430 <doc> 2431 <![CDATA[Apply this to implementation classes when you want only one instance 2432 (per {@link Injector}) to be reused for all injections for that binding. 2433 2434 @author crazybob@google.com (Bob Lee)]]> 2435 </doc> 2436 </class> 2437 <!-- end class com.google.inject.Singleton --> 2438 <!-- start class com.google.inject.Stage --> 2439 <class name="Stage" extends="java.lang.Enum<com.google.inject.Stage>" 2440 abstract="false" 2441 static="false" final="true" visibility="public" 2442 deprecated="not deprecated"> 2443 <method name="values" return="com.google.inject.Stage[]" 2444 abstract="false" native="false" synchronized="false" 2445 static="true" final="false" visibility="public" 2446 deprecated="not deprecated"> 2447 </method> 2448 <method name="valueOf" return="com.google.inject.Stage" 2449 abstract="false" native="false" synchronized="false" 2450 static="true" final="false" visibility="public" 2451 deprecated="not deprecated"> 2452 <param name="name" type="java.lang.String"/> 2453 </method> 2454 <doc> 2455 <![CDATA[The stage we're running in. 2456 2457 @author crazybob@google.com (Bob Lee)]]> 2458 </doc> 2459 </class> 2460 <!-- end class com.google.inject.Stage --> 2461 <!-- start class com.google.inject.TypeLiteral --> 2462 <class name="TypeLiteral" extends="java.lang.Object" 2463 abstract="false" 2464 static="false" final="false" visibility="public" 2465 deprecated="not deprecated"> 2466 <constructor name="TypeLiteral" 2467 static="false" final="false" visibility="protected" 2468 deprecated="not deprecated"> 2469 <doc> 2470 <![CDATA[Constructs a new type literal. Derives represented class from type 2471 parameter. 2472 2473 <p>Clients create an empty anonymous subclass. Doing so embeds the type 2474 parameter in the anonymous class's type hierarchy so we can reconstitute it 2475 at runtime despite erasure.]]> 2476 </doc> 2477 </constructor> 2478 <method name="getRawType" return="java.lang.Class<? super T>" 2479 abstract="false" native="false" synchronized="false" 2480 static="false" final="true" visibility="public" 2481 deprecated="not deprecated"> 2482 <doc> 2483 <![CDATA[Returns the raw (non-generic) type for this type. 2484 2485 @since 2.0]]> 2486 </doc> 2487 </method> 2488 <method name="getType" return="java.lang.reflect.Type" 2489 abstract="false" native="false" synchronized="false" 2490 static="false" final="true" visibility="public" 2491 deprecated="not deprecated"> 2492 <doc> 2493 <![CDATA[Gets underlying {@code Type} instance.]]> 2494 </doc> 2495 </method> 2496 <method name="hashCode" return="int" 2497 abstract="false" native="false" synchronized="false" 2498 static="false" final="true" visibility="public" 2499 deprecated="not deprecated"> 2500 </method> 2501 <method name="equals" return="boolean" 2502 abstract="false" native="false" synchronized="false" 2503 static="false" final="true" visibility="public" 2504 deprecated="not deprecated"> 2505 <param name="o" type="java.lang.Object"/> 2506 </method> 2507 <method name="toString" return="java.lang.String" 2508 abstract="false" native="false" synchronized="false" 2509 static="false" final="true" visibility="public" 2510 deprecated="not deprecated"> 2511 </method> 2512 <method name="get" return="com.google.inject.TypeLiteral<?>" 2513 abstract="false" native="false" synchronized="false" 2514 static="true" final="false" visibility="public" 2515 deprecated="not deprecated"> 2516 <param name="type" type="java.lang.reflect.Type"/> 2517 <doc> 2518 <![CDATA[Gets type literal for the given {@code Type} instance.]]> 2519 </doc> 2520 </method> 2521 <method name="get" return="com.google.inject.TypeLiteral<T>" 2522 abstract="false" native="false" synchronized="false" 2523 static="true" final="false" visibility="public" 2524 deprecated="not deprecated"> 2525 <param name="type" type="java.lang.Class<T>"/> 2526 <doc> 2527 <![CDATA[Gets type literal for the given {@code Class} instance.]]> 2528 </doc> 2529 </method> 2530 <method name="getSupertype" return="com.google.inject.TypeLiteral<?>" 2531 abstract="false" native="false" synchronized="false" 2532 static="false" final="false" visibility="public" 2533 deprecated="not deprecated"> 2534 <param name="supertype" type="java.lang.Class<?>"/> 2535 <doc> 2536 <![CDATA[Returns the generic form of {@code supertype}. For example, if this is {@code 2537 ArrayList<String>}, this returns {@code Iterable<String>} given the input {@code 2538 Iterable.class}. 2539 2540 @param supertype a superclass of, or interface implemented by, this. 2541 @since 2.0]]> 2542 </doc> 2543 </method> 2544 <method name="getFieldType" return="com.google.inject.TypeLiteral<?>" 2545 abstract="false" native="false" synchronized="false" 2546 static="false" final="false" visibility="public" 2547 deprecated="not deprecated"> 2548 <param name="field" type="java.lang.reflect.Field"/> 2549 <doc> 2550 <![CDATA[Returns the resolved generic type of {@code field}. 2551 2552 @param field a field defined by this or any superclass. 2553 @since 2.0]]> 2554 </doc> 2555 </method> 2556 <method name="getParameterTypes" return="java.util.List<com.google.inject.TypeLiteral<?>>" 2557 abstract="false" native="false" synchronized="false" 2558 static="false" final="false" visibility="public" 2559 deprecated="not deprecated"> 2560 <param name="methodOrConstructor" type="java.lang.reflect.Member"/> 2561 <doc> 2562 <![CDATA[Returns the resolved generic parameter types of {@code methodOrConstructor}. 2563 2564 @param methodOrConstructor a method or constructor defined by this or any supertype. 2565 @since 2.0]]> 2566 </doc> 2567 </method> 2568 <method name="getExceptionTypes" return="java.util.List<com.google.inject.TypeLiteral<?>>" 2569 abstract="false" native="false" synchronized="false" 2570 static="false" final="false" visibility="public" 2571 deprecated="not deprecated"> 2572 <param name="methodOrConstructor" type="java.lang.reflect.Member"/> 2573 <doc> 2574 <![CDATA[Returns the resolved generic exception types thrown by {@code constructor}. 2575 2576 @param methodOrConstructor a method or constructor defined by this or any supertype. 2577 @since 2.0]]> 2578 </doc> 2579 </method> 2580 <method name="getReturnType" return="com.google.inject.TypeLiteral<?>" 2581 abstract="false" native="false" synchronized="false" 2582 static="false" final="false" visibility="public" 2583 deprecated="not deprecated"> 2584 <param name="method" type="java.lang.reflect.Method"/> 2585 <doc> 2586 <![CDATA[Returns the resolved generic return type of {@code method}. 2587 2588 @param method a method defined by this or any supertype. 2589 @since 2.0]]> 2590 </doc> 2591 </method> 2592 <doc> 2593 <![CDATA[Represents a generic type {@code T}. Java doesn't yet provide a way to 2594 represent generic types, so this class does. Forces clients to create a 2595 subclass of this class which enables retrieval the type information even at 2596 runtime. 2597 2598 <p>For example, to create a type literal for {@code List<String>}, you can 2599 create an empty anonymous inner class: 2600 2601 <p> 2602 {@code TypeLiteral<List<String>> list = new TypeLiteral<List<String>>() {};} 2603 2604 <p>Along with modeling generic types, this class can resolve type parameters. 2605 For example, to figure out what type {@code keySet()} returns on a {@code 2606 Map<Integer, String>}, use this code:<pre> {@code 2607 2608 TypeLiteral<Map<Integer, String>> mapType 2609 = new TypeLiteral<Map<Integer, String>>() {}; 2610 TypeLiteral<?> keySetType 2611 = mapType.getReturnType(Map.class.getMethod("keySet")); 2612 System.out.println(keySetType); // prints "Set<Integer>"}</pre> 2613 2614 @author crazybob@google.com (Bob Lee) 2615 @author jessewilson@google.com (Jesse Wilson)]]> 2616 </doc> 2617 </class> 2618 <!-- end class com.google.inject.TypeLiteral --> 2619</package> 2620<package name="com.google.inject.assistedinject"> 2621 <!-- start class com.google.inject.assistedinject.Assisted --> 2622 <class name="Assisted" abstract="true" 2623 static="false" final="false" visibility="public" 2624 deprecated="not deprecated"> 2625 <implements name="java.lang.annotation.Annotation"/> 2626 <doc> 2627 <![CDATA[Annotates an injected parameter or field whose value comes from an argument to a factory method. 2628 2629 @author jmourits@google.com (Jerome Mourits) 2630 @author jessewilson@google.com (Jesse Wilson)]]> 2631 </doc> 2632 </class> 2633 <!-- end class com.google.inject.assistedinject.Assisted --> 2634 <!-- start class com.google.inject.assistedinject.AssistedInject --> 2635 <class name="AssistedInject" abstract="true" 2636 static="false" final="false" visibility="public" 2637 deprecated="not deprecated"> 2638 <implements name="java.lang.annotation.Annotation"/> 2639 <doc> 2640 <![CDATA[<p> 2641 When used in tandem with {@link FactoryModuleBuilder}, constructors annotated with 2642 {@code @AssistedInject} indicate that multiple constructors can be injected, each with different 2643 parameters. AssistedInject annotations should not be mixed with {@literal @}{@link Inject} 2644 annotations. The assisted parameters must exactly match one corresponding factory method within 2645 the factory interface, but the parameters do not need to be in the same order. Constructors 2646 annotated with AssistedInject <b>are</b> created by Guice and receive all the benefits 2647 (such as AOP). 2648 2649 <p> 2650 <strong>Obsolete Usage:</strong> When used in tandem with {@link FactoryProvider}, constructors 2651 annotated with {@code @AssistedInject} trigger a "backwards compatibility mode". The assisted 2652 parameters must exactly match one corresponding factory method within the factory interface and 2653 all must be in the same order as listed in the factory. In this backwards compatable mode, 2654 constructors annotated with AssistedInject <b>are not</b> created by Guice and thus receive 2655 none of the benefits. 2656 2657 <p> 2658 Constructor parameters must be either supplied by the factory interface and marked with 2659 <code>@Assisted</code>, or they must be injectable. 2660 2661 @author jmourits@google.com (Jerome Mourits) 2662 @author jessewilson@google.com (Jesse Wilson)]]> 2663 </doc> 2664 </class> 2665 <!-- end class com.google.inject.assistedinject.AssistedInject --> 2666 <!-- start interface com.google.inject.assistedinject.AssistedInjectBinding --> 2667 <interface name="AssistedInjectBinding" abstract="true" 2668 static="false" final="false" visibility="public" 2669 deprecated="not deprecated"> 2670 <method name="getKey" return="com.google.inject.Key<T>" 2671 abstract="false" native="false" synchronized="false" 2672 static="false" final="false" visibility="public" 2673 deprecated="not deprecated"> 2674 <doc> 2675 <![CDATA[Returns the {@link Key} for the factory binding.]]> 2676 </doc> 2677 </method> 2678 <method name="getAssistedMethods" return="java.util.Collection<com.google.inject.assistedinject.AssistedMethod>" 2679 abstract="false" native="false" synchronized="false" 2680 static="false" final="false" visibility="public" 2681 deprecated="not deprecated"> 2682 <doc> 2683 <![CDATA[Returns an {@link AssistedMethod} for each method in the factory.]]> 2684 </doc> 2685 </method> 2686 <doc> 2687 <![CDATA[A binding for a factory created by FactoryModuleBuilder. 2688 2689 @param <T> The fully qualified type of the factory. 2690 2691 @since 3.0 2692 @author ramakrishna@google.com (Ramakrishna Rajanna)]]> 2693 </doc> 2694 </interface> 2695 <!-- end interface com.google.inject.assistedinject.AssistedInjectBinding --> 2696 <!-- start interface com.google.inject.assistedinject.AssistedInjectTargetVisitor --> 2697 <interface name="AssistedInjectTargetVisitor" abstract="true" 2698 static="false" final="false" visibility="public" 2699 deprecated="not deprecated"> 2700 <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 2701 <method name="visit" return="V" 2702 abstract="false" native="false" synchronized="false" 2703 static="false" final="false" visibility="public" 2704 deprecated="not deprecated"> 2705 <param name="assistedInjectBinding" type="com.google.inject.assistedinject.AssistedInjectBinding<? extends T>"/> 2706 <doc> 2707 <![CDATA[Visits an {@link AssistedInjectBinding} created through {@link FactoryModuleBuilder}.]]> 2708 </doc> 2709 </method> 2710 <doc> 2711 <![CDATA[A visitor for the AssistedInject extension. 2712 <p> 2713 If your {@link BindingTargetVisitor} implements this interface, bindings created by using 2714 {@link FactoryModuleBuilder} will be visited through this interface. 2715 2716 @since 3.0 2717 @author ramakrishna@google.com (Ramakrishna Rajanna)]]> 2718 </doc> 2719 </interface> 2720 <!-- end interface com.google.inject.assistedinject.AssistedInjectTargetVisitor --> 2721 <!-- start interface com.google.inject.assistedinject.AssistedMethod --> 2722 <interface name="AssistedMethod" abstract="true" 2723 static="false" final="false" visibility="public" 2724 deprecated="not deprecated"> 2725 <method name="getFactoryMethod" return="java.lang.reflect.Method" 2726 abstract="false" native="false" synchronized="false" 2727 static="false" final="false" visibility="public" 2728 deprecated="not deprecated"> 2729 <doc> 2730 <![CDATA[Returns the factory method that is being assisted.]]> 2731 </doc> 2732 </method> 2733 <method name="getImplementationType" return="com.google.inject.TypeLiteral<?>" 2734 abstract="false" native="false" synchronized="false" 2735 static="false" final="false" visibility="public" 2736 deprecated="not deprecated"> 2737 <doc> 2738 <![CDATA[Returns the implementation type that will be created when the method is 2739 used.]]> 2740 </doc> 2741 </method> 2742 <method name="getImplementationConstructor" return="java.lang.reflect.Constructor<?>" 2743 abstract="false" native="false" synchronized="false" 2744 static="false" final="false" visibility="public" 2745 deprecated="not deprecated"> 2746 <doc> 2747 <![CDATA[Returns the constructor that will be used to construct instances of the 2748 implementation.]]> 2749 </doc> 2750 </method> 2751 <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 2752 abstract="false" native="false" synchronized="false" 2753 static="false" final="false" visibility="public" 2754 deprecated="not deprecated"> 2755 <doc> 2756 <![CDATA[Returns all non-assisted dependencies required to construct and inject 2757 the implementation.]]> 2758 </doc> 2759 </method> 2760 <doc> 2761 <![CDATA[Details about how a method in an assisted inject factory will be assisted. 2762 2763 @since 3.0 2764 @author ramakrishna@google.com (Ramakrishna Rajanna)]]> 2765 </doc> 2766 </interface> 2767 <!-- end interface com.google.inject.assistedinject.AssistedMethod --> 2768 <!-- start class com.google.inject.assistedinject.FactoryModuleBuilder --> 2769 <class name="FactoryModuleBuilder" extends="java.lang.Object" 2770 abstract="false" 2771 static="false" final="true" visibility="public" 2772 deprecated="not deprecated"> 2773 <constructor name="FactoryModuleBuilder" 2774 static="false" final="false" visibility="public" 2775 deprecated="not deprecated"> 2776 </constructor> 2777 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2778 abstract="false" native="false" synchronized="false" 2779 static="false" final="false" visibility="public" 2780 deprecated="not deprecated"> 2781 <param name="source" type="java.lang.Class<T>"/> 2782 <param name="target" type="java.lang.Class<? extends T>"/> 2783 <doc> 2784 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2785 </doc> 2786 </method> 2787 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2788 abstract="false" native="false" synchronized="false" 2789 static="false" final="false" visibility="public" 2790 deprecated="not deprecated"> 2791 <param name="source" type="java.lang.Class<T>"/> 2792 <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2793 <doc> 2794 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2795 </doc> 2796 </method> 2797 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2798 abstract="false" native="false" synchronized="false" 2799 static="false" final="false" visibility="public" 2800 deprecated="not deprecated"> 2801 <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2802 <param name="target" type="java.lang.Class<? extends T>"/> 2803 <doc> 2804 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2805 </doc> 2806 </method> 2807 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2808 abstract="false" native="false" synchronized="false" 2809 static="false" final="false" visibility="public" 2810 deprecated="not deprecated"> 2811 <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2812 <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2813 <doc> 2814 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2815 </doc> 2816 </method> 2817 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2818 abstract="false" native="false" synchronized="false" 2819 static="false" final="false" visibility="public" 2820 deprecated="not deprecated"> 2821 <param name="source" type="java.lang.Class<T>"/> 2822 <param name="annotation" type="java.lang.annotation.Annotation"/> 2823 <param name="target" type="java.lang.Class<? extends T>"/> 2824 <doc> 2825 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2826 </doc> 2827 </method> 2828 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2829 abstract="false" native="false" synchronized="false" 2830 static="false" final="false" visibility="public" 2831 deprecated="not deprecated"> 2832 <param name="source" type="java.lang.Class<T>"/> 2833 <param name="annotation" type="java.lang.annotation.Annotation"/> 2834 <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2835 <doc> 2836 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2837 </doc> 2838 </method> 2839 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2840 abstract="false" native="false" synchronized="false" 2841 static="false" final="false" visibility="public" 2842 deprecated="not deprecated"> 2843 <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2844 <param name="annotation" type="java.lang.annotation.Annotation"/> 2845 <param name="target" type="java.lang.Class<? extends T>"/> 2846 <doc> 2847 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2848 </doc> 2849 </method> 2850 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2851 abstract="false" native="false" synchronized="false" 2852 static="false" final="false" visibility="public" 2853 deprecated="not deprecated"> 2854 <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2855 <param name="annotation" type="java.lang.annotation.Annotation"/> 2856 <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2857 <doc> 2858 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2859 </doc> 2860 </method> 2861 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2862 abstract="false" native="false" synchronized="false" 2863 static="false" final="false" visibility="public" 2864 deprecated="not deprecated"> 2865 <param name="source" type="java.lang.Class<T>"/> 2866 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 2867 <param name="target" type="java.lang.Class<? extends T>"/> 2868 <doc> 2869 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2870 </doc> 2871 </method> 2872 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2873 abstract="false" native="false" synchronized="false" 2874 static="false" final="false" visibility="public" 2875 deprecated="not deprecated"> 2876 <param name="source" type="java.lang.Class<T>"/> 2877 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 2878 <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2879 <doc> 2880 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2881 </doc> 2882 </method> 2883 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2884 abstract="false" native="false" synchronized="false" 2885 static="false" final="false" visibility="public" 2886 deprecated="not deprecated"> 2887 <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2888 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 2889 <param name="target" type="java.lang.Class<? extends T>"/> 2890 <doc> 2891 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2892 </doc> 2893 </method> 2894 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2895 abstract="false" native="false" synchronized="false" 2896 static="false" final="false" visibility="public" 2897 deprecated="not deprecated"> 2898 <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2899 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 2900 <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2901 <doc> 2902 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2903 </doc> 2904 </method> 2905 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2906 abstract="false" native="false" synchronized="false" 2907 static="false" final="false" visibility="public" 2908 deprecated="not deprecated"> 2909 <param name="source" type="com.google.inject.Key<T>"/> 2910 <param name="target" type="java.lang.Class<? extends T>"/> 2911 <doc> 2912 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2913 </doc> 2914 </method> 2915 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2916 abstract="false" native="false" synchronized="false" 2917 static="false" final="false" visibility="public" 2918 deprecated="not deprecated"> 2919 <param name="source" type="com.google.inject.Key<T>"/> 2920 <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2921 <doc> 2922 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2923 </doc> 2924 </method> 2925 <method name="build" return="com.google.inject.Module" 2926 abstract="false" native="false" synchronized="false" 2927 static="false" final="false" visibility="public" 2928 deprecated="not deprecated"> 2929 <param name="factoryInterface" type="java.lang.Class<F>"/> 2930 <doc> 2931 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2932 </doc> 2933 </method> 2934 <method name="build" return="com.google.inject.Module" 2935 abstract="false" native="false" synchronized="false" 2936 static="false" final="false" visibility="public" 2937 deprecated="not deprecated"> 2938 <param name="factoryInterface" type="com.google.inject.TypeLiteral<F>"/> 2939 <doc> 2940 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2941 </doc> 2942 </method> 2943 <method name="build" return="com.google.inject.Module" 2944 abstract="false" native="false" synchronized="false" 2945 static="false" final="false" visibility="public" 2946 deprecated="not deprecated"> 2947 <param name="factoryInterface" type="com.google.inject.Key<F>"/> 2948 </method> 2949 <doc> 2950 <![CDATA[Provides a factory that combines the caller's arguments with injector-supplied values to 2951 construct objects. 2952 2953 <h3>Defining a factory</h3> 2954 Create an interface whose methods return the constructed type, or any of its supertypes. The 2955 method's parameters are the arguments required to build the constructed type. 2956 2957 <pre>public interface PaymentFactory { 2958 Payment create(Date startDate, Money amount); 2959 }</pre> 2960 2961 You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i> 2962 or <i>newPayment</i>. 2963 2964 <h3>Creating a type that accepts factory parameters</h3> 2965 {@code constructedType} is a concrete class with an {@literal @}{@link com.google.inject.Inject 2966 Inject}-annotated constructor. In addition to injector-supplied parameters, the constructor 2967 should have parameters that match each of the factory method's parameters. Each factory-supplied 2968 parameter requires an {@literal @}{@link Assisted} annotation. This serves to document that the 2969 parameter is not bound by your application's modules. 2970 2971 <pre>public class RealPayment implements Payment { 2972 {@literal @}Inject 2973 public RealPayment( 2974 CreditService creditService, 2975 AuthService authService, 2976 <strong>{@literal @}Assisted Date startDate</strong>, 2977 <strong>{@literal @}Assisted Money amount</strong>) { 2978 ... 2979 } 2980 }</pre> 2981 2982 <h3>Multiple factory methods for the same type</h3> 2983 If the factory contains many methods that return the same type, you can create multiple 2984 constructors in your concrete class, each constructor marked with with 2985 {@literal @}{@link AssistedInject}, in order to match the different parameters types of the 2986 factory methods. 2987 2988 <pre>public interface PaymentFactory { 2989 Payment create(Date startDate, Money amount); 2990 Payment createWithoutDate(Money amount); 2991 } 2992 2993 public class RealPayment implements Payment { 2994 {@literal @}AssistedInject 2995 public RealPayment( 2996 CreditService creditService, 2997 AuthService authService, 2998 <strong>{@literal @}Assisted Date startDate</strong>, 2999 <strong>{@literal @}Assisted Money amount</strong>) { 3000 ... 3001 } 3002 3003 {@literal @}AssistedInject 3004 public RealPayment( 3005 CreditService creditService, 3006 AuthService authService, 3007 <strong>{@literal @}Assisted Money amount</strong>) { 3008 ... 3009 } 3010 }</pre> 3011 3012 <h3>Configuring simple factories</h3> 3013 In your {@link Module module}, install a {@code FactoryModuleBuilder} that creates the 3014 factory: 3015 3016 <pre>install(new FactoryModuleBuilder() 3017 .implement(Payment.class, RealPayment.class) 3018 .build(PaymentFactory.class);</pre> 3019 3020 As a side-effect of this binding, Guice will inject the factory to initialize it for use. The 3021 factory cannot be used until the injector has been initialized. 3022 3023 <h3>Configuring complex factories</h3> 3024 Factories can create an arbitrary number of objects, one per each method. Each factory 3025 method can be configured using <code>.implement</code>. 3026 3027 <pre>public interface OrderFactory { 3028 Payment create(Date startDate, Money amount); 3029 Shipment create(Customer customer, Item item); 3030 Receipt create(Payment payment, Shipment shipment); 3031 } 3032 3033 [...] 3034 3035 install(new FactoryModuleBuilder() 3036 .implement(Payment.class, RealPayment.class) 3037 // excluding .implement for Shipment means the implementation class 3038 // will be 'Shipment' itself, which is legal if it's not an interface. 3039 .implement(Receipt.class, RealReceipt.class) 3040 .build(OrderFactory.class);</pre> 3041 </pre> 3042 3043 <h3>Using the factory</h3> 3044 Inject your factory into your application classes. When you use the factory, your arguments 3045 will be combined with values from the injector to construct an instance. 3046 3047 <pre>public class PaymentAction { 3048 {@literal @}Inject private PaymentFactory paymentFactory; 3049 3050 public void doPayment(Money amount) { 3051 Payment payment = paymentFactory.create(new Date(), amount); 3052 payment.apply(); 3053 } 3054 }</pre> 3055 3056 <h3>Making parameter types distinct</h3> 3057 The types of the factory method's parameters must be distinct. To use multiple parameters of 3058 the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the 3059 parameters. The names must be applied to the factory method's parameters: 3060 3061 <pre>public interface PaymentFactory { 3062 Payment create( 3063 <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 3064 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 3065 Money amount); 3066 } </pre> 3067 3068 ...and to the concrete type's constructor parameters: 3069 3070 <pre>public class RealPayment implements Payment { 3071 {@literal @}Inject 3072 public RealPayment( 3073 CreditService creditService, 3074 AuthService authService, 3075 <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 3076 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 3077 <strong>{@literal @}Assisted</strong> Money amount) { 3078 ... 3079 } 3080 }</pre> 3081 3082 <h3>Values are created by Guice</h3> 3083 Returned factories use child injectors to create values. The values are eligible for method 3084 interception. In addition, {@literal @}{@literal Inject} members will be injected before they are 3085 returned. 3086 3087 <h3>More configuration options</h3> 3088 In addition to simply specifying an implementation class for any returned type, factories' return 3089 values can be automatic or can be configured to use annotations: 3090 <p/> 3091 If you just want to return the types specified in the factory, do not configure any 3092 implementations: 3093 3094 <pre>public interface FruitFactory { 3095 Apple getApple(Color color); 3096 } 3097 ... 3098 protected void configure() { 3099 install(new FactoryModuleBuilder().build(FruitFactory.class)); 3100 }</pre> 3101 3102 Note that any type returned by the factory in this manner needs to be an implementation class. 3103 <p/> 3104 To return two different implementations for the same interface from your factory, use binding 3105 annotations on your return types: 3106 3107 <pre>interface CarFactory { 3108 {@literal @}Named("fast") Car getFastCar(Color color); 3109 {@literal @}Named("clean") Car getCleanCar(Color color); 3110 } 3111 ... 3112 protected void configure() { 3113 install(new FactoryModuleBuilder() 3114 .implement(Car.class, Names.named("fast"), Porsche.class) 3115 .implement(Car.class, Names.named("clean"), Prius.class) 3116 .build(CarFactory.class)); 3117 }</pre> 3118 3119 <h3>Implementation limitations</h3> 3120 As a limitation of the implementation, it is prohibited to declare a factory method that 3121 accepts a {@code Provider} as one of its arguments. 3122 3123 @since 3.0 3124 @author schmitt@google.com (Peter Schmitt)]]> 3125 </doc> 3126 </class> 3127 <!-- end class com.google.inject.assistedinject.FactoryModuleBuilder --> 3128 <!-- start class com.google.inject.assistedinject.FactoryProvider --> 3129 <class name="FactoryProvider" extends="java.lang.Object" 3130 abstract="false" 3131 static="false" final="false" visibility="public" 3132 deprecated="use {@link FactoryModuleBuilder} instead."> 3133 <implements name="com.google.inject.Provider<F>"/> 3134 <implements name="com.google.inject.spi.HasDependencies"/> 3135 <method name="newFactory" return="com.google.inject.Provider<F>" 3136 abstract="false" native="false" synchronized="false" 3137 static="true" final="false" visibility="public" 3138 deprecated="not deprecated"> 3139 <param name="factoryType" type="java.lang.Class<F>"/> 3140 <param name="implementationType" type="java.lang.Class<?>"/> 3141 </method> 3142 <method name="newFactory" return="com.google.inject.Provider<F>" 3143 abstract="false" native="false" synchronized="false" 3144 static="true" final="false" visibility="public" 3145 deprecated="not deprecated"> 3146 <param name="factoryType" type="com.google.inject.TypeLiteral<F>"/> 3147 <param name="implementationType" type="com.google.inject.TypeLiteral<?>"/> 3148 </method> 3149 <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 3150 abstract="false" native="false" synchronized="false" 3151 static="false" final="false" visibility="public" 3152 deprecated="not deprecated"> 3153 </method> 3154 <method name="get" return="F" 3155 abstract="false" native="false" synchronized="false" 3156 static="false" final="false" visibility="public" 3157 deprecated="not deprecated"> 3158 </method> 3159 <doc> 3160 <![CDATA[<strong>Obsolete.</strong> Prefer {@link FactoryModuleBuilder} for its more concise API and 3161 additional capability. 3162 3163 <p>Provides a factory that combines the caller's arguments with injector-supplied values to 3164 construct objects. 3165 3166 <h3>Defining a factory</h3> 3167 Create an interface whose methods return the constructed type, or any of its supertypes. The 3168 method's parameters are the arguments required to build the constructed type. 3169 <pre>public interface PaymentFactory { 3170 Payment create(Date startDate, Money amount); 3171 }</pre> 3172 You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i> 3173 or <i>newPayment</i>. 3174 3175 <h3>Creating a type that accepts factory parameters</h3> 3176 {@code constructedType} is a concrete class with an {@literal @}{@link Inject}-annotated 3177 constructor. In addition to injector-supplied parameters, the constructor should have 3178 parameters that match each of the factory method's parameters. Each factory-supplied parameter 3179 requires an {@literal @}{@link Assisted} annotation. This serves to document that the parameter 3180 is not bound by your application's modules. 3181 <pre>public class RealPayment implements Payment { 3182 {@literal @}Inject 3183 public RealPayment( 3184 CreditService creditService, 3185 AuthService authService, 3186 <strong>{@literal @}Assisted Date startDate</strong>, 3187 <strong>{@literal @}Assisted Money amount</strong>) { 3188 ... 3189 } 3190 }</pre> 3191 Any parameter that permits a null value should also be annotated {@code @Nullable}. 3192 3193 <h3>Configuring factories</h3> 3194 In your {@link com.google.inject.Module module}, bind the factory interface to the returned 3195 factory: 3196 <pre>bind(PaymentFactory.class).toProvider( 3197 FactoryProvider.newFactory(PaymentFactory.class, RealPayment.class));</pre> 3198 As a side-effect of this binding, Guice will inject the factory to initialize it for use. The 3199 factory cannot be used until the injector has been initialized. 3200 3201 <h3>Using the factory</h3> 3202 Inject your factory into your application classes. When you use the factory, your arguments 3203 will be combined with values from the injector to construct an instance. 3204 <pre>public class PaymentAction { 3205 {@literal @}Inject private PaymentFactory paymentFactory; 3206 3207 public void doPayment(Money amount) { 3208 Payment payment = paymentFactory.create(new Date(), amount); 3209 payment.apply(); 3210 } 3211 }</pre> 3212 3213 <h3>Making parameter types distinct</h3> 3214 The types of the factory method's parameters must be distinct. To use multiple parameters of 3215 the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the 3216 parameters. The names must be applied to the factory method's parameters: 3217 3218 <pre>public interface PaymentFactory { 3219 Payment create( 3220 <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 3221 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 3222 Money amount); 3223 } </pre> 3224 ...and to the concrete type's constructor parameters: 3225 <pre>public class RealPayment implements Payment { 3226 {@literal @}Inject 3227 public RealPayment( 3228 CreditService creditService, 3229 AuthService authService, 3230 <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 3231 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 3232 <strong>{@literal @}Assisted</strong> Money amount) { 3233 ... 3234 } 3235 }</pre> 3236 3237 <h3>Values are created by Guice</h3> 3238 Returned factories use child injectors to create values. The values are eligible for method 3239 interception. In addition, {@literal @}{@literal Inject} members will be injected before they are 3240 returned. 3241 3242 <h3>Backwards compatibility using {@literal @}AssistedInject</h3> 3243 Instead of the {@literal @}Inject annotation, you may annotate the constructed classes with 3244 {@literal @}{@link AssistedInject}. This triggers a limited backwards-compatability mode. 3245 3246 <p>Instead of matching factory method arguments to constructor parameters using their names, the 3247 <strong>parameters are matched by their order</strong>. The first factory method argument is 3248 used for the first {@literal @}Assisted constructor parameter, etc.. Annotation names have no 3249 effect. 3250 3251 <p>Returned values are <strong>not created by Guice</strong>. These types are not eligible for 3252 method interception. They do receive post-construction member injection. 3253 3254 @param <F> The factory interface 3255 3256 @author jmourits@google.com (Jerome Mourits) 3257 @author jessewilson@google.com (Jesse Wilson) 3258 @author dtm@google.com (Daniel Martin) 3259 3260 @deprecated use {@link FactoryModuleBuilder} instead.]]> 3261 </doc> 3262 </class> 3263 <!-- end class com.google.inject.assistedinject.FactoryProvider --> 3264</package> 3265<package name="com.google.inject.binder"> 3266 <!-- start interface com.google.inject.binder.AnnotatedBindingBuilder --> 3267 <interface name="AnnotatedBindingBuilder" abstract="true" 3268 static="false" final="false" visibility="public" 3269 deprecated="not deprecated"> 3270 <implements name="com.google.inject.binder.LinkedBindingBuilder<T>"/> 3271 <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder<T>" 3272 abstract="false" native="false" synchronized="false" 3273 static="false" final="false" visibility="public" 3274 deprecated="not deprecated"> 3275 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3276 <doc> 3277 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3278 </doc> 3279 </method> 3280 <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder<T>" 3281 abstract="false" native="false" synchronized="false" 3282 static="false" final="false" visibility="public" 3283 deprecated="not deprecated"> 3284 <param name="annotation" type="java.lang.annotation.Annotation"/> 3285 <doc> 3286 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3287 </doc> 3288 </method> 3289 <doc> 3290 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3291 3292 @author crazybob@google.com (Bob Lee)]]> 3293 </doc> 3294 </interface> 3295 <!-- end interface com.google.inject.binder.AnnotatedBindingBuilder --> 3296 <!-- start interface com.google.inject.binder.AnnotatedConstantBindingBuilder --> 3297 <interface name="AnnotatedConstantBindingBuilder" abstract="true" 3298 static="false" final="false" visibility="public" 3299 deprecated="not deprecated"> 3300 <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder" 3301 abstract="false" native="false" synchronized="false" 3302 static="false" final="false" visibility="public" 3303 deprecated="not deprecated"> 3304 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3305 <doc> 3306 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3307 </doc> 3308 </method> 3309 <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder" 3310 abstract="false" native="false" synchronized="false" 3311 static="false" final="false" visibility="public" 3312 deprecated="not deprecated"> 3313 <param name="annotation" type="java.lang.annotation.Annotation"/> 3314 <doc> 3315 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3316 </doc> 3317 </method> 3318 <doc> 3319 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3320 3321 @author crazybob@google.com (Bob Lee)]]> 3322 </doc> 3323 </interface> 3324 <!-- end interface com.google.inject.binder.AnnotatedConstantBindingBuilder --> 3325 <!-- start interface com.google.inject.binder.AnnotatedElementBuilder --> 3326 <interface name="AnnotatedElementBuilder" abstract="true" 3327 static="false" final="false" visibility="public" 3328 deprecated="not deprecated"> 3329 <method name="annotatedWith" 3330 abstract="false" native="false" synchronized="false" 3331 static="false" final="false" visibility="public" 3332 deprecated="not deprecated"> 3333 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3334 <doc> 3335 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3336 </doc> 3337 </method> 3338 <method name="annotatedWith" 3339 abstract="false" native="false" synchronized="false" 3340 static="false" final="false" visibility="public" 3341 deprecated="not deprecated"> 3342 <param name="annotation" type="java.lang.annotation.Annotation"/> 3343 <doc> 3344 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3345 </doc> 3346 </method> 3347 <doc> 3348 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3349 3350 @author jessewilson@google.com (Jesse Wilson) 3351 @since 2.0]]> 3352 </doc> 3353 </interface> 3354 <!-- end interface com.google.inject.binder.AnnotatedElementBuilder --> 3355 <!-- start interface com.google.inject.binder.ConstantBindingBuilder --> 3356 <interface name="ConstantBindingBuilder" abstract="true" 3357 static="false" final="false" visibility="public" 3358 deprecated="not deprecated"> 3359 <method name="to" 3360 abstract="false" native="false" synchronized="false" 3361 static="false" final="false" visibility="public" 3362 deprecated="not deprecated"> 3363 <param name="value" type="java.lang.String"/> 3364 <doc> 3365 <![CDATA[Binds constant to the given value.]]> 3366 </doc> 3367 </method> 3368 <method name="to" 3369 abstract="false" native="false" synchronized="false" 3370 static="false" final="false" visibility="public" 3371 deprecated="not deprecated"> 3372 <param name="value" type="int"/> 3373 <doc> 3374 <![CDATA[Binds constant to the given value.]]> 3375 </doc> 3376 </method> 3377 <method name="to" 3378 abstract="false" native="false" synchronized="false" 3379 static="false" final="false" visibility="public" 3380 deprecated="not deprecated"> 3381 <param name="value" type="long"/> 3382 <doc> 3383 <![CDATA[Binds constant to the given value.]]> 3384 </doc> 3385 </method> 3386 <method name="to" 3387 abstract="false" native="false" synchronized="false" 3388 static="false" final="false" visibility="public" 3389 deprecated="not deprecated"> 3390 <param name="value" type="boolean"/> 3391 <doc> 3392 <![CDATA[Binds constant to the given value.]]> 3393 </doc> 3394 </method> 3395 <method name="to" 3396 abstract="false" native="false" synchronized="false" 3397 static="false" final="false" visibility="public" 3398 deprecated="not deprecated"> 3399 <param name="value" type="double"/> 3400 <doc> 3401 <![CDATA[Binds constant to the given value.]]> 3402 </doc> 3403 </method> 3404 <method name="to" 3405 abstract="false" native="false" synchronized="false" 3406 static="false" final="false" visibility="public" 3407 deprecated="not deprecated"> 3408 <param name="value" type="float"/> 3409 <doc> 3410 <![CDATA[Binds constant to the given value.]]> 3411 </doc> 3412 </method> 3413 <method name="to" 3414 abstract="false" native="false" synchronized="false" 3415 static="false" final="false" visibility="public" 3416 deprecated="not deprecated"> 3417 <param name="value" type="short"/> 3418 <doc> 3419 <![CDATA[Binds constant to the given value.]]> 3420 </doc> 3421 </method> 3422 <method name="to" 3423 abstract="false" native="false" synchronized="false" 3424 static="false" final="false" visibility="public" 3425 deprecated="not deprecated"> 3426 <param name="value" type="char"/> 3427 <doc> 3428 <![CDATA[Binds constant to the given value.]]> 3429 </doc> 3430 </method> 3431 <method name="to" 3432 abstract="false" native="false" synchronized="false" 3433 static="false" final="false" visibility="public" 3434 deprecated="not deprecated"> 3435 <param name="value" type="byte"/> 3436 <doc> 3437 <![CDATA[Binds constant to the given value. 3438 3439 @since 3.0]]> 3440 </doc> 3441 </method> 3442 <method name="to" 3443 abstract="false" native="false" synchronized="false" 3444 static="false" final="false" visibility="public" 3445 deprecated="not deprecated"> 3446 <param name="value" type="java.lang.Class<?>"/> 3447 <doc> 3448 <![CDATA[Binds constant to the given value.]]> 3449 </doc> 3450 </method> 3451 <method name="to" 3452 abstract="false" native="false" synchronized="false" 3453 static="false" final="false" visibility="public" 3454 deprecated="not deprecated"> 3455 <param name="value" type="E extends java.lang.Enum<E>"/> 3456 <doc> 3457 <![CDATA[Binds constant to the given value.]]> 3458 </doc> 3459 </method> 3460 <doc> 3461 <![CDATA[Binds to a constant value.]]> 3462 </doc> 3463 </interface> 3464 <!-- end interface com.google.inject.binder.ConstantBindingBuilder --> 3465 <!-- start interface com.google.inject.binder.LinkedBindingBuilder --> 3466 <interface name="LinkedBindingBuilder" abstract="true" 3467 static="false" final="false" visibility="public" 3468 deprecated="not deprecated"> 3469 <implements name="com.google.inject.binder.ScopedBindingBuilder"/> 3470 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 3471 abstract="false" native="false" synchronized="false" 3472 static="false" final="false" visibility="public" 3473 deprecated="not deprecated"> 3474 <param name="implementation" type="java.lang.Class<? extends T>"/> 3475 <doc> 3476 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3477 </doc> 3478 </method> 3479 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 3480 abstract="false" native="false" synchronized="false" 3481 static="false" final="false" visibility="public" 3482 deprecated="not deprecated"> 3483 <param name="implementation" type="com.google.inject.TypeLiteral<? extends T>"/> 3484 <doc> 3485 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3486 </doc> 3487 </method> 3488 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 3489 abstract="false" native="false" synchronized="false" 3490 static="false" final="false" visibility="public" 3491 deprecated="not deprecated"> 3492 <param name="targetKey" type="com.google.inject.Key<? extends T>"/> 3493 <doc> 3494 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3495 </doc> 3496 </method> 3497 <method name="toInstance" 3498 abstract="false" native="false" synchronized="false" 3499 static="false" final="false" visibility="public" 3500 deprecated="not deprecated"> 3501 <param name="instance" type="T"/> 3502 <doc> 3503 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3504 3505 @see com.google.inject.Injector#injectMembers]]> 3506 </doc> 3507 </method> 3508 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3509 abstract="false" native="false" synchronized="false" 3510 static="false" final="false" visibility="public" 3511 deprecated="not deprecated"> 3512 <param name="provider" type="com.google.inject.Provider<? extends T>"/> 3513 <doc> 3514 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3515 3516 @see com.google.inject.Injector#injectMembers]]> 3517 </doc> 3518 </method> 3519 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3520 abstract="false" native="false" synchronized="false" 3521 static="false" final="false" visibility="public" 3522 deprecated="not deprecated"> 3523 <param name="providerType" type="java.lang.Class<? extends javax.inject.Provider<? extends T>>"/> 3524 <doc> 3525 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3526 </doc> 3527 </method> 3528 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3529 abstract="false" native="false" synchronized="false" 3530 static="false" final="false" visibility="public" 3531 deprecated="not deprecated"> 3532 <param name="providerType" type="com.google.inject.TypeLiteral<? extends javax.inject.Provider<? extends T>>"/> 3533 <doc> 3534 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3535 </doc> 3536 </method> 3537 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3538 abstract="false" native="false" synchronized="false" 3539 static="false" final="false" visibility="public" 3540 deprecated="not deprecated"> 3541 <param name="providerKey" type="com.google.inject.Key<? extends javax.inject.Provider<? extends T>>"/> 3542 <doc> 3543 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3544 </doc> 3545 </method> 3546 <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder" 3547 abstract="false" native="false" synchronized="false" 3548 static="false" final="false" visibility="public" 3549 deprecated="not deprecated"> 3550 <param name="constructor" type="java.lang.reflect.Constructor<S>"/> 3551 <doc> 3552 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3553 3554 @since 3.0]]> 3555 </doc> 3556 </method> 3557 <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder" 3558 abstract="false" native="false" synchronized="false" 3559 static="false" final="false" visibility="public" 3560 deprecated="not deprecated"> 3561 <param name="constructor" type="java.lang.reflect.Constructor<S>"/> 3562 <param name="type" type="com.google.inject.TypeLiteral<? extends S>"/> 3563 <doc> 3564 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3565 3566 @since 3.0]]> 3567 </doc> 3568 </method> 3569 <doc> 3570 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3571 3572 @author crazybob@google.com (Bob Lee)]]> 3573 </doc> 3574 </interface> 3575 <!-- end interface com.google.inject.binder.LinkedBindingBuilder --> 3576 <!-- start interface com.google.inject.binder.ScopedBindingBuilder --> 3577 <interface name="ScopedBindingBuilder" abstract="true" 3578 static="false" final="false" visibility="public" 3579 deprecated="not deprecated"> 3580 <method name="in" 3581 abstract="false" native="false" synchronized="false" 3582 static="false" final="false" visibility="public" 3583 deprecated="not deprecated"> 3584 <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3585 <doc> 3586 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3587 </doc> 3588 </method> 3589 <method name="in" 3590 abstract="false" native="false" synchronized="false" 3591 static="false" final="false" visibility="public" 3592 deprecated="not deprecated"> 3593 <param name="scope" type="com.google.inject.Scope"/> 3594 <doc> 3595 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3596 </doc> 3597 </method> 3598 <method name="asEagerSingleton" 3599 abstract="false" native="false" synchronized="false" 3600 static="false" final="false" visibility="public" 3601 deprecated="not deprecated"> 3602 <doc> 3603 <![CDATA[Instructs the {@link com.google.inject.Injector} to eagerly initialize this 3604 singleton-scoped binding upon creation. Useful for application 3605 initialization logic. See the EDSL examples at 3606 {@link com.google.inject.Binder}.]]> 3607 </doc> 3608 </method> 3609 <doc> 3610 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3611 3612 @author crazybob@google.com (Bob Lee)]]> 3613 </doc> 3614 </interface> 3615 <!-- end interface com.google.inject.binder.ScopedBindingBuilder --> 3616</package> 3617<package name="com.google.inject.grapher"> 3618 <!-- start interface com.google.inject.grapher.BindingEdge --> 3619 <interface name="BindingEdge" abstract="true" 3620 static="false" final="false" visibility="public" 3621 deprecated="not deprecated"> 3622 <method name="setType" 3623 abstract="false" native="false" synchronized="false" 3624 static="false" final="false" visibility="public" 3625 deprecated="not deprecated"> 3626 <param name="type" type="com.google.inject.grapher.BindingEdge.Type"/> 3627 </method> 3628 <doc> 3629 <![CDATA[Interface for an edge that connects an interface to the type or instance 3630 that is bound to implement it. 3631 3632 @author phopkins@gmail.com (Pete Hopkins) 3633 3634 @param <K> The type for node IDs.]]> 3635 </doc> 3636 </interface> 3637 <!-- end interface com.google.inject.grapher.BindingEdge --> 3638 <!-- start interface com.google.inject.grapher.BindingEdge.Factory --> 3639 <interface name="BindingEdge.Factory" abstract="true" 3640 static="true" final="false" visibility="public" 3641 deprecated="not deprecated"> 3642 <method name="newBindingEdge" return="T extends com.google.inject.grapher.BindingEdge<K>" 3643 abstract="false" native="false" synchronized="false" 3644 static="false" final="false" visibility="public" 3645 deprecated="not deprecated"> 3646 <param name="fromId" type="K"/> 3647 <param name="toId" type="K"/> 3648 <doc> 3649 <![CDATA[Creates a new {@link BindingEdge} instance and adds it to the graph. 3650 3651 @param fromId Node ID for the interface node. 3652 @param toId Node ID for the implementation (class or instance) node. 3653 @return The newly created and added {@link BindingEdge}.]]> 3654 </doc> 3655 </method> 3656 <doc> 3657 <![CDATA[Factory interface for {@link BindingEdge}s. Renderer implementations will 3658 need to provide an implementation for this. 3659 3660 @param <K> The type for node IDs. 3661 @param <T> The {@link BindingEdge} sub-type that this factory provides.]]> 3662 </doc> 3663 </interface> 3664 <!-- end interface com.google.inject.grapher.BindingEdge.Factory --> 3665 <!-- start class com.google.inject.grapher.BindingEdge.Type --> 3666 <class name="BindingEdge.Type" extends="java.lang.Enum<com.google.inject.grapher.BindingEdge.Type>" 3667 abstract="false" 3668 static="true" final="true" visibility="public" 3669 deprecated="not deprecated"> 3670 <method name="values" return="com.google.inject.grapher.BindingEdge.Type[]" 3671 abstract="false" native="false" synchronized="false" 3672 static="true" final="false" visibility="public" 3673 deprecated="not deprecated"> 3674 </method> 3675 <method name="valueOf" return="com.google.inject.grapher.BindingEdge.Type" 3676 abstract="false" native="false" synchronized="false" 3677 static="true" final="false" visibility="public" 3678 deprecated="not deprecated"> 3679 <param name="name" type="java.lang.String"/> 3680 </method> 3681 <doc> 3682 <![CDATA[Classification for what kind of binding this edge represents.]]> 3683 </doc> 3684 </class> 3685 <!-- end class com.google.inject.grapher.BindingEdge.Type --> 3686 <!-- start interface com.google.inject.grapher.DependencyEdge --> 3687 <interface name="DependencyEdge" abstract="true" 3688 static="false" final="false" visibility="public" 3689 deprecated="not deprecated"> 3690 <doc> 3691 <![CDATA[Interface for an edge from a class or {@link InjectionPoint} to the 3692 interface node that will satisfy the dependency. 3693 3694 @author phopkins@gmail.com (Pete Hopkins) 3695 3696 @param <K> The type for node IDs.]]> 3697 </doc> 3698 </interface> 3699 <!-- end interface com.google.inject.grapher.DependencyEdge --> 3700 <!-- start interface com.google.inject.grapher.DependencyEdge.Factory --> 3701 <interface name="DependencyEdge.Factory" abstract="true" 3702 static="true" final="false" visibility="public" 3703 deprecated="not deprecated"> 3704 <method name="newDependencyEdge" return="T extends com.google.inject.grapher.DependencyEdge<K>" 3705 abstract="false" native="false" synchronized="false" 3706 static="false" final="false" visibility="public" 3707 deprecated="not deprecated"> 3708 <param name="fromId" type="K"/> 3709 <param name="fromPoint" type="com.google.inject.spi.InjectionPoint"/> 3710 <param name="toId" type="K"/> 3711 <doc> 3712 <![CDATA[Creates a new {@link DependencyEdge} and adds it to the graph. 3713 3714 @param fromId The ID for the class or instance node that has the 3715 dependency. 3716 @param fromPoint The point where the dependency will be 3717 {@literal @}{@link Inject}ed. 3718 @param toId The ID for the interface node that satisfies the dependency.]]> 3719 </doc> 3720 </method> 3721 <doc> 3722 <![CDATA[Factory interface for {@link DependencyEdge}s. Renderer implementations 3723 will need to provide an implementation for this. 3724 3725 @param <K> The type for node IDs. 3726 @param <T> The {@link DependencyEdge} sub-type that this factory provides.]]> 3727 </doc> 3728 </interface> 3729 <!-- end interface com.google.inject.grapher.DependencyEdge.Factory --> 3730 <!-- start class com.google.inject.grapher.GrapherModule --> 3731 <class name="GrapherModule" extends="com.google.inject.AbstractModule" 3732 abstract="false" 3733 static="false" final="false" visibility="public" 3734 deprecated="not deprecated"> 3735 <constructor name="GrapherModule" 3736 static="false" final="false" visibility="public" 3737 deprecated="not deprecated"> 3738 </constructor> 3739 <method name="configure" 3740 abstract="false" native="false" synchronized="false" 3741 static="false" final="false" visibility="protected" 3742 deprecated="not deprecated"> 3743 </method> 3744 <doc> 3745 <![CDATA[Module for the common bindings for {@link InjectorGrapher}. You will also 3746 need to bind a {@link Module} that satisfies the {@link Renderer} 3747 dependency. 3748 <p> 3749 If you want to use subtypes of the node and edge classes, or a different 3750 node ID type, you will need to override the {@link GraphingVisitor} binding 3751 to specify the new type parameters. 3752 3753 @author phopkins@gmail.com (Pete Hopkins)]]> 3754 </doc> 3755 </class> 3756 <!-- end class com.google.inject.grapher.GrapherModule --> 3757 <!-- start class com.google.inject.grapher.GraphingVisitor --> 3758 <class name="GraphingVisitor" extends="java.lang.Object" 3759 abstract="false" 3760 static="false" final="false" visibility="public" 3761 deprecated="not deprecated"> 3762 <implements name="com.google.inject.spi.BindingTargetVisitor<java.lang.Object, java.lang.Void>"/> 3763 <constructor name="GraphingVisitor" type="com.google.inject.grapher.NodeIdFactory<K>, com.google.inject.grapher.InterfaceNode.Factory<K, N>, com.google.inject.grapher.ImplementationNode.Factory<K, M>, com.google.inject.grapher.BindingEdge.Factory<K, B>, com.google.inject.grapher.DependencyEdge.Factory<K, D>, com.google.inject.grapher.NodeAliasFactory<K>" 3764 static="false" final="false" visibility="public" 3765 deprecated="not deprecated"> 3766 </constructor> 3767 <method name="getClassNodeId" return="K" 3768 abstract="false" native="false" synchronized="false" 3769 static="false" final="true" visibility="protected" 3770 deprecated="not deprecated"> 3771 <param name="binding" type="com.google.inject.Binding<?>"/> 3772 <doc> 3773 <![CDATA[Helper method to return the standard node ID for the {@link Binding}'s 3774 {@link Key}. 3775 3776 @see NodeIdFactory#getClassNodeId(Key)]]> 3777 </doc> 3778 </method> 3779 <method name="getInstanceNodeId" return="K" 3780 abstract="false" native="false" synchronized="false" 3781 static="false" final="true" visibility="protected" 3782 deprecated="not deprecated"> 3783 <param name="binding" type="com.google.inject.Binding<?>"/> 3784 <doc> 3785 <![CDATA[Helper method to return the instance node ID for the {@link Binding}'s 3786 {@link Key}. 3787 3788 @see NodeIdFactory#getInstanceNodeId(Key)]]> 3789 </doc> 3790 </method> 3791 <method name="newInterfaceNode" return="N extends com.google.inject.grapher.InterfaceNode<K>" 3792 abstract="false" native="false" synchronized="false" 3793 static="false" final="false" visibility="protected" 3794 deprecated="not deprecated"> 3795 <param name="binding" type="com.google.inject.Binding<?>"/> 3796 <doc> 3797 <![CDATA[Creates and returns a new {@link InterfaceNode} object for the given 3798 {@link Binding}.]]> 3799 </doc> 3800 </method> 3801 <method name="newClassImplementationNode" return="M extends com.google.inject.grapher.ImplementationNode<K>" 3802 abstract="false" native="false" synchronized="false" 3803 static="false" final="false" visibility="protected" 3804 deprecated="not deprecated"> 3805 <param name="binding" type="com.google.inject.Binding<?>"/> 3806 <param name="constructorInjectionPoint" type="com.google.inject.spi.InjectionPoint"/> 3807 <param name="memberInjectionPoints" type="java.util.Collection<com.google.inject.spi.InjectionPoint>"/> 3808 <doc> 3809 <![CDATA[Creates and returns a new {@link ImplementationNode} for the given 3810 {@link Binding}, where the {@link Binding} is for a class that Guice 3811 will instantiate, rather than a specific instance.]]> 3812 </doc> 3813 </method> 3814 <method name="newInstanceImplementationNode" return="M extends com.google.inject.grapher.ImplementationNode<K>" 3815 abstract="false" native="false" synchronized="false" 3816 static="false" final="false" visibility="protected" 3817 deprecated="not deprecated"> 3818 <param name="binding" type="com.google.inject.Binding<?>"/> 3819 <param name="instance" type="java.lang.Object"/> 3820 <doc> 3821 <![CDATA[Creates and returns a new {@link ImplementationNode} for the given 3822 {@link Binding}, where the {@link Binding} is for an instance, rather than 3823 a class.]]> 3824 </doc> 3825 </method> 3826 <method name="newBindingEdge" return="B extends com.google.inject.grapher.BindingEdge<K>" 3827 abstract="false" native="false" synchronized="false" 3828 static="false" final="false" visibility="protected" 3829 deprecated="not deprecated"> 3830 <param name="nodeId" type="K"/> 3831 <param name="toId" type="K"/> 3832 <param name="type" type="com.google.inject.grapher.BindingEdge.Type"/> 3833 <doc> 3834 <![CDATA[Creates a new {@link BindingEdge} from the given node to the specified 3835 node. 3836 3837 @param nodeId ID of the {@link InterfaceNode} that binds to the other. 3838 @param toId The node ID of a class or instance that is bound. 3839 @param type The {@link BindingEdge.Type} of this binding. 3840 @return The newly-created and added {@link BindingEdge}.]]> 3841 </doc> 3842 </method> 3843 <method name="newDependencyEdges" return="java.util.Collection<D>" 3844 abstract="false" native="false" synchronized="false" 3845 static="false" final="false" visibility="protected" 3846 deprecated="not deprecated"> 3847 <param name="nodeId" type="K"/> 3848 <param name="node" type="M extends com.google.inject.grapher.ImplementationNode<K>"/> 3849 <param name="dependencies" type="java.util.Collection<com.google.inject.spi.Dependency<?>>"/> 3850 <doc> 3851 <![CDATA[Adds {@link DependencyEdge}s to the graph for each of the provided 3852 {@link Dependency}s. These will be from the given node ID to the 3853 {@link Dependency}'s {@link Key}. 3854 <p> 3855 If a {@link Dependency} has an associated {@link InjectionPoint}, its 3856 member will be added to the given {@link ImplementationNode} and the edge 3857 will start at the {@link Member}. 3858 3859 @see #newDependencyEdge(Object, InjectionPoint, Dependency) 3860 3861 @param nodeId ID of the node that should be the tail of the 3862 {@link DependencyEdge}s. 3863 @param node An {@link ImplementationNode} to add {@link Member}s to. 3864 @param dependencies {@link Collection} of {@link Dependency}s from the 3865 {@link Binding}. 3866 @return A {@link Collection} of the {@link DependencyEdge}s that were 3867 added to the graph.]]> 3868 </doc> 3869 </method> 3870 <method name="newDependencyEdge" return="D extends com.google.inject.grapher.DependencyEdge<K>" 3871 abstract="false" native="false" synchronized="false" 3872 static="false" final="false" visibility="protected" 3873 deprecated="not deprecated"> 3874 <param name="nodeId" type="K"/> 3875 <param name="injectionPoint" type="com.google.inject.spi.InjectionPoint"/> 3876 <param name="dependency" type="com.google.inject.spi.Dependency<?>"/> 3877 <doc> 3878 <![CDATA[Creates a new {@link DependencyEdge} from the given node to a 3879 {@link Dependency}. 3880 <p> 3881 This method takes more comprehensive parameters than strictly necessary 3882 in case they would be useful to overriding implementations. 3883 3884 @param nodeId ID of the {@link ImplementationNode} where the edges will start. 3885 @param injectionPoint The {@link InjectionPoint} that gave rise to this 3886 {@link Dependency}, if one exists. Used to figure out which 3887 {@link Member} the edge should point from. 3888 @param dependency The {@link Dependency} to represent with this edge. 3889 @return The newly-created and added {@link DependencyEdge}.]]> 3890 </doc> 3891 </method> 3892 <method name="visit" return="java.lang.Void" 3893 abstract="false" native="false" synchronized="false" 3894 static="false" final="false" visibility="public" 3895 deprecated="not deprecated"> 3896 <param name="binding" type="com.google.inject.spi.ConstructorBinding<?>"/> 3897 <doc> 3898 <![CDATA[Visitor for {@link ConstructorBinding}s. These are for classes that Guice 3899 will instantiate to satisfy injection requests. We create a new 3900 {@link ImplementationNode} for the class, then add edges to everything 3901 that it depends on to be instantiated. 3902 3903 @see #newClassImplementationNode(Binding, InjectionPoint, Collection) 3904 @see #newDependencyEdges(Object, ImplementationNode, Collection)]]> 3905 </doc> 3906 </method> 3907 <method name="visit" return="java.lang.Void" 3908 abstract="false" native="false" synchronized="false" 3909 static="false" final="false" visibility="public" 3910 deprecated="not deprecated"> 3911 <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding<?>"/> 3912 <doc> 3913 <![CDATA[Visitor for {@link ConvertedConstantBinding}. The {@link Binding}'s 3914 {@link Key} will be of an annotated primitive type, and the value of 3915 {@link ConvertedConstantBinding#getSourceKey()} will be of a 3916 {@link String} with the same annotation. 3917 <p> 3918 We render this as an {@link InterfaceNode} that has a 3919 {@link BindingEdge} to the source {@link Key}. That will then be rendered 3920 by {@link #visit(InstanceBinding)} as an {@link InterfaceNode} 3921 with a {@link BindingEdge} to the {@link String} instance. 3922 3923 @see #newInterfaceNode(Binding) 3924 @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type)]]> 3925 </doc> 3926 </method> 3927 <method name="visit" return="java.lang.Void" 3928 abstract="false" native="false" synchronized="false" 3929 static="false" final="false" visibility="public" 3930 deprecated="not deprecated"> 3931 <param name="binding" type="com.google.inject.spi.ExposedBinding<?>"/> 3932 <doc> 3933 <![CDATA[Currently not displayed on the graph.]]> 3934 </doc> 3935 </method> 3936 <method name="visit" return="java.lang.Void" 3937 abstract="false" native="false" synchronized="false" 3938 static="false" final="false" visibility="public" 3939 deprecated="not deprecated"> 3940 <param name="binding" type="com.google.inject.spi.InstanceBinding<?>"/> 3941 <doc> 3942 <![CDATA[Visitor for {@link InstanceBinding}. We render two nodes in this case: a 3943 {@link InterfaceNode} for the binding's {@link Key}, and then an 3944 {@link ImplementationNode} for the instance {@link Object} itself. We run 3945 a binding node between them. 3946 <p> 3947 We then render any {@link DependencyEdge}s that the instance may have, 3948 which come either from {@link InjectionPoint}s (method and field) on the 3949 instance, or on {@link Dependency}s the instance declares through the 3950 {@link HasDependencies} interface. 3951 3952 @see #newInterfaceNode(Binding) 3953 @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type) 3954 @see #newInstanceImplementationNode(Binding, Object) 3955 @see #newDependencyEdges(Object, ImplementationNode, java.util.Collection)]]> 3956 </doc> 3957 </method> 3958 <method name="visit" return="java.lang.Void" 3959 abstract="false" native="false" synchronized="false" 3960 static="false" final="false" visibility="public" 3961 deprecated="not deprecated"> 3962 <param name="binding" type="com.google.inject.spi.LinkedKeyBinding<?>"/> 3963 <doc> 3964 <![CDATA[Visitor for {@link LinkedKeyBinding}. This is the standard {@link Binding} 3965 you get from binding an interface class to an implementation class. We 3966 create an {@link InterfaceNode}, then draw a {@link BindingEdge} to the 3967 node of the implementing class. 3968 3969 @see #newInterfaceNode(Binding) 3970 @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type)]]> 3971 </doc> 3972 </method> 3973 <method name="visit" return="java.lang.Void" 3974 abstract="false" native="false" synchronized="false" 3975 static="false" final="false" visibility="public" 3976 deprecated="not deprecated"> 3977 <param name="binding" type="com.google.inject.spi.ProviderBinding<?>"/> 3978 <doc> 3979 <![CDATA[Visitor for {@link ProviderBinding}. These {@link Binding}s arise from an 3980 {@link InjectionPoint} for the {@link Provider} interface. Since this 3981 isn't tremendously interesting information, we don't render this binding 3982 on the graph, and instead let the {@link DependencyEdge} go straight from 3983 the {@link InjectionPoint} to the node specified by 3984 {@link ProviderBinding#getProvidedKey()}. 3985 3986 @see NodeAliasFactory#newAlias(Object, Object)]]> 3987 </doc> 3988 </method> 3989 <method name="visit" return="java.lang.Void" 3990 abstract="false" native="false" synchronized="false" 3991 static="false" final="false" visibility="public" 3992 deprecated="not deprecated"> 3993 <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding<?>"/> 3994 <doc> 3995 <![CDATA[Same as {@link #visit(InstanceBinding)}, but the 3996 {@link BindingEdge} is {@link BindingEdge.Type#PROVIDER}. 3997 3998 @see #newInterfaceNode(Binding) 3999 @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type) 4000 @see #newInstanceImplementationNode(Binding, Object) 4001 @see #newDependencyEdges(Object, ImplementationNode, java.util.Collection)]]> 4002 </doc> 4003 </method> 4004 <method name="visit" return="java.lang.Void" 4005 abstract="false" native="false" synchronized="false" 4006 static="false" final="false" visibility="public" 4007 deprecated="not deprecated"> 4008 <param name="binding" type="com.google.inject.spi.ProviderKeyBinding<?>"/> 4009 <doc> 4010 <![CDATA[Same as {@link #visit(LinkedKeyBinding)}, but the 4011 {@link BindingEdge} is {@link BindingEdge.Type#PROVIDER}. 4012 4013 @see #newInterfaceNode(Binding) 4014 @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type)]]> 4015 </doc> 4016 </method> 4017 <method name="visit" return="java.lang.Void" 4018 abstract="false" native="false" synchronized="false" 4019 static="false" final="false" visibility="public" 4020 deprecated="not deprecated"> 4021 <param name="binding" type="com.google.inject.spi.UntargettedBinding<?>"/> 4022 <doc> 4023 <![CDATA[Currently not displayed on the graph.]]> 4024 </doc> 4025 </method> 4026 <doc> 4027 <![CDATA[{@link BindingTargetVisitor} that adds nodes and edges to the graph based on 4028 the visited {@link Binding}. 4029 <p> 4030 This class is parameterized over the four graph element types 4031 ({@link InterfaceNode}, {@link ImplementationNode}, {@link BindingEdge}, and 4032 {@link DependencyEdge}) so that you can extend those interfaces and also 4033 extend this class, and the helper methods will all return your new types. 4034 4035 @author phopkins@gmail.com (Pete Hopkins) 4036 4037 @param <K> The type for node IDs. 4038 @param <N> Type for {@link InterfaceNode}s. 4039 @param <M> Type for {@link ImplementationNode}.s 4040 @param <B> Type for {@link BindingEdge}s. 4041 @param <D> Type for {@link DependencyEdge}s.]]> 4042 </doc> 4043 </class> 4044 <!-- end class com.google.inject.grapher.GraphingVisitor --> 4045 <!-- start interface com.google.inject.grapher.ImplementationNode --> 4046 <interface name="ImplementationNode" abstract="true" 4047 static="false" final="false" visibility="public" 4048 deprecated="not deprecated"> 4049 <method name="setClassKey" 4050 abstract="false" native="false" synchronized="false" 4051 static="false" final="false" visibility="public" 4052 deprecated="not deprecated"> 4053 <param name="key" type="com.google.inject.Key<?>"/> 4054 <doc> 4055 <![CDATA[Sets the {@link Key} that this node is for. Used when the node is 4056 representing a class that Guice will instantiate.]]> 4057 </doc> 4058 </method> 4059 <method name="setInstance" 4060 abstract="false" native="false" synchronized="false" 4061 static="false" final="false" visibility="public" 4062 deprecated="not deprecated"> 4063 <param name="instance" type="java.lang.Object"/> 4064 <doc> 4065 <![CDATA[Sets the {@link Object} that's the already-created instance. Used when 4066 this node is represeting the instance instead of a class.]]> 4067 </doc> 4068 </method> 4069 <method name="setSource" 4070 abstract="false" native="false" synchronized="false" 4071 static="false" final="false" visibility="public" 4072 deprecated="not deprecated"> 4073 <param name="source" type="java.lang.Object"/> 4074 </method> 4075 <method name="addMember" 4076 abstract="false" native="false" synchronized="false" 4077 static="false" final="false" visibility="public" 4078 deprecated="not deprecated"> 4079 <param name="member" type="java.lang.reflect.Member"/> 4080 </method> 4081 <doc> 4082 <![CDATA[Node for classes and instances that have {@link Dependency}s and are 4083 bound to {@link InterfaceNode}s. These nodes will often have fields for 4084 {@link Member}s that are {@link InjectionPoint}s. 4085 4086 @see DependencyEdge 4087 4088 @author phopkins@gmail.com (Pete Hopkins) 4089 4090 @param <K> The type for node IDs.]]> 4091 </doc> 4092 </interface> 4093 <!-- end interface com.google.inject.grapher.ImplementationNode --> 4094 <!-- start interface com.google.inject.grapher.ImplementationNode.Factory --> 4095 <interface name="ImplementationNode.Factory" abstract="true" 4096 static="true" final="false" visibility="public" 4097 deprecated="not deprecated"> 4098 <method name="newImplementationNode" return="T extends com.google.inject.grapher.ImplementationNode<K>" 4099 abstract="false" native="false" synchronized="false" 4100 static="false" final="false" visibility="public" 4101 deprecated="not deprecated"> 4102 <param name="nodeId" type="K"/> 4103 <doc> 4104 <![CDATA[Creates a new {@link ImplementationNode} and adds it to the graph. 4105 4106 @param nodeId ID for the node. 4107 @return The new {@link ImplementationNode} instance.]]> 4108 </doc> 4109 </method> 4110 <doc> 4111 <![CDATA[Factory interface for {@link ImplementationNode}s. Renderer 4112 implementations will need to provide an implementation for this. 4113 4114 @param <K> The type for node IDs. 4115 @param <T> The {@link ImplementationNode} sub-type that this factory 4116 provides.]]> 4117 </doc> 4118 </interface> 4119 <!-- end interface com.google.inject.grapher.ImplementationNode.Factory --> 4120 <!-- start class com.google.inject.grapher.InjectorGrapher --> 4121 <class name="InjectorGrapher" extends="java.lang.Object" 4122 abstract="false" 4123 static="false" final="false" visibility="public" 4124 deprecated="not deprecated"> 4125 <constructor name="InjectorGrapher" type="com.google.inject.spi.BindingTargetVisitor<java.lang.Object, java.util.Collection<com.google.inject.Key<?>>>, com.google.inject.spi.BindingTargetVisitor<java.lang.Object, java.lang.Void>, com.google.inject.grapher.Renderer" 4126 static="false" final="false" visibility="public" 4127 deprecated="not deprecated"> 4128 </constructor> 4129 <method name="of" return="com.google.inject.grapher.InjectorGrapher" 4130 abstract="false" native="false" synchronized="false" 4131 static="false" final="false" visibility="public" 4132 deprecated="not deprecated"> 4133 <param name="injector" type="com.google.inject.Injector"/> 4134 <doc> 4135 <![CDATA[Sets the {@link Injector} to graph.]]> 4136 </doc> 4137 </method> 4138 <method name="rootedAt" return="com.google.inject.grapher.InjectorGrapher" 4139 abstract="false" native="false" synchronized="false" 4140 static="false" final="false" visibility="public" 4141 deprecated="not deprecated"> 4142 <param name="classes" type="java.lang.Class[]"/> 4143 <doc> 4144 <![CDATA[Sets an initial group of {@link Class}es to use as the starting point for 4145 the graph. The graph will be of these classes and their transitive 4146 dependencies and bindings.]]> 4147 </doc> 4148 </method> 4149 <method name="rootedAt" return="com.google.inject.grapher.InjectorGrapher" 4150 abstract="false" native="false" synchronized="false" 4151 static="false" final="false" visibility="public" 4152 deprecated="not deprecated"> 4153 <param name="keys" type="com.google.inject.Key[]"/> 4154 <doc> 4155 <![CDATA[Sets an initial group of {@link Key}s to use as the starting point for 4156 the graph. The graph will be of these keys and their transitive 4157 dependencies and bindings.]]> 4158 </doc> 4159 </method> 4160 <method name="graph" 4161 abstract="false" native="false" synchronized="false" 4162 static="false" final="false" visibility="public" 4163 deprecated="not deprecated"> 4164 <exception name="IOException" type="java.io.IOException"/> 4165 <doc> 4166 <![CDATA[Renders a graph with the bound {@link Renderer}. The {@link Injector} 4167 must have already been specified with {@link #of(Injector)}.]]> 4168 </doc> 4169 </method> 4170 <doc> 4171 <![CDATA[Root class for graphing an {@link Injector}. Bound in {@link GrapherModule}. 4172 <p> 4173 Use {@link #of(Injector)} to specify the {@link Injector} to use, and 4174 {@link graph()} to graph the {@link Injector} using the currently-bound 4175 {@link Renderer}. 4176 <p> 4177 By default, this will graph the entire {@link Injector}. Use 4178 {@link #rootedAt(Class...)} or {@link #rootedAt(Key...)} to specify an 4179 initial set of {@link Class}es or {@link Key}s to use, and this will graph 4180 their transitive bindings and dependencies. 4181 4182 @author phopkins@gmail.com (Pete Hopkins)]]> 4183 </doc> 4184 </class> 4185 <!-- end class com.google.inject.grapher.InjectorGrapher --> 4186 <!-- start interface com.google.inject.grapher.InterfaceNode --> 4187 <interface name="InterfaceNode" abstract="true" 4188 static="false" final="false" visibility="public" 4189 deprecated="not deprecated"> 4190 <method name="setKey" 4191 abstract="false" native="false" synchronized="false" 4192 static="false" final="false" visibility="public" 4193 deprecated="not deprecated"> 4194 <param name="key" type="com.google.inject.Key<?>"/> 4195 </method> 4196 <method name="setSource" 4197 abstract="false" native="false" synchronized="false" 4198 static="false" final="false" visibility="public" 4199 deprecated="not deprecated"> 4200 <param name="source" type="java.lang.Object"/> 4201 </method> 4202 <doc> 4203 <![CDATA[Node for an interface class that has been bound to an implementation class 4204 or instance. These nodes are basically defined by a {@link Key}. 4205 4206 @see BindingEdge 4207 4208 @author phopkins@gmail.com (Pete Hopkins) 4209 4210 @param <K> The type for node IDs.]]> 4211 </doc> 4212 </interface> 4213 <!-- end interface com.google.inject.grapher.InterfaceNode --> 4214 <!-- start interface com.google.inject.grapher.InterfaceNode.Factory --> 4215 <interface name="InterfaceNode.Factory" abstract="true" 4216 static="true" final="false" visibility="public" 4217 deprecated="not deprecated"> 4218 <method name="newInterfaceNode" return="T extends com.google.inject.grapher.InterfaceNode<K>" 4219 abstract="false" native="false" synchronized="false" 4220 static="false" final="false" visibility="public" 4221 deprecated="not deprecated"> 4222 <param name="nodeId" type="K"/> 4223 <doc> 4224 <![CDATA[Creates a new {@link InterfaceNode} and adds it to the graph. 4225 4226 @param nodeId ID for the node. 4227 @return The new {@link InterfaceNode} instance.]]> 4228 </doc> 4229 </method> 4230 <doc> 4231 <![CDATA[Factory interface for {@link InterfaceNode}s. Renderer implementations 4232 will need to provide an implementation for this. 4233 4234 @param <K> The type for node IDs. 4235 @param <T> The {@link InterfaceNode} sub-type that this factory provides.]]> 4236 </doc> 4237 </interface> 4238 <!-- end interface com.google.inject.grapher.InterfaceNode.Factory --> 4239 <!-- start interface com.google.inject.grapher.NameFactory --> 4240 <interface name="NameFactory" abstract="true" 4241 static="false" final="false" visibility="public" 4242 deprecated="not deprecated"> 4243 <method name="getMemberName" return="java.lang.String" 4244 abstract="false" native="false" synchronized="false" 4245 static="false" final="false" visibility="public" 4246 deprecated="not deprecated"> 4247 <param name="member" type="java.lang.reflect.Member"/> 4248 </method> 4249 <method name="getClassName" return="java.lang.String" 4250 abstract="false" native="false" synchronized="false" 4251 static="false" final="false" visibility="public" 4252 deprecated="not deprecated"> 4253 <param name="key" type="com.google.inject.Key<?>"/> 4254 </method> 4255 <method name="getInstanceName" return="java.lang.String" 4256 abstract="false" native="false" synchronized="false" 4257 static="false" final="false" visibility="public" 4258 deprecated="not deprecated"> 4259 <param name="instance" type="java.lang.Object"/> 4260 </method> 4261 <method name="getAnnotationName" return="java.lang.String" 4262 abstract="false" native="false" synchronized="false" 4263 static="false" final="false" visibility="public" 4264 deprecated="not deprecated"> 4265 <param name="key" type="com.google.inject.Key<?>"/> 4266 </method> 4267 <method name="getSourceName" return="java.lang.String" 4268 abstract="false" native="false" synchronized="false" 4269 static="false" final="false" visibility="public" 4270 deprecated="not deprecated"> 4271 <param name="source" type="java.lang.Object"/> 4272 </method> 4273 <doc> 4274 <![CDATA[Interface for a service that provides nice {@link String}s that we can 4275 display in the graph for the types that come up in {@link Binding}s. 4276 4277 @author phopkins@gmail.com (Pete Hopkins)]]> 4278 </doc> 4279 </interface> 4280 <!-- end interface com.google.inject.grapher.NameFactory --> 4281 <!-- start interface com.google.inject.grapher.NodeAliasFactory --> 4282 <interface name="NodeAliasFactory" abstract="true" 4283 static="false" final="false" visibility="public" 4284 deprecated="not deprecated"> 4285 <method name="newAlias" 4286 abstract="false" native="false" synchronized="false" 4287 static="false" final="false" visibility="public" 4288 deprecated="not deprecated"> 4289 <param name="fromId" type="K"/> 4290 <param name="toId" type="K"/> 4291 <doc> 4292 <![CDATA[Makes edges that would point to {@code fromId} point to 4293 {@code toId} instead.]]> 4294 </doc> 4295 </method> 4296 <doc> 4297 <![CDATA[Factory for aliasing one node ID to another. Used when we don't want to 4298 render {@link Key}s from {@link Binding}s that are not interesting. 4299 4300 @author phopkins@gmail.com (Pete Hopkins)]]> 4301 </doc> 4302 </interface> 4303 <!-- end interface com.google.inject.grapher.NodeAliasFactory --> 4304 <!-- start interface com.google.inject.grapher.NodeIdFactory --> 4305 <interface name="NodeIdFactory" abstract="true" 4306 static="false" final="false" visibility="public" 4307 deprecated="not deprecated"> 4308 <method name="getClassNodeId" return="K" 4309 abstract="false" native="false" synchronized="false" 4310 static="false" final="false" visibility="public" 4311 deprecated="not deprecated"> 4312 <param name="key" type="com.google.inject.Key<?>"/> 4313 </method> 4314 <method name="getInstanceNodeId" return="K" 4315 abstract="false" native="false" synchronized="false" 4316 static="false" final="false" visibility="public" 4317 deprecated="not deprecated"> 4318 <param name="key" type="com.google.inject.Key<?>"/> 4319 </method> 4320 <doc> 4321 <![CDATA[Factory for abstract identifiers for elements on the graph. Most graph nodes 4322 will correspond directly to {@link Key}s, but we do this for additional 4323 flexibility and because instances do not have separate {@link Key}s from the 4324 interfaces they are bound to. 4325 <p> 4326 Node IDs are treated as opaque values by {@link GraphingVisitor} and the 4327 other classes in this package. 4328 4329 @author phopkins@gmail.com (Pete Hopkins) 4330 4331 @param <K> The type for node IDs.]]> 4332 </doc> 4333 </interface> 4334 <!-- end interface com.google.inject.grapher.NodeIdFactory --> 4335 <!-- start interface com.google.inject.grapher.Renderer --> 4336 <interface name="Renderer" abstract="true" 4337 static="false" final="false" visibility="public" 4338 deprecated="not deprecated"> 4339 <method name="render" 4340 abstract="false" native="false" synchronized="false" 4341 static="false" final="false" visibility="public" 4342 deprecated="not deprecated"> 4343 <exception name="IOException" type="java.io.IOException"/> 4344 </method> 4345 <doc> 4346 <![CDATA[Interface for the service that renders the graph. It is assumed that the 4347 implementations for {@link BindingEdge.Factory}, 4348 {@link ImplementationNode.Factory}, etc. will have direct access to the 4349 internals of the {@link Renderer} implementation, so the only external 4350 interface needed is the {@link #render()} call that {@link InjectorGrapher} 4351 calls when it's done. 4352 4353 @author phopkins@gmail.com (Pete Hopkins)]]> 4354 </doc> 4355 </interface> 4356 <!-- end interface com.google.inject.grapher.Renderer --> 4357 <!-- start class com.google.inject.grapher.ShortNameFactory --> 4358 <class name="ShortNameFactory" extends="java.lang.Object" 4359 abstract="false" 4360 static="false" final="false" visibility="public" 4361 deprecated="not deprecated"> 4362 <implements name="com.google.inject.grapher.NameFactory"/> 4363 <constructor name="ShortNameFactory" 4364 static="false" final="false" visibility="public" 4365 deprecated="not deprecated"> 4366 </constructor> 4367 <method name="getMemberName" return="java.lang.String" 4368 abstract="false" native="false" synchronized="false" 4369 static="false" final="false" visibility="public" 4370 deprecated="not deprecated"> 4371 <param name="member" type="java.lang.reflect.Member"/> 4372 </method> 4373 <method name="getAnnotationName" return="java.lang.String" 4374 abstract="false" native="false" synchronized="false" 4375 static="false" final="false" visibility="public" 4376 deprecated="not deprecated"> 4377 <param name="key" type="com.google.inject.Key<?>"/> 4378 </method> 4379 <method name="getClassName" return="java.lang.String" 4380 abstract="false" native="false" synchronized="false" 4381 static="false" final="false" visibility="public" 4382 deprecated="not deprecated"> 4383 <param name="key" type="com.google.inject.Key<?>"/> 4384 </method> 4385 <method name="getInstanceName" return="java.lang.String" 4386 abstract="false" native="false" synchronized="false" 4387 static="false" final="false" visibility="public" 4388 deprecated="not deprecated"> 4389 <param name="instance" type="java.lang.Object"/> 4390 </method> 4391 <method name="getSourceName" return="java.lang.String" 4392 abstract="false" native="false" synchronized="false" 4393 static="false" final="false" visibility="public" 4394 deprecated="not deprecated"> 4395 <param name="source" type="java.lang.Object"/> 4396 <doc> 4397 <![CDATA[Returns a name for a Guice "source" object. This will typically be either 4398 a {@link StackTraceElement} for when the binding is made to the instance, 4399 or a {@link Method} when a provider method is used.]]> 4400 </doc> 4401 </method> 4402 <method name="getFileString" return="java.lang.String" 4403 abstract="false" native="false" synchronized="false" 4404 static="false" final="false" visibility="protected" 4405 deprecated="not deprecated"> 4406 <param name="stackTraceElement" type="java.lang.StackTraceElement"/> 4407 </method> 4408 <method name="getMethodString" return="java.lang.String" 4409 abstract="false" native="false" synchronized="false" 4410 static="false" final="false" visibility="protected" 4411 deprecated="not deprecated"> 4412 <param name="method" type="java.lang.reflect.Method"/> 4413 </method> 4414 <doc> 4415 <![CDATA[Reasonable implementation for {@link NameFactory}. Mostly takes various 4416 {@link Object#toString()}s and strips package names out of them so that 4417 they'll fit on the graph. 4418 4419 @author phopkins@gmail.com (Pete Hopkins)]]> 4420 </doc> 4421 </class> 4422 <!-- end class com.google.inject.grapher.ShortNameFactory --> 4423 <!-- start class com.google.inject.grapher.StringNodeIdFactory --> 4424 <class name="StringNodeIdFactory" extends="java.lang.Object" 4425 abstract="false" 4426 static="false" final="false" visibility="public" 4427 deprecated="not deprecated"> 4428 <implements name="com.google.inject.grapher.NodeIdFactory<java.lang.String>"/> 4429 <constructor name="StringNodeIdFactory" 4430 static="false" final="false" visibility="public" 4431 deprecated="not deprecated"> 4432 </constructor> 4433 <method name="getClassNodeId" return="java.lang.String" 4434 abstract="false" native="false" synchronized="false" 4435 static="false" final="false" visibility="public" 4436 deprecated="not deprecated"> 4437 <param name="key" type="com.google.inject.Key<?>"/> 4438 </method> 4439 <method name="getInstanceNodeId" return="java.lang.String" 4440 abstract="false" native="false" synchronized="false" 4441 static="false" final="false" visibility="public" 4442 deprecated="not deprecated"> 4443 <param name="key" type="com.google.inject.Key<?>"/> 4444 </method> 4445 <doc> 4446 <![CDATA[{@link IdFactory} implementation that for {@link String} node IDs. The IDs 4447 are comprised of letters, numbers and underscores. 4448 4449 @author phopkins@gmail.com (Pete Hopkins)]]> 4450 </doc> 4451 </class> 4452 <!-- end class com.google.inject.grapher.StringNodeIdFactory --> 4453 <!-- start class com.google.inject.grapher.TransitiveDependencyVisitor --> 4454 <class name="TransitiveDependencyVisitor" extends="java.lang.Object" 4455 abstract="false" 4456 static="false" final="false" visibility="public" 4457 deprecated="not deprecated"> 4458 <implements name="com.google.inject.spi.BindingTargetVisitor<java.lang.Object, java.util.Collection<com.google.inject.Key<?>>>"/> 4459 <constructor name="TransitiveDependencyVisitor" 4460 static="false" final="false" visibility="public" 4461 deprecated="not deprecated"> 4462 </constructor> 4463 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4464 abstract="false" native="false" synchronized="false" 4465 static="false" final="false" visibility="public" 4466 deprecated="not deprecated"> 4467 <param name="binding" type="com.google.inject.spi.ConstructorBinding<?>"/> 4468 </method> 4469 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4470 abstract="false" native="false" synchronized="false" 4471 static="false" final="false" visibility="public" 4472 deprecated="not deprecated"> 4473 <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding<?>"/> 4474 </method> 4475 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4476 abstract="false" native="false" synchronized="false" 4477 static="false" final="false" visibility="public" 4478 deprecated="not deprecated"> 4479 <param name="binding" type="com.google.inject.spi.ExposedBinding<?>"/> 4480 </method> 4481 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4482 abstract="false" native="false" synchronized="false" 4483 static="false" final="false" visibility="public" 4484 deprecated="not deprecated"> 4485 <param name="binding" type="com.google.inject.spi.InstanceBinding<?>"/> 4486 </method> 4487 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4488 abstract="false" native="false" synchronized="false" 4489 static="false" final="false" visibility="public" 4490 deprecated="not deprecated"> 4491 <param name="binding" type="com.google.inject.spi.LinkedKeyBinding<?>"/> 4492 </method> 4493 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4494 abstract="false" native="false" synchronized="false" 4495 static="false" final="false" visibility="public" 4496 deprecated="not deprecated"> 4497 <param name="binding" type="com.google.inject.spi.ProviderBinding<?>"/> 4498 </method> 4499 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4500 abstract="false" native="false" synchronized="false" 4501 static="false" final="false" visibility="public" 4502 deprecated="not deprecated"> 4503 <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding<?>"/> 4504 </method> 4505 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4506 abstract="false" native="false" synchronized="false" 4507 static="false" final="false" visibility="public" 4508 deprecated="not deprecated"> 4509 <param name="binding" type="com.google.inject.spi.ProviderKeyBinding<?>"/> 4510 </method> 4511 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4512 abstract="false" native="false" synchronized="false" 4513 static="false" final="false" visibility="public" 4514 deprecated="not deprecated"> 4515 <param name="binding" type="com.google.inject.spi.UntargettedBinding<?>"/> 4516 </method> 4517 <doc> 4518 <![CDATA[{@link BindingTargetVisitor} that returns a {@link Collection} of the 4519 {@link Key}s of each {@link Binding}'s dependencies. Used by 4520 {@link InjectorGropher} to walk the dependency graph from a starting set of 4521 {@link Binding}s. 4522 4523 @author phopkins@gmail.com (Pete Hopkins)]]> 4524 </doc> 4525 </class> 4526 <!-- end class com.google.inject.grapher.TransitiveDependencyVisitor --> 4527</package> 4528<package name="com.google.inject.grapher.graphviz"> 4529 <!-- start class com.google.inject.grapher.graphviz.ArrowType --> 4530 <class name="ArrowType" extends="java.lang.Enum<com.google.inject.grapher.graphviz.ArrowType>" 4531 abstract="false" 4532 static="false" final="true" visibility="public" 4533 deprecated="not deprecated"> 4534 <method name="values" return="com.google.inject.grapher.graphviz.ArrowType[]" 4535 abstract="false" native="false" synchronized="false" 4536 static="true" final="false" visibility="public" 4537 deprecated="not deprecated"> 4538 </method> 4539 <method name="valueOf" return="com.google.inject.grapher.graphviz.ArrowType" 4540 abstract="false" native="false" synchronized="false" 4541 static="true" final="false" visibility="public" 4542 deprecated="not deprecated"> 4543 <param name="name" type="java.lang.String"/> 4544 </method> 4545 <method name="toString" return="java.lang.String" 4546 abstract="false" native="false" synchronized="false" 4547 static="false" final="false" visibility="public" 4548 deprecated="not deprecated"> 4549 </method> 4550 <doc> 4551 <![CDATA[Arrow symbols that are available from Graphviz. These can be composed by 4552 concatenation to make double arrows and such. 4553 <p> 4554 See: http://www.graphviz.org/doc/info/arrows.html 4555 4556 @author phopkins@gmail.com (Pete Hopkins)]]> 4557 </doc> 4558 </class> 4559 <!-- end class com.google.inject.grapher.graphviz.ArrowType --> 4560 <!-- start class com.google.inject.grapher.graphviz.BindingEdgeFactory --> 4561 <class name="BindingEdgeFactory" extends="java.lang.Object" 4562 abstract="false" 4563 static="false" final="false" visibility="public" 4564 deprecated="not deprecated"> 4565 <implements name="com.google.inject.grapher.BindingEdge.Factory<java.lang.String, com.google.inject.grapher.BindingEdge<java.lang.String>>"/> 4566 <constructor name="BindingEdgeFactory" type="com.google.inject.grapher.graphviz.GraphvizRenderer" 4567 static="false" final="false" visibility="public" 4568 deprecated="not deprecated"> 4569 </constructor> 4570 <method name="newBindingEdge" return="com.google.inject.grapher.BindingEdge<java.lang.String>" 4571 abstract="false" native="false" synchronized="false" 4572 static="false" final="false" visibility="public" 4573 deprecated="not deprecated"> 4574 <param name="fromId" type="java.lang.String"/> 4575 <param name="toId" type="java.lang.String"/> 4576 </method> 4577 <method name="newAdaptor" return="com.google.inject.grapher.graphviz.BindingEdgeFactory.GraphvizEdgeAdaptor" 4578 abstract="false" native="false" synchronized="false" 4579 static="false" final="false" visibility="protected" 4580 deprecated="not deprecated"> 4581 <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/> 4582 </method> 4583 <doc> 4584 <![CDATA[Graphviz-specific implementation of {@link BindingEdge.Factory}. Uses a 4585 {@link GraphvizEdgeAdaptor} to delegate to a {@link GraphvizEdge}. 4586 4587 @author phopkins@gmail.com (Pete Hopkins)]]> 4588 </doc> 4589 </class> 4590 <!-- end class com.google.inject.grapher.graphviz.BindingEdgeFactory --> 4591 <!-- start class com.google.inject.grapher.graphviz.BindingEdgeFactory.GraphvizEdgeAdaptor --> 4592 <class name="BindingEdgeFactory.GraphvizEdgeAdaptor" extends="java.lang.Object" 4593 abstract="false" 4594 static="false" final="false" visibility="protected" 4595 deprecated="not deprecated"> 4596 <implements name="com.google.inject.grapher.BindingEdge<java.lang.String>"/> 4597 <constructor name="BindingEdgeFactory.GraphvizEdgeAdaptor" type="com.google.inject.grapher.graphviz.GraphvizEdge" 4598 static="false" final="false" visibility="public" 4599 deprecated="not deprecated"> 4600 </constructor> 4601 <method name="setType" 4602 abstract="false" native="false" synchronized="false" 4603 static="false" final="false" visibility="public" 4604 deprecated="not deprecated"> 4605 <param name="type" type="com.google.inject.grapher.BindingEdge.Type"/> 4606 </method> 4607 <field name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge" 4608 transient="false" volatile="false" 4609 static="false" final="true" visibility="protected" 4610 deprecated="not deprecated"> 4611 </field> 4612 <doc> 4613 <![CDATA[Adaptor class that converts {@link BindingEdge} methods to display 4614 operations on a {@link GraphvizEdge}.]]> 4615 </doc> 4616 </class> 4617 <!-- end class com.google.inject.grapher.graphviz.BindingEdgeFactory.GraphvizEdgeAdaptor --> 4618 <!-- start class com.google.inject.grapher.graphviz.CompassPoint --> 4619 <class name="CompassPoint" extends="java.lang.Enum<com.google.inject.grapher.graphviz.CompassPoint>" 4620 abstract="false" 4621 static="false" final="true" visibility="public" 4622 deprecated="not deprecated"> 4623 <method name="values" return="com.google.inject.grapher.graphviz.CompassPoint[]" 4624 abstract="false" native="false" synchronized="false" 4625 static="true" final="false" visibility="public" 4626 deprecated="not deprecated"> 4627 </method> 4628 <method name="valueOf" return="com.google.inject.grapher.graphviz.CompassPoint" 4629 abstract="false" native="false" synchronized="false" 4630 static="true" final="false" visibility="public" 4631 deprecated="not deprecated"> 4632 <param name="name" type="java.lang.String"/> 4633 </method> 4634 <method name="toString" return="java.lang.String" 4635 abstract="false" native="false" synchronized="false" 4636 static="false" final="false" visibility="public" 4637 deprecated="not deprecated"> 4638 </method> 4639 <doc> 4640 <![CDATA[Enum for the "compass point" values used to control where edge 4641 end points appear on the graph. 4642 <p> 4643 See: http://www.graphviz.org/doc/info/attrs.html#k:portPos 4644 4645 @author phopkins@gmail.com (Pete Hopkins)]]> 4646 </doc> 4647 </class> 4648 <!-- end class com.google.inject.grapher.graphviz.CompassPoint --> 4649 <!-- start class com.google.inject.grapher.graphviz.DependencyEdgeFactory --> 4650 <class name="DependencyEdgeFactory" extends="java.lang.Object" 4651 abstract="false" 4652 static="false" final="false" visibility="public" 4653 deprecated="not deprecated"> 4654 <implements name="com.google.inject.grapher.DependencyEdge.Factory<java.lang.String, com.google.inject.grapher.DependencyEdge<java.lang.String>>"/> 4655 <constructor name="DependencyEdgeFactory" type="com.google.inject.grapher.graphviz.GraphvizRenderer, com.google.inject.grapher.graphviz.PortIdFactory" 4656 static="false" final="false" visibility="public" 4657 deprecated="not deprecated"> 4658 </constructor> 4659 <method name="newDependencyEdge" return="com.google.inject.grapher.DependencyEdge<java.lang.String>" 4660 abstract="false" native="false" synchronized="false" 4661 static="false" final="false" visibility="public" 4662 deprecated="not deprecated"> 4663 <param name="fromId" type="java.lang.String"/> 4664 <param name="fromPoint" type="com.google.inject.spi.InjectionPoint"/> 4665 <param name="toId" type="java.lang.String"/> 4666 </method> 4667 <method name="newAdaptor" return="com.google.inject.grapher.graphviz.DependencyEdgeFactory.GraphvizEdgeAdaptor" 4668 abstract="false" native="false" synchronized="false" 4669 static="false" final="false" visibility="protected" 4670 deprecated="not deprecated"> 4671 <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/> 4672 </method> 4673 <doc> 4674 <![CDATA[Graphviz-specific implementation of {@link DependencyEdge.Factory}. Uses a 4675 {@link GraphvizEdgeAdaptor} to delegate to a {@link GraphvizEdge}. 4676 4677 @author phopkins@gmail.com (Pete Hopkins)]]> 4678 </doc> 4679 </class> 4680 <!-- end class com.google.inject.grapher.graphviz.DependencyEdgeFactory --> 4681 <!-- start class com.google.inject.grapher.graphviz.DependencyEdgeFactory.GraphvizEdgeAdaptor --> 4682 <class name="DependencyEdgeFactory.GraphvizEdgeAdaptor" extends="java.lang.Object" 4683 abstract="false" 4684 static="false" final="false" visibility="protected" 4685 deprecated="not deprecated"> 4686 <implements name="com.google.inject.grapher.DependencyEdge<java.lang.String>"/> 4687 <constructor name="DependencyEdgeFactory.GraphvizEdgeAdaptor" type="com.google.inject.grapher.graphviz.GraphvizEdge" 4688 static="false" final="false" visibility="public" 4689 deprecated="not deprecated"> 4690 </constructor> 4691 <field name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge" 4692 transient="false" volatile="false" 4693 static="false" final="true" visibility="protected" 4694 deprecated="not deprecated"> 4695 </field> 4696 <doc> 4697 <![CDATA[Adaptor class that converts {@link DependencyEdge} methods to display 4698 operations on a {@link GraphvizEdge}.]]> 4699 </doc> 4700 </class> 4701 <!-- end class com.google.inject.grapher.graphviz.DependencyEdgeFactory.GraphvizEdgeAdaptor --> 4702 <!-- start class com.google.inject.grapher.graphviz.EdgeStyle --> 4703 <class name="EdgeStyle" extends="java.lang.Enum<com.google.inject.grapher.graphviz.EdgeStyle>" 4704 abstract="false" 4705 static="false" final="true" visibility="public" 4706 deprecated="not deprecated"> 4707 <method name="values" return="com.google.inject.grapher.graphviz.EdgeStyle[]" 4708 abstract="false" native="false" synchronized="false" 4709 static="true" final="false" visibility="public" 4710 deprecated="not deprecated"> 4711 </method> 4712 <method name="valueOf" return="com.google.inject.grapher.graphviz.EdgeStyle" 4713 abstract="false" native="false" synchronized="false" 4714 static="true" final="false" visibility="public" 4715 deprecated="not deprecated"> 4716 <param name="name" type="java.lang.String"/> 4717 </method> 4718 <method name="toString" return="java.lang.String" 4719 abstract="false" native="false" synchronized="false" 4720 static="false" final="false" visibility="public" 4721 deprecated="not deprecated"> 4722 </method> 4723 <doc> 4724 <![CDATA[Styles for edges. 4725 <p> 4726 See: http://www.graphviz.org/doc/info/attrs.html#k:style 4727 4728 @author phopkins@gmail.com (Pete Hopkins)]]> 4729 </doc> 4730 </class> 4731 <!-- end class com.google.inject.grapher.graphviz.EdgeStyle --> 4732 <!-- start class com.google.inject.grapher.graphviz.GraphvizEdge --> 4733 <class name="GraphvizEdge" extends="java.lang.Object" 4734 abstract="false" 4735 static="false" final="false" visibility="public" 4736 deprecated="not deprecated"> 4737 <constructor name="GraphvizEdge" type="java.lang.String, java.lang.String" 4738 static="false" final="false" visibility="public" 4739 deprecated="not deprecated"> 4740 </constructor> 4741 <method name="getHeadNodeId" return="java.lang.String" 4742 abstract="false" native="false" synchronized="false" 4743 static="false" final="false" visibility="public" 4744 deprecated="not deprecated"> 4745 </method> 4746 <method name="getHeadPortId" return="java.lang.String" 4747 abstract="false" native="false" synchronized="false" 4748 static="false" final="false" visibility="public" 4749 deprecated="not deprecated"> 4750 </method> 4751 <method name="setHeadPortId" 4752 abstract="false" native="false" synchronized="false" 4753 static="false" final="false" visibility="public" 4754 deprecated="not deprecated"> 4755 <param name="headPortId" type="java.lang.String"/> 4756 </method> 4757 <method name="getHeadCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint" 4758 abstract="false" native="false" synchronized="false" 4759 static="false" final="false" visibility="public" 4760 deprecated="not deprecated"> 4761 </method> 4762 <method name="setHeadCompassPoint" 4763 abstract="false" native="false" synchronized="false" 4764 static="false" final="false" visibility="public" 4765 deprecated="not deprecated"> 4766 <param name="headCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/> 4767 </method> 4768 <method name="getArrowHead" return="java.util.List<com.google.inject.grapher.graphviz.ArrowType>" 4769 abstract="false" native="false" synchronized="false" 4770 static="false" final="false" visibility="public" 4771 deprecated="not deprecated"> 4772 </method> 4773 <method name="setArrowHead" 4774 abstract="false" native="false" synchronized="false" 4775 static="false" final="false" visibility="public" 4776 deprecated="not deprecated"> 4777 <param name="arrowHead" type="java.util.List<com.google.inject.grapher.graphviz.ArrowType>"/> 4778 </method> 4779 <method name="getTailNodeId" return="java.lang.String" 4780 abstract="false" native="false" synchronized="false" 4781 static="false" final="false" visibility="public" 4782 deprecated="not deprecated"> 4783 </method> 4784 <method name="getTailPortId" return="java.lang.String" 4785 abstract="false" native="false" synchronized="false" 4786 static="false" final="false" visibility="public" 4787 deprecated="not deprecated"> 4788 </method> 4789 <method name="setTailPortId" 4790 abstract="false" native="false" synchronized="false" 4791 static="false" final="false" visibility="public" 4792 deprecated="not deprecated"> 4793 <param name="tailPortId" type="java.lang.String"/> 4794 </method> 4795 <method name="getTailCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint" 4796 abstract="false" native="false" synchronized="false" 4797 static="false" final="false" visibility="public" 4798 deprecated="not deprecated"> 4799 </method> 4800 <method name="setTailCompassPoint" 4801 abstract="false" native="false" synchronized="false" 4802 static="false" final="false" visibility="public" 4803 deprecated="not deprecated"> 4804 <param name="tailCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/> 4805 </method> 4806 <method name="getArrowTail" return="java.util.List<com.google.inject.grapher.graphviz.ArrowType>" 4807 abstract="false" native="false" synchronized="false" 4808 static="false" final="false" visibility="public" 4809 deprecated="not deprecated"> 4810 </method> 4811 <method name="setArrowTail" 4812 abstract="false" native="false" synchronized="false" 4813 static="false" final="false" visibility="public" 4814 deprecated="not deprecated"> 4815 <param name="arrowTail" type="java.util.List<com.google.inject.grapher.graphviz.ArrowType>"/> 4816 </method> 4817 <method name="getStyle" return="com.google.inject.grapher.graphviz.EdgeStyle" 4818 abstract="false" native="false" synchronized="false" 4819 static="false" final="false" visibility="public" 4820 deprecated="not deprecated"> 4821 </method> 4822 <method name="setStyle" 4823 abstract="false" native="false" synchronized="false" 4824 static="false" final="false" visibility="public" 4825 deprecated="not deprecated"> 4826 <param name="style" type="com.google.inject.grapher.graphviz.EdgeStyle"/> 4827 </method> 4828 <doc> 4829 <![CDATA[Data object to encapsulate the attributes of Graphviz edges that we're 4830 interested in drawing. 4831 4832 @author phopkins@gmail.com (Pete Hopkins)]]> 4833 </doc> 4834 </class> 4835 <!-- end class com.google.inject.grapher.graphviz.GraphvizEdge --> 4836 <!-- start class com.google.inject.grapher.graphviz.GraphvizModule --> 4837 <class name="GraphvizModule" extends="com.google.inject.AbstractModule" 4838 abstract="false" 4839 static="false" final="false" visibility="public" 4840 deprecated="not deprecated"> 4841 <constructor name="GraphvizModule" 4842 static="false" final="false" visibility="public" 4843 deprecated="not deprecated"> 4844 </constructor> 4845 <method name="configure" 4846 abstract="false" native="false" synchronized="false" 4847 static="false" final="false" visibility="protected" 4848 deprecated="not deprecated"> 4849 </method> 4850 <doc> 4851 <![CDATA[Module that provides {@link GraphvizRenderer} as the {@link Renderer} and 4852 binds the other Graphviz factories. 4853 4854 @author phopkins@gmail.com (Pete Hopkins)]]> 4855 </doc> 4856 </class> 4857 <!-- end class com.google.inject.grapher.graphviz.GraphvizModule --> 4858 <!-- start class com.google.inject.grapher.graphviz.GraphvizNode --> 4859 <class name="GraphvizNode" extends="java.lang.Object" 4860 abstract="false" 4861 static="false" final="false" visibility="public" 4862 deprecated="not deprecated"> 4863 <constructor name="GraphvizNode" type="java.lang.String" 4864 static="false" final="false" visibility="public" 4865 deprecated="not deprecated"> 4866 </constructor> 4867 <method name="getNodeId" return="java.lang.String" 4868 abstract="false" native="false" synchronized="false" 4869 static="false" final="false" visibility="public" 4870 deprecated="not deprecated"> 4871 </method> 4872 <method name="getShape" return="com.google.inject.grapher.graphviz.NodeShape" 4873 abstract="false" native="false" synchronized="false" 4874 static="false" final="false" visibility="public" 4875 deprecated="not deprecated"> 4876 </method> 4877 <method name="setShape" 4878 abstract="false" native="false" synchronized="false" 4879 static="false" final="false" visibility="public" 4880 deprecated="not deprecated"> 4881 <param name="shape" type="com.google.inject.grapher.graphviz.NodeShape"/> 4882 </method> 4883 <method name="getStyle" return="com.google.inject.grapher.graphviz.NodeStyle" 4884 abstract="false" native="false" synchronized="false" 4885 static="false" final="false" visibility="public" 4886 deprecated="not deprecated"> 4887 </method> 4888 <method name="setStyle" 4889 abstract="false" native="false" synchronized="false" 4890 static="false" final="false" visibility="public" 4891 deprecated="not deprecated"> 4892 <param name="style" type="com.google.inject.grapher.graphviz.NodeStyle"/> 4893 </method> 4894 <method name="getTitle" return="java.lang.String" 4895 abstract="false" native="false" synchronized="false" 4896 static="false" final="false" visibility="public" 4897 deprecated="not deprecated"> 4898 </method> 4899 <method name="setTitle" 4900 abstract="false" native="false" synchronized="false" 4901 static="false" final="false" visibility="public" 4902 deprecated="not deprecated"> 4903 <param name="title" type="java.lang.String"/> 4904 </method> 4905 <method name="getSubtitles" return="java.util.List<java.lang.String>" 4906 abstract="false" native="false" synchronized="false" 4907 static="false" final="false" visibility="public" 4908 deprecated="not deprecated"> 4909 </method> 4910 <method name="addSubtitle" 4911 abstract="false" native="false" synchronized="false" 4912 static="false" final="false" visibility="public" 4913 deprecated="not deprecated"> 4914 <param name="position" type="int"/> 4915 <param name="subtitle" type="java.lang.String"/> 4916 </method> 4917 <method name="getHeaderTextColor" return="java.lang.String" 4918 abstract="false" native="false" synchronized="false" 4919 static="false" final="false" visibility="public" 4920 deprecated="not deprecated"> 4921 </method> 4922 <method name="setHeaderTextColor" 4923 abstract="false" native="false" synchronized="false" 4924 static="false" final="false" visibility="public" 4925 deprecated="not deprecated"> 4926 <param name="headerTextColor" type="java.lang.String"/> 4927 </method> 4928 <method name="getHeaderBackgroundColor" return="java.lang.String" 4929 abstract="false" native="false" synchronized="false" 4930 static="false" final="false" visibility="public" 4931 deprecated="not deprecated"> 4932 </method> 4933 <method name="setHeaderBackgroundColor" 4934 abstract="false" native="false" synchronized="false" 4935 static="false" final="false" visibility="public" 4936 deprecated="not deprecated"> 4937 <param name="headerBackgroundColor" type="java.lang.String"/> 4938 </method> 4939 <method name="addField" 4940 abstract="false" native="false" synchronized="false" 4941 static="false" final="false" visibility="public" 4942 deprecated="not deprecated"> 4943 <param name="portId" type="java.lang.String"/> 4944 <param name="title" type="java.lang.String"/> 4945 </method> 4946 <method name="getFields" return="java.util.Map<java.lang.String, java.lang.String>" 4947 abstract="false" native="false" synchronized="false" 4948 static="false" final="false" visibility="public" 4949 deprecated="not deprecated"> 4950 </method> 4951 <doc> 4952 <![CDATA[Data object to encapsulate the attributes of Graphviz nodes that we're 4953 interested in drawing. 4954 4955 @author phopkins@gmail.com (Pete Hopkins)]]> 4956 </doc> 4957 </class> 4958 <!-- end class com.google.inject.grapher.graphviz.GraphvizNode --> 4959 <!-- start class com.google.inject.grapher.graphviz.GraphvizRenderer --> 4960 <class name="GraphvizRenderer" extends="java.lang.Object" 4961 abstract="false" 4962 static="false" final="false" visibility="public" 4963 deprecated="not deprecated"> 4964 <implements name="com.google.inject.grapher.Renderer"/> 4965 <implements name="com.google.inject.grapher.NodeAliasFactory<java.lang.String>"/> 4966 <constructor name="GraphvizRenderer" 4967 static="false" final="false" visibility="public" 4968 deprecated="not deprecated"> 4969 </constructor> 4970 <method name="setOut" return="com.google.inject.grapher.graphviz.GraphvizRenderer" 4971 abstract="false" native="false" synchronized="false" 4972 static="false" final="false" visibility="public" 4973 deprecated="not deprecated"> 4974 <param name="out" type="java.io.PrintWriter"/> 4975 </method> 4976 <method name="setRankdir" return="com.google.inject.grapher.graphviz.GraphvizRenderer" 4977 abstract="false" native="false" synchronized="false" 4978 static="false" final="false" visibility="public" 4979 deprecated="not deprecated"> 4980 <param name="rankdir" type="java.lang.String"/> 4981 </method> 4982 <method name="addNode" 4983 abstract="false" native="false" synchronized="false" 4984 static="false" final="false" visibility="public" 4985 deprecated="not deprecated"> 4986 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/> 4987 </method> 4988 <method name="addEdge" 4989 abstract="false" native="false" synchronized="false" 4990 static="false" final="false" visibility="public" 4991 deprecated="not deprecated"> 4992 <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/> 4993 </method> 4994 <method name="newAlias" 4995 abstract="false" native="false" synchronized="false" 4996 static="false" final="false" visibility="public" 4997 deprecated="not deprecated"> 4998 <param name="fromId" type="java.lang.String"/> 4999 <param name="toId" type="java.lang.String"/> 5000 </method> 5001 <method name="resolveAlias" return="java.lang.String" 5002 abstract="false" native="false" synchronized="false" 5003 static="false" final="false" visibility="protected" 5004 deprecated="not deprecated"> 5005 <param name="id" type="java.lang.String"/> 5006 </method> 5007 <method name="render" 5008 abstract="false" native="false" synchronized="false" 5009 static="false" final="false" visibility="public" 5010 deprecated="not deprecated"> 5011 </method> 5012 <method name="getGraphAttributes" return="java.util.Map<java.lang.String, java.lang.String>" 5013 abstract="false" native="false" synchronized="false" 5014 static="false" final="false" visibility="protected" 5015 deprecated="not deprecated"> 5016 </method> 5017 <method name="start" 5018 abstract="false" native="false" synchronized="false" 5019 static="false" final="false" visibility="protected" 5020 deprecated="not deprecated"> 5021 </method> 5022 <method name="finish" 5023 abstract="false" native="false" synchronized="false" 5024 static="false" final="false" visibility="protected" 5025 deprecated="not deprecated"> 5026 </method> 5027 <method name="renderNode" 5028 abstract="false" native="false" synchronized="false" 5029 static="false" final="false" visibility="protected" 5030 deprecated="not deprecated"> 5031 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/> 5032 </method> 5033 <method name="getNodeAttributes" return="java.util.Map<java.lang.String, java.lang.String>" 5034 abstract="false" native="false" synchronized="false" 5035 static="false" final="false" visibility="protected" 5036 deprecated="not deprecated"> 5037 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/> 5038 </method> 5039 <method name="getNodeLabel" return="java.lang.String" 5040 abstract="false" native="false" synchronized="false" 5041 static="false" final="false" visibility="protected" 5042 deprecated="not deprecated"> 5043 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/> 5044 <doc> 5045 <![CDATA[Creates the "label" for a node. This is a string of HTML that defines a 5046 table with a heading at the top and (in the case of 5047 {@link ImplementationNode}s) rows for each of the member fields.]]> 5048 </doc> 5049 </method> 5050 <method name="renderEdge" 5051 abstract="false" native="false" synchronized="false" 5052 static="false" final="false" visibility="protected" 5053 deprecated="not deprecated"> 5054 <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/> 5055 </method> 5056 <method name="getEdgeAttributes" return="java.util.Map<java.lang.String, java.lang.String>" 5057 abstract="false" native="false" synchronized="false" 5058 static="false" final="false" visibility="protected" 5059 deprecated="not deprecated"> 5060 <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/> 5061 </method> 5062 <method name="getArrowString" return="java.lang.String" 5063 abstract="false" native="false" synchronized="false" 5064 static="false" final="false" visibility="protected" 5065 deprecated="not deprecated"> 5066 <param name="arrows" type="java.util.List<com.google.inject.grapher.graphviz.ArrowType>"/> 5067 <doc> 5068 <![CDATA[Turns a {@link List} of {@link ArrowType}s into a {@link String} that 5069 represents combining them. With Graphviz, that just means concatenating 5070 them.]]> 5071 </doc> 5072 </method> 5073 <method name="getEdgeEndPoint" return="java.lang.String" 5074 abstract="false" native="false" synchronized="false" 5075 static="false" final="false" visibility="protected" 5076 deprecated="not deprecated"> 5077 <param name="nodeId" type="java.lang.String"/> 5078 <param name="portId" type="java.lang.String"/> 5079 <param name="compassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/> 5080 </method> 5081 <method name="htmlEscape" return="java.lang.String" 5082 abstract="false" native="false" synchronized="false" 5083 static="false" final="false" visibility="protected" 5084 deprecated="not deprecated"> 5085 <param name="str" type="java.lang.String"/> 5086 </method> 5087 <doc> 5088 <![CDATA[{@link Renderer} implementation that writes out a Graphviz DOT file of the 5089 graph. Bound in {@link GraphvizModule}. 5090 <p> 5091 Specify the {@link PrintWriter} to output to with 5092 {@link #setOut(PrintWriter)}. 5093 5094 @author phopkins@gmail.com (Pete Hopkins)]]> 5095 </doc> 5096 </class> 5097 <!-- end class com.google.inject.grapher.graphviz.GraphvizRenderer --> 5098 <!-- start class com.google.inject.grapher.graphviz.ImplementationNodeFactory --> 5099 <class name="ImplementationNodeFactory" extends="java.lang.Object" 5100 abstract="false" 5101 static="false" final="false" visibility="public" 5102 deprecated="not deprecated"> 5103 <implements name="com.google.inject.grapher.ImplementationNode.Factory<java.lang.String, com.google.inject.grapher.ImplementationNode<java.lang.String>>"/> 5104 <constructor name="ImplementationNodeFactory" type="com.google.inject.grapher.graphviz.GraphvizRenderer, com.google.inject.grapher.NameFactory, com.google.inject.grapher.graphviz.PortIdFactory" 5105 static="false" final="false" visibility="public" 5106 deprecated="not deprecated"> 5107 </constructor> 5108 <method name="newImplementationNode" return="com.google.inject.grapher.ImplementationNode<java.lang.String>" 5109 abstract="false" native="false" synchronized="false" 5110 static="false" final="false" visibility="public" 5111 deprecated="not deprecated"> 5112 <param name="nodeId" type="java.lang.String"/> 5113 </method> 5114 <method name="newAdaptor" return="com.google.inject.grapher.graphviz.ImplementationNodeFactory.GraphvizNodeAdaptor" 5115 abstract="false" native="false" synchronized="false" 5116 static="false" final="false" visibility="protected" 5117 deprecated="not deprecated"> 5118 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/> 5119 </method> 5120 <doc> 5121 <![CDATA[Graphviz-specific implementation of {@link ImplementationNode.Factory}. Uses 5122 a {@link GraphvizEdgeAdaptor} to delegate to a {@link GraphvizNode}. 5123 5124 @author phopkins@gmail.com (Pete Hopkins)]]> 5125 </doc> 5126 </class> 5127 <!-- end class com.google.inject.grapher.graphviz.ImplementationNodeFactory --> 5128 <!-- start class com.google.inject.grapher.graphviz.ImplementationNodeFactory.GraphvizNodeAdaptor --> 5129 <class name="ImplementationNodeFactory.GraphvizNodeAdaptor" extends="java.lang.Object" 5130 abstract="false" 5131 static="false" final="false" visibility="protected" 5132 deprecated="not deprecated"> 5133 <implements name="com.google.inject.grapher.ImplementationNode<java.lang.String>"/> 5134 <constructor name="ImplementationNodeFactory.GraphvizNodeAdaptor" type="com.google.inject.grapher.graphviz.GraphvizNode" 5135 static="false" final="false" visibility="public" 5136 deprecated="not deprecated"> 5137 </constructor> 5138 <method name="setClassKey" 5139 abstract="false" native="false" synchronized="false" 5140 static="false" final="false" visibility="public" 5141 deprecated="not deprecated"> 5142 <param name="key" type="com.google.inject.Key<?>"/> 5143 </method> 5144 <method name="setInstance" 5145 abstract="false" native="false" synchronized="false" 5146 static="false" final="false" visibility="public" 5147 deprecated="not deprecated"> 5148 <param name="instance" type="java.lang.Object"/> 5149 </method> 5150 <method name="setSource" 5151 abstract="false" native="false" synchronized="false" 5152 static="false" final="false" visibility="public" 5153 deprecated="not deprecated"> 5154 <param name="source" type="java.lang.Object"/> 5155 </method> 5156 <method name="addMember" 5157 abstract="false" native="false" synchronized="false" 5158 static="false" final="false" visibility="public" 5159 deprecated="not deprecated"> 5160 <param name="member" type="java.lang.reflect.Member"/> 5161 </method> 5162 <field name="node" type="com.google.inject.grapher.graphviz.GraphvizNode" 5163 transient="false" volatile="false" 5164 static="false" final="true" visibility="protected" 5165 deprecated="not deprecated"> 5166 </field> 5167 <doc> 5168 <![CDATA[Adaptor class that converts {@link ImplementationNode} methods to display 5169 operations on a {@link GraphvizNode}.]]> 5170 </doc> 5171 </class> 5172 <!-- end class com.google.inject.grapher.graphviz.ImplementationNodeFactory.GraphvizNodeAdaptor --> 5173 <!-- start class com.google.inject.grapher.graphviz.InterfaceNodeFactory --> 5174 <class name="InterfaceNodeFactory" extends="java.lang.Object" 5175 abstract="false" 5176 static="false" final="false" visibility="public" 5177 deprecated="not deprecated"> 5178 <implements name="com.google.inject.grapher.InterfaceNode.Factory<java.lang.String, com.google.inject.grapher.InterfaceNode<java.lang.String>>"/> 5179 <constructor name="InterfaceNodeFactory" type="com.google.inject.grapher.graphviz.GraphvizRenderer, com.google.inject.grapher.NameFactory" 5180 static="false" final="false" visibility="public" 5181 deprecated="not deprecated"> 5182 </constructor> 5183 <method name="newInterfaceNode" return="com.google.inject.grapher.InterfaceNode<java.lang.String>" 5184 abstract="false" native="false" synchronized="false" 5185 static="false" final="false" visibility="public" 5186 deprecated="not deprecated"> 5187 <param name="nodeId" type="java.lang.String"/> 5188 </method> 5189 <doc> 5190 <![CDATA[Graphviz-specific implementation of {@link InterfaceNode.Factory}. Uses 5191 a {@link GraphvizEdgeAdaptor} to delegate to a {@link GraphvizNode}. 5192 5193 @author phopkins@gmail.com (Pete Hopkins)]]> 5194 </doc> 5195 </class> 5196 <!-- end class com.google.inject.grapher.graphviz.InterfaceNodeFactory --> 5197 <!-- start class com.google.inject.grapher.graphviz.InterfaceNodeFactory.GraphvizNodeAdaptor --> 5198 <class name="InterfaceNodeFactory.GraphvizNodeAdaptor" extends="java.lang.Object" 5199 abstract="false" 5200 static="false" final="false" visibility="protected" 5201 deprecated="not deprecated"> 5202 <implements name="com.google.inject.grapher.InterfaceNode<java.lang.String>"/> 5203 <constructor name="InterfaceNodeFactory.GraphvizNodeAdaptor" type="com.google.inject.grapher.graphviz.GraphvizNode" 5204 static="false" final="false" visibility="public" 5205 deprecated="not deprecated"> 5206 </constructor> 5207 <method name="setKey" 5208 abstract="false" native="false" synchronized="false" 5209 static="false" final="false" visibility="public" 5210 deprecated="not deprecated"> 5211 <param name="key" type="com.google.inject.Key<?>"/> 5212 </method> 5213 <method name="setSource" 5214 abstract="false" native="false" synchronized="false" 5215 static="false" final="false" visibility="public" 5216 deprecated="not deprecated"> 5217 <param name="source" type="java.lang.Object"/> 5218 </method> 5219 <field name="node" type="com.google.inject.grapher.graphviz.GraphvizNode" 5220 transient="false" volatile="false" 5221 static="false" final="true" visibility="protected" 5222 deprecated="not deprecated"> 5223 </field> 5224 <doc> 5225 <![CDATA[Adaptor class that converts {@link InterfaceNode} methods to display 5226 operations on a {@link GraphvizNode}.]]> 5227 </doc> 5228 </class> 5229 <!-- end class com.google.inject.grapher.graphviz.InterfaceNodeFactory.GraphvizNodeAdaptor --> 5230 <!-- start class com.google.inject.grapher.graphviz.NodeShape --> 5231 <class name="NodeShape" extends="java.lang.Enum<com.google.inject.grapher.graphviz.NodeShape>" 5232 abstract="false" 5233 static="false" final="true" visibility="public" 5234 deprecated="not deprecated"> 5235 <method name="values" return="com.google.inject.grapher.graphviz.NodeShape[]" 5236 abstract="false" native="false" synchronized="false" 5237 static="true" final="false" visibility="public" 5238 deprecated="not deprecated"> 5239 </method> 5240 <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeShape" 5241 abstract="false" native="false" synchronized="false" 5242 static="true" final="false" visibility="public" 5243 deprecated="not deprecated"> 5244 <param name="name" type="java.lang.String"/> 5245 </method> 5246 <method name="toString" return="java.lang.String" 5247 abstract="false" native="false" synchronized="false" 5248 static="false" final="false" visibility="public" 5249 deprecated="not deprecated"> 5250 </method> 5251 <doc> 5252 <![CDATA[Enum for the shapes that are most interesting for Guice graphing. 5253 <p> 5254 See: http://www.graphviz.org/doc/info/shapes.html 5255 5256 @author phopkins@gmail.com (Pete Hopkins)]]> 5257 </doc> 5258 </class> 5259 <!-- end class com.google.inject.grapher.graphviz.NodeShape --> 5260 <!-- start class com.google.inject.grapher.graphviz.NodeStyle --> 5261 <class name="NodeStyle" extends="java.lang.Enum<com.google.inject.grapher.graphviz.NodeStyle>" 5262 abstract="false" 5263 static="false" final="true" visibility="public" 5264 deprecated="not deprecated"> 5265 <method name="values" return="com.google.inject.grapher.graphviz.NodeStyle[]" 5266 abstract="false" native="false" synchronized="false" 5267 static="true" final="false" visibility="public" 5268 deprecated="not deprecated"> 5269 </method> 5270 <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeStyle" 5271 abstract="false" native="false" synchronized="false" 5272 static="true" final="false" visibility="public" 5273 deprecated="not deprecated"> 5274 <param name="name" type="java.lang.String"/> 5275 </method> 5276 <method name="toString" return="java.lang.String" 5277 abstract="false" native="false" synchronized="false" 5278 static="false" final="false" visibility="public" 5279 deprecated="not deprecated"> 5280 </method> 5281 <doc> 5282 <![CDATA[Styles for nodes. Similar to {@link EdgeStyle} but with a few more options. 5283 <p> 5284 See: http://www.graphviz.org/doc/info/attrs.html#k:style 5285 5286 @author phopkins@gmail.com (Pete Hopkins)]]> 5287 </doc> 5288 </class> 5289 <!-- end class com.google.inject.grapher.graphviz.NodeStyle --> 5290 <!-- start interface com.google.inject.grapher.graphviz.PortIdFactory --> 5291 <interface name="PortIdFactory" abstract="true" 5292 static="false" final="false" visibility="public" 5293 deprecated="not deprecated"> 5294 <method name="getPortId" return="java.lang.String" 5295 abstract="false" native="false" synchronized="false" 5296 static="false" final="false" visibility="public" 5297 deprecated="not deprecated"> 5298 <param name="member" type="java.lang.reflect.Member"/> 5299 </method> 5300 <doc> 5301 <![CDATA[Interface for a service that returns Graphviz port IDs, used for naming the 5302 rows in {@link ImplementationNode}-displaying {@link GraphvizNode}s. 5303 Implemented by {@link StringNodeIdFactory}. 5304 5305 @author phopkins@gmail.com (Pete Hopkins)]]> 5306 </doc> 5307 </interface> 5308 <!-- end interface com.google.inject.grapher.graphviz.PortIdFactory --> 5309 <!-- start class com.google.inject.grapher.graphviz.PortIdFactoryImpl --> 5310 <class name="PortIdFactoryImpl" extends="java.lang.Object" 5311 abstract="false" 5312 static="false" final="false" visibility="public" 5313 deprecated="not deprecated"> 5314 <implements name="com.google.inject.grapher.graphviz.PortIdFactory"/> 5315 <constructor name="PortIdFactoryImpl" 5316 static="false" final="false" visibility="public" 5317 deprecated="not deprecated"> 5318 </constructor> 5319 <method name="getPortId" return="java.lang.String" 5320 abstract="false" native="false" synchronized="false" 5321 static="false" final="false" visibility="public" 5322 deprecated="not deprecated"> 5323 <param name="member" type="java.lang.reflect.Member"/> 5324 </method> 5325 <doc> 5326 <![CDATA[Implementation of {@link PortIdFactory}. Bound in {@link GraphvizModule}. 5327 5328 @author phopkins@gmail.com (Pete Hopkins)]]> 5329 </doc> 5330 </class> 5331 <!-- end class com.google.inject.grapher.graphviz.PortIdFactoryImpl --> 5332</package> 5333<package name="com.google.inject.jndi"> 5334 <!-- start class com.google.inject.jndi.JndiIntegration --> 5335 <class name="JndiIntegration" extends="java.lang.Object" 5336 abstract="false" 5337 static="false" final="false" visibility="public" 5338 deprecated="not deprecated"> 5339 <method name="fromJndi" return="com.google.inject.Provider<T>" 5340 abstract="false" native="false" synchronized="false" 5341 static="true" final="false" visibility="public" 5342 deprecated="not deprecated"> 5343 <param name="type" type="java.lang.Class<T>"/> 5344 <param name="name" type="java.lang.String"/> 5345 <doc> 5346 <![CDATA[Creates a provider which looks up objects in JNDI using the given name. 5347 Example usage: 5348 5349 <pre> 5350 bind(DataSource.class).toProvider(fromJndi(DataSource.class, "java:...")); 5351 </pre>]]> 5352 </doc> 5353 </method> 5354 <doc> 5355 <![CDATA[Integrates Guice with JNDI. Requires a binding to 5356 {@link javax.naming.Context}. 5357 5358 @author crazybob@google.com (Bob Lee)]]> 5359 </doc> 5360 </class> 5361 <!-- end class com.google.inject.jndi.JndiIntegration --> 5362</package> 5363<package name="com.google.inject.matcher"> 5364 <!-- start class com.google.inject.matcher.AbstractMatcher --> 5365 <class name="AbstractMatcher" extends="java.lang.Object" 5366 abstract="true" 5367 static="false" final="false" visibility="public" 5368 deprecated="not deprecated"> 5369 <implements name="com.google.inject.matcher.Matcher<T>"/> 5370 <constructor name="AbstractMatcher" 5371 static="false" final="false" visibility="public" 5372 deprecated="not deprecated"> 5373 </constructor> 5374 <method name="and" return="com.google.inject.matcher.Matcher<T>" 5375 abstract="false" native="false" synchronized="false" 5376 static="false" final="false" visibility="public" 5377 deprecated="not deprecated"> 5378 <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 5379 </method> 5380 <method name="or" return="com.google.inject.matcher.Matcher<T>" 5381 abstract="false" native="false" synchronized="false" 5382 static="false" final="false" visibility="public" 5383 deprecated="not deprecated"> 5384 <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 5385 </method> 5386 <doc> 5387 <![CDATA[Implements {@code and()} and {@code or()}. 5388 5389 @author crazybob@google.com (Bob Lee)]]> 5390 </doc> 5391 </class> 5392 <!-- end class com.google.inject.matcher.AbstractMatcher --> 5393 <!-- start interface com.google.inject.matcher.Matcher --> 5394 <interface name="Matcher" abstract="true" 5395 static="false" final="false" visibility="public" 5396 deprecated="not deprecated"> 5397 <method name="matches" return="boolean" 5398 abstract="false" native="false" synchronized="false" 5399 static="false" final="false" visibility="public" 5400 deprecated="not deprecated"> 5401 <param name="t" type="T"/> 5402 <doc> 5403 <![CDATA[Returns {@code true} if this matches {@code t}, {@code false} otherwise.]]> 5404 </doc> 5405 </method> 5406 <method name="and" return="com.google.inject.matcher.Matcher<T>" 5407 abstract="false" native="false" synchronized="false" 5408 static="false" final="false" visibility="public" 5409 deprecated="not deprecated"> 5410 <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 5411 <doc> 5412 <![CDATA[Returns a new matcher which returns {@code true} if both this and the 5413 given matcher return {@code true}.]]> 5414 </doc> 5415 </method> 5416 <method name="or" return="com.google.inject.matcher.Matcher<T>" 5417 abstract="false" native="false" synchronized="false" 5418 static="false" final="false" visibility="public" 5419 deprecated="not deprecated"> 5420 <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 5421 <doc> 5422 <![CDATA[Returns a new matcher which returns {@code true} if either this or the 5423 given matcher return {@code true}.]]> 5424 </doc> 5425 </method> 5426 <doc> 5427 <![CDATA[Returns {@code true} or {@code false} for a given input. 5428 5429 @author crazybob@google.com (Bob Lee)]]> 5430 </doc> 5431 </interface> 5432 <!-- end interface com.google.inject.matcher.Matcher --> 5433 <!-- start class com.google.inject.matcher.Matchers --> 5434 <class name="Matchers" extends="java.lang.Object" 5435 abstract="false" 5436 static="false" final="false" visibility="public" 5437 deprecated="not deprecated"> 5438 <method name="any" return="com.google.inject.matcher.Matcher<java.lang.Object>" 5439 abstract="false" native="false" synchronized="false" 5440 static="true" final="false" visibility="public" 5441 deprecated="not deprecated"> 5442 <doc> 5443 <![CDATA[Returns a matcher which matches any input.]]> 5444 </doc> 5445 </method> 5446 <method name="not" return="com.google.inject.matcher.Matcher<T>" 5447 abstract="false" native="false" synchronized="false" 5448 static="true" final="false" visibility="public" 5449 deprecated="not deprecated"> 5450 <param name="p" type="com.google.inject.matcher.Matcher<? super T>"/> 5451 <doc> 5452 <![CDATA[Inverts the given matcher.]]> 5453 </doc> 5454 </method> 5455 <method name="annotatedWith" return="com.google.inject.matcher.Matcher<java.lang.reflect.AnnotatedElement>" 5456 abstract="false" native="false" synchronized="false" 5457 static="true" final="false" visibility="public" 5458 deprecated="not deprecated"> 5459 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5460 <doc> 5461 <![CDATA[Returns a matcher which matches elements (methods, classes, etc.) 5462 with a given annotation.]]> 5463 </doc> 5464 </method> 5465 <method name="annotatedWith" return="com.google.inject.matcher.Matcher<java.lang.reflect.AnnotatedElement>" 5466 abstract="false" native="false" synchronized="false" 5467 static="true" final="false" visibility="public" 5468 deprecated="not deprecated"> 5469 <param name="annotation" type="java.lang.annotation.Annotation"/> 5470 <doc> 5471 <![CDATA[Returns a matcher which matches elements (methods, classes, etc.) 5472 with a given annotation.]]> 5473 </doc> 5474 </method> 5475 <method name="subclassesOf" return="com.google.inject.matcher.Matcher<java.lang.Class>" 5476 abstract="false" native="false" synchronized="false" 5477 static="true" final="false" visibility="public" 5478 deprecated="not deprecated"> 5479 <param name="superclass" type="java.lang.Class<?>"/> 5480 <doc> 5481 <![CDATA[Returns a matcher which matches subclasses of the given type (as well as 5482 the given type).]]> 5483 </doc> 5484 </method> 5485 <method name="only" return="com.google.inject.matcher.Matcher<java.lang.Object>" 5486 abstract="false" native="false" synchronized="false" 5487 static="true" final="false" visibility="public" 5488 deprecated="not deprecated"> 5489 <param name="value" type="java.lang.Object"/> 5490 <doc> 5491 <![CDATA[Returns a matcher which matches objects equal to the given object.]]> 5492 </doc> 5493 </method> 5494 <method name="identicalTo" return="com.google.inject.matcher.Matcher<java.lang.Object>" 5495 abstract="false" native="false" synchronized="false" 5496 static="true" final="false" visibility="public" 5497 deprecated="not deprecated"> 5498 <param name="value" type="java.lang.Object"/> 5499 <doc> 5500 <![CDATA[Returns a matcher which matches only the given object.]]> 5501 </doc> 5502 </method> 5503 <method name="inPackage" return="com.google.inject.matcher.Matcher<java.lang.Class>" 5504 abstract="false" native="false" synchronized="false" 5505 static="true" final="false" visibility="public" 5506 deprecated="not deprecated"> 5507 <param name="targetPackage" type="java.lang.Package"/> 5508 <doc> 5509 <![CDATA[Returns a matcher which matches classes in the given package. Packages are specific to their 5510 classloader, so classes with the same package name may not have the same package at runtime.]]> 5511 </doc> 5512 </method> 5513 <method name="inSubpackage" return="com.google.inject.matcher.Matcher<java.lang.Class>" 5514 abstract="false" native="false" synchronized="false" 5515 static="true" final="false" visibility="public" 5516 deprecated="not deprecated"> 5517 <param name="targetPackageName" type="java.lang.String"/> 5518 <doc> 5519 <![CDATA[Returns a matcher which matches classes in the given package and its subpackages. Unlike 5520 {@link #inPackage(Package) inPackage()}, this matches classes from any classloader. 5521 5522 @since 2.0]]> 5523 </doc> 5524 </method> 5525 <method name="returns" return="com.google.inject.matcher.Matcher<java.lang.reflect.Method>" 5526 abstract="false" native="false" synchronized="false" 5527 static="true" final="false" visibility="public" 5528 deprecated="not deprecated"> 5529 <param name="returnType" type="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>"/> 5530 <doc> 5531 <![CDATA[Returns a matcher which matches methods with matching return types.]]> 5532 </doc> 5533 </method> 5534 <doc> 5535 <![CDATA[Matcher implementations. Supports matching classes and methods. 5536 5537 @author crazybob@google.com (Bob Lee)]]> 5538 </doc> 5539 </class> 5540 <!-- end class com.google.inject.matcher.Matchers --> 5541</package> 5542<package name="com.google.inject.multibindings"> 5543 <!-- start class com.google.inject.multibindings.MapBinder --> 5544 <class name="MapBinder" extends="java.lang.Object" 5545 abstract="true" 5546 static="false" final="false" visibility="public" 5547 deprecated="not deprecated"> 5548 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5549 abstract="false" native="false" synchronized="false" 5550 static="true" final="false" visibility="public" 5551 deprecated="not deprecated"> 5552 <param name="binder" type="com.google.inject.Binder"/> 5553 <param name="keyType" type="com.google.inject.TypeLiteral<K>"/> 5554 <param name="valueType" type="com.google.inject.TypeLiteral<V>"/> 5555 <doc> 5556 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5557 {@link Map} that is itself bound with no binding annotation.]]> 5558 </doc> 5559 </method> 5560 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5561 abstract="false" native="false" synchronized="false" 5562 static="true" final="false" visibility="public" 5563 deprecated="not deprecated"> 5564 <param name="binder" type="com.google.inject.Binder"/> 5565 <param name="keyType" type="java.lang.Class<K>"/> 5566 <param name="valueType" type="java.lang.Class<V>"/> 5567 <doc> 5568 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5569 {@link Map} that is itself bound with no binding annotation.]]> 5570 </doc> 5571 </method> 5572 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5573 abstract="false" native="false" synchronized="false" 5574 static="true" final="false" visibility="public" 5575 deprecated="not deprecated"> 5576 <param name="binder" type="com.google.inject.Binder"/> 5577 <param name="keyType" type="com.google.inject.TypeLiteral<K>"/> 5578 <param name="valueType" type="com.google.inject.TypeLiteral<V>"/> 5579 <param name="annotation" type="java.lang.annotation.Annotation"/> 5580 <doc> 5581 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5582 {@link Map} that is itself bound with {@code annotation}.]]> 5583 </doc> 5584 </method> 5585 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5586 abstract="false" native="false" synchronized="false" 5587 static="true" final="false" visibility="public" 5588 deprecated="not deprecated"> 5589 <param name="binder" type="com.google.inject.Binder"/> 5590 <param name="keyType" type="java.lang.Class<K>"/> 5591 <param name="valueType" type="java.lang.Class<V>"/> 5592 <param name="annotation" type="java.lang.annotation.Annotation"/> 5593 <doc> 5594 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5595 {@link Map} that is itself bound with {@code annotation}.]]> 5596 </doc> 5597 </method> 5598 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5599 abstract="false" native="false" synchronized="false" 5600 static="true" final="false" visibility="public" 5601 deprecated="not deprecated"> 5602 <param name="binder" type="com.google.inject.Binder"/> 5603 <param name="keyType" type="com.google.inject.TypeLiteral<K>"/> 5604 <param name="valueType" type="com.google.inject.TypeLiteral<V>"/> 5605 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5606 <doc> 5607 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5608 {@link Map} that is itself bound with {@code annotationType}.]]> 5609 </doc> 5610 </method> 5611 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5612 abstract="false" native="false" synchronized="false" 5613 static="true" final="false" visibility="public" 5614 deprecated="not deprecated"> 5615 <param name="binder" type="com.google.inject.Binder"/> 5616 <param name="keyType" type="java.lang.Class<K>"/> 5617 <param name="valueType" type="java.lang.Class<V>"/> 5618 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5619 <doc> 5620 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5621 {@link Map} that is itself bound with {@code annotationType}.]]> 5622 </doc> 5623 </method> 5624 <method name="permitDuplicates" return="com.google.inject.multibindings.MapBinder<K, V>" 5625 abstract="true" native="false" synchronized="false" 5626 static="false" final="false" visibility="public" 5627 deprecated="not deprecated"> 5628 <doc> 5629 <![CDATA[Configures the {@code MapBinder} to handle duplicate entries. 5630 <p>When multiple equal keys are bound, the value that gets included in the map is 5631 arbitrary. 5632 <p>In addition to the {@code Map<K, V>} and {@code Map<K, Provider<V>>} 5633 maps that are normally bound, a {@code Map<K, Set<V>>} and 5634 {@code Map<K, Set<Provider<V>>>} are <em>also</em> bound, which contain 5635 all values bound to each key. 5636 <p> 5637 When multiple modules contribute elements to the map, this configuration 5638 option impacts all of them. 5639 5640 @return this map binder 5641 @since 3.0]]> 5642 </doc> 5643 </method> 5644 <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder<V>" 5645 abstract="true" native="false" synchronized="false" 5646 static="false" final="false" visibility="public" 5647 deprecated="not deprecated"> 5648 <param name="key" type="K"/> 5649 <doc> 5650 <![CDATA[Returns a binding builder used to add a new entry in the map. Each 5651 key must be distinct (and non-null). Bound providers will be evaluated each 5652 time the map is injected. 5653 5654 <p>It is an error to call this method without also calling one of the 5655 {@code to} methods on the returned binding builder. 5656 5657 <p>Scoping elements independently is supported. Use the {@code in} method 5658 to specify a binding scope.]]> 5659 </doc> 5660 </method> 5661 <doc> 5662 <![CDATA[An API to bind multiple map entries separately, only to later inject them as 5663 a complete map. MapBinder is intended for use in your application's module: 5664 <pre><code> 5665 public class SnacksModule extends AbstractModule { 5666 protected void configure() { 5667 MapBinder<String, Snack> mapbinder 5668 = MapBinder.newMapBinder(binder(), String.class, Snack.class); 5669 mapbinder.addBinding("twix").toInstance(new Twix()); 5670 mapbinder.addBinding("snickers").toProvider(SnickersProvider.class); 5671 mapbinder.addBinding("skittles").to(Skittles.class); 5672 } 5673 }</code></pre> 5674 5675 <p>With this binding, a {@link Map}{@code <String, Snack>} can now be 5676 injected: 5677 <pre><code> 5678 class SnackMachine { 5679 {@literal @}Inject 5680 public SnackMachine(Map<String, Snack> snacks) { ... } 5681 }</code></pre> 5682 5683 <p>In addition to binding {@code Map<K, V>}, a mapbinder will also bind 5684 {@code Map<K, Provider<V>>} for lazy value provision: 5685 <pre><code> 5686 class SnackMachine { 5687 {@literal @}Inject 5688 public SnackMachine(Map<String, Provider<Snack>> snackProviders) { ... } 5689 }</code></pre> 5690 5691 <p>Contributing mapbindings from different modules is supported. For example, 5692 it is okay to have both {@code CandyModule} and {@code ChipsModule} both 5693 create their own {@code MapBinder<String, Snack>}, and to each contribute 5694 bindings to the snacks map. When that map is injected, it will contain 5695 entries from both modules. 5696 5697 <p>The map's iteration order is consistent with the binding order. This is 5698 convenient when multiple elements are contributed by the same module because 5699 that module can order its bindings appropriately. Avoid relying on the 5700 iteration order of elements contributed by different modules, since there is 5701 no equivalent mechanism to order modules. 5702 5703 <p>The map is unmodifiable. Elements can only be added to the map by 5704 configuring the MapBinder. Elements can never be removed from the map. 5705 5706 <p>Values are resolved at map injection time. If a value is bound to a 5707 provider, that provider's get method will be called each time the map is 5708 injected (unless the binding is also scoped, or a map of providers is injected). 5709 5710 <p>Annotations are used to create different maps of the same key/value 5711 type. Each distinct annotation gets its own independent map. 5712 5713 <p><strong>Keys must be distinct.</strong> If the same key is bound more than 5714 once, map injection will fail. However, use {@link #permitDuplicates()} in 5715 order to allow duplicate keys; extra bindings to {@code Map<K, Set<V>>} and 5716 {@code Map<K, Set<Provider<V>>} will be added. 5717 5718 <p><strong>Keys must be non-null.</strong> {@code addBinding(null)} will 5719 throw an unchecked exception. 5720 5721 <p><strong>Values must be non-null to use map injection.</strong> If any 5722 value is null, map injection will fail (although injecting a map of providers 5723 will not). 5724 5725 @author dpb@google.com (David P. Baker)]]> 5726 </doc> 5727 </class> 5728 <!-- end class com.google.inject.multibindings.MapBinder --> 5729 <!-- start interface com.google.inject.multibindings.MapBinderBinding --> 5730 <interface name="MapBinderBinding" abstract="true" 5731 static="false" final="false" visibility="public" 5732 deprecated="not deprecated"> 5733 <method name="getMapKey" return="com.google.inject.Key<T>" 5734 abstract="false" native="false" synchronized="false" 5735 static="false" final="false" visibility="public" 5736 deprecated="not deprecated"> 5737 <doc> 5738 <![CDATA[Returns the {@link Key} for the map.]]> 5739 </doc> 5740 </method> 5741 <method name="getKeyTypeLiteral" return="com.google.inject.TypeLiteral<?>" 5742 abstract="false" native="false" synchronized="false" 5743 static="false" final="false" visibility="public" 5744 deprecated="not deprecated"> 5745 <doc> 5746 <![CDATA[Returns the TypeLiteral describing the keys of the map. 5747 <p> 5748 The TypeLiteral will always match the type Map's generic type. For example, if getMapKey 5749 returns a key of <code>Map<String, Snack></code>, then this will always return a 5750 <code>TypeLiteral<String></code>.]]> 5751 </doc> 5752 </method> 5753 <method name="getValueTypeLiteral" return="com.google.inject.TypeLiteral<?>" 5754 abstract="false" native="false" synchronized="false" 5755 static="false" final="false" visibility="public" 5756 deprecated="not deprecated"> 5757 <doc> 5758 <![CDATA[Returns the TypeLiteral describing the values of the map. 5759 <p> 5760 The TypeLiteral will always match the type Map's generic type. For example, if getMapKey 5761 returns a key of <code>Map<String, Snack></code>, then this will always return a 5762 <code>TypeLiteral<Snack></code>.]]> 5763 </doc> 5764 </method> 5765 <method name="getEntries" return="java.util.List<java.util.Map.Entry<?, com.google.inject.Binding<?>>>" 5766 abstract="false" native="false" synchronized="false" 5767 static="false" final="false" visibility="public" 5768 deprecated="not deprecated"> 5769 <doc> 5770 <![CDATA[Returns all entries in the Map. The returned list of Map.Entries contains the key and a binding 5771 to the value. Duplicate keys or values will exist as separate Map.Entries in the returned list. 5772 This is only supported on bindings returned from an injector. This will throw 5773 {@link UnsupportedOperationException} if it is called on an element retrieved from 5774 {@link Elements#getElements}. 5775 <p> 5776 The elements will always match the type Map's generic type. For example, if getMapKey returns a 5777 key of <code>Map<String, Snack></code>, then this will always return a list of type 5778 <code>List<Map.Entry<String, Binding<Snack>>></code>.]]> 5779 </doc> 5780 </method> 5781 <method name="permitsDuplicates" return="boolean" 5782 abstract="false" native="false" synchronized="false" 5783 static="false" final="false" visibility="public" 5784 deprecated="not deprecated"> 5785 <doc> 5786 <![CDATA[Returns true if the MapBinder permits duplicates. This is only supported on bindings returned 5787 from an injector. This will throw {@link UnsupportedOperationException} if it is called on a 5788 MapBinderBinding retrieved from {@link Elements#getElements}.]]> 5789 </doc> 5790 </method> 5791 <method name="containsElement" return="boolean" 5792 abstract="false" native="false" synchronized="false" 5793 static="false" final="false" visibility="public" 5794 deprecated="not deprecated"> 5795 <param name="element" type="com.google.inject.spi.Element"/> 5796 <doc> 5797 <![CDATA[Returns true if this MapBinder contains the given Element in order to build the map or uses the 5798 given Element in order to support building and injecting the map. This will work for 5799 MapBinderBindings retrieved from an injector and {@link Elements#getElements}. Usually this is 5800 only necessary if you are working with elements retrieved from modules (without an Injector), 5801 otherwise {@link #getEntries} and {@link #permitsDuplicates} are better options. 5802 <p> 5803 If you need to introspect the details of the map, such as the keys, values or if it permits 5804 duplicates, it is necessary to pass the elements through an Injector and use 5805 {@link #getEntries()} and {@link #permitsDuplicates()}.]]> 5806 </doc> 5807 </method> 5808 <doc> 5809 <![CDATA[A binding for a MapBinder. 5810 <p> 5811 Although MapBinders may be injected through a variety of generic types (Map<K, V>, Map 5812 <K, Provider<V>>, Map<K, Set<V>>, Map<K, Set< 5813 Provider<V>>, and even Set<Map.Entry<K, Provider<V>>), a 5814 MapBinderBinding exists only on the Binding associated with the Map<K, V> key. Other 5815 bindings can be validated to be derived from this MapBinderBinding using 5816 {@link #containsElement(Element)}. 5817 5818 @param <T> The fully qualified type of the map, including Map. For example: 5819 <code>MapBinderBinding<Map<String, Snack>></code> 5820 5821 @since 3.0 5822 @author sameb@google.com (Sam Berlin)]]> 5823 </doc> 5824 </interface> 5825 <!-- end interface com.google.inject.multibindings.MapBinderBinding --> 5826 <!-- start class com.google.inject.multibindings.Multibinder --> 5827 <class name="Multibinder" extends="java.lang.Object" 5828 abstract="true" 5829 static="false" final="false" visibility="public" 5830 deprecated="not deprecated"> 5831 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5832 abstract="false" native="false" synchronized="false" 5833 static="true" final="false" visibility="public" 5834 deprecated="not deprecated"> 5835 <param name="binder" type="com.google.inject.Binder"/> 5836 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 5837 <doc> 5838 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5839 itself bound with no binding annotation.]]> 5840 </doc> 5841 </method> 5842 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5843 abstract="false" native="false" synchronized="false" 5844 static="true" final="false" visibility="public" 5845 deprecated="not deprecated"> 5846 <param name="binder" type="com.google.inject.Binder"/> 5847 <param name="type" type="java.lang.Class<T>"/> 5848 <doc> 5849 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5850 itself bound with no binding annotation.]]> 5851 </doc> 5852 </method> 5853 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5854 abstract="false" native="false" synchronized="false" 5855 static="true" final="false" visibility="public" 5856 deprecated="not deprecated"> 5857 <param name="binder" type="com.google.inject.Binder"/> 5858 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 5859 <param name="annotation" type="java.lang.annotation.Annotation"/> 5860 <doc> 5861 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5862 itself bound with {@code annotation}.]]> 5863 </doc> 5864 </method> 5865 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5866 abstract="false" native="false" synchronized="false" 5867 static="true" final="false" visibility="public" 5868 deprecated="not deprecated"> 5869 <param name="binder" type="com.google.inject.Binder"/> 5870 <param name="type" type="java.lang.Class<T>"/> 5871 <param name="annotation" type="java.lang.annotation.Annotation"/> 5872 <doc> 5873 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5874 itself bound with {@code annotation}.]]> 5875 </doc> 5876 </method> 5877 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5878 abstract="false" native="false" synchronized="false" 5879 static="true" final="false" visibility="public" 5880 deprecated="not deprecated"> 5881 <param name="binder" type="com.google.inject.Binder"/> 5882 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 5883 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5884 <doc> 5885 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5886 itself bound with {@code annotationType}.]]> 5887 </doc> 5888 </method> 5889 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5890 abstract="false" native="false" synchronized="false" 5891 static="true" final="false" visibility="public" 5892 deprecated="not deprecated"> 5893 <param name="binder" type="com.google.inject.Binder"/> 5894 <param name="type" type="java.lang.Class<T>"/> 5895 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5896 <doc> 5897 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5898 itself bound with {@code annotationType}.]]> 5899 </doc> 5900 </method> 5901 <method name="permitDuplicates" return="com.google.inject.multibindings.Multibinder<T>" 5902 abstract="true" native="false" synchronized="false" 5903 static="false" final="false" visibility="public" 5904 deprecated="not deprecated"> 5905 <doc> 5906 <![CDATA[Configures the bound set to silently discard duplicate elements. When multiple equal values are 5907 bound, the one that gets included is arbitrary. When multiple modules contribute elements to 5908 the set, this configuration option impacts all of them. 5909 5910 @return this multibinder 5911 @since 3.0]]> 5912 </doc> 5913 </method> 5914 <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder<T>" 5915 abstract="true" native="false" synchronized="false" 5916 static="false" final="false" visibility="public" 5917 deprecated="not deprecated"> 5918 <doc> 5919 <![CDATA[Returns a binding builder used to add a new element in the set. Each 5920 bound element must have a distinct value. Bound providers will be 5921 evaluated each time the set is injected. 5922 5923 <p>It is an error to call this method without also calling one of the 5924 {@code to} methods on the returned binding builder. 5925 5926 <p>Scoping elements independently is supported. Use the {@code in} method 5927 to specify a binding scope.]]> 5928 </doc> 5929 </method> 5930 <doc> 5931 <![CDATA[An API to bind multiple values separately, only to later inject them as a 5932 complete collection. Multibinder is intended for use in your application's 5933 module: 5934 <pre><code> 5935 public class SnacksModule extends AbstractModule { 5936 protected void configure() { 5937 Multibinder<Snack> multibinder 5938 = Multibinder.newSetBinder(binder(), Snack.class); 5939 multibinder.addBinding().toInstance(new Twix()); 5940 multibinder.addBinding().toProvider(SnickersProvider.class); 5941 multibinder.addBinding().to(Skittles.class); 5942 } 5943 }</code></pre> 5944 5945 <p>With this binding, a {@link Set}{@code <Snack>} can now be injected: 5946 <pre><code> 5947 class SnackMachine { 5948 {@literal @}Inject 5949 public SnackMachine(Set<Snack> snacks) { ... } 5950 }</code></pre> 5951 5952 <p>Contributing multibindings from different modules is supported. For 5953 example, it is okay to have both {@code CandyModule} and {@code ChipsModule} 5954 to both create their own {@code Multibinder<Snack>}, and to each contribute 5955 bindings to the set of snacks. When that set is injected, it will contain 5956 elements from both modules. 5957 5958 <p>The set's iteration order is consistent with the binding order. This is 5959 convenient when multiple elements are contributed by the same module because 5960 that module can order its bindings appropriately. Avoid relying on the 5961 iteration order of elements contributed by different modules, since there is 5962 no equivalent mechanism to order modules. 5963 5964 <p>The set is unmodifiable. Elements can only be added to the set by 5965 configuring the multibinder. Elements can never be removed from the set. 5966 5967 <p>Elements are resolved at set injection time. If an element is bound to a 5968 provider, that provider's get method will be called each time the set is 5969 injected (unless the binding is also scoped). 5970 5971 <p>Annotations are be used to create different sets of the same element 5972 type. Each distinct annotation gets its own independent collection of 5973 elements. 5974 5975 <p><strong>Elements must be distinct.</strong> If multiple bound elements 5976 have the same value, set injection will fail. 5977 5978 <p><strong>Elements must be non-null.</strong> If any set element is null, 5979 set injection will fail. 5980 5981 @author jessewilson@google.com (Jesse Wilson)]]> 5982 </doc> 5983 </class> 5984 <!-- end class com.google.inject.multibindings.Multibinder --> 5985 <!-- start interface com.google.inject.multibindings.MultibinderBinding --> 5986 <interface name="MultibinderBinding" abstract="true" 5987 static="false" final="false" visibility="public" 5988 deprecated="not deprecated"> 5989 <method name="getSetKey" return="com.google.inject.Key<T>" 5990 abstract="false" native="false" synchronized="false" 5991 static="false" final="false" visibility="public" 5992 deprecated="not deprecated"> 5993 <doc> 5994 <![CDATA[Returns the key for the set.]]> 5995 </doc> 5996 </method> 5997 <method name="getElementTypeLiteral" return="com.google.inject.TypeLiteral<?>" 5998 abstract="false" native="false" synchronized="false" 5999 static="false" final="false" visibility="public" 6000 deprecated="not deprecated"> 6001 <doc> 6002 <![CDATA[Returns the TypeLiteral that describes the type of elements in the set. 6003 <p> 6004 The elements will always match the type Set's generic type. For example, if getSetKey returns a 6005 key of <code>Set<String></code>, then this will always return a 6006 <code>TypeLiteral<String></code>.]]> 6007 </doc> 6008 </method> 6009 <method name="getElements" return="java.util.List<com.google.inject.Binding<?>>" 6010 abstract="false" native="false" synchronized="false" 6011 static="false" final="false" visibility="public" 6012 deprecated="not deprecated"> 6013 <doc> 6014 <![CDATA[Returns all bindings that make up the set. This is only supported on bindings returned from an 6015 injector. This will throw {@link UnsupportedOperationException} if it is called on an element 6016 retrieved from {@link Elements#getElements}. 6017 <p> 6018 The elements will always match the type Set's generic type. For example, if getSetKey returns a 6019 key of <code>Set<String></code>, then this will always return a list of type 6020 <code>List<Binding<String>></code>.]]> 6021 </doc> 6022 </method> 6023 <method name="permitsDuplicates" return="boolean" 6024 abstract="false" native="false" synchronized="false" 6025 static="false" final="false" visibility="public" 6026 deprecated="not deprecated"> 6027 <doc> 6028 <![CDATA[Returns true if the multibinder permits duplicates. This is only supported on bindings returned 6029 from an injector. This will throw {@link UnsupportedOperationException} if it is called on a 6030 MultibinderBinding retrieved from {@link Elements#getElements}.]]> 6031 </doc> 6032 </method> 6033 <method name="containsElement" return="boolean" 6034 abstract="false" native="false" synchronized="false" 6035 static="false" final="false" visibility="public" 6036 deprecated="not deprecated"> 6037 <param name="element" type="com.google.inject.spi.Element"/> 6038 <doc> 6039 <![CDATA[Returns true if this Multibinder uses the given Element. This will be true for bindings that 6040 derive the elements of the set and other bindings that Multibinder uses internally. This will 6041 work for MultibinderBindings retrieved from an injector and {@link Elements#getElements}. 6042 Usually this is only necessary if you are working with elements retrieved from modules (without 6043 an Injector), otherwise {@link #getElements} and {@link #permitsDuplicates} are better options. 6044 <p> 6045 If you need to introspect the details of the set, such as the values or if it permits 6046 duplicates, it is necessary to pass the elements through an Injector and use 6047 {@link #getElements()} and {@link #permitsDuplicates()}.]]> 6048 </doc> 6049 </method> 6050 <doc> 6051 <![CDATA[A binding for a Multibinder. 6052 6053 @param <T> The fully qualified type of the set, including Set. For example: 6054 <code>MultibinderBinding<Set<Boolean>></code> 6055 6056 @since 3.0 6057 @author sameb@google.com (Sam Berlin)]]> 6058 </doc> 6059 </interface> 6060 <!-- end interface com.google.inject.multibindings.MultibinderBinding --> 6061 <!-- start interface com.google.inject.multibindings.MultibindingsTargetVisitor --> 6062 <interface name="MultibindingsTargetVisitor" abstract="true" 6063 static="false" final="false" visibility="public" 6064 deprecated="not deprecated"> 6065 <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 6066 <method name="visit" return="V" 6067 abstract="false" native="false" synchronized="false" 6068 static="false" final="false" visibility="public" 6069 deprecated="not deprecated"> 6070 <param name="multibinding" type="com.google.inject.multibindings.MultibinderBinding<? extends T>"/> 6071 <doc> 6072 <![CDATA[Visits a binding created through {@link Multibinder}.]]> 6073 </doc> 6074 </method> 6075 <method name="visit" return="V" 6076 abstract="false" native="false" synchronized="false" 6077 static="false" final="false" visibility="public" 6078 deprecated="not deprecated"> 6079 <param name="mapbinding" type="com.google.inject.multibindings.MapBinderBinding<? extends T>"/> 6080 <doc> 6081 <![CDATA[Visits a binding created through {@link MapBinder}.]]> 6082 </doc> 6083 </method> 6084 <doc> 6085 <![CDATA[A visitor for the multibinder extension. 6086 <p> 6087 If your {@link BindingTargetVisitor} implements this interface, bindings created by using 6088 {@link Multibinder} or {@link MapBinder} will be visited through this interface. 6089 6090 @since 3.0 6091 @author sameb@google.com (Sam Berlin)]]> 6092 </doc> 6093 </interface> 6094 <!-- end interface com.google.inject.multibindings.MultibindingsTargetVisitor --> 6095</package> 6096<package name="com.google.inject.name"> 6097 <!-- start class com.google.inject.name.Named --> 6098 <class name="Named" abstract="true" 6099 static="false" final="false" visibility="public" 6100 deprecated="not deprecated"> 6101 <implements name="java.lang.annotation.Annotation"/> 6102 <doc> 6103 <![CDATA[Annotates named things. 6104 6105 @author crazybob@google.com (Bob Lee)]]> 6106 </doc> 6107 </class> 6108 <!-- end class com.google.inject.name.Named --> 6109 <!-- start class com.google.inject.name.Names --> 6110 <class name="Names" extends="java.lang.Object" 6111 abstract="false" 6112 static="false" final="false" visibility="public" 6113 deprecated="not deprecated"> 6114 <method name="named" return="com.google.inject.name.Named" 6115 abstract="false" native="false" synchronized="false" 6116 static="true" final="false" visibility="public" 6117 deprecated="not deprecated"> 6118 <param name="name" type="java.lang.String"/> 6119 <doc> 6120 <![CDATA[Creates a {@link Named} annotation with {@code name} as the value.]]> 6121 </doc> 6122 </method> 6123 <method name="bindProperties" 6124 abstract="false" native="false" synchronized="false" 6125 static="true" final="false" visibility="public" 6126 deprecated="not deprecated"> 6127 <param name="binder" type="com.google.inject.Binder"/> 6128 <param name="properties" type="java.util.Map<java.lang.String, java.lang.String>"/> 6129 <doc> 6130 <![CDATA[Creates a constant binding to {@code @Named(key)} for each entry in 6131 {@code properties}.]]> 6132 </doc> 6133 </method> 6134 <method name="bindProperties" 6135 abstract="false" native="false" synchronized="false" 6136 static="true" final="false" visibility="public" 6137 deprecated="not deprecated"> 6138 <param name="binder" type="com.google.inject.Binder"/> 6139 <param name="properties" type="java.util.Properties"/> 6140 <doc> 6141 <![CDATA[Creates a constant binding to {@code @Named(key)} for each property. This 6142 method binds all properties including those inherited from 6143 {@link Properties#defaults defaults}.]]> 6144 </doc> 6145 </method> 6146 <doc> 6147 <![CDATA[Utility methods for use with {@code @}{@link Named}. 6148 6149 @author crazybob@google.com (Bob Lee)]]> 6150 </doc> 6151 </class> 6152 <!-- end class com.google.inject.name.Names --> 6153</package> 6154<package name="com.google.inject.persist"> 6155 <!-- start class com.google.inject.persist.PersistFilter --> 6156 <class name="PersistFilter" extends="java.lang.Object" 6157 abstract="false" 6158 static="false" final="true" visibility="public" 6159 deprecated="not deprecated"> 6160 <constructor name="PersistFilter" type="com.google.inject.persist.UnitOfWork, com.google.inject.persist.PersistService" 6161 static="false" final="false" visibility="public" 6162 deprecated="not deprecated"> 6163 </constructor> 6164 <method name="init" 6165 abstract="false" native="false" synchronized="false" 6166 static="false" final="false" visibility="public" 6167 deprecated="not deprecated"> 6168 <param name="filterConfig" type="FilterConfig"/> 6169 <exception name="ServletException" type="ServletException"/> 6170 </method> 6171 <method name="destroy" 6172 abstract="false" native="false" synchronized="false" 6173 static="false" final="false" visibility="public" 6174 deprecated="not deprecated"> 6175 </method> 6176 <method name="doFilter" 6177 abstract="false" native="false" synchronized="false" 6178 static="false" final="false" visibility="public" 6179 deprecated="not deprecated"> 6180 <param name="servletRequest" type="ServletRequest"/> 6181 <param name="servletResponse" type="ServletResponse"/> 6182 <param name="filterChain" type="FilterChain"/> 6183 <exception name="IOException" type="java.io.IOException"/> 6184 <exception name="ServletException" type="ServletException"/> 6185 </method> 6186 <doc> 6187 <![CDATA[Apply this filter to enable the HTTP Request unit of work and to have 6188 guice-persist manage the lifecycle of active units of work. 6189 The filter automatically starts and stops the relevant {@link PersistService} 6190 upon {@link javax.servlet.Filter#init(javax.servlet.FilterConfig)} and 6191 {@link javax.servlet.Filter#destroy()} respectively. 6192 6193 <p> To be able to use the open session-in-view pattern (i.e. work per request), 6194 register this filter <b>once</b> in your Guice {@code ServletModule}. It is 6195 important that you register this filter before any other filter. 6196 6197 For multiple providers, you should register this filter once per provider, inside 6198 a private module for each persist module installed (this must be the same private 6199 module where the specific persist module is itself installed). 6200 6201 <p> 6202 Example configuration: 6203 <pre>{@code 6204 public class MyModule extends ServletModule { 6205 public void configureServlets() { 6206 filter("/*").through(PersistFilter.class); 6207 6208 serve("/index.html").with(MyHtmlServlet.class); 6209 // Etc. 6210 } 6211 } 6212 }</pre> 6213 <p> 6214 This filter is thread safe and allows you to create injectors concurrently 6215 and deploy multiple guice-persist modules within the same injector, or even 6216 multiple injectors with persist modules withing the same JVM or web app. 6217 <p> 6218 This filter requires the Guice Servlet extension. 6219 6220 @author Dhanji R. Prasanna (dhanji@gmail.com)]]> 6221 </doc> 6222 </class> 6223 <!-- end class com.google.inject.persist.PersistFilter --> 6224 <!-- start class com.google.inject.persist.PersistModule --> 6225 <class name="PersistModule" extends="com.google.inject.AbstractModule" 6226 abstract="true" 6227 static="false" final="false" visibility="public" 6228 deprecated="not deprecated"> 6229 <constructor name="PersistModule" 6230 static="false" final="false" visibility="public" 6231 deprecated="not deprecated"> 6232 </constructor> 6233 <method name="configure" 6234 abstract="false" native="false" synchronized="false" 6235 static="false" final="true" visibility="protected" 6236 deprecated="not deprecated"> 6237 </method> 6238 <method name="configurePersistence" 6239 abstract="true" native="false" synchronized="false" 6240 static="false" final="false" visibility="protected" 6241 deprecated="not deprecated"> 6242 </method> 6243 <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor" 6244 abstract="true" native="false" synchronized="false" 6245 static="false" final="false" visibility="protected" 6246 deprecated="not deprecated"> 6247 </method> 6248 <doc> 6249 <![CDATA[Install this module to add guice-persist library support for JPA persistence 6250 providers. 6251 6252 @author dhanji@gmail.com (Dhanji R. Prasanna)]]> 6253 </doc> 6254 </class> 6255 <!-- end class com.google.inject.persist.PersistModule --> 6256 <!-- start interface com.google.inject.persist.PersistService --> 6257 <interface name="PersistService" abstract="true" 6258 static="false" final="false" visibility="public" 6259 deprecated="not deprecated"> 6260 <method name="start" 6261 abstract="false" native="false" synchronized="false" 6262 static="false" final="false" visibility="public" 6263 deprecated="not deprecated"> 6264 <doc> 6265 <![CDATA[Starts the underlying persistence engine and makes guice-persist ready for 6266 use. For instance, with JPA, it creates an EntityManagerFactory and may 6267 open connection pools. This method must be called by your code prior to 6268 using any guice-persist or JPA artifacts. If already started, 6269 calling this method does nothing, if already stopped, it also does 6270 nothing.]]> 6271 </doc> 6272 </method> 6273 <method name="stop" 6274 abstract="false" native="false" synchronized="false" 6275 static="false" final="false" visibility="public" 6276 deprecated="not deprecated"> 6277 <doc> 6278 <![CDATA[Stops the underlying persistence engine. For instance, with JPA, it 6279 closes the {@code EntityManagerFactory}. If already stopped, calling this 6280 method does nothing. If not yet started, it also does nothing.]]> 6281 </doc> 6282 </method> 6283 <doc> 6284 <![CDATA[Persistence provider service. Use this to manage the overall 6285 startup and stop of the persistence module(s). 6286 6287 TODO(dhanji): Integrate with Service API when appropriate. 6288 6289 @author dhanji@gmail.com (Dhanji R. Prasanna)]]> 6290 </doc> 6291 </interface> 6292 <!-- end interface com.google.inject.persist.PersistService --> 6293 <!-- start class com.google.inject.persist.Transactional --> 6294 <class name="Transactional" abstract="true" 6295 static="false" final="false" visibility="public" 6296 deprecated="not deprecated"> 6297 <implements name="java.lang.annotation.Annotation"/> 6298 <doc> 6299 <![CDATA[<p> Any method or class marked with this annotation will be considered for transactionality. 6300 Consult the documentation on http://code.google.com/p/google-guice for detailed semantics. 6301 Marking a method {@code @Transactional} will start a new transaction before the method 6302 executes and commit it after the method returns. 6303 <p> 6304 If the method throws an exception, the transaction will be rolled back <em>unless</em> 6305 you have specifically requested not to in the {@link #ignore()} clause. 6306 <p> 6307 Similarly, the set of exceptions that will trigger a rollback can be defined in 6308 the {@link #rollbackOn()} clause. By default, only unchecked exceptions trigger a 6309 rollback. 6310 6311 @author Dhanji R. Prasanna (dhanji@gmail.com)]]> 6312 </doc> 6313 </class> 6314 <!-- end class com.google.inject.persist.Transactional --> 6315 <!-- start interface com.google.inject.persist.UnitOfWork --> 6316 <interface name="UnitOfWork" abstract="true" 6317 static="false" final="false" visibility="public" 6318 deprecated="not deprecated"> 6319 <method name="begin" 6320 abstract="false" native="false" synchronized="false" 6321 static="false" final="false" visibility="public" 6322 deprecated="not deprecated"> 6323 <doc> 6324 <![CDATA[Starts a Unit Of Work. Underneath, causes a session to the data layer to be opened. If there 6325 is already one open, the invocation will do nothing. In this way, you can define arbitrary 6326 units-of-work that nest within one another safely. 6327 6328 Transaction semantics are not affected.]]> 6329 </doc> 6330 </method> 6331 <method name="end" 6332 abstract="false" native="false" synchronized="false" 6333 static="false" final="false" visibility="public" 6334 deprecated="not deprecated"> 6335 <doc> 6336 <![CDATA[Declares an end to the current Unit of Work. Underneath, causes any open session to the data 6337 layer to close. If there is no Unit of work open, then the call returns silently. You can 6338 safely invoke end() repeatedly. 6339 <p> 6340 Transaction semantics are not affected.]]> 6341 </doc> 6342 </method> 6343 <doc> 6344 <![CDATA[This interface is used to gain manual control over the unit of work. This is mostly to do 6345 work in non-request, non-transactional threads. Or where more fine-grained control over the unit 6346 of work is required. Starting and ending a unit of work directly corresponds to opening and 6347 closing a {@code Session}, {@code EntityManager} or {@code ObjectContainer} respectively. 6348 <p> The 6349 Unit of Work referred to by UnitOfWork will always be local to the calling thread. Be careful to 6350 end() in a finally block. Neither JPA, nor Hibernate supports threadsafe sessions (reasoning 6351 behind thread-locality of Unit of Work semantics). 6352 6353 <ul> 6354 <li>Using UnitOfWork with the PersistFilter inside a request is not recommended.</li> 6355 <li>Using UnitOfWork with session-per-txn strategy is not terribly clever either.</li> 6356 <li>Using UnitOfWork with session-per-request strategy but *outside* a request (i.e. in a 6357 background or bootstrap thread) is probably a good use case.</li> 6358 </ul> 6359 6360 @author Dhanji R. Prasanna (dhanji@gmail com)]]> 6361 </doc> 6362 </interface> 6363 <!-- end interface com.google.inject.persist.UnitOfWork --> 6364</package> 6365<package name="com.google.inject.persist.finder"> 6366 <!-- start class com.google.inject.persist.finder.DynamicFinder --> 6367 <class name="DynamicFinder" extends="java.lang.Object" 6368 abstract="false" 6369 static="false" final="true" visibility="public" 6370 deprecated="not deprecated"> 6371 <constructor name="DynamicFinder" type="java.lang.reflect.Method" 6372 static="false" final="false" visibility="public" 6373 deprecated="not deprecated"> 6374 </constructor> 6375 <method name="from" return="com.google.inject.persist.finder.DynamicFinder" 6376 abstract="false" native="false" synchronized="false" 6377 static="true" final="false" visibility="public" 6378 deprecated="not deprecated"> 6379 <param name="method" type="java.lang.reflect.Method"/> 6380 <doc> 6381 <![CDATA[Returns some metadata if the method is annotated {@code @Finder} or null. 6382 6383 @param method a method you want to test as a dynamic finder]]> 6384 </doc> 6385 </method> 6386 <method name="metadata" return="com.google.inject.persist.finder.Finder" 6387 abstract="false" native="false" synchronized="false" 6388 static="false" final="false" visibility="public" 6389 deprecated="not deprecated"> 6390 </method> 6391 <doc> 6392 <![CDATA[Utility that helps you introspect dynamic finder methods. 6393 6394 @author dhanji@gmail.com (Dhanji R. Prasanna)]]> 6395 </doc> 6396 </class> 6397 <!-- end class com.google.inject.persist.finder.DynamicFinder --> 6398 <!-- start class com.google.inject.persist.finder.Finder --> 6399 <class name="Finder" abstract="true" 6400 static="false" final="false" visibility="public" 6401 deprecated="not deprecated"> 6402 <implements name="java.lang.annotation.Annotation"/> 6403 <doc> 6404 <![CDATA[Marks a method stub as a dynamic finder. The method is intercepted and replaced with the 6405 specified JPAQL query. Provides result auto-boxing and automatic parameter binding. 6406 6407 @author Dhanji R. Prasanna (dhanji@gmail.com)]]> 6408 </doc> 6409 </class> 6410 <!-- end class com.google.inject.persist.finder.Finder --> 6411 <!-- start class com.google.inject.persist.finder.FirstResult --> 6412 <class name="FirstResult" abstract="true" 6413 static="false" final="false" visibility="public" 6414 deprecated="not deprecated"> 6415 <implements name="java.lang.annotation.Annotation"/> 6416 <doc> 6417 <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in 6418 the index of the first result in the result set you are interested in. 6419 Useful for paging result sets. Complemented by {@link MaxResults}. 6420 6421 @author Dhanji R. Prasanna (dhanji@gmail.com)]]> 6422 </doc> 6423 </class> 6424 <!-- end class com.google.inject.persist.finder.FirstResult --> 6425 <!-- start class com.google.inject.persist.finder.MaxResults --> 6426 <class name="MaxResults" abstract="true" 6427 static="false" final="false" visibility="public" 6428 deprecated="not deprecated"> 6429 <implements name="java.lang.annotation.Annotation"/> 6430 <doc> 6431 <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in 6432 the maximum size of returned result window. Usefule for paging result sets. 6433 Complement of {@link FirstResult}. 6434 6435 @author Dhanji R. Prasanna (dhanji@gmail.com)]]> 6436 </doc> 6437 </class> 6438 <!-- end class com.google.inject.persist.finder.MaxResults --> 6439</package> 6440<package name="com.google.inject.persist.jpa"> 6441 <!-- start class com.google.inject.persist.jpa.JpaPersistModule --> 6442 <class name="JpaPersistModule" extends="com.google.inject.persist.PersistModule" 6443 abstract="false" 6444 static="false" final="true" visibility="public" 6445 deprecated="not deprecated"> 6446 <constructor name="JpaPersistModule" type="java.lang.String" 6447 static="false" final="false" visibility="public" 6448 deprecated="not deprecated"> 6449 </constructor> 6450 <method name="configurePersistence" 6451 abstract="false" native="false" synchronized="false" 6452 static="false" final="false" visibility="protected" 6453 deprecated="not deprecated"> 6454 </method> 6455 <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor" 6456 abstract="false" native="false" synchronized="false" 6457 static="false" final="false" visibility="protected" 6458 deprecated="not deprecated"> 6459 </method> 6460 <method name="properties" return="com.google.inject.persist.jpa.JpaPersistModule" 6461 abstract="false" native="false" synchronized="false" 6462 static="false" final="false" visibility="public" 6463 deprecated="not deprecated"> 6464 <param name="properties" type="java.util.Properties"/> 6465 <doc> 6466 <![CDATA[Configures the JPA persistence provider with a set of properties. 6467 6468 @param properties A set of name value pairs that configure a JPA persistence 6469 provider as per the specification.]]> 6470 </doc> 6471 </method> 6472 <method name="addFinder" return="com.google.inject.persist.jpa.JpaPersistModule" 6473 abstract="false" native="false" synchronized="false" 6474 static="false" final="false" visibility="public" 6475 deprecated="not deprecated"> 6476 <param name="iface" type="java.lang.Class<T>"/> 6477 <doc> 6478 <![CDATA[Adds an interface to this module to use as a dynamic finder. 6479 6480 @param iface Any interface type whose methods are all dynamic finders.]]> 6481 </doc> 6482 </method> 6483 <doc> 6484 <![CDATA[JPA provider for guice persist. 6485 6486 @author dhanji@gmail.com (Dhanji R. Prasanna)]]> 6487 </doc> 6488 </class> 6489 <!-- end class com.google.inject.persist.jpa.JpaPersistModule --> 6490</package> 6491<package name="com.google.inject.servlet"> 6492 <!-- start class com.google.inject.servlet.GuiceFilter --> 6493 <class name="GuiceFilter" extends="java.lang.Object" 6494 abstract="false" 6495 static="false" final="false" visibility="public" 6496 deprecated="not deprecated"> 6497 <constructor name="GuiceFilter" 6498 static="false" final="false" visibility="public" 6499 deprecated="not deprecated"> 6500 </constructor> 6501 <method name="doFilter" 6502 abstract="false" native="false" synchronized="false" 6503 static="false" final="false" visibility="public" 6504 deprecated="not deprecated"> 6505 <param name="servletRequest" type="ServletRequest"/> 6506 <param name="servletResponse" type="ServletResponse"/> 6507 <param name="filterChain" type="FilterChain"/> 6508 <exception name="IOException" type="java.io.IOException"/> 6509 <exception name="ServletException" type="ServletException"/> 6510 </method> 6511 <method name="init" 6512 abstract="false" native="false" synchronized="false" 6513 static="false" final="false" visibility="public" 6514 deprecated="not deprecated"> 6515 <param name="filterConfig" type="FilterConfig"/> 6516 <exception name="ServletException" type="ServletException"/> 6517 </method> 6518 <method name="destroy" 6519 abstract="false" native="false" synchronized="false" 6520 static="false" final="false" visibility="public" 6521 deprecated="not deprecated"> 6522 </method> 6523 <doc> 6524 <![CDATA[<p> 6525 Apply this filter in web.xml above all other filters (typically), to all requests where you plan 6526 to use servlet scopes. This is also needed in order to dispatch requests to injectable filters 6527 and servlets: 6528 <pre> 6529 <filter> 6530 <filter-name>guiceFilter</filter-name> 6531 <filter-class><b>com.google.inject.servlet.GuiceFilter</b></filter-class> 6532 </filter> 6533 6534 <filter-mapping> 6535 <filter-name>guiceFilter</filter-name> 6536 <url-pattern>/*</url-pattern> 6537 </filter-mapping> 6538 </pre> 6539 6540 This filter must appear before every filter that makes use of Guice injection or servlet 6541 scopes functionality. Typically, you will only register this filter in web.xml and register 6542 any other filters (and servlets) using a {@link ServletModule}. 6543 6544 @author crazybob@google.com (Bob Lee) 6545 @author dhanji@gmail.com (Dhanji R. Prasanna)]]> 6546 </doc> 6547 </class> 6548 <!-- end class com.google.inject.servlet.GuiceFilter --> 6549 <!-- start class com.google.inject.servlet.GuiceServletContextListener --> 6550 <class name="GuiceServletContextListener" extends="java.lang.Object" 6551 abstract="true" 6552 static="false" final="false" visibility="public" 6553 deprecated="not deprecated"> 6554 <constructor name="GuiceServletContextListener" 6555 static="false" final="false" visibility="public" 6556 deprecated="not deprecated"> 6557 </constructor> 6558 <method name="contextInitialized" 6559 abstract="false" native="false" synchronized="false" 6560 static="false" final="false" visibility="public" 6561 deprecated="not deprecated"> 6562 <param name="servletContextEvent" type="ServletContextEvent"/> 6563 </method> 6564 <method name="contextDestroyed" 6565 abstract="false" native="false" synchronized="false" 6566 static="false" final="false" visibility="public" 6567 deprecated="not deprecated"> 6568 <param name="servletContextEvent" type="ServletContextEvent"/> 6569 </method> 6570 <method name="getInjector" return="com.google.inject.Injector" 6571 abstract="true" native="false" synchronized="false" 6572 static="false" final="false" visibility="protected" 6573 deprecated="not deprecated"> 6574 <doc> 6575 <![CDATA[Override this method to create (or otherwise obtain a reference to) your 6576 injector.]]> 6577 </doc> 6578 </method> 6579 <doc> 6580 <![CDATA[As of Guice 2.0 you can still use (your subclasses of) {@code GuiceServletContextListener} 6581 class as a logical place to create and configure your injector. This will ensure the injector 6582 is created when the web application is deployed. 6583 6584 @author Kevin Bourrillion (kevinb@google.com) 6585 @since 2.0]]> 6586 </doc> 6587 </class> 6588 <!-- end class com.google.inject.servlet.GuiceServletContextListener --> 6589 <!-- start interface com.google.inject.servlet.InstanceFilterBinding --> 6590 <interface name="InstanceFilterBinding" abstract="true" 6591 static="false" final="false" visibility="public" 6592 deprecated="not deprecated"> 6593 <implements name="com.google.inject.servlet.ServletModuleBinding"/> 6594 <method name="getFilterInstance" return="Filter" 6595 abstract="false" native="false" synchronized="false" 6596 static="false" final="false" visibility="public" 6597 deprecated="not deprecated"> 6598 <doc> 6599 <![CDATA[Returns the filter instance that will be used.]]> 6600 </doc> 6601 </method> 6602 <doc> 6603 <![CDATA[A binding to a single instance of a filter. 6604 6605 @author sameb@google.com 6606 @since 3.0]]> 6607 </doc> 6608 </interface> 6609 <!-- end interface com.google.inject.servlet.InstanceFilterBinding --> 6610 <!-- start interface com.google.inject.servlet.InstanceServletBinding --> 6611 <interface name="InstanceServletBinding" abstract="true" 6612 static="false" final="false" visibility="public" 6613 deprecated="not deprecated"> 6614 <implements name="com.google.inject.servlet.ServletModuleBinding"/> 6615 <method name="getServletInstance" return="HttpServlet" 6616 abstract="false" native="false" synchronized="false" 6617 static="false" final="false" visibility="public" 6618 deprecated="not deprecated"> 6619 <doc> 6620 <![CDATA[Returns the servlet instance that will be used.]]> 6621 </doc> 6622 </method> 6623 <doc> 6624 <![CDATA[A binding to a single instance of a servlet. 6625 6626 @author sameb@google.com 6627 @since 3.0]]> 6628 </doc> 6629 </interface> 6630 <!-- end interface com.google.inject.servlet.InstanceServletBinding --> 6631 <!-- start interface com.google.inject.servlet.LinkedFilterBinding --> 6632 <interface name="LinkedFilterBinding" abstract="true" 6633 static="false" final="false" visibility="public" 6634 deprecated="not deprecated"> 6635 <implements name="com.google.inject.servlet.ServletModuleBinding"/> 6636 <method name="getLinkedKey" return="com.google.inject.Key<? extends Filter>" 6637 abstract="false" native="false" synchronized="false" 6638 static="false" final="false" visibility="public" 6639 deprecated="not deprecated"> 6640 <doc> 6641 <![CDATA[Returns the key used to lookup the filter instance.]]> 6642 </doc> 6643 </method> 6644 <doc> 6645 <![CDATA[A linked binding to a filter. 6646 6647 @author sameb@google.com 6648 @since 3.0]]> 6649 </doc> 6650 </interface> 6651 <!-- end interface com.google.inject.servlet.LinkedFilterBinding --> 6652 <!-- start interface com.google.inject.servlet.LinkedServletBinding --> 6653 <interface name="LinkedServletBinding" abstract="true" 6654 static="false" final="false" visibility="public" 6655 deprecated="not deprecated"> 6656 <implements name="com.google.inject.servlet.ServletModuleBinding"/> 6657 <method name="getLinkedKey" return="com.google.inject.Key<? extends HttpServlet>" 6658 abstract="false" native="false" synchronized="false" 6659 static="false" final="false" visibility="public" 6660 deprecated="not deprecated"> 6661 <doc> 6662 <![CDATA[Returns the key used to lookup the servlet instance.]]> 6663 </doc> 6664 </method> 6665 <doc> 6666 <![CDATA[A linked binding to a servlet. 6667 6668 @author sameb@google.com 6669 @since 3.0]]> 6670 </doc> 6671 </interface> 6672 <!-- end interface com.google.inject.servlet.LinkedServletBinding --> 6673 <!-- start class com.google.inject.servlet.RequestParameters --> 6674 <class name="RequestParameters" abstract="true" 6675 static="false" final="false" visibility="public" 6676 deprecated="not deprecated"> 6677 <implements name="java.lang.annotation.Annotation"/> 6678 <doc> 6679 <![CDATA[Apply this to field or parameters of type {@code Map<String, String[]>} 6680 when you want the HTTP request parameter map to be injected. 6681 6682 @author crazybob@google.com (Bob Lee)]]> 6683 </doc> 6684 </class> 6685 <!-- end class com.google.inject.servlet.RequestParameters --> 6686 <!-- start class com.google.inject.servlet.RequestScoped --> 6687 <class name="RequestScoped" abstract="true" 6688 static="false" final="false" visibility="public" 6689 deprecated="not deprecated"> 6690 <implements name="java.lang.annotation.Annotation"/> 6691 <doc> 6692 <![CDATA[Apply this to implementation classes when you want one instance per request. 6693 6694 @author crazybob@google.com (Bob Lee)]]> 6695 </doc> 6696 </class> 6697 <!-- end class com.google.inject.servlet.RequestScoped --> 6698 <!-- start class com.google.inject.servlet.ServletModule --> 6699 <class name="ServletModule" extends="com.google.inject.AbstractModule" 6700 abstract="false" 6701 static="false" final="false" visibility="public" 6702 deprecated="not deprecated"> 6703 <constructor name="ServletModule" 6704 static="false" final="false" visibility="public" 6705 deprecated="not deprecated"> 6706 </constructor> 6707 <method name="configure" 6708 abstract="false" native="false" synchronized="false" 6709 static="false" final="true" visibility="protected" 6710 deprecated="not deprecated"> 6711 </method> 6712 <method name="configureServlets" 6713 abstract="false" native="false" synchronized="false" 6714 static="false" final="false" visibility="protected" 6715 deprecated="not deprecated"> 6716 <doc> 6717 <![CDATA[<h3>Servlet Mapping EDSL</h3> 6718 6719 <p> Part of the EDSL builder language for configuring servlets 6720 and filters with guice-servlet. Think of this as an in-code replacement for web.xml. 6721 Filters and servlets are configured here using simple java method calls. Here is a typical 6722 example of registering a filter when creating your Guice injector: 6723 6724 <pre> 6725 Guice.createInjector(..., new ServletModule() { 6726 6727 {@literal @}Override 6728 protected void configureServlets() { 6729 <b>serve("*.html").with(MyServlet.class)</b> 6730 } 6731 } 6732 </pre> 6733 6734 This registers a servlet (subclass of {@code HttpServlet}) called {@code MyServlet} to service 6735 any web pages ending in {@code .html}. You can also use a path-style syntax to register 6736 servlets: 6737 6738 <pre> 6739 <b>serve("/my/*").with(MyServlet.class)</b> 6740 </pre> 6741 6742 Every servlet (or filter) is required to be a singleton. If you cannot annotate the class 6743 directly, you should add a separate {@code bind(..).in(Singleton.class)} rule elsewhere in 6744 your module. Mapping a servlet that is bound under any other scope is an error. 6745 6746 <p> 6747 <h4>Dispatch Order</h4> 6748 You are free to register as many servlets and filters as you like this way. They will 6749 be compared and dispatched in the order in which the filter methods are called: 6750 6751 <pre> 6752 6753 Guice.createInjector(..., new ServletModule() { 6754 6755 {@literal @}Override 6756 protected void configureServlets() { 6757 filter("/*").through(MyFilter.class); 6758 filter("*.css").through(MyCssFilter.class); 6759 filter("*.jpg").through(new MyJpgFilter()); 6760 // etc.. 6761 6762 serve("*.html").with(MyServlet.class); 6763 serve("/my/*").with(MyServlet.class); 6764 serve("*.jpg").with(new MyServlet()); 6765 // etc.. 6766 } 6767 } 6768 </pre> 6769 This will traverse down the list of rules in lexical order. For example, a url 6770 "{@code /my/file.js}" (after it runs through the matching filters) will first 6771 be compared against the servlet mapping: 6772 6773 <pre> 6774 serve("*.html").with(MyServlet.class); 6775 </pre> 6776 And failing that, it will descend to the next servlet mapping: 6777 6778 <pre> 6779 serve("/my/*").with(MyServlet.class); 6780 </pre> 6781 6782 Since this rule matches, Guice Servlet will dispatch to {@code MyServlet}. These 6783 two mapping rules can also be written in more compact form using varargs syntax: 6784 6785 <pre> 6786 serve(<b>"*.html", "/my/*"</b>).with(MyServlet.class); 6787 </pre> 6788 6789 This way you can map several URI patterns to the same servlet. A similar syntax is 6790 also available for filter mappings. 6791 6792 <p> 6793 <h4>Regular Expressions</h4> 6794 You can also map servlets (or filters) to URIs using regular expressions: 6795 <pre> 6796 <b>serveRegex("(.)*ajax(.)*").with(MyAjaxServlet.class)</b> 6797 </pre> 6798 6799 This will map any URI containing the text "ajax" in it to {@code MyAjaxServlet}. Such as: 6800 <ul> 6801 <li>http://www.google.com/ajax.html</li> 6802 <li>http://www.google.com/content/ajax/index</li> 6803 <li>http://www.google.com/it/is_totally_ajaxian</li> 6804 </ul> 6805 6806 6807 <h3>Initialization Parameters</h3> 6808 6809 Servlets (and filters) allow you to pass in init params 6810 using the {@code <init-param>} tag in web.xml. You can similarly pass in parameters to 6811 Servlets and filters registered in Guice-servlet using a {@link java.util.Map} of parameter 6812 name/value pairs. For example, to initialize {@code MyServlet} with two parameters 6813 ({@code name="Dhanji", site="google.com"}) you could write: 6814 6815 <pre> 6816 Map<String, String> params = new HashMap<String, String>(); 6817 params.put("name", "Dhanji"); 6818 params.put("site", "google.com"); 6819 6820 ... 6821 serve("/*").with(MyServlet.class, <b>params</b>) 6822 </pre> 6823 6824 <p> 6825 <h3>Binding Keys</h3> 6826 6827 You can also bind keys rather than classes. This lets you hide 6828 implementations with package-local visbility and expose them using 6829 only a Guice module and an annotation: 6830 6831 <pre> 6832 ... 6833 filter("/*").through(<b>Key.get(Filter.class, Fave.class)</b>); 6834 </pre> 6835 6836 Where {@code Filter.class} refers to the Servlet API interface and {@code Fave.class} is a 6837 custom binding annotation. Elsewhere (in one of your own modules) you can bind this 6838 filter's implementation: 6839 6840 <pre> 6841 bind(Filter.class)<b>.annotatedWith(Fave.class)</b>.to(MyFilterImpl.class); 6842 </pre> 6843 6844 See {@link com.google.inject.Binder} for more information on binding syntax. 6845 6846 <p> 6847 <h3>Multiple Modules</h3> 6848 6849 It is sometimes useful to capture servlet and filter mappings from multiple different 6850 modules. This is essential if you want to package and offer drop-in Guice plugins that 6851 provide servlet functionality. 6852 6853 <p> 6854 Guice Servlet allows you to register several instances of {@code ServletModule} to your 6855 injector. The order in which these modules are installed determines the dispatch order 6856 of filters and the precedence order of servlets. For example, if you had two servlet modules, 6857 {@code RpcModule} and {@code WebServiceModule} and they each contained a filter that mapped 6858 to the same URI pattern, {@code "/*"}: 6859 6860 <p> 6861 In {@code RpcModule}: 6862 <pre> 6863 filter("/*").through(RpcFilter.class); 6864 </pre> 6865 6866 In {@code WebServiceModule}: 6867 <pre> 6868 filter("/*").through(WebServiceFilter.class); 6869 </pre> 6870 6871 Then the order in which these filters are dispatched is determined by the order in which 6872 the modules are installed: 6873 6874 <pre> 6875 <b>install(new WebServiceModule());</b> 6876 install(new RpcModule()); 6877 </pre> 6878 6879 In the case shown above {@code WebServiceFilter} will run first. 6880 6881 @since 2.0]]> 6882 </doc> 6883 </method> 6884 <method name="filter" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder" 6885 abstract="false" native="false" synchronized="false" 6886 static="false" final="true" visibility="protected" 6887 deprecated="not deprecated"> 6888 <param name="urlPattern" type="java.lang.String"/> 6889 <param name="morePatterns" type="java.lang.String[]"/> 6890 <doc> 6891 <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc. 6892 @since 2.0]]> 6893 </doc> 6894 </method> 6895 <method name="filterRegex" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder" 6896 abstract="false" native="false" synchronized="false" 6897 static="false" final="true" visibility="protected" 6898 deprecated="not deprecated"> 6899 <param name="regex" type="java.lang.String"/> 6900 <param name="regexes" type="java.lang.String[]"/> 6901 <doc> 6902 <![CDATA[@param regex Any Java-style regular expression. 6903 @since 2.0]]> 6904 </doc> 6905 </method> 6906 <method name="serve" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder" 6907 abstract="false" native="false" synchronized="false" 6908 static="false" final="true" visibility="protected" 6909 deprecated="not deprecated"> 6910 <param name="urlPattern" type="java.lang.String"/> 6911 <param name="morePatterns" type="java.lang.String[]"/> 6912 <doc> 6913 <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc. 6914 @since 2.0]]> 6915 </doc> 6916 </method> 6917 <method name="serveRegex" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder" 6918 abstract="false" native="false" synchronized="false" 6919 static="false" final="true" visibility="protected" 6920 deprecated="not deprecated"> 6921 <param name="regex" type="java.lang.String"/> 6922 <param name="regexes" type="java.lang.String[]"/> 6923 <doc> 6924 <![CDATA[@param regex Any Java-style regular expression. 6925 @since 2.0]]> 6926 </doc> 6927 </method> 6928 <method name="getServletContext" return="ServletContext" 6929 abstract="false" native="false" synchronized="false" 6930 static="false" final="true" visibility="protected" 6931 deprecated="not deprecated"> 6932 <doc> 6933 <![CDATA[This method only works if you are using the {@linkplain GuiceServletContextListener} to 6934 create your injector. Otherwise, it returns null. 6935 @return The current servlet context. 6936 @since 3.0]]> 6937 </doc> 6938 </method> 6939 <doc> 6940 <![CDATA[Configures the servlet scopes and creates bindings for the servlet API 6941 objects so you can inject the request, response, session, etc. 6942 6943 <p> 6944 You should subclass this module to register servlets and 6945 filters in the {@link #configureServlets()} method. 6946 6947 @author crazybob@google.com (Bob Lee) 6948 @author dhanji@gmail.com (Dhanji R. Prasanna)]]> 6949 </doc> 6950 </class> 6951 <!-- end class com.google.inject.servlet.ServletModule --> 6952 <!-- start interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder --> 6953 <interface name="ServletModule.FilterKeyBindingBuilder" abstract="true" 6954 static="true" final="false" visibility="public" 6955 deprecated="not deprecated"> 6956 <method name="through" 6957 abstract="false" native="false" synchronized="false" 6958 static="false" final="false" visibility="public" 6959 deprecated="not deprecated"> 6960 <param name="filterKey" type="java.lang.Class<? extends Filter>"/> 6961 </method> 6962 <method name="through" 6963 abstract="false" native="false" synchronized="false" 6964 static="false" final="false" visibility="public" 6965 deprecated="not deprecated"> 6966 <param name="filterKey" type="com.google.inject.Key<? extends Filter>"/> 6967 </method> 6968 <method name="through" 6969 abstract="false" native="false" synchronized="false" 6970 static="false" final="false" visibility="public" 6971 deprecated="not deprecated"> 6972 <param name="filter" type="Filter"/> 6973 <doc> 6974 <![CDATA[@since 3.0]]> 6975 </doc> 6976 </method> 6977 <method name="through" 6978 abstract="false" native="false" synchronized="false" 6979 static="false" final="false" visibility="public" 6980 deprecated="not deprecated"> 6981 <param name="filterKey" type="java.lang.Class<? extends Filter>"/> 6982 <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 6983 </method> 6984 <method name="through" 6985 abstract="false" native="false" synchronized="false" 6986 static="false" final="false" visibility="public" 6987 deprecated="not deprecated"> 6988 <param name="filterKey" type="com.google.inject.Key<? extends Filter>"/> 6989 <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 6990 </method> 6991 <method name="through" 6992 abstract="false" native="false" synchronized="false" 6993 static="false" final="false" visibility="public" 6994 deprecated="not deprecated"> 6995 <param name="filter" type="Filter"/> 6996 <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 6997 <doc> 6998 <![CDATA[@since 3.0]]> 6999 </doc> 7000 </method> 7001 <doc> 7002 <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()} 7003 7004 @since 2.0]]> 7005 </doc> 7006 </interface> 7007 <!-- end interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder --> 7008 <!-- start interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder --> 7009 <interface name="ServletModule.ServletKeyBindingBuilder" abstract="true" 7010 static="true" final="false" visibility="public" 7011 deprecated="not deprecated"> 7012 <method name="with" 7013 abstract="false" native="false" synchronized="false" 7014 static="false" final="false" visibility="public" 7015 deprecated="not deprecated"> 7016 <param name="servletKey" type="java.lang.Class<? extends HttpServlet>"/> 7017 </method> 7018 <method name="with" 7019 abstract="false" native="false" synchronized="false" 7020 static="false" final="false" visibility="public" 7021 deprecated="not deprecated"> 7022 <param name="servletKey" type="com.google.inject.Key<? extends HttpServlet>"/> 7023 </method> 7024 <method name="with" 7025 abstract="false" native="false" synchronized="false" 7026 static="false" final="false" visibility="public" 7027 deprecated="not deprecated"> 7028 <param name="servlet" type="HttpServlet"/> 7029 <doc> 7030 <![CDATA[@since 3.0]]> 7031 </doc> 7032 </method> 7033 <method name="with" 7034 abstract="false" native="false" synchronized="false" 7035 static="false" final="false" visibility="public" 7036 deprecated="not deprecated"> 7037 <param name="servletKey" type="java.lang.Class<? extends HttpServlet>"/> 7038 <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7039 </method> 7040 <method name="with" 7041 abstract="false" native="false" synchronized="false" 7042 static="false" final="false" visibility="public" 7043 deprecated="not deprecated"> 7044 <param name="servletKey" type="com.google.inject.Key<? extends HttpServlet>"/> 7045 <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7046 </method> 7047 <method name="with" 7048 abstract="false" native="false" synchronized="false" 7049 static="false" final="false" visibility="public" 7050 deprecated="not deprecated"> 7051 <param name="servlet" type="HttpServlet"/> 7052 <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7053 <doc> 7054 <![CDATA[@since 3.0]]> 7055 </doc> 7056 </method> 7057 <doc> 7058 <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()} 7059 7060 @since 2.0]]> 7061 </doc> 7062 </interface> 7063 <!-- end interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder --> 7064 <!-- start interface com.google.inject.servlet.ServletModuleBinding --> 7065 <interface name="ServletModuleBinding" abstract="true" 7066 static="false" final="false" visibility="public" 7067 deprecated="not deprecated"> 7068 <method name="getUriPatternType" return="com.google.inject.servlet.UriPatternType" 7069 abstract="false" native="false" synchronized="false" 7070 static="false" final="false" visibility="public" 7071 deprecated="not deprecated"> 7072 <doc> 7073 <![CDATA[Returns the pattern type that this binding was created with.]]> 7074 </doc> 7075 </method> 7076 <method name="getPattern" return="java.lang.String" 7077 abstract="false" native="false" synchronized="false" 7078 static="false" final="false" visibility="public" 7079 deprecated="not deprecated"> 7080 <doc> 7081 <![CDATA[Returns the pattern used to match against the binding.]]> 7082 </doc> 7083 </method> 7084 <method name="getInitParams" return="java.util.Map<java.lang.String, java.lang.String>" 7085 abstract="false" native="false" synchronized="false" 7086 static="false" final="false" visibility="public" 7087 deprecated="not deprecated"> 7088 <doc> 7089 <![CDATA[Returns any context params supplied when creating the binding.]]> 7090 </doc> 7091 </method> 7092 <method name="matchesUri" return="boolean" 7093 abstract="false" native="false" synchronized="false" 7094 static="false" final="false" visibility="public" 7095 deprecated="not deprecated"> 7096 <param name="uri" type="java.lang.String"/> 7097 <doc> 7098 <![CDATA[Returns true if the given URI will match this binding.]]> 7099 </doc> 7100 </method> 7101 <doc> 7102 <![CDATA[A binding created by {@link ServletModule}. 7103 7104 @author sameb@google.com (Sam Berlin) 7105 @since 3.0]]> 7106 </doc> 7107 </interface> 7108 <!-- end interface com.google.inject.servlet.ServletModuleBinding --> 7109 <!-- start interface com.google.inject.servlet.ServletModuleTargetVisitor --> 7110 <interface name="ServletModuleTargetVisitor" abstract="true" 7111 static="false" final="false" visibility="public" 7112 deprecated="not deprecated"> 7113 <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 7114 <method name="visit" return="V" 7115 abstract="false" native="false" synchronized="false" 7116 static="false" final="false" visibility="public" 7117 deprecated="not deprecated"> 7118 <param name="binding" type="com.google.inject.servlet.LinkedFilterBinding"/> 7119 <doc> 7120 <![CDATA[Visits a filter binding created by {@link ServletModule#filter}, where 7121 {@link FilterKeyBindingBuilder#through} is called with a Class or Key. 7122 7123 If multiple patterns were specified, this will be called multiple times.]]> 7124 </doc> 7125 </method> 7126 <method name="visit" return="V" 7127 abstract="false" native="false" synchronized="false" 7128 static="false" final="false" visibility="public" 7129 deprecated="not deprecated"> 7130 <param name="binding" type="com.google.inject.servlet.InstanceFilterBinding"/> 7131 <doc> 7132 <![CDATA[Visits a filter binding created by {@link ServletModule#filter} where 7133 {@link FilterKeyBindingBuilder#through} is called with a {@link Filter}. 7134 7135 If multiple patterns were specified, this will be called multiple times.]]> 7136 </doc> 7137 </method> 7138 <method name="visit" return="V" 7139 abstract="false" native="false" synchronized="false" 7140 static="false" final="false" visibility="public" 7141 deprecated="not deprecated"> 7142 <param name="binding" type="com.google.inject.servlet.LinkedServletBinding"/> 7143 <doc> 7144 <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where 7145 {@link ServletKeyBindingBuilder#with}, is called with a Class or Key. 7146 7147 If multiple patterns were specified, this will be called multiple times.]]> 7148 </doc> 7149 </method> 7150 <method name="visit" return="V" 7151 abstract="false" native="false" synchronized="false" 7152 static="false" final="false" visibility="public" 7153 deprecated="not deprecated"> 7154 <param name="binding" type="com.google.inject.servlet.InstanceServletBinding"/> 7155 <doc> 7156 <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where 7157 {@link ServletKeyBindingBuilder#with}, is called with an {@link HttpServlet}. 7158 7159 If multiple patterns were specified, this will be called multiple times.]]> 7160 </doc> 7161 </method> 7162 <doc> 7163 <![CDATA[A visitor for the servlet extension. 7164 7165 If your {@link BindingTargetVisitor} implements this interface, bindings created by using 7166 {@link ServletModule} will be visited through this interface. 7167 7168 @since 3.0 7169 @author sameb@google.com (Sam Berlin)]]> 7170 </doc> 7171 </interface> 7172 <!-- end interface com.google.inject.servlet.ServletModuleTargetVisitor --> 7173 <!-- start class com.google.inject.servlet.ServletScopes --> 7174 <class name="ServletScopes" extends="java.lang.Object" 7175 abstract="false" 7176 static="false" final="false" visibility="public" 7177 deprecated="not deprecated"> 7178 <method name="continueRequest" return="java.util.concurrent.Callable<T>" 7179 abstract="false" native="false" synchronized="false" 7180 static="true" final="false" visibility="public" 7181 deprecated="not deprecated"> 7182 <param name="callable" type="java.util.concurrent.Callable<T>"/> 7183 <param name="seedMap" type="java.util.Map<com.google.inject.Key<?>, java.lang.Object>"/> 7184 <doc> 7185 <![CDATA[Wraps the given callable in a contextual callable that "continues" the 7186 HTTP request in another thread. This acts as a way of transporting 7187 request context data from the request processing thread to to worker 7188 threads. 7189 <p> 7190 There are some limitations: 7191 <ul> 7192 <li>Derived objects (i.e. anything marked @RequestScoped will not be 7193 transported.</li> 7194 <li>State changes to the HttpServletRequest after this method is called 7195 will not be seen in the continued thread.</li> 7196 <li>Only the HttpServletRequest, ServletContext and request parameter 7197 map are available in the continued thread. The response and session 7198 are not available.</li> 7199 </ul> 7200 7201 @param callable code to be executed in another thread, which depends on 7202 the request scope. 7203 @param seedMap the initial set of scoped instances for Guice to seed the 7204 request scope with. To seed a key with null, use {@code null} as 7205 the value. 7206 @return a callable that will invoke the given callable, making the request 7207 context available to it. 7208 @throws OutOfScopeException if this method is called from a non-request 7209 thread, or if the request has completed. 7210 7211 @since 3.0]]> 7212 </doc> 7213 </method> 7214 <method name="scopeRequest" return="java.util.concurrent.Callable<T>" 7215 abstract="false" native="false" synchronized="false" 7216 static="true" final="false" visibility="public" 7217 deprecated="not deprecated"> 7218 <param name="callable" type="java.util.concurrent.Callable<T>"/> 7219 <param name="seedMap" type="java.util.Map<com.google.inject.Key<?>, java.lang.Object>"/> 7220 <doc> 7221 <![CDATA[Scopes the given callable inside a request scope. This is not the same 7222 as the HTTP request scope, but is used if no HTTP request scope is in 7223 progress. In this way, keys can be scoped as @RequestScoped and exist 7224 in non-HTTP requests (for example: RPC requests) as well as in HTTP 7225 request threads. 7226 7227 @param callable code to be executed which depends on the request scope. 7228 Typically in another thread, but not necessarily so. 7229 @param seedMap the initial set of scoped instances for Guice to seed the 7230 request scope with. To seed a key with null, use {@code null} as 7231 the value. 7232 @return a callable that when called will run inside the a request scope 7233 that exposes the instances in the {@code seedMap} as scoped keys. 7234 @since 3.0]]> 7235 </doc> 7236 </method> 7237 <field name="REQUEST" type="com.google.inject.Scope" 7238 transient="false" volatile="false" 7239 static="true" final="true" visibility="public" 7240 deprecated="not deprecated"> 7241 <doc> 7242 <![CDATA[HTTP servlet request scope.]]> 7243 </doc> 7244 </field> 7245 <field name="SESSION" type="com.google.inject.Scope" 7246 transient="false" volatile="false" 7247 static="true" final="true" visibility="public" 7248 deprecated="not deprecated"> 7249 <doc> 7250 <![CDATA[HTTP session scope.]]> 7251 </doc> 7252 </field> 7253 <doc> 7254 <![CDATA[Servlet scopes. 7255 7256 @author crazybob@google.com (Bob Lee)]]> 7257 </doc> 7258 </class> 7259 <!-- end class com.google.inject.servlet.ServletScopes --> 7260 <!-- start class com.google.inject.servlet.SessionScoped --> 7261 <class name="SessionScoped" abstract="true" 7262 static="false" final="false" visibility="public" 7263 deprecated="not deprecated"> 7264 <implements name="java.lang.annotation.Annotation"/> 7265 <doc> 7266 <![CDATA[Apply this to implementation classes when you want one instance per session. 7267 7268 @see com.google.inject.Scopes#SINGLETON 7269 @author crazybob@google.com (Bob Lee)]]> 7270 </doc> 7271 </class> 7272 <!-- end class com.google.inject.servlet.SessionScoped --> 7273 <!-- start class com.google.inject.servlet.UriPatternType --> 7274 <class name="UriPatternType" extends="java.lang.Enum<com.google.inject.servlet.UriPatternType>" 7275 abstract="false" 7276 static="false" final="true" visibility="public" 7277 deprecated="not deprecated"> 7278 <method name="values" return="com.google.inject.servlet.UriPatternType[]" 7279 abstract="false" native="false" synchronized="false" 7280 static="true" final="false" visibility="public" 7281 deprecated="not deprecated"> 7282 </method> 7283 <method name="valueOf" return="com.google.inject.servlet.UriPatternType" 7284 abstract="false" native="false" synchronized="false" 7285 static="true" final="false" visibility="public" 7286 deprecated="not deprecated"> 7287 <param name="name" type="java.lang.String"/> 7288 </method> 7289 <doc> 7290 <![CDATA[An enumeration of the available URI-pattern matching styles 7291 7292 @since 3.0]]> 7293 </doc> 7294 </class> 7295 <!-- end class com.google.inject.servlet.UriPatternType --> 7296</package> 7297<package name="com.google.inject.spi"> 7298 <!-- start interface com.google.inject.spi.BindingScopingVisitor --> 7299 <interface name="BindingScopingVisitor" abstract="true" 7300 static="false" final="false" visibility="public" 7301 deprecated="not deprecated"> 7302 <method name="visitEagerSingleton" return="V" 7303 abstract="false" native="false" synchronized="false" 7304 static="false" final="false" visibility="public" 7305 deprecated="not deprecated"> 7306 <doc> 7307 <![CDATA[Visit an eager singleton or single instance. This scope strategy is found on both module and 7308 injector bindings.]]> 7309 </doc> 7310 </method> 7311 <method name="visitScope" return="V" 7312 abstract="false" native="false" synchronized="false" 7313 static="false" final="false" visibility="public" 7314 deprecated="not deprecated"> 7315 <param name="scope" type="com.google.inject.Scope"/> 7316 <doc> 7317 <![CDATA[Visit a scope instance. This scope strategy is found on both module and injector bindings.]]> 7318 </doc> 7319 </method> 7320 <method name="visitScopeAnnotation" return="V" 7321 abstract="false" native="false" synchronized="false" 7322 static="false" final="false" visibility="public" 7323 deprecated="not deprecated"> 7324 <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 7325 <doc> 7326 <![CDATA[Visit a scope annotation. This scope strategy is found only on module bindings. The instance 7327 that implements this scope is registered by {@link com.google.inject.Binder#bindScope(Class, 7328 Scope) Binder.bindScope()}.]]> 7329 </doc> 7330 </method> 7331 <method name="visitNoScoping" return="V" 7332 abstract="false" native="false" synchronized="false" 7333 static="false" final="false" visibility="public" 7334 deprecated="not deprecated"> 7335 <doc> 7336 <![CDATA[Visit an unspecified or unscoped strategy. On a module, this strategy indicates that the 7337 injector should use scoping annotations to find a scope. On an injector, it indicates that 7338 no scope is applied to the binding. An unscoped binding will behave like a scoped one when it 7339 is linked to a scoped binding.]]> 7340 </doc> 7341 </method> 7342 <doc> 7343 <![CDATA[Visits each of the strategies used to scope an injection. 7344 7345 @param <V> any type to be returned by the visit method. Use {@link Void} with 7346 {@code return null} if no return type is needed. 7347 @since 2.0]]> 7348 </doc> 7349 </interface> 7350 <!-- end interface com.google.inject.spi.BindingScopingVisitor --> 7351 <!-- start interface com.google.inject.spi.BindingTargetVisitor --> 7352 <interface name="BindingTargetVisitor" abstract="true" 7353 static="false" final="false" visibility="public" 7354 deprecated="not deprecated"> 7355 <method name="visit" return="V" 7356 abstract="false" native="false" synchronized="false" 7357 static="false" final="false" visibility="public" 7358 deprecated="not deprecated"> 7359 <param name="binding" type="com.google.inject.spi.InstanceBinding<? extends T>"/> 7360 <doc> 7361 <![CDATA[Visit a instance binding. The same instance is returned for every injection. This target is 7362 found in both module and injector bindings.]]> 7363 </doc> 7364 </method> 7365 <method name="visit" return="V" 7366 abstract="false" native="false" synchronized="false" 7367 static="false" final="false" visibility="public" 7368 deprecated="not deprecated"> 7369 <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding<? extends T>"/> 7370 <doc> 7371 <![CDATA[Visit a provider instance binding. The provider's {@code get} method is invoked to resolve 7372 injections. This target is found in both module and injector bindings.]]> 7373 </doc> 7374 </method> 7375 <method name="visit" return="V" 7376 abstract="false" native="false" synchronized="false" 7377 static="false" final="false" visibility="public" 7378 deprecated="not deprecated"> 7379 <param name="binding" type="com.google.inject.spi.ProviderKeyBinding<? extends T>"/> 7380 <doc> 7381 <![CDATA[Visit a provider key binding. To resolve injections, the provider key is first resolved, then 7382 that provider's {@code get} method is invoked. This target is found in both module and injector 7383 bindings.]]> 7384 </doc> 7385 </method> 7386 <method name="visit" return="V" 7387 abstract="false" native="false" synchronized="false" 7388 static="false" final="false" visibility="public" 7389 deprecated="not deprecated"> 7390 <param name="binding" type="com.google.inject.spi.LinkedKeyBinding<? extends T>"/> 7391 <doc> 7392 <![CDATA[Visit a linked key binding. The other key's binding is used to resolve injections. This 7393 target is found in both module and injector bindings.]]> 7394 </doc> 7395 </method> 7396 <method name="visit" return="V" 7397 abstract="false" native="false" synchronized="false" 7398 static="false" final="false" visibility="public" 7399 deprecated="not deprecated"> 7400 <param name="binding" type="com.google.inject.spi.ExposedBinding<? extends T>"/> 7401 <doc> 7402 <![CDATA[Visit a binding to a key exposed from an enclosed private environment. This target is only 7403 found in injector bindings.]]> 7404 </doc> 7405 </method> 7406 <method name="visit" return="V" 7407 abstract="false" native="false" synchronized="false" 7408 static="false" final="false" visibility="public" 7409 deprecated="not deprecated"> 7410 <param name="binding" type="com.google.inject.spi.UntargettedBinding<? extends T>"/> 7411 <doc> 7412 <![CDATA[Visit an untargetted binding. This target is found only on module bindings. It indicates 7413 that the injector should use its implicit binding strategies to resolve injections.]]> 7414 </doc> 7415 </method> 7416 <method name="visit" return="V" 7417 abstract="false" native="false" synchronized="false" 7418 static="false" final="false" visibility="public" 7419 deprecated="not deprecated"> 7420 <param name="binding" type="com.google.inject.spi.ConstructorBinding<? extends T>"/> 7421 <doc> 7422 <![CDATA[Visit a constructor binding. To resolve injections, an instance is instantiated by invoking 7423 {@code constructor}. This target is found only on injector bindings.]]> 7424 </doc> 7425 </method> 7426 <method name="visit" return="V" 7427 abstract="false" native="false" synchronized="false" 7428 static="false" final="false" visibility="public" 7429 deprecated="not deprecated"> 7430 <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding<? extends T>"/> 7431 <doc> 7432 <![CDATA[Visit a binding created from converting a bound instance to a new type. The source binding 7433 has the same binding annotation but a different type. This target is found only on injector 7434 bindings.]]> 7435 </doc> 7436 </method> 7437 <method name="visit" return="V" 7438 abstract="false" native="false" synchronized="false" 7439 static="false" final="false" visibility="public" 7440 deprecated="not deprecated"> 7441 <param name="binding" type="com.google.inject.spi.ProviderBinding<? extends T>"/> 7442 <doc> 7443 <![CDATA[Visit a binding to a {@link com.google.inject.Provider} that delegates to the binding for the 7444 provided type. This target is found only on injector bindings.]]> 7445 </doc> 7446 </method> 7447 <doc> 7448 <![CDATA[Visits each of the strategies used to find an instance to satisfy an injection. 7449 7450 @param <V> any type to be returned by the visit method. Use {@link Void} with 7451 {@code return null} if no return type is needed. 7452 @since 2.0]]> 7453 </doc> 7454 </interface> 7455 <!-- end interface com.google.inject.spi.BindingTargetVisitor --> 7456 <!-- start interface com.google.inject.spi.ConstructorBinding --> 7457 <interface name="ConstructorBinding" abstract="true" 7458 static="false" final="false" visibility="public" 7459 deprecated="not deprecated"> 7460 <implements name="com.google.inject.Binding<T>"/> 7461 <implements name="com.google.inject.spi.HasDependencies"/> 7462 <method name="getConstructor" return="com.google.inject.spi.InjectionPoint" 7463 abstract="false" native="false" synchronized="false" 7464 static="false" final="false" visibility="public" 7465 deprecated="not deprecated"> 7466 <doc> 7467 <![CDATA[Gets the constructor this binding injects.]]> 7468 </doc> 7469 </method> 7470 <method name="getInjectableMembers" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 7471 abstract="false" native="false" synchronized="false" 7472 static="false" final="false" visibility="public" 7473 deprecated="not deprecated"> 7474 <doc> 7475 <![CDATA[Returns all instance method and field injection points on {@code type}. 7476 7477 @return a possibly empty set of injection points. The set has a specified iteration order. All 7478 fields are returned and then all methods. Within the fields, supertype fields are returned 7479 before subtype fields. Similarly, supertype methods are returned before subtype methods.]]> 7480 </doc> 7481 </method> 7482 <method name="getMethodInterceptors" return="java.util.Map<java.lang.reflect.Method, java.util.List<org.aopalliance.intercept.MethodInterceptor>>" 7483 abstract="false" native="false" synchronized="false" 7484 static="false" final="false" visibility="public" 7485 deprecated="not deprecated"> 7486 <doc> 7487 <![CDATA[Returns the interceptors applied to each method, in the order that they will be applied. 7488 7489 @return a possibly empty map]]> 7490 </doc> 7491 </method> 7492 <doc> 7493 <![CDATA[A binding to the constructor of a concrete clss. To resolve injections, an instance is 7494 instantiated by invoking the constructor. 7495 7496 @author jessewilson@google.com (Jesse Wilson) 7497 @since 2.0]]> 7498 </doc> 7499 </interface> 7500 <!-- end interface com.google.inject.spi.ConstructorBinding --> 7501 <!-- start interface com.google.inject.spi.ConvertedConstantBinding --> 7502 <interface name="ConvertedConstantBinding" abstract="true" 7503 static="false" final="false" visibility="public" 7504 deprecated="not deprecated"> 7505 <implements name="com.google.inject.Binding<T>"/> 7506 <implements name="com.google.inject.spi.HasDependencies"/> 7507 <method name="getValue" return="T" 7508 abstract="false" native="false" synchronized="false" 7509 static="false" final="false" visibility="public" 7510 deprecated="not deprecated"> 7511 <doc> 7512 <![CDATA[Returns the converted value.]]> 7513 </doc> 7514 </method> 7515 <method name="getTypeConverterBinding" return="com.google.inject.spi.TypeConverterBinding" 7516 abstract="false" native="false" synchronized="false" 7517 static="false" final="false" visibility="public" 7518 deprecated="not deprecated"> 7519 <doc> 7520 <![CDATA[Returns the type converter binding used to convert the constant. 7521 7522 @since 3.0]]> 7523 </doc> 7524 </method> 7525 <method name="getSourceKey" return="com.google.inject.Key<java.lang.String>" 7526 abstract="false" native="false" synchronized="false" 7527 static="false" final="false" visibility="public" 7528 deprecated="not deprecated"> 7529 <doc> 7530 <![CDATA[Returns the key for the source binding. That binding can e retrieved from an injector using 7531 {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]> 7532 </doc> 7533 </method> 7534 <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 7535 abstract="false" native="false" synchronized="false" 7536 static="false" final="false" visibility="public" 7537 deprecated="not deprecated"> 7538 <doc> 7539 <![CDATA[Returns a singleton set containing only the converted key.]]> 7540 </doc> 7541 </method> 7542 <doc> 7543 <![CDATA[A binding created from converting a bound instance to a new type. The source binding has the same 7544 binding annotation but a different type. 7545 7546 @author jessewilson@google.com (Jesse Wilson) 7547 @since 2.0]]> 7548 </doc> 7549 </interface> 7550 <!-- end interface com.google.inject.spi.ConvertedConstantBinding --> 7551 <!-- start class com.google.inject.spi.DefaultBindingScopingVisitor --> 7552 <class name="DefaultBindingScopingVisitor" extends="java.lang.Object" 7553 abstract="false" 7554 static="false" final="false" visibility="public" 7555 deprecated="not deprecated"> 7556 <implements name="com.google.inject.spi.BindingScopingVisitor<V>"/> 7557 <constructor name="DefaultBindingScopingVisitor" 7558 static="false" final="false" visibility="public" 7559 deprecated="not deprecated"> 7560 </constructor> 7561 <method name="visitOther" return="V" 7562 abstract="false" native="false" synchronized="false" 7563 static="false" final="false" visibility="protected" 7564 deprecated="not deprecated"> 7565 <doc> 7566 <![CDATA[Default visit implementation. Returns {@code null}.]]> 7567 </doc> 7568 </method> 7569 <method name="visitEagerSingleton" return="V" 7570 abstract="false" native="false" synchronized="false" 7571 static="false" final="false" visibility="public" 7572 deprecated="not deprecated"> 7573 </method> 7574 <method name="visitScope" return="V" 7575 abstract="false" native="false" synchronized="false" 7576 static="false" final="false" visibility="public" 7577 deprecated="not deprecated"> 7578 <param name="scope" type="com.google.inject.Scope"/> 7579 </method> 7580 <method name="visitScopeAnnotation" return="V" 7581 abstract="false" native="false" synchronized="false" 7582 static="false" final="false" visibility="public" 7583 deprecated="not deprecated"> 7584 <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 7585 </method> 7586 <method name="visitNoScoping" return="V" 7587 abstract="false" native="false" synchronized="false" 7588 static="false" final="false" visibility="public" 7589 deprecated="not deprecated"> 7590 </method> 7591 <doc> 7592 <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to 7593 {@link #visitOther()}, returning its result. 7594 7595 @param <V> any type to be returned by the visit method. Use {@link Void} with 7596 {@code return null} if no return type is needed. 7597 7598 @author jessewilson@google.com (Jesse Wilson) 7599 @since 2.0]]> 7600 </doc> 7601 </class> 7602 <!-- end class com.google.inject.spi.DefaultBindingScopingVisitor --> 7603 <!-- start class com.google.inject.spi.DefaultBindingTargetVisitor --> 7604 <class name="DefaultBindingTargetVisitor" extends="java.lang.Object" 7605 abstract="true" 7606 static="false" final="false" visibility="public" 7607 deprecated="not deprecated"> 7608 <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 7609 <constructor name="DefaultBindingTargetVisitor" 7610 static="false" final="false" visibility="public" 7611 deprecated="not deprecated"> 7612 </constructor> 7613 <method name="visitOther" return="V" 7614 abstract="false" native="false" synchronized="false" 7615 static="false" final="false" visibility="protected" 7616 deprecated="not deprecated"> 7617 <param name="binding" type="com.google.inject.Binding<? extends T>"/> 7618 <doc> 7619 <![CDATA[Default visit implementation. Returns {@code null}.]]> 7620 </doc> 7621 </method> 7622 <method name="visit" return="V" 7623 abstract="false" native="false" synchronized="false" 7624 static="false" final="false" visibility="public" 7625 deprecated="not deprecated"> 7626 <param name="instanceBinding" type="com.google.inject.spi.InstanceBinding<? extends T>"/> 7627 </method> 7628 <method name="visit" return="V" 7629 abstract="false" native="false" synchronized="false" 7630 static="false" final="false" visibility="public" 7631 deprecated="not deprecated"> 7632 <param name="providerInstanceBinding" type="com.google.inject.spi.ProviderInstanceBinding<? extends T>"/> 7633 </method> 7634 <method name="visit" return="V" 7635 abstract="false" native="false" synchronized="false" 7636 static="false" final="false" visibility="public" 7637 deprecated="not deprecated"> 7638 <param name="providerKeyBinding" type="com.google.inject.spi.ProviderKeyBinding<? extends T>"/> 7639 </method> 7640 <method name="visit" return="V" 7641 abstract="false" native="false" synchronized="false" 7642 static="false" final="false" visibility="public" 7643 deprecated="not deprecated"> 7644 <param name="linkedKeyBinding" type="com.google.inject.spi.LinkedKeyBinding<? extends T>"/> 7645 </method> 7646 <method name="visit" return="V" 7647 abstract="false" native="false" synchronized="false" 7648 static="false" final="false" visibility="public" 7649 deprecated="not deprecated"> 7650 <param name="exposedBinding" type="com.google.inject.spi.ExposedBinding<? extends T>"/> 7651 </method> 7652 <method name="visit" return="V" 7653 abstract="false" native="false" synchronized="false" 7654 static="false" final="false" visibility="public" 7655 deprecated="not deprecated"> 7656 <param name="untargettedBinding" type="com.google.inject.spi.UntargettedBinding<? extends T>"/> 7657 </method> 7658 <method name="visit" return="V" 7659 abstract="false" native="false" synchronized="false" 7660 static="false" final="false" visibility="public" 7661 deprecated="not deprecated"> 7662 <param name="constructorBinding" type="com.google.inject.spi.ConstructorBinding<? extends T>"/> 7663 </method> 7664 <method name="visit" return="V" 7665 abstract="false" native="false" synchronized="false" 7666 static="false" final="false" visibility="public" 7667 deprecated="not deprecated"> 7668 <param name="convertedConstantBinding" type="com.google.inject.spi.ConvertedConstantBinding<? extends T>"/> 7669 </method> 7670 <method name="visit" return="V" 7671 abstract="false" native="false" synchronized="false" 7672 static="false" final="false" visibility="public" 7673 deprecated="not deprecated"> 7674 <param name="providerBinding" type="com.google.inject.spi.ProviderBinding<? extends T>"/> 7675 </method> 7676 <doc> 7677 <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to {@link 7678 #visitOther(Binding)}, returning its result. 7679 7680 @param <V> any type to be returned by the visit method. Use {@link Void} with 7681 {@code return null} if no return type is needed. 7682 7683 @author jessewilson@google.com (Jesse Wilson) 7684 @since 2.0]]> 7685 </doc> 7686 </class> 7687 <!-- end class com.google.inject.spi.DefaultBindingTargetVisitor --> 7688 <!-- start class com.google.inject.spi.DefaultElementVisitor --> 7689 <class name="DefaultElementVisitor" extends="java.lang.Object" 7690 abstract="true" 7691 static="false" final="false" visibility="public" 7692 deprecated="not deprecated"> 7693 <implements name="com.google.inject.spi.ElementVisitor<V>"/> 7694 <constructor name="DefaultElementVisitor" 7695 static="false" final="false" visibility="public" 7696 deprecated="not deprecated"> 7697 </constructor> 7698 <method name="visitOther" return="V" 7699 abstract="false" native="false" synchronized="false" 7700 static="false" final="false" visibility="protected" 7701 deprecated="not deprecated"> 7702 <param name="element" type="com.google.inject.spi.Element"/> 7703 <doc> 7704 <![CDATA[Default visit implementation. Returns {@code null}.]]> 7705 </doc> 7706 </method> 7707 <method name="visit" return="V" 7708 abstract="false" native="false" synchronized="false" 7709 static="false" final="false" visibility="public" 7710 deprecated="not deprecated"> 7711 <param name="message" type="com.google.inject.spi.Message"/> 7712 </method> 7713 <method name="visit" return="V" 7714 abstract="false" native="false" synchronized="false" 7715 static="false" final="false" visibility="public" 7716 deprecated="not deprecated"> 7717 <param name="binding" type="com.google.inject.Binding<T>"/> 7718 </method> 7719 <method name="visit" return="V" 7720 abstract="false" native="false" synchronized="false" 7721 static="false" final="false" visibility="public" 7722 deprecated="not deprecated"> 7723 <param name="interceptorBinding" type="com.google.inject.spi.InterceptorBinding"/> 7724 </method> 7725 <method name="visit" return="V" 7726 abstract="false" native="false" synchronized="false" 7727 static="false" final="false" visibility="public" 7728 deprecated="not deprecated"> 7729 <param name="scopeBinding" type="com.google.inject.spi.ScopeBinding"/> 7730 </method> 7731 <method name="visit" return="V" 7732 abstract="false" native="false" synchronized="false" 7733 static="false" final="false" visibility="public" 7734 deprecated="not deprecated"> 7735 <param name="typeConverterBinding" type="com.google.inject.spi.TypeConverterBinding"/> 7736 </method> 7737 <method name="visit" return="V" 7738 abstract="false" native="false" synchronized="false" 7739 static="false" final="false" visibility="public" 7740 deprecated="not deprecated"> 7741 <param name="providerLookup" type="com.google.inject.spi.ProviderLookup<T>"/> 7742 </method> 7743 <method name="visit" return="V" 7744 abstract="false" native="false" synchronized="false" 7745 static="false" final="false" visibility="public" 7746 deprecated="not deprecated"> 7747 <param name="injectionRequest" type="com.google.inject.spi.InjectionRequest<?>"/> 7748 </method> 7749 <method name="visit" return="V" 7750 abstract="false" native="false" synchronized="false" 7751 static="false" final="false" visibility="public" 7752 deprecated="not deprecated"> 7753 <param name="staticInjectionRequest" type="com.google.inject.spi.StaticInjectionRequest"/> 7754 </method> 7755 <method name="visit" return="V" 7756 abstract="false" native="false" synchronized="false" 7757 static="false" final="false" visibility="public" 7758 deprecated="not deprecated"> 7759 <param name="privateElements" type="com.google.inject.spi.PrivateElements"/> 7760 </method> 7761 <method name="visit" return="V" 7762 abstract="false" native="false" synchronized="false" 7763 static="false" final="false" visibility="public" 7764 deprecated="not deprecated"> 7765 <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup<T>"/> 7766 </method> 7767 <method name="visit" return="V" 7768 abstract="false" native="false" synchronized="false" 7769 static="false" final="false" visibility="public" 7770 deprecated="not deprecated"> 7771 <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/> 7772 </method> 7773 <method name="visit" return="V" 7774 abstract="false" native="false" synchronized="false" 7775 static="false" final="false" visibility="public" 7776 deprecated="not deprecated"> 7777 <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/> 7778 </method> 7779 <method name="visit" return="V" 7780 abstract="false" native="false" synchronized="false" 7781 static="false" final="false" visibility="public" 7782 deprecated="not deprecated"> 7783 <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/> 7784 </method> 7785 <doc> 7786 <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to 7787 {@link #visitOther(Element)}, returning its result. 7788 7789 @param <V> any type to be returned by the visit method. Use {@link Void} with 7790 {@code return null} if no return type is needed. 7791 7792 @author sberlin@gmail.com (Sam Berlin) 7793 @since 2.0]]> 7794 </doc> 7795 </class> 7796 <!-- end class com.google.inject.spi.DefaultElementVisitor --> 7797 <!-- start class com.google.inject.spi.Dependency --> 7798 <class name="Dependency" extends="java.lang.Object" 7799 abstract="false" 7800 static="false" final="true" visibility="public" 7801 deprecated="not deprecated"> 7802 <method name="get" return="com.google.inject.spi.Dependency<T>" 7803 abstract="false" native="false" synchronized="false" 7804 static="true" final="false" visibility="public" 7805 deprecated="not deprecated"> 7806 <param name="key" type="com.google.inject.Key<T>"/> 7807 <doc> 7808 <![CDATA[Returns a new dependency that is not attached to an injection point. The returned dependency is 7809 nullable.]]> 7810 </doc> 7811 </method> 7812 <method name="forInjectionPoints" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 7813 abstract="false" native="false" synchronized="false" 7814 static="true" final="false" visibility="public" 7815 deprecated="not deprecated"> 7816 <param name="injectionPoints" type="java.util.Set<com.google.inject.spi.InjectionPoint>"/> 7817 <doc> 7818 <![CDATA[Returns the dependencies from the given injection points.]]> 7819 </doc> 7820 </method> 7821 <method name="getKey" return="com.google.inject.Key<T>" 7822 abstract="false" native="false" synchronized="false" 7823 static="false" final="false" visibility="public" 7824 deprecated="not deprecated"> 7825 <doc> 7826 <![CDATA[Returns the key to the binding that satisfies this dependency.]]> 7827 </doc> 7828 </method> 7829 <method name="isNullable" return="boolean" 7830 abstract="false" native="false" synchronized="false" 7831 static="false" final="false" visibility="public" 7832 deprecated="not deprecated"> 7833 <doc> 7834 <![CDATA[Returns true if null is a legal value for this dependency.]]> 7835 </doc> 7836 </method> 7837 <method name="getInjectionPoint" return="com.google.inject.spi.InjectionPoint" 7838 abstract="false" native="false" synchronized="false" 7839 static="false" final="false" visibility="public" 7840 deprecated="not deprecated"> 7841 <doc> 7842 <![CDATA[Returns the injection point to which this dependency belongs, or null if this dependency isn't 7843 attached to a particular injection point.]]> 7844 </doc> 7845 </method> 7846 <method name="getParameterIndex" return="int" 7847 abstract="false" native="false" synchronized="false" 7848 static="false" final="false" visibility="public" 7849 deprecated="not deprecated"> 7850 <doc> 7851 <![CDATA[Returns the index of this dependency in the injection point's parameter list, or {@code -1} if 7852 this dependency does not belong to a parameter list. Only method and constuctor dependencies 7853 are elements in a parameter list.]]> 7854 </doc> 7855 </method> 7856 <method name="hashCode" return="int" 7857 abstract="false" native="false" synchronized="false" 7858 static="false" final="false" visibility="public" 7859 deprecated="not deprecated"> 7860 </method> 7861 <method name="equals" return="boolean" 7862 abstract="false" native="false" synchronized="false" 7863 static="false" final="false" visibility="public" 7864 deprecated="not deprecated"> 7865 <param name="o" type="java.lang.Object"/> 7866 </method> 7867 <method name="toString" return="java.lang.String" 7868 abstract="false" native="false" synchronized="false" 7869 static="false" final="false" visibility="public" 7870 deprecated="not deprecated"> 7871 </method> 7872 <doc> 7873 <![CDATA[A variable that can be resolved by an injector. 7874 7875 <p>Use {@link #get} to build a freestanding dependency, or {@link InjectionPoint} to build one 7876 that's attached to a constructor, method or field. 7877 7878 @author crazybob@google.com (Bob Lee) 7879 @author jessewilson@google.com (Jesse Wilson) 7880 @since 2.0]]> 7881 </doc> 7882 </class> 7883 <!-- end class com.google.inject.spi.Dependency --> 7884 <!-- start class com.google.inject.spi.DisableCircularProxiesOption --> 7885 <class name="DisableCircularProxiesOption" extends="java.lang.Object" 7886 abstract="false" 7887 static="false" final="true" visibility="public" 7888 deprecated="not deprecated"> 7889 <implements name="com.google.inject.spi.Element"/> 7890 <method name="getSource" return="java.lang.Object" 7891 abstract="false" native="false" synchronized="false" 7892 static="false" final="false" visibility="public" 7893 deprecated="not deprecated"> 7894 </method> 7895 <method name="applyTo" 7896 abstract="false" native="false" synchronized="false" 7897 static="false" final="false" visibility="public" 7898 deprecated="not deprecated"> 7899 <param name="binder" type="com.google.inject.Binder"/> 7900 </method> 7901 <method name="acceptVisitor" return="T" 7902 abstract="false" native="false" synchronized="false" 7903 static="false" final="false" visibility="public" 7904 deprecated="not deprecated"> 7905 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 7906 </method> 7907 <doc> 7908 <![CDATA[A request to disable circular proxies. 7909 7910 @author sameb@google.com (Sam Berlin) 7911 @since 3.0]]> 7912 </doc> 7913 </class> 7914 <!-- end class com.google.inject.spi.DisableCircularProxiesOption --> 7915 <!-- start interface com.google.inject.spi.Element --> 7916 <interface name="Element" abstract="true" 7917 static="false" final="false" visibility="public" 7918 deprecated="not deprecated"> 7919 <method name="getSource" return="java.lang.Object" 7920 abstract="false" native="false" synchronized="false" 7921 static="false" final="false" visibility="public" 7922 deprecated="not deprecated"> 7923 <doc> 7924 <![CDATA[Returns an arbitrary object containing information about the "place" where this element was 7925 configured. Used by Guice in the production of descriptive error messages. 7926 7927 <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good 7928 example. Tools should simply call {@code toString()} on the source object if the type is 7929 unfamiliar.]]> 7930 </doc> 7931 </method> 7932 <method name="acceptVisitor" return="T" 7933 abstract="false" native="false" synchronized="false" 7934 static="false" final="false" visibility="public" 7935 deprecated="not deprecated"> 7936 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 7937 <doc> 7938 <![CDATA[Accepts an element visitor. Invokes the visitor method specific to this element's type. 7939 7940 @param visitor to call back on]]> 7941 </doc> 7942 </method> 7943 <method name="applyTo" 7944 abstract="false" native="false" synchronized="false" 7945 static="false" final="false" visibility="public" 7946 deprecated="not deprecated"> 7947 <param name="binder" type="com.google.inject.Binder"/> 7948 <doc> 7949 <![CDATA[Writes this module element to the given binder (optional operation). 7950 7951 @param binder to apply configuration element to 7952 @throws UnsupportedOperationException if the {@code applyTo} method is not supported by this 7953 element.]]> 7954 </doc> 7955 </method> 7956 <doc> 7957 <![CDATA[A core component of a module or injector. 7958 7959 <p>The elements of a module can be inspected, validated and rewritten. Use {@link 7960 Elements#getElements(com.google.inject.Module[]) Elements.getElements()} to read the elements 7961 from a module, and {@link Elements#getModule(Iterable) Elements.getModule()} to rewrite them. 7962 This can be used for static analysis and generation of Guice modules. 7963 7964 <p>The elements of an injector can be inspected and exercised. Use {@link 7965 com.google.inject.Injector#getBindings Injector.getBindings()} to reflect on Guice injectors. 7966 7967 @author jessewilson@google.com (Jesse Wilson) 7968 @author crazybob@google.com (Bob Lee) 7969 @since 2.0]]> 7970 </doc> 7971 </interface> 7972 <!-- end interface com.google.inject.spi.Element --> 7973 <!-- start class com.google.inject.spi.Elements --> 7974 <class name="Elements" extends="java.lang.Object" 7975 abstract="false" 7976 static="false" final="true" visibility="public" 7977 deprecated="not deprecated"> 7978 <constructor name="Elements" 7979 static="false" final="false" visibility="public" 7980 deprecated="not deprecated"> 7981 </constructor> 7982 <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 7983 abstract="false" native="false" synchronized="false" 7984 static="true" final="false" visibility="public" 7985 deprecated="not deprecated"> 7986 <param name="modules" type="com.google.inject.Module[]"/> 7987 <doc> 7988 <![CDATA[Records the elements executed by {@code modules}.]]> 7989 </doc> 7990 </method> 7991 <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 7992 abstract="false" native="false" synchronized="false" 7993 static="true" final="false" visibility="public" 7994 deprecated="not deprecated"> 7995 <param name="stage" type="com.google.inject.Stage"/> 7996 <param name="modules" type="com.google.inject.Module[]"/> 7997 <doc> 7998 <![CDATA[Records the elements executed by {@code modules}.]]> 7999 </doc> 8000 </method> 8001 <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 8002 abstract="false" native="false" synchronized="false" 8003 static="true" final="false" visibility="public" 8004 deprecated="not deprecated"> 8005 <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 8006 <doc> 8007 <![CDATA[Records the elements executed by {@code modules}.]]> 8008 </doc> 8009 </method> 8010 <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 8011 abstract="false" native="false" synchronized="false" 8012 static="true" final="false" visibility="public" 8013 deprecated="not deprecated"> 8014 <param name="stage" type="com.google.inject.Stage"/> 8015 <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 8016 <doc> 8017 <![CDATA[Records the elements executed by {@code modules}.]]> 8018 </doc> 8019 </method> 8020 <method name="getModule" return="com.google.inject.Module" 8021 abstract="false" native="false" synchronized="false" 8022 static="true" final="false" visibility="public" 8023 deprecated="not deprecated"> 8024 <param name="elements" type="java.lang.Iterable<? extends com.google.inject.spi.Element>"/> 8025 <doc> 8026 <![CDATA[Returns the module composed of {@code elements}.]]> 8027 </doc> 8028 </method> 8029 <doc> 8030 <![CDATA[Exposes elements of a module so they can be inspected, validated or {@link 8031 Element#applyTo(Binder) rewritten}. 8032 8033 @author jessewilson@google.com (Jesse Wilson) 8034 @since 2.0]]> 8035 </doc> 8036 </class> 8037 <!-- end class com.google.inject.spi.Elements --> 8038 <!-- start interface com.google.inject.spi.ElementVisitor --> 8039 <interface name="ElementVisitor" abstract="true" 8040 static="false" final="false" visibility="public" 8041 deprecated="not deprecated"> 8042 <method name="visit" return="V" 8043 abstract="false" native="false" synchronized="false" 8044 static="false" final="false" visibility="public" 8045 deprecated="not deprecated"> 8046 <param name="binding" type="com.google.inject.Binding<T>"/> 8047 <doc> 8048 <![CDATA[Visit a mapping from a key (type and optional annotation) to the strategy for getting 8049 instances of the type.]]> 8050 </doc> 8051 </method> 8052 <method name="visit" return="V" 8053 abstract="false" native="false" synchronized="false" 8054 static="false" final="false" visibility="public" 8055 deprecated="not deprecated"> 8056 <param name="binding" type="com.google.inject.spi.InterceptorBinding"/> 8057 <doc> 8058 <![CDATA[Visit a registration of interceptors for matching methods of matching classes.]]> 8059 </doc> 8060 </method> 8061 <method name="visit" return="V" 8062 abstract="false" native="false" synchronized="false" 8063 static="false" final="false" visibility="public" 8064 deprecated="not deprecated"> 8065 <param name="binding" type="com.google.inject.spi.ScopeBinding"/> 8066 <doc> 8067 <![CDATA[Visit a registration of a scope annotation with the scope that implements it.]]> 8068 </doc> 8069 </method> 8070 <method name="visit" return="V" 8071 abstract="false" native="false" synchronized="false" 8072 static="false" final="false" visibility="public" 8073 deprecated="not deprecated"> 8074 <param name="binding" type="com.google.inject.spi.TypeConverterBinding"/> 8075 <doc> 8076 <![CDATA[Visit a registration of type converters for matching target types.]]> 8077 </doc> 8078 </method> 8079 <method name="visit" return="V" 8080 abstract="false" native="false" synchronized="false" 8081 static="false" final="false" visibility="public" 8082 deprecated="not deprecated"> 8083 <param name="request" type="com.google.inject.spi.InjectionRequest<?>"/> 8084 <doc> 8085 <![CDATA[Visit a request to inject the instance fields and methods of an instance.]]> 8086 </doc> 8087 </method> 8088 <method name="visit" return="V" 8089 abstract="false" native="false" synchronized="false" 8090 static="false" final="false" visibility="public" 8091 deprecated="not deprecated"> 8092 <param name="request" type="com.google.inject.spi.StaticInjectionRequest"/> 8093 <doc> 8094 <![CDATA[Visit a request to inject the static fields and methods of type.]]> 8095 </doc> 8096 </method> 8097 <method name="visit" return="V" 8098 abstract="false" native="false" synchronized="false" 8099 static="false" final="false" visibility="public" 8100 deprecated="not deprecated"> 8101 <param name="lookup" type="com.google.inject.spi.ProviderLookup<T>"/> 8102 <doc> 8103 <![CDATA[Visit a lookup of the provider for a type.]]> 8104 </doc> 8105 </method> 8106 <method name="visit" return="V" 8107 abstract="false" native="false" synchronized="false" 8108 static="false" final="false" visibility="public" 8109 deprecated="not deprecated"> 8110 <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup<T>"/> 8111 <doc> 8112 <![CDATA[Visit a lookup of the members injector.]]> 8113 </doc> 8114 </method> 8115 <method name="visit" return="V" 8116 abstract="false" native="false" synchronized="false" 8117 static="false" final="false" visibility="public" 8118 deprecated="not deprecated"> 8119 <param name="message" type="com.google.inject.spi.Message"/> 8120 <doc> 8121 <![CDATA[Visit an error message and the context in which it occured.]]> 8122 </doc> 8123 </method> 8124 <method name="visit" return="V" 8125 abstract="false" native="false" synchronized="false" 8126 static="false" final="false" visibility="public" 8127 deprecated="not deprecated"> 8128 <param name="elements" type="com.google.inject.spi.PrivateElements"/> 8129 <doc> 8130 <![CDATA[Visit a collection of configuration elements for a {@linkplain com.google.inject.PrivateBinder 8131 private binder}.]]> 8132 </doc> 8133 </method> 8134 <method name="visit" return="V" 8135 abstract="false" native="false" synchronized="false" 8136 static="false" final="false" visibility="public" 8137 deprecated="not deprecated"> 8138 <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/> 8139 <doc> 8140 <![CDATA[Visit an injectable type listener binding.]]> 8141 </doc> 8142 </method> 8143 <method name="visit" return="V" 8144 abstract="false" native="false" synchronized="false" 8145 static="false" final="false" visibility="public" 8146 deprecated="not deprecated"> 8147 <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/> 8148 <doc> 8149 <![CDATA[Visit a require explicit bindings command. 8150 8151 @since 3.0]]> 8152 </doc> 8153 </method> 8154 <method name="visit" return="V" 8155 abstract="false" native="false" synchronized="false" 8156 static="false" final="false" visibility="public" 8157 deprecated="not deprecated"> 8158 <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/> 8159 <doc> 8160 <![CDATA[Visit a disable circular proxies command. 8161 8162 @since 3.0]]> 8163 </doc> 8164 </method> 8165 <doc> 8166 <![CDATA[Visit elements. 8167 8168 @param <V> any type to be returned by the visit method. Use {@link Void} with 8169 {@code return null} if no return type is needed. 8170 8171 @since 2.0]]> 8172 </doc> 8173 </interface> 8174 <!-- end interface com.google.inject.spi.ElementVisitor --> 8175 <!-- start interface com.google.inject.spi.ExposedBinding --> 8176 <interface name="ExposedBinding" abstract="true" 8177 static="false" final="false" visibility="public" 8178 deprecated="not deprecated"> 8179 <implements name="com.google.inject.Binding<T>"/> 8180 <implements name="com.google.inject.spi.HasDependencies"/> 8181 <method name="getPrivateElements" return="com.google.inject.spi.PrivateElements" 8182 abstract="false" native="false" synchronized="false" 8183 static="false" final="false" visibility="public" 8184 deprecated="not deprecated"> 8185 <doc> 8186 <![CDATA[Returns the enclosed environment that holds the original binding.]]> 8187 </doc> 8188 </method> 8189 <method name="applyTo" 8190 abstract="false" native="false" synchronized="false" 8191 static="false" final="false" visibility="public" 8192 deprecated="not deprecated"> 8193 <param name="binder" type="com.google.inject.Binder"/> 8194 <doc> 8195 <![CDATA[Unsupported. Always throws {@link UnsupportedOperationException}.]]> 8196 </doc> 8197 </method> 8198 <doc> 8199 <![CDATA[A binding to a key exposed from an enclosed private environment. 8200 8201 @author jessewilson@google.com (Jesse Wilson) 8202 @since 2.0]]> 8203 </doc> 8204 </interface> 8205 <!-- end interface com.google.inject.spi.ExposedBinding --> 8206 <!-- start interface com.google.inject.spi.HasDependencies --> 8207 <interface name="HasDependencies" abstract="true" 8208 static="false" final="false" visibility="public" 8209 deprecated="not deprecated"> 8210 <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 8211 abstract="false" native="false" synchronized="false" 8212 static="false" final="false" visibility="public" 8213 deprecated="not deprecated"> 8214 <doc> 8215 <![CDATA[Returns the known dependencies for this type. If this has dependencies whose values are not 8216 known statically, a dependency for the {@link com.google.inject.Injector Injector} will be 8217 included in the returned set. 8218 8219 @return a possibly empty set]]> 8220 </doc> 8221 </method> 8222 <doc> 8223 <![CDATA[Implemented by {@link com.google.inject.Binding bindings}, {@link com.google.inject.Provider 8224 providers} and instances that expose their dependencies explicitly. 8225 8226 @author jessewilson@google.com (Jesse Wilson) 8227 @since 2.0]]> 8228 </doc> 8229 </interface> 8230 <!-- end interface com.google.inject.spi.HasDependencies --> 8231 <!-- start interface com.google.inject.spi.InjectionListener --> 8232 <interface name="InjectionListener" abstract="true" 8233 static="false" final="false" visibility="public" 8234 deprecated="not deprecated"> 8235 <method name="afterInjection" 8236 abstract="false" native="false" synchronized="false" 8237 static="false" final="false" visibility="public" 8238 deprecated="not deprecated"> 8239 <param name="injectee" type="I"/> 8240 <doc> 8241 <![CDATA[Invoked by Guice after it injects the fields and methods of instance. 8242 8243 @param injectee instance that Guice injected dependencies into]]> 8244 </doc> 8245 </method> 8246 <doc> 8247 <![CDATA[Listens for injections into instances of type {@code I}. Useful for performing further 8248 injections, post-injection initialization, and more. 8249 8250 @author crazybob@google.com (Bob Lee) 8251 @author jessewilson@google.com (Jesse Wilson) 8252 @since 2.0]]> 8253 </doc> 8254 </interface> 8255 <!-- end interface com.google.inject.spi.InjectionListener --> 8256 <!-- start class com.google.inject.spi.InjectionPoint --> 8257 <class name="InjectionPoint" extends="java.lang.Object" 8258 abstract="false" 8259 static="false" final="true" visibility="public" 8260 deprecated="not deprecated"> 8261 <method name="getMember" return="java.lang.reflect.Member" 8262 abstract="false" native="false" synchronized="false" 8263 static="false" final="false" visibility="public" 8264 deprecated="not deprecated"> 8265 <doc> 8266 <![CDATA[Returns the injected constructor, field, or method.]]> 8267 </doc> 8268 </method> 8269 <method name="getDependencies" return="java.util.List<com.google.inject.spi.Dependency<?>>" 8270 abstract="false" native="false" synchronized="false" 8271 static="false" final="false" visibility="public" 8272 deprecated="not deprecated"> 8273 <doc> 8274 <![CDATA[Returns the dependencies for this injection point. If the injection point is for a method or 8275 constructor, the dependencies will correspond to that member's parameters. Field injection 8276 points always have a single dependency for the field itself. 8277 8278 @return a possibly-empty list]]> 8279 </doc> 8280 </method> 8281 <method name="isOptional" return="boolean" 8282 abstract="false" native="false" synchronized="false" 8283 static="false" final="false" visibility="public" 8284 deprecated="not deprecated"> 8285 <doc> 8286 <![CDATA[Returns true if this injection point shall be skipped if the injector cannot resolve bindings 8287 for all required dependencies. Both explicit bindings (as specified in a module), and implicit 8288 bindings ({@literal @}{@link com.google.inject.ImplementedBy ImplementedBy}, default 8289 constructors etc.) may be used to satisfy optional injection points.]]> 8290 </doc> 8291 </method> 8292 <method name="isToolable" return="boolean" 8293 abstract="false" native="false" synchronized="false" 8294 static="false" final="false" visibility="public" 8295 deprecated="not deprecated"> 8296 <doc> 8297 <![CDATA[Returns true if the element is annotated with {@literal @}{@link Toolable}. 8298 8299 @since 3.0]]> 8300 </doc> 8301 </method> 8302 <method name="getDeclaringType" return="com.google.inject.TypeLiteral<?>" 8303 abstract="false" native="false" synchronized="false" 8304 static="false" final="false" visibility="public" 8305 deprecated="not deprecated"> 8306 <doc> 8307 <![CDATA[Returns the generic type that defines this injection point. If the member exists on a 8308 parameterized type, the result will include more type information than the member's {@link 8309 Member#getDeclaringClass() raw declaring class}. 8310 8311 @since 3.0]]> 8312 </doc> 8313 </method> 8314 <method name="equals" return="boolean" 8315 abstract="false" native="false" synchronized="false" 8316 static="false" final="false" visibility="public" 8317 deprecated="not deprecated"> 8318 <param name="o" type="java.lang.Object"/> 8319 </method> 8320 <method name="hashCode" return="int" 8321 abstract="false" native="false" synchronized="false" 8322 static="false" final="false" visibility="public" 8323 deprecated="not deprecated"> 8324 </method> 8325 <method name="toString" return="java.lang.String" 8326 abstract="false" native="false" synchronized="false" 8327 static="false" final="false" visibility="public" 8328 deprecated="not deprecated"> 8329 </method> 8330 <method name="forConstructor" return="com.google.inject.spi.InjectionPoint" 8331 abstract="false" native="false" synchronized="false" 8332 static="true" final="false" visibility="public" 8333 deprecated="not deprecated"> 8334 <param name="constructor" type="java.lang.reflect.Constructor<T>"/> 8335 <doc> 8336 <![CDATA[Returns a new injection point for the specified constructor. If the declaring type of {@code 8337 constructor} is parameterized (such as {@code List<T>}), prefer the overload that includes a 8338 type literal. 8339 8340 @param constructor any single constructor present on {@code type}. 8341 8342 @since 3.0]]> 8343 </doc> 8344 </method> 8345 <method name="forConstructor" return="com.google.inject.spi.InjectionPoint" 8346 abstract="false" native="false" synchronized="false" 8347 static="true" final="false" visibility="public" 8348 deprecated="not deprecated"> 8349 <param name="constructor" type="java.lang.reflect.Constructor<T>"/> 8350 <param name="type" type="com.google.inject.TypeLiteral<? extends T>"/> 8351 <doc> 8352 <![CDATA[Returns a new injection point for the specified constructor of {@code type}. 8353 8354 @param constructor any single constructor present on {@code type}. 8355 @param type the concrete type that defines {@code constructor}. 8356 8357 @since 3.0]]> 8358 </doc> 8359 </method> 8360 <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint" 8361 abstract="false" native="false" synchronized="false" 8362 static="true" final="false" visibility="public" 8363 deprecated="not deprecated"> 8364 <param name="type" type="com.google.inject.TypeLiteral<?>"/> 8365 <doc> 8366 <![CDATA[Returns a new injection point for the injectable constructor of {@code type}. 8367 8368 @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject}, 8369 or a no-arguments constructor that is not private. 8370 @throws ConfigurationException if there is no injectable constructor, more than one injectable 8371 constructor, or if parameters of the injectable constructor are malformed, such as a 8372 parameter with multiple binding annotations.]]> 8373 </doc> 8374 </method> 8375 <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint" 8376 abstract="false" native="false" synchronized="false" 8377 static="true" final="false" visibility="public" 8378 deprecated="not deprecated"> 8379 <param name="type" type="java.lang.Class<?>"/> 8380 <doc> 8381 <![CDATA[Returns a new injection point for the injectable constructor of {@code type}. 8382 8383 @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject}, 8384 or a no-arguments constructor that is not private. 8385 @throws ConfigurationException if there is no injectable constructor, more than one injectable 8386 constructor, or if parameters of the injectable constructor are malformed, such as a 8387 parameter with multiple binding annotations.]]> 8388 </doc> 8389 </method> 8390 <method name="forStaticMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 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<?>"/> 8395 <doc> 8396 <![CDATA[Returns all static method and field injection points on {@code type}. 8397 8398 @return a possibly empty set of injection points. The set has a specified iteration order. All 8399 fields are returned and then all methods. Within the fields, supertype fields are returned 8400 before subtype fields. Similarly, supertype methods are returned before subtype methods. 8401 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 8402 a field with multiple binding annotations. The exception's {@link 8403 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 8404 of the valid injection points.]]> 8405 </doc> 8406 </method> 8407 <method name="forStaticMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 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<?>"/> 8412 <doc> 8413 <![CDATA[Returns all static method and field injection points on {@code type}. 8414 8415 @return a possibly empty set of injection points. The set has a specified iteration order. All 8416 fields are returned and then all methods. Within the fields, supertype fields are returned 8417 before subtype fields. Similarly, supertype methods are returned before subtype methods. 8418 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 8419 a field with multiple binding annotations. The exception's {@link 8420 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 8421 of the valid injection points.]]> 8422 </doc> 8423 </method> 8424 <method name="forInstanceMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 8425 abstract="false" native="false" synchronized="false" 8426 static="true" final="false" visibility="public" 8427 deprecated="not deprecated"> 8428 <param name="type" type="com.google.inject.TypeLiteral<?>"/> 8429 <doc> 8430 <![CDATA[Returns all instance method and field injection points on {@code type}. 8431 8432 @return a possibly empty set of injection points. The set has a specified iteration order. All 8433 fields are returned and then all methods. Within the fields, supertype fields are returned 8434 before subtype fields. Similarly, supertype methods are returned before subtype methods. 8435 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 8436 a field with multiple binding annotations. The exception's {@link 8437 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 8438 of the valid injection points.]]> 8439 </doc> 8440 </method> 8441 <method name="forInstanceMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 8442 abstract="false" native="false" synchronized="false" 8443 static="true" final="false" visibility="public" 8444 deprecated="not deprecated"> 8445 <param name="type" type="java.lang.Class<?>"/> 8446 <doc> 8447 <![CDATA[Returns all instance method and field injection points on {@code type}. 8448 8449 @return a possibly empty set of injection points. The set has a specified iteration order. All 8450 fields are returned and then all methods. Within the fields, supertype fields are returned 8451 before subtype fields. Similarly, supertype methods are returned before subtype methods. 8452 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 8453 a field with multiple binding annotations. The exception's {@link 8454 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 8455 of the valid injection points.]]> 8456 </doc> 8457 </method> 8458 <doc> 8459 <![CDATA[A constructor, field or method that can receive injections. Typically this is a member with the 8460 {@literal @}{@link Inject} annotation. For non-private, no argument constructors, the member may 8461 omit the annotation. 8462 8463 @author crazybob@google.com (Bob Lee) 8464 @since 2.0]]> 8465 </doc> 8466 </class> 8467 <!-- end class com.google.inject.spi.InjectionPoint --> 8468 <!-- start class com.google.inject.spi.InjectionRequest --> 8469 <class name="InjectionRequest" extends="java.lang.Object" 8470 abstract="false" 8471 static="false" final="true" visibility="public" 8472 deprecated="not deprecated"> 8473 <implements name="com.google.inject.spi.Element"/> 8474 <constructor name="InjectionRequest" type="java.lang.Object, com.google.inject.TypeLiteral<T>, T" 8475 static="false" final="false" visibility="public" 8476 deprecated="not deprecated"> 8477 </constructor> 8478 <method name="getSource" return="java.lang.Object" 8479 abstract="false" native="false" synchronized="false" 8480 static="false" final="false" visibility="public" 8481 deprecated="not deprecated"> 8482 </method> 8483 <method name="getInstance" return="T" 8484 abstract="false" native="false" synchronized="false" 8485 static="false" final="false" visibility="public" 8486 deprecated="not deprecated"> 8487 </method> 8488 <method name="getType" return="com.google.inject.TypeLiteral<T>" 8489 abstract="false" native="false" synchronized="false" 8490 static="false" final="false" visibility="public" 8491 deprecated="not deprecated"> 8492 </method> 8493 <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 8494 abstract="false" native="false" synchronized="false" 8495 static="false" final="false" visibility="public" 8496 deprecated="not deprecated"> 8497 <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/> 8498 <doc> 8499 <![CDATA[Returns the instance methods and fields of {@code instance} that will be injected to fulfill 8500 this request. 8501 8502 @return a possibly empty set of injection points. The set has a specified iteration order. All 8503 fields are returned and then all methods. Within the fields, supertype fields are returned 8504 before subtype fields. Similarly, supertype methods are returned before subtype methods. 8505 @throws ConfigurationException if there is a malformed injection point on the class of {@code 8506 instance}, such as a field with multiple binding annotations. The exception's {@link 8507 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 8508 of the valid injection points.]]> 8509 </doc> 8510 </method> 8511 <method name="acceptVisitor" return="R" 8512 abstract="false" native="false" synchronized="false" 8513 static="false" final="false" visibility="public" 8514 deprecated="not deprecated"> 8515 <param name="visitor" type="com.google.inject.spi.ElementVisitor<R>"/> 8516 </method> 8517 <method name="applyTo" 8518 abstract="false" native="false" synchronized="false" 8519 static="false" final="false" visibility="public" 8520 deprecated="not deprecated"> 8521 <param name="binder" type="com.google.inject.Binder"/> 8522 </method> 8523 <doc> 8524 <![CDATA[A request to inject the instance fields and methods of an instance. Requests are created 8525 explicitly in a module using {@link com.google.inject.Binder#requestInjection(Object) 8526 requestInjection()} statements: 8527 <pre> 8528 requestInjection(serviceInstance);</pre> 8529 8530 @author mikeward@google.com (Mike Ward) 8531 @since 2.0]]> 8532 </doc> 8533 </class> 8534 <!-- end class com.google.inject.spi.InjectionRequest --> 8535 <!-- start interface com.google.inject.spi.InstanceBinding --> 8536 <interface name="InstanceBinding" abstract="true" 8537 static="false" final="false" visibility="public" 8538 deprecated="not deprecated"> 8539 <implements name="com.google.inject.Binding<T>"/> 8540 <implements name="com.google.inject.spi.HasDependencies"/> 8541 <method name="getInstance" return="T" 8542 abstract="false" native="false" synchronized="false" 8543 static="false" final="false" visibility="public" 8544 deprecated="not deprecated"> 8545 <doc> 8546 <![CDATA[Returns the user-supplied instance.]]> 8547 </doc> 8548 </method> 8549 <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 8550 abstract="false" native="false" synchronized="false" 8551 static="false" final="false" visibility="public" 8552 deprecated="not deprecated"> 8553 <doc> 8554 <![CDATA[Returns the field and method injection points of the instance, injected at injector-creation 8555 time only. 8556 8557 @return a possibly empty set]]> 8558 </doc> 8559 </method> 8560 <doc> 8561 <![CDATA[A binding to a single instance. The same instance is returned for every injection. 8562 8563 @author jessewilson@google.com (Jesse Wilson) 8564 @since 2.0]]> 8565 </doc> 8566 </interface> 8567 <!-- end interface com.google.inject.spi.InstanceBinding --> 8568 <!-- start class com.google.inject.spi.InterceptorBinding --> 8569 <class name="InterceptorBinding" extends="java.lang.Object" 8570 abstract="false" 8571 static="false" final="true" visibility="public" 8572 deprecated="not deprecated"> 8573 <implements name="com.google.inject.spi.Element"/> 8574 <method name="getSource" return="java.lang.Object" 8575 abstract="false" native="false" synchronized="false" 8576 static="false" final="false" visibility="public" 8577 deprecated="not deprecated"> 8578 </method> 8579 <method name="getClassMatcher" return="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>" 8580 abstract="false" native="false" synchronized="false" 8581 static="false" final="false" visibility="public" 8582 deprecated="not deprecated"> 8583 </method> 8584 <method name="getMethodMatcher" return="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>" 8585 abstract="false" native="false" synchronized="false" 8586 static="false" final="false" visibility="public" 8587 deprecated="not deprecated"> 8588 </method> 8589 <method name="getInterceptors" return="java.util.List<org.aopalliance.intercept.MethodInterceptor>" 8590 abstract="false" native="false" synchronized="false" 8591 static="false" final="false" visibility="public" 8592 deprecated="not deprecated"> 8593 </method> 8594 <method name="acceptVisitor" return="T" 8595 abstract="false" native="false" synchronized="false" 8596 static="false" final="false" visibility="public" 8597 deprecated="not deprecated"> 8598 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 8599 </method> 8600 <method name="applyTo" 8601 abstract="false" native="false" synchronized="false" 8602 static="false" final="false" visibility="public" 8603 deprecated="not deprecated"> 8604 <param name="binder" type="com.google.inject.Binder"/> 8605 </method> 8606 <doc> 8607 <![CDATA[Registration of interceptors for matching methods of matching classes. Instances are created 8608 explicitly in a module using {@link com.google.inject.Binder#bindInterceptor( 8609 Matcher, Matcher, MethodInterceptor[]) bindInterceptor()} statements: 8610 <pre> 8611 bindInterceptor(Matchers.subclassesOf(MyAction.class), 8612 Matchers.annotatedWith(Transactional.class), 8613 new MyTransactionInterceptor());</pre> 8614 8615 or from an injectable type listener using {@link TypeEncounter#bindInterceptor(Matcher, 8616 org.aopalliance.intercept.MethodInterceptor[]) TypeEncounter.bindInterceptor()}. 8617 8618 @author jessewilson@google.com (Jesse Wilson) 8619 @since 2.0]]> 8620 </doc> 8621 </class> 8622 <!-- end class com.google.inject.spi.InterceptorBinding --> 8623 <!-- start interface com.google.inject.spi.LinkedKeyBinding --> 8624 <interface name="LinkedKeyBinding" abstract="true" 8625 static="false" final="false" visibility="public" 8626 deprecated="not deprecated"> 8627 <implements name="com.google.inject.Binding<T>"/> 8628 <method name="getLinkedKey" return="com.google.inject.Key<? extends T>" 8629 abstract="false" native="false" synchronized="false" 8630 static="false" final="false" visibility="public" 8631 deprecated="not deprecated"> 8632 <doc> 8633 <![CDATA[Returns the linked key used to resolve injections. That binding can be retrieved from an 8634 injector using {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]> 8635 </doc> 8636 </method> 8637 <doc> 8638 <![CDATA[A binding to a linked key. The other key's binding is used to resolve injections. 8639 8640 @author jessewilson@google.com (Jesse Wilson) 8641 @since 2.0]]> 8642 </doc> 8643 </interface> 8644 <!-- end interface com.google.inject.spi.LinkedKeyBinding --> 8645 <!-- start class com.google.inject.spi.MembersInjectorLookup --> 8646 <class name="MembersInjectorLookup" extends="java.lang.Object" 8647 abstract="false" 8648 static="false" final="true" visibility="public" 8649 deprecated="not deprecated"> 8650 <implements name="com.google.inject.spi.Element"/> 8651 <constructor name="MembersInjectorLookup" type="java.lang.Object, com.google.inject.TypeLiteral<T>" 8652 static="false" final="false" visibility="public" 8653 deprecated="not deprecated"> 8654 </constructor> 8655 <method name="getSource" return="java.lang.Object" 8656 abstract="false" native="false" synchronized="false" 8657 static="false" final="false" visibility="public" 8658 deprecated="not deprecated"> 8659 </method> 8660 <method name="getType" return="com.google.inject.TypeLiteral<T>" 8661 abstract="false" native="false" synchronized="false" 8662 static="false" final="false" visibility="public" 8663 deprecated="not deprecated"> 8664 <doc> 8665 <![CDATA[Gets the type containing the members to be injected.]]> 8666 </doc> 8667 </method> 8668 <method name="acceptVisitor" return="T" 8669 abstract="false" native="false" synchronized="false" 8670 static="false" final="false" visibility="public" 8671 deprecated="not deprecated"> 8672 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 8673 </method> 8674 <method name="initializeDelegate" 8675 abstract="false" native="false" synchronized="false" 8676 static="false" final="false" visibility="public" 8677 deprecated="not deprecated"> 8678 <param name="delegate" type="com.google.inject.MembersInjector<T>"/> 8679 <doc> 8680 <![CDATA[Sets the actual members injector. 8681 8682 @throws IllegalStateException if the delegate is already set]]> 8683 </doc> 8684 </method> 8685 <method name="applyTo" 8686 abstract="false" native="false" synchronized="false" 8687 static="false" final="false" visibility="public" 8688 deprecated="not deprecated"> 8689 <param name="binder" type="com.google.inject.Binder"/> 8690 </method> 8691 <method name="getDelegate" return="com.google.inject.MembersInjector<T>" 8692 abstract="false" native="false" synchronized="false" 8693 static="false" final="false" visibility="public" 8694 deprecated="not deprecated"> 8695 <doc> 8696 <![CDATA[Returns the delegate members injector, or {@code null} if it has not yet been initialized. 8697 The delegate will be initialized when this element is processed, or otherwise used to create 8698 an injector.]]> 8699 </doc> 8700 </method> 8701 <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 8702 abstract="false" native="false" synchronized="false" 8703 static="false" final="false" visibility="public" 8704 deprecated="not deprecated"> 8705 <doc> 8706 <![CDATA[Returns the looked up members injector. The result is not valid until this lookup has been 8707 initialized, which usually happens when the injector is created. The members injector will 8708 throw an {@code IllegalStateException} if you try to use it beforehand.]]> 8709 </doc> 8710 </method> 8711 <doc> 8712 <![CDATA[A lookup of the members injector for a type. Lookups are created explicitly in a module using 8713 {@link com.google.inject.Binder#getMembersInjector(Class) getMembersInjector()} statements: 8714 <pre> 8715 MembersInjector<PaymentService> membersInjector 8716 = getMembersInjector(PaymentService.class);</pre> 8717 8718 @author crazybob@google.com (Bob Lee) 8719 @since 2.0]]> 8720 </doc> 8721 </class> 8722 <!-- end class com.google.inject.spi.MembersInjectorLookup --> 8723 <!-- start class com.google.inject.spi.Message --> 8724 <class name="Message" extends="java.lang.Object" 8725 abstract="false" 8726 static="false" final="true" visibility="public" 8727 deprecated="not deprecated"> 8728 <implements name="java.io.Serializable"/> 8729 <implements name="com.google.inject.spi.Element"/> 8730 <constructor name="Message" type="java.util.List<java.lang.Object>, java.lang.String, java.lang.Throwable" 8731 static="false" final="false" visibility="public" 8732 deprecated="not deprecated"> 8733 <doc> 8734 <![CDATA[@since 2.0]]> 8735 </doc> 8736 </constructor> 8737 <constructor name="Message" type="java.lang.Object, java.lang.String" 8738 static="false" final="false" visibility="public" 8739 deprecated="not deprecated"> 8740 </constructor> 8741 <constructor name="Message" type="java.lang.String" 8742 static="false" final="false" visibility="public" 8743 deprecated="not deprecated"> 8744 </constructor> 8745 <method name="getSource" return="java.lang.String" 8746 abstract="false" native="false" synchronized="false" 8747 static="false" final="false" visibility="public" 8748 deprecated="not deprecated"> 8749 </method> 8750 <method name="getSources" return="java.util.List<java.lang.Object>" 8751 abstract="false" native="false" synchronized="false" 8752 static="false" final="false" visibility="public" 8753 deprecated="not deprecated"> 8754 <doc> 8755 <![CDATA[@since 2.0]]> 8756 </doc> 8757 </method> 8758 <method name="getMessage" return="java.lang.String" 8759 abstract="false" native="false" synchronized="false" 8760 static="false" final="false" visibility="public" 8761 deprecated="not deprecated"> 8762 <doc> 8763 <![CDATA[Gets the error message text.]]> 8764 </doc> 8765 </method> 8766 <method name="acceptVisitor" return="T" 8767 abstract="false" native="false" synchronized="false" 8768 static="false" final="false" visibility="public" 8769 deprecated="not deprecated"> 8770 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 8771 <doc> 8772 <![CDATA[@since 2.0]]> 8773 </doc> 8774 </method> 8775 <method name="getCause" return="java.lang.Throwable" 8776 abstract="false" native="false" synchronized="false" 8777 static="false" final="false" visibility="public" 8778 deprecated="not deprecated"> 8779 <doc> 8780 <![CDATA[Returns the throwable that caused this message, or {@code null} if this 8781 message was not caused by a throwable. 8782 8783 @since 2.0]]> 8784 </doc> 8785 </method> 8786 <method name="toString" return="java.lang.String" 8787 abstract="false" native="false" synchronized="false" 8788 static="false" final="false" visibility="public" 8789 deprecated="not deprecated"> 8790 </method> 8791 <method name="hashCode" return="int" 8792 abstract="false" native="false" synchronized="false" 8793 static="false" final="false" visibility="public" 8794 deprecated="not deprecated"> 8795 </method> 8796 <method name="equals" return="boolean" 8797 abstract="false" native="false" synchronized="false" 8798 static="false" final="false" visibility="public" 8799 deprecated="not deprecated"> 8800 <param name="o" type="java.lang.Object"/> 8801 </method> 8802 <method name="applyTo" 8803 abstract="false" native="false" synchronized="false" 8804 static="false" final="false" visibility="public" 8805 deprecated="not deprecated"> 8806 <param name="binder" type="com.google.inject.Binder"/> 8807 <doc> 8808 <![CDATA[@since 2.0]]> 8809 </doc> 8810 </method> 8811 <doc> 8812 <![CDATA[An error message and the context in which it occured. Messages are usually created internally by 8813 Guice and its extensions. Messages can be created explicitly in a module using {@link 8814 com.google.inject.Binder#addError(Throwable) addError()} statements: 8815 <pre> 8816 try { 8817 bindPropertiesFromFile(); 8818 } catch (IOException e) { 8819 addError(e); 8820 }</pre> 8821 8822 @author crazybob@google.com (Bob Lee)]]> 8823 </doc> 8824 </class> 8825 <!-- end class com.google.inject.spi.Message --> 8826 <!-- start interface com.google.inject.spi.PrivateElements --> 8827 <interface name="PrivateElements" abstract="true" 8828 static="false" final="false" visibility="public" 8829 deprecated="not deprecated"> 8830 <implements name="com.google.inject.spi.Element"/> 8831 <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 8832 abstract="false" native="false" synchronized="false" 8833 static="false" final="false" visibility="public" 8834 deprecated="not deprecated"> 8835 <doc> 8836 <![CDATA[Returns the configuration information in this private environment.]]> 8837 </doc> 8838 </method> 8839 <method name="getInjector" return="com.google.inject.Injector" 8840 abstract="false" native="false" synchronized="false" 8841 static="false" final="false" visibility="public" 8842 deprecated="not deprecated"> 8843 <doc> 8844 <![CDATA[Returns the child injector that hosts these private elements, or null if the elements haven't 8845 been used to create an injector.]]> 8846 </doc> 8847 </method> 8848 <method name="getExposedKeys" return="java.util.Set<com.google.inject.Key<?>>" 8849 abstract="false" native="false" synchronized="false" 8850 static="false" final="false" visibility="public" 8851 deprecated="not deprecated"> 8852 <doc> 8853 <![CDATA[Returns the unique exposed keys for these private elements.]]> 8854 </doc> 8855 </method> 8856 <method name="getExposedSource" return="java.lang.Object" 8857 abstract="false" native="false" synchronized="false" 8858 static="false" final="false" visibility="public" 8859 deprecated="not deprecated"> 8860 <param name="key" type="com.google.inject.Key<?>"/> 8861 <doc> 8862 <![CDATA[Returns an arbitrary object containing information about the "place" where this key was 8863 exposed. Used by Guice in the production of descriptive error messages. 8864 8865 <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good 8866 example. Tools should simply call {@code toString()} on the source object if the type is 8867 unfamiliar. 8868 8869 @param key one of the keys exposed by this module.]]> 8870 </doc> 8871 </method> 8872 <doc> 8873 <![CDATA[A private collection of elements that are hidden from the enclosing injector or module by 8874 default. See {@link com.google.inject.PrivateModule PrivateModule} for details. 8875 8876 @author jessewilson@google.com (Jesse Wilson) 8877 @since 2.0]]> 8878 </doc> 8879 </interface> 8880 <!-- end interface com.google.inject.spi.PrivateElements --> 8881 <!-- start interface com.google.inject.spi.ProviderBinding --> 8882 <interface name="ProviderBinding" abstract="true" 8883 static="false" final="false" visibility="public" 8884 deprecated="not deprecated"> 8885 <implements name="com.google.inject.Binding<T>"/> 8886 <method name="getProvidedKey" return="com.google.inject.Key<?>" 8887 abstract="false" native="false" synchronized="false" 8888 static="false" final="false" visibility="public" 8889 deprecated="not deprecated"> 8890 <doc> 8891 <![CDATA[Returns the key whose binding is used to {@link Provider#get provide instances}. That binding 8892 can be retrieved from an injector using {@link com.google.inject.Injector#getBinding(Key) 8893 Injector.getBinding(providedKey)}]]> 8894 </doc> 8895 </method> 8896 <doc> 8897 <![CDATA[A binding to a {@link Provider} that delegates to the binding for the provided type. This binding 8898 is used whenever a {@code Provider<T>} is injected (as opposed to injecting {@code T} directly). 8899 8900 @author jessewilson@google.com (Jesse Wilson) 8901 @since 2.0]]> 8902 </doc> 8903 </interface> 8904 <!-- end interface com.google.inject.spi.ProviderBinding --> 8905 <!-- start interface com.google.inject.spi.ProviderInstanceBinding --> 8906 <interface name="ProviderInstanceBinding" abstract="true" 8907 static="false" final="false" visibility="public" 8908 deprecated="not deprecated"> 8909 <implements name="com.google.inject.Binding<T>"/> 8910 <implements name="com.google.inject.spi.HasDependencies"/> 8911 <method name="getProviderInstance" return="com.google.inject.Provider<? extends T>" 8912 abstract="false" native="false" synchronized="false" 8913 static="false" final="false" visibility="public" 8914 deprecated="not deprecated"> 8915 <doc> 8916 <![CDATA[Returns the user-supplied, unscoped provider.]]> 8917 </doc> 8918 </method> 8919 <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 8920 abstract="false" native="false" synchronized="false" 8921 static="false" final="false" visibility="public" 8922 deprecated="not deprecated"> 8923 <doc> 8924 <![CDATA[Returns the field and method injection points of the provider, injected at injector-creation 8925 time only. 8926 8927 @return a possibly empty set]]> 8928 </doc> 8929 </method> 8930 <doc> 8931 <![CDATA[A binding to a provider instance. The provider's {@code get} method is invoked to resolve 8932 injections. 8933 8934 @author jessewilson@google.com (Jesse Wilson) 8935 @since 2.0]]> 8936 </doc> 8937 </interface> 8938 <!-- end interface com.google.inject.spi.ProviderInstanceBinding --> 8939 <!-- start interface com.google.inject.spi.ProviderKeyBinding --> 8940 <interface name="ProviderKeyBinding" abstract="true" 8941 static="false" final="false" visibility="public" 8942 deprecated="not deprecated"> 8943 <implements name="com.google.inject.Binding<T>"/> 8944 <method name="getProviderKey" return="com.google.inject.Key<? extends javax.inject.Provider<? extends T>>" 8945 abstract="false" native="false" synchronized="false" 8946 static="false" final="false" visibility="public" 8947 deprecated="not deprecated"> 8948 <doc> 8949 <![CDATA[Returns the key used to resolve the provider's binding. That binding can be retrieved from an 8950 injector using {@link com.google.inject.Injector#getBinding(Key) 8951 Injector.getBinding(providerKey)}]]> 8952 </doc> 8953 </method> 8954 <doc> 8955 <![CDATA[A binding to a provider key. To resolve injections, the provider key is first resolved, then that 8956 provider's {@code get} method is invoked. 8957 8958 @author jessewilson@google.com (Jesse Wilson) 8959 @since 2.0]]> 8960 </doc> 8961 </interface> 8962 <!-- end interface com.google.inject.spi.ProviderKeyBinding --> 8963 <!-- start class com.google.inject.spi.ProviderLookup --> 8964 <class name="ProviderLookup" extends="java.lang.Object" 8965 abstract="false" 8966 static="false" final="true" visibility="public" 8967 deprecated="not deprecated"> 8968 <implements name="com.google.inject.spi.Element"/> 8969 <constructor name="ProviderLookup" type="java.lang.Object, com.google.inject.Key<T>" 8970 static="false" final="false" visibility="public" 8971 deprecated="not deprecated"> 8972 </constructor> 8973 <method name="getSource" return="java.lang.Object" 8974 abstract="false" native="false" synchronized="false" 8975 static="false" final="false" visibility="public" 8976 deprecated="not deprecated"> 8977 </method> 8978 <method name="getKey" return="com.google.inject.Key<T>" 8979 abstract="false" native="false" synchronized="false" 8980 static="false" final="false" visibility="public" 8981 deprecated="not deprecated"> 8982 </method> 8983 <method name="acceptVisitor" return="T" 8984 abstract="false" native="false" synchronized="false" 8985 static="false" final="false" visibility="public" 8986 deprecated="not deprecated"> 8987 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 8988 </method> 8989 <method name="initializeDelegate" 8990 abstract="false" native="false" synchronized="false" 8991 static="false" final="false" visibility="public" 8992 deprecated="not deprecated"> 8993 <param name="delegate" type="com.google.inject.Provider<T>"/> 8994 <doc> 8995 <![CDATA[Sets the actual provider. 8996 8997 @throws IllegalStateException if the delegate is already set]]> 8998 </doc> 8999 </method> 9000 <method name="applyTo" 9001 abstract="false" native="false" synchronized="false" 9002 static="false" final="false" visibility="public" 9003 deprecated="not deprecated"> 9004 <param name="binder" type="com.google.inject.Binder"/> 9005 </method> 9006 <method name="getDelegate" return="com.google.inject.Provider<T>" 9007 abstract="false" native="false" synchronized="false" 9008 static="false" final="false" visibility="public" 9009 deprecated="not deprecated"> 9010 <doc> 9011 <![CDATA[Returns the delegate provider, or {@code null} if it has not yet been initialized. The delegate 9012 will be initialized when this element is processed, or otherwise used to create an injector.]]> 9013 </doc> 9014 </method> 9015 <method name="getProvider" return="com.google.inject.Provider<T>" 9016 abstract="false" native="false" synchronized="false" 9017 static="false" final="false" visibility="public" 9018 deprecated="not deprecated"> 9019 <doc> 9020 <![CDATA[Returns the looked up provider. The result is not valid until this lookup has been initialized, 9021 which usually happens when the injector is created. The provider will throw an {@code 9022 IllegalStateException} if you try to use it beforehand.]]> 9023 </doc> 9024 </method> 9025 <doc> 9026 <![CDATA[A lookup of the provider for a type. Lookups are created explicitly in a module using 9027 {@link com.google.inject.Binder#getProvider(Class) getProvider()} statements: 9028 <pre> 9029 Provider<PaymentService> paymentServiceProvider 9030 = getProvider(PaymentService.class);</pre> 9031 9032 @author jessewilson@google.com (Jesse Wilson) 9033 @since 2.0]]> 9034 </doc> 9035 </class> 9036 <!-- end class com.google.inject.spi.ProviderLookup --> 9037 <!-- start interface com.google.inject.spi.ProviderWithDependencies --> 9038 <interface name="ProviderWithDependencies" abstract="true" 9039 static="false" final="false" visibility="public" 9040 deprecated="not deprecated"> 9041 <implements name="com.google.inject.Provider<T>"/> 9042 <implements name="com.google.inject.spi.HasDependencies"/> 9043 <doc> 9044 <![CDATA[A provider with dependencies on other injected types. If a {@link Provider} has dependencies that 9045 aren't specified in injections, this interface should be used to expose all dependencies. 9046 9047 @since 2.0]]> 9048 </doc> 9049 </interface> 9050 <!-- end interface com.google.inject.spi.ProviderWithDependencies --> 9051 <!-- start interface com.google.inject.spi.ProviderWithExtensionVisitor --> 9052 <interface name="ProviderWithExtensionVisitor" abstract="true" 9053 static="false" final="false" visibility="public" 9054 deprecated="not deprecated"> 9055 <implements name="com.google.inject.Provider<T>"/> 9056 <method name="acceptExtensionVisitor" return="V" 9057 abstract="false" native="false" synchronized="false" 9058 static="false" final="false" visibility="public" 9059 deprecated="not deprecated"> 9060 <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor<B, V>"/> 9061 <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding<? extends B>"/> 9062 <doc> 9063 <![CDATA[Instructs the extension determine if the visitor is an instance of a custom 9064 extension visitor, and if so, visit it using that method. If the visitor is 9065 not an instance of the custom extension visitor, this method <b>MUST</b> 9066 call visitor.visit(binding). 9067 <p> 9068 Due to issues with generics, the type parameters of this method do not 9069 relate to the type of the provider. In practice, the 'B' type will always 9070 be a supertype of 'T'.]]> 9071 </doc> 9072 </method> 9073 <doc> 9074 <![CDATA[A Provider that is part of an extension which supports a custom 9075 BindingTargetVisitor. 9076 <p> 9077 When an extension binds a provider instance, the provider can implement this 9078 interface to allow users using the 9079 {@link Binding#acceptTargetVisitor(BindingTargetVisitor)} method to visit a 9080 custom visitor designed for that extension. A typical implementation within 9081 the extension would look like 9082 <pre> 9083 <V, B> V acceptExtensionVisitor(BindingTargetVisitor<B, V> visitor, ProviderInstanceBinding<? extends B> binding) { 9084 if(visitor instanceof MyCustomExtensionVisitor) { 9085 return ((MyCustomExtensionVisitor<B, V>)visitor).visitCustomExtension(customProperties, binding); 9086 } else { 9087 return visitor.visit(binding); 9088 } 9089 }</pre> 9090 'MyCustomExtensionVisitor' in the example above would be an interface the 9091 extension provides that users can implement in order to be notified of custom 9092 extension information. These visitor interfaces must extend from 9093 BindingTargetVisitor. 9094 9095 @since 3.0 9096 @author sameb@google.com (Sam Berlin)]]> 9097 </doc> 9098 </interface> 9099 <!-- end interface com.google.inject.spi.ProviderWithExtensionVisitor --> 9100 <!-- start class com.google.inject.spi.RequireExplicitBindingsOption --> 9101 <class name="RequireExplicitBindingsOption" extends="java.lang.Object" 9102 abstract="false" 9103 static="false" final="true" visibility="public" 9104 deprecated="not deprecated"> 9105 <implements name="com.google.inject.spi.Element"/> 9106 <method name="getSource" return="java.lang.Object" 9107 abstract="false" native="false" synchronized="false" 9108 static="false" final="false" visibility="public" 9109 deprecated="not deprecated"> 9110 </method> 9111 <method name="applyTo" 9112 abstract="false" native="false" synchronized="false" 9113 static="false" final="false" visibility="public" 9114 deprecated="not deprecated"> 9115 <param name="binder" type="com.google.inject.Binder"/> 9116 </method> 9117 <method name="acceptVisitor" return="T" 9118 abstract="false" native="false" synchronized="false" 9119 static="false" final="false" visibility="public" 9120 deprecated="not deprecated"> 9121 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9122 </method> 9123 <doc> 9124 <![CDATA[A request to require explicit bindings. 9125 9126 @author sameb@google.com (Sam Berlin) 9127 @since 3.0]]> 9128 </doc> 9129 </class> 9130 <!-- end class com.google.inject.spi.RequireExplicitBindingsOption --> 9131 <!-- start class com.google.inject.spi.ScopeBinding --> 9132 <class name="ScopeBinding" extends="java.lang.Object" 9133 abstract="false" 9134 static="false" final="true" visibility="public" 9135 deprecated="not deprecated"> 9136 <implements name="com.google.inject.spi.Element"/> 9137 <method name="getSource" return="java.lang.Object" 9138 abstract="false" native="false" synchronized="false" 9139 static="false" final="false" visibility="public" 9140 deprecated="not deprecated"> 9141 </method> 9142 <method name="getAnnotationType" return="java.lang.Class<? extends java.lang.annotation.Annotation>" 9143 abstract="false" native="false" synchronized="false" 9144 static="false" final="false" visibility="public" 9145 deprecated="not deprecated"> 9146 </method> 9147 <method name="getScope" return="com.google.inject.Scope" 9148 abstract="false" native="false" synchronized="false" 9149 static="false" final="false" visibility="public" 9150 deprecated="not deprecated"> 9151 </method> 9152 <method name="acceptVisitor" return="T" 9153 abstract="false" native="false" synchronized="false" 9154 static="false" final="false" visibility="public" 9155 deprecated="not deprecated"> 9156 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9157 </method> 9158 <method name="applyTo" 9159 abstract="false" native="false" synchronized="false" 9160 static="false" final="false" visibility="public" 9161 deprecated="not deprecated"> 9162 <param name="binder" type="com.google.inject.Binder"/> 9163 </method> 9164 <doc> 9165 <![CDATA[Registration of a scope annotation with the scope that implements it. Instances are created 9166 explicitly in a module using {@link com.google.inject.Binder#bindScope(Class, Scope) bindScope()} 9167 statements: 9168 <pre> 9169 Scope recordScope = new RecordScope(); 9170 bindScope(RecordScoped.class, new RecordScope());</pre> 9171 9172 @author jessewilson@google.com (Jesse Wilson) 9173 @since 2.0]]> 9174 </doc> 9175 </class> 9176 <!-- end class com.google.inject.spi.ScopeBinding --> 9177 <!-- start class com.google.inject.spi.StaticInjectionRequest --> 9178 <class name="StaticInjectionRequest" extends="java.lang.Object" 9179 abstract="false" 9180 static="false" final="true" visibility="public" 9181 deprecated="not deprecated"> 9182 <implements name="com.google.inject.spi.Element"/> 9183 <method name="getSource" return="java.lang.Object" 9184 abstract="false" native="false" synchronized="false" 9185 static="false" final="false" visibility="public" 9186 deprecated="not deprecated"> 9187 </method> 9188 <method name="getType" return="java.lang.Class<?>" 9189 abstract="false" native="false" synchronized="false" 9190 static="false" final="false" visibility="public" 9191 deprecated="not deprecated"> 9192 </method> 9193 <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9194 abstract="false" native="false" synchronized="false" 9195 static="false" final="false" visibility="public" 9196 deprecated="not deprecated"> 9197 <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/> 9198 <doc> 9199 <![CDATA[Returns the static methods and fields of {@code type} that will be injected to fulfill this 9200 request. 9201 9202 @return a possibly empty set of injection points. The set has a specified iteration order. All 9203 fields are returned and then all methods. Within the fields, supertype fields are returned 9204 before subtype fields. Similarly, supertype methods are returned before subtype methods. 9205 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 9206 a field with multiple binding annotations. The exception's {@link 9207 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 9208 of the valid injection points.]]> 9209 </doc> 9210 </method> 9211 <method name="applyTo" 9212 abstract="false" native="false" synchronized="false" 9213 static="false" final="false" visibility="public" 9214 deprecated="not deprecated"> 9215 <param name="binder" type="com.google.inject.Binder"/> 9216 </method> 9217 <method name="acceptVisitor" return="T" 9218 abstract="false" native="false" synchronized="false" 9219 static="false" final="false" visibility="public" 9220 deprecated="not deprecated"> 9221 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9222 </method> 9223 <doc> 9224 <![CDATA[A request to inject the static fields and methods of a type. Requests are created 9225 explicitly in a module using {@link com.google.inject.Binder#requestStaticInjection(Class[]) 9226 requestStaticInjection()} statements: 9227 <pre> 9228 requestStaticInjection(MyLegacyService.class);</pre> 9229 9230 @author jessewilson@google.com (Jesse Wilson) 9231 @since 2.0]]> 9232 </doc> 9233 </class> 9234 <!-- end class com.google.inject.spi.StaticInjectionRequest --> 9235 <!-- start class com.google.inject.spi.Toolable --> 9236 <class name="Toolable" abstract="true" 9237 static="false" final="false" visibility="public" 9238 deprecated="not deprecated"> 9239 <implements name="java.lang.annotation.Annotation"/> 9240 <doc> 9241 <![CDATA[Instructs an {@link Injector} running in {@link Stage#TOOL} that a method should be injected. 9242 This is typically useful for for extensions to Guice that perform additional validation in an 9243 injected method or field. This only applies to objects that are already constructed when 9244 bindings are created (ie., something bound using {@link 9245 com.google.inject.binder.LinkedBindingBuilder#toProvider toProvider}, {@link 9246 com.google.inject.binder.LinkedBindingBuilder#toInstance toInstance}, or {@link 9247 com.google.inject.Binder#requestInjection requestInjection}. 9248 9249 @author sberlin@gmail.com (Sam Berlin) 9250 @since 3.0]]> 9251 </doc> 9252 </class> 9253 <!-- end class com.google.inject.spi.Toolable --> 9254 <!-- start interface com.google.inject.spi.TypeConverter --> 9255 <interface name="TypeConverter" abstract="true" 9256 static="false" final="false" visibility="public" 9257 deprecated="not deprecated"> 9258 <method name="convert" return="java.lang.Object" 9259 abstract="false" native="false" synchronized="false" 9260 static="false" final="false" visibility="public" 9261 deprecated="not deprecated"> 9262 <param name="value" type="java.lang.String"/> 9263 <param name="toType" type="com.google.inject.TypeLiteral<?>"/> 9264 <doc> 9265 <![CDATA[Converts a string value. Throws an exception if a conversion error occurs.]]> 9266 </doc> 9267 </method> 9268 <doc> 9269 <![CDATA[Converts constant string values to a different type. 9270 9271 @author crazybob@google.com (Bob Lee) 9272 @since 2.0]]> 9273 </doc> 9274 </interface> 9275 <!-- end interface com.google.inject.spi.TypeConverter --> 9276 <!-- start class com.google.inject.spi.TypeConverterBinding --> 9277 <class name="TypeConverterBinding" extends="java.lang.Object" 9278 abstract="false" 9279 static="false" final="true" visibility="public" 9280 deprecated="not deprecated"> 9281 <implements name="com.google.inject.spi.Element"/> 9282 <constructor name="TypeConverterBinding" type="java.lang.Object, com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>, com.google.inject.spi.TypeConverter" 9283 static="false" final="false" visibility="public" 9284 deprecated="not deprecated"> 9285 <doc> 9286 <![CDATA[@since 3.0]]> 9287 </doc> 9288 </constructor> 9289 <method name="getSource" return="java.lang.Object" 9290 abstract="false" native="false" synchronized="false" 9291 static="false" final="false" visibility="public" 9292 deprecated="not deprecated"> 9293 </method> 9294 <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>" 9295 abstract="false" native="false" synchronized="false" 9296 static="false" final="false" visibility="public" 9297 deprecated="not deprecated"> 9298 </method> 9299 <method name="getTypeConverter" return="com.google.inject.spi.TypeConverter" 9300 abstract="false" native="false" synchronized="false" 9301 static="false" final="false" visibility="public" 9302 deprecated="not deprecated"> 9303 </method> 9304 <method name="acceptVisitor" return="T" 9305 abstract="false" native="false" synchronized="false" 9306 static="false" final="false" visibility="public" 9307 deprecated="not deprecated"> 9308 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9309 </method> 9310 <method name="applyTo" 9311 abstract="false" native="false" synchronized="false" 9312 static="false" final="false" visibility="public" 9313 deprecated="not deprecated"> 9314 <param name="binder" type="com.google.inject.Binder"/> 9315 </method> 9316 <method name="toString" return="java.lang.String" 9317 abstract="false" native="false" synchronized="false" 9318 static="false" final="false" visibility="public" 9319 deprecated="not deprecated"> 9320 </method> 9321 <doc> 9322 <![CDATA[Registration of type converters for matching target types. Instances are created 9323 explicitly in a module using {@link com.google.inject.Binder#convertToTypes(Matcher, 9324 TypeConverter) convertToTypes()} statements: 9325 <pre> 9326 convertToTypes(Matchers.only(TypeLiteral.get(DateTime.class)), new DateTimeConverter());</pre> 9327 9328 @author jessewilson@google.com (Jesse Wilson) 9329 @since 2.0]]> 9330 </doc> 9331 </class> 9332 <!-- end class com.google.inject.spi.TypeConverterBinding --> 9333 <!-- start interface com.google.inject.spi.TypeEncounter --> 9334 <interface name="TypeEncounter" abstract="true" 9335 static="false" final="false" visibility="public" 9336 deprecated="not deprecated"> 9337 <method name="addError" 9338 abstract="false" native="false" synchronized="false" 9339 static="false" final="false" visibility="public" 9340 deprecated="not deprecated"> 9341 <param name="message" type="java.lang.String"/> 9342 <param name="arguments" type="java.lang.Object[]"/> 9343 <doc> 9344 <![CDATA[Records an error message for type {@code I} which will be presented to the user at a later 9345 time. Unlike throwing an exception, this enable us to continue configuring the Injector and 9346 discover more errors. Uses {@link String#format(String, Object[])} to insert the arguments 9347 into the message.]]> 9348 </doc> 9349 </method> 9350 <method name="addError" 9351 abstract="false" native="false" synchronized="false" 9352 static="false" final="false" visibility="public" 9353 deprecated="not deprecated"> 9354 <param name="t" type="java.lang.Throwable"/> 9355 <doc> 9356 <![CDATA[Records an exception for type {@code I}, the full details of which will be logged, and the 9357 message of which will be presented to the user at a later time. If your type listener calls 9358 something that you worry may fail, you should catch the exception and pass it to this method.]]> 9359 </doc> 9360 </method> 9361 <method name="addError" 9362 abstract="false" native="false" synchronized="false" 9363 static="false" final="false" visibility="public" 9364 deprecated="not deprecated"> 9365 <param name="message" type="com.google.inject.spi.Message"/> 9366 <doc> 9367 <![CDATA[Records an error message to be presented to the user at a later time.]]> 9368 </doc> 9369 </method> 9370 <method name="getProvider" return="com.google.inject.Provider<T>" 9371 abstract="false" native="false" synchronized="false" 9372 static="false" final="false" visibility="public" 9373 deprecated="not deprecated"> 9374 <param name="key" type="com.google.inject.Key<T>"/> 9375 <doc> 9376 <![CDATA[Returns the provider used to obtain instances for the given injection key. The returned 9377 provider will not be valid until the injector has been created. The provider will throw an 9378 {@code IllegalStateException} if you try to use it beforehand.]]> 9379 </doc> 9380 </method> 9381 <method name="getProvider" return="com.google.inject.Provider<T>" 9382 abstract="false" native="false" synchronized="false" 9383 static="false" final="false" visibility="public" 9384 deprecated="not deprecated"> 9385 <param name="type" type="java.lang.Class<T>"/> 9386 <doc> 9387 <![CDATA[Returns the provider used to obtain instances for the given injection type. The returned 9388 provider will not be valid until the injetor has been created. The provider will throw an 9389 {@code IllegalStateException} if you try to use it beforehand.]]> 9390 </doc> 9391 </method> 9392 <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 9393 abstract="false" native="false" synchronized="false" 9394 static="false" final="false" visibility="public" 9395 deprecated="not deprecated"> 9396 <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 9397 <doc> 9398 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 9399 of the given type {@code T}. The returned members injector will not be valid until the main 9400 injector has been created. The members injector will throw an {@code IllegalStateException} 9401 if you try to use it beforehand. 9402 9403 @param typeLiteral type to get members injector for]]> 9404 </doc> 9405 </method> 9406 <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 9407 abstract="false" native="false" synchronized="false" 9408 static="false" final="false" visibility="public" 9409 deprecated="not deprecated"> 9410 <param name="type" type="java.lang.Class<T>"/> 9411 <doc> 9412 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 9413 of the given type {@code T}. The returned members injector will not be valid until the main 9414 injector has been created. The members injector will throw an {@code IllegalStateException} 9415 if you try to use it beforehand. 9416 9417 @param type type to get members injector for]]> 9418 </doc> 9419 </method> 9420 <method name="register" 9421 abstract="false" native="false" synchronized="false" 9422 static="false" final="false" visibility="public" 9423 deprecated="not deprecated"> 9424 <param name="membersInjector" type="com.google.inject.MembersInjector<? super I>"/> 9425 <doc> 9426 <![CDATA[Registers a members injector for type {@code I}. Guice will use the members injector after its 9427 performed its own injections on an instance of {@code I}.]]> 9428 </doc> 9429 </method> 9430 <method name="register" 9431 abstract="false" native="false" synchronized="false" 9432 static="false" final="false" visibility="public" 9433 deprecated="not deprecated"> 9434 <param name="listener" type="com.google.inject.spi.InjectionListener<? super I>"/> 9435 <doc> 9436 <![CDATA[Registers an injection listener for type {@code I}. Guice will notify the listener after all 9437 injections have been performed on an instance of {@code I}.]]> 9438 </doc> 9439 </method> 9440 <method name="bindInterceptor" 9441 abstract="false" native="false" synchronized="false" 9442 static="false" final="false" visibility="public" 9443 deprecated="not deprecated"> 9444 <param name="methodMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>"/> 9445 <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/> 9446 <doc> 9447 <![CDATA[Binds method interceptor[s] to methods matched in type {@code I} and its supertypes. A 9448 method is eligible for interception if: 9449 9450 <ul> 9451 <li>Guice created the instance the method is on</li> 9452 <li>Neither the enclosing type nor the method is final</li> 9453 <li>And the method is package-private or more accessible</li> 9454 </ul> 9455 9456 @param methodMatcher matches methods the interceptor should apply to. For 9457 example: {@code annotatedWith(Transactional.class)}. 9458 @param interceptors to bind]]> 9459 </doc> 9460 </method> 9461 <doc> 9462 <![CDATA[Context of an injectable type encounter. Enables reporting errors, registering injection 9463 listeners and binding method interceptors for injectable type {@code I}. It is an error to use 9464 an encounter after the {@link TypeListener#hear(TypeLiteral, TypeEncounter) hear()} method has 9465 returned. 9466 9467 @param <I> the injectable type encountered 9468 @since 2.0]]> 9469 </doc> 9470 </interface> 9471 <!-- end interface com.google.inject.spi.TypeEncounter --> 9472 <!-- start interface com.google.inject.spi.TypeListener --> 9473 <interface name="TypeListener" abstract="true" 9474 static="false" final="false" visibility="public" 9475 deprecated="not deprecated"> 9476 <method name="hear" 9477 abstract="false" native="false" synchronized="false" 9478 static="false" final="false" visibility="public" 9479 deprecated="not deprecated"> 9480 <param name="type" type="com.google.inject.TypeLiteral<I>"/> 9481 <param name="encounter" type="com.google.inject.spi.TypeEncounter<I>"/> 9482 <doc> 9483 <![CDATA[Invoked when Guice encounters a new type eligible for constructor or members injection. 9484 Called during injector creation (or afterwords if Guice encounters a type at run time and 9485 creates a JIT binding). 9486 9487 @param type encountered by Guice 9488 @param encounter context of this encounter, enables reporting errors, registering injection 9489 listeners and binding method interceptors for {@code type}. 9490 9491 @param <I> the injectable type]]> 9492 </doc> 9493 </method> 9494 <doc> 9495 <![CDATA[Listens for Guice to encounter injectable types. If a given type has its constructor injected in 9496 one situation but only its methods and fields injected in another, Guice will notify this 9497 listener once. 9498 9499 <p>Useful for extra type checking, {@linkplain TypeEncounter#register(InjectionListener) 9500 registering injection listeners}, and {@linkplain TypeEncounter#bindInterceptor( 9501 com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[]) 9502 binding method interceptors}. 9503 9504 @since 2.0]]> 9505 </doc> 9506 </interface> 9507 <!-- end interface com.google.inject.spi.TypeListener --> 9508 <!-- start class com.google.inject.spi.TypeListenerBinding --> 9509 <class name="TypeListenerBinding" extends="java.lang.Object" 9510 abstract="false" 9511 static="false" final="true" visibility="public" 9512 deprecated="not deprecated"> 9513 <implements name="com.google.inject.spi.Element"/> 9514 <method name="getListener" return="com.google.inject.spi.TypeListener" 9515 abstract="false" native="false" synchronized="false" 9516 static="false" final="false" visibility="public" 9517 deprecated="not deprecated"> 9518 <doc> 9519 <![CDATA[Returns the registered listener.]]> 9520 </doc> 9521 </method> 9522 <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>" 9523 abstract="false" native="false" synchronized="false" 9524 static="false" final="false" visibility="public" 9525 deprecated="not deprecated"> 9526 <doc> 9527 <![CDATA[Returns the type matcher which chooses which types the listener should be notified of.]]> 9528 </doc> 9529 </method> 9530 <method name="getSource" return="java.lang.Object" 9531 abstract="false" native="false" synchronized="false" 9532 static="false" final="false" visibility="public" 9533 deprecated="not deprecated"> 9534 </method> 9535 <method name="acceptVisitor" return="T" 9536 abstract="false" native="false" synchronized="false" 9537 static="false" final="false" visibility="public" 9538 deprecated="not deprecated"> 9539 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9540 </method> 9541 <method name="applyTo" 9542 abstract="false" native="false" synchronized="false" 9543 static="false" final="false" visibility="public" 9544 deprecated="not deprecated"> 9545 <param name="binder" type="com.google.inject.Binder"/> 9546 </method> 9547 <doc> 9548 <![CDATA[Binds types (picked using a Matcher) to an type listener. Registrations are created explicitly in 9549 a module using {@link com.google.inject.Binder#bindListener(Matcher, TypeListener)} statements: 9550 9551 <pre> 9552 register(only(new TypeLiteral<PaymentService<CreditCard>>() {}), listener);</pre> 9553 9554 @author jessewilson@google.com (Jesse Wilson) 9555 @since 2.0]]> 9556 </doc> 9557 </class> 9558 <!-- end class com.google.inject.spi.TypeListenerBinding --> 9559 <!-- start interface com.google.inject.spi.UntargettedBinding --> 9560 <interface name="UntargettedBinding" abstract="true" 9561 static="false" final="false" visibility="public" 9562 deprecated="not deprecated"> 9563 <implements name="com.google.inject.Binding<T>"/> 9564 <doc> 9565 <![CDATA[An untargetted binding. This binding indicates that the injector should use its implicit binding 9566 strategies to resolve injections. 9567 9568 @author jessewilson@google.com (Jesse Wilson) 9569 @since 2.0]]> 9570 </doc> 9571 </interface> 9572 <!-- end interface com.google.inject.spi.UntargettedBinding --> 9573</package> 9574<package name="com.google.inject.spring"> 9575 <!-- start class com.google.inject.spring.SpringIntegration --> 9576 <class name="SpringIntegration" extends="java.lang.Object" 9577 abstract="false" 9578 static="false" final="false" visibility="public" 9579 deprecated="not deprecated"> 9580 <method name="fromSpring" return="com.google.inject.Provider<T>" 9581 abstract="false" native="false" synchronized="false" 9582 static="true" final="false" visibility="public" 9583 deprecated="not deprecated"> 9584 <param name="type" type="java.lang.Class<T>"/> 9585 <param name="name" type="java.lang.String"/> 9586 <doc> 9587 <![CDATA[Creates a provider which looks up objects from Spring using the given name. 9588 Expects a binding to {@link 9589 org.springframework.beans.factory.BeanFactory}. Example usage: 9590 9591 <pre> 9592 bind(DataSource.class) 9593 .toProvider(fromSpring(DataSource.class, "dataSource")); 9594 </pre>]]> 9595 </doc> 9596 </method> 9597 <method name="bindAll" 9598 abstract="false" native="false" synchronized="false" 9599 static="true" final="false" visibility="public" 9600 deprecated="not deprecated"> 9601 <param name="binder" type="com.google.inject.Binder"/> 9602 <param name="beanFactory" type="ListableBeanFactory"/> 9603 <doc> 9604 <![CDATA[Binds all Spring beans from the given factory by name. For a Spring bean 9605 named "foo", this method creates a binding to the bean's type and 9606 {@code @Named("foo")}. 9607 9608 @see com.google.inject.name.Named 9609 @see com.google.inject.name.Names#named(String)]]> 9610 </doc> 9611 </method> 9612 <doc> 9613 <![CDATA[Integrates Guice with Spring. 9614 9615 @author crazybob@google.com (Bob Lee)]]> 9616 </doc> 9617 </class> 9618 <!-- end class com.google.inject.spring.SpringIntegration --> 9619</package> 9620<package name="com.google.inject.struts2"> 9621 <!-- start class com.google.inject.struts2.GuiceObjectFactory --> 9622 <class name="GuiceObjectFactory" extends="ObjectFactory" 9623 abstract="false" 9624 static="false" final="false" visibility="public" 9625 deprecated="Use {@link com.google.inject.servlet.Struts2Factory} instead."> 9626 <constructor name="GuiceObjectFactory" 9627 static="false" final="false" visibility="public" 9628 deprecated="not deprecated"> 9629 </constructor> 9630 <method name="isNoArgConstructorRequired" return="boolean" 9631 abstract="false" native="false" synchronized="false" 9632 static="false" final="false" visibility="public" 9633 deprecated="not deprecated"> 9634 </method> 9635 <method name="getClassInstance" return="java.lang.Class" 9636 abstract="false" native="false" synchronized="false" 9637 static="false" final="false" visibility="public" 9638 deprecated="not deprecated"> 9639 <param name="name" type="java.lang.String"/> 9640 <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/> 9641 </method> 9642 <method name="buildBean" return="java.lang.Object" 9643 abstract="false" native="false" synchronized="false" 9644 static="false" final="false" visibility="public" 9645 deprecated="not deprecated"> 9646 <param name="clazz" type="java.lang.Class"/> 9647 <param name="extraContext" type="java.util.Map"/> 9648 </method> 9649 <method name="buildInterceptor" return="Interceptor" 9650 abstract="false" native="false" synchronized="false" 9651 static="false" final="false" visibility="public" 9652 deprecated="not deprecated"> 9653 <param name="interceptorConfig" type="InterceptorConfig"/> 9654 <param name="interceptorRefParams" type="java.util.Map"/> 9655 <exception name="ConfigurationException" type="ConfigurationException"/> 9656 </method> 9657 <doc> 9658 <![CDATA[@deprecated Use {@link com.google.inject.servlet.Struts2Factory} instead.]]> 9659 </doc> 9660 </class> 9661 <!-- end class com.google.inject.struts2.GuiceObjectFactory --> 9662 <!-- start class com.google.inject.struts2.Struts2Factory --> 9663 <class name="Struts2Factory" extends="ObjectFactory" 9664 abstract="false" 9665 static="false" final="false" visibility="public" 9666 deprecated="not deprecated"> 9667 <constructor name="Struts2Factory" 9668 static="false" final="false" visibility="public" 9669 deprecated="not deprecated"> 9670 </constructor> 9671 <method name="isNoArgConstructorRequired" return="boolean" 9672 abstract="false" native="false" synchronized="false" 9673 static="false" final="false" visibility="public" 9674 deprecated="not deprecated"> 9675 </method> 9676 <method name="getClassInstance" return="java.lang.Class<?>" 9677 abstract="false" native="false" synchronized="false" 9678 static="false" final="false" visibility="public" 9679 deprecated="not deprecated"> 9680 <param name="name" type="java.lang.String"/> 9681 <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/> 9682 </method> 9683 <method name="buildBean" return="java.lang.Object" 9684 abstract="false" native="false" synchronized="false" 9685 static="false" final="false" visibility="public" 9686 deprecated="not deprecated"> 9687 <param name="clazz" type="java.lang.Class"/> 9688 <param name="extraContext" type="java.util.Map<java.lang.String, java.lang.Object>"/> 9689 </method> 9690 <method name="buildInterceptor" return="Interceptor" 9691 abstract="false" native="false" synchronized="false" 9692 static="false" final="false" visibility="public" 9693 deprecated="not deprecated"> 9694 <param name="interceptorConfig" type="InterceptorConfig"/> 9695 <param name="interceptorRefParams" type="java.util.Map"/> 9696 <exception name="ConfigurationException" type="ConfigurationException"/> 9697 </method> 9698 <doc> 9699 <![CDATA[Cleanup up version from Bob's GuiceObjectFactory. Now works properly with 9700 GS2 and fixes several bugs. 9701 9702 @author dhanji@gmail.com 9703 @author benmccann.com]]> 9704 </doc> 9705 </class> 9706 <!-- end class com.google.inject.struts2.Struts2Factory --> 9707 <!-- start class com.google.inject.struts2.Struts2GuicePluginModule --> 9708 <class name="Struts2GuicePluginModule" extends="com.google.inject.AbstractModule" 9709 abstract="false" 9710 static="false" final="false" visibility="public" 9711 deprecated="not deprecated"> 9712 <constructor name="Struts2GuicePluginModule" 9713 static="false" final="false" visibility="public" 9714 deprecated="not deprecated"> 9715 </constructor> 9716 <method name="configure" 9717 abstract="false" native="false" synchronized="false" 9718 static="false" final="false" visibility="protected" 9719 deprecated="not deprecated"> 9720 </method> 9721 <doc> 9722 <![CDATA[Initializes the Struts 2 Guice Plugin. 9723 Must be added to the injector returned by 9724 {@link GuiceServletContextListener.getInjector()}. 9725 9726 @author benmccann.com]]> 9727 </doc> 9728 </class> 9729 <!-- end class com.google.inject.struts2.Struts2GuicePluginModule --> 9730</package> 9731<package name="com.google.inject.throwingproviders"> 9732 <!-- start interface com.google.inject.throwingproviders.CheckedProvider --> 9733 <interface name="CheckedProvider" abstract="true" 9734 static="false" final="false" visibility="public" 9735 deprecated="not deprecated"> 9736 <method name="get" return="T" 9737 abstract="false" native="false" synchronized="false" 9738 static="false" final="false" visibility="public" 9739 deprecated="not deprecated"> 9740 <exception name="Exception" type="java.lang.Exception"/> 9741 </method> 9742 <doc> 9743 <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws 9744 a checked Exception. Users may not inject {@code T} directly. 9745 9746 <p>This interface must be extended to use application-specific exception types. 9747 Such subinterfaces may not define new methods, but may narrow the exception type. 9748 <pre> 9749 public interface RemoteProvider<T> extends CheckedProvider<T> { 9750 T get() throws CustomExceptionOne, CustomExceptionTwo; 9751 } 9752 </pre> 9753 9754 <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned 9755 or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get} 9756 will invoked at most once within each scope. 9757 9758 @since 3.0]]> 9759 </doc> 9760 </interface> 9761 <!-- end interface com.google.inject.throwingproviders.CheckedProvider --> 9762 <!-- start class com.google.inject.throwingproviders.CheckedProvides --> 9763 <class name="CheckedProvides" abstract="true" 9764 static="false" final="false" visibility="public" 9765 deprecated="not deprecated"> 9766 <implements name="java.lang.annotation.Annotation"/> 9767 <doc> 9768 <![CDATA[Annotates methods of a {@link Module} to create a {@link CheckedProvider} 9769 method binding that can throw exceptions. The method's return type is bound 9770 to a {@link CheckedProvider} that can be injected. Guice will pass 9771 dependencies to the method as parameters. Install {@literal @}CheckedProvides 9772 methods by using 9773 {@link ThrowingProviderBinder#forModule(com.google.inject.Module)} on the 9774 module where the methods are declared. 9775 9776 @author sameb@google.com (Sam Berlin) 9777 @since 3.0]]> 9778 </doc> 9779 </class> 9780 <!-- end class com.google.inject.throwingproviders.CheckedProvides --> 9781 <!-- start interface com.google.inject.throwingproviders.ThrowingProvider --> 9782 <interface name="ThrowingProvider" abstract="true" 9783 static="false" final="false" visibility="public" 9784 deprecated="use {@link CheckedProvider} instead."> 9785 <implements name="com.google.inject.throwingproviders.CheckedProvider<T>"/> 9786 <method name="get" return="T" 9787 abstract="false" native="false" synchronized="false" 9788 static="false" final="false" visibility="public" 9789 deprecated="not deprecated"> 9790 <exception name="Exception" type="java.lang.Exception"/> 9791 </method> 9792 <doc> 9793 <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws 9794 a checked Exception. Users may not inject {@code T} directly. 9795 9796 <p>This interface must be extended to use application-specific exception types. 9797 Such subinterfaces may not define new methods: 9798 <pre> 9799 public interface RemoteProvider<T> extends ThrowingProvider<T, RemoteException> { } 9800 </pre> 9801 9802 <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned 9803 or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get} 9804 will invoked at most once within each scope. 9805 9806 @author jmourits@google.com (Jerome Mourits) 9807 @author jessewilson@google.com (Jesse Wilson) 9808 @deprecated use {@link CheckedProvider} instead.]]> 9809 </doc> 9810 </interface> 9811 <!-- end interface com.google.inject.throwingproviders.ThrowingProvider --> 9812 <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder --> 9813 <class name="ThrowingProviderBinder" extends="java.lang.Object" 9814 abstract="false" 9815 static="false" final="false" visibility="public" 9816 deprecated="not deprecated"> 9817 <method name="create" return="com.google.inject.throwingproviders.ThrowingProviderBinder" 9818 abstract="false" native="false" synchronized="false" 9819 static="true" final="false" visibility="public" 9820 deprecated="not deprecated"> 9821 <param name="binder" type="com.google.inject.Binder"/> 9822 </method> 9823 <method name="forModule" return="com.google.inject.Module" 9824 abstract="false" native="false" synchronized="false" 9825 static="true" final="false" visibility="public" 9826 deprecated="not deprecated"> 9827 <param name="module" type="com.google.inject.Module"/> 9828 <doc> 9829 <![CDATA[Returns a module that installs {@literal @}{@link CheckedProvides} methods. 9830 9831 @since 3.0]]> 9832 </doc> 9833 </method> 9834 <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P>" 9835 abstract="false" native="false" synchronized="false" 9836 static="false" final="false" visibility="public" 9837 deprecated="not deprecated"> 9838 <param name="interfaceType" type="java.lang.Class<P>"/> 9839 <param name="valueType" type="java.lang.reflect.Type"/> 9840 </method> 9841 <doc> 9842 <![CDATA[<p>Builds a binding for a {@link CheckedProvider}. 9843 9844 <p>You can use a fluent API and custom providers: 9845 <pre><code>ThrowingProviderBinder.create(binder()) 9846 .bind(RemoteProvider.class, Customer.class) 9847 .to(RemoteCustomerProvider.class) 9848 .in(RequestScope.class); 9849 </code></pre> 9850 or, you can use throwing provider methods: 9851 <pre><code>class MyModule extends AbstractModule { 9852 configure() { 9853 ThrowingProviderBinder.install(this, binder()); 9854 } 9855 9856 {@literal @}CheckedProvides(RemoteProvider.class) 9857 {@literal @}RequestScope 9858 Customer provideCustomer(FlakyCustomerCreator creator) throws RemoteException { 9859 return creator.getCustomerOrThrow(); 9860 } 9861 } 9862 </code></pre> 9863 9864 @author jmourits@google.com (Jerome Mourits) 9865 @author jessewilson@google.com (Jesse Wilson)]]> 9866 </doc> 9867 </class> 9868 <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder --> 9869 <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder --> 9870 <class name="ThrowingProviderBinder.SecondaryBinder" extends="java.lang.Object" 9871 abstract="false" 9872 static="false" final="false" visibility="public" 9873 deprecated="not deprecated"> 9874 <constructor name="ThrowingProviderBinder.SecondaryBinder" type="java.lang.Class<P>, java.lang.reflect.Type" 9875 static="false" final="false" visibility="public" 9876 deprecated="not deprecated"> 9877 </constructor> 9878 <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P>" 9879 abstract="false" native="false" synchronized="false" 9880 static="false" final="false" visibility="public" 9881 deprecated="not deprecated"> 9882 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 9883 </method> 9884 <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P>" 9885 abstract="false" native="false" synchronized="false" 9886 static="false" final="false" visibility="public" 9887 deprecated="not deprecated"> 9888 <param name="annotation" type="java.lang.annotation.Annotation"/> 9889 </method> 9890 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 9891 abstract="false" native="false" synchronized="false" 9892 static="false" final="false" visibility="public" 9893 deprecated="not deprecated"> 9894 <param name="target" type="P extends com.google.inject.throwingproviders.CheckedProvider"/> 9895 </method> 9896 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 9897 abstract="false" native="false" synchronized="false" 9898 static="false" final="false" visibility="public" 9899 deprecated="not deprecated"> 9900 <param name="targetType" type="java.lang.Class<? extends P>"/> 9901 </method> 9902 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 9903 abstract="false" native="false" synchronized="false" 9904 static="false" final="false" visibility="public" 9905 deprecated="not deprecated"> 9906 <param name="targetKey" type="com.google.inject.Key<? extends P>"/> 9907 </method> 9908 </class> 9909 <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder --> 9910</package> 9911<package name="com.google.inject.tools.jmx"> 9912 <!-- start interface com.google.inject.tools.jmx.ManagedBindingMBean --> 9913 <interface name="ManagedBindingMBean" abstract="true" 9914 static="false" final="false" visibility="public" 9915 deprecated="not deprecated"> 9916 <method name="getSource" return="java.lang.String" 9917 abstract="false" native="false" synchronized="false" 9918 static="false" final="false" visibility="public" 9919 deprecated="not deprecated"> 9920 <doc> 9921 <![CDATA[Gets the source of this binding.]]> 9922 </doc> 9923 </method> 9924 <method name="getProvider" return="java.lang.String" 9925 abstract="false" native="false" synchronized="false" 9926 static="false" final="false" visibility="public" 9927 deprecated="not deprecated"> 9928 <doc> 9929 <![CDATA[Gets the provider to which this binding is bound.]]> 9930 </doc> 9931 </method> 9932 <method name="getKey" return="java.lang.String" 9933 abstract="false" native="false" synchronized="false" 9934 static="false" final="false" visibility="public" 9935 deprecated="not deprecated"> 9936 <doc> 9937 <![CDATA[Gets the binding key.]]> 9938 </doc> 9939 </method> 9940 <doc> 9941 <![CDATA[JMX interface to bindings. 9942 9943 @author crazybob@google.com (Bob Lee)]]> 9944 </doc> 9945 </interface> 9946 <!-- end interface com.google.inject.tools.jmx.ManagedBindingMBean --> 9947 <!-- start class com.google.inject.tools.jmx.Manager --> 9948 <class name="Manager" extends="java.lang.Object" 9949 abstract="false" 9950 static="false" final="false" visibility="public" 9951 deprecated="not deprecated"> 9952 <constructor name="Manager" 9953 static="false" final="false" visibility="public" 9954 deprecated="not deprecated"> 9955 </constructor> 9956 <method name="manage" 9957 abstract="false" native="false" synchronized="false" 9958 static="true" final="false" visibility="public" 9959 deprecated="not deprecated"> 9960 <param name="domain" type="java.lang.String"/> 9961 <param name="injector" type="com.google.inject.Injector"/> 9962 <doc> 9963 <![CDATA[Registers all the bindings of an Injector with the platform MBean server. 9964 Consider using the name of your root {@link Module} class as the domain.]]> 9965 </doc> 9966 </method> 9967 <method name="manage" 9968 abstract="false" native="false" synchronized="false" 9969 static="true" final="false" visibility="public" 9970 deprecated="not deprecated"> 9971 <param name="server" type="javax.management.MBeanServer"/> 9972 <param name="domain" type="java.lang.String"/> 9973 <param name="injector" type="com.google.inject.Injector"/> 9974 <doc> 9975 <![CDATA[Registers all the bindings of an Injector with the given MBean server. 9976 Consider using the name of your root {@link Module} class as the domain.]]> 9977 </doc> 9978 </method> 9979 <method name="main" 9980 abstract="false" native="false" synchronized="false" 9981 static="true" final="false" visibility="public" 9982 deprecated="not deprecated"> 9983 <param name="args" type="java.lang.String[]"/> 9984 <exception name="Exception" type="java.lang.Exception"/> 9985 <doc> 9986 <![CDATA[Run with no arguments for usage instructions.]]> 9987 </doc> 9988 </method> 9989 <doc> 9990 <![CDATA[Provides a JMX interface to Guice. 9991 9992 @author crazybob@google.com (Bob Lee)]]> 9993 </doc> 9994 </class> 9995 <!-- end class com.google.inject.tools.jmx.Manager --> 9996</package> 9997<package name="com.google.inject.util"> 9998 <!-- start class com.google.inject.util.Modules --> 9999 <class name="Modules" extends="java.lang.Object" 10000 abstract="false" 10001 static="false" final="true" visibility="public" 10002 deprecated="not deprecated"> 10003 <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder" 10004 abstract="false" native="false" synchronized="false" 10005 static="true" final="false" visibility="public" 10006 deprecated="not deprecated"> 10007 <param name="modules" type="com.google.inject.Module[]"/> 10008 <doc> 10009 <![CDATA[Returns a builder that creates a module that overlays override modules over the given 10010 modules. If a key is bound in both sets of modules, only the binding from the override modules 10011 is kept. If a single {@link PrivateModule} is supplied or all elements are from 10012 a single {@link PrivateBinder}, then this will overwrite the private bindings. 10013 Otherwise, private bindings will not be overwritten unless they are exposed. 10014 This can be used to replace the bindings of a production module with test bindings: 10015 <pre> 10016 Module functionalTestModule 10017 = Modules.override(new ProductionModule()).with(new TestModule()); 10018 </pre> 10019 10020 <p>Prefer to write smaller modules that can be reused and tested without overrides. 10021 10022 @param modules the modules whose bindings are open to be overridden]]> 10023 </doc> 10024 </method> 10025 <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder" 10026 abstract="false" native="false" synchronized="false" 10027 static="true" final="false" visibility="public" 10028 deprecated="not deprecated"> 10029 <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 10030 <doc> 10031 <![CDATA[Returns a builder that creates a module that overlays override modules over the given 10032 modules. If a key is bound in both sets of modules, only the binding from the override modules 10033 is kept. If a single {@link PrivateModule} is supplied or all elements are from 10034 a single {@link PrivateBinder}, then this will overwrite the private bindings. 10035 Otherwise, private bindings will not be overwritten unless they are exposed. 10036 This can be used to replace the bindings of a production module with test bindings: 10037 <pre> 10038 Module functionalTestModule 10039 = Modules.override(getProductionModules()).with(getTestModules()); 10040 </pre> 10041 10042 <p>Prefer to write smaller modules that can be reused and tested without overrides. 10043 10044 @param modules the modules whose bindings are open to be overridden]]> 10045 </doc> 10046 </method> 10047 <method name="combine" return="com.google.inject.Module" 10048 abstract="false" native="false" synchronized="false" 10049 static="true" final="false" visibility="public" 10050 deprecated="not deprecated"> 10051 <param name="modules" type="com.google.inject.Module[]"/> 10052 <doc> 10053 <![CDATA[Returns a new module that installs all of {@code modules}.]]> 10054 </doc> 10055 </method> 10056 <method name="combine" return="com.google.inject.Module" 10057 abstract="false" native="false" synchronized="false" 10058 static="true" final="false" visibility="public" 10059 deprecated="not deprecated"> 10060 <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 10061 <doc> 10062 <![CDATA[Returns a new module that installs all of {@code modules}.]]> 10063 </doc> 10064 </method> 10065 <field name="EMPTY_MODULE" type="com.google.inject.Module" 10066 transient="false" volatile="false" 10067 static="true" final="true" visibility="public" 10068 deprecated="not deprecated"> 10069 </field> 10070 <doc> 10071 <![CDATA[Static utility methods for creating and working with instances of {@link Module}. 10072 10073 @author jessewilson@google.com (Jesse Wilson) 10074 @since 2.0]]> 10075 </doc> 10076 </class> 10077 <!-- end class com.google.inject.util.Modules --> 10078 <!-- start interface com.google.inject.util.Modules.OverriddenModuleBuilder --> 10079 <interface name="Modules.OverriddenModuleBuilder" abstract="true" 10080 static="true" final="false" visibility="public" 10081 deprecated="not deprecated"> 10082 <method name="with" return="com.google.inject.Module" 10083 abstract="false" native="false" synchronized="false" 10084 static="false" final="false" visibility="public" 10085 deprecated="not deprecated"> 10086 <param name="overrides" type="com.google.inject.Module[]"/> 10087 <doc> 10088 <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]> 10089 </doc> 10090 </method> 10091 <method name="with" return="com.google.inject.Module" 10092 abstract="false" native="false" synchronized="false" 10093 static="false" final="false" visibility="public" 10094 deprecated="not deprecated"> 10095 <param name="overrides" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 10096 <doc> 10097 <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]> 10098 </doc> 10099 </method> 10100 <doc> 10101 <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]> 10102 </doc> 10103 </interface> 10104 <!-- end interface com.google.inject.util.Modules.OverriddenModuleBuilder --> 10105 <!-- start class com.google.inject.util.Providers --> 10106 <class name="Providers" extends="java.lang.Object" 10107 abstract="false" 10108 static="false" final="true" visibility="public" 10109 deprecated="not deprecated"> 10110 <method name="of" return="com.google.inject.Provider<T>" 10111 abstract="false" native="false" synchronized="false" 10112 static="true" final="false" visibility="public" 10113 deprecated="not deprecated"> 10114 <param name="instance" type="T"/> 10115 <doc> 10116 <![CDATA[Returns a provider which always provides {@code instance}. This should not 10117 be necessary to use in your application, but is helpful for several types 10118 of unit tests. 10119 10120 @param instance the instance that should always be provided. This is also 10121 permitted to be null, to enable aggressive testing, although in real 10122 life a Guice-supplied Provider will never return null.]]> 10123 </doc> 10124 </method> 10125 <method name="guicify" return="com.google.inject.Provider<T>" 10126 abstract="false" native="false" synchronized="false" 10127 static="true" final="false" visibility="public" 10128 deprecated="not deprecated"> 10129 <param name="provider" type="javax.inject.Provider<T>"/> 10130 <doc> 10131 <![CDATA[Returns a Guice-friendly {@code com.google.inject.Provider} for the given 10132 JSR-330 {@code javax.inject.Provider}. The converse method is unnecessary, 10133 since Guice providers directly implement the JSR-330 interface. 10134 10135 @since 3.0]]> 10136 </doc> 10137 </method> 10138 <doc> 10139 <![CDATA[Static utility methods for creating and working with instances of 10140 {@link Provider}. 10141 10142 @author Kevin Bourrillion (kevinb9n@gmail.com) 10143 @since 2.0]]> 10144 </doc> 10145 </class> 10146 <!-- end class com.google.inject.util.Providers --> 10147 <!-- start class com.google.inject.util.Types --> 10148 <class name="Types" extends="java.lang.Object" 10149 abstract="false" 10150 static="false" final="true" visibility="public" 10151 deprecated="not deprecated"> 10152 <method name="newParameterizedType" return="java.lang.reflect.ParameterizedType" 10153 abstract="false" native="false" synchronized="false" 10154 static="true" final="false" visibility="public" 10155 deprecated="not deprecated"> 10156 <param name="rawType" type="java.lang.reflect.Type"/> 10157 <param name="typeArguments" type="java.lang.reflect.Type[]"/> 10158 <doc> 10159 <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to 10160 {@code rawType}. The returned type does not have an owner type. 10161 10162 @return a {@link java.io.Serializable serializable} parameterized type.]]> 10163 </doc> 10164 </method> 10165 <method name="newParameterizedTypeWithOwner" return="java.lang.reflect.ParameterizedType" 10166 abstract="false" native="false" synchronized="false" 10167 static="true" final="false" visibility="public" 10168 deprecated="not deprecated"> 10169 <param name="ownerType" type="java.lang.reflect.Type"/> 10170 <param name="rawType" type="java.lang.reflect.Type"/> 10171 <param name="typeArguments" type="java.lang.reflect.Type[]"/> 10172 <doc> 10173 <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to 10174 {@code rawType} and enclosed by {@code ownerType}. 10175 10176 @return a {@link java.io.Serializable serializable} parameterized type.]]> 10177 </doc> 10178 </method> 10179 <method name="arrayOf" return="java.lang.reflect.GenericArrayType" 10180 abstract="false" native="false" synchronized="false" 10181 static="true" final="false" visibility="public" 10182 deprecated="not deprecated"> 10183 <param name="componentType" type="java.lang.reflect.Type"/> 10184 <doc> 10185 <![CDATA[Returns an array type whose elements are all instances of 10186 {@code componentType}. 10187 10188 @return a {@link java.io.Serializable serializable} generic array type.]]> 10189 </doc> 10190 </method> 10191 <method name="subtypeOf" return="java.lang.reflect.WildcardType" 10192 abstract="false" native="false" synchronized="false" 10193 static="true" final="false" visibility="public" 10194 deprecated="not deprecated"> 10195 <param name="bound" type="java.lang.reflect.Type"/> 10196 <doc> 10197 <![CDATA[Returns a type that represents an unknown type that extends {@code bound}. 10198 For example, if {@code bound} is {@code CharSequence.class}, this returns 10199 {@code ? extends CharSequence}. If {@code bound} is {@code Object.class}, 10200 this returns {@code ?}, which is shorthand for {@code ? extends Object}.]]> 10201 </doc> 10202 </method> 10203 <method name="supertypeOf" return="java.lang.reflect.WildcardType" 10204 abstract="false" native="false" synchronized="false" 10205 static="true" final="false" visibility="public" 10206 deprecated="not deprecated"> 10207 <param name="bound" type="java.lang.reflect.Type"/> 10208 <doc> 10209 <![CDATA[Returns a type that represents an unknown supertype of {@code bound}. For 10210 example, if {@code bound} is {@code String.class}, this returns {@code ? 10211 super String}.]]> 10212 </doc> 10213 </method> 10214 <method name="listOf" return="java.lang.reflect.ParameterizedType" 10215 abstract="false" native="false" synchronized="false" 10216 static="true" final="false" visibility="public" 10217 deprecated="not deprecated"> 10218 <param name="elementType" type="java.lang.reflect.Type"/> 10219 <doc> 10220 <![CDATA[Returns a type modelling a {@link List} whose elements are of type 10221 {@code elementType}. 10222 10223 @return a {@link java.io.Serializable serializable} parameterized type.]]> 10224 </doc> 10225 </method> 10226 <method name="setOf" return="java.lang.reflect.ParameterizedType" 10227 abstract="false" native="false" synchronized="false" 10228 static="true" final="false" visibility="public" 10229 deprecated="not deprecated"> 10230 <param name="elementType" type="java.lang.reflect.Type"/> 10231 <doc> 10232 <![CDATA[Returns a type modelling a {@link Set} whose elements are of type 10233 {@code elementType}. 10234 10235 @return a {@link java.io.Serializable serializable} parameterized type.]]> 10236 </doc> 10237 </method> 10238 <method name="mapOf" return="java.lang.reflect.ParameterizedType" 10239 abstract="false" native="false" synchronized="false" 10240 static="true" final="false" visibility="public" 10241 deprecated="not deprecated"> 10242 <param name="keyType" type="java.lang.reflect.Type"/> 10243 <param name="valueType" type="java.lang.reflect.Type"/> 10244 <doc> 10245 <![CDATA[Returns a type modelling a {@link Map} whose keys are of type 10246 {@code keyType} and whose values are of type {@code valueType}. 10247 10248 @return a {@link java.io.Serializable serializable} parameterized type.]]> 10249 </doc> 10250 </method> 10251 <method name="providerOf" return="java.lang.reflect.ParameterizedType" 10252 abstract="false" native="false" synchronized="false" 10253 static="true" final="false" visibility="public" 10254 deprecated="not deprecated"> 10255 <param name="providedType" type="java.lang.reflect.Type"/> 10256 <doc> 10257 <![CDATA[Returns a type modelling a {@link Provider} that provides elements of type 10258 {@code elementType}. 10259 10260 @return a {@link java.io.Serializable serializable} parameterized type.]]> 10261 </doc> 10262 </method> 10263 <doc> 10264 <![CDATA[Static methods for working with types. 10265 10266 @author crazybob@google.com (Bob Lee) 10267 @since 2.0]]> 10268 </doc> 10269 </class> 10270 <!-- end class com.google.inject.util.Types --> 10271</package> 10272 10273</api> 10274