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 Fri Jun 17 16:00:51 EDT 2016 --> 5 6<api 7 xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 8 xsi:noNamespaceSchemaLocation='api.xsd' 9 name="4.1" 10 jdversion="1.1.1"> 11 12<!-- Command line arguments = -doclet jdiff.JDiff -docletpath /tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/jdiff/jdiff.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/jdiff/xerces.jar -classpath /tmp/moe_git_clone_googlecode_6763913321787039468/lib/aopalliance.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/guava-19.0.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/javax.inject.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/asm-5.0.3.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/bnd-0.0.384.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/cglib-3.2.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/commons-logging-1.0.4.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/easymock.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/felix-2.0.5.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/guava-testlib-19.0.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/jarjar-1.1.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/javax.inject-tck.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/jsr305.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/junit.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/munge.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/safesax.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/spring-beans.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/spring-core.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/dagger-adapter/lib/dagger-2.4.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/antlr-2.7.5h3.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/aopalliance.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/cglib-nodep-3.0.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/commons-collections.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/commons-io.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/commons-logging-1.0.4.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/db4o-6.4.14.8131-java5.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/dom4j-1.6.1.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/easymock.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/ejb3-persistence.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/hibernate-annotations.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/hibernate-entitymanager.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/hibernate-search.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/hibernate3.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/hsqldb.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/javassist.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/jaxen-1.1-beta-7.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/jboss-archive-browsing.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/jta.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/log4j-1.2.14.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/ognl-2.6.7.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/oro-2.0.8.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/servlet-api-2.5.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/xwork-2.0.4.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/ant-1.6.5.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/commons-fileupload-1.2.1.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/commons-io-1.3.2.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/commons-logging-1.0.4.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/core-3.1.1.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/freemarker-2.3.16.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/javassist.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/jetty-6.1.0.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/jetty-util-6.1.0.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/jsp-2.1.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/jsp-api-2.1.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/ognl-3.0.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/servlet-api-2.5.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/struts2-core-2.2.1.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/xwork-core-2.2.1.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/build/classes -doclet jdiff.JDiff -docletpath /tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/jdiff/jdiff.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/jdiff/xerces.jar -apidir build/docs/latest-api-diffs -apiname 4.1 --> 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 <method name="bindListener" 262 abstract="false" native="false" synchronized="false" 263 static="false" final="false" visibility="protected" 264 deprecated="not deprecated"> 265 <param name="bindingMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.Binding<?>>"/> 266 <param name="listener" type="com.google.inject.spi.ProvisionListener[]"/> 267 <doc> 268 <![CDATA[@see Binder#bindListener(Matcher, ProvisionListener...) 269 @since 4.0]]> 270 </doc> 271 </method> 272 <doc> 273 <![CDATA[A support class for {@link Module}s which reduces repetition and results in 274 a more readable configuration. Simply extend this class, implement {@link 275 #configure()}, and call the inherited methods which mirror those found in 276 {@link Binder}. For example: 277 278 <pre> 279 public class MyModule extends AbstractModule { 280 protected void configure() { 281 bind(Service.class).to(ServiceImpl.class).in(Singleton.class); 282 bind(CreditCardPaymentService.class); 283 bind(PaymentService.class).to(CreditCardPaymentService.class); 284 bindConstant().annotatedWith(Names.named("port")).to(8080); 285 } 286 } 287 </pre> 288 289 @author crazybob@google.com (Bob Lee)]]> 290 </doc> 291 </class> 292 <!-- end class com.google.inject.AbstractModule --> 293 <!-- start interface com.google.inject.Binder --> 294 <interface name="Binder" abstract="true" 295 static="false" final="false" visibility="public" 296 deprecated="not deprecated"> 297 <method name="bindInterceptor" 298 abstract="true" native="false" synchronized="false" 299 static="false" final="false" visibility="public" 300 deprecated="not deprecated"> 301 <param name="classMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>"/> 302 <param name="methodMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>"/> 303 <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/> 304 <doc> 305 <![CDATA[Binds method interceptor[s] to methods matched by class and method matchers. A method is 306 eligible for interception if: 307 308 <ul> 309 <li>Guice created the instance the method is on</li> 310 <li>Neither the enclosing type nor the method is final</li> 311 <li>And the method is package-private, protected, or public</li> 312 </ul> 313 314 @param classMatcher matches classes the interceptor should apply to. For 315 example: {@code only(Runnable.class)}. 316 @param methodMatcher matches methods the interceptor should apply to. For 317 example: {@code annotatedWith(Transactional.class)}. 318 @param interceptors to bind. The interceptors are called in the order they 319 are given.]]> 320 </doc> 321 </method> 322 <method name="bindScope" 323 abstract="true" native="false" synchronized="false" 324 static="false" final="false" visibility="public" 325 deprecated="not deprecated"> 326 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 327 <param name="scope" type="com.google.inject.Scope"/> 328 <doc> 329 <![CDATA[Binds a scope to an annotation.]]> 330 </doc> 331 </method> 332 <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder<T>" 333 abstract="true" native="false" synchronized="false" 334 static="false" final="false" visibility="public" 335 deprecated="not deprecated"> 336 <param name="key" type="com.google.inject.Key<T>"/> 337 <doc> 338 <![CDATA[See the EDSL examples at {@link Binder}.]]> 339 </doc> 340 </method> 341 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 342 abstract="true" native="false" synchronized="false" 343 static="false" final="false" visibility="public" 344 deprecated="not deprecated"> 345 <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 346 <doc> 347 <![CDATA[See the EDSL examples at {@link Binder}.]]> 348 </doc> 349 </method> 350 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 351 abstract="true" native="false" synchronized="false" 352 static="false" final="false" visibility="public" 353 deprecated="not deprecated"> 354 <param name="type" type="java.lang.Class<T>"/> 355 <doc> 356 <![CDATA[See the EDSL examples at {@link Binder}.]]> 357 </doc> 358 </method> 359 <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder" 360 abstract="true" native="false" synchronized="false" 361 static="false" final="false" visibility="public" 362 deprecated="not deprecated"> 363 <doc> 364 <![CDATA[See the EDSL examples at {@link Binder}.]]> 365 </doc> 366 </method> 367 <method name="requestInjection" 368 abstract="true" native="false" synchronized="false" 369 static="false" final="false" visibility="public" 370 deprecated="not deprecated"> 371 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 372 <param name="instance" type="T"/> 373 <doc> 374 <![CDATA[Upon successful creation, the {@link Injector} will inject instance fields 375 and methods of the given object. 376 377 @param type of instance 378 @param instance for which members will be injected 379 @since 2.0]]> 380 </doc> 381 </method> 382 <method name="requestInjection" 383 abstract="true" native="false" synchronized="false" 384 static="false" final="false" visibility="public" 385 deprecated="not deprecated"> 386 <param name="instance" type="java.lang.Object"/> 387 <doc> 388 <![CDATA[Upon successful creation, the {@link Injector} will inject instance fields 389 and methods of the given object. 390 391 @param instance for which members will be injected 392 @since 2.0]]> 393 </doc> 394 </method> 395 <method name="requestStaticInjection" 396 abstract="true" native="false" synchronized="false" 397 static="false" final="false" visibility="public" 398 deprecated="not deprecated"> 399 <param name="types" type="java.lang.Class[]"/> 400 <doc> 401 <![CDATA[Upon successful creation, the {@link Injector} will inject static fields 402 and methods in the given classes. 403 404 @param types for which static members will be injected]]> 405 </doc> 406 </method> 407 <method name="install" 408 abstract="true" native="false" synchronized="false" 409 static="false" final="false" visibility="public" 410 deprecated="not deprecated"> 411 <param name="module" type="com.google.inject.Module"/> 412 <doc> 413 <![CDATA[Uses the given module to configure more bindings.]]> 414 </doc> 415 </method> 416 <method name="currentStage" return="com.google.inject.Stage" 417 abstract="true" native="false" synchronized="false" 418 static="false" final="false" visibility="public" 419 deprecated="not deprecated"> 420 <doc> 421 <![CDATA[Gets the current stage.]]> 422 </doc> 423 </method> 424 <method name="addError" 425 abstract="true" native="false" synchronized="false" 426 static="false" final="false" visibility="public" 427 deprecated="not deprecated"> 428 <param name="message" type="java.lang.String"/> 429 <param name="arguments" type="java.lang.Object[]"/> 430 <doc> 431 <![CDATA[Records an error message which will be presented to the user at a later 432 time. Unlike throwing an exception, this enable us to continue 433 configuring the Injector and discover more errors. Uses {@link 434 String#format(String, Object[])} to insert the arguments into the 435 message.]]> 436 </doc> 437 </method> 438 <method name="addError" 439 abstract="true" native="false" synchronized="false" 440 static="false" final="false" visibility="public" 441 deprecated="not deprecated"> 442 <param name="t" type="java.lang.Throwable"/> 443 <doc> 444 <![CDATA[Records an exception, the full details of which will be logged, and the 445 message of which will be presented to the user at a later 446 time. If your Module calls something that you worry may fail, you should 447 catch the exception and pass it into this.]]> 448 </doc> 449 </method> 450 <method name="addError" 451 abstract="true" native="false" synchronized="false" 452 static="false" final="false" visibility="public" 453 deprecated="not deprecated"> 454 <param name="message" type="com.google.inject.spi.Message"/> 455 <doc> 456 <![CDATA[Records an error message to be presented to the user at a later time. 457 458 @since 2.0]]> 459 </doc> 460 </method> 461 <method name="getProvider" return="com.google.inject.Provider<T>" 462 abstract="true" native="false" synchronized="false" 463 static="false" final="false" visibility="public" 464 deprecated="not deprecated"> 465 <param name="key" type="com.google.inject.Key<T>"/> 466 <doc> 467 <![CDATA[Returns the provider used to obtain instances for the given injection key. 468 The returned provider will not be valid until the {@link Injector} has been 469 created. The provider will throw an {@code IllegalStateException} if you 470 try to use it beforehand. 471 472 @since 2.0]]> 473 </doc> 474 </method> 475 <method name="getProvider" return="com.google.inject.Provider<T>" 476 abstract="true" native="false" synchronized="false" 477 static="false" final="false" visibility="public" 478 deprecated="not deprecated"> 479 <param name="dependency" type="com.google.inject.spi.Dependency<T>"/> 480 <doc> 481 <![CDATA[Returns the provider used to obtain instances for the given injection key. 482 The returned provider will be attached to the injection point and will 483 follow the nullability specified in the dependency. 484 Additionally, the returned provider will not be valid until the {@link Injector} 485 has been created. The provider will throw an {@code IllegalStateException} if you 486 try to use it beforehand. 487 488 @since 4.0]]> 489 </doc> 490 </method> 491 <method name="getProvider" return="com.google.inject.Provider<T>" 492 abstract="true" native="false" synchronized="false" 493 static="false" final="false" visibility="public" 494 deprecated="not deprecated"> 495 <param name="type" type="java.lang.Class<T>"/> 496 <doc> 497 <![CDATA[Returns the provider used to obtain instances for the given injection type. 498 The returned provider will not be valid until the {@link Injector} has been 499 created. The provider will throw an {@code IllegalStateException} if you 500 try to use it beforehand. 501 502 @since 2.0]]> 503 </doc> 504 </method> 505 <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 506 abstract="true" native="false" synchronized="false" 507 static="false" final="false" visibility="public" 508 deprecated="not deprecated"> 509 <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 510 <doc> 511 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 512 of the given type {@code T}. The returned members injector will not be valid until the main 513 {@link Injector} has been created. The members injector will throw an {@code 514 IllegalStateException} if you try to use it beforehand. 515 516 @param typeLiteral type to get members injector for 517 @since 2.0]]> 518 </doc> 519 </method> 520 <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 521 abstract="true" native="false" synchronized="false" 522 static="false" final="false" visibility="public" 523 deprecated="not deprecated"> 524 <param name="type" type="java.lang.Class<T>"/> 525 <doc> 526 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 527 of the given type {@code T}. The returned members injector will not be valid until the main 528 {@link Injector} has been created. The members injector will throw an {@code 529 IllegalStateException} if you try to use it beforehand. 530 531 @param type type to get members injector for 532 @since 2.0]]> 533 </doc> 534 </method> 535 <method name="convertToTypes" 536 abstract="true" native="false" synchronized="false" 537 static="false" final="false" visibility="public" 538 deprecated="not deprecated"> 539 <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> 540 <param name="converter" type="com.google.inject.spi.TypeConverter"/> 541 <doc> 542 <![CDATA[Binds a type converter. The injector will use the given converter to 543 convert string constants to matching types as needed. 544 545 @param typeMatcher matches types the converter can handle 546 @param converter converts values 547 @since 2.0]]> 548 </doc> 549 </method> 550 <method name="bindListener" 551 abstract="true" native="false" synchronized="false" 552 static="false" final="false" visibility="public" 553 deprecated="not deprecated"> 554 <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> 555 <param name="listener" type="com.google.inject.spi.TypeListener"/> 556 <doc> 557 <![CDATA[Registers a listener for injectable types. Guice will notify the listener when it encounters 558 injectable types matched by the given type matcher. 559 560 @param typeMatcher that matches injectable types the listener should be notified of 561 @param listener for injectable types matched by typeMatcher 562 @since 2.0]]> 563 </doc> 564 </method> 565 <method name="bindListener" 566 abstract="true" native="false" synchronized="false" 567 static="false" final="false" visibility="public" 568 deprecated="not deprecated"> 569 <param name="bindingMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.Binding<?>>"/> 570 <param name="listeners" type="com.google.inject.spi.ProvisionListener[]"/> 571 <doc> 572 <![CDATA[Registers listeners for provisioned objects. Guice will notify the 573 listeners just before and after the object is provisioned. Provisioned 574 objects that are also injectable (everything except objects provided 575 through Providers) can also be notified through TypeListeners registered in 576 {@link #bindListener}. 577 578 @param bindingMatcher that matches bindings of provisioned objects the listener 579 should be notified of 580 @param listeners for provisioned objects matched by bindingMatcher 581 @since 4.0]]> 582 </doc> 583 </method> 584 <method name="withSource" return="com.google.inject.Binder" 585 abstract="true" native="false" synchronized="false" 586 static="false" final="false" visibility="public" 587 deprecated="not deprecated"> 588 <param name="source" type="java.lang.Object"/> 589 <doc> 590 <![CDATA[Returns a binder that uses {@code source} as the reference location for 591 configuration errors. This is typically a {@link StackTraceElement} 592 for {@code .java} source but it could any binding source, such as the 593 path to a {@code .properties} file. 594 595 @param source any object representing the source location and has a 596 concise {@link Object#toString() toString()} value 597 @return a binder that shares its configuration with this binder 598 @since 2.0]]> 599 </doc> 600 </method> 601 <method name="skipSources" return="com.google.inject.Binder" 602 abstract="true" native="false" synchronized="false" 603 static="false" final="false" visibility="public" 604 deprecated="not deprecated"> 605 <param name="classesToSkip" type="java.lang.Class[]"/> 606 <doc> 607 <![CDATA[Returns a binder that skips {@code classesToSkip} when identify the 608 calling code. The caller's {@link StackTraceElement} is used to locate 609 the source of configuration errors. 610 611 @param classesToSkip library classes that create bindings on behalf of 612 their clients. 613 @return a binder that shares its configuration with this binder. 614 @since 2.0]]> 615 </doc> 616 </method> 617 <method name="newPrivateBinder" return="com.google.inject.PrivateBinder" 618 abstract="true" native="false" synchronized="false" 619 static="false" final="false" visibility="public" 620 deprecated="not deprecated"> 621 <doc> 622 <![CDATA[Creates a new private child environment for bindings and other configuration. The returned 623 binder can be used to add and configuration information in this environment. See {@link 624 PrivateModule} for details. 625 626 @return a binder that inherits configuration from this binder. Only exposed configuration on 627 the returned binder will be visible to this binder. 628 @since 2.0]]> 629 </doc> 630 </method> 631 <method name="requireExplicitBindings" 632 abstract="true" native="false" synchronized="false" 633 static="false" final="false" visibility="public" 634 deprecated="not deprecated"> 635 <doc> 636 <![CDATA[Instructs the Injector that bindings must be listed in a Module in order to 637 be injected. Classes that are not explicitly bound in a module cannot be 638 injected. Bindings created through a linked binding 639 (<code>bind(Foo.class).to(FooImpl.class)</code>) are allowed, but the 640 implicit binding (<code>FooImpl</code>) cannot be directly injected unless 641 it is also explicitly bound (<code>bind(FooImpl.class)</code>). 642 <p> 643 Tools can still retrieve bindings for implicit bindings (bindings created 644 through a linked binding) if explicit bindings are required, however 645 {@link Binding#getProvider} will fail. 646 <p> 647 By default, explicit bindings are not required. 648 <p> 649 If a parent injector requires explicit bindings, then all child injectors 650 (and private modules within that injector) also require explicit bindings. 651 If a parent does not require explicit bindings, a child injector or private 652 module may optionally declare itself as requiring explicit bindings. If it 653 does, the behavior is limited only to that child or any grandchildren. No 654 siblings of the child will require explicit bindings. 655 <p> 656 In the absence of an explicit binding for the target, linked bindings in 657 child injectors create a binding for the target in the parent. Since this 658 behavior can be surprising, it causes an error instead if explicit bindings 659 are required. To avoid this error, add an explicit binding for the target, 660 either in the child or the parent. 661 662 @since 3.0]]> 663 </doc> 664 </method> 665 <method name="disableCircularProxies" 666 abstract="true" native="false" synchronized="false" 667 static="false" final="false" visibility="public" 668 deprecated="not deprecated"> 669 <doc> 670 <![CDATA[Prevents Guice from injecting dependencies that form a cycle, unless broken by a 671 {@link Provider}. By default, circular dependencies are not disabled. 672 <p> 673 If a parent injector disables circular dependencies, then all child injectors (and private 674 modules within that injector) also disable circular dependencies. If a parent does not disable 675 circular dependencies, a child injector or private module may optionally declare itself as 676 disabling circular dependencies. If it does, the behavior is limited only to that child or any 677 grandchildren. No siblings of the child will disable circular dependencies. 678 679 @since 3.0]]> 680 </doc> 681 </method> 682 <method name="requireAtInjectOnConstructors" 683 abstract="true" native="false" synchronized="false" 684 static="false" final="false" visibility="public" 685 deprecated="not deprecated"> 686 <doc> 687 <![CDATA[Requires that a {@literal @}{@link Inject} annotation exists on a constructor in order for 688 Guice to consider it an eligible injectable class. By default, Guice will inject classes that 689 have a no-args constructor if no {@literal @}{@link Inject} annotation exists on any 690 constructor. 691 <p> 692 If the class is bound using {@link LinkedBindingBuilder#toConstructor}, Guice will still inject 693 that constructor regardless of annotations. 694 695 @since 4.0]]> 696 </doc> 697 </method> 698 <method name="requireExactBindingAnnotations" 699 abstract="true" native="false" synchronized="false" 700 static="false" final="false" visibility="public" 701 deprecated="not deprecated"> 702 <doc> 703 <![CDATA[Requires that Guice finds an exactly matching binding annotation. This disables the 704 error-prone feature in Guice where it can substitute a binding for 705 <code>{@literal @}Named Foo</code> when attempting to inject 706 <code>{@literal @}Named("foo") Foo</code>. 707 708 @since 4.0]]> 709 </doc> 710 </method> 711 <method name="scanModulesForAnnotatedMethods" 712 abstract="true" native="false" synchronized="false" 713 static="false" final="false" visibility="public" 714 deprecated="not deprecated"> 715 <param name="scanner" type="com.google.inject.spi.ModuleAnnotatedMethodScanner"/> 716 <doc> 717 <![CDATA[Adds a scanner that will look in all installed modules for annotations the scanner can parse, 718 and binds them like {@literal @}Provides methods. Scanners apply to all modules installed in 719 the injector. Scanners installed in child injectors or private modules do not impact modules in 720 siblings or parents, however scanners installed in parents do apply to all child injectors and 721 private modules. 722 723 @since 4.0]]> 724 </doc> 725 </method> 726 <doc> 727 <![CDATA[Collects configuration information (primarily <i>bindings</i>) which will be 728 used to create an {@link Injector}. Guice provides this object to your 729 application's {@link Module} implementors so they may each contribute 730 their own bindings and other registrations. 731 732 <h3>The Guice Binding EDSL</h3> 733 734 Guice uses an <i>embedded domain-specific language</i>, or EDSL, to help you 735 create bindings simply and readably. This approach is great for overall 736 usability, but it does come with a small cost: <b>it is difficult to 737 learn how to use the Binding EDSL by reading 738 method-level javadocs</b>. Instead, you should consult the series of 739 examples below. To save space, these examples omit the opening 740 {@code binder}, just as you will if your module extends 741 {@link AbstractModule}. 742 743 <pre> 744 bind(ServiceImpl.class);</pre> 745 746 This statement does essentially nothing; it "binds the {@code ServiceImpl} 747 class to itself" and does not change Guice's default behavior. You may still 748 want to use this if you prefer your {@link Module} class to serve as an 749 explicit <i>manifest</i> for the services it provides. Also, in rare cases, 750 Guice may be unable to validate a binding at injector creation time unless it 751 is given explicitly. 752 753 <pre> 754 bind(Service.class).to(ServiceImpl.class);</pre> 755 756 Specifies that a request for a {@code Service} instance with no binding 757 annotations should be treated as if it were a request for a 758 {@code ServiceImpl} instance. This <i>overrides</i> the function of any 759 {@link ImplementedBy @ImplementedBy} or {@link ProvidedBy @ProvidedBy} 760 annotations found on {@code Service}, since Guice will have already 761 "moved on" to {@code ServiceImpl} before it reaches the point when it starts 762 looking for these annotations. 763 764 <pre> 765 bind(Service.class).toProvider(ServiceProvider.class);</pre> 766 767 In this example, {@code ServiceProvider} must extend or implement 768 {@code Provider<Service>}. This binding specifies that Guice should resolve 769 an unannotated injection request for {@code Service} by first resolving an 770 instance of {@code ServiceProvider} in the regular way, then calling 771 {@link Provider#get get()} on the resulting Provider instance to obtain the 772 {@code Service} instance. 773 774 <p>The {@link Provider} you use here does not have to be a "factory"; that 775 is, a provider which always <i>creates</i> each instance it provides. 776 However, this is generally a good practice to follow. You can then use 777 Guice's concept of {@link Scope scopes} to guide when creation should happen 778 -- "letting Guice work for you". 779 780 <pre> 781 bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class);</pre> 782 783 Like the previous example, but only applies to injection requests that use 784 the binding annotation {@code @Red}. If your module also includes bindings 785 for particular <i>values</i> of the {@code @Red} annotation (see below), 786 then this binding will serve as a "catch-all" for any values of {@code @Red} 787 that have no exact match in the bindings. 788 789 <pre> 790 bind(ServiceImpl.class).in(Singleton.class); 791 // or, alternatively 792 bind(ServiceImpl.class).in(Scopes.SINGLETON);</pre> 793 794 Either of these statements places the {@code ServiceImpl} class into 795 singleton scope. Guice will create only one instance of {@code ServiceImpl} 796 and will reuse it for all injection requests of this type. Note that it is 797 still possible to bind another instance of {@code ServiceImpl} if the second 798 binding is qualified by an annotation as in the previous example. Guice is 799 not overly concerned with <i>preventing</i> you from creating multiple 800 instances of your "singletons", only with <i>enabling</i> your application to 801 share only one instance if that's all you tell Guice you need. 802 803 <p><b>Note:</b> a scope specified in this way <i>overrides</i> any scope that 804 was specified with an annotation on the {@code ServiceImpl} class. 805 806 <p>Besides {@link Singleton}/{@link Scopes#SINGLETON}, there are 807 servlet-specific scopes available in 808 {@code com.google.inject.servlet.ServletScopes}, and your Modules can 809 contribute their own custom scopes for use here as well. 810 811 <pre> 812 bind(new TypeLiteral<PaymentService<CreditCard>>() {}) 813 .to(CreditCardPaymentService.class);</pre> 814 815 This admittedly odd construct is the way to bind a parameterized type. It 816 tells Guice how to honor an injection request for an element of type 817 {@code PaymentService<CreditCard>}. The class 818 {@code CreditCardPaymentService} must implement the 819 {@code PaymentService<CreditCard>} interface. Guice cannot currently bind or 820 inject a generic type, such as {@code Set<E>}; all type parameters must be 821 fully specified. 822 823 <pre> 824 bind(Service.class).toInstance(new ServiceImpl()); 825 // or, alternatively 826 bind(Service.class).toInstance(SomeLegacyRegistry.getService());</pre> 827 828 In this example, your module itself, <i>not Guice</i>, takes responsibility 829 for obtaining a {@code ServiceImpl} instance, then asks Guice to always use 830 this single instance to fulfill all {@code Service} injection requests. When 831 the {@link Injector} is created, it will automatically perform field 832 and method injection for this instance, but any injectable constructor on 833 {@code ServiceImpl} is simply ignored. Note that using this approach results 834 in "eager loading" behavior that you can't control. 835 836 <pre> 837 bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre> 838 839 Sets up a constant binding. Constant injections must always be annotated. 840 When a constant binding's value is a string, it is eligile for conversion to 841 all primitive types, to {@link Enum#valueOf(Class, String) all enums}, and to 842 {@link Class#forName class literals}. Conversions for other types can be 843 configured using {@link #convertToTypes(Matcher, TypeConverter) 844 convertToTypes()}. 845 846 <pre> 847 {@literal @}Color("red") Color red; // A member variable (field) 848 . . . 849 red = MyModule.class.getDeclaredField("red").getAnnotation(Color.class); 850 bind(Service.class).annotatedWith(red).to(RedService.class);</pre> 851 852 If your binding annotation has parameters you can apply different bindings to 853 different specific values of your annotation. Getting your hands on the 854 right instance of the annotation is a bit of a pain -- one approach, shown 855 above, is to apply a prototype annotation to a field in your module class, so 856 that you can read this annotation instance and give it to Guice. 857 858 <pre> 859 bind(Service.class) 860 .annotatedWith(Names.named("blue")) 861 .to(BlueService.class);</pre> 862 863 Differentiating by names is a common enough use case that we provided a 864 standard annotation, {@link com.google.inject.name.Named @Named}. Because of 865 Guice's library support, binding by name is quite easier than in the 866 arbitrary binding annotation case we just saw. However, remember that these 867 names will live in a single flat namespace with all the other names used in 868 your application. 869 870 <pre> 871 Constructor<T> loneCtor = getLoneCtorFromServiceImplViaReflection(); 872 bind(ServiceImpl.class) 873 .toConstructor(loneCtor);</pre> 874 875 In this example, we directly tell Guice which constructor to use in a concrete 876 class implementation. It means that we do not need to place {@literal @}Inject 877 on any of the constructors and that Guice treats the provided constructor as though 878 it were annotated so. It is useful for cases where you cannot modify existing 879 classes and is a bit simpler than using a {@link Provider}. 880 881 <p>The above list of examples is far from exhaustive. If you can think of 882 how the concepts of one example might coexist with the concepts from another, 883 you can most likely weave the two together. If the two concepts make no 884 sense with each other, you most likely won't be able to do it. In a few 885 cases Guice will let something bogus slip by, and will then inform you of 886 the problems at runtime, as soon as you try to create your Injector. 887 888 <p>The other methods of Binder such as {@link #bindScope}, 889 {@link #bindInterceptor}, {@link #install}, {@link #requestStaticInjection}, 890 {@link #addError} and {@link #currentStage} are not part of the Binding EDSL; 891 you can learn how to use these in the usual way, from the method 892 documentation. 893 894 @author crazybob@google.com (Bob Lee) 895 @author jessewilson@google.com (Jesse Wilson) 896 @author kevinb@google.com (Kevin Bourrillion)]]> 897 </doc> 898 </interface> 899 <!-- end interface com.google.inject.Binder --> 900 <!-- start interface com.google.inject.Binding --> 901 <interface name="Binding" abstract="true" 902 static="false" final="false" visibility="public" 903 deprecated="not deprecated"> 904 <implements name="com.google.inject.spi.Element"/> 905 <method name="getKey" return="com.google.inject.Key<T>" 906 abstract="true" native="false" synchronized="false" 907 static="false" final="false" visibility="public" 908 deprecated="not deprecated"> 909 <doc> 910 <![CDATA[Returns the key for this binding.]]> 911 </doc> 912 </method> 913 <method name="getProvider" return="com.google.inject.Provider<T>" 914 abstract="true" native="false" synchronized="false" 915 static="false" final="false" visibility="public" 916 deprecated="not deprecated"> 917 <doc> 918 <![CDATA[Returns the scoped provider guice uses to fulfill requests for this 919 binding. 920 921 @throws UnsupportedOperationException when invoked on a {@link Binding} 922 created via {@link com.google.inject.spi.Elements#getElements}. This 923 method is only supported on {@link Binding}s returned from an injector.]]> 924 </doc> 925 </method> 926 <method name="acceptTargetVisitor" return="V" 927 abstract="true" native="false" synchronized="false" 928 static="false" final="false" visibility="public" 929 deprecated="not deprecated"> 930 <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor<? super T, V>"/> 931 <doc> 932 <![CDATA[Accepts a target visitor. Invokes the visitor method specific to this binding's target. 933 934 @param visitor to call back on 935 @since 2.0]]> 936 </doc> 937 </method> 938 <method name="acceptScopingVisitor" return="V" 939 abstract="true" native="false" synchronized="false" 940 static="false" final="false" visibility="public" 941 deprecated="not deprecated"> 942 <param name="visitor" type="com.google.inject.spi.BindingScopingVisitor<V>"/> 943 <doc> 944 <![CDATA[Accepts a scoping visitor. Invokes the visitor method specific to this binding's scoping. 945 946 @param visitor to call back on 947 @since 2.0]]> 948 </doc> 949 </method> 950 <doc> 951 <![CDATA[A mapping from a key (type and optional annotation) to the strategy for getting instances of the 952 type. This interface is part of the introspection API and is intended primarily for use by 953 tools. 954 955 <p>Bindings are created in several ways: 956 <ul> 957 <li>Explicitly in a module, via {@code bind()} and {@code bindConstant()} 958 statements: 959 <pre> 960 bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class); 961 bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre></li> 962 <li>Implicitly by the Injector by following a type's {@link ImplementedBy 963 pointer} {@link ProvidedBy annotations} or by using its {@link Inject annotated} or 964 default constructor.</li> 965 <li>By converting a bound instance to a different type.</li> 966 <li>For {@link Provider providers}, by delegating to the binding for the provided type.</li> 967 </ul> 968 969 970 <p>They exist on both modules and on injectors, and their behaviour is different for each: 971 <ul> 972 <li><strong>Module bindings</strong> are incomplete and cannot be used to provide instances. 973 This is because the applicable scopes and interceptors may not be known until an injector 974 is created. From a tool's perspective, module bindings are like the injector's source 975 code. They can be inspected or rewritten, but this analysis must be done statically.</li> 976 <li><strong>Injector bindings</strong> are complete and valid and can be used to provide 977 instances. From a tools' perspective, injector bindings are like reflection for an 978 injector. They have full runtime information, including the complete graph of injections 979 necessary to satisfy a binding.</li> 980 </ul> 981 982 @param <T> the bound type. The injected is always assignable to this type. 983 984 @author crazybob@google.com (Bob Lee) 985 @author jessewilson@google.com (Jesse Wilson)]]> 986 </doc> 987 </interface> 988 <!-- end interface com.google.inject.Binding --> 989 <!-- start class com.google.inject.BindingAnnotation --> 990 <class name="BindingAnnotation" abstract="true" 991 static="false" final="false" visibility="public" 992 deprecated="not deprecated"> 993 <implements name="java.lang.annotation.Annotation"/> 994 <doc> 995 <![CDATA[Annotates annotations which are used for binding. Only one such annotation 996 may apply to a single injection point. You must also annotate binder 997 annotations with {@code @Retention(RUNTIME)}. For example: 998 999 <pre> 1000 {@code @}Retention(RUNTIME) 1001 {@code @}Target({ FIELD, PARAMETER, METHOD }) 1002 {@code @}BindingAnnotation 1003 public {@code @}interface Transactional {} 1004 </pre> 1005 1006 @author crazybob@google.com (Bob Lee)]]> 1007 </doc> 1008 </class> 1009 <!-- end class com.google.inject.BindingAnnotation --> 1010 <!-- start class com.google.inject.ConfigurationException --> 1011 <class name="ConfigurationException" extends="java.lang.RuntimeException" 1012 abstract="false" 1013 static="false" final="true" visibility="public" 1014 deprecated="not deprecated"> 1015 <constructor name="ConfigurationException" type="java.lang.Iterable<com.google.inject.spi.Message>" 1016 static="false" final="false" visibility="public" 1017 deprecated="not deprecated"> 1018 <doc> 1019 <![CDATA[Creates a ConfigurationException containing {@code messages}.]]> 1020 </doc> 1021 </constructor> 1022 <method name="withPartialValue" return="com.google.inject.ConfigurationException" 1023 abstract="false" native="false" synchronized="false" 1024 static="false" final="false" visibility="public" 1025 deprecated="not deprecated"> 1026 <param name="partialValue" type="java.lang.Object"/> 1027 <doc> 1028 <![CDATA[Returns a copy of this configuration exception with the specified partial value.]]> 1029 </doc> 1030 </method> 1031 <method name="getErrorMessages" return="java.util.Collection<com.google.inject.spi.Message>" 1032 abstract="false" native="false" synchronized="false" 1033 static="false" final="false" visibility="public" 1034 deprecated="not deprecated"> 1035 <doc> 1036 <![CDATA[Returns messages for the errors that caused this exception.]]> 1037 </doc> 1038 </method> 1039 <method name="getPartialValue" return="E" 1040 abstract="false" native="false" synchronized="false" 1041 static="false" final="false" visibility="public" 1042 deprecated="not deprecated"> 1043 <doc> 1044 <![CDATA[Returns a value that was only partially computed due to this exception. The caller can use 1045 this while collecting additional configuration problems. 1046 1047 @return the partial value, or {@code null} if none was set. The type of the partial value is 1048 specified by the throwing method.]]> 1049 </doc> 1050 </method> 1051 <method name="getMessage" return="java.lang.String" 1052 abstract="false" native="false" synchronized="false" 1053 static="false" final="false" visibility="public" 1054 deprecated="not deprecated"> 1055 </method> 1056 <doc> 1057 <![CDATA[Thrown when a programming error such as a misplaced annotation, illegal binding, or unsupported 1058 scope is found. Clients should catch this exception, log it, and stop execution. 1059 1060 @author jessewilson@google.com (Jesse Wilson) 1061 @since 2.0]]> 1062 </doc> 1063 </class> 1064 <!-- end class com.google.inject.ConfigurationException --> 1065 <!-- start class com.google.inject.CreationException --> 1066 <class name="CreationException" extends="java.lang.RuntimeException" 1067 abstract="false" 1068 static="false" final="false" visibility="public" 1069 deprecated="not deprecated"> 1070 <constructor name="CreationException" type="java.util.Collection<com.google.inject.spi.Message>" 1071 static="false" final="false" visibility="public" 1072 deprecated="not deprecated"> 1073 <doc> 1074 <![CDATA[Creates a CreationException containing {@code messages}.]]> 1075 </doc> 1076 </constructor> 1077 <method name="getErrorMessages" return="java.util.Collection<com.google.inject.spi.Message>" 1078 abstract="false" native="false" synchronized="false" 1079 static="false" final="false" visibility="public" 1080 deprecated="not deprecated"> 1081 <doc> 1082 <![CDATA[Returns messages for the errors that caused this exception.]]> 1083 </doc> 1084 </method> 1085 <method name="getMessage" return="java.lang.String" 1086 abstract="false" native="false" synchronized="false" 1087 static="false" final="false" visibility="public" 1088 deprecated="not deprecated"> 1089 </method> 1090 <doc> 1091 <![CDATA[Thrown when errors occur while creating a {@link Injector}. Includes a list of encountered 1092 errors. Clients should catch this exception, log it, and stop execution. 1093 1094 @author crazybob@google.com (Bob Lee)]]> 1095 </doc> 1096 </class> 1097 <!-- end class com.google.inject.CreationException --> 1098 <!-- start class com.google.inject.Exposed --> 1099 <class name="Exposed" abstract="true" 1100 static="false" final="false" visibility="public" 1101 deprecated="not deprecated"> 1102 <implements name="java.lang.annotation.Annotation"/> 1103 <doc> 1104 <![CDATA[Acccompanies a {@literal @}{@link com.google.inject.Provides Provides} method annotation in a 1105 private module to indicate that the provided binding is exposed. 1106 1107 @author jessewilson@google.com (Jesse Wilson) 1108 @since 2.0]]> 1109 </doc> 1110 </class> 1111 <!-- end class com.google.inject.Exposed --> 1112 <!-- start class com.google.inject.Guice --> 1113 <class name="Guice" extends="java.lang.Object" 1114 abstract="false" 1115 static="false" final="true" visibility="public" 1116 deprecated="not deprecated"> 1117 <method name="createInjector" return="com.google.inject.Injector" 1118 abstract="false" native="false" synchronized="false" 1119 static="true" final="false" visibility="public" 1120 deprecated="not deprecated"> 1121 <param name="modules" type="com.google.inject.Module[]"/> 1122 <doc> 1123 <![CDATA[Creates an injector for the given set of modules. This is equivalent to 1124 calling {@link #createInjector(Stage, Module...)} with Stage.DEVELOPMENT. 1125 1126 @throws CreationException if one or more errors occur during injector 1127 construction]]> 1128 </doc> 1129 </method> 1130 <method name="createInjector" return="com.google.inject.Injector" 1131 abstract="false" native="false" synchronized="false" 1132 static="true" final="false" visibility="public" 1133 deprecated="not deprecated"> 1134 <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 1135 <doc> 1136 <![CDATA[Creates an injector for the given set of modules. This is equivalent to 1137 calling {@link #createInjector(Stage, Iterable)} with Stage.DEVELOPMENT. 1138 1139 @throws CreationException if one or more errors occur during injector 1140 creation]]> 1141 </doc> 1142 </method> 1143 <method name="createInjector" return="com.google.inject.Injector" 1144 abstract="false" native="false" synchronized="false" 1145 static="true" final="false" visibility="public" 1146 deprecated="not deprecated"> 1147 <param name="stage" type="com.google.inject.Stage"/> 1148 <param name="modules" type="com.google.inject.Module[]"/> 1149 <doc> 1150 <![CDATA[Creates an injector for the given set of modules, in a given development 1151 stage. 1152 1153 @throws CreationException if one or more errors occur during injector 1154 creation.]]> 1155 </doc> 1156 </method> 1157 <method name="createInjector" return="com.google.inject.Injector" 1158 abstract="false" native="false" synchronized="false" 1159 static="true" final="false" visibility="public" 1160 deprecated="not deprecated"> 1161 <param name="stage" type="com.google.inject.Stage"/> 1162 <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 1163 <doc> 1164 <![CDATA[Creates an injector for the given set of modules, in a given development 1165 stage. 1166 1167 @throws CreationException if one or more errors occur during injector 1168 construction]]> 1169 </doc> 1170 </method> 1171 <doc> 1172 <![CDATA[The entry point to the Guice framework. Creates {@link Injector}s from 1173 {@link Module}s. 1174 1175 <p>Guice supports a model of development that draws clear boundaries between 1176 APIs, Implementations of these APIs, Modules which configure these 1177 implementations, and finally Applications which consist of a collection of 1178 Modules. It is the Application, which typically defines your {@code main()} 1179 method, that bootstraps the Guice Injector using the {@code Guice} class, as 1180 in this example: 1181 <pre> 1182 public class FooApplication { 1183 public static void main(String[] args) { 1184 Injector injector = Guice.createInjector( 1185 new ModuleA(), 1186 new ModuleB(), 1187 . . . 1188 new FooApplicationFlagsModule(args) 1189 ); 1190 1191 // Now just bootstrap the application and you're done 1192 FooStarter starter = injector.getInstance(FooStarter.class); 1193 starter.runApplication(); 1194 } 1195 } 1196 </pre>]]> 1197 </doc> 1198 </class> 1199 <!-- end class com.google.inject.Guice --> 1200 <!-- start class com.google.inject.ImplementedBy --> 1201 <class name="ImplementedBy" abstract="true" 1202 static="false" final="false" visibility="public" 1203 deprecated="not deprecated"> 1204 <implements name="java.lang.annotation.Annotation"/> 1205 <doc> 1206 <![CDATA[A pointer to the default implementation of a type. 1207 1208 @author crazybob@google.com (Bob Lee)]]> 1209 </doc> 1210 </class> 1211 <!-- end class com.google.inject.ImplementedBy --> 1212 <!-- start class com.google.inject.Inject --> 1213 <class name="Inject" abstract="true" 1214 static="false" final="false" visibility="public" 1215 deprecated="not deprecated"> 1216 <implements name="java.lang.annotation.Annotation"/> 1217 <doc> 1218 <![CDATA[Annotates members of your implementation class (constructors, methods 1219 and fields) into which the {@link Injector} should inject values. 1220 The Injector fulfills injection requests for: 1221 1222 <ul> 1223 <li>Every instance it constructs. The class being constructed must have 1224 exactly one of its constructors marked with {@code @Inject} or must have a 1225 constructor taking no parameters. The Injector then proceeds to perform 1226 field and method injections. 1227 1228 <li>Pre-constructed instances passed to {@link Injector#injectMembers}, 1229 {@link com.google.inject.binder.LinkedBindingBuilder#toInstance(Object)} and 1230 {@link com.google.inject.binder.LinkedBindingBuilder#toProvider(javax.inject.Provider)}. 1231 In this case all constructors are, of course, ignored. 1232 1233 <li>Static fields and methods of classes which any {@link Module} has 1234 specifically requested static injection for, using 1235 {@link Binder#requestStaticInjection}. 1236 </ul> 1237 1238 In all cases, a member can be injected regardless of its Java access 1239 specifier (private, default, protected, public). 1240 1241 @author crazybob@google.com (Bob Lee)]]> 1242 </doc> 1243 </class> 1244 <!-- end class com.google.inject.Inject --> 1245 <!-- start interface com.google.inject.Injector --> 1246 <interface name="Injector" abstract="true" 1247 static="false" final="false" visibility="public" 1248 deprecated="not deprecated"> 1249 <method name="injectMembers" 1250 abstract="true" native="false" synchronized="false" 1251 static="false" final="false" visibility="public" 1252 deprecated="not deprecated"> 1253 <param name="instance" type="java.lang.Object"/> 1254 <doc> 1255 <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or 1256 absence of an injectable constructor. 1257 1258 <p>Whenever Guice creates an instance, it performs this injection automatically (after first 1259 performing constructor injection), so if you're able to let Guice create all your objects for 1260 you, you'll never need to use this method. 1261 1262 @param instance to inject members on 1263 1264 @see Binder#getMembersInjector(Class) for a preferred alternative that supports checks before 1265 run time]]> 1266 </doc> 1267 </method> 1268 <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 1269 abstract="true" native="false" synchronized="false" 1270 static="false" final="false" visibility="public" 1271 deprecated="not deprecated"> 1272 <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1273 <doc> 1274 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 1275 of the given type {@code T}. 1276 1277 @param typeLiteral type to get members injector for 1278 @see Binder#getMembersInjector(TypeLiteral) for an alternative that offers up front error 1279 detection 1280 @since 2.0]]> 1281 </doc> 1282 </method> 1283 <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 1284 abstract="true" native="false" synchronized="false" 1285 static="false" final="false" visibility="public" 1286 deprecated="not deprecated"> 1287 <param name="type" type="java.lang.Class<T>"/> 1288 <doc> 1289 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 1290 of the given type {@code T}. When feasible, use {@link Binder#getMembersInjector(TypeLiteral)} 1291 instead to get increased up front error detection. 1292 1293 @param type type to get members injector for 1294 @see Binder#getMembersInjector(Class) for an alternative that offers up front error 1295 detection 1296 @since 2.0]]> 1297 </doc> 1298 </method> 1299 <method name="getBindings" return="java.util.Map<com.google.inject.Key<?>, com.google.inject.Binding<?>>" 1300 abstract="true" native="false" synchronized="false" 1301 static="false" final="false" visibility="public" 1302 deprecated="not deprecated"> 1303 <doc> 1304 <![CDATA[Returns this injector's <strong>explicit</strong> bindings. 1305 1306 <p>The returned map does not include bindings inherited from a {@link #getParent() parent 1307 injector}, should one exist. The returned map is guaranteed to iterate (for example, with 1308 its {@link Map#entrySet()} iterator) in the order of insertion. In other words, the order in 1309 which bindings appear in user Modules. 1310 1311 <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]> 1312 </doc> 1313 </method> 1314 <method name="getAllBindings" return="java.util.Map<com.google.inject.Key<?>, com.google.inject.Binding<?>>" 1315 abstract="true" native="false" synchronized="false" 1316 static="false" final="false" visibility="public" 1317 deprecated="not deprecated"> 1318 <doc> 1319 <![CDATA[Returns a snapshot of this injector's bindings, <strong>both explicit and 1320 just-in-time</strong>. The returned map is immutable; it contains only the bindings that were 1321 present when {@code getAllBindings()} was invoked. Subsequent calls may return a map with 1322 additional just-in-time bindings. 1323 1324 <p>The returned map does not include bindings inherited from a {@link #getParent() parent 1325 injector}, should one exist. 1326 1327 <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1328 1329 @since 3.0]]> 1330 </doc> 1331 </method> 1332 <method name="getBinding" return="com.google.inject.Binding<T>" 1333 abstract="true" native="false" synchronized="false" 1334 static="false" final="false" visibility="public" 1335 deprecated="not deprecated"> 1336 <param name="key" type="com.google.inject.Key<T>"/> 1337 <doc> 1338 <![CDATA[Returns the binding for the given injection key. This will be an explicit bindings if the key 1339 was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will 1340 be created if necessary. 1341 1342 <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1343 1344 @throws ConfigurationException if this injector cannot find or create the binding.]]> 1345 </doc> 1346 </method> 1347 <method name="getBinding" return="com.google.inject.Binding<T>" 1348 abstract="true" native="false" synchronized="false" 1349 static="false" final="false" visibility="public" 1350 deprecated="not deprecated"> 1351 <param name="type" type="java.lang.Class<T>"/> 1352 <doc> 1353 <![CDATA[Returns the binding for the given type. This will be an explicit bindings if the injection key 1354 was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will 1355 be created if necessary. 1356 1357 <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1358 1359 @throws ConfigurationException if this injector cannot find or create the binding. 1360 @since 2.0]]> 1361 </doc> 1362 </method> 1363 <method name="getExistingBinding" return="com.google.inject.Binding<T>" 1364 abstract="true" native="false" synchronized="false" 1365 static="false" final="false" visibility="public" 1366 deprecated="not deprecated"> 1367 <param name="key" type="com.google.inject.Key<T>"/> 1368 <doc> 1369 <![CDATA[Returns the binding if it already exists, or null if does not exist. Unlike 1370 {@link #getBinding(Key)}, this does not attempt to create just-in-time bindings 1371 for keys that aren't bound. 1372 1373 <p> This method is part of the Guice SPI and is intended for use by tools and extensions. 1374 1375 @since 3.0]]> 1376 </doc> 1377 </method> 1378 <method name="findBindingsByType" return="java.util.List<com.google.inject.Binding<T>>" 1379 abstract="true" native="false" synchronized="false" 1380 static="false" final="false" visibility="public" 1381 deprecated="not deprecated"> 1382 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 1383 <doc> 1384 <![CDATA[Returns all explicit bindings for {@code type}. 1385 1386 <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]> 1387 </doc> 1388 </method> 1389 <method name="getProvider" return="com.google.inject.Provider<T>" 1390 abstract="true" native="false" synchronized="false" 1391 static="false" final="false" visibility="public" 1392 deprecated="not deprecated"> 1393 <param name="key" type="com.google.inject.Key<T>"/> 1394 <doc> 1395 <![CDATA[Returns the provider used to obtain instances for the given injection key. When feasible, avoid 1396 using this method, in favor of having Guice inject your dependencies ahead of time. 1397 1398 @throws ConfigurationException if this injector cannot find or create the provider. 1399 @see Binder#getProvider(Key) for an alternative that offers up front error detection]]> 1400 </doc> 1401 </method> 1402 <method name="getProvider" return="com.google.inject.Provider<T>" 1403 abstract="true" native="false" synchronized="false" 1404 static="false" final="false" visibility="public" 1405 deprecated="not deprecated"> 1406 <param name="type" type="java.lang.Class<T>"/> 1407 <doc> 1408 <![CDATA[Returns the provider used to obtain instances for the given type. When feasible, avoid 1409 using this method, in favor of having Guice inject your dependencies ahead of time. 1410 1411 @throws ConfigurationException if this injector cannot find or create the provider. 1412 @see Binder#getProvider(Class) for an alternative that offers up front error detection]]> 1413 </doc> 1414 </method> 1415 <method name="getInstance" return="T" 1416 abstract="true" native="false" synchronized="false" 1417 static="false" final="false" visibility="public" 1418 deprecated="not deprecated"> 1419 <param name="key" type="com.google.inject.Key<T>"/> 1420 <doc> 1421 <![CDATA[Returns the appropriate instance for the given injection key; equivalent to {@code 1422 getProvider(key).get()}. When feasible, avoid using this method, in favor of having Guice 1423 inject your dependencies ahead of time. 1424 1425 @throws ConfigurationException if this injector cannot find or create the provider. 1426 @throws ProvisionException if there was a runtime failure while providing an instance.]]> 1427 </doc> 1428 </method> 1429 <method name="getInstance" return="T" 1430 abstract="true" native="false" synchronized="false" 1431 static="false" final="false" visibility="public" 1432 deprecated="not deprecated"> 1433 <param name="type" type="java.lang.Class<T>"/> 1434 <doc> 1435 <![CDATA[Returns the appropriate instance for the given injection type; equivalent to {@code 1436 getProvider(type).get()}. When feasible, avoid using this method, in favor of having Guice 1437 inject your dependencies ahead of time. 1438 1439 @throws ConfigurationException if this injector cannot find or create the provider. 1440 @throws ProvisionException if there was a runtime failure while providing an instance.]]> 1441 </doc> 1442 </method> 1443 <method name="getParent" return="com.google.inject.Injector" 1444 abstract="true" native="false" synchronized="false" 1445 static="false" final="false" visibility="public" 1446 deprecated="not deprecated"> 1447 <doc> 1448 <![CDATA[Returns this injector's parent, or {@code null} if this is a top-level injector. 1449 1450 @since 2.0]]> 1451 </doc> 1452 </method> 1453 <method name="createChildInjector" return="com.google.inject.Injector" 1454 abstract="true" native="false" synchronized="false" 1455 static="false" final="false" visibility="public" 1456 deprecated="not deprecated"> 1457 <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 1458 <doc> 1459 <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes, 1460 interceptors and type converters are inherited -- they are visible to the child injector. 1461 Elements of the child injector are not visible to its parent. 1462 1463 <p>Just-in-time bindings created for child injectors will be created in an ancestor injector 1464 whenever possible. This allows for scoped instances to be shared between injectors. Use 1465 explicit bindings to prevent bindings from being shared with the parent injector. Optional 1466 injections in just-in-time bindings (created in the parent injector) may be silently 1467 ignored if the optional dependencies are from the child injector. 1468 1469 <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time 1470 bindings. The lone exception is the key for {@code Injector.class}, which is bound by each 1471 injector to itself. 1472 1473 @since 2.0]]> 1474 </doc> 1475 </method> 1476 <method name="createChildInjector" return="com.google.inject.Injector" 1477 abstract="true" native="false" synchronized="false" 1478 static="false" final="false" visibility="public" 1479 deprecated="not deprecated"> 1480 <param name="modules" type="com.google.inject.Module[]"/> 1481 <doc> 1482 <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes, 1483 interceptors and type converters are inherited -- they are visible to the child injector. 1484 Elements of the child injector are not visible to its parent. 1485 1486 <p>Just-in-time bindings created for child injectors will be created in an ancestor injector 1487 whenever possible. This allows for scoped instances to be shared between injectors. Use 1488 explicit bindings to prevent bindings from being shared with the parent injector. 1489 1490 <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time 1491 bindings. The lone exception is the key for {@code Injector.class}, which is bound by each 1492 injector to itself. 1493 1494 @since 2.0]]> 1495 </doc> 1496 </method> 1497 <method name="getScopeBindings" return="java.util.Map<java.lang.Class<? extends java.lang.annotation.Annotation>, com.google.inject.Scope>" 1498 abstract="true" native="false" synchronized="false" 1499 static="false" final="false" visibility="public" 1500 deprecated="not deprecated"> 1501 <doc> 1502 <![CDATA[Returns a map containing all scopes in the injector. The maps keys are scoping annotations 1503 like {@code Singleton.class}, and the values are scope instances, such as {@code 1504 Scopes.SINGLETON}. The returned map is immutable. 1505 1506 <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1507 1508 @since 3.0]]> 1509 </doc> 1510 </method> 1511 <method name="getTypeConverterBindings" return="java.util.Set<com.google.inject.spi.TypeConverterBinding>" 1512 abstract="true" native="false" synchronized="false" 1513 static="false" final="false" visibility="public" 1514 deprecated="not deprecated"> 1515 <doc> 1516 <![CDATA[Returns a set containing all type converter bindings in the injector. The returned set is 1517 immutable. 1518 1519 <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1520 1521 @since 3.0]]> 1522 </doc> 1523 </method> 1524 <doc> 1525 <![CDATA[Builds the graphs of objects that make up your application. The injector tracks the dependencies 1526 for each type and uses bindings to inject them. This is the core of Guice, although you rarely 1527 interact with it directly. This "behind-the-scenes" operation is what distinguishes dependency 1528 injection from its cousin, the service locator pattern. 1529 1530 <p>Contains several default bindings: 1531 1532 <ul> 1533 <li>This {@link Injector} instance itself 1534 <li>A {@code Provider<T>} for each binding of type {@code T} 1535 <li>The {@link java.util.logging.Logger} for the class being injected 1536 <li>The {@link Stage} in which the Injector was created 1537 </ul> 1538 1539 Injectors are created using the facade class {@link Guice}. 1540 1541 <p>An injector can also {@link #injectMembers(Object) inject the dependencies} of 1542 already-constructed instances. This can be used to interoperate with objects created by other 1543 frameworks or services. 1544 1545 <p>Injectors can be {@link #createChildInjector(Iterable) hierarchical}. Child injectors inherit 1546 the configuration of their parent injectors, but the converse does not hold. 1547 1548 <p>The injector's {@link #getBindings() internal bindings} are available for introspection. This 1549 enables tools and extensions to operate on an injector reflectively. 1550 1551 @author crazybob@google.com (Bob Lee) 1552 @author jessewilson@google.com (Jesse Wilson)]]> 1553 </doc> 1554 </interface> 1555 <!-- end interface com.google.inject.Injector --> 1556 <!-- start class com.google.inject.Key --> 1557 <class name="Key" extends="java.lang.Object" 1558 abstract="false" 1559 static="false" final="false" visibility="public" 1560 deprecated="not deprecated"> 1561 <constructor name="Key" type="java.lang.Class<? extends java.lang.annotation.Annotation>" 1562 static="false" final="false" visibility="protected" 1563 deprecated="not deprecated"> 1564 <doc> 1565 <![CDATA[Constructs a new key. Derives the type from this class's type parameter. 1566 1567 <p>Clients create an empty anonymous subclass. Doing so embeds the type 1568 parameter in the anonymous class's type hierarchy so we can reconstitute it 1569 at runtime despite erasure. 1570 1571 <p>Example usage for a binding of type {@code Foo} annotated with 1572 {@code @Bar}: 1573 1574 <p>{@code new Key<Foo>(Bar.class) {}}.]]> 1575 </doc> 1576 </constructor> 1577 <constructor name="Key" type="java.lang.annotation.Annotation" 1578 static="false" final="false" visibility="protected" 1579 deprecated="not deprecated"> 1580 <doc> 1581 <![CDATA[Constructs a new key. Derives the type from this class's type parameter. 1582 1583 <p>Clients create an empty anonymous subclass. Doing so embeds the type 1584 parameter in the anonymous class's type hierarchy so we can reconstitute it 1585 at runtime despite erasure. 1586 1587 <p>Example usage for a binding of type {@code Foo} annotated with 1588 {@code @Bar}: 1589 1590 <p>{@code new Key<Foo>(new Bar()) {}}.]]> 1591 </doc> 1592 </constructor> 1593 <constructor name="Key" 1594 static="false" final="false" visibility="protected" 1595 deprecated="not deprecated"> 1596 <doc> 1597 <![CDATA[Constructs a new key. Derives the type from this class's type parameter. 1598 1599 <p>Clients create an empty anonymous subclass. Doing so embeds the type 1600 parameter in the anonymous class's type hierarchy so we can reconstitute it 1601 at runtime despite erasure. 1602 1603 <p>Example usage for a binding of type {@code Foo}: 1604 1605 <p>{@code new Key<Foo>() {}}.]]> 1606 </doc> 1607 </constructor> 1608 <method name="getTypeLiteral" return="com.google.inject.TypeLiteral<T>" 1609 abstract="false" native="false" synchronized="false" 1610 static="false" final="true" visibility="public" 1611 deprecated="not deprecated"> 1612 <doc> 1613 <![CDATA[Gets the key type.]]> 1614 </doc> 1615 </method> 1616 <method name="getAnnotationType" return="java.lang.Class<? extends java.lang.annotation.Annotation>" 1617 abstract="false" native="false" synchronized="false" 1618 static="false" final="true" visibility="public" 1619 deprecated="not deprecated"> 1620 <doc> 1621 <![CDATA[Gets the annotation type.]]> 1622 </doc> 1623 </method> 1624 <method name="getAnnotation" return="java.lang.annotation.Annotation" 1625 abstract="false" native="false" synchronized="false" 1626 static="false" final="true" visibility="public" 1627 deprecated="not deprecated"> 1628 <doc> 1629 <![CDATA[Gets the annotation.]]> 1630 </doc> 1631 </method> 1632 <method name="equals" return="boolean" 1633 abstract="false" native="false" synchronized="false" 1634 static="false" final="true" visibility="public" 1635 deprecated="not deprecated"> 1636 <param name="o" type="java.lang.Object"/> 1637 </method> 1638 <method name="hashCode" return="int" 1639 abstract="false" native="false" synchronized="false" 1640 static="false" final="true" visibility="public" 1641 deprecated="not deprecated"> 1642 </method> 1643 <method name="toString" return="java.lang.String" 1644 abstract="false" native="false" synchronized="false" 1645 static="false" final="true" visibility="public" 1646 deprecated="not deprecated"> 1647 </method> 1648 <method name="get" return="com.google.inject.Key<T>" 1649 abstract="false" native="false" synchronized="false" 1650 static="true" final="false" visibility="public" 1651 deprecated="not deprecated"> 1652 <param name="type" type="java.lang.Class<T>"/> 1653 <doc> 1654 <![CDATA[Gets a key for an injection type.]]> 1655 </doc> 1656 </method> 1657 <method name="get" return="com.google.inject.Key<T>" 1658 abstract="false" native="false" synchronized="false" 1659 static="true" final="false" visibility="public" 1660 deprecated="not deprecated"> 1661 <param name="type" type="java.lang.Class<T>"/> 1662 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 1663 <doc> 1664 <![CDATA[Gets a key for an injection type and an annotation type.]]> 1665 </doc> 1666 </method> 1667 <method name="get" return="com.google.inject.Key<T>" 1668 abstract="false" native="false" synchronized="false" 1669 static="true" final="false" visibility="public" 1670 deprecated="not deprecated"> 1671 <param name="type" type="java.lang.Class<T>"/> 1672 <param name="annotation" type="java.lang.annotation.Annotation"/> 1673 <doc> 1674 <![CDATA[Gets a key for an injection type and an annotation.]]> 1675 </doc> 1676 </method> 1677 <method name="get" return="com.google.inject.Key<?>" 1678 abstract="false" native="false" synchronized="false" 1679 static="true" final="false" visibility="public" 1680 deprecated="not deprecated"> 1681 <param name="type" type="java.lang.reflect.Type"/> 1682 <doc> 1683 <![CDATA[Gets a key for an injection type.]]> 1684 </doc> 1685 </method> 1686 <method name="get" return="com.google.inject.Key<?>" 1687 abstract="false" native="false" synchronized="false" 1688 static="true" final="false" visibility="public" 1689 deprecated="not deprecated"> 1690 <param name="type" type="java.lang.reflect.Type"/> 1691 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 1692 <doc> 1693 <![CDATA[Gets a key for an injection type and an annotation type.]]> 1694 </doc> 1695 </method> 1696 <method name="get" return="com.google.inject.Key<?>" 1697 abstract="false" native="false" synchronized="false" 1698 static="true" final="false" visibility="public" 1699 deprecated="not deprecated"> 1700 <param name="type" type="java.lang.reflect.Type"/> 1701 <param name="annotation" type="java.lang.annotation.Annotation"/> 1702 <doc> 1703 <![CDATA[Gets a key for an injection type and an annotation.]]> 1704 </doc> 1705 </method> 1706 <method name="get" return="com.google.inject.Key<T>" 1707 abstract="false" native="false" synchronized="false" 1708 static="true" final="false" visibility="public" 1709 deprecated="not deprecated"> 1710 <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1711 <doc> 1712 <![CDATA[Gets a key for an injection type.]]> 1713 </doc> 1714 </method> 1715 <method name="get" return="com.google.inject.Key<T>" 1716 abstract="false" native="false" synchronized="false" 1717 static="true" final="false" visibility="public" 1718 deprecated="not deprecated"> 1719 <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1720 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 1721 <doc> 1722 <![CDATA[Gets a key for an injection type and an annotation type.]]> 1723 </doc> 1724 </method> 1725 <method name="get" return="com.google.inject.Key<T>" 1726 abstract="false" native="false" synchronized="false" 1727 static="true" final="false" visibility="public" 1728 deprecated="not deprecated"> 1729 <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1730 <param name="annotation" type="java.lang.annotation.Annotation"/> 1731 <doc> 1732 <![CDATA[Gets a key for an injection type and an annotation.]]> 1733 </doc> 1734 </method> 1735 <method name="ofType" return="com.google.inject.Key<T>" 1736 abstract="false" native="false" synchronized="false" 1737 static="false" final="false" visibility="public" 1738 deprecated="not deprecated"> 1739 <param name="type" type="java.lang.Class<T>"/> 1740 <doc> 1741 <![CDATA[Returns a new key of the specified type with the same annotation as this 1742 key. 1743 1744 @since 3.0]]> 1745 </doc> 1746 </method> 1747 <method name="ofType" return="com.google.inject.Key<?>" 1748 abstract="false" native="false" synchronized="false" 1749 static="false" final="false" visibility="public" 1750 deprecated="not deprecated"> 1751 <param name="type" type="java.lang.reflect.Type"/> 1752 <doc> 1753 <![CDATA[Returns a new key of the specified type with the same annotation as this 1754 key. 1755 1756 @since 3.0]]> 1757 </doc> 1758 </method> 1759 <method name="ofType" return="com.google.inject.Key<T>" 1760 abstract="false" native="false" synchronized="false" 1761 static="false" final="false" visibility="public" 1762 deprecated="not deprecated"> 1763 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 1764 <doc> 1765 <![CDATA[Returns a new key of the specified type with the same annotation as this 1766 key. 1767 1768 @since 3.0]]> 1769 </doc> 1770 </method> 1771 <method name="hasAttributes" return="boolean" 1772 abstract="false" native="false" synchronized="false" 1773 static="false" final="false" visibility="public" 1774 deprecated="not deprecated"> 1775 <doc> 1776 <![CDATA[Returns true if this key has annotation attributes. 1777 1778 @since 3.0]]> 1779 </doc> 1780 </method> 1781 <method name="withoutAttributes" return="com.google.inject.Key<T>" 1782 abstract="false" native="false" synchronized="false" 1783 static="false" final="false" visibility="public" 1784 deprecated="not deprecated"> 1785 <doc> 1786 <![CDATA[Returns this key without annotation attributes, i.e. with only the 1787 annotation type. 1788 1789 @since 3.0]]> 1790 </doc> 1791 </method> 1792 <doc> 1793 <![CDATA[Binding key consisting of an injection type and an optional annotation. 1794 Matches the type and annotation at a point of injection. 1795 1796 <p>For example, {@code Key.get(Service.class, Transactional.class)} will 1797 match: 1798 1799 <pre> 1800 {@literal @}Inject 1801 public void setService({@literal @}Transactional Service service) { 1802 ... 1803 } 1804 </pre> 1805 1806 <p>{@code Key} supports generic types via subclassing just like {@link 1807 TypeLiteral}. 1808 1809 <p>Keys do not differentiate between primitive types (int, char, etc.) and 1810 their corresponding wrapper types (Integer, Character, etc.). Primitive 1811 types will be replaced with their wrapper types when keys are created. 1812 1813 @author crazybob@google.com (Bob Lee)]]> 1814 </doc> 1815 </class> 1816 <!-- end class com.google.inject.Key --> 1817 <!-- start interface com.google.inject.MembersInjector --> 1818 <interface name="MembersInjector" abstract="true" 1819 static="false" final="false" visibility="public" 1820 deprecated="not deprecated"> 1821 <method name="injectMembers" 1822 abstract="true" native="false" synchronized="false" 1823 static="false" final="false" visibility="public" 1824 deprecated="not deprecated"> 1825 <param name="instance" type="T"/> 1826 <doc> 1827 <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or 1828 absence of an injectable constructor. 1829 1830 <p>Whenever Guice creates an instance, it performs this injection automatically (after first 1831 performing constructor injection), so if you're able to let Guice create all your objects for 1832 you, you'll never need to use this method. 1833 1834 @param instance to inject members on. May be {@code null}.]]> 1835 </doc> 1836 </method> 1837 <doc> 1838 <![CDATA[Injects dependencies into the fields and methods on instances of type {@code T}. Ignores the 1839 presence or absence of an injectable constructor. 1840 1841 @param <T> type to inject members of 1842 1843 @author crazybob@google.com (Bob Lee) 1844 @author jessewilson@google.com (Jesse Wilson) 1845 @since 2.0]]> 1846 </doc> 1847 </interface> 1848 <!-- end interface com.google.inject.MembersInjector --> 1849 <!-- start interface com.google.inject.Module --> 1850 <interface name="Module" abstract="true" 1851 static="false" final="false" visibility="public" 1852 deprecated="not deprecated"> 1853 <method name="configure" 1854 abstract="true" native="false" synchronized="false" 1855 static="false" final="false" visibility="public" 1856 deprecated="not deprecated"> 1857 <param name="binder" type="com.google.inject.Binder"/> 1858 <doc> 1859 <![CDATA[Contributes bindings and other configurations for this module to {@code binder}. 1860 1861 <p><strong>Do not invoke this method directly</strong> to install submodules. Instead use 1862 {@link Binder#install(Module)}, which ensures that {@link Provides provider methods} are 1863 discovered.]]> 1864 </doc> 1865 </method> 1866 <doc> 1867 <![CDATA[A module contributes configuration information, typically interface 1868 bindings, which will be used to create an {@link Injector}. A Guice-based 1869 application is ultimately composed of little more than a set of 1870 {@code Module}s and some bootstrapping code. 1871 1872 <p>Your Module classes can use a more streamlined syntax by extending 1873 {@link AbstractModule} rather than implementing this interface directly. 1874 1875 <p>In addition to the bindings configured via {@link #configure}, bindings 1876 will be created for all methods annotated with {@literal @}{@link Provides}. 1877 Use scope and binding annotations on these methods to configure the 1878 bindings.]]> 1879 </doc> 1880 </interface> 1881 <!-- end interface com.google.inject.Module --> 1882 <!-- start class com.google.inject.OutOfScopeException --> 1883 <class name="OutOfScopeException" extends="java.lang.RuntimeException" 1884 abstract="false" 1885 static="false" final="true" visibility="public" 1886 deprecated="not deprecated"> 1887 <constructor name="OutOfScopeException" type="java.lang.String" 1888 static="false" final="false" visibility="public" 1889 deprecated="not deprecated"> 1890 </constructor> 1891 <constructor name="OutOfScopeException" type="java.lang.String, java.lang.Throwable" 1892 static="false" final="false" visibility="public" 1893 deprecated="not deprecated"> 1894 </constructor> 1895 <constructor name="OutOfScopeException" type="java.lang.Throwable" 1896 static="false" final="false" visibility="public" 1897 deprecated="not deprecated"> 1898 </constructor> 1899 <doc> 1900 <![CDATA[Thrown from {@link Provider#get} when an attempt is made to access a scoped 1901 object while the scope in question is not currently active. 1902 1903 @author kevinb@google.com (Kevin Bourrillion) 1904 @since 2.0]]> 1905 </doc> 1906 </class> 1907 <!-- end class com.google.inject.OutOfScopeException --> 1908 <!-- start interface com.google.inject.PrivateBinder --> 1909 <interface name="PrivateBinder" abstract="true" 1910 static="false" final="false" visibility="public" 1911 deprecated="not deprecated"> 1912 <implements name="com.google.inject.Binder"/> 1913 <method name="expose" 1914 abstract="true" native="false" synchronized="false" 1915 static="false" final="false" visibility="public" 1916 deprecated="not deprecated"> 1917 <param name="key" type="com.google.inject.Key<?>"/> 1918 <doc> 1919 <![CDATA[Makes the binding for {@code key} available to the enclosing environment]]> 1920 </doc> 1921 </method> 1922 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 1923 abstract="true" native="false" synchronized="false" 1924 static="false" final="false" visibility="public" 1925 deprecated="not deprecated"> 1926 <param name="type" type="java.lang.Class<?>"/> 1927 <doc> 1928 <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link 1929 com.google.inject.binder.AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 1930 binding annotation.]]> 1931 </doc> 1932 </method> 1933 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 1934 abstract="true" native="false" synchronized="false" 1935 static="false" final="false" visibility="public" 1936 deprecated="not deprecated"> 1937 <param name="type" type="com.google.inject.TypeLiteral<?>"/> 1938 <doc> 1939 <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link 1940 AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 1941 binding annotation.]]> 1942 </doc> 1943 </method> 1944 <method name="withSource" return="com.google.inject.PrivateBinder" 1945 abstract="true" native="false" synchronized="false" 1946 static="false" final="false" visibility="public" 1947 deprecated="not deprecated"> 1948 <param name="source" type="java.lang.Object"/> 1949 </method> 1950 <method name="skipSources" return="com.google.inject.PrivateBinder" 1951 abstract="true" native="false" synchronized="false" 1952 static="false" final="false" visibility="public" 1953 deprecated="not deprecated"> 1954 <param name="classesToSkip" type="java.lang.Class[]"/> 1955 </method> 1956 <doc> 1957 <![CDATA[Returns a binder whose configuration information is hidden from its environment by default. See 1958 {@link com.google.inject.PrivateModule PrivateModule} for details. 1959 1960 @author jessewilson@google.com (Jesse Wilson) 1961 @since 2.0]]> 1962 </doc> 1963 </interface> 1964 <!-- end interface com.google.inject.PrivateBinder --> 1965 <!-- start class com.google.inject.PrivateModule --> 1966 <class name="PrivateModule" extends="java.lang.Object" 1967 abstract="true" 1968 static="false" final="false" visibility="public" 1969 deprecated="not deprecated"> 1970 <implements name="com.google.inject.Module"/> 1971 <constructor name="PrivateModule" 1972 static="false" final="false" visibility="public" 1973 deprecated="not deprecated"> 1974 </constructor> 1975 <method name="configure" 1976 abstract="false" native="false" synchronized="true" 1977 static="false" final="true" visibility="public" 1978 deprecated="not deprecated"> 1979 <param name="binder" type="com.google.inject.Binder"/> 1980 </method> 1981 <method name="configure" 1982 abstract="true" native="false" synchronized="false" 1983 static="false" final="false" visibility="protected" 1984 deprecated="not deprecated"> 1985 <doc> 1986 <![CDATA[Creates bindings and other configurations private to this module. Use {@link #expose(Class) 1987 expose()} to make the bindings in this module available externally.]]> 1988 </doc> 1989 </method> 1990 <method name="expose" 1991 abstract="false" native="false" synchronized="false" 1992 static="false" final="true" visibility="protected" 1993 deprecated="not deprecated"> 1994 <param name="key" type="com.google.inject.Key<T>"/> 1995 <doc> 1996 <![CDATA[Makes the binding for {@code key} available to other modules and the injector.]]> 1997 </doc> 1998 </method> 1999 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 2000 abstract="false" native="false" synchronized="false" 2001 static="false" final="true" visibility="protected" 2002 deprecated="not deprecated"> 2003 <param name="type" type="java.lang.Class<?>"/> 2004 <doc> 2005 <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link 2006 AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 2007 binding annotation.]]> 2008 </doc> 2009 </method> 2010 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 2011 abstract="false" native="false" synchronized="false" 2012 static="false" final="true" visibility="protected" 2013 deprecated="not deprecated"> 2014 <param name="type" type="com.google.inject.TypeLiteral<?>"/> 2015 <doc> 2016 <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link 2017 AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 2018 binding annotation.]]> 2019 </doc> 2020 </method> 2021 <method name="binder" return="com.google.inject.PrivateBinder" 2022 abstract="false" native="false" synchronized="false" 2023 static="false" final="true" visibility="protected" 2024 deprecated="not deprecated"> 2025 <doc> 2026 <![CDATA[Returns the current binder.]]> 2027 </doc> 2028 </method> 2029 <method name="bindScope" 2030 abstract="false" native="false" synchronized="false" 2031 static="false" final="true" visibility="protected" 2032 deprecated="not deprecated"> 2033 <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 2034 <param name="scope" type="com.google.inject.Scope"/> 2035 <doc> 2036 <![CDATA[@see Binder#bindScope(Class, Scope)]]> 2037 </doc> 2038 </method> 2039 <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder<T>" 2040 abstract="false" native="false" synchronized="false" 2041 static="false" final="true" visibility="protected" 2042 deprecated="not deprecated"> 2043 <param name="key" type="com.google.inject.Key<T>"/> 2044 <doc> 2045 <![CDATA[@see Binder#bind(Key)]]> 2046 </doc> 2047 </method> 2048 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 2049 abstract="false" native="false" synchronized="false" 2050 static="false" final="true" visibility="protected" 2051 deprecated="not deprecated"> 2052 <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 2053 <doc> 2054 <![CDATA[@see Binder#bind(TypeLiteral)]]> 2055 </doc> 2056 </method> 2057 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 2058 abstract="false" native="false" synchronized="false" 2059 static="false" final="true" visibility="protected" 2060 deprecated="not deprecated"> 2061 <param name="clazz" type="java.lang.Class<T>"/> 2062 <doc> 2063 <![CDATA[@see Binder#bind(Class)]]> 2064 </doc> 2065 </method> 2066 <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder" 2067 abstract="false" native="false" synchronized="false" 2068 static="false" final="true" visibility="protected" 2069 deprecated="not deprecated"> 2070 <doc> 2071 <![CDATA[@see Binder#bindConstant()]]> 2072 </doc> 2073 </method> 2074 <method name="install" 2075 abstract="false" native="false" synchronized="false" 2076 static="false" final="true" visibility="protected" 2077 deprecated="not deprecated"> 2078 <param name="module" type="com.google.inject.Module"/> 2079 <doc> 2080 <![CDATA[@see Binder#install(Module)]]> 2081 </doc> 2082 </method> 2083 <method name="addError" 2084 abstract="false" native="false" synchronized="false" 2085 static="false" final="true" visibility="protected" 2086 deprecated="not deprecated"> 2087 <param name="message" type="java.lang.String"/> 2088 <param name="arguments" type="java.lang.Object[]"/> 2089 <doc> 2090 <![CDATA[@see Binder#addError(String, Object[])]]> 2091 </doc> 2092 </method> 2093 <method name="addError" 2094 abstract="false" native="false" synchronized="false" 2095 static="false" final="true" visibility="protected" 2096 deprecated="not deprecated"> 2097 <param name="t" type="java.lang.Throwable"/> 2098 <doc> 2099 <![CDATA[@see Binder#addError(Throwable)]]> 2100 </doc> 2101 </method> 2102 <method name="addError" 2103 abstract="false" native="false" synchronized="false" 2104 static="false" final="true" visibility="protected" 2105 deprecated="not deprecated"> 2106 <param name="message" type="com.google.inject.spi.Message"/> 2107 <doc> 2108 <![CDATA[@see Binder#addError(Message)]]> 2109 </doc> 2110 </method> 2111 <method name="requestInjection" 2112 abstract="false" native="false" synchronized="false" 2113 static="false" final="true" visibility="protected" 2114 deprecated="not deprecated"> 2115 <param name="instance" type="java.lang.Object"/> 2116 <doc> 2117 <![CDATA[@see Binder#requestInjection(Object)]]> 2118 </doc> 2119 </method> 2120 <method name="requestStaticInjection" 2121 abstract="false" native="false" synchronized="false" 2122 static="false" final="true" visibility="protected" 2123 deprecated="not deprecated"> 2124 <param name="types" type="java.lang.Class[]"/> 2125 <doc> 2126 <![CDATA[@see Binder#requestStaticInjection(Class[])]]> 2127 </doc> 2128 </method> 2129 <method name="bindInterceptor" 2130 abstract="false" native="false" synchronized="false" 2131 static="false" final="true" visibility="protected" 2132 deprecated="not deprecated"> 2133 <param name="classMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>"/> 2134 <param name="methodMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>"/> 2135 <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/> 2136 <doc> 2137 <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher, com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])]]> 2138 </doc> 2139 </method> 2140 <method name="requireBinding" 2141 abstract="false" native="false" synchronized="false" 2142 static="false" final="true" visibility="protected" 2143 deprecated="not deprecated"> 2144 <param name="key" type="com.google.inject.Key<?>"/> 2145 <doc> 2146 <![CDATA[Instructs Guice to require a binding to the given key.]]> 2147 </doc> 2148 </method> 2149 <method name="requireBinding" 2150 abstract="false" native="false" synchronized="false" 2151 static="false" final="true" visibility="protected" 2152 deprecated="not deprecated"> 2153 <param name="type" type="java.lang.Class<?>"/> 2154 <doc> 2155 <![CDATA[Instructs Guice to require a binding to the given type.]]> 2156 </doc> 2157 </method> 2158 <method name="getProvider" return="com.google.inject.Provider<T>" 2159 abstract="false" native="false" synchronized="false" 2160 static="false" final="true" visibility="protected" 2161 deprecated="not deprecated"> 2162 <param name="key" type="com.google.inject.Key<T>"/> 2163 <doc> 2164 <![CDATA[@see Binder#getProvider(Key)]]> 2165 </doc> 2166 </method> 2167 <method name="getProvider" return="com.google.inject.Provider<T>" 2168 abstract="false" native="false" synchronized="false" 2169 static="false" final="true" visibility="protected" 2170 deprecated="not deprecated"> 2171 <param name="type" type="java.lang.Class<T>"/> 2172 <doc> 2173 <![CDATA[@see Binder#getProvider(Class)]]> 2174 </doc> 2175 </method> 2176 <method name="convertToTypes" 2177 abstract="false" native="false" synchronized="false" 2178 static="false" final="true" visibility="protected" 2179 deprecated="not deprecated"> 2180 <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> 2181 <param name="converter" type="com.google.inject.spi.TypeConverter"/> 2182 <doc> 2183 <![CDATA[@see Binder#convertToTypes(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeConverter)]]> 2184 </doc> 2185 </method> 2186 <method name="currentStage" return="com.google.inject.Stage" 2187 abstract="false" native="false" synchronized="false" 2188 static="false" final="true" visibility="protected" 2189 deprecated="not deprecated"> 2190 <doc> 2191 <![CDATA[@see Binder#currentStage()]]> 2192 </doc> 2193 </method> 2194 <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 2195 abstract="false" native="false" synchronized="false" 2196 static="false" final="false" visibility="protected" 2197 deprecated="not deprecated"> 2198 <param name="type" type="java.lang.Class<T>"/> 2199 <doc> 2200 <![CDATA[@see Binder#getMembersInjector(Class)]]> 2201 </doc> 2202 </method> 2203 <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 2204 abstract="false" native="false" synchronized="false" 2205 static="false" final="false" visibility="protected" 2206 deprecated="not deprecated"> 2207 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 2208 <doc> 2209 <![CDATA[@see Binder#getMembersInjector(TypeLiteral)]]> 2210 </doc> 2211 </method> 2212 <method name="bindListener" 2213 abstract="false" native="false" synchronized="false" 2214 static="false" final="false" visibility="protected" 2215 deprecated="not deprecated"> 2216 <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> 2217 <param name="listener" type="com.google.inject.spi.TypeListener"/> 2218 <doc> 2219 <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeListener)]]> 2220 </doc> 2221 </method> 2222 <method name="bindListener" 2223 abstract="false" native="false" synchronized="false" 2224 static="false" final="false" visibility="protected" 2225 deprecated="not deprecated"> 2226 <param name="bindingMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.Binding<?>>"/> 2227 <param name="listeners" type="com.google.inject.spi.ProvisionListener[]"/> 2228 <doc> 2229 <![CDATA[@see Binder#bindListener(Matcher, ProvisionListener...) 2230 @since 4.0]]> 2231 </doc> 2232 </method> 2233 <doc> 2234 <![CDATA[A module whose configuration information is hidden from its environment by default. Only bindings 2235 that are explicitly exposed will be available to other modules and to the users of the injector. 2236 This module may expose the bindings it creates and the bindings of the modules it installs. 2237 2238 <p>A private module can be nested within a regular module or within another private module using 2239 {@link Binder#install install()}. Its bindings live in a new environment that inherits bindings, 2240 type converters, scopes, and interceptors from the surrounding ("parent") environment. When you 2241 nest multiple private modules, the result is a tree of environments where the injector's 2242 environment is the root. 2243 2244 <p>Guice EDSL bindings can be exposed with {@link #expose(Class) expose()}. {@literal @}{@link 2245 com.google.inject.Provides Provides} bindings can be exposed with the {@literal @}{@link 2246 Exposed} annotation: 2247 2248 <pre> 2249 public class FooBarBazModule extends PrivateModule { 2250 protected void configure() { 2251 bind(Foo.class).to(RealFoo.class); 2252 expose(Foo.class); 2253 2254 install(new TransactionalBarModule()); 2255 expose(Bar.class).annotatedWith(Transactional.class); 2256 2257 bind(SomeImplementationDetail.class); 2258 install(new MoreImplementationDetailsModule()); 2259 } 2260 2261 {@literal @}Provides {@literal @}Exposed 2262 public Baz provideBaz() { 2263 return new SuperBaz(); 2264 } 2265 } 2266 </pre> 2267 2268 <p>Private modules are implemented using {@link Injector#createChildInjector(Module[]) parent 2269 injectors}. When it can satisfy their dependencies, just-in-time bindings will be created in the 2270 root environment. Such bindings are shared among all environments in the tree. 2271 2272 <p>The scope of a binding is constrained to its environment. A singleton bound in a private 2273 module will be unique to its environment. But a binding for the same type in a different private 2274 module will yield a different instance. 2275 2276 <p>A shared binding that injects the {@code Injector} gets the root injector, which only has 2277 access to bindings in the root environment. An explicit binding that injects the {@code Injector} 2278 gets access to all bindings in the child environment. 2279 2280 <p>To promote a just-in-time binding to an explicit binding, bind it: 2281 <pre> 2282 bind(FooImpl.class); 2283 </pre> 2284 2285 @author jessewilson@google.com (Jesse Wilson) 2286 @since 2.0]]> 2287 </doc> 2288 </class> 2289 <!-- end class com.google.inject.PrivateModule --> 2290 <!-- start class com.google.inject.ProvidedBy --> 2291 <class name="ProvidedBy" abstract="true" 2292 static="false" final="false" visibility="public" 2293 deprecated="not deprecated"> 2294 <implements name="java.lang.annotation.Annotation"/> 2295 <doc> 2296 <![CDATA[A pointer to the default provider type for a type. 2297 2298 @author crazybob@google.com (Bob Lee)]]> 2299 </doc> 2300 </class> 2301 <!-- end class com.google.inject.ProvidedBy --> 2302 <!-- start interface com.google.inject.Provider --> 2303 <interface name="Provider" abstract="true" 2304 static="false" final="false" visibility="public" 2305 deprecated="not deprecated"> 2306 <implements name="javax.inject.Provider<T>"/> 2307 <method name="get" return="T" 2308 abstract="true" native="false" synchronized="false" 2309 static="false" final="false" visibility="public" 2310 deprecated="not deprecated"> 2311 <doc> 2312 <![CDATA[Provides an instance of {@code T}. Must never return {@code null}. 2313 2314 @throws OutOfScopeException when an attempt is made to access a scoped object while the scope 2315 in question is not currently active 2316 @throws ProvisionException if an instance cannot be provided. Such exceptions include messages 2317 and throwables to describe why provision failed.]]> 2318 </doc> 2319 </method> 2320 <doc> 2321 <![CDATA[An object capable of providing instances of type {@code T}. Providers are used in numerous ways 2322 by Guice: 2323 2324 <ul> 2325 <li>When the default means for obtaining instances (an injectable or parameterless constructor) 2326 is insufficient for a particular binding, the module can specify a custom {@code Provider} 2327 instead, to control exactly how Guice creates or obtains instances for the binding. 2328 2329 <li>An implementation class may always choose to have a {@code Provider<T>} instance injected, 2330 rather than having a {@code T} injected directly. This may give you access to multiple 2331 instances, instances you wish to safely mutate and discard, instances which are out of scope 2332 (e.g. using a {@code @RequestScoped} object from within a {@code @SessionScoped} object), or 2333 instances that will be initialized lazily. 2334 2335 <li>A custom {@link Scope} is implemented as a decorator of {@code Provider<T>}, which decides 2336 when to delegate to the backing provider and when to provide the instance some other way. 2337 2338 <li>The {@link Injector} offers access to the {@code Provider<T>} it uses to fulfill requests 2339 for a given key, via the {@link Injector#getProvider} methods. 2340 </ul> 2341 2342 @param <T> the type of object this provides 2343 2344 @author crazybob@google.com (Bob Lee)]]> 2345 </doc> 2346 </interface> 2347 <!-- end interface com.google.inject.Provider --> 2348 <!-- start class com.google.inject.Provides --> 2349 <class name="Provides" abstract="true" 2350 static="false" final="false" visibility="public" 2351 deprecated="not deprecated"> 2352 <implements name="java.lang.annotation.Annotation"/> 2353 <doc> 2354 <![CDATA[Annotates methods of a {@link Module} to create a provider method binding. The method's return 2355 type is bound to its returned value. Guice will pass dependencies to the method as parameters. 2356 2357 @author crazybob@google.com (Bob Lee) 2358 @since 2.0]]> 2359 </doc> 2360 </class> 2361 <!-- end class com.google.inject.Provides --> 2362 <!-- start class com.google.inject.ProvisionException --> 2363 <class name="ProvisionException" extends="java.lang.RuntimeException" 2364 abstract="false" 2365 static="false" final="true" visibility="public" 2366 deprecated="not deprecated"> 2367 <constructor name="ProvisionException" type="java.lang.Iterable<com.google.inject.spi.Message>" 2368 static="false" final="false" visibility="public" 2369 deprecated="not deprecated"> 2370 <doc> 2371 <![CDATA[Creates a ProvisionException containing {@code messages}.]]> 2372 </doc> 2373 </constructor> 2374 <constructor name="ProvisionException" type="java.lang.String, java.lang.Throwable" 2375 static="false" final="false" visibility="public" 2376 deprecated="not deprecated"> 2377 </constructor> 2378 <constructor name="ProvisionException" type="java.lang.String" 2379 static="false" final="false" visibility="public" 2380 deprecated="not deprecated"> 2381 </constructor> 2382 <method name="getErrorMessages" return="java.util.Collection<com.google.inject.spi.Message>" 2383 abstract="false" native="false" synchronized="false" 2384 static="false" final="false" visibility="public" 2385 deprecated="not deprecated"> 2386 <doc> 2387 <![CDATA[Returns messages for the errors that caused this exception.]]> 2388 </doc> 2389 </method> 2390 <method name="getMessage" return="java.lang.String" 2391 abstract="false" native="false" synchronized="false" 2392 static="false" final="false" visibility="public" 2393 deprecated="not deprecated"> 2394 </method> 2395 <doc> 2396 <![CDATA[Indicates that there was a runtime failure while providing an instance. 2397 2398 @author kevinb@google.com (Kevin Bourrillion) 2399 @author jessewilson@google.com (Jesse Wilson) 2400 @since 2.0]]> 2401 </doc> 2402 </class> 2403 <!-- end class com.google.inject.ProvisionException --> 2404 <!-- start interface com.google.inject.Scope --> 2405 <interface name="Scope" abstract="true" 2406 static="false" final="false" visibility="public" 2407 deprecated="not deprecated"> 2408 <method name="scope" return="com.google.inject.Provider<T>" 2409 abstract="true" native="false" synchronized="false" 2410 static="false" final="false" visibility="public" 2411 deprecated="not deprecated"> 2412 <param name="key" type="com.google.inject.Key<T>"/> 2413 <param name="unscoped" type="com.google.inject.Provider<T>"/> 2414 <doc> 2415 <![CDATA[Scopes a provider. The returned provider returns objects from this scope. 2416 If an object does not exist in this scope, the provider can use the given 2417 unscoped provider to retrieve one. 2418 2419 <p>Scope implementations are strongly encouraged to override 2420 {@link Object#toString} in the returned provider and include the backing 2421 provider's {@code toString()} output. 2422 2423 @param key binding key 2424 @param unscoped locates an instance when one doesn't already exist in this 2425 scope. 2426 @return a new provider which only delegates to the given unscoped provider 2427 when an instance of the requested object doesn't already exist in this 2428 scope]]> 2429 </doc> 2430 </method> 2431 <method name="toString" return="java.lang.String" 2432 abstract="true" native="false" synchronized="false" 2433 static="false" final="false" visibility="public" 2434 deprecated="not deprecated"> 2435 <doc> 2436 <![CDATA[A short but useful description of this scope. For comparison, the standard 2437 scopes that ship with guice use the descriptions 2438 {@code "Scopes.SINGLETON"}, {@code "ServletScopes.SESSION"} and 2439 {@code "ServletScopes.REQUEST"}.]]> 2440 </doc> 2441 </method> 2442 <doc> 2443 <![CDATA[A scope is a level of visibility that instances provided by Guice may have. 2444 By default, an instance created by the {@link Injector} has <i>no scope</i>, 2445 meaning it has no state from the framework's perspective -- the 2446 {@code Injector} creates it, injects it once into the class that required it, 2447 and then immediately forgets it. Associating a scope with a particular 2448 binding allows the created instance to be "remembered" and possibly used 2449 again for other injections. 2450 2451 <p>An example of a scope is {@link Scopes#SINGLETON}. 2452 2453 @author crazybob@google.com (Bob Lee)]]> 2454 </doc> 2455 </interface> 2456 <!-- end interface com.google.inject.Scope --> 2457 <!-- start class com.google.inject.ScopeAnnotation --> 2458 <class name="ScopeAnnotation" abstract="true" 2459 static="false" final="false" visibility="public" 2460 deprecated="not deprecated"> 2461 <implements name="java.lang.annotation.Annotation"/> 2462 <doc> 2463 <![CDATA[Annotates annotations which are used for scoping. Only one such annotation 2464 may apply to a single implementation class. You must also annotate scope 2465 annotations with {@code @Retention(RUNTIME)}. For example: 2466 2467 <pre> 2468 {@code @}Retention(RUNTIME) 2469 {@code @}Target(TYPE, METHOD) 2470 {@code @}ScopeAnnotation 2471 public {@code @}interface SessionScoped {} 2472 </pre> 2473 2474 @author crazybob@google.com (Bob Lee)]]> 2475 </doc> 2476 </class> 2477 <!-- end class com.google.inject.ScopeAnnotation --> 2478 <!-- start class com.google.inject.Scopes --> 2479 <class name="Scopes" extends="java.lang.Object" 2480 abstract="false" 2481 static="false" final="false" visibility="public" 2482 deprecated="not deprecated"> 2483 <method name="isSingleton" return="boolean" 2484 abstract="false" native="false" synchronized="false" 2485 static="true" final="false" visibility="public" 2486 deprecated="not deprecated"> 2487 <param name="binding" type="com.google.inject.Binding<?>"/> 2488 <doc> 2489 <![CDATA[Returns true if {@code binding} is singleton-scoped. If the binding is a {@link 2490 com.google.inject.spi.LinkedKeyBinding linked key binding} and belongs to an injector (ie. it 2491 was retrieved via {@link Injector#getBinding Injector.getBinding()}), then this method will 2492 also true if the target binding is singleton-scoped. 2493 2494 @since 3.0]]> 2495 </doc> 2496 </method> 2497 <method name="isScoped" return="boolean" 2498 abstract="false" native="false" synchronized="false" 2499 static="true" final="false" visibility="public" 2500 deprecated="not deprecated"> 2501 <param name="binding" type="com.google.inject.Binding<?>"/> 2502 <param name="scope" type="com.google.inject.Scope"/> 2503 <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 2504 <doc> 2505 <![CDATA[Returns true if {@code binding} has the given scope. If the binding is a {@link 2506 com.google.inject.spi.LinkedKeyBinding linked key binding} and belongs to an injector (ie. it 2507 was retrieved via {@link Injector#getBinding Injector.getBinding()}), then this method will 2508 also true if the target binding has the given scope. 2509 2510 @param binding binding to check 2511 @param scope scope implementation instance 2512 @param scopeAnnotation scope annotation class 2513 @since 4.0]]> 2514 </doc> 2515 </method> 2516 <method name="isCircularProxy" return="boolean" 2517 abstract="false" native="false" synchronized="false" 2518 static="true" final="false" visibility="public" 2519 deprecated="not deprecated"> 2520 <param name="object" type="java.lang.Object"/> 2521 <doc> 2522 <![CDATA[Returns true if the object is a proxy for a circular dependency, 2523 constructed by Guice because it encountered a circular dependency. Scope 2524 implementations should be careful to <b>not cache circular proxies</b>, 2525 because the proxies are not intended for general purpose use. (They are 2526 designed just to fulfill the immediate injection, not all injections. 2527 Caching them can lead to IllegalArgumentExceptions or ClassCastExceptions.) 2528 2529 @since 4.0]]> 2530 </doc> 2531 </method> 2532 <field name="SINGLETON" type="com.google.inject.Scope" 2533 transient="false" volatile="false" 2534 static="true" final="true" visibility="public" 2535 deprecated="not deprecated"> 2536 <doc> 2537 <![CDATA[One instance per {@link Injector}. Also see {@code @}{@link Singleton}.]]> 2538 </doc> 2539 </field> 2540 <field name="NO_SCOPE" type="com.google.inject.Scope" 2541 transient="false" volatile="false" 2542 static="true" final="true" visibility="public" 2543 deprecated="not deprecated"> 2544 <doc> 2545 <![CDATA[No scope; the same as not applying any scope at all. Each time the 2546 Injector obtains an instance of an object with "no scope", it injects this 2547 instance then immediately forgets it. When the next request for the same 2548 binding arrives it will need to obtain the instance over again. 2549 2550 <p>This exists only in case a class has been annotated with a scope 2551 annotation such as {@link Singleton @Singleton}, and you need to override 2552 this to "no scope" in your binding. 2553 2554 @since 2.0]]> 2555 </doc> 2556 </field> 2557 <doc> 2558 <![CDATA[Built-in scope implementations. 2559 2560 @author crazybob@google.com (Bob Lee)]]> 2561 </doc> 2562 </class> 2563 <!-- end class com.google.inject.Scopes --> 2564 <!-- start class com.google.inject.Singleton --> 2565 <class name="Singleton" abstract="true" 2566 static="false" final="false" visibility="public" 2567 deprecated="not deprecated"> 2568 <implements name="java.lang.annotation.Annotation"/> 2569 <doc> 2570 <![CDATA[Apply this to implementation classes when you want only one instance 2571 (per {@link Injector}) to be reused for all injections for that binding. 2572 2573 @author crazybob@google.com (Bob Lee)]]> 2574 </doc> 2575 </class> 2576 <!-- end class com.google.inject.Singleton --> 2577 <!-- start class com.google.inject.Stage --> 2578 <class name="Stage" extends="java.lang.Enum<com.google.inject.Stage>" 2579 abstract="false" 2580 static="false" final="true" visibility="public" 2581 deprecated="not deprecated"> 2582 <method name="values" return="com.google.inject.Stage[]" 2583 abstract="false" native="false" synchronized="false" 2584 static="true" final="false" visibility="public" 2585 deprecated="not deprecated"> 2586 </method> 2587 <method name="valueOf" return="com.google.inject.Stage" 2588 abstract="false" native="false" synchronized="false" 2589 static="true" final="false" visibility="public" 2590 deprecated="not deprecated"> 2591 <param name="name" type="java.lang.String"/> 2592 </method> 2593 <doc> 2594 <![CDATA[The stage we're running in. 2595 2596 @author crazybob@google.com (Bob Lee)]]> 2597 </doc> 2598 </class> 2599 <!-- end class com.google.inject.Stage --> 2600 <!-- start class com.google.inject.TypeLiteral --> 2601 <class name="TypeLiteral" extends="java.lang.Object" 2602 abstract="false" 2603 static="false" final="false" visibility="public" 2604 deprecated="not deprecated"> 2605 <constructor name="TypeLiteral" 2606 static="false" final="false" visibility="protected" 2607 deprecated="not deprecated"> 2608 <doc> 2609 <![CDATA[Constructs a new type literal. Derives represented class from type 2610 parameter. 2611 2612 <p>Clients create an empty anonymous subclass. Doing so embeds the type 2613 parameter in the anonymous class's type hierarchy so we can reconstitute it 2614 at runtime despite erasure.]]> 2615 </doc> 2616 </constructor> 2617 <method name="getRawType" return="java.lang.Class<? super T>" 2618 abstract="false" native="false" synchronized="false" 2619 static="false" final="true" visibility="public" 2620 deprecated="not deprecated"> 2621 <doc> 2622 <![CDATA[Returns the raw (non-generic) type for this type. 2623 2624 @since 2.0]]> 2625 </doc> 2626 </method> 2627 <method name="getType" return="java.lang.reflect.Type" 2628 abstract="false" native="false" synchronized="false" 2629 static="false" final="true" visibility="public" 2630 deprecated="not deprecated"> 2631 <doc> 2632 <![CDATA[Gets underlying {@code Type} instance.]]> 2633 </doc> 2634 </method> 2635 <method name="hashCode" return="int" 2636 abstract="false" native="false" synchronized="false" 2637 static="false" final="true" visibility="public" 2638 deprecated="not deprecated"> 2639 </method> 2640 <method name="equals" return="boolean" 2641 abstract="false" native="false" synchronized="false" 2642 static="false" final="true" visibility="public" 2643 deprecated="not deprecated"> 2644 <param name="o" type="java.lang.Object"/> 2645 </method> 2646 <method name="toString" return="java.lang.String" 2647 abstract="false" native="false" synchronized="false" 2648 static="false" final="true" visibility="public" 2649 deprecated="not deprecated"> 2650 </method> 2651 <method name="get" return="com.google.inject.TypeLiteral<?>" 2652 abstract="false" native="false" synchronized="false" 2653 static="true" final="false" visibility="public" 2654 deprecated="not deprecated"> 2655 <param name="type" type="java.lang.reflect.Type"/> 2656 <doc> 2657 <![CDATA[Gets type literal for the given {@code Type} instance.]]> 2658 </doc> 2659 </method> 2660 <method name="get" return="com.google.inject.TypeLiteral<T>" 2661 abstract="false" native="false" synchronized="false" 2662 static="true" final="false" visibility="public" 2663 deprecated="not deprecated"> 2664 <param name="type" type="java.lang.Class<T>"/> 2665 <doc> 2666 <![CDATA[Gets type literal for the given {@code Class} instance.]]> 2667 </doc> 2668 </method> 2669 <method name="getSupertype" return="com.google.inject.TypeLiteral<?>" 2670 abstract="false" native="false" synchronized="false" 2671 static="false" final="false" visibility="public" 2672 deprecated="not deprecated"> 2673 <param name="supertype" type="java.lang.Class<?>"/> 2674 <doc> 2675 <![CDATA[Returns the generic form of {@code supertype}. For example, if this is {@code 2676 ArrayList<String>}, this returns {@code Iterable<String>} given the input {@code 2677 Iterable.class}. 2678 2679 @param supertype a superclass of, or interface implemented by, this. 2680 @since 2.0]]> 2681 </doc> 2682 </method> 2683 <method name="getFieldType" return="com.google.inject.TypeLiteral<?>" 2684 abstract="false" native="false" synchronized="false" 2685 static="false" final="false" visibility="public" 2686 deprecated="not deprecated"> 2687 <param name="field" type="java.lang.reflect.Field"/> 2688 <doc> 2689 <![CDATA[Returns the resolved generic type of {@code field}. 2690 2691 @param field a field defined by this or any superclass. 2692 @since 2.0]]> 2693 </doc> 2694 </method> 2695 <method name="getParameterTypes" return="java.util.List<com.google.inject.TypeLiteral<?>>" 2696 abstract="false" native="false" synchronized="false" 2697 static="false" final="false" visibility="public" 2698 deprecated="not deprecated"> 2699 <param name="methodOrConstructor" type="java.lang.reflect.Member"/> 2700 <doc> 2701 <![CDATA[Returns the resolved generic parameter types of {@code methodOrConstructor}. 2702 2703 @param methodOrConstructor a method or constructor defined by this or any supertype. 2704 @since 2.0]]> 2705 </doc> 2706 </method> 2707 <method name="getExceptionTypes" return="java.util.List<com.google.inject.TypeLiteral<?>>" 2708 abstract="false" native="false" synchronized="false" 2709 static="false" final="false" visibility="public" 2710 deprecated="not deprecated"> 2711 <param name="methodOrConstructor" type="java.lang.reflect.Member"/> 2712 <doc> 2713 <![CDATA[Returns the resolved generic exception types thrown by {@code constructor}. 2714 2715 @param methodOrConstructor a method or constructor defined by this or any supertype. 2716 @since 2.0]]> 2717 </doc> 2718 </method> 2719 <method name="getReturnType" return="com.google.inject.TypeLiteral<?>" 2720 abstract="false" native="false" synchronized="false" 2721 static="false" final="false" visibility="public" 2722 deprecated="not deprecated"> 2723 <param name="method" type="java.lang.reflect.Method"/> 2724 <doc> 2725 <![CDATA[Returns the resolved generic return type of {@code method}. 2726 2727 @param method a method defined by this or any supertype. 2728 @since 2.0]]> 2729 </doc> 2730 </method> 2731 <doc> 2732 <![CDATA[Represents a generic type {@code T}. Java doesn't yet provide a way to 2733 represent generic types, so this class does. Forces clients to create a 2734 subclass of this class which enables retrieval the type information even at 2735 runtime. 2736 2737 <p>For example, to create a type literal for {@code List<String>}, you can 2738 create an empty anonymous inner class: 2739 2740 <p> 2741 {@code TypeLiteral<List<String>> list = new TypeLiteral<List<String>>() {};} 2742 2743 <p>Along with modeling generic types, this class can resolve type parameters. 2744 For example, to figure out what type {@code keySet()} returns on a {@code 2745 Map<Integer, String>}, use this code:<pre> {@code 2746 2747 TypeLiteral<Map<Integer, String>> mapType 2748 = new TypeLiteral<Map<Integer, String>>() {}; 2749 TypeLiteral<?> keySetType 2750 = mapType.getReturnType(Map.class.getMethod("keySet")); 2751 System.out.println(keySetType); // prints "Set<Integer>"}</pre> 2752 2753 @author crazybob@google.com (Bob Lee) 2754 @author jessewilson@google.com (Jesse Wilson)]]> 2755 </doc> 2756 </class> 2757 <!-- end class com.google.inject.TypeLiteral --> 2758</package> 2759<package name="com.google.inject.assistedinject"> 2760 <!-- start class com.google.inject.assistedinject.Assisted --> 2761 <class name="Assisted" abstract="true" 2762 static="false" final="false" visibility="public" 2763 deprecated="not deprecated"> 2764 <implements name="java.lang.annotation.Annotation"/> 2765 <doc> 2766 <![CDATA[Annotates an injected parameter or field whose value comes from an argument to a factory method. 2767 2768 @author jmourits@google.com (Jerome Mourits) 2769 @author jessewilson@google.com (Jesse Wilson)]]> 2770 </doc> 2771 </class> 2772 <!-- end class com.google.inject.assistedinject.Assisted --> 2773 <!-- start class com.google.inject.assistedinject.AssistedInject --> 2774 <class name="AssistedInject" abstract="true" 2775 static="false" final="false" visibility="public" 2776 deprecated="not deprecated"> 2777 <implements name="java.lang.annotation.Annotation"/> 2778 <doc> 2779 <![CDATA[<p> 2780 When used in tandem with {@link FactoryModuleBuilder}, constructors annotated with 2781 {@code @AssistedInject} indicate that multiple constructors can be injected, each with different 2782 parameters. AssistedInject annotations should not be mixed with {@literal @}{@link Inject} 2783 annotations. The assisted parameters must exactly match one corresponding factory method within 2784 the factory interface, but the parameters do not need to be in the same order. Constructors 2785 annotated with AssistedInject <b>are</b> created by Guice and receive all the benefits 2786 (such as AOP). 2787 2788 <p> 2789 <strong>Obsolete Usage:</strong> When used in tandem with {@link FactoryProvider}, constructors 2790 annotated with {@code @AssistedInject} trigger a "backwards compatibility mode". The assisted 2791 parameters must exactly match one corresponding factory method within the factory interface and 2792 all must be in the same order as listed in the factory. In this backwards compatable mode, 2793 constructors annotated with AssistedInject <b>are not</b> created by Guice and thus receive 2794 none of the benefits. 2795 2796 <p> 2797 Constructor parameters must be either supplied by the factory interface and marked with 2798 <code>@Assisted</code>, or they must be injectable. 2799 2800 @author jmourits@google.com (Jerome Mourits) 2801 @author jessewilson@google.com (Jesse Wilson)]]> 2802 </doc> 2803 </class> 2804 <!-- end class com.google.inject.assistedinject.AssistedInject --> 2805 <!-- start interface com.google.inject.assistedinject.AssistedInjectBinding --> 2806 <interface name="AssistedInjectBinding" abstract="true" 2807 static="false" final="false" visibility="public" 2808 deprecated="not deprecated"> 2809 <method name="getKey" return="com.google.inject.Key<T>" 2810 abstract="true" native="false" synchronized="false" 2811 static="false" final="false" visibility="public" 2812 deprecated="not deprecated"> 2813 <doc> 2814 <![CDATA[Returns the {@link Key} for the factory binding.]]> 2815 </doc> 2816 </method> 2817 <method name="getAssistedMethods" return="java.util.Collection<com.google.inject.assistedinject.AssistedMethod>" 2818 abstract="true" native="false" synchronized="false" 2819 static="false" final="false" visibility="public" 2820 deprecated="not deprecated"> 2821 <doc> 2822 <![CDATA[Returns an {@link AssistedMethod} for each method in the factory.]]> 2823 </doc> 2824 </method> 2825 <doc> 2826 <![CDATA[A binding for a factory created by FactoryModuleBuilder. 2827 2828 @param <T> The fully qualified type of the factory. 2829 2830 @since 3.0 2831 @author ramakrishna@google.com (Ramakrishna Rajanna)]]> 2832 </doc> 2833 </interface> 2834 <!-- end interface com.google.inject.assistedinject.AssistedInjectBinding --> 2835 <!-- start interface com.google.inject.assistedinject.AssistedInjectTargetVisitor --> 2836 <interface name="AssistedInjectTargetVisitor" abstract="true" 2837 static="false" final="false" visibility="public" 2838 deprecated="not deprecated"> 2839 <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 2840 <method name="visit" return="V" 2841 abstract="true" native="false" synchronized="false" 2842 static="false" final="false" visibility="public" 2843 deprecated="not deprecated"> 2844 <param name="assistedInjectBinding" type="com.google.inject.assistedinject.AssistedInjectBinding<? extends T>"/> 2845 <doc> 2846 <![CDATA[Visits an {@link AssistedInjectBinding} created through {@link FactoryModuleBuilder}.]]> 2847 </doc> 2848 </method> 2849 <doc> 2850 <![CDATA[A visitor for the AssistedInject extension. 2851 <p> 2852 If your {@link BindingTargetVisitor} implements this interface, bindings created by using 2853 {@link FactoryModuleBuilder} will be visited through this interface. 2854 2855 @since 3.0 2856 @author ramakrishna@google.com (Ramakrishna Rajanna)]]> 2857 </doc> 2858 </interface> 2859 <!-- end interface com.google.inject.assistedinject.AssistedInjectTargetVisitor --> 2860 <!-- start interface com.google.inject.assistedinject.AssistedMethod --> 2861 <interface name="AssistedMethod" abstract="true" 2862 static="false" final="false" visibility="public" 2863 deprecated="not deprecated"> 2864 <method name="getFactoryMethod" return="java.lang.reflect.Method" 2865 abstract="true" native="false" synchronized="false" 2866 static="false" final="false" visibility="public" 2867 deprecated="not deprecated"> 2868 <doc> 2869 <![CDATA[Returns the factory method that is being assisted.]]> 2870 </doc> 2871 </method> 2872 <method name="getImplementationType" return="com.google.inject.TypeLiteral<?>" 2873 abstract="true" native="false" synchronized="false" 2874 static="false" final="false" visibility="public" 2875 deprecated="not deprecated"> 2876 <doc> 2877 <![CDATA[Returns the implementation type that will be created when the method is 2878 used.]]> 2879 </doc> 2880 </method> 2881 <method name="getImplementationConstructor" return="java.lang.reflect.Constructor<?>" 2882 abstract="true" native="false" synchronized="false" 2883 static="false" final="false" visibility="public" 2884 deprecated="not deprecated"> 2885 <doc> 2886 <![CDATA[Returns the constructor that will be used to construct instances of the 2887 implementation.]]> 2888 </doc> 2889 </method> 2890 <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 2891 abstract="true" native="false" synchronized="false" 2892 static="false" final="false" visibility="public" 2893 deprecated="not deprecated"> 2894 <doc> 2895 <![CDATA[Returns all non-assisted dependencies required to construct and inject 2896 the implementation.]]> 2897 </doc> 2898 </method> 2899 <doc> 2900 <![CDATA[Details about how a method in an assisted inject factory will be assisted. 2901 2902 @since 3.0 2903 @author ramakrishna@google.com (Ramakrishna Rajanna)]]> 2904 </doc> 2905 </interface> 2906 <!-- end interface com.google.inject.assistedinject.AssistedMethod --> 2907 <!-- start class com.google.inject.assistedinject.FactoryModuleBuilder --> 2908 <class name="FactoryModuleBuilder" extends="java.lang.Object" 2909 abstract="false" 2910 static="false" final="true" visibility="public" 2911 deprecated="not deprecated"> 2912 <constructor name="FactoryModuleBuilder" 2913 static="false" final="false" visibility="public" 2914 deprecated="not deprecated"> 2915 </constructor> 2916 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2917 abstract="false" native="false" synchronized="false" 2918 static="false" final="false" visibility="public" 2919 deprecated="not deprecated"> 2920 <param name="source" type="java.lang.Class<T>"/> 2921 <param name="target" type="java.lang.Class<? extends T>"/> 2922 <doc> 2923 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2924 </doc> 2925 </method> 2926 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2927 abstract="false" native="false" synchronized="false" 2928 static="false" final="false" visibility="public" 2929 deprecated="not deprecated"> 2930 <param name="source" type="java.lang.Class<T>"/> 2931 <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2932 <doc> 2933 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2934 </doc> 2935 </method> 2936 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2937 abstract="false" native="false" synchronized="false" 2938 static="false" final="false" visibility="public" 2939 deprecated="not deprecated"> 2940 <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2941 <param name="target" type="java.lang.Class<? extends T>"/> 2942 <doc> 2943 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2944 </doc> 2945 </method> 2946 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2947 abstract="false" native="false" synchronized="false" 2948 static="false" final="false" visibility="public" 2949 deprecated="not deprecated"> 2950 <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2951 <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2952 <doc> 2953 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2954 </doc> 2955 </method> 2956 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2957 abstract="false" native="false" synchronized="false" 2958 static="false" final="false" visibility="public" 2959 deprecated="not deprecated"> 2960 <param name="source" type="java.lang.Class<T>"/> 2961 <param name="annotation" type="java.lang.annotation.Annotation"/> 2962 <param name="target" type="java.lang.Class<? extends T>"/> 2963 <doc> 2964 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2965 </doc> 2966 </method> 2967 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2968 abstract="false" native="false" synchronized="false" 2969 static="false" final="false" visibility="public" 2970 deprecated="not deprecated"> 2971 <param name="source" type="java.lang.Class<T>"/> 2972 <param name="annotation" type="java.lang.annotation.Annotation"/> 2973 <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2974 <doc> 2975 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2976 </doc> 2977 </method> 2978 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2979 abstract="false" native="false" synchronized="false" 2980 static="false" final="false" visibility="public" 2981 deprecated="not deprecated"> 2982 <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2983 <param name="annotation" type="java.lang.annotation.Annotation"/> 2984 <param name="target" type="java.lang.Class<? extends T>"/> 2985 <doc> 2986 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2987 </doc> 2988 </method> 2989 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2990 abstract="false" native="false" synchronized="false" 2991 static="false" final="false" visibility="public" 2992 deprecated="not deprecated"> 2993 <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2994 <param name="annotation" type="java.lang.annotation.Annotation"/> 2995 <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2996 <doc> 2997 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2998 </doc> 2999 </method> 3000 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 3001 abstract="false" native="false" synchronized="false" 3002 static="false" final="false" visibility="public" 3003 deprecated="not deprecated"> 3004 <param name="source" type="java.lang.Class<T>"/> 3005 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3006 <param name="target" type="java.lang.Class<? extends T>"/> 3007 <doc> 3008 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3009 </doc> 3010 </method> 3011 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 3012 abstract="false" native="false" synchronized="false" 3013 static="false" final="false" visibility="public" 3014 deprecated="not deprecated"> 3015 <param name="source" type="java.lang.Class<T>"/> 3016 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3017 <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 3018 <doc> 3019 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3020 </doc> 3021 </method> 3022 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 3023 abstract="false" native="false" synchronized="false" 3024 static="false" final="false" visibility="public" 3025 deprecated="not deprecated"> 3026 <param name="source" type="com.google.inject.TypeLiteral<T>"/> 3027 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3028 <param name="target" type="java.lang.Class<? extends T>"/> 3029 <doc> 3030 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3031 </doc> 3032 </method> 3033 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 3034 abstract="false" native="false" synchronized="false" 3035 static="false" final="false" visibility="public" 3036 deprecated="not deprecated"> 3037 <param name="source" type="com.google.inject.TypeLiteral<T>"/> 3038 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3039 <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 3040 <doc> 3041 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3042 </doc> 3043 </method> 3044 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 3045 abstract="false" native="false" synchronized="false" 3046 static="false" final="false" visibility="public" 3047 deprecated="not deprecated"> 3048 <param name="source" type="com.google.inject.Key<T>"/> 3049 <param name="target" type="java.lang.Class<? extends T>"/> 3050 <doc> 3051 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3052 </doc> 3053 </method> 3054 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 3055 abstract="false" native="false" synchronized="false" 3056 static="false" final="false" visibility="public" 3057 deprecated="not deprecated"> 3058 <param name="source" type="com.google.inject.Key<T>"/> 3059 <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 3060 <doc> 3061 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3062 </doc> 3063 </method> 3064 <method name="build" return="com.google.inject.Module" 3065 abstract="false" native="false" synchronized="false" 3066 static="false" final="false" visibility="public" 3067 deprecated="not deprecated"> 3068 <param name="factoryInterface" type="java.lang.Class<F>"/> 3069 <doc> 3070 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3071 </doc> 3072 </method> 3073 <method name="build" return="com.google.inject.Module" 3074 abstract="false" native="false" synchronized="false" 3075 static="false" final="false" visibility="public" 3076 deprecated="not deprecated"> 3077 <param name="factoryInterface" type="com.google.inject.TypeLiteral<F>"/> 3078 <doc> 3079 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3080 </doc> 3081 </method> 3082 <method name="build" return="com.google.inject.Module" 3083 abstract="false" native="false" synchronized="false" 3084 static="false" final="false" visibility="public" 3085 deprecated="not deprecated"> 3086 <param name="factoryInterface" type="com.google.inject.Key<F>"/> 3087 </method> 3088 <doc> 3089 <![CDATA[Provides a factory that combines the caller's arguments with injector-supplied values to 3090 construct objects. 3091 3092 <h3>Defining a factory</h3> 3093 Create an interface whose methods return the constructed type, or any of its supertypes. The 3094 method's parameters are the arguments required to build the constructed type. 3095 3096 <pre>public interface PaymentFactory { 3097 Payment create(Date startDate, Money amount); 3098 }</pre> 3099 3100 You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i> 3101 or <i>newPayment</i>. 3102 3103 <h3>Creating a type that accepts factory parameters</h3> 3104 {@code constructedType} is a concrete class with an {@literal @}{@link com.google.inject.Inject 3105 Inject}-annotated constructor. In addition to injector-supplied parameters, the constructor 3106 should have parameters that match each of the factory method's parameters. Each factory-supplied 3107 parameter requires an {@literal @}{@link Assisted} annotation. This serves to document that the 3108 parameter is not bound by your application's modules. 3109 3110 <pre>public class RealPayment implements Payment { 3111 {@literal @}Inject 3112 public RealPayment( 3113 CreditService creditService, 3114 AuthService authService, 3115 <strong>{@literal @}Assisted Date startDate</strong>, 3116 <strong>{@literal @}Assisted Money amount</strong>) { 3117 ... 3118 } 3119 }</pre> 3120 3121 <h3>Multiple factory methods for the same type</h3> 3122 If the factory contains many methods that return the same type, you can create multiple 3123 constructors in your concrete class, each constructor marked with with 3124 {@literal @}{@link AssistedInject}, in order to match the different parameters types of the 3125 factory methods. 3126 3127 <pre>public interface PaymentFactory { 3128 Payment create(Date startDate, Money amount); 3129 Payment createWithoutDate(Money amount); 3130 } 3131 3132 public class RealPayment implements Payment { 3133 {@literal @}AssistedInject 3134 public RealPayment( 3135 CreditService creditService, 3136 AuthService authService, 3137 <strong>{@literal @}Assisted Date startDate</strong>, 3138 <strong>{@literal @}Assisted Money amount</strong>) { 3139 ... 3140 } 3141 3142 {@literal @}AssistedInject 3143 public RealPayment( 3144 CreditService creditService, 3145 AuthService authService, 3146 <strong>{@literal @}Assisted Money amount</strong>) { 3147 ... 3148 } 3149 }</pre> 3150 3151 <h3>Configuring simple factories</h3> 3152 In your {@link Module module}, install a {@code FactoryModuleBuilder} that creates the 3153 factory: 3154 3155 <pre>install(new FactoryModuleBuilder() 3156 .implement(Payment.class, RealPayment.class) 3157 .build(PaymentFactory.class));</pre> 3158 3159 As a side-effect of this binding, Guice will inject the factory to initialize it for use. The 3160 factory cannot be used until the injector has been initialized. 3161 3162 <h3>Configuring complex factories</h3> 3163 Factories can create an arbitrary number of objects, one per each method. Each factory 3164 method can be configured using <code>.implement</code>. 3165 3166 <pre>public interface OrderFactory { 3167 Payment create(Date startDate, Money amount); 3168 Shipment create(Customer customer, Item item); 3169 Receipt create(Payment payment, Shipment shipment); 3170 } 3171 3172 [...] 3173 3174 install(new FactoryModuleBuilder() 3175 .implement(Payment.class, RealPayment.class) 3176 // excluding .implement for Shipment means the implementation class 3177 // will be 'Shipment' itself, which is legal if it's not an interface. 3178 .implement(Receipt.class, RealReceipt.class) 3179 .build(OrderFactory.class));</pre> 3180 </pre> 3181 3182 <h3>Using the factory</h3> 3183 Inject your factory into your application classes. When you use the factory, your arguments 3184 will be combined with values from the injector to construct an instance. 3185 3186 <pre>public class PaymentAction { 3187 {@literal @}Inject private PaymentFactory paymentFactory; 3188 3189 public void doPayment(Money amount) { 3190 Payment payment = paymentFactory.create(new Date(), amount); 3191 payment.apply(); 3192 } 3193 }</pre> 3194 3195 <h3>Making parameter types distinct</h3> 3196 The types of the factory method's parameters must be distinct. To use multiple parameters of 3197 the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the 3198 parameters. The names must be applied to the factory method's parameters: 3199 3200 <pre>public interface PaymentFactory { 3201 Payment create( 3202 <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 3203 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 3204 Money amount); 3205 } </pre> 3206 3207 ...and to the concrete type's constructor parameters: 3208 3209 <pre>public class RealPayment implements Payment { 3210 {@literal @}Inject 3211 public RealPayment( 3212 CreditService creditService, 3213 AuthService authService, 3214 <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 3215 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 3216 <strong>{@literal @}Assisted</strong> Money amount) { 3217 ... 3218 } 3219 }</pre> 3220 3221 <h3>Values are created by Guice</h3> 3222 Returned factories use child injectors to create values. The values are eligible for method 3223 interception. In addition, {@literal @}{@literal Inject} members will be injected before they are 3224 returned. 3225 3226 <h3>More configuration options</h3> 3227 In addition to simply specifying an implementation class for any returned type, factories' return 3228 values can be automatic or can be configured to use annotations: 3229 <p/> 3230 If you just want to return the types specified in the factory, do not configure any 3231 implementations: 3232 3233 <pre>public interface FruitFactory { 3234 Apple getApple(Color color); 3235 } 3236 ... 3237 protected void configure() { 3238 install(new FactoryModuleBuilder().build(FruitFactory.class)); 3239 }</pre> 3240 3241 Note that any type returned by the factory in this manner needs to be an implementation class. 3242 <p/> 3243 To return two different implementations for the same interface from your factory, use binding 3244 annotations on your return types: 3245 3246 <pre>interface CarFactory { 3247 {@literal @}Named("fast") Car getFastCar(Color color); 3248 {@literal @}Named("clean") Car getCleanCar(Color color); 3249 } 3250 ... 3251 protected void configure() { 3252 install(new FactoryModuleBuilder() 3253 .implement(Car.class, Names.named("fast"), Porsche.class) 3254 .implement(Car.class, Names.named("clean"), Prius.class) 3255 .build(CarFactory.class)); 3256 }</pre> 3257 3258 <h3>Implementation limitations</h3> 3259 As a limitation of the implementation, it is prohibited to declare a factory method that 3260 accepts a {@code Provider} as one of its arguments. 3261 3262 @since 3.0 3263 @author schmitt@google.com (Peter Schmitt)]]> 3264 </doc> 3265 </class> 3266 <!-- end class com.google.inject.assistedinject.FactoryModuleBuilder --> 3267 <!-- start class com.google.inject.assistedinject.FactoryProvider --> 3268 <class name="FactoryProvider" extends="java.lang.Object" 3269 abstract="false" 3270 static="false" final="false" visibility="public" 3271 deprecated="use {@link FactoryModuleBuilder} instead."> 3272 <implements name="com.google.inject.Provider<F>"/> 3273 <implements name="com.google.inject.spi.HasDependencies"/> 3274 <method name="newFactory" return="com.google.inject.Provider<F>" 3275 abstract="false" native="false" synchronized="false" 3276 static="true" final="false" visibility="public" 3277 deprecated="not deprecated"> 3278 <param name="factoryType" type="java.lang.Class<F>"/> 3279 <param name="implementationType" type="java.lang.Class<?>"/> 3280 </method> 3281 <method name="newFactory" return="com.google.inject.Provider<F>" 3282 abstract="false" native="false" synchronized="false" 3283 static="true" final="false" visibility="public" 3284 deprecated="not deprecated"> 3285 <param name="factoryType" type="com.google.inject.TypeLiteral<F>"/> 3286 <param name="implementationType" type="com.google.inject.TypeLiteral<?>"/> 3287 </method> 3288 <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 3289 abstract="false" native="false" synchronized="false" 3290 static="false" final="false" visibility="public" 3291 deprecated="not deprecated"> 3292 </method> 3293 <method name="get" return="F" 3294 abstract="false" native="false" synchronized="false" 3295 static="false" final="false" visibility="public" 3296 deprecated="not deprecated"> 3297 </method> 3298 <method name="hashCode" return="int" 3299 abstract="false" native="false" synchronized="false" 3300 static="false" final="false" visibility="public" 3301 deprecated="not deprecated"> 3302 </method> 3303 <method name="equals" return="boolean" 3304 abstract="false" native="false" synchronized="false" 3305 static="false" final="false" visibility="public" 3306 deprecated="not deprecated"> 3307 <param name="obj" type="java.lang.Object"/> 3308 </method> 3309 <doc> 3310 <![CDATA[<strong>Obsolete.</strong> Prefer {@link FactoryModuleBuilder} for its more concise API and 3311 additional capability. 3312 3313 <p>Provides a factory that combines the caller's arguments with injector-supplied values to 3314 construct objects. 3315 3316 <h3>Defining a factory</h3> 3317 Create an interface whose methods return the constructed type, or any of its supertypes. The 3318 method's parameters are the arguments required to build the constructed type. 3319 <pre>public interface PaymentFactory { 3320 Payment create(Date startDate, Money amount); 3321 }</pre> 3322 You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i> 3323 or <i>newPayment</i>. 3324 3325 <h3>Creating a type that accepts factory parameters</h3> 3326 {@code constructedType} is a concrete class with an {@literal @}{@link Inject}-annotated 3327 constructor. In addition to injector-supplied parameters, the constructor should have 3328 parameters that match each of the factory method's parameters. Each factory-supplied parameter 3329 requires an {@literal @}{@link Assisted} annotation. This serves to document that the parameter 3330 is not bound by your application's modules. 3331 <pre>public class RealPayment implements Payment { 3332 {@literal @}Inject 3333 public RealPayment( 3334 CreditService creditService, 3335 AuthService authService, 3336 <strong>{@literal @}Assisted Date startDate</strong>, 3337 <strong>{@literal @}Assisted Money amount</strong>) { 3338 ... 3339 } 3340 }</pre> 3341 Any parameter that permits a null value should also be annotated {@code @Nullable}. 3342 3343 <h3>Configuring factories</h3> 3344 In your {@link com.google.inject.Module module}, bind the factory interface to the returned 3345 factory: 3346 <pre>bind(PaymentFactory.class).toProvider( 3347 FactoryProvider.newFactory(PaymentFactory.class, RealPayment.class));</pre> 3348 As a side-effect of this binding, Guice will inject the factory to initialize it for use. The 3349 factory cannot be used until the injector has been initialized. 3350 3351 <h3>Using the factory</h3> 3352 Inject your factory into your application classes. When you use the factory, your arguments 3353 will be combined with values from the injector to construct an instance. 3354 <pre>public class PaymentAction { 3355 {@literal @}Inject private PaymentFactory paymentFactory; 3356 3357 public void doPayment(Money amount) { 3358 Payment payment = paymentFactory.create(new Date(), amount); 3359 payment.apply(); 3360 } 3361 }</pre> 3362 3363 <h3>Making parameter types distinct</h3> 3364 The types of the factory method's parameters must be distinct. To use multiple parameters of 3365 the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the 3366 parameters. The names must be applied to the factory method's parameters: 3367 3368 <pre>public interface PaymentFactory { 3369 Payment create( 3370 <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 3371 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 3372 Money amount); 3373 } </pre> 3374 ...and to the concrete type's constructor parameters: 3375 <pre>public class RealPayment implements Payment { 3376 {@literal @}Inject 3377 public RealPayment( 3378 CreditService creditService, 3379 AuthService authService, 3380 <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 3381 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 3382 <strong>{@literal @}Assisted</strong> Money amount) { 3383 ... 3384 } 3385 }</pre> 3386 3387 <h3>Values are created by Guice</h3> 3388 Returned factories use child injectors to create values. The values are eligible for method 3389 interception. In addition, {@literal @}{@literal Inject} members will be injected before they are 3390 returned. 3391 3392 <h3>Backwards compatibility using {@literal @}AssistedInject</h3> 3393 Instead of the {@literal @}Inject annotation, you may annotate the constructed classes with 3394 {@literal @}{@link AssistedInject}. This triggers a limited backwards-compatability mode. 3395 3396 <p>Instead of matching factory method arguments to constructor parameters using their names, the 3397 <strong>parameters are matched by their order</strong>. The first factory method argument is 3398 used for the first {@literal @}Assisted constructor parameter, etc.. Annotation names have no 3399 effect. 3400 3401 <p>Returned values are <strong>not created by Guice</strong>. These types are not eligible for 3402 method interception. They do receive post-construction member injection. 3403 3404 @param <F> The factory interface 3405 3406 @author jmourits@google.com (Jerome Mourits) 3407 @author jessewilson@google.com (Jesse Wilson) 3408 @author dtm@google.com (Daniel Martin) 3409 3410 @deprecated use {@link FactoryModuleBuilder} instead.]]> 3411 </doc> 3412 </class> 3413 <!-- end class com.google.inject.assistedinject.FactoryProvider --> 3414</package> 3415<package name="com.google.inject.binder"> 3416 <!-- start interface com.google.inject.binder.AnnotatedBindingBuilder --> 3417 <interface name="AnnotatedBindingBuilder" abstract="true" 3418 static="false" final="false" visibility="public" 3419 deprecated="not deprecated"> 3420 <implements name="com.google.inject.binder.LinkedBindingBuilder<T>"/> 3421 <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder<T>" 3422 abstract="true" native="false" synchronized="false" 3423 static="false" final="false" visibility="public" 3424 deprecated="not deprecated"> 3425 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3426 <doc> 3427 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3428 </doc> 3429 </method> 3430 <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder<T>" 3431 abstract="true" native="false" synchronized="false" 3432 static="false" final="false" visibility="public" 3433 deprecated="not deprecated"> 3434 <param name="annotation" type="java.lang.annotation.Annotation"/> 3435 <doc> 3436 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3437 </doc> 3438 </method> 3439 <doc> 3440 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3441 3442 @author crazybob@google.com (Bob Lee)]]> 3443 </doc> 3444 </interface> 3445 <!-- end interface com.google.inject.binder.AnnotatedBindingBuilder --> 3446 <!-- start interface com.google.inject.binder.AnnotatedConstantBindingBuilder --> 3447 <interface name="AnnotatedConstantBindingBuilder" abstract="true" 3448 static="false" final="false" visibility="public" 3449 deprecated="not deprecated"> 3450 <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder" 3451 abstract="true" native="false" synchronized="false" 3452 static="false" final="false" visibility="public" 3453 deprecated="not deprecated"> 3454 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3455 <doc> 3456 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3457 </doc> 3458 </method> 3459 <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder" 3460 abstract="true" native="false" synchronized="false" 3461 static="false" final="false" visibility="public" 3462 deprecated="not deprecated"> 3463 <param name="annotation" type="java.lang.annotation.Annotation"/> 3464 <doc> 3465 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3466 </doc> 3467 </method> 3468 <doc> 3469 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3470 3471 @author crazybob@google.com (Bob Lee)]]> 3472 </doc> 3473 </interface> 3474 <!-- end interface com.google.inject.binder.AnnotatedConstantBindingBuilder --> 3475 <!-- start interface com.google.inject.binder.AnnotatedElementBuilder --> 3476 <interface name="AnnotatedElementBuilder" abstract="true" 3477 static="false" final="false" visibility="public" 3478 deprecated="not deprecated"> 3479 <method name="annotatedWith" 3480 abstract="true" native="false" synchronized="false" 3481 static="false" final="false" visibility="public" 3482 deprecated="not deprecated"> 3483 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3484 <doc> 3485 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3486 </doc> 3487 </method> 3488 <method name="annotatedWith" 3489 abstract="true" native="false" synchronized="false" 3490 static="false" final="false" visibility="public" 3491 deprecated="not deprecated"> 3492 <param name="annotation" type="java.lang.annotation.Annotation"/> 3493 <doc> 3494 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3495 </doc> 3496 </method> 3497 <doc> 3498 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3499 3500 @author jessewilson@google.com (Jesse Wilson) 3501 @since 2.0]]> 3502 </doc> 3503 </interface> 3504 <!-- end interface com.google.inject.binder.AnnotatedElementBuilder --> 3505 <!-- start interface com.google.inject.binder.ConstantBindingBuilder --> 3506 <interface name="ConstantBindingBuilder" abstract="true" 3507 static="false" final="false" visibility="public" 3508 deprecated="not deprecated"> 3509 <method name="to" 3510 abstract="true" native="false" synchronized="false" 3511 static="false" final="false" visibility="public" 3512 deprecated="not deprecated"> 3513 <param name="value" type="java.lang.String"/> 3514 <doc> 3515 <![CDATA[Binds constant to the given value.]]> 3516 </doc> 3517 </method> 3518 <method name="to" 3519 abstract="true" native="false" synchronized="false" 3520 static="false" final="false" visibility="public" 3521 deprecated="not deprecated"> 3522 <param name="value" type="int"/> 3523 <doc> 3524 <![CDATA[Binds constant to the given value.]]> 3525 </doc> 3526 </method> 3527 <method name="to" 3528 abstract="true" native="false" synchronized="false" 3529 static="false" final="false" visibility="public" 3530 deprecated="not deprecated"> 3531 <param name="value" type="long"/> 3532 <doc> 3533 <![CDATA[Binds constant to the given value.]]> 3534 </doc> 3535 </method> 3536 <method name="to" 3537 abstract="true" native="false" synchronized="false" 3538 static="false" final="false" visibility="public" 3539 deprecated="not deprecated"> 3540 <param name="value" type="boolean"/> 3541 <doc> 3542 <![CDATA[Binds constant to the given value.]]> 3543 </doc> 3544 </method> 3545 <method name="to" 3546 abstract="true" native="false" synchronized="false" 3547 static="false" final="false" visibility="public" 3548 deprecated="not deprecated"> 3549 <param name="value" type="double"/> 3550 <doc> 3551 <![CDATA[Binds constant to the given value.]]> 3552 </doc> 3553 </method> 3554 <method name="to" 3555 abstract="true" native="false" synchronized="false" 3556 static="false" final="false" visibility="public" 3557 deprecated="not deprecated"> 3558 <param name="value" type="float"/> 3559 <doc> 3560 <![CDATA[Binds constant to the given value.]]> 3561 </doc> 3562 </method> 3563 <method name="to" 3564 abstract="true" native="false" synchronized="false" 3565 static="false" final="false" visibility="public" 3566 deprecated="not deprecated"> 3567 <param name="value" type="short"/> 3568 <doc> 3569 <![CDATA[Binds constant to the given value.]]> 3570 </doc> 3571 </method> 3572 <method name="to" 3573 abstract="true" native="false" synchronized="false" 3574 static="false" final="false" visibility="public" 3575 deprecated="not deprecated"> 3576 <param name="value" type="char"/> 3577 <doc> 3578 <![CDATA[Binds constant to the given value.]]> 3579 </doc> 3580 </method> 3581 <method name="to" 3582 abstract="true" native="false" synchronized="false" 3583 static="false" final="false" visibility="public" 3584 deprecated="not deprecated"> 3585 <param name="value" type="byte"/> 3586 <doc> 3587 <![CDATA[Binds constant to the given value. 3588 3589 @since 3.0]]> 3590 </doc> 3591 </method> 3592 <method name="to" 3593 abstract="true" native="false" synchronized="false" 3594 static="false" final="false" visibility="public" 3595 deprecated="not deprecated"> 3596 <param name="value" type="java.lang.Class<?>"/> 3597 <doc> 3598 <![CDATA[Binds constant to the given value.]]> 3599 </doc> 3600 </method> 3601 <method name="to" 3602 abstract="true" native="false" synchronized="false" 3603 static="false" final="false" visibility="public" 3604 deprecated="not deprecated"> 3605 <param name="value" type="E extends java.lang.Enum<E>"/> 3606 <doc> 3607 <![CDATA[Binds constant to the given value.]]> 3608 </doc> 3609 </method> 3610 <doc> 3611 <![CDATA[Binds to a constant value.]]> 3612 </doc> 3613 </interface> 3614 <!-- end interface com.google.inject.binder.ConstantBindingBuilder --> 3615 <!-- start interface com.google.inject.binder.LinkedBindingBuilder --> 3616 <interface name="LinkedBindingBuilder" abstract="true" 3617 static="false" final="false" visibility="public" 3618 deprecated="not deprecated"> 3619 <implements name="com.google.inject.binder.ScopedBindingBuilder"/> 3620 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 3621 abstract="true" native="false" synchronized="false" 3622 static="false" final="false" visibility="public" 3623 deprecated="not deprecated"> 3624 <param name="implementation" type="java.lang.Class<? extends T>"/> 3625 <doc> 3626 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3627 </doc> 3628 </method> 3629 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 3630 abstract="true" native="false" synchronized="false" 3631 static="false" final="false" visibility="public" 3632 deprecated="not deprecated"> 3633 <param name="implementation" type="com.google.inject.TypeLiteral<? extends T>"/> 3634 <doc> 3635 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3636 </doc> 3637 </method> 3638 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 3639 abstract="true" native="false" synchronized="false" 3640 static="false" final="false" visibility="public" 3641 deprecated="not deprecated"> 3642 <param name="targetKey" type="com.google.inject.Key<? extends T>"/> 3643 <doc> 3644 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3645 </doc> 3646 </method> 3647 <method name="toInstance" 3648 abstract="true" native="false" synchronized="false" 3649 static="false" final="false" visibility="public" 3650 deprecated="not deprecated"> 3651 <param name="instance" type="T"/> 3652 <doc> 3653 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3654 3655 @see com.google.inject.Injector#injectMembers]]> 3656 </doc> 3657 </method> 3658 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3659 abstract="true" native="false" synchronized="false" 3660 static="false" final="false" visibility="public" 3661 deprecated="not deprecated"> 3662 <param name="provider" type="com.google.inject.Provider<? extends T>"/> 3663 <doc> 3664 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3665 3666 @see com.google.inject.Injector#injectMembers]]> 3667 </doc> 3668 </method> 3669 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3670 abstract="true" native="false" synchronized="false" 3671 static="false" final="false" visibility="public" 3672 deprecated="not deprecated"> 3673 <param name="provider" type="javax.inject.Provider<? extends T>"/> 3674 <doc> 3675 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3676 3677 @see com.google.inject.Injector#injectMembers 3678 @since 4.0]]> 3679 </doc> 3680 </method> 3681 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3682 abstract="true" native="false" synchronized="false" 3683 static="false" final="false" visibility="public" 3684 deprecated="not deprecated"> 3685 <param name="providerType" type="java.lang.Class<? extends javax.inject.Provider<? extends T>>"/> 3686 <doc> 3687 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3688 </doc> 3689 </method> 3690 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3691 abstract="true" native="false" synchronized="false" 3692 static="false" final="false" visibility="public" 3693 deprecated="not deprecated"> 3694 <param name="providerType" type="com.google.inject.TypeLiteral<? extends javax.inject.Provider<? extends T>>"/> 3695 <doc> 3696 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3697 </doc> 3698 </method> 3699 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3700 abstract="true" native="false" synchronized="false" 3701 static="false" final="false" visibility="public" 3702 deprecated="not deprecated"> 3703 <param name="providerKey" type="com.google.inject.Key<? extends javax.inject.Provider<? extends T>>"/> 3704 <doc> 3705 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3706 </doc> 3707 </method> 3708 <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder" 3709 abstract="true" native="false" synchronized="false" 3710 static="false" final="false" visibility="public" 3711 deprecated="not deprecated"> 3712 <param name="constructor" type="java.lang.reflect.Constructor<S>"/> 3713 <doc> 3714 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3715 3716 @since 3.0]]> 3717 </doc> 3718 </method> 3719 <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder" 3720 abstract="true" native="false" synchronized="false" 3721 static="false" final="false" visibility="public" 3722 deprecated="not deprecated"> 3723 <param name="constructor" type="java.lang.reflect.Constructor<S>"/> 3724 <param name="type" type="com.google.inject.TypeLiteral<? extends S>"/> 3725 <doc> 3726 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3727 3728 @since 3.0]]> 3729 </doc> 3730 </method> 3731 <doc> 3732 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3733 3734 @author crazybob@google.com (Bob Lee)]]> 3735 </doc> 3736 </interface> 3737 <!-- end interface com.google.inject.binder.LinkedBindingBuilder --> 3738 <!-- start interface com.google.inject.binder.ScopedBindingBuilder --> 3739 <interface name="ScopedBindingBuilder" abstract="true" 3740 static="false" final="false" visibility="public" 3741 deprecated="not deprecated"> 3742 <method name="in" 3743 abstract="true" native="false" synchronized="false" 3744 static="false" final="false" visibility="public" 3745 deprecated="not deprecated"> 3746 <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3747 <doc> 3748 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3749 </doc> 3750 </method> 3751 <method name="in" 3752 abstract="true" native="false" synchronized="false" 3753 static="false" final="false" visibility="public" 3754 deprecated="not deprecated"> 3755 <param name="scope" type="com.google.inject.Scope"/> 3756 <doc> 3757 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3758 </doc> 3759 </method> 3760 <method name="asEagerSingleton" 3761 abstract="true" native="false" synchronized="false" 3762 static="false" final="false" visibility="public" 3763 deprecated="not deprecated"> 3764 <doc> 3765 <![CDATA[Instructs the {@link com.google.inject.Injector} to eagerly initialize this 3766 singleton-scoped binding upon creation. Useful for application 3767 initialization logic. See the EDSL examples at 3768 {@link com.google.inject.Binder}.]]> 3769 </doc> 3770 </method> 3771 <doc> 3772 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3773 3774 @author crazybob@google.com (Bob Lee)]]> 3775 </doc> 3776 </interface> 3777 <!-- end interface com.google.inject.binder.ScopedBindingBuilder --> 3778</package> 3779<package name="com.google.inject.daggeradapter"> 3780 <!-- start class com.google.inject.daggeradapter.DaggerAdapter --> 3781 <class name="DaggerAdapter" extends="java.lang.Object" 3782 abstract="false" 3783 static="false" final="true" visibility="public" 3784 deprecated="not deprecated"> 3785 <method name="from" return="com.google.inject.Module" 3786 abstract="false" native="false" synchronized="false" 3787 static="true" final="false" visibility="public" 3788 deprecated="not deprecated"> 3789 <param name="daggerModuleObjects" type="java.lang.Object[]"/> 3790 <doc> 3791 <![CDATA[Returns a guice module from a dagger module. 3792 3793 <p>Note: At present, it does not honor {@code @Module(includes=...)} directives.]]> 3794 </doc> 3795 </method> 3796 <doc> 3797 <![CDATA[A utility to adapt classes annotated with {@link @dagger.Module} such that their 3798 {@link @dagger.Provides} methods can be properly invoked by Guice to perform their 3799 provision operations. 3800 3801 <p>Simple example: <pre>{@code 3802 Guice.createInjector(...other modules..., DaggerAdapter.from(new SomeDaggerAdapter())); 3803 }</pre> 3804 3805 <p>Some notes on usage and compatibility. 3806 <ul> 3807 <li>Dagger provider methods have a "SET_VALUES" provision mode not supported by Guice. 3808 <li>MapBindings are not yet implemented (pending). 3809 <li>Be careful about stateful modules. In contrast to Dagger (where components are 3810 expected to be recreated on-demand with new Module instances), Guice typically 3811 has a single injector with a long lifetime, so your module instance will be used 3812 throughout the lifetime of the entire app. 3813 <li>Dagger 1.x uses {@link @Singleton} for all scopes, including shorter-lived scopes 3814 like per-request or per-activity. Using modules written with Dagger 1.x usage 3815 in mind may result in mis-scoped objects. 3816 <li>Dagger 2.x supports custom scope annotations, but for use in Guice, a custom scope 3817 implementation must be registered in order to support the custom lifetime of that 3818 annotation. 3819 </ul> 3820 3821 @author cgruber@google.com (Christian Gruber)]]> 3822 </doc> 3823 </class> 3824 <!-- end class com.google.inject.daggeradapter.DaggerAdapter --> 3825</package> 3826<package name="com.google.inject.grapher"> 3827 <!-- start class com.google.inject.grapher.AbstractInjectorGrapher --> 3828 <class name="AbstractInjectorGrapher" extends="java.lang.Object" 3829 abstract="true" 3830 static="false" final="false" visibility="public" 3831 deprecated="not deprecated"> 3832 <implements name="com.google.inject.grapher.InjectorGrapher"/> 3833 <constructor name="AbstractInjectorGrapher" 3834 static="false" final="false" visibility="public" 3835 deprecated="not deprecated"> 3836 </constructor> 3837 <constructor name="AbstractInjectorGrapher" type="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters" 3838 static="false" final="false" visibility="public" 3839 deprecated="not deprecated"> 3840 </constructor> 3841 <method name="graph" 3842 abstract="false" native="false" synchronized="false" 3843 static="false" final="true" visibility="public" 3844 deprecated="not deprecated"> 3845 <param name="injector" type="com.google.inject.Injector"/> 3846 <exception name="IOException" type="java.io.IOException"/> 3847 </method> 3848 <method name="graph" 3849 abstract="false" native="false" synchronized="false" 3850 static="false" final="true" visibility="public" 3851 deprecated="not deprecated"> 3852 <param name="injector" type="com.google.inject.Injector"/> 3853 <param name="root" type="java.util.Set<com.google.inject.Key<?>>"/> 3854 <exception name="IOException" type="java.io.IOException"/> 3855 </method> 3856 <method name="reset" 3857 abstract="true" native="false" synchronized="false" 3858 static="false" final="false" visibility="protected" 3859 deprecated="not deprecated"> 3860 <exception name="IOException" type="java.io.IOException"/> 3861 <doc> 3862 <![CDATA[Resets the state of the grapher before rendering a new graph.]]> 3863 </doc> 3864 </method> 3865 <method name="newInterfaceNode" 3866 abstract="true" native="false" synchronized="false" 3867 static="false" final="false" visibility="protected" 3868 deprecated="not deprecated"> 3869 <param name="node" type="com.google.inject.grapher.InterfaceNode"/> 3870 <exception name="IOException" type="java.io.IOException"/> 3871 <doc> 3872 <![CDATA[Adds a new interface node to the graph.]]> 3873 </doc> 3874 </method> 3875 <method name="newImplementationNode" 3876 abstract="true" native="false" synchronized="false" 3877 static="false" final="false" visibility="protected" 3878 deprecated="not deprecated"> 3879 <param name="node" type="com.google.inject.grapher.ImplementationNode"/> 3880 <exception name="IOException" type="java.io.IOException"/> 3881 <doc> 3882 <![CDATA[Adds a new implementation node to the graph.]]> 3883 </doc> 3884 </method> 3885 <method name="newInstanceNode" 3886 abstract="true" native="false" synchronized="false" 3887 static="false" final="false" visibility="protected" 3888 deprecated="not deprecated"> 3889 <param name="node" type="com.google.inject.grapher.InstanceNode"/> 3890 <exception name="IOException" type="java.io.IOException"/> 3891 <doc> 3892 <![CDATA[Adds a new instance node to the graph.]]> 3893 </doc> 3894 </method> 3895 <method name="newDependencyEdge" 3896 abstract="true" native="false" synchronized="false" 3897 static="false" final="false" visibility="protected" 3898 deprecated="not deprecated"> 3899 <param name="edge" type="com.google.inject.grapher.DependencyEdge"/> 3900 <exception name="IOException" type="java.io.IOException"/> 3901 <doc> 3902 <![CDATA[Adds a new dependency edge to the graph.]]> 3903 </doc> 3904 </method> 3905 <method name="newBindingEdge" 3906 abstract="true" native="false" synchronized="false" 3907 static="false" final="false" visibility="protected" 3908 deprecated="not deprecated"> 3909 <param name="edge" type="com.google.inject.grapher.BindingEdge"/> 3910 <exception name="IOException" type="java.io.IOException"/> 3911 <doc> 3912 <![CDATA[Adds a new binding edge to the graph.]]> 3913 </doc> 3914 </method> 3915 <method name="postProcess" 3916 abstract="true" native="false" synchronized="false" 3917 static="false" final="false" visibility="protected" 3918 deprecated="not deprecated"> 3919 <exception name="IOException" type="java.io.IOException"/> 3920 <doc> 3921 <![CDATA[Performs any post processing required after all nodes and edges have been added.]]> 3922 </doc> 3923 </method> 3924 <doc> 3925 <![CDATA[Abstract injector grapher that builds the dependency graph but doesn't render it. 3926 3927 @author bojand@google.com (Bojan Djordjevic) 3928 @since 4.0]]> 3929 </doc> 3930 </class> 3931 <!-- end class com.google.inject.grapher.AbstractInjectorGrapher --> 3932 <!-- start class com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters --> 3933 <class name="AbstractInjectorGrapher.GrapherParameters" extends="java.lang.Object" 3934 abstract="false" 3935 static="true" final="true" visibility="public" 3936 deprecated="not deprecated"> 3937 <constructor name="GrapherParameters" 3938 static="false" final="false" visibility="public" 3939 deprecated="not deprecated"> 3940 </constructor> 3941 <method name="getRootKeySetCreator" return="com.google.inject.grapher.RootKeySetCreator" 3942 abstract="false" native="false" synchronized="false" 3943 static="false" final="false" visibility="public" 3944 deprecated="not deprecated"> 3945 </method> 3946 <method name="setRootKeySetCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters" 3947 abstract="false" native="false" synchronized="false" 3948 static="false" final="false" visibility="public" 3949 deprecated="not deprecated"> 3950 <param name="rootKeySetCreator" type="com.google.inject.grapher.RootKeySetCreator"/> 3951 </method> 3952 <method name="getAliasCreator" return="com.google.inject.grapher.AliasCreator" 3953 abstract="false" native="false" synchronized="false" 3954 static="false" final="false" visibility="public" 3955 deprecated="not deprecated"> 3956 </method> 3957 <method name="setAliasCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters" 3958 abstract="false" native="false" synchronized="false" 3959 static="false" final="false" visibility="public" 3960 deprecated="not deprecated"> 3961 <param name="aliasCreator" type="com.google.inject.grapher.AliasCreator"/> 3962 </method> 3963 <method name="getNodeCreator" return="com.google.inject.grapher.NodeCreator" 3964 abstract="false" native="false" synchronized="false" 3965 static="false" final="false" visibility="public" 3966 deprecated="not deprecated"> 3967 </method> 3968 <method name="setNodeCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters" 3969 abstract="false" native="false" synchronized="false" 3970 static="false" final="false" visibility="public" 3971 deprecated="not deprecated"> 3972 <param name="nodeCreator" type="com.google.inject.grapher.NodeCreator"/> 3973 </method> 3974 <method name="getEdgeCreator" return="com.google.inject.grapher.EdgeCreator" 3975 abstract="false" native="false" synchronized="false" 3976 static="false" final="false" visibility="public" 3977 deprecated="not deprecated"> 3978 </method> 3979 <method name="setEdgeCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters" 3980 abstract="false" native="false" synchronized="false" 3981 static="false" final="false" visibility="public" 3982 deprecated="not deprecated"> 3983 <param name="edgeCreator" type="com.google.inject.grapher.EdgeCreator"/> 3984 </method> 3985 <doc> 3986 <![CDATA[Parameters used to override default settings of the grapher. 3987 @since 4.0]]> 3988 </doc> 3989 </class> 3990 <!-- end class com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters --> 3991 <!-- start class com.google.inject.grapher.Alias --> 3992 <class name="Alias" extends="java.lang.Object" 3993 abstract="false" 3994 static="false" final="true" visibility="public" 3995 deprecated="not deprecated"> 3996 <constructor name="Alias" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId" 3997 static="false" final="false" visibility="public" 3998 deprecated="not deprecated"> 3999 </constructor> 4000 <method name="getFromId" return="com.google.inject.grapher.NodeId" 4001 abstract="false" native="false" synchronized="false" 4002 static="false" final="false" visibility="public" 4003 deprecated="not deprecated"> 4004 </method> 4005 <method name="getToId" return="com.google.inject.grapher.NodeId" 4006 abstract="false" native="false" synchronized="false" 4007 static="false" final="false" visibility="public" 4008 deprecated="not deprecated"> 4009 </method> 4010 <doc> 4011 <![CDATA[Alias between two nodes. Causes the 'from' node to be aliased with the 'to' node, which means 4012 that the 'from' node is not rendered and all edges going to it instead go to the 'to' node. 4013 4014 @author bojand@google.com (Bojan Djordjevic) 4015 @since 4.0]]> 4016 </doc> 4017 </class> 4018 <!-- end class com.google.inject.grapher.Alias --> 4019 <!-- start interface com.google.inject.grapher.AliasCreator --> 4020 <interface name="AliasCreator" abstract="true" 4021 static="false" final="false" visibility="public" 4022 deprecated="not deprecated"> 4023 <method name="createAliases" return="java.lang.Iterable<com.google.inject.grapher.Alias>" 4024 abstract="true" native="false" synchronized="false" 4025 static="false" final="false" visibility="public" 4026 deprecated="not deprecated"> 4027 <param name="bindings" type="java.lang.Iterable<com.google.inject.Binding<?>>"/> 4028 <doc> 4029 <![CDATA[Returns aliases for the given dependency graph. The aliases do not need to be transitively 4030 resolved, i.e. it is valid to return an alias (X to Y) and an alias (Y to Z). It is the 4031 responsibility of the caller to resolve this to (X to Z) and (Y to Z). 4032 4033 @param bindings bindings that make up the dependency graph 4034 @return aliases that should be applied on the graph]]> 4035 </doc> 4036 </method> 4037 <doc> 4038 <![CDATA[Creator of node aliases. Used by dependency graphers to merge nodes in the internal Guice graph 4039 into a single node on the rendered graph. 4040 4041 @author bojand@google.com (Bojan Djordjevic) 4042 @since 4.0]]> 4043 </doc> 4044 </interface> 4045 <!-- end interface com.google.inject.grapher.AliasCreator --> 4046 <!-- start class com.google.inject.grapher.BindingEdge --> 4047 <class name="BindingEdge" extends="com.google.inject.grapher.Edge" 4048 abstract="false" 4049 static="false" final="false" visibility="public" 4050 deprecated="not deprecated"> 4051 <constructor name="BindingEdge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId, com.google.inject.grapher.BindingEdge.Type" 4052 static="false" final="false" visibility="public" 4053 deprecated="not deprecated"> 4054 </constructor> 4055 <method name="getType" return="com.google.inject.grapher.BindingEdge.Type" 4056 abstract="false" native="false" synchronized="false" 4057 static="false" final="false" visibility="public" 4058 deprecated="not deprecated"> 4059 </method> 4060 <method name="equals" return="boolean" 4061 abstract="false" native="false" synchronized="false" 4062 static="false" final="false" visibility="public" 4063 deprecated="not deprecated"> 4064 <param name="obj" type="java.lang.Object"/> 4065 </method> 4066 <method name="hashCode" return="int" 4067 abstract="false" native="false" synchronized="false" 4068 static="false" final="false" visibility="public" 4069 deprecated="not deprecated"> 4070 </method> 4071 <method name="toString" return="java.lang.String" 4072 abstract="false" native="false" synchronized="false" 4073 static="false" final="false" visibility="public" 4074 deprecated="not deprecated"> 4075 </method> 4076 <method name="copy" return="com.google.inject.grapher.Edge" 4077 abstract="false" native="false" synchronized="false" 4078 static="false" final="false" visibility="public" 4079 deprecated="not deprecated"> 4080 <param name="fromId" type="com.google.inject.grapher.NodeId"/> 4081 <param name="toId" type="com.google.inject.grapher.NodeId"/> 4082 </method> 4083 <doc> 4084 <![CDATA[Edge that connects an interface to the type or instance that is bound to implement it. 4085 4086 @author phopkins@gmail.com (Pete Hopkins) 4087 @since 4.0 (since 2.0 as an interface)]]> 4088 </doc> 4089 </class> 4090 <!-- end class com.google.inject.grapher.BindingEdge --> 4091 <!-- start class com.google.inject.grapher.BindingEdge.Type --> 4092 <class name="BindingEdge.Type" extends="java.lang.Enum<com.google.inject.grapher.BindingEdge.Type>" 4093 abstract="false" 4094 static="true" final="true" visibility="public" 4095 deprecated="not deprecated"> 4096 <method name="values" return="com.google.inject.grapher.BindingEdge.Type[]" 4097 abstract="false" native="false" synchronized="false" 4098 static="true" final="false" visibility="public" 4099 deprecated="not deprecated"> 4100 </method> 4101 <method name="valueOf" return="com.google.inject.grapher.BindingEdge.Type" 4102 abstract="false" native="false" synchronized="false" 4103 static="true" final="false" visibility="public" 4104 deprecated="not deprecated"> 4105 <param name="name" type="java.lang.String"/> 4106 </method> 4107 <doc> 4108 <![CDATA[Classification for what kind of binding this edge represents.]]> 4109 </doc> 4110 </class> 4111 <!-- end class com.google.inject.grapher.BindingEdge.Type --> 4112 <!-- start class com.google.inject.grapher.DefaultRootKeySetCreator --> 4113 <class name="DefaultRootKeySetCreator" extends="java.lang.Object" 4114 abstract="false" 4115 static="false" final="false" visibility="public" 4116 deprecated="not deprecated"> 4117 <implements name="com.google.inject.grapher.RootKeySetCreator"/> 4118 <constructor name="DefaultRootKeySetCreator" 4119 static="false" final="false" visibility="public" 4120 deprecated="not deprecated"> 4121 </constructor> 4122 <method name="getRootKeys" return="java.util.Set<com.google.inject.Key<?>>" 4123 abstract="false" native="false" synchronized="false" 4124 static="false" final="false" visibility="public" 4125 deprecated="not deprecated"> 4126 <param name="injector" type="com.google.inject.Injector"/> 4127 </method> 4128 <doc> 4129 <![CDATA[Root key set creator that starts with all types that are not Guice internal types or the 4130 {@link Logger} type. 4131 4132 @author bojand@google.com (Bojan Djordjevic) 4133 @since 4.0]]> 4134 </doc> 4135 </class> 4136 <!-- end class com.google.inject.grapher.DefaultRootKeySetCreator --> 4137 <!-- start class com.google.inject.grapher.DependencyEdge --> 4138 <class name="DependencyEdge" extends="com.google.inject.grapher.Edge" 4139 abstract="false" 4140 static="false" final="false" visibility="public" 4141 deprecated="not deprecated"> 4142 <constructor name="DependencyEdge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId, com.google.inject.spi.InjectionPoint" 4143 static="false" final="false" visibility="public" 4144 deprecated="not deprecated"> 4145 </constructor> 4146 <method name="getInjectionPoint" return="com.google.inject.spi.InjectionPoint" 4147 abstract="false" native="false" synchronized="false" 4148 static="false" final="false" visibility="public" 4149 deprecated="not deprecated"> 4150 </method> 4151 <method name="equals" return="boolean" 4152 abstract="false" native="false" synchronized="false" 4153 static="false" final="false" visibility="public" 4154 deprecated="not deprecated"> 4155 <param name="obj" type="java.lang.Object"/> 4156 </method> 4157 <method name="hashCode" return="int" 4158 abstract="false" native="false" synchronized="false" 4159 static="false" final="false" visibility="public" 4160 deprecated="not deprecated"> 4161 </method> 4162 <method name="toString" return="java.lang.String" 4163 abstract="false" native="false" synchronized="false" 4164 static="false" final="false" visibility="public" 4165 deprecated="not deprecated"> 4166 </method> 4167 <method name="copy" return="com.google.inject.grapher.Edge" 4168 abstract="false" native="false" synchronized="false" 4169 static="false" final="false" visibility="public" 4170 deprecated="not deprecated"> 4171 <param name="fromId" type="com.google.inject.grapher.NodeId"/> 4172 <param name="toId" type="com.google.inject.grapher.NodeId"/> 4173 </method> 4174 <doc> 4175 <![CDATA[Edge from a class or {@link InjectionPoint} to the interface node that will satisfy the 4176 dependency. 4177 4178 @author phopkins@gmail.com (Pete Hopkins) 4179 @since 4.0 (since 2.0 as an interface)]]> 4180 </doc> 4181 </class> 4182 <!-- end class com.google.inject.grapher.DependencyEdge --> 4183 <!-- start class com.google.inject.grapher.Edge --> 4184 <class name="Edge" extends="java.lang.Object" 4185 abstract="true" 4186 static="false" final="false" visibility="public" 4187 deprecated="not deprecated"> 4188 <constructor name="Edge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId" 4189 static="false" final="false" visibility="protected" 4190 deprecated="not deprecated"> 4191 </constructor> 4192 <method name="getFromId" return="com.google.inject.grapher.NodeId" 4193 abstract="false" native="false" synchronized="false" 4194 static="false" final="false" visibility="public" 4195 deprecated="not deprecated"> 4196 </method> 4197 <method name="getToId" return="com.google.inject.grapher.NodeId" 4198 abstract="false" native="false" synchronized="false" 4199 static="false" final="false" visibility="public" 4200 deprecated="not deprecated"> 4201 </method> 4202 <method name="equals" return="boolean" 4203 abstract="false" native="false" synchronized="false" 4204 static="false" final="false" visibility="public" 4205 deprecated="not deprecated"> 4206 <param name="obj" type="java.lang.Object"/> 4207 </method> 4208 <method name="hashCode" return="int" 4209 abstract="false" native="false" synchronized="false" 4210 static="false" final="false" visibility="public" 4211 deprecated="not deprecated"> 4212 </method> 4213 <method name="copy" return="com.google.inject.grapher.Edge" 4214 abstract="true" native="false" synchronized="false" 4215 static="false" final="false" visibility="public" 4216 deprecated="not deprecated"> 4217 <param name="fromId" type="com.google.inject.grapher.NodeId"/> 4218 <param name="toId" type="com.google.inject.grapher.NodeId"/> 4219 <doc> 4220 <![CDATA[Returns a copy of the edge with new node IDs. 4221 4222 @param fromId new ID of the 'from' node 4223 @param toId new ID of the 'to' node 4224 @return copy of the edge with the new node IDs]]> 4225 </doc> 4226 </method> 4227 <doc> 4228 <![CDATA[Edge in a guice dependency graph. 4229 4230 @author bojand@google.com (Bojan Djordjevic) 4231 @since 4.0]]> 4232 </doc> 4233 </class> 4234 <!-- end class com.google.inject.grapher.Edge --> 4235 <!-- start interface com.google.inject.grapher.EdgeCreator --> 4236 <interface name="EdgeCreator" abstract="true" 4237 static="false" final="false" visibility="public" 4238 deprecated="not deprecated"> 4239 <method name="getEdges" return="java.lang.Iterable<com.google.inject.grapher.Edge>" 4240 abstract="true" native="false" synchronized="false" 4241 static="false" final="false" visibility="public" 4242 deprecated="not deprecated"> 4243 <param name="bindings" type="java.lang.Iterable<com.google.inject.Binding<?>>"/> 4244 <doc> 4245 <![CDATA[Returns edges for the given dependency graph.]]> 4246 </doc> 4247 </method> 4248 <doc> 4249 <![CDATA[Creator of graph edges to render. All edges will be rendered on the graph after node aliasing is 4250 performed. 4251 4252 @author bojand@google.com (Bojan Djordjevic) 4253 @since 4.0]]> 4254 </doc> 4255 </interface> 4256 <!-- end interface com.google.inject.grapher.EdgeCreator --> 4257 <!-- start class com.google.inject.grapher.ImplementationNode --> 4258 <class name="ImplementationNode" extends="com.google.inject.grapher.Node" 4259 abstract="false" 4260 static="false" final="false" visibility="public" 4261 deprecated="not deprecated"> 4262 <constructor name="ImplementationNode" type="com.google.inject.grapher.NodeId, java.lang.Object, java.util.Collection<java.lang.reflect.Member>" 4263 static="false" final="false" visibility="public" 4264 deprecated="not deprecated"> 4265 </constructor> 4266 <method name="getMembers" return="java.util.Collection<java.lang.reflect.Member>" 4267 abstract="false" native="false" synchronized="false" 4268 static="false" final="false" visibility="public" 4269 deprecated="not deprecated"> 4270 </method> 4271 <method name="equals" return="boolean" 4272 abstract="false" native="false" synchronized="false" 4273 static="false" final="false" visibility="public" 4274 deprecated="not deprecated"> 4275 <param name="obj" type="java.lang.Object"/> 4276 </method> 4277 <method name="hashCode" return="int" 4278 abstract="false" native="false" synchronized="false" 4279 static="false" final="false" visibility="public" 4280 deprecated="not deprecated"> 4281 </method> 4282 <method name="toString" return="java.lang.String" 4283 abstract="false" native="false" synchronized="false" 4284 static="false" final="false" visibility="public" 4285 deprecated="not deprecated"> 4286 </method> 4287 <method name="copy" return="com.google.inject.grapher.Node" 4288 abstract="false" native="false" synchronized="false" 4289 static="false" final="false" visibility="public" 4290 deprecated="not deprecated"> 4291 <param name="id" type="com.google.inject.grapher.NodeId"/> 4292 </method> 4293 <doc> 4294 <![CDATA[Node for types that have {@link com.google.inject.spi.Dependency}s and are 4295 bound to {@link InterfaceNode}s. These nodes will often have fields for 4296 {@link Member}s that are {@link com.google.inject.spi.InjectionPoint}s. 4297 4298 @see DependencyEdge 4299 @author phopkins@gmail.com (Pete Hopkins) 4300 @since 4.0 (since 2.0 as an interface)]]> 4301 </doc> 4302 </class> 4303 <!-- end class com.google.inject.grapher.ImplementationNode --> 4304 <!-- start interface com.google.inject.grapher.InjectorGrapher --> 4305 <interface name="InjectorGrapher" abstract="true" 4306 static="false" final="false" visibility="public" 4307 deprecated="not deprecated"> 4308 <method name="graph" 4309 abstract="true" native="false" synchronized="false" 4310 static="false" final="false" visibility="public" 4311 deprecated="not deprecated"> 4312 <param name="injector" type="com.google.inject.Injector"/> 4313 <exception name="IOException" type="java.io.IOException"/> 4314 <doc> 4315 <![CDATA[Graphs the guice dependency graph for the given injector using default starting keys.]]> 4316 </doc> 4317 </method> 4318 <method name="graph" 4319 abstract="true" native="false" synchronized="false" 4320 static="false" final="false" visibility="public" 4321 deprecated="not deprecated"> 4322 <param name="injector" type="com.google.inject.Injector"/> 4323 <param name="root" type="java.util.Set<com.google.inject.Key<?>>"/> 4324 <exception name="IOException" type="java.io.IOException"/> 4325 <doc> 4326 <![CDATA[Graphs the guice dependency graph for the given injector using the given starting keys and 4327 their transitive dependencies.]]> 4328 </doc> 4329 </method> 4330 <doc> 4331 <![CDATA[Guice injector grapher. Renders the guice dependency graph for an injector. It can render the 4332 whole dependency graph or just transitive dependencies of a given set of nodes. 4333 4334 @author phopkins@gmail.com (Pete Hopkins) 4335 @since 4.0 (since 2.0 as a concrete class with a different API)]]> 4336 </doc> 4337 </interface> 4338 <!-- end interface com.google.inject.grapher.InjectorGrapher --> 4339 <!-- start class com.google.inject.grapher.InstanceNode --> 4340 <class name="InstanceNode" extends="com.google.inject.grapher.Node" 4341 abstract="false" 4342 static="false" final="false" visibility="public" 4343 deprecated="not deprecated"> 4344 <constructor name="InstanceNode" type="com.google.inject.grapher.NodeId, java.lang.Object, java.lang.Object, java.lang.Iterable<java.lang.reflect.Member>" 4345 static="false" final="false" visibility="public" 4346 deprecated="not deprecated"> 4347 </constructor> 4348 <method name="getInstance" return="java.lang.Object" 4349 abstract="false" native="false" synchronized="false" 4350 static="false" final="false" visibility="public" 4351 deprecated="not deprecated"> 4352 </method> 4353 <method name="getMembers" return="java.lang.Iterable<java.lang.reflect.Member>" 4354 abstract="false" native="false" synchronized="false" 4355 static="false" final="false" visibility="public" 4356 deprecated="not deprecated"> 4357 </method> 4358 <method name="equals" return="boolean" 4359 abstract="false" native="false" synchronized="false" 4360 static="false" final="false" visibility="public" 4361 deprecated="not deprecated"> 4362 <param name="obj" type="java.lang.Object"/> 4363 </method> 4364 <method name="hashCode" return="int" 4365 abstract="false" native="false" synchronized="false" 4366 static="false" final="false" visibility="public" 4367 deprecated="not deprecated"> 4368 </method> 4369 <method name="toString" return="java.lang.String" 4370 abstract="false" native="false" synchronized="false" 4371 static="false" final="false" visibility="public" 4372 deprecated="not deprecated"> 4373 </method> 4374 <method name="copy" return="com.google.inject.grapher.Node" 4375 abstract="false" native="false" synchronized="false" 4376 static="false" final="false" visibility="public" 4377 deprecated="not deprecated"> 4378 <param name="id" type="com.google.inject.grapher.NodeId"/> 4379 </method> 4380 <doc> 4381 <![CDATA[Node for instances. Used when a type is bound to an instance. 4382 4383 @author bojand@google.com (Bojan Djordjevic) 4384 @since 4.0]]> 4385 </doc> 4386 </class> 4387 <!-- end class com.google.inject.grapher.InstanceNode --> 4388 <!-- start class com.google.inject.grapher.InterfaceNode --> 4389 <class name="InterfaceNode" extends="com.google.inject.grapher.Node" 4390 abstract="false" 4391 static="false" final="false" visibility="public" 4392 deprecated="not deprecated"> 4393 <constructor name="InterfaceNode" type="com.google.inject.grapher.NodeId, java.lang.Object" 4394 static="false" final="false" visibility="public" 4395 deprecated="not deprecated"> 4396 </constructor> 4397 <method name="copy" return="com.google.inject.grapher.Node" 4398 abstract="false" native="false" synchronized="false" 4399 static="false" final="false" visibility="public" 4400 deprecated="not deprecated"> 4401 <param name="id" type="com.google.inject.grapher.NodeId"/> 4402 </method> 4403 <method name="equals" return="boolean" 4404 abstract="false" native="false" synchronized="false" 4405 static="false" final="false" visibility="public" 4406 deprecated="not deprecated"> 4407 <param name="obj" type="java.lang.Object"/> 4408 </method> 4409 <method name="toString" return="java.lang.String" 4410 abstract="false" native="false" synchronized="false" 4411 static="false" final="false" visibility="public" 4412 deprecated="not deprecated"> 4413 </method> 4414 <doc> 4415 <![CDATA[Node for an interface type that has been bound to an implementation class or instance. 4416 4417 @see BindingEdge 4418 @author phopkins@gmail.com (Pete Hopkins) 4419 @since 4.0 (since 2.0 as an interface)]]> 4420 </doc> 4421 </class> 4422 <!-- end class com.google.inject.grapher.InterfaceNode --> 4423 <!-- start interface com.google.inject.grapher.NameFactory --> 4424 <interface name="NameFactory" abstract="true" 4425 static="false" final="false" visibility="public" 4426 deprecated="not deprecated"> 4427 <method name="getMemberName" return="java.lang.String" 4428 abstract="true" native="false" synchronized="false" 4429 static="false" final="false" visibility="public" 4430 deprecated="not deprecated"> 4431 <param name="member" type="java.lang.reflect.Member"/> 4432 </method> 4433 <method name="getClassName" return="java.lang.String" 4434 abstract="true" 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="getInstanceName" return="java.lang.String" 4440 abstract="true" native="false" synchronized="false" 4441 static="false" final="false" visibility="public" 4442 deprecated="not deprecated"> 4443 <param name="instance" type="java.lang.Object"/> 4444 </method> 4445 <method name="getAnnotationName" return="java.lang.String" 4446 abstract="true" native="false" synchronized="false" 4447 static="false" final="false" visibility="public" 4448 deprecated="not deprecated"> 4449 <param name="key" type="com.google.inject.Key<?>"/> 4450 </method> 4451 <method name="getSourceName" return="java.lang.String" 4452 abstract="true" native="false" synchronized="false" 4453 static="false" final="false" visibility="public" 4454 deprecated="not deprecated"> 4455 <param name="source" type="java.lang.Object"/> 4456 </method> 4457 <doc> 4458 <![CDATA[Interface for a service that provides nice {@link String}s that we can 4459 display in the graph for the types that come up in 4460 {@link com.google.inject.Binding}s. 4461 4462 @author phopkins@gmail.com (Pete Hopkins)]]> 4463 </doc> 4464 </interface> 4465 <!-- end interface com.google.inject.grapher.NameFactory --> 4466 <!-- start class com.google.inject.grapher.Node --> 4467 <class name="Node" extends="java.lang.Object" 4468 abstract="true" 4469 static="false" final="false" visibility="public" 4470 deprecated="not deprecated"> 4471 <constructor name="Node" type="com.google.inject.grapher.NodeId, java.lang.Object" 4472 static="false" final="false" visibility="protected" 4473 deprecated="not deprecated"> 4474 </constructor> 4475 <method name="getId" return="com.google.inject.grapher.NodeId" 4476 abstract="false" native="false" synchronized="false" 4477 static="false" final="false" visibility="public" 4478 deprecated="not deprecated"> 4479 </method> 4480 <method name="getSource" return="java.lang.Object" 4481 abstract="false" native="false" synchronized="false" 4482 static="false" final="false" visibility="public" 4483 deprecated="not deprecated"> 4484 </method> 4485 <method name="equals" return="boolean" 4486 abstract="false" native="false" synchronized="false" 4487 static="false" final="false" visibility="public" 4488 deprecated="not deprecated"> 4489 <param name="obj" type="java.lang.Object"/> 4490 </method> 4491 <method name="hashCode" return="int" 4492 abstract="false" native="false" synchronized="false" 4493 static="false" final="false" visibility="public" 4494 deprecated="not deprecated"> 4495 </method> 4496 <method name="copy" return="com.google.inject.grapher.Node" 4497 abstract="true" native="false" synchronized="false" 4498 static="false" final="false" visibility="public" 4499 deprecated="not deprecated"> 4500 <param name="id" type="com.google.inject.grapher.NodeId"/> 4501 <doc> 4502 <![CDATA[Returns a copy of the node with a new ID. 4503 4504 @param id new ID of the node 4505 @return copy of the node with a new ID]]> 4506 </doc> 4507 </method> 4508 <doc> 4509 <![CDATA[Node in a guice dependency graph. 4510 4511 @author bojand@google.com (Bojan Djordjevic) 4512 @since 4.0]]> 4513 </doc> 4514 </class> 4515 <!-- end class com.google.inject.grapher.Node --> 4516 <!-- start interface com.google.inject.grapher.NodeCreator --> 4517 <interface name="NodeCreator" abstract="true" 4518 static="false" final="false" visibility="public" 4519 deprecated="not deprecated"> 4520 <method name="getNodes" return="java.lang.Iterable<com.google.inject.grapher.Node>" 4521 abstract="true" native="false" synchronized="false" 4522 static="false" final="false" visibility="public" 4523 deprecated="not deprecated"> 4524 <param name="bindings" type="java.lang.Iterable<com.google.inject.Binding<?>>"/> 4525 <doc> 4526 <![CDATA[Returns nodes for the given dependency graph.]]> 4527 </doc> 4528 </method> 4529 <doc> 4530 <![CDATA[Creator of graph nodes. 4531 4532 @author bojand@google.com (Bojan Djordjevic) 4533 @since 4.0]]> 4534 </doc> 4535 </interface> 4536 <!-- end interface com.google.inject.grapher.NodeCreator --> 4537 <!-- start class com.google.inject.grapher.NodeId --> 4538 <class name="NodeId" extends="java.lang.Object" 4539 abstract="false" 4540 static="false" final="true" visibility="public" 4541 deprecated="not deprecated"> 4542 <method name="newTypeId" return="com.google.inject.grapher.NodeId" 4543 abstract="false" native="false" synchronized="false" 4544 static="true" final="false" visibility="public" 4545 deprecated="not deprecated"> 4546 <param name="key" type="com.google.inject.Key<?>"/> 4547 </method> 4548 <method name="newInstanceId" return="com.google.inject.grapher.NodeId" 4549 abstract="false" native="false" synchronized="false" 4550 static="true" final="false" visibility="public" 4551 deprecated="not deprecated"> 4552 <param name="key" type="com.google.inject.Key<?>"/> 4553 </method> 4554 <method name="getKey" return="com.google.inject.Key<?>" 4555 abstract="false" native="false" synchronized="false" 4556 static="false" final="false" visibility="public" 4557 deprecated="not deprecated"> 4558 </method> 4559 <method name="hashCode" return="int" 4560 abstract="false" native="false" synchronized="false" 4561 static="false" final="false" visibility="public" 4562 deprecated="not deprecated"> 4563 </method> 4564 <method name="equals" return="boolean" 4565 abstract="false" native="false" synchronized="false" 4566 static="false" final="false" visibility="public" 4567 deprecated="not deprecated"> 4568 <param name="obj" type="java.lang.Object"/> 4569 </method> 4570 <method name="toString" return="java.lang.String" 4571 abstract="false" native="false" synchronized="false" 4572 static="false" final="false" visibility="public" 4573 deprecated="not deprecated"> 4574 </method> 4575 <doc> 4576 <![CDATA[ID of a node in the graph. An ID is given by a {@link Key} and a node type, which is used to 4577 distinguish instances and implementation classes for the same key. For example 4578 {@code bind(Integer.class).toInstance(42)} produces two nodes: an 4579 interface node with the key of {@code Key<Integer>} and an instance node with the same 4580 {@link Key} and value of 42. 4581 4582 @author bojand@google.com (Bojan Djordjevic) 4583 @since 4.0]]> 4584 </doc> 4585 </class> 4586 <!-- end class com.google.inject.grapher.NodeId --> 4587 <!-- start class com.google.inject.grapher.NodeId.NodeType --> 4588 <class name="NodeId.NodeType" extends="java.lang.Enum<com.google.inject.grapher.NodeId.NodeType>" 4589 abstract="false" 4590 static="true" final="true" visibility="public" 4591 deprecated="not deprecated"> 4592 <method name="values" return="com.google.inject.grapher.NodeId.NodeType[]" 4593 abstract="false" native="false" synchronized="false" 4594 static="true" final="false" visibility="public" 4595 deprecated="not deprecated"> 4596 </method> 4597 <method name="valueOf" return="com.google.inject.grapher.NodeId.NodeType" 4598 abstract="false" native="false" synchronized="false" 4599 static="true" final="false" visibility="public" 4600 deprecated="not deprecated"> 4601 <param name="name" type="java.lang.String"/> 4602 </method> 4603 <doc> 4604 <![CDATA[Type of node. 4605 4606 @since 4.0]]> 4607 </doc> 4608 </class> 4609 <!-- end class com.google.inject.grapher.NodeId.NodeType --> 4610 <!-- start interface com.google.inject.grapher.RootKeySetCreator --> 4611 <interface name="RootKeySetCreator" abstract="true" 4612 static="false" final="false" visibility="public" 4613 deprecated="not deprecated"> 4614 <method name="getRootKeys" return="java.util.Set<com.google.inject.Key<?>>" 4615 abstract="true" native="false" synchronized="false" 4616 static="false" final="false" visibility="public" 4617 deprecated="not deprecated"> 4618 <param name="injector" type="com.google.inject.Injector"/> 4619 <doc> 4620 <![CDATA[Returns the set of starting keys to graph.]]> 4621 </doc> 4622 </method> 4623 <doc> 4624 <![CDATA[Creator of the default starting set of keys to graph. These keys and their transitive 4625 dependencies will be graphed. 4626 4627 @author bojand@google.com (Bojan Djordjevic) 4628 @since 4.0]]> 4629 </doc> 4630 </interface> 4631 <!-- end interface com.google.inject.grapher.RootKeySetCreator --> 4632 <!-- start class com.google.inject.grapher.ShortNameFactory --> 4633 <class name="ShortNameFactory" extends="java.lang.Object" 4634 abstract="false" 4635 static="false" final="false" visibility="public" 4636 deprecated="not deprecated"> 4637 <implements name="com.google.inject.grapher.NameFactory"/> 4638 <constructor name="ShortNameFactory" 4639 static="false" final="false" visibility="public" 4640 deprecated="not deprecated"> 4641 </constructor> 4642 <method name="getMemberName" return="java.lang.String" 4643 abstract="false" native="false" synchronized="false" 4644 static="false" final="false" visibility="public" 4645 deprecated="not deprecated"> 4646 <param name="member" type="java.lang.reflect.Member"/> 4647 </method> 4648 <method name="getAnnotationName" return="java.lang.String" 4649 abstract="false" native="false" synchronized="false" 4650 static="false" final="false" visibility="public" 4651 deprecated="not deprecated"> 4652 <param name="key" type="com.google.inject.Key<?>"/> 4653 </method> 4654 <method name="getClassName" return="java.lang.String" 4655 abstract="false" native="false" synchronized="false" 4656 static="false" final="false" visibility="public" 4657 deprecated="not deprecated"> 4658 <param name="key" type="com.google.inject.Key<?>"/> 4659 </method> 4660 <method name="getInstanceName" return="java.lang.String" 4661 abstract="false" native="false" synchronized="false" 4662 static="false" final="false" visibility="public" 4663 deprecated="not deprecated"> 4664 <param name="instance" type="java.lang.Object"/> 4665 </method> 4666 <method name="getSourceName" return="java.lang.String" 4667 abstract="false" native="false" synchronized="false" 4668 static="false" final="false" visibility="public" 4669 deprecated="not deprecated"> 4670 <param name="source" type="java.lang.Object"/> 4671 <doc> 4672 <![CDATA[Returns a name for a Guice "source" object. This will typically be either 4673 a {@link StackTraceElement} for when the binding is made to the instance, 4674 or a {@link Method} when a provider method is used.]]> 4675 </doc> 4676 </method> 4677 <method name="getFileString" return="java.lang.String" 4678 abstract="false" native="false" synchronized="false" 4679 static="false" final="false" visibility="protected" 4680 deprecated="not deprecated"> 4681 <param name="stackTraceElement" type="java.lang.StackTraceElement"/> 4682 </method> 4683 <method name="getMethodString" return="java.lang.String" 4684 abstract="false" native="false" synchronized="false" 4685 static="false" final="false" visibility="protected" 4686 deprecated="not deprecated"> 4687 <param name="method" type="java.lang.reflect.Method"/> 4688 </method> 4689 <doc> 4690 <![CDATA[Reasonable implementation for {@link NameFactory}. Mostly takes various 4691 {@link Object#toString()}s and strips package names out of them so that 4692 they'll fit on the graph. 4693 4694 @author phopkins@gmail.com (Pete Hopkins)]]> 4695 </doc> 4696 </class> 4697 <!-- end class com.google.inject.grapher.ShortNameFactory --> 4698 <!-- start class com.google.inject.grapher.TransitiveDependencyVisitor --> 4699 <class name="TransitiveDependencyVisitor" extends="com.google.inject.spi.DefaultBindingTargetVisitor<java.lang.Object, java.util.Collection<com.google.inject.Key<?>>>" 4700 abstract="false" 4701 static="false" final="false" visibility="public" 4702 deprecated="not deprecated"> 4703 <constructor name="TransitiveDependencyVisitor" 4704 static="false" final="false" visibility="public" 4705 deprecated="not deprecated"> 4706 </constructor> 4707 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4708 abstract="false" native="false" synchronized="false" 4709 static="false" final="false" visibility="public" 4710 deprecated="not deprecated"> 4711 <param name="binding" type="com.google.inject.spi.ConstructorBinding<?>"/> 4712 </method> 4713 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4714 abstract="false" native="false" synchronized="false" 4715 static="false" final="false" visibility="public" 4716 deprecated="not deprecated"> 4717 <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding<?>"/> 4718 </method> 4719 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4720 abstract="false" native="false" synchronized="false" 4721 static="false" final="false" visibility="public" 4722 deprecated="not deprecated"> 4723 <param name="binding" type="com.google.inject.spi.InstanceBinding<?>"/> 4724 </method> 4725 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4726 abstract="false" native="false" synchronized="false" 4727 static="false" final="false" visibility="public" 4728 deprecated="not deprecated"> 4729 <param name="binding" type="com.google.inject.spi.LinkedKeyBinding<?>"/> 4730 </method> 4731 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4732 abstract="false" native="false" synchronized="false" 4733 static="false" final="false" visibility="public" 4734 deprecated="not deprecated"> 4735 <param name="binding" type="com.google.inject.spi.ProviderBinding<?>"/> 4736 </method> 4737 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4738 abstract="false" native="false" synchronized="false" 4739 static="false" final="false" visibility="public" 4740 deprecated="not deprecated"> 4741 <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding<?>"/> 4742 </method> 4743 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4744 abstract="false" native="false" synchronized="false" 4745 static="false" final="false" visibility="public" 4746 deprecated="not deprecated"> 4747 <param name="binding" type="com.google.inject.spi.ProviderKeyBinding<?>"/> 4748 </method> 4749 <method name="visitOther" return="java.util.Collection<com.google.inject.Key<?>>" 4750 abstract="false" native="false" synchronized="false" 4751 static="false" final="false" visibility="public" 4752 deprecated="not deprecated"> 4753 <param name="binding" type="com.google.inject.Binding<?>"/> 4754 <doc> 4755 <![CDATA[@since 4.0]]> 4756 </doc> 4757 </method> 4758 <doc> 4759 <![CDATA[{@link com.google.inject.spi.BindingTargetVisitor} that returns a 4760 {@link Collection} of the {@link Key}s of each {@link Binding}'s 4761 dependencies. Used by {@link InjectorGrapher} to walk the dependency graph 4762 from a starting set of {@link Binding}s. 4763 4764 @author phopkins@gmail.com (Pete Hopkins)]]> 4765 </doc> 4766 </class> 4767 <!-- end class com.google.inject.grapher.TransitiveDependencyVisitor --> 4768</package> 4769<package name="com.google.inject.grapher.graphviz"> 4770 <!-- start class com.google.inject.grapher.graphviz.ArrowType --> 4771 <class name="ArrowType" extends="java.lang.Enum<com.google.inject.grapher.graphviz.ArrowType>" 4772 abstract="false" 4773 static="false" final="true" visibility="public" 4774 deprecated="not deprecated"> 4775 <method name="values" return="com.google.inject.grapher.graphviz.ArrowType[]" 4776 abstract="false" native="false" synchronized="false" 4777 static="true" final="false" visibility="public" 4778 deprecated="not deprecated"> 4779 </method> 4780 <method name="valueOf" return="com.google.inject.grapher.graphviz.ArrowType" 4781 abstract="false" native="false" synchronized="false" 4782 static="true" final="false" visibility="public" 4783 deprecated="not deprecated"> 4784 <param name="name" type="java.lang.String"/> 4785 </method> 4786 <method name="toString" return="java.lang.String" 4787 abstract="false" native="false" synchronized="false" 4788 static="false" final="false" visibility="public" 4789 deprecated="not deprecated"> 4790 </method> 4791 <doc> 4792 <![CDATA[Arrow symbols that are available from Graphviz. These can be composed by 4793 concatenation to make double arrows and such. 4794 <p> 4795 See: http://www.graphviz.org/doc/info/arrows.html 4796 4797 @author phopkins@gmail.com (Pete Hopkins)]]> 4798 </doc> 4799 </class> 4800 <!-- end class com.google.inject.grapher.graphviz.ArrowType --> 4801 <!-- start class com.google.inject.grapher.graphviz.CompassPoint --> 4802 <class name="CompassPoint" extends="java.lang.Enum<com.google.inject.grapher.graphviz.CompassPoint>" 4803 abstract="false" 4804 static="false" final="true" visibility="public" 4805 deprecated="not deprecated"> 4806 <method name="values" return="com.google.inject.grapher.graphviz.CompassPoint[]" 4807 abstract="false" native="false" synchronized="false" 4808 static="true" final="false" visibility="public" 4809 deprecated="not deprecated"> 4810 </method> 4811 <method name="valueOf" return="com.google.inject.grapher.graphviz.CompassPoint" 4812 abstract="false" native="false" synchronized="false" 4813 static="true" final="false" visibility="public" 4814 deprecated="not deprecated"> 4815 <param name="name" type="java.lang.String"/> 4816 </method> 4817 <method name="toString" return="java.lang.String" 4818 abstract="false" native="false" synchronized="false" 4819 static="false" final="false" visibility="public" 4820 deprecated="not deprecated"> 4821 </method> 4822 <doc> 4823 <![CDATA[Enum for the "compass point" values used to control where edge 4824 end points appear on the graph. 4825 <p> 4826 See: http://www.graphviz.org/doc/info/attrs.html#k:portPos 4827 4828 @author phopkins@gmail.com (Pete Hopkins)]]> 4829 </doc> 4830 </class> 4831 <!-- end class com.google.inject.grapher.graphviz.CompassPoint --> 4832 <!-- start class com.google.inject.grapher.graphviz.EdgeStyle --> 4833 <class name="EdgeStyle" extends="java.lang.Enum<com.google.inject.grapher.graphviz.EdgeStyle>" 4834 abstract="false" 4835 static="false" final="true" visibility="public" 4836 deprecated="not deprecated"> 4837 <method name="values" return="com.google.inject.grapher.graphviz.EdgeStyle[]" 4838 abstract="false" native="false" synchronized="false" 4839 static="true" final="false" visibility="public" 4840 deprecated="not deprecated"> 4841 </method> 4842 <method name="valueOf" return="com.google.inject.grapher.graphviz.EdgeStyle" 4843 abstract="false" native="false" synchronized="false" 4844 static="true" final="false" visibility="public" 4845 deprecated="not deprecated"> 4846 <param name="name" type="java.lang.String"/> 4847 </method> 4848 <method name="toString" return="java.lang.String" 4849 abstract="false" native="false" synchronized="false" 4850 static="false" final="false" visibility="public" 4851 deprecated="not deprecated"> 4852 </method> 4853 <doc> 4854 <![CDATA[Styles for edges. 4855 <p> 4856 See: http://www.graphviz.org/doc/info/attrs.html#k:style 4857 4858 @author phopkins@gmail.com (Pete Hopkins)]]> 4859 </doc> 4860 </class> 4861 <!-- end class com.google.inject.grapher.graphviz.EdgeStyle --> 4862 <!-- start class com.google.inject.grapher.graphviz.GraphvizEdge --> 4863 <class name="GraphvizEdge" extends="java.lang.Object" 4864 abstract="false" 4865 static="false" final="false" visibility="public" 4866 deprecated="not deprecated"> 4867 <constructor name="GraphvizEdge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId" 4868 static="false" final="false" visibility="public" 4869 deprecated="not deprecated"> 4870 </constructor> 4871 <method name="getHeadNodeId" return="com.google.inject.grapher.NodeId" 4872 abstract="false" native="false" synchronized="false" 4873 static="false" final="false" visibility="public" 4874 deprecated="not deprecated"> 4875 <doc> 4876 <![CDATA[@since 4.0]]> 4877 </doc> 4878 </method> 4879 <method name="getHeadPortId" return="java.lang.String" 4880 abstract="false" native="false" synchronized="false" 4881 static="false" final="false" visibility="public" 4882 deprecated="not deprecated"> 4883 </method> 4884 <method name="setHeadPortId" 4885 abstract="false" native="false" synchronized="false" 4886 static="false" final="false" visibility="public" 4887 deprecated="not deprecated"> 4888 <param name="headPortId" type="java.lang.String"/> 4889 </method> 4890 <method name="getHeadCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint" 4891 abstract="false" native="false" synchronized="false" 4892 static="false" final="false" visibility="public" 4893 deprecated="not deprecated"> 4894 </method> 4895 <method name="setHeadCompassPoint" 4896 abstract="false" native="false" synchronized="false" 4897 static="false" final="false" visibility="public" 4898 deprecated="not deprecated"> 4899 <param name="headCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/> 4900 </method> 4901 <method name="getArrowHead" return="java.util.List<com.google.inject.grapher.graphviz.ArrowType>" 4902 abstract="false" native="false" synchronized="false" 4903 static="false" final="false" visibility="public" 4904 deprecated="not deprecated"> 4905 </method> 4906 <method name="setArrowHead" 4907 abstract="false" native="false" synchronized="false" 4908 static="false" final="false" visibility="public" 4909 deprecated="not deprecated"> 4910 <param name="arrowHead" type="java.util.List<com.google.inject.grapher.graphviz.ArrowType>"/> 4911 </method> 4912 <method name="getTailNodeId" return="com.google.inject.grapher.NodeId" 4913 abstract="false" native="false" synchronized="false" 4914 static="false" final="false" visibility="public" 4915 deprecated="not deprecated"> 4916 <doc> 4917 <![CDATA[@since 4.0]]> 4918 </doc> 4919 </method> 4920 <method name="getTailPortId" return="java.lang.String" 4921 abstract="false" native="false" synchronized="false" 4922 static="false" final="false" visibility="public" 4923 deprecated="not deprecated"> 4924 </method> 4925 <method name="setTailPortId" 4926 abstract="false" native="false" synchronized="false" 4927 static="false" final="false" visibility="public" 4928 deprecated="not deprecated"> 4929 <param name="tailPortId" type="java.lang.String"/> 4930 </method> 4931 <method name="getTailCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint" 4932 abstract="false" native="false" synchronized="false" 4933 static="false" final="false" visibility="public" 4934 deprecated="not deprecated"> 4935 </method> 4936 <method name="setTailCompassPoint" 4937 abstract="false" native="false" synchronized="false" 4938 static="false" final="false" visibility="public" 4939 deprecated="not deprecated"> 4940 <param name="tailCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/> 4941 </method> 4942 <method name="getArrowTail" return="java.util.List<com.google.inject.grapher.graphviz.ArrowType>" 4943 abstract="false" native="false" synchronized="false" 4944 static="false" final="false" visibility="public" 4945 deprecated="not deprecated"> 4946 </method> 4947 <method name="setArrowTail" 4948 abstract="false" native="false" synchronized="false" 4949 static="false" final="false" visibility="public" 4950 deprecated="not deprecated"> 4951 <param name="arrowTail" type="java.util.List<com.google.inject.grapher.graphviz.ArrowType>"/> 4952 </method> 4953 <method name="getStyle" return="com.google.inject.grapher.graphviz.EdgeStyle" 4954 abstract="false" native="false" synchronized="false" 4955 static="false" final="false" visibility="public" 4956 deprecated="not deprecated"> 4957 </method> 4958 <method name="setStyle" 4959 abstract="false" native="false" synchronized="false" 4960 static="false" final="false" visibility="public" 4961 deprecated="not deprecated"> 4962 <param name="style" type="com.google.inject.grapher.graphviz.EdgeStyle"/> 4963 </method> 4964 <doc> 4965 <![CDATA[Data object to encapsulate the attributes of Graphviz edges that we're 4966 interested in drawing. 4967 4968 @author phopkins@gmail.com (Pete Hopkins)]]> 4969 </doc> 4970 </class> 4971 <!-- end class com.google.inject.grapher.graphviz.GraphvizEdge --> 4972 <!-- start class com.google.inject.grapher.graphviz.GraphvizGrapher --> 4973 <class name="GraphvizGrapher" extends="com.google.inject.grapher.AbstractInjectorGrapher" 4974 abstract="false" 4975 static="false" final="false" visibility="public" 4976 deprecated="not deprecated"> 4977 <method name="reset" 4978 abstract="false" native="false" synchronized="false" 4979 static="false" final="false" visibility="protected" 4980 deprecated="not deprecated"> 4981 </method> 4982 <method name="setOut" 4983 abstract="false" native="false" synchronized="false" 4984 static="false" final="false" visibility="public" 4985 deprecated="not deprecated"> 4986 <param name="out" type="java.io.PrintWriter"/> 4987 </method> 4988 <method name="setRankdir" 4989 abstract="false" native="false" synchronized="false" 4990 static="false" final="false" visibility="public" 4991 deprecated="not deprecated"> 4992 <param name="rankdir" type="java.lang.String"/> 4993 </method> 4994 <method name="postProcess" 4995 abstract="false" native="false" synchronized="false" 4996 static="false" final="false" visibility="protected" 4997 deprecated="not deprecated"> 4998 </method> 4999 <method name="getGraphAttributes" return="java.util.Map<java.lang.String, java.lang.String>" 5000 abstract="false" native="false" synchronized="false" 5001 static="false" final="false" visibility="protected" 5002 deprecated="not deprecated"> 5003 </method> 5004 <method name="start" 5005 abstract="false" native="false" synchronized="false" 5006 static="false" final="false" visibility="protected" 5007 deprecated="not deprecated"> 5008 </method> 5009 <method name="finish" 5010 abstract="false" native="false" synchronized="false" 5011 static="false" final="false" visibility="protected" 5012 deprecated="not deprecated"> 5013 </method> 5014 <method name="renderNode" 5015 abstract="false" native="false" synchronized="false" 5016 static="false" final="false" visibility="protected" 5017 deprecated="not deprecated"> 5018 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/> 5019 </method> 5020 <method name="getNodeAttributes" return="java.util.Map<java.lang.String, java.lang.String>" 5021 abstract="false" native="false" synchronized="false" 5022 static="false" final="false" visibility="protected" 5023 deprecated="not deprecated"> 5024 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/> 5025 </method> 5026 <method name="getNodeLabel" return="java.lang.String" 5027 abstract="false" native="false" synchronized="false" 5028 static="false" final="false" visibility="protected" 5029 deprecated="not deprecated"> 5030 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/> 5031 <doc> 5032 <![CDATA[Creates the "label" for a node. This is a string of HTML that defines a 5033 table with a heading at the top and (in the case of 5034 {@link ImplementationNode}s) rows for each of the member fields.]]> 5035 </doc> 5036 </method> 5037 <method name="renderEdge" 5038 abstract="false" native="false" synchronized="false" 5039 static="false" final="false" visibility="protected" 5040 deprecated="not deprecated"> 5041 <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/> 5042 </method> 5043 <method name="getEdgeAttributes" return="java.util.Map<java.lang.String, java.lang.String>" 5044 abstract="false" native="false" synchronized="false" 5045 static="false" final="false" visibility="protected" 5046 deprecated="not deprecated"> 5047 <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/> 5048 </method> 5049 <method name="getArrowString" return="java.lang.String" 5050 abstract="false" native="false" synchronized="false" 5051 static="false" final="false" visibility="protected" 5052 deprecated="not deprecated"> 5053 <param name="arrows" type="java.util.List<com.google.inject.grapher.graphviz.ArrowType>"/> 5054 <doc> 5055 <![CDATA[Turns a {@link List} of {@link ArrowType}s into a {@link String} that 5056 represents combining them. With Graphviz, that just means concatenating 5057 them.]]> 5058 </doc> 5059 </method> 5060 <method name="getEdgeEndPoint" return="java.lang.String" 5061 abstract="false" native="false" synchronized="false" 5062 static="false" final="false" visibility="protected" 5063 deprecated="not deprecated"> 5064 <param name="nodeId" type="java.lang.String"/> 5065 <param name="portId" type="java.lang.String"/> 5066 <param name="compassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/> 5067 </method> 5068 <method name="htmlEscape" return="java.lang.String" 5069 abstract="false" native="false" synchronized="false" 5070 static="false" final="false" visibility="protected" 5071 deprecated="not deprecated"> 5072 <param name="str" type="java.lang.String"/> 5073 </method> 5074 <method name="htmlEscape" return="java.util.List<java.lang.String>" 5075 abstract="false" native="false" synchronized="false" 5076 static="false" final="false" visibility="protected" 5077 deprecated="not deprecated"> 5078 <param name="elements" type="java.util.List<java.lang.String>"/> 5079 </method> 5080 <method name="newInterfaceNode" 5081 abstract="false" native="false" synchronized="false" 5082 static="false" final="false" visibility="protected" 5083 deprecated="not deprecated"> 5084 <param name="node" type="com.google.inject.grapher.InterfaceNode"/> 5085 </method> 5086 <method name="newImplementationNode" 5087 abstract="false" native="false" synchronized="false" 5088 static="false" final="false" visibility="protected" 5089 deprecated="not deprecated"> 5090 <param name="node" type="com.google.inject.grapher.ImplementationNode"/> 5091 </method> 5092 <method name="newInstanceNode" 5093 abstract="false" native="false" synchronized="false" 5094 static="false" final="false" visibility="protected" 5095 deprecated="not deprecated"> 5096 <param name="node" type="com.google.inject.grapher.InstanceNode"/> 5097 </method> 5098 <method name="newDependencyEdge" 5099 abstract="false" native="false" synchronized="false" 5100 static="false" final="false" visibility="protected" 5101 deprecated="not deprecated"> 5102 <param name="edge" type="com.google.inject.grapher.DependencyEdge"/> 5103 </method> 5104 <method name="newBindingEdge" 5105 abstract="false" native="false" synchronized="false" 5106 static="false" final="false" visibility="protected" 5107 deprecated="not deprecated"> 5108 <param name="edge" type="com.google.inject.grapher.BindingEdge"/> 5109 </method> 5110 <doc> 5111 <![CDATA[{@link com.google.inject.grapher.InjectorGrapher} implementation that writes out a Graphviz DOT 5112 file of the graph. Dependencies are bound in {@link GraphvizModule}. 5113 <p> 5114 Specify the {@link PrintWriter} to output to with {@link #setOut(PrintWriter)}. 5115 5116 @author phopkins@gmail.com (Pete Hopkins) 5117 @since 4.0]]> 5118 </doc> 5119 </class> 5120 <!-- end class com.google.inject.grapher.graphviz.GraphvizGrapher --> 5121 <!-- start class com.google.inject.grapher.graphviz.GraphvizModule --> 5122 <class name="GraphvizModule" extends="com.google.inject.AbstractModule" 5123 abstract="false" 5124 static="false" final="false" visibility="public" 5125 deprecated="not deprecated"> 5126 <constructor name="GraphvizModule" 5127 static="false" final="false" visibility="public" 5128 deprecated="not deprecated"> 5129 </constructor> 5130 <method name="configure" 5131 abstract="false" native="false" synchronized="false" 5132 static="false" final="false" visibility="protected" 5133 deprecated="not deprecated"> 5134 </method> 5135 <doc> 5136 <![CDATA[Module that provides classes needed by {@link GraphvizGrapher}. 5137 5138 @author phopkins@gmail.com (Pete Hopkins)]]> 5139 </doc> 5140 </class> 5141 <!-- end class com.google.inject.grapher.graphviz.GraphvizModule --> 5142 <!-- start class com.google.inject.grapher.graphviz.GraphvizNode --> 5143 <class name="GraphvizNode" extends="java.lang.Object" 5144 abstract="false" 5145 static="false" final="false" visibility="public" 5146 deprecated="not deprecated"> 5147 <constructor name="GraphvizNode" type="com.google.inject.grapher.NodeId" 5148 static="false" final="false" visibility="public" 5149 deprecated="not deprecated"> 5150 <doc> 5151 <![CDATA[@since 4.0]]> 5152 </doc> 5153 </constructor> 5154 <method name="getNodeId" return="com.google.inject.grapher.NodeId" 5155 abstract="false" native="false" synchronized="false" 5156 static="false" final="false" visibility="public" 5157 deprecated="not deprecated"> 5158 <doc> 5159 <![CDATA[@since 4.0]]> 5160 </doc> 5161 </method> 5162 <method name="getShape" return="com.google.inject.grapher.graphviz.NodeShape" 5163 abstract="false" native="false" synchronized="false" 5164 static="false" final="false" visibility="public" 5165 deprecated="not deprecated"> 5166 </method> 5167 <method name="setShape" 5168 abstract="false" native="false" synchronized="false" 5169 static="false" final="false" visibility="public" 5170 deprecated="not deprecated"> 5171 <param name="shape" type="com.google.inject.grapher.graphviz.NodeShape"/> 5172 </method> 5173 <method name="getStyle" return="com.google.inject.grapher.graphviz.NodeStyle" 5174 abstract="false" native="false" synchronized="false" 5175 static="false" final="false" visibility="public" 5176 deprecated="not deprecated"> 5177 </method> 5178 <method name="setStyle" 5179 abstract="false" native="false" synchronized="false" 5180 static="false" final="false" visibility="public" 5181 deprecated="not deprecated"> 5182 <param name="style" type="com.google.inject.grapher.graphviz.NodeStyle"/> 5183 </method> 5184 <method name="getTitle" return="java.lang.String" 5185 abstract="false" native="false" synchronized="false" 5186 static="false" final="false" visibility="public" 5187 deprecated="not deprecated"> 5188 </method> 5189 <method name="setTitle" 5190 abstract="false" native="false" synchronized="false" 5191 static="false" final="false" visibility="public" 5192 deprecated="not deprecated"> 5193 <param name="title" type="java.lang.String"/> 5194 </method> 5195 <method name="getSubtitles" return="java.util.List<java.lang.String>" 5196 abstract="false" native="false" synchronized="false" 5197 static="false" final="false" visibility="public" 5198 deprecated="not deprecated"> 5199 </method> 5200 <method name="addSubtitle" 5201 abstract="false" native="false" synchronized="false" 5202 static="false" final="false" visibility="public" 5203 deprecated="not deprecated"> 5204 <param name="position" type="int"/> 5205 <param name="subtitle" type="java.lang.String"/> 5206 </method> 5207 <method name="getHeaderTextColor" return="java.lang.String" 5208 abstract="false" native="false" synchronized="false" 5209 static="false" final="false" visibility="public" 5210 deprecated="not deprecated"> 5211 </method> 5212 <method name="setHeaderTextColor" 5213 abstract="false" native="false" synchronized="false" 5214 static="false" final="false" visibility="public" 5215 deprecated="not deprecated"> 5216 <param name="headerTextColor" type="java.lang.String"/> 5217 </method> 5218 <method name="getHeaderBackgroundColor" return="java.lang.String" 5219 abstract="false" native="false" synchronized="false" 5220 static="false" final="false" visibility="public" 5221 deprecated="not deprecated"> 5222 </method> 5223 <method name="setHeaderBackgroundColor" 5224 abstract="false" native="false" synchronized="false" 5225 static="false" final="false" visibility="public" 5226 deprecated="not deprecated"> 5227 <param name="headerBackgroundColor" type="java.lang.String"/> 5228 </method> 5229 <method name="addField" 5230 abstract="false" native="false" synchronized="false" 5231 static="false" final="false" visibility="public" 5232 deprecated="not deprecated"> 5233 <param name="portId" type="java.lang.String"/> 5234 <param name="title" type="java.lang.String"/> 5235 </method> 5236 <method name="getFields" return="java.util.Map<java.lang.String, java.lang.String>" 5237 abstract="false" native="false" synchronized="false" 5238 static="false" final="false" visibility="public" 5239 deprecated="not deprecated"> 5240 </method> 5241 <method name="getIdentifier" return="java.lang.String" 5242 abstract="false" native="false" synchronized="false" 5243 static="false" final="false" visibility="public" 5244 deprecated="not deprecated"> 5245 <doc> 5246 <![CDATA[@since 4.0]]> 5247 </doc> 5248 </method> 5249 <method name="setIdentifier" 5250 abstract="false" native="false" synchronized="false" 5251 static="false" final="false" visibility="public" 5252 deprecated="not deprecated"> 5253 <param name="identifier" type="java.lang.String"/> 5254 <doc> 5255 <![CDATA[@since 4.0]]> 5256 </doc> 5257 </method> 5258 <doc> 5259 <![CDATA[Data object to encapsulate the attributes of Graphviz nodes that we're 5260 interested in drawing. 5261 5262 @author phopkins@gmail.com (Pete Hopkins)]]> 5263 </doc> 5264 </class> 5265 <!-- end class com.google.inject.grapher.graphviz.GraphvizNode --> 5266 <!-- start class com.google.inject.grapher.graphviz.NodeShape --> 5267 <class name="NodeShape" extends="java.lang.Enum<com.google.inject.grapher.graphviz.NodeShape>" 5268 abstract="false" 5269 static="false" final="true" visibility="public" 5270 deprecated="not deprecated"> 5271 <method name="values" return="com.google.inject.grapher.graphviz.NodeShape[]" 5272 abstract="false" native="false" synchronized="false" 5273 static="true" final="false" visibility="public" 5274 deprecated="not deprecated"> 5275 </method> 5276 <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeShape" 5277 abstract="false" native="false" synchronized="false" 5278 static="true" final="false" visibility="public" 5279 deprecated="not deprecated"> 5280 <param name="name" type="java.lang.String"/> 5281 </method> 5282 <method name="toString" return="java.lang.String" 5283 abstract="false" native="false" synchronized="false" 5284 static="false" final="false" visibility="public" 5285 deprecated="not deprecated"> 5286 </method> 5287 <doc> 5288 <![CDATA[Enum for the shapes that are most interesting for Guice graphing. 5289 <p> 5290 See: http://www.graphviz.org/doc/info/shapes.html 5291 5292 @author phopkins@gmail.com (Pete Hopkins)]]> 5293 </doc> 5294 </class> 5295 <!-- end class com.google.inject.grapher.graphviz.NodeShape --> 5296 <!-- start class com.google.inject.grapher.graphviz.NodeStyle --> 5297 <class name="NodeStyle" extends="java.lang.Enum<com.google.inject.grapher.graphviz.NodeStyle>" 5298 abstract="false" 5299 static="false" final="true" visibility="public" 5300 deprecated="not deprecated"> 5301 <method name="values" return="com.google.inject.grapher.graphviz.NodeStyle[]" 5302 abstract="false" native="false" synchronized="false" 5303 static="true" final="false" visibility="public" 5304 deprecated="not deprecated"> 5305 </method> 5306 <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeStyle" 5307 abstract="false" native="false" synchronized="false" 5308 static="true" final="false" visibility="public" 5309 deprecated="not deprecated"> 5310 <param name="name" type="java.lang.String"/> 5311 </method> 5312 <method name="toString" return="java.lang.String" 5313 abstract="false" native="false" synchronized="false" 5314 static="false" final="false" visibility="public" 5315 deprecated="not deprecated"> 5316 </method> 5317 <doc> 5318 <![CDATA[Styles for nodes. Similar to {@link EdgeStyle} but with a few more options. 5319 <p> 5320 See: http://www.graphviz.org/doc/info/attrs.html#k:style 5321 5322 @author phopkins@gmail.com (Pete Hopkins)]]> 5323 </doc> 5324 </class> 5325 <!-- end class com.google.inject.grapher.graphviz.NodeStyle --> 5326 <!-- start interface com.google.inject.grapher.graphviz.PortIdFactory --> 5327 <interface name="PortIdFactory" abstract="true" 5328 static="false" final="false" visibility="public" 5329 deprecated="not deprecated"> 5330 <method name="getPortId" return="java.lang.String" 5331 abstract="true" native="false" synchronized="false" 5332 static="false" final="false" visibility="public" 5333 deprecated="not deprecated"> 5334 <param name="member" type="java.lang.reflect.Member"/> 5335 </method> 5336 <doc> 5337 <![CDATA[Interface for a service that returns Graphviz port IDs, used for naming the 5338 rows in {@link com.google.inject.grapher.ImplementationNode}-displaying {@link GraphvizNode}s. 5339 5340 @author phopkins@gmail.com (Pete Hopkins)]]> 5341 </doc> 5342 </interface> 5343 <!-- end interface com.google.inject.grapher.graphviz.PortIdFactory --> 5344 <!-- start class com.google.inject.grapher.graphviz.PortIdFactoryImpl --> 5345 <class name="PortIdFactoryImpl" extends="java.lang.Object" 5346 abstract="false" 5347 static="false" final="false" visibility="public" 5348 deprecated="not deprecated"> 5349 <implements name="com.google.inject.grapher.graphviz.PortIdFactory"/> 5350 <constructor name="PortIdFactoryImpl" 5351 static="false" final="false" visibility="public" 5352 deprecated="not deprecated"> 5353 </constructor> 5354 <method name="getPortId" return="java.lang.String" 5355 abstract="false" native="false" synchronized="false" 5356 static="false" final="false" visibility="public" 5357 deprecated="not deprecated"> 5358 <param name="member" type="java.lang.reflect.Member"/> 5359 </method> 5360 <doc> 5361 <![CDATA[Implementation of {@link PortIdFactory}. Bound in {@link GraphvizModule}. 5362 5363 @author phopkins@gmail.com (Pete Hopkins)]]> 5364 </doc> 5365 </class> 5366 <!-- end class com.google.inject.grapher.graphviz.PortIdFactoryImpl --> 5367</package> 5368<package name="com.google.inject.jndi"> 5369 <!-- start class com.google.inject.jndi.JndiIntegration --> 5370 <class name="JndiIntegration" extends="java.lang.Object" 5371 abstract="false" 5372 static="false" final="false" visibility="public" 5373 deprecated="not deprecated"> 5374 <method name="fromJndi" return="com.google.inject.Provider<T>" 5375 abstract="false" native="false" synchronized="false" 5376 static="true" final="false" visibility="public" 5377 deprecated="not deprecated"> 5378 <param name="type" type="java.lang.Class<T>"/> 5379 <param name="name" type="java.lang.String"/> 5380 <doc> 5381 <![CDATA[Creates a provider which looks up objects in JNDI using the given name. 5382 Example usage: 5383 5384 <pre> 5385 bind(DataSource.class).toProvider(fromJndi(DataSource.class, "java:...")); 5386 </pre>]]> 5387 </doc> 5388 </method> 5389 <doc> 5390 <![CDATA[Integrates Guice with JNDI. Requires a binding to 5391 {@link javax.naming.Context}. 5392 5393 @author crazybob@google.com (Bob Lee)]]> 5394 </doc> 5395 </class> 5396 <!-- end class com.google.inject.jndi.JndiIntegration --> 5397</package> 5398<package name="com.google.inject.matcher"> 5399 <!-- start class com.google.inject.matcher.AbstractMatcher --> 5400 <class name="AbstractMatcher" extends="java.lang.Object" 5401 abstract="true" 5402 static="false" final="false" visibility="public" 5403 deprecated="not deprecated"> 5404 <implements name="com.google.inject.matcher.Matcher<T>"/> 5405 <constructor name="AbstractMatcher" 5406 static="false" final="false" visibility="public" 5407 deprecated="not deprecated"> 5408 </constructor> 5409 <method name="and" return="com.google.inject.matcher.Matcher<T>" 5410 abstract="false" native="false" synchronized="false" 5411 static="false" final="false" visibility="public" 5412 deprecated="not deprecated"> 5413 <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 5414 </method> 5415 <method name="or" return="com.google.inject.matcher.Matcher<T>" 5416 abstract="false" native="false" synchronized="false" 5417 static="false" final="false" visibility="public" 5418 deprecated="not deprecated"> 5419 <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 5420 </method> 5421 <doc> 5422 <![CDATA[Implements {@code and()} and {@code or()}. 5423 5424 @author crazybob@google.com (Bob Lee)]]> 5425 </doc> 5426 </class> 5427 <!-- end class com.google.inject.matcher.AbstractMatcher --> 5428 <!-- start interface com.google.inject.matcher.Matcher --> 5429 <interface name="Matcher" abstract="true" 5430 static="false" final="false" visibility="public" 5431 deprecated="not deprecated"> 5432 <method name="matches" return="boolean" 5433 abstract="true" native="false" synchronized="false" 5434 static="false" final="false" visibility="public" 5435 deprecated="not deprecated"> 5436 <param name="t" type="T"/> 5437 <doc> 5438 <![CDATA[Returns {@code true} if this matches {@code t}, {@code false} otherwise.]]> 5439 </doc> 5440 </method> 5441 <method name="and" return="com.google.inject.matcher.Matcher<T>" 5442 abstract="true" native="false" synchronized="false" 5443 static="false" final="false" visibility="public" 5444 deprecated="not deprecated"> 5445 <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 5446 <doc> 5447 <![CDATA[Returns a new matcher which returns {@code true} if both this and the 5448 given matcher return {@code true}.]]> 5449 </doc> 5450 </method> 5451 <method name="or" return="com.google.inject.matcher.Matcher<T>" 5452 abstract="true" native="false" synchronized="false" 5453 static="false" final="false" visibility="public" 5454 deprecated="not deprecated"> 5455 <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 5456 <doc> 5457 <![CDATA[Returns a new matcher which returns {@code true} if either this or the 5458 given matcher return {@code true}.]]> 5459 </doc> 5460 </method> 5461 <doc> 5462 <![CDATA[Returns {@code true} or {@code false} for a given input. 5463 5464 @author crazybob@google.com (Bob Lee)]]> 5465 </doc> 5466 </interface> 5467 <!-- end interface com.google.inject.matcher.Matcher --> 5468 <!-- start class com.google.inject.matcher.Matchers --> 5469 <class name="Matchers" extends="java.lang.Object" 5470 abstract="false" 5471 static="false" final="false" visibility="public" 5472 deprecated="not deprecated"> 5473 <method name="any" return="com.google.inject.matcher.Matcher<java.lang.Object>" 5474 abstract="false" native="false" synchronized="false" 5475 static="true" final="false" visibility="public" 5476 deprecated="not deprecated"> 5477 <doc> 5478 <![CDATA[Returns a matcher which matches any input.]]> 5479 </doc> 5480 </method> 5481 <method name="not" return="com.google.inject.matcher.Matcher<T>" 5482 abstract="false" native="false" synchronized="false" 5483 static="true" final="false" visibility="public" 5484 deprecated="not deprecated"> 5485 <param name="p" type="com.google.inject.matcher.Matcher<? super T>"/> 5486 <doc> 5487 <![CDATA[Inverts the given matcher.]]> 5488 </doc> 5489 </method> 5490 <method name="annotatedWith" return="com.google.inject.matcher.Matcher<java.lang.reflect.AnnotatedElement>" 5491 abstract="false" native="false" synchronized="false" 5492 static="true" final="false" visibility="public" 5493 deprecated="not deprecated"> 5494 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5495 <doc> 5496 <![CDATA[Returns a matcher which matches elements (methods, classes, etc.) 5497 with a given annotation.]]> 5498 </doc> 5499 </method> 5500 <method name="annotatedWith" return="com.google.inject.matcher.Matcher<java.lang.reflect.AnnotatedElement>" 5501 abstract="false" native="false" synchronized="false" 5502 static="true" final="false" visibility="public" 5503 deprecated="not deprecated"> 5504 <param name="annotation" type="java.lang.annotation.Annotation"/> 5505 <doc> 5506 <![CDATA[Returns a matcher which matches elements (methods, classes, etc.) 5507 with a given annotation.]]> 5508 </doc> 5509 </method> 5510 <method name="subclassesOf" return="com.google.inject.matcher.Matcher<java.lang.Class>" 5511 abstract="false" native="false" synchronized="false" 5512 static="true" final="false" visibility="public" 5513 deprecated="not deprecated"> 5514 <param name="superclass" type="java.lang.Class<?>"/> 5515 <doc> 5516 <![CDATA[Returns a matcher which matches subclasses of the given type (as well as 5517 the given type).]]> 5518 </doc> 5519 </method> 5520 <method name="only" return="com.google.inject.matcher.Matcher<java.lang.Object>" 5521 abstract="false" native="false" synchronized="false" 5522 static="true" final="false" visibility="public" 5523 deprecated="not deprecated"> 5524 <param name="value" type="java.lang.Object"/> 5525 <doc> 5526 <![CDATA[Returns a matcher which matches objects equal to the given object.]]> 5527 </doc> 5528 </method> 5529 <method name="identicalTo" return="com.google.inject.matcher.Matcher<java.lang.Object>" 5530 abstract="false" native="false" synchronized="false" 5531 static="true" final="false" visibility="public" 5532 deprecated="not deprecated"> 5533 <param name="value" type="java.lang.Object"/> 5534 <doc> 5535 <![CDATA[Returns a matcher which matches only the given object.]]> 5536 </doc> 5537 </method> 5538 <method name="inPackage" return="com.google.inject.matcher.Matcher<java.lang.Class>" 5539 abstract="false" native="false" synchronized="false" 5540 static="true" final="false" visibility="public" 5541 deprecated="not deprecated"> 5542 <param name="targetPackage" type="java.lang.Package"/> 5543 <doc> 5544 <![CDATA[Returns a matcher which matches classes in the given package. Packages are specific to their 5545 classloader, so classes with the same package name may not have the same package at runtime.]]> 5546 </doc> 5547 </method> 5548 <method name="inSubpackage" return="com.google.inject.matcher.Matcher<java.lang.Class>" 5549 abstract="false" native="false" synchronized="false" 5550 static="true" final="false" visibility="public" 5551 deprecated="not deprecated"> 5552 <param name="targetPackageName" type="java.lang.String"/> 5553 <doc> 5554 <![CDATA[Returns a matcher which matches classes in the given package and its subpackages. Unlike 5555 {@link #inPackage(Package) inPackage()}, this matches classes from any classloader. 5556 5557 @since 2.0]]> 5558 </doc> 5559 </method> 5560 <method name="returns" return="com.google.inject.matcher.Matcher<java.lang.reflect.Method>" 5561 abstract="false" native="false" synchronized="false" 5562 static="true" final="false" visibility="public" 5563 deprecated="not deprecated"> 5564 <param name="returnType" type="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>"/> 5565 <doc> 5566 <![CDATA[Returns a matcher which matches methods with matching return types.]]> 5567 </doc> 5568 </method> 5569 <doc> 5570 <![CDATA[Matcher implementations. Supports matching classes and methods. 5571 5572 @author crazybob@google.com (Bob Lee)]]> 5573 </doc> 5574 </class> 5575 <!-- end class com.google.inject.matcher.Matchers --> 5576</package> 5577<package name="com.google.inject.multibindings"> 5578 <!-- start class com.google.inject.multibindings.ClassMapKey --> 5579 <class name="ClassMapKey" abstract="true" 5580 static="false" final="false" visibility="public" 5581 deprecated="not deprecated"> 5582 <implements name="java.lang.annotation.Annotation"/> 5583 <doc> 5584 <![CDATA[Allows {@literal @}{@link ProvidesIntoMap} to specify a class map key. 5585 5586 @since 4.0]]> 5587 </doc> 5588 </class> 5589 <!-- end class com.google.inject.multibindings.ClassMapKey --> 5590 <!-- start class com.google.inject.multibindings.MapBinder --> 5591 <class name="MapBinder" extends="java.lang.Object" 5592 abstract="true" 5593 static="false" final="false" visibility="public" 5594 deprecated="not deprecated"> 5595 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5596 abstract="false" native="false" synchronized="false" 5597 static="true" final="false" visibility="public" 5598 deprecated="not deprecated"> 5599 <param name="binder" type="com.google.inject.Binder"/> 5600 <param name="keyType" type="com.google.inject.TypeLiteral<K>"/> 5601 <param name="valueType" type="com.google.inject.TypeLiteral<V>"/> 5602 <doc> 5603 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5604 {@link Map} that is itself bound with no binding annotation.]]> 5605 </doc> 5606 </method> 5607 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5608 abstract="false" native="false" synchronized="false" 5609 static="true" final="false" visibility="public" 5610 deprecated="not deprecated"> 5611 <param name="binder" type="com.google.inject.Binder"/> 5612 <param name="keyType" type="java.lang.Class<K>"/> 5613 <param name="valueType" type="java.lang.Class<V>"/> 5614 <doc> 5615 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5616 {@link Map} that is itself bound with no binding annotation.]]> 5617 </doc> 5618 </method> 5619 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5620 abstract="false" native="false" synchronized="false" 5621 static="true" final="false" visibility="public" 5622 deprecated="not deprecated"> 5623 <param name="binder" type="com.google.inject.Binder"/> 5624 <param name="keyType" type="com.google.inject.TypeLiteral<K>"/> 5625 <param name="valueType" type="com.google.inject.TypeLiteral<V>"/> 5626 <param name="annotation" type="java.lang.annotation.Annotation"/> 5627 <doc> 5628 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5629 {@link Map} that is itself bound with {@code annotation}.]]> 5630 </doc> 5631 </method> 5632 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5633 abstract="false" native="false" synchronized="false" 5634 static="true" final="false" visibility="public" 5635 deprecated="not deprecated"> 5636 <param name="binder" type="com.google.inject.Binder"/> 5637 <param name="keyType" type="java.lang.Class<K>"/> 5638 <param name="valueType" type="java.lang.Class<V>"/> 5639 <param name="annotation" type="java.lang.annotation.Annotation"/> 5640 <doc> 5641 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5642 {@link Map} that is itself bound with {@code annotation}.]]> 5643 </doc> 5644 </method> 5645 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5646 abstract="false" native="false" synchronized="false" 5647 static="true" final="false" visibility="public" 5648 deprecated="not deprecated"> 5649 <param name="binder" type="com.google.inject.Binder"/> 5650 <param name="keyType" type="com.google.inject.TypeLiteral<K>"/> 5651 <param name="valueType" type="com.google.inject.TypeLiteral<V>"/> 5652 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5653 <doc> 5654 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5655 {@link Map} that is itself bound with {@code annotationType}.]]> 5656 </doc> 5657 </method> 5658 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5659 abstract="false" native="false" synchronized="false" 5660 static="true" final="false" visibility="public" 5661 deprecated="not deprecated"> 5662 <param name="binder" type="com.google.inject.Binder"/> 5663 <param name="keyType" type="java.lang.Class<K>"/> 5664 <param name="valueType" type="java.lang.Class<V>"/> 5665 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5666 <doc> 5667 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5668 {@link Map} that is itself bound with {@code annotationType}.]]> 5669 </doc> 5670 </method> 5671 <method name="permitDuplicates" return="com.google.inject.multibindings.MapBinder<K, V>" 5672 abstract="true" native="false" synchronized="false" 5673 static="false" final="false" visibility="public" 5674 deprecated="not deprecated"> 5675 <doc> 5676 <![CDATA[Configures the {@code MapBinder} to handle duplicate entries. 5677 <p>When multiple equal keys are bound, the value that gets included in the map is 5678 arbitrary. 5679 <p>In addition to the {@code Map<K, V>} and {@code Map<K, Provider<V>>} 5680 maps that are normally bound, a {@code Map<K, Set<V>>} and 5681 {@code Map<K, Set<Provider<V>>>} are <em>also</em> bound, which contain 5682 all values bound to each key. 5683 <p> 5684 When multiple modules contribute elements to the map, this configuration 5685 option impacts all of them. 5686 5687 @return this map binder 5688 @since 3.0]]> 5689 </doc> 5690 </method> 5691 <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder<V>" 5692 abstract="true" native="false" synchronized="false" 5693 static="false" final="false" visibility="public" 5694 deprecated="not deprecated"> 5695 <param name="key" type="K"/> 5696 <doc> 5697 <![CDATA[Returns a binding builder used to add a new entry in the map. Each 5698 key must be distinct (and non-null). Bound providers will be evaluated each 5699 time the map is injected. 5700 5701 <p>It is an error to call this method without also calling one of the 5702 {@code to} methods on the returned binding builder. 5703 5704 <p>Scoping elements independently is supported. Use the {@code in} method 5705 to specify a binding scope.]]> 5706 </doc> 5707 </method> 5708 <doc> 5709 <![CDATA[An API to bind multiple map entries separately, only to later inject them as 5710 a complete map. MapBinder is intended for use in your application's module: 5711 <pre><code> 5712 public class SnacksModule extends AbstractModule { 5713 protected void configure() { 5714 MapBinder<String, Snack> mapbinder 5715 = MapBinder.newMapBinder(binder(), String.class, Snack.class); 5716 mapbinder.addBinding("twix").toInstance(new Twix()); 5717 mapbinder.addBinding("snickers").toProvider(SnickersProvider.class); 5718 mapbinder.addBinding("skittles").to(Skittles.class); 5719 } 5720 }</code></pre> 5721 5722 <p>With this binding, a {@link Map}{@code <String, Snack>} can now be 5723 injected: 5724 <pre><code> 5725 class SnackMachine { 5726 {@literal @}Inject 5727 public SnackMachine(Map<String, Snack> snacks) { ... } 5728 }</code></pre> 5729 5730 <p>In addition to binding {@code Map<K, V>}, a mapbinder will also bind 5731 {@code Map<K, Provider<V>>} for lazy value provision: 5732 <pre><code> 5733 class SnackMachine { 5734 {@literal @}Inject 5735 public SnackMachine(Map<String, Provider<Snack>> snackProviders) { ... } 5736 }</code></pre> 5737 5738 <p>Contributing mapbindings from different modules is supported. For example, 5739 it is okay to have both {@code CandyModule} and {@code ChipsModule} both 5740 create their own {@code MapBinder<String, Snack>}, and to each contribute 5741 bindings to the snacks map. When that map is injected, it will contain 5742 entries from both modules. 5743 5744 <p>The map's iteration order is consistent with the binding order. This is 5745 convenient when multiple elements are contributed by the same module because 5746 that module can order its bindings appropriately. Avoid relying on the 5747 iteration order of elements contributed by different modules, since there is 5748 no equivalent mechanism to order modules. 5749 5750 <p>The map is unmodifiable. Elements can only be added to the map by 5751 configuring the MapBinder. Elements can never be removed from the map. 5752 5753 <p>Values are resolved at map injection time. If a value is bound to a 5754 provider, that provider's get method will be called each time the map is 5755 injected (unless the binding is also scoped, or a map of providers is injected). 5756 5757 <p>Annotations are used to create different maps of the same key/value 5758 type. Each distinct annotation gets its own independent map. 5759 5760 <p><strong>Keys must be distinct.</strong> If the same key is bound more than 5761 once, map injection will fail. However, use {@link #permitDuplicates()} in 5762 order to allow duplicate keys; extra bindings to {@code Map<K, Set<V>>} and 5763 {@code Map<K, Set<Provider<V>>} will be added. 5764 5765 <p><strong>Keys must be non-null.</strong> {@code addBinding(null)} will 5766 throw an unchecked exception. 5767 5768 <p><strong>Values must be non-null to use map injection.</strong> If any 5769 value is null, map injection will fail (although injecting a map of providers 5770 will not). 5771 5772 @author dpb@google.com (David P. Baker)]]> 5773 </doc> 5774 </class> 5775 <!-- end class com.google.inject.multibindings.MapBinder --> 5776 <!-- start interface com.google.inject.multibindings.MapBinderBinding --> 5777 <interface name="MapBinderBinding" abstract="true" 5778 static="false" final="false" visibility="public" 5779 deprecated="not deprecated"> 5780 <method name="getMapKey" return="com.google.inject.Key<T>" 5781 abstract="true" native="false" synchronized="false" 5782 static="false" final="false" visibility="public" 5783 deprecated="not deprecated"> 5784 <doc> 5785 <![CDATA[Returns the {@link Key} for the map.]]> 5786 </doc> 5787 </method> 5788 <method name="getKeyTypeLiteral" return="com.google.inject.TypeLiteral<?>" 5789 abstract="true" native="false" synchronized="false" 5790 static="false" final="false" visibility="public" 5791 deprecated="not deprecated"> 5792 <doc> 5793 <![CDATA[Returns the TypeLiteral describing the keys of the map. 5794 <p> 5795 The TypeLiteral will always match the type Map's generic type. For example, if getMapKey 5796 returns a key of <code>Map<String, Snack></code>, then this will always return a 5797 <code>TypeLiteral<String></code>.]]> 5798 </doc> 5799 </method> 5800 <method name="getValueTypeLiteral" return="com.google.inject.TypeLiteral<?>" 5801 abstract="true" native="false" synchronized="false" 5802 static="false" final="false" visibility="public" 5803 deprecated="not deprecated"> 5804 <doc> 5805 <![CDATA[Returns the TypeLiteral describing the values of the map. 5806 <p> 5807 The TypeLiteral will always match the type Map's generic type. For example, if getMapKey 5808 returns a key of <code>Map<String, Snack></code>, then this will always return a 5809 <code>TypeLiteral<Snack></code>.]]> 5810 </doc> 5811 </method> 5812 <method name="getEntries" return="java.util.List<java.util.Map.Entry<?, com.google.inject.Binding<?>>>" 5813 abstract="true" native="false" synchronized="false" 5814 static="false" final="false" visibility="public" 5815 deprecated="not deprecated"> 5816 <doc> 5817 <![CDATA[Returns all entries in the Map. The returned list of Map.Entries contains the key and a binding 5818 to the value. Duplicate keys or values will exist as separate Map.Entries in the returned list. 5819 This is only supported on bindings returned from an injector. This will throw 5820 {@link UnsupportedOperationException} if it is called on an element retrieved from 5821 {@link Elements#getElements}. 5822 <p> 5823 The elements will always match the type Map's generic type. For example, if getMapKey returns a 5824 key of <code>Map<String, Snack></code>, then this will always return a list of type 5825 <code>List<Map.Entry<String, Binding<Snack>>></code>.]]> 5826 </doc> 5827 </method> 5828 <method name="permitsDuplicates" return="boolean" 5829 abstract="true" native="false" synchronized="false" 5830 static="false" final="false" visibility="public" 5831 deprecated="not deprecated"> 5832 <doc> 5833 <![CDATA[Returns true if the MapBinder permits duplicates. This is only supported on bindings returned 5834 from an injector. This will throw {@link UnsupportedOperationException} if it is called on a 5835 MapBinderBinding retrieved from {@link Elements#getElements}.]]> 5836 </doc> 5837 </method> 5838 <method name="containsElement" return="boolean" 5839 abstract="true" native="false" synchronized="false" 5840 static="false" final="false" visibility="public" 5841 deprecated="not deprecated"> 5842 <param name="element" type="com.google.inject.spi.Element"/> 5843 <doc> 5844 <![CDATA[Returns true if this MapBinder contains the given Element in order to build the map or uses the 5845 given Element in order to support building and injecting the map. This will work for 5846 MapBinderBindings retrieved from an injector and {@link Elements#getElements}. Usually this is 5847 only necessary if you are working with elements retrieved from modules (without an Injector), 5848 otherwise {@link #getEntries} and {@link #permitsDuplicates} are better options. 5849 <p> 5850 If you need to introspect the details of the map, such as the keys, values or if it permits 5851 duplicates, it is necessary to pass the elements through an Injector and use 5852 {@link #getEntries()} and {@link #permitsDuplicates()}.]]> 5853 </doc> 5854 </method> 5855 <doc> 5856 <![CDATA[A binding for a MapBinder. 5857 <p> 5858 Although MapBinders may be injected through a variety of generic types (Map<K, V>, Map 5859 <K, Provider<V>>, Map<K, Set<V>>, Map<K, Set< 5860 Provider<V>>, and even Set<Map.Entry<K, Provider<V>>), a 5861 MapBinderBinding exists only on the Binding associated with the Map<K, V> key. Other 5862 bindings can be validated to be derived from this MapBinderBinding using 5863 {@link #containsElement(Element)}. 5864 5865 @param <T> The fully qualified type of the map, including Map. For example: 5866 <code>MapBinderBinding<Map<String, Snack>></code> 5867 5868 @since 3.0 5869 @author sameb@google.com (Sam Berlin)]]> 5870 </doc> 5871 </interface> 5872 <!-- end interface com.google.inject.multibindings.MapBinderBinding --> 5873 <!-- start class com.google.inject.multibindings.MapKey --> 5874 <class name="MapKey" abstract="true" 5875 static="false" final="false" visibility="public" 5876 deprecated="not deprecated"> 5877 <implements name="java.lang.annotation.Annotation"/> 5878 <doc> 5879 <![CDATA[Allows users define customized key type annotations for map bindings by annotating an annotation 5880 of a {@code Map}'s key type. The custom key annotation can be applied to methods also annotated 5881 with {@literal @}{@link ProvidesIntoMap}. 5882 5883 <p>A {@link StringMapKey} and {@link ClassMapKey} are provided for convenience with maps whose 5884 keys are strings or classes. For maps with enums or primitive types as keys, you must provide 5885 your own MapKey annotation, such as this one for an enum: 5886 5887 <pre> 5888 {@literal @}MapKey(unwrapValue = true) 5889 {@literal @}Retention(RUNTIME) 5890 public {@literal @}interface MyCustomEnumKey { 5891 MyCustomEnum value(); 5892 } 5893 </pre> 5894 5895 You can also use the whole annotation as the key, if {@code unwrapValue=false}. 5896 When unwrapValue is false, the annotation type will be the key type for the injected map and 5897 the annotation instances will be the key values. If {@code unwrapValue=true}, the value() type 5898 will be the key type for injected map and the value() instances will be the keys values. 5899 5900 @since 4.0]]> 5901 </doc> 5902 </class> 5903 <!-- end class com.google.inject.multibindings.MapKey --> 5904 <!-- start class com.google.inject.multibindings.Multibinder --> 5905 <class name="Multibinder" extends="java.lang.Object" 5906 abstract="true" 5907 static="false" final="false" visibility="public" 5908 deprecated="not deprecated"> 5909 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5910 abstract="false" native="false" synchronized="false" 5911 static="true" final="false" visibility="public" 5912 deprecated="not deprecated"> 5913 <param name="binder" type="com.google.inject.Binder"/> 5914 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 5915 <doc> 5916 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5917 itself bound with no binding annotation.]]> 5918 </doc> 5919 </method> 5920 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5921 abstract="false" native="false" synchronized="false" 5922 static="true" final="false" visibility="public" 5923 deprecated="not deprecated"> 5924 <param name="binder" type="com.google.inject.Binder"/> 5925 <param name="type" type="java.lang.Class<T>"/> 5926 <doc> 5927 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5928 itself bound with no binding annotation.]]> 5929 </doc> 5930 </method> 5931 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5932 abstract="false" native="false" synchronized="false" 5933 static="true" final="false" visibility="public" 5934 deprecated="not deprecated"> 5935 <param name="binder" type="com.google.inject.Binder"/> 5936 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 5937 <param name="annotation" type="java.lang.annotation.Annotation"/> 5938 <doc> 5939 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5940 itself bound with {@code annotation}.]]> 5941 </doc> 5942 </method> 5943 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5944 abstract="false" native="false" synchronized="false" 5945 static="true" final="false" visibility="public" 5946 deprecated="not deprecated"> 5947 <param name="binder" type="com.google.inject.Binder"/> 5948 <param name="type" type="java.lang.Class<T>"/> 5949 <param name="annotation" type="java.lang.annotation.Annotation"/> 5950 <doc> 5951 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5952 itself bound with {@code annotation}.]]> 5953 </doc> 5954 </method> 5955 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5956 abstract="false" native="false" synchronized="false" 5957 static="true" final="false" visibility="public" 5958 deprecated="not deprecated"> 5959 <param name="binder" type="com.google.inject.Binder"/> 5960 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 5961 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5962 <doc> 5963 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5964 itself bound with {@code annotationType}.]]> 5965 </doc> 5966 </method> 5967 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5968 abstract="false" native="false" synchronized="false" 5969 static="true" final="false" visibility="public" 5970 deprecated="not deprecated"> 5971 <param name="binder" type="com.google.inject.Binder"/> 5972 <param name="key" type="com.google.inject.Key<T>"/> 5973 <doc> 5974 <![CDATA[Returns a new multibinder that collects instances of the key's type in a {@link Set} that is 5975 itself bound with the annotation (if any) of the key. 5976 5977 @since 4.0]]> 5978 </doc> 5979 </method> 5980 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5981 abstract="false" native="false" synchronized="false" 5982 static="true" final="false" visibility="public" 5983 deprecated="not deprecated"> 5984 <param name="binder" type="com.google.inject.Binder"/> 5985 <param name="type" type="java.lang.Class<T>"/> 5986 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5987 <doc> 5988 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5989 itself bound with {@code annotationType}.]]> 5990 </doc> 5991 </method> 5992 <method name="permitDuplicates" return="com.google.inject.multibindings.Multibinder<T>" 5993 abstract="true" native="false" synchronized="false" 5994 static="false" final="false" visibility="public" 5995 deprecated="not deprecated"> 5996 <doc> 5997 <![CDATA[Configures the bound set to silently discard duplicate elements. When multiple equal values are 5998 bound, the one that gets included is arbitrary. When multiple modules contribute elements to 5999 the set, this configuration option impacts all of them. 6000 6001 @return this multibinder 6002 @since 3.0]]> 6003 </doc> 6004 </method> 6005 <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder<T>" 6006 abstract="true" native="false" synchronized="false" 6007 static="false" final="false" visibility="public" 6008 deprecated="not deprecated"> 6009 <doc> 6010 <![CDATA[Returns a binding builder used to add a new element in the set. Each 6011 bound element must have a distinct value. Bound providers will be 6012 evaluated each time the set is injected. 6013 6014 <p>It is an error to call this method without also calling one of the 6015 {@code to} methods on the returned binding builder. 6016 6017 <p>Scoping elements independently is supported. Use the {@code in} method 6018 to specify a binding scope.]]> 6019 </doc> 6020 </method> 6021 <doc> 6022 <![CDATA[An API to bind multiple values separately, only to later inject them as a 6023 complete collection. Multibinder is intended for use in your application's 6024 module: 6025 <pre><code> 6026 public class SnacksModule extends AbstractModule { 6027 protected void configure() { 6028 Multibinder<Snack> multibinder 6029 = Multibinder.newSetBinder(binder(), Snack.class); 6030 multibinder.addBinding().toInstance(new Twix()); 6031 multibinder.addBinding().toProvider(SnickersProvider.class); 6032 multibinder.addBinding().to(Skittles.class); 6033 } 6034 }</code></pre> 6035 6036 <p>With this binding, a {@link Set}{@code <Snack>} can now be injected: 6037 <pre><code> 6038 class SnackMachine { 6039 {@literal @}Inject 6040 public SnackMachine(Set<Snack> snacks) { ... } 6041 }</code></pre> 6042 6043 If desired, {@link Collection}{@code <Provider<Snack>>} can also be injected. 6044 6045 <p>Contributing multibindings from different modules is supported. For 6046 example, it is okay for both {@code CandyModule} and {@code ChipsModule} 6047 to create their own {@code Multibinder<Snack>}, and to each contribute 6048 bindings to the set of snacks. When that set is injected, it will contain 6049 elements from both modules. 6050 6051 <p>The set's iteration order is consistent with the binding order. This is 6052 convenient when multiple elements are contributed by the same module because 6053 that module can order its bindings appropriately. Avoid relying on the 6054 iteration order of elements contributed by different modules, since there is 6055 no equivalent mechanism to order modules. 6056 6057 <p>The set is unmodifiable. Elements can only be added to the set by 6058 configuring the multibinder. Elements can never be removed from the set. 6059 6060 <p>Elements are resolved at set injection time. If an element is bound to a 6061 provider, that provider's get method will be called each time the set is 6062 injected (unless the binding is also scoped). 6063 6064 <p>Annotations are be used to create different sets of the same element 6065 type. Each distinct annotation gets its own independent collection of 6066 elements. 6067 6068 <p><strong>Elements must be distinct.</strong> If multiple bound elements 6069 have the same value, set injection will fail. 6070 6071 <p><strong>Elements must be non-null.</strong> If any set element is null, 6072 set injection will fail. 6073 6074 @author jessewilson@google.com (Jesse Wilson)]]> 6075 </doc> 6076 </class> 6077 <!-- end class com.google.inject.multibindings.Multibinder --> 6078 <!-- start interface com.google.inject.multibindings.MultibinderBinding --> 6079 <interface name="MultibinderBinding" abstract="true" 6080 static="false" final="false" visibility="public" 6081 deprecated="not deprecated"> 6082 <method name="getSetKey" return="com.google.inject.Key<T>" 6083 abstract="true" native="false" synchronized="false" 6084 static="false" final="false" visibility="public" 6085 deprecated="not deprecated"> 6086 <doc> 6087 <![CDATA[Returns the key for the set.]]> 6088 </doc> 6089 </method> 6090 <method name="getElementTypeLiteral" return="com.google.inject.TypeLiteral<?>" 6091 abstract="true" native="false" synchronized="false" 6092 static="false" final="false" visibility="public" 6093 deprecated="not deprecated"> 6094 <doc> 6095 <![CDATA[Returns the TypeLiteral that describes the type of elements in the set. 6096 <p> 6097 The elements will always match the type Set's generic type. For example, if getSetKey returns a 6098 key of <code>Set<String></code>, then this will always return a 6099 <code>TypeLiteral<String></code>.]]> 6100 </doc> 6101 </method> 6102 <method name="getElements" return="java.util.List<com.google.inject.Binding<?>>" 6103 abstract="true" native="false" synchronized="false" 6104 static="false" final="false" visibility="public" 6105 deprecated="not deprecated"> 6106 <doc> 6107 <![CDATA[Returns all bindings that make up the set. This is only supported on bindings returned from an 6108 injector. This will throw {@link UnsupportedOperationException} if it is called on an element 6109 retrieved from {@link Elements#getElements}. 6110 <p> 6111 The elements will always match the type Set's generic type. For example, if getSetKey returns a 6112 key of <code>Set<String></code>, then this will always return a list of type 6113 <code>List<Binding<String>></code>.]]> 6114 </doc> 6115 </method> 6116 <method name="permitsDuplicates" return="boolean" 6117 abstract="true" native="false" synchronized="false" 6118 static="false" final="false" visibility="public" 6119 deprecated="not deprecated"> 6120 <doc> 6121 <![CDATA[Returns true if the multibinder permits duplicates. This is only supported on bindings returned 6122 from an injector. This will throw {@link UnsupportedOperationException} if it is called on a 6123 MultibinderBinding retrieved from {@link Elements#getElements}.]]> 6124 </doc> 6125 </method> 6126 <method name="containsElement" return="boolean" 6127 abstract="true" native="false" synchronized="false" 6128 static="false" final="false" visibility="public" 6129 deprecated="not deprecated"> 6130 <param name="element" type="com.google.inject.spi.Element"/> 6131 <doc> 6132 <![CDATA[Returns true if this Multibinder uses the given Element. This will be true for bindings that 6133 derive the elements of the set and other bindings that Multibinder uses internally. This will 6134 work for MultibinderBindings retrieved from an injector and {@link Elements#getElements}. 6135 Usually this is only necessary if you are working with elements retrieved from modules (without 6136 an Injector), otherwise {@link #getElements} and {@link #permitsDuplicates} are better options. 6137 <p> 6138 If you need to introspect the details of the set, such as the values or if it permits 6139 duplicates, it is necessary to pass the elements through an Injector and use 6140 {@link #getElements()} and {@link #permitsDuplicates()}.]]> 6141 </doc> 6142 </method> 6143 <doc> 6144 <![CDATA[A binding for a Multibinder. 6145 6146 @param <T> The fully qualified type of the set, including Set. For example: 6147 <code>MultibinderBinding<Set<Boolean>></code> 6148 6149 @since 3.0 6150 @author sameb@google.com (Sam Berlin)]]> 6151 </doc> 6152 </interface> 6153 <!-- end interface com.google.inject.multibindings.MultibinderBinding --> 6154 <!-- start class com.google.inject.multibindings.MultibindingsScanner --> 6155 <class name="MultibindingsScanner" extends="java.lang.Object" 6156 abstract="false" 6157 static="false" final="false" visibility="public" 6158 deprecated="not deprecated"> 6159 <method name="asModule" return="com.google.inject.Module" 6160 abstract="false" native="false" synchronized="false" 6161 static="true" final="false" visibility="public" 6162 deprecated="not deprecated"> 6163 <doc> 6164 <![CDATA[Returns a module that, when installed, will scan all modules for methods with the annotations 6165 {@literal @}{@link ProvidesIntoMap}, {@literal @}{@link ProvidesIntoSet}, and 6166 {@literal @}{@link ProvidesIntoOptional}. 6167 6168 <p>This is a convenience method, equivalent to doing 6169 {@code binder().scanModulesForAnnotatedMethods(MultibindingsScanner.scanner())}.]]> 6170 </doc> 6171 </method> 6172 <method name="scanner" return="com.google.inject.spi.ModuleAnnotatedMethodScanner" 6173 abstract="false" native="false" synchronized="false" 6174 static="true" final="false" visibility="public" 6175 deprecated="not deprecated"> 6176 <doc> 6177 <![CDATA[Returns a {@link ModuleAnnotatedMethodScanner} that, when bound, will scan all modules for 6178 methods with the annotations {@literal @}{@link ProvidesIntoMap}, 6179 {@literal @}{@link ProvidesIntoSet}, and {@literal @}{@link ProvidesIntoOptional}.]]> 6180 </doc> 6181 </method> 6182 <doc> 6183 <![CDATA[Scans a module for annotations that signal multibindings, mapbindings, and optional bindings. 6184 6185 @since 4.0]]> 6186 </doc> 6187 </class> 6188 <!-- end class com.google.inject.multibindings.MultibindingsScanner --> 6189 <!-- start interface com.google.inject.multibindings.MultibindingsTargetVisitor --> 6190 <interface name="MultibindingsTargetVisitor" abstract="true" 6191 static="false" final="false" visibility="public" 6192 deprecated="not deprecated"> 6193 <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 6194 <method name="visit" return="V" 6195 abstract="true" native="false" synchronized="false" 6196 static="false" final="false" visibility="public" 6197 deprecated="not deprecated"> 6198 <param name="multibinding" type="com.google.inject.multibindings.MultibinderBinding<? extends T>"/> 6199 <doc> 6200 <![CDATA[Visits a binding created through {@link Multibinder}.]]> 6201 </doc> 6202 </method> 6203 <method name="visit" return="V" 6204 abstract="true" native="false" synchronized="false" 6205 static="false" final="false" visibility="public" 6206 deprecated="not deprecated"> 6207 <param name="mapbinding" type="com.google.inject.multibindings.MapBinderBinding<? extends T>"/> 6208 <doc> 6209 <![CDATA[Visits a binding created through {@link MapBinder}.]]> 6210 </doc> 6211 </method> 6212 <method name="visit" return="V" 6213 abstract="true" native="false" synchronized="false" 6214 static="false" final="false" visibility="public" 6215 deprecated="not deprecated"> 6216 <param name="optionalbinding" type="com.google.inject.multibindings.OptionalBinderBinding<? extends T>"/> 6217 <doc> 6218 <![CDATA[Visits a binding created through {@link OptionalBinder}. 6219 6220 @since 4.0]]> 6221 </doc> 6222 </method> 6223 <doc> 6224 <![CDATA[A visitor for the multibinder extension. 6225 <p> 6226 If your {@link BindingTargetVisitor} implements this interface, bindings created by using 6227 {@link Multibinder}, {@link MapBinder} or {@link OptionalBinderBinding} will be visited through 6228 this interface. 6229 6230 @since 3.0 6231 @author sameb@google.com (Sam Berlin)]]> 6232 </doc> 6233 </interface> 6234 <!-- end interface com.google.inject.multibindings.MultibindingsTargetVisitor --> 6235 <!-- start class com.google.inject.multibindings.OptionalBinder --> 6236 <class name="OptionalBinder" extends="java.lang.Object" 6237 abstract="true" 6238 static="false" final="false" visibility="public" 6239 deprecated="not deprecated"> 6240 <method name="newOptionalBinder" return="com.google.inject.multibindings.OptionalBinder<T>" 6241 abstract="false" native="false" synchronized="false" 6242 static="true" final="false" visibility="public" 6243 deprecated="not deprecated"> 6244 <param name="binder" type="com.google.inject.Binder"/> 6245 <param name="type" type="java.lang.Class<T>"/> 6246 </method> 6247 <method name="newOptionalBinder" return="com.google.inject.multibindings.OptionalBinder<T>" 6248 abstract="false" native="false" synchronized="false" 6249 static="true" final="false" visibility="public" 6250 deprecated="not deprecated"> 6251 <param name="binder" type="com.google.inject.Binder"/> 6252 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 6253 </method> 6254 <method name="newOptionalBinder" return="com.google.inject.multibindings.OptionalBinder<T>" 6255 abstract="false" native="false" synchronized="false" 6256 static="true" final="false" visibility="public" 6257 deprecated="not deprecated"> 6258 <param name="binder" type="com.google.inject.Binder"/> 6259 <param name="type" type="com.google.inject.Key<T>"/> 6260 </method> 6261 <method name="setDefault" return="com.google.inject.binder.LinkedBindingBuilder<T>" 6262 abstract="true" native="false" synchronized="false" 6263 static="false" final="false" visibility="public" 6264 deprecated="not deprecated"> 6265 <doc> 6266 <![CDATA[Returns a binding builder used to set the default value that will be injected. 6267 The binding set by this method will be ignored if {@link #setBinding} is called. 6268 6269 <p>It is an error to call this method without also calling one of the {@code to} 6270 methods on the returned binding builder.]]> 6271 </doc> 6272 </method> 6273 <method name="setBinding" return="com.google.inject.binder.LinkedBindingBuilder<T>" 6274 abstract="true" native="false" synchronized="false" 6275 static="false" final="false" visibility="public" 6276 deprecated="not deprecated"> 6277 <doc> 6278 <![CDATA[Returns a binding builder used to set the actual value that will be injected. 6279 This overrides any binding set by {@link #setDefault}. 6280 6281 <p>It is an error to call this method without also calling one of the {@code to} 6282 methods on the returned binding builder.]]> 6283 </doc> 6284 </method> 6285 <doc> 6286 <![CDATA[An API to bind optional values, optionally with a default value. 6287 OptionalBinder fulfills two roles: <ol> 6288 <li>It allows a framework to define an injection point that may or 6289 may not be bound by users. 6290 <li>It allows a framework to supply a default value that can be changed 6291 by users. 6292 </ol> 6293 6294 <p>When an OptionalBinder is added, it will always supply the bindings: 6295 {@code Optional<T>} and {@code Optional<Provider<T>>}. If 6296 {@link #setBinding} or {@link #setDefault} are called, it will also 6297 bind {@code T}. 6298 6299 <p>{@code setDefault} is intended for use by frameworks that need a default 6300 value. User code can call {@code setBinding} to override the default. 6301 <b>Warning: Even if setBinding is called, the default binding 6302 will still exist in the object graph. If it is a singleton, it will be 6303 instantiated in {@code Stage.PRODUCTION}.</b> 6304 6305 <p>If setDefault or setBinding are linked to Providers, the Provider may return 6306 {@code null}. If it does, the Optional bindings will be absent. Binding 6307 setBinding to a Provider that returns null will not cause OptionalBinder 6308 to fall back to the setDefault binding. 6309 6310 <p>If neither setDefault nor setBinding are called, it will try to link to a 6311 user-supplied binding of the same type. If no binding exists, the optionals 6312 will be absent. Otherwise, if a user-supplied binding of that type exists, 6313 or if setBinding or setDefault are called, the optionals will return present 6314 if they are bound to a non-null value. 6315 6316 <p>Values are resolved at injection time. If a value is bound to a 6317 provider, that provider's get method will be called each time the optional 6318 is injected (unless the binding is also scoped, or an optional of provider is 6319 injected). 6320 6321 <p>Annotations are used to create different optionals of the same key/value 6322 type. Each distinct annotation gets its own independent binding. 6323 6324 <pre><code> 6325 public class FrameworkModule extends AbstractModule { 6326 protected void configure() { 6327 OptionalBinder.newOptionalBinder(binder(), Renamer.class); 6328 } 6329 }</code></pre> 6330 6331 <p>With this module, an {@link Optional}{@code <Renamer>} can now be 6332 injected. With no other bindings, the optional will be absent. 6333 Users can specify bindings in one of two ways: 6334 6335 <p>Option 1: 6336 <pre><code> 6337 public class UserRenamerModule extends AbstractModule { 6338 protected void configure() { 6339 bind(Renamer.class).to(ReplacingRenamer.class); 6340 } 6341 }</code></pre> 6342 6343 <p>or Option 2: 6344 <pre><code> 6345 public class UserRenamerModule extends AbstractModule { 6346 protected void configure() { 6347 OptionalBinder.newOptionalBinder(binder(), Renamer.class) 6348 .setBinding().to(ReplacingRenamer.class); 6349 } 6350 }</code></pre> 6351 With both options, the {@code Optional<Renamer>} will be present and supply the 6352 ReplacingRenamer. 6353 6354 <p>Default values can be supplied using: 6355 <pre><code> 6356 public class FrameworkModule extends AbstractModule { 6357 protected void configure() { 6358 OptionalBinder.newOptionalBinder(binder(), Key.get(String.class, LookupUrl.class)) 6359 .setDefault().toInstance(DEFAULT_LOOKUP_URL); 6360 } 6361 }</code></pre> 6362 With the above module, code can inject an {@code @LookupUrl String} and it 6363 will supply the DEFAULT_LOOKUP_URL. A user can change this value by binding 6364 <pre><code> 6365 public class UserLookupModule extends AbstractModule { 6366 protected void configure() { 6367 OptionalBinder.newOptionalBinder(binder(), Key.get(String.class, LookupUrl.class)) 6368 .setBinding().toInstance(CUSTOM_LOOKUP_URL); 6369 } 6370 }</code></pre> 6371 ... which will override the default value. 6372 6373 <p>If one module uses setDefault the only way to override the default is to use setBinding. 6374 It is an error for a user to specify the binding without using OptionalBinder if 6375 setDefault or setBinding are called. For example, 6376 <pre><code> 6377 public class FrameworkModule extends AbstractModule { 6378 protected void configure() { 6379 OptionalBinder.newOptionalBinder(binder(), Key.get(String.class, LookupUrl.class)) 6380 .setDefault().toInstance(DEFAULT_LOOKUP_URL); 6381 } 6382 } 6383 public class UserLookupModule extends AbstractModule { 6384 protected void configure() { 6385 bind(Key.get(String.class, LookupUrl.class)).toInstance(CUSTOM_LOOKUP_URL); 6386 } 6387 }</code></pre> 6388 ... would generate an error, because both the framework and the user are trying to bind 6389 {@code @LookupUrl String}. 6390 6391 @author sameb@google.com (Sam Berlin) 6392 @since 4.0]]> 6393 </doc> 6394 </class> 6395 <!-- end class com.google.inject.multibindings.OptionalBinder --> 6396 <!-- start interface com.google.inject.multibindings.OptionalBinderBinding --> 6397 <interface name="OptionalBinderBinding" abstract="true" 6398 static="false" final="false" visibility="public" 6399 deprecated="not deprecated"> 6400 <method name="getKey" return="com.google.inject.Key<T>" 6401 abstract="true" native="false" synchronized="false" 6402 static="false" final="false" visibility="public" 6403 deprecated="not deprecated"> 6404 <doc> 6405 <![CDATA[Returns the {@link Key} for this binding.]]> 6406 </doc> 6407 </method> 6408 <method name="getDefaultBinding" return="com.google.inject.Binding<?>" 6409 abstract="true" native="false" synchronized="false" 6410 static="false" final="false" visibility="public" 6411 deprecated="not deprecated"> 6412 <doc> 6413 <![CDATA[Returns the default binding (set by {@link OptionalBinder#setDefault}) if one exists or null 6414 if no default binding is set. This will throw {@link UnsupportedOperationException} if it is 6415 called on an element retrieved from {@link Elements#getElements}. 6416 <p> 6417 The Binding's type will always match the type Optional's generic type. For example, if getKey 6418 returns a key of <code>Optional<String></code>, then this will always return a 6419 <code>Binding<String></code>.]]> 6420 </doc> 6421 </method> 6422 <method name="getActualBinding" return="com.google.inject.Binding<?>" 6423 abstract="true" native="false" synchronized="false" 6424 static="false" final="false" visibility="public" 6425 deprecated="not deprecated"> 6426 <doc> 6427 <![CDATA[Returns the actual binding (set by {@link OptionalBinder#setBinding}) or null if not set. 6428 This will throw {@link UnsupportedOperationException} if it is called on an element retrieved 6429 from {@link Elements#getElements}. 6430 <p> 6431 The Binding's type will always match the type Optional's generic type. For example, if getKey 6432 returns a key of <code>Optional<String></code>, then this will always return a 6433 <code>Binding<String></code>.]]> 6434 </doc> 6435 </method> 6436 <method name="containsElement" return="boolean" 6437 abstract="true" native="false" synchronized="false" 6438 static="false" final="false" visibility="public" 6439 deprecated="not deprecated"> 6440 <param name="element" type="com.google.inject.spi.Element"/> 6441 <doc> 6442 <![CDATA[Returns true if this OptionalBinder contains the given Element in order to build the optional 6443 binding or uses the given Element in order to support building and injecting its data. This 6444 will work for OptionalBinderBinding retrieved from an injector and 6445 {@link Elements#getElements}. Usually this is only necessary if you are working with elements 6446 retrieved from modules (without an Injector), otherwise {@link #getDefaultBinding} and 6447 {@link #getActualBinding} are better options.]]> 6448 </doc> 6449 </method> 6450 <doc> 6451 <![CDATA[A binding for a OptionalBinder. 6452 6453 <p>Although OptionalBinders may be injected through a variety of types 6454 {@code T}, {@code Optional<T>}, {@code Optional<Provider<T>>}, etc..), an 6455 OptionalBinderBinding exists only on the Binding associated with the 6456 {@code Optional<T>} key. Other bindings can be validated to be derived from this 6457 OptionalBinderBinding using {@link #containsElement}. 6458 6459 @param <T> The fully qualified type of the optional binding, including Optional. 6460 For example: {@code Optional<String>}. 6461 6462 @since 4.0 6463 @author sameb@google.com (Sam Berlin)]]> 6464 </doc> 6465 </interface> 6466 <!-- end interface com.google.inject.multibindings.OptionalBinderBinding --> 6467 <!-- start class com.google.inject.multibindings.ProvidesIntoMap --> 6468 <class name="ProvidesIntoMap" abstract="true" 6469 static="false" final="false" visibility="public" 6470 deprecated="not deprecated"> 6471 <implements name="java.lang.annotation.Annotation"/> 6472 <doc> 6473 <![CDATA[Annotates methods of a {@link Module} to add items to a {@link MapBinder}. 6474 The method's return type, binding annotation and additional key annotation determines 6475 what Map this will contribute to. For example, 6476 6477 <pre> 6478 {@literal @}ProvidesIntoMap 6479 {@literal @}StringMapKey("Foo") 6480 {@literal @}Named("plugins") 6481 Plugin provideFooUrl(FooManager fm) { return fm.getPlugin(); } 6482 6483 {@literal @}ProvidesIntoMap 6484 {@literal @}StringMapKey("Bar") 6485 {@literal @}Named("urls") 6486 Plugin provideBarUrl(BarManager bm) { return bm.getPlugin(); } 6487 </pre> 6488 6489 will add two items to the {@code @Named("urls") Map<String, Plugin>} map. The key 'Foo' 6490 will map to the provideFooUrl method, and the key 'Bar' will map to the provideBarUrl method. 6491 The values are bound as providers and will be evaluated at injection time. 6492 6493 <p>Because the key is specified as an annotation, only Strings, Classes, enums, primitive 6494 types and annotation instances are supported as keys. 6495 6496 @author sameb@google.com (Sam Berlin) 6497 @since 4.0]]> 6498 </doc> 6499 </class> 6500 <!-- end class com.google.inject.multibindings.ProvidesIntoMap --> 6501 <!-- start class com.google.inject.multibindings.ProvidesIntoOptional --> 6502 <class name="ProvidesIntoOptional" abstract="true" 6503 static="false" final="false" visibility="public" 6504 deprecated="not deprecated"> 6505 <implements name="java.lang.annotation.Annotation"/> 6506 <doc> 6507 <![CDATA[Annotates methods of a {@link Module} to add items to a {@link Multibinder}. 6508 The method's return type and binding annotation determines what Optional this will 6509 contribute to. For example, 6510 6511 <pre> 6512 {@literal @}ProvidesIntoOptional(DEFAULT) 6513 {@literal @}Named("url") 6514 String provideFooUrl(FooManager fm) { returm fm.getUrl(); } 6515 6516 {@literal @}ProvidesIntoOptional(ACTUAL) 6517 {@literal @}Named("url") 6518 String provideBarUrl(BarManager bm) { return bm.getUrl(); } 6519 </pre> 6520 6521 will set the default value of {@code @Named("url") Optional<String>} to foo's URL, 6522 and then override it to bar's URL. 6523 6524 @author sameb@google.com (Sam Berlin) 6525 @since 4.0]]> 6526 </doc> 6527 </class> 6528 <!-- end class com.google.inject.multibindings.ProvidesIntoOptional --> 6529 <!-- start class com.google.inject.multibindings.ProvidesIntoOptional.Type --> 6530 <class name="ProvidesIntoOptional.Type" extends="java.lang.Enum<com.google.inject.multibindings.ProvidesIntoOptional.Type>" 6531 abstract="false" 6532 static="true" final="true" visibility="public" 6533 deprecated="not deprecated"> 6534 <method name="values" return="com.google.inject.multibindings.ProvidesIntoOptional.Type[]" 6535 abstract="false" native="false" synchronized="false" 6536 static="true" final="false" visibility="public" 6537 deprecated="not deprecated"> 6538 </method> 6539 <method name="valueOf" return="com.google.inject.multibindings.ProvidesIntoOptional.Type" 6540 abstract="false" native="false" synchronized="false" 6541 static="true" final="false" visibility="public" 6542 deprecated="not deprecated"> 6543 <param name="name" type="java.lang.String"/> 6544 </method> 6545 <doc> 6546 <![CDATA[@since 4.0]]> 6547 </doc> 6548 </class> 6549 <!-- end class com.google.inject.multibindings.ProvidesIntoOptional.Type --> 6550 <!-- start class com.google.inject.multibindings.ProvidesIntoSet --> 6551 <class name="ProvidesIntoSet" abstract="true" 6552 static="false" final="false" visibility="public" 6553 deprecated="not deprecated"> 6554 <implements name="java.lang.annotation.Annotation"/> 6555 <doc> 6556 <![CDATA[Annotates methods of a {@link Module} to add items to a {@link Multibinder}. 6557 The method's return type and binding annotation determines what Set this will 6558 contribute to. For example, 6559 6560 <pre> 6561 {@literal @}ProvidesIntoSet 6562 {@literal @}Named("urls") 6563 String provideFooUrl(FooManager fm) { returm fm.getUrl(); } 6564 6565 {@literal @}ProvidesIntoSet 6566 {@literal @}Named("urls") 6567 String provideBarUrl(BarManager bm) { return bm.getUrl(); } 6568 </pre> 6569 6570 will add two items to the {@code @Named("urls") Set<String>} set. The items are bound as 6571 providers and will be evaluated at injection time. 6572 6573 @author sameb@google.com (Sam Berlin) 6574 @since 4.0]]> 6575 </doc> 6576 </class> 6577 <!-- end class com.google.inject.multibindings.ProvidesIntoSet --> 6578 <!-- start class com.google.inject.multibindings.StringMapKey --> 6579 <class name="StringMapKey" abstract="true" 6580 static="false" final="false" visibility="public" 6581 deprecated="not deprecated"> 6582 <implements name="java.lang.annotation.Annotation"/> 6583 <doc> 6584 <![CDATA[Allows {@literal @}{@link ProvidesIntoMap} to specify a string map key. 6585 6586 @since 4.0]]> 6587 </doc> 6588 </class> 6589 <!-- end class com.google.inject.multibindings.StringMapKey --> 6590</package> 6591<package name="com.google.inject.name"> 6592 <!-- start class com.google.inject.name.Named --> 6593 <class name="Named" abstract="true" 6594 static="false" final="false" visibility="public" 6595 deprecated="not deprecated"> 6596 <implements name="java.lang.annotation.Annotation"/> 6597 <doc> 6598 <![CDATA[Annotates named things. 6599 6600 @author crazybob@google.com (Bob Lee)]]> 6601 </doc> 6602 </class> 6603 <!-- end class com.google.inject.name.Named --> 6604 <!-- start class com.google.inject.name.Names --> 6605 <class name="Names" extends="java.lang.Object" 6606 abstract="false" 6607 static="false" final="false" visibility="public" 6608 deprecated="not deprecated"> 6609 <method name="named" return="com.google.inject.name.Named" 6610 abstract="false" native="false" synchronized="false" 6611 static="true" final="false" visibility="public" 6612 deprecated="not deprecated"> 6613 <param name="name" type="java.lang.String"/> 6614 <doc> 6615 <![CDATA[Creates a {@link Named} annotation with {@code name} as the value.]]> 6616 </doc> 6617 </method> 6618 <method name="bindProperties" 6619 abstract="false" native="false" synchronized="false" 6620 static="true" final="false" visibility="public" 6621 deprecated="not deprecated"> 6622 <param name="binder" type="com.google.inject.Binder"/> 6623 <param name="properties" type="java.util.Map<java.lang.String, java.lang.String>"/> 6624 <doc> 6625 <![CDATA[Creates a constant binding to {@code @Named(key)} for each entry in 6626 {@code properties}.]]> 6627 </doc> 6628 </method> 6629 <method name="bindProperties" 6630 abstract="false" native="false" synchronized="false" 6631 static="true" final="false" visibility="public" 6632 deprecated="not deprecated"> 6633 <param name="binder" type="com.google.inject.Binder"/> 6634 <param name="properties" type="java.util.Properties"/> 6635 <doc> 6636 <![CDATA[Creates a constant binding to {@code @Named(key)} for each property. This 6637 method binds all properties including those inherited from 6638 {@link Properties#defaults defaults}.]]> 6639 </doc> 6640 </method> 6641 <doc> 6642 <![CDATA[Utility methods for use with {@code @}{@link Named}. 6643 6644 @author crazybob@google.com (Bob Lee)]]> 6645 </doc> 6646 </class> 6647 <!-- end class com.google.inject.name.Names --> 6648</package> 6649<package name="com.google.inject.persist"> 6650 <!-- start class com.google.inject.persist.PersistFilter --> 6651 <class name="PersistFilter" extends="java.lang.Object" 6652 abstract="false" 6653 static="false" final="true" visibility="public" 6654 deprecated="not deprecated"> 6655 <implements name="javax.servlet.Filter"/> 6656 <constructor name="PersistFilter" type="com.google.inject.persist.UnitOfWork, com.google.inject.persist.PersistService" 6657 static="false" final="false" visibility="public" 6658 deprecated="not deprecated"> 6659 </constructor> 6660 <method name="init" 6661 abstract="false" native="false" synchronized="false" 6662 static="false" final="false" visibility="public" 6663 deprecated="not deprecated"> 6664 <param name="filterConfig" type="javax.servlet.FilterConfig"/> 6665 <exception name="ServletException" type="javax.servlet.ServletException"/> 6666 </method> 6667 <method name="destroy" 6668 abstract="false" native="false" synchronized="false" 6669 static="false" final="false" visibility="public" 6670 deprecated="not deprecated"> 6671 </method> 6672 <method name="doFilter" 6673 abstract="false" native="false" synchronized="false" 6674 static="false" final="false" visibility="public" 6675 deprecated="not deprecated"> 6676 <param name="servletRequest" type="javax.servlet.ServletRequest"/> 6677 <param name="servletResponse" type="javax.servlet.ServletResponse"/> 6678 <param name="filterChain" type="javax.servlet.FilterChain"/> 6679 <exception name="IOException" type="java.io.IOException"/> 6680 <exception name="ServletException" type="javax.servlet.ServletException"/> 6681 </method> 6682 <doc> 6683 <![CDATA[Apply this filter to enable the HTTP Request unit of work and to have 6684 guice-persist manage the lifecycle of active units of work. 6685 The filter automatically starts and stops the relevant {@link PersistService} 6686 upon {@link javax.servlet.Filter#init(javax.servlet.FilterConfig)} and 6687 {@link javax.servlet.Filter#destroy()} respectively. 6688 6689 <p> To be able to use the open session-in-view pattern (i.e. work per request), 6690 register this filter <b>once</b> in your Guice {@code ServletModule}. It is 6691 important that you register this filter before any other filter. 6692 6693 For multiple providers, you should register this filter once per provider, inside 6694 a private module for each persist module installed (this must be the same private 6695 module where the specific persist module is itself installed). 6696 6697 <p> 6698 Example configuration: 6699 <pre>{@code 6700 public class MyModule extends ServletModule { 6701 public void configureServlets() { 6702 filter("/*").through(PersistFilter.class); 6703 6704 serve("/index.html").with(MyHtmlServlet.class); 6705 // Etc. 6706 } 6707 } 6708 }</pre> 6709 <p> 6710 This filter is thread safe and allows you to create injectors concurrently 6711 and deploy multiple guice-persist modules within the same injector, or even 6712 multiple injectors with persist modules withing the same JVM or web app. 6713 <p> 6714 This filter requires the Guice Servlet extension. 6715 6716 @author Dhanji R. Prasanna (dhanji@gmail.com)]]> 6717 </doc> 6718 </class> 6719 <!-- end class com.google.inject.persist.PersistFilter --> 6720 <!-- start class com.google.inject.persist.PersistModule --> 6721 <class name="PersistModule" extends="com.google.inject.AbstractModule" 6722 abstract="true" 6723 static="false" final="false" visibility="public" 6724 deprecated="not deprecated"> 6725 <constructor name="PersistModule" 6726 static="false" final="false" visibility="public" 6727 deprecated="not deprecated"> 6728 </constructor> 6729 <method name="configure" 6730 abstract="false" native="false" synchronized="false" 6731 static="false" final="true" visibility="protected" 6732 deprecated="not deprecated"> 6733 </method> 6734 <method name="configurePersistence" 6735 abstract="true" native="false" synchronized="false" 6736 static="false" final="false" visibility="protected" 6737 deprecated="not deprecated"> 6738 </method> 6739 <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor" 6740 abstract="true" native="false" synchronized="false" 6741 static="false" final="false" visibility="protected" 6742 deprecated="not deprecated"> 6743 </method> 6744 <doc> 6745 <![CDATA[Install this module to add guice-persist library support for JPA persistence 6746 providers. 6747 6748 @author dhanji@gmail.com (Dhanji R. Prasanna)]]> 6749 </doc> 6750 </class> 6751 <!-- end class com.google.inject.persist.PersistModule --> 6752 <!-- start interface com.google.inject.persist.PersistService --> 6753 <interface name="PersistService" abstract="true" 6754 static="false" final="false" visibility="public" 6755 deprecated="not deprecated"> 6756 <method name="start" 6757 abstract="true" native="false" synchronized="false" 6758 static="false" final="false" visibility="public" 6759 deprecated="not deprecated"> 6760 <doc> 6761 <![CDATA[Starts the underlying persistence engine and makes guice-persist ready for 6762 use. For instance, with JPA, it creates an EntityManagerFactory and may 6763 open connection pools. This method must be called by your code prior to 6764 using any guice-persist or JPA artifacts. If already started, 6765 calling this method does nothing, if already stopped, it also does 6766 nothing.]]> 6767 </doc> 6768 </method> 6769 <method name="stop" 6770 abstract="true" native="false" synchronized="false" 6771 static="false" final="false" visibility="public" 6772 deprecated="not deprecated"> 6773 <doc> 6774 <![CDATA[Stops the underlying persistence engine. For instance, with JPA, it 6775 closes the {@code EntityManagerFactory}. If already stopped, calling this 6776 method does nothing. If not yet started, it also does nothing.]]> 6777 </doc> 6778 </method> 6779 <doc> 6780 <![CDATA[Persistence provider service. Use this to manage the overall 6781 startup and stop of the persistence module(s). 6782 6783 TODO(dhanji): Integrate with Service API when appropriate. 6784 6785 @author dhanji@gmail.com (Dhanji R. Prasanna)]]> 6786 </doc> 6787 </interface> 6788 <!-- end interface com.google.inject.persist.PersistService --> 6789 <!-- start class com.google.inject.persist.Transactional --> 6790 <class name="Transactional" abstract="true" 6791 static="false" final="false" visibility="public" 6792 deprecated="not deprecated"> 6793 <implements name="java.lang.annotation.Annotation"/> 6794 <doc> 6795 <![CDATA[<p> Any method or class marked with this annotation will be considered for transactionality. 6796 Consult the documentation on https://github.com/google/guice/wiki/GuicePersist for detailed 6797 semantics. 6798 Marking a method {@code @Transactional} will start a new transaction before the method 6799 executes and commit it after the method returns. 6800 <p> 6801 If the method throws an exception, the transaction will be rolled back <em>unless</em> 6802 you have specifically requested not to in the {@link #ignore()} clause. 6803 <p> 6804 Similarly, the set of exceptions that will trigger a rollback can be defined in 6805 the {@link #rollbackOn()} clause. By default, only unchecked exceptions trigger a 6806 rollback. 6807 6808 @author Dhanji R. Prasanna (dhanji@gmail.com)]]> 6809 </doc> 6810 </class> 6811 <!-- end class com.google.inject.persist.Transactional --> 6812 <!-- start interface com.google.inject.persist.UnitOfWork --> 6813 <interface name="UnitOfWork" abstract="true" 6814 static="false" final="false" visibility="public" 6815 deprecated="not deprecated"> 6816 <method name="begin" 6817 abstract="true" native="false" synchronized="false" 6818 static="false" final="false" visibility="public" 6819 deprecated="not deprecated"> 6820 <doc> 6821 <![CDATA[Starts a Unit Of Work. Underneath, causes a session to the data layer to be opened. If there 6822 is already one open, the invocation will do nothing. In this way, you can define arbitrary 6823 units-of-work that nest within one another safely. 6824 6825 Transaction semantics are not affected.]]> 6826 </doc> 6827 </method> 6828 <method name="end" 6829 abstract="true" native="false" synchronized="false" 6830 static="false" final="false" visibility="public" 6831 deprecated="not deprecated"> 6832 <doc> 6833 <![CDATA[Declares an end to the current Unit of Work. Underneath, causes any open session to the data 6834 layer to close. If there is no Unit of work open, then the call returns silently. You can 6835 safely invoke end() repeatedly. 6836 <p> 6837 Transaction semantics are not affected.]]> 6838 </doc> 6839 </method> 6840 <doc> 6841 <![CDATA[This interface is used to gain manual control over the unit of work. This is mostly to do 6842 work in non-request, non-transactional threads. Or where more fine-grained control over the unit 6843 of work is required. Starting and ending a unit of work directly corresponds to opening and 6844 closing a {@code Session}, {@code EntityManager} or {@code ObjectContainer} respectively. 6845 <p> The 6846 Unit of Work referred to by UnitOfWork will always be local to the calling thread. Be careful to 6847 end() in a finally block. Neither JPA, nor Hibernate supports threadsafe sessions (reasoning 6848 behind thread-locality of Unit of Work semantics). 6849 6850 <ul> 6851 <li>Using UnitOfWork with the PersistFilter inside a request is not recommended.</li> 6852 <li>Using UnitOfWork with session-per-txn strategy is not terribly clever either.</li> 6853 <li>Using UnitOfWork with session-per-request strategy but *outside* a request (i.e. in a 6854 background or bootstrap thread) is probably a good use case.</li> 6855 </ul> 6856 6857 @author Dhanji R. Prasanna (dhanji@gmail com)]]> 6858 </doc> 6859 </interface> 6860 <!-- end interface com.google.inject.persist.UnitOfWork --> 6861</package> 6862<package name="com.google.inject.persist.finder"> 6863 <!-- start class com.google.inject.persist.finder.DynamicFinder --> 6864 <class name="DynamicFinder" extends="java.lang.Object" 6865 abstract="false" 6866 static="false" final="true" visibility="public" 6867 deprecated="not deprecated"> 6868 <constructor name="DynamicFinder" type="java.lang.reflect.Method" 6869 static="false" final="false" visibility="public" 6870 deprecated="not deprecated"> 6871 </constructor> 6872 <method name="from" return="com.google.inject.persist.finder.DynamicFinder" 6873 abstract="false" native="false" synchronized="false" 6874 static="true" final="false" visibility="public" 6875 deprecated="not deprecated"> 6876 <param name="method" type="java.lang.reflect.Method"/> 6877 <doc> 6878 <![CDATA[Returns some metadata if the method is annotated {@code @Finder} or null. 6879 6880 @param method a method you want to test as a dynamic finder]]> 6881 </doc> 6882 </method> 6883 <method name="metadata" return="com.google.inject.persist.finder.Finder" 6884 abstract="false" native="false" synchronized="false" 6885 static="false" final="false" visibility="public" 6886 deprecated="not deprecated"> 6887 </method> 6888 <doc> 6889 <![CDATA[Utility that helps you introspect dynamic finder methods. 6890 6891 @author dhanji@gmail.com (Dhanji R. Prasanna)]]> 6892 </doc> 6893 </class> 6894 <!-- end class com.google.inject.persist.finder.DynamicFinder --> 6895 <!-- start class com.google.inject.persist.finder.Finder --> 6896 <class name="Finder" abstract="true" 6897 static="false" final="false" visibility="public" 6898 deprecated="not deprecated"> 6899 <implements name="java.lang.annotation.Annotation"/> 6900 <doc> 6901 <![CDATA[Marks a method stub as a dynamic finder. The method is intercepted and replaced with the 6902 specified JPAQL query. Provides result auto-boxing and automatic parameter binding. 6903 6904 @author Dhanji R. Prasanna (dhanji@gmail.com)]]> 6905 </doc> 6906 </class> 6907 <!-- end class com.google.inject.persist.finder.Finder --> 6908 <!-- start class com.google.inject.persist.finder.FirstResult --> 6909 <class name="FirstResult" abstract="true" 6910 static="false" final="false" visibility="public" 6911 deprecated="not deprecated"> 6912 <implements name="java.lang.annotation.Annotation"/> 6913 <doc> 6914 <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in 6915 the index of the first result in the result set you are interested in. 6916 Useful for paging result sets. Complemented by {@link MaxResults}. 6917 6918 @author Dhanji R. Prasanna (dhanji@gmail.com)]]> 6919 </doc> 6920 </class> 6921 <!-- end class com.google.inject.persist.finder.FirstResult --> 6922 <!-- start class com.google.inject.persist.finder.MaxResults --> 6923 <class name="MaxResults" abstract="true" 6924 static="false" final="false" visibility="public" 6925 deprecated="not deprecated"> 6926 <implements name="java.lang.annotation.Annotation"/> 6927 <doc> 6928 <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in 6929 the maximum size of returned result window. Usefule for paging result sets. 6930 Complement of {@link FirstResult}. 6931 6932 @author Dhanji R. Prasanna (dhanji@gmail.com)]]> 6933 </doc> 6934 </class> 6935 <!-- end class com.google.inject.persist.finder.MaxResults --> 6936</package> 6937<package name="com.google.inject.persist.jpa"> 6938 <!-- start class com.google.inject.persist.jpa.JpaPersistModule --> 6939 <class name="JpaPersistModule" extends="com.google.inject.persist.PersistModule" 6940 abstract="false" 6941 static="false" final="true" visibility="public" 6942 deprecated="not deprecated"> 6943 <constructor name="JpaPersistModule" type="java.lang.String" 6944 static="false" final="false" visibility="public" 6945 deprecated="not deprecated"> 6946 </constructor> 6947 <method name="configurePersistence" 6948 abstract="false" native="false" synchronized="false" 6949 static="false" final="false" visibility="protected" 6950 deprecated="not deprecated"> 6951 </method> 6952 <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor" 6953 abstract="false" native="false" synchronized="false" 6954 static="false" final="false" visibility="protected" 6955 deprecated="not deprecated"> 6956 </method> 6957 <method name="properties" return="com.google.inject.persist.jpa.JpaPersistModule" 6958 abstract="false" native="false" synchronized="false" 6959 static="false" final="false" visibility="public" 6960 deprecated="not deprecated"> 6961 <param name="properties" type="java.util.Map<?, ?>"/> 6962 <doc> 6963 <![CDATA[Configures the JPA persistence provider with a set of properties. 6964 6965 @param properties A set of name value pairs that configure a JPA persistence 6966 provider as per the specification. 6967 @since 4.0 (since 3.0 with a parameter type of {@code java.util.Properties})]]> 6968 </doc> 6969 </method> 6970 <method name="addFinder" return="com.google.inject.persist.jpa.JpaPersistModule" 6971 abstract="false" native="false" synchronized="false" 6972 static="false" final="false" visibility="public" 6973 deprecated="not deprecated"> 6974 <param name="iface" type="java.lang.Class<T>"/> 6975 <doc> 6976 <![CDATA[Adds an interface to this module to use as a dynamic finder. 6977 6978 @param iface Any interface type whose methods are all dynamic finders.]]> 6979 </doc> 6980 </method> 6981 <doc> 6982 <![CDATA[JPA provider for guice persist. 6983 6984 @author dhanji@gmail.com (Dhanji R. Prasanna)]]> 6985 </doc> 6986 </class> 6987 <!-- end class com.google.inject.persist.jpa.JpaPersistModule --> 6988</package> 6989<package name="com.google.inject.servlet"> 6990 <!-- start class com.google.inject.servlet.GuiceFilter --> 6991 <class name="GuiceFilter" extends="java.lang.Object" 6992 abstract="false" 6993 static="false" final="false" visibility="public" 6994 deprecated="not deprecated"> 6995 <implements name="javax.servlet.Filter"/> 6996 <constructor name="GuiceFilter" 6997 static="false" final="false" visibility="public" 6998 deprecated="not deprecated"> 6999 </constructor> 7000 <method name="doFilter" 7001 abstract="false" native="false" synchronized="false" 7002 static="false" final="false" visibility="public" 7003 deprecated="not deprecated"> 7004 <param name="servletRequest" type="javax.servlet.ServletRequest"/> 7005 <param name="servletResponse" type="javax.servlet.ServletResponse"/> 7006 <param name="filterChain" type="javax.servlet.FilterChain"/> 7007 <exception name="IOException" type="java.io.IOException"/> 7008 <exception name="ServletException" type="javax.servlet.ServletException"/> 7009 </method> 7010 <method name="init" 7011 abstract="false" native="false" synchronized="false" 7012 static="false" final="false" visibility="public" 7013 deprecated="not deprecated"> 7014 <param name="filterConfig" type="javax.servlet.FilterConfig"/> 7015 <exception name="ServletException" type="javax.servlet.ServletException"/> 7016 </method> 7017 <method name="destroy" 7018 abstract="false" native="false" synchronized="false" 7019 static="false" final="false" visibility="public" 7020 deprecated="not deprecated"> 7021 </method> 7022 <doc> 7023 <![CDATA[<p> 7024 Apply this filter in web.xml above all other filters (typically), to all requests where you plan 7025 to use servlet scopes. This is also needed in order to dispatch requests to injectable filters 7026 and servlets: 7027 <pre> 7028 <filter> 7029 <filter-name>guiceFilter</filter-name> 7030 <filter-class><b>com.google.inject.servlet.GuiceFilter</b></filter-class> 7031 </filter> 7032 7033 <filter-mapping> 7034 <filter-name>guiceFilter</filter-name> 7035 <url-pattern>/*</url-pattern> 7036 </filter-mapping> 7037 </pre> 7038 7039 This filter must appear before every filter that makes use of Guice injection or servlet 7040 scopes functionality. Typically, you will only register this filter in web.xml and register 7041 any other filters (and servlets) using a {@link ServletModule}. 7042 7043 @author crazybob@google.com (Bob Lee) 7044 @author dhanji@gmail.com (Dhanji R. Prasanna)]]> 7045 </doc> 7046 </class> 7047 <!-- end class com.google.inject.servlet.GuiceFilter --> 7048 <!-- start class com.google.inject.servlet.GuiceServletContextListener --> 7049 <class name="GuiceServletContextListener" extends="java.lang.Object" 7050 abstract="true" 7051 static="false" final="false" visibility="public" 7052 deprecated="not deprecated"> 7053 <implements name="javax.servlet.ServletContextListener"/> 7054 <constructor name="GuiceServletContextListener" 7055 static="false" final="false" visibility="public" 7056 deprecated="not deprecated"> 7057 </constructor> 7058 <method name="contextInitialized" 7059 abstract="false" native="false" synchronized="false" 7060 static="false" final="false" visibility="public" 7061 deprecated="not deprecated"> 7062 <param name="servletContextEvent" type="javax.servlet.ServletContextEvent"/> 7063 </method> 7064 <method name="contextDestroyed" 7065 abstract="false" native="false" synchronized="false" 7066 static="false" final="false" visibility="public" 7067 deprecated="not deprecated"> 7068 <param name="servletContextEvent" type="javax.servlet.ServletContextEvent"/> 7069 </method> 7070 <method name="getInjector" return="com.google.inject.Injector" 7071 abstract="true" native="false" synchronized="false" 7072 static="false" final="false" visibility="protected" 7073 deprecated="not deprecated"> 7074 <doc> 7075 <![CDATA[Override this method to create (or otherwise obtain a reference to) your 7076 injector.]]> 7077 </doc> 7078 </method> 7079 <doc> 7080 <![CDATA[As of Guice 2.0 you can still use (your subclasses of) {@code GuiceServletContextListener} 7081 class as a logical place to create and configure your injector. This will ensure the injector 7082 is created when the web application is deployed. 7083 7084 @author Kevin Bourrillion (kevinb@google.com) 7085 @since 2.0]]> 7086 </doc> 7087 </class> 7088 <!-- end class com.google.inject.servlet.GuiceServletContextListener --> 7089 <!-- start interface com.google.inject.servlet.InstanceFilterBinding --> 7090 <interface name="InstanceFilterBinding" abstract="true" 7091 static="false" final="false" visibility="public" 7092 deprecated="not deprecated"> 7093 <implements name="com.google.inject.servlet.ServletModuleBinding"/> 7094 <method name="getFilterInstance" return="javax.servlet.Filter" 7095 abstract="true" native="false" synchronized="false" 7096 static="false" final="false" visibility="public" 7097 deprecated="not deprecated"> 7098 <doc> 7099 <![CDATA[Returns the filter instance that will be used.]]> 7100 </doc> 7101 </method> 7102 <doc> 7103 <![CDATA[A binding to a single instance of a filter. 7104 7105 @author sameb@google.com 7106 @since 3.0]]> 7107 </doc> 7108 </interface> 7109 <!-- end interface com.google.inject.servlet.InstanceFilterBinding --> 7110 <!-- start interface com.google.inject.servlet.InstanceServletBinding --> 7111 <interface name="InstanceServletBinding" abstract="true" 7112 static="false" final="false" visibility="public" 7113 deprecated="not deprecated"> 7114 <implements name="com.google.inject.servlet.ServletModuleBinding"/> 7115 <method name="getServletInstance" return="javax.servlet.http.HttpServlet" 7116 abstract="true" native="false" synchronized="false" 7117 static="false" final="false" visibility="public" 7118 deprecated="not deprecated"> 7119 <doc> 7120 <![CDATA[Returns the servlet instance that will be used.]]> 7121 </doc> 7122 </method> 7123 <doc> 7124 <![CDATA[A binding to a single instance of a servlet. 7125 7126 @author sameb@google.com 7127 @since 3.0]]> 7128 </doc> 7129 </interface> 7130 <!-- end interface com.google.inject.servlet.InstanceServletBinding --> 7131 <!-- start interface com.google.inject.servlet.LinkedFilterBinding --> 7132 <interface name="LinkedFilterBinding" abstract="true" 7133 static="false" final="false" visibility="public" 7134 deprecated="not deprecated"> 7135 <implements name="com.google.inject.servlet.ServletModuleBinding"/> 7136 <method name="getLinkedKey" return="com.google.inject.Key<? extends javax.servlet.Filter>" 7137 abstract="true" native="false" synchronized="false" 7138 static="false" final="false" visibility="public" 7139 deprecated="not deprecated"> 7140 <doc> 7141 <![CDATA[Returns the key used to lookup the filter instance.]]> 7142 </doc> 7143 </method> 7144 <doc> 7145 <![CDATA[A linked binding to a filter. 7146 7147 @author sameb@google.com 7148 @since 3.0]]> 7149 </doc> 7150 </interface> 7151 <!-- end interface com.google.inject.servlet.LinkedFilterBinding --> 7152 <!-- start interface com.google.inject.servlet.LinkedServletBinding --> 7153 <interface name="LinkedServletBinding" abstract="true" 7154 static="false" final="false" visibility="public" 7155 deprecated="not deprecated"> 7156 <implements name="com.google.inject.servlet.ServletModuleBinding"/> 7157 <method name="getLinkedKey" return="com.google.inject.Key<? extends javax.servlet.http.HttpServlet>" 7158 abstract="true" native="false" synchronized="false" 7159 static="false" final="false" visibility="public" 7160 deprecated="not deprecated"> 7161 <doc> 7162 <![CDATA[Returns the key used to lookup the servlet instance.]]> 7163 </doc> 7164 </method> 7165 <doc> 7166 <![CDATA[A linked binding to a servlet. 7167 7168 @author sameb@google.com 7169 @since 3.0]]> 7170 </doc> 7171 </interface> 7172 <!-- end interface com.google.inject.servlet.LinkedServletBinding --> 7173 <!-- start class com.google.inject.servlet.RequestParameters --> 7174 <class name="RequestParameters" abstract="true" 7175 static="false" final="false" visibility="public" 7176 deprecated="not deprecated"> 7177 <implements name="java.lang.annotation.Annotation"/> 7178 <doc> 7179 <![CDATA[Apply this to field or parameters of type {@code Map<String, String[]>} 7180 when you want the HTTP request parameter map to be injected. 7181 7182 @author crazybob@google.com (Bob Lee)]]> 7183 </doc> 7184 </class> 7185 <!-- end class com.google.inject.servlet.RequestParameters --> 7186 <!-- start class com.google.inject.servlet.RequestScoped --> 7187 <class name="RequestScoped" abstract="true" 7188 static="false" final="false" visibility="public" 7189 deprecated="not deprecated"> 7190 <implements name="java.lang.annotation.Annotation"/> 7191 <doc> 7192 <![CDATA[Apply this to implementation classes when you want one instance per request. 7193 7194 @author crazybob@google.com (Bob Lee)]]> 7195 </doc> 7196 </class> 7197 <!-- end class com.google.inject.servlet.RequestScoped --> 7198 <!-- start interface com.google.inject.servlet.RequestScoper --> 7199 <interface name="RequestScoper" abstract="true" 7200 static="false" final="false" visibility="public" 7201 deprecated="not deprecated"> 7202 <method name="open" return="com.google.inject.servlet.RequestScoper.CloseableScope" 7203 abstract="true" native="false" synchronized="false" 7204 static="false" final="false" visibility="public" 7205 deprecated="not deprecated"> 7206 <doc> 7207 <![CDATA[Opens up the request scope until the returned object is closed. 7208 Implementations should ensure (e.g. by blocking) that multiple threads 7209 cannot open the same request scope concurrently. It is allowable to open 7210 the same request scope on the same thread, as long as open/close calls are 7211 correctly nested.]]> 7212 </doc> 7213 </method> 7214 <doc> 7215 <![CDATA[Object that can be used to apply a request scope to a block of code.]]> 7216 </doc> 7217 </interface> 7218 <!-- end interface com.google.inject.servlet.RequestScoper --> 7219 <!-- start interface com.google.inject.servlet.RequestScoper.CloseableScope --> 7220 <interface name="RequestScoper.CloseableScope" abstract="true" 7221 static="true" final="false" visibility="public" 7222 deprecated="not deprecated"> 7223 <implements name="java.io.Closeable"/> 7224 <method name="close" 7225 abstract="true" native="false" synchronized="false" 7226 static="false" final="false" visibility="public" 7227 deprecated="not deprecated"> 7228 </method> 7229 <doc> 7230 <![CDATA[Closeable subclass that does not throw any exceptions from close.]]> 7231 </doc> 7232 </interface> 7233 <!-- end interface com.google.inject.servlet.RequestScoper.CloseableScope --> 7234 <!-- start class com.google.inject.servlet.ScopingException --> 7235 <class name="ScopingException" extends="java.lang.IllegalStateException" 7236 abstract="false" 7237 static="false" final="true" visibility="public" 7238 deprecated="not deprecated"> 7239 <constructor name="ScopingException" type="java.lang.String" 7240 static="false" final="false" visibility="public" 7241 deprecated="not deprecated"> 7242 </constructor> 7243 <doc> 7244 <![CDATA[Exception thrown when there was a failure entering request scope. 7245 7246 @author Chris Nokleberg 7247 @since 4.0]]> 7248 </doc> 7249 </class> 7250 <!-- end class com.google.inject.servlet.ScopingException --> 7251 <!-- start class com.google.inject.servlet.ScopingOnly --> 7252 <class name="ScopingOnly" abstract="true" 7253 static="false" final="false" visibility="public" 7254 deprecated="not deprecated"> 7255 <implements name="java.lang.annotation.Annotation"/> 7256 <doc> 7257 <![CDATA[Annotates a {@link GuiceFilter} that provides scope functionality, but 7258 doesn't dispatch to {@link ServletModule} bound servlets or filters. 7259 7260 @author iqshum@google.com (Isaac Shum) 7261 @since 4.0]]> 7262 </doc> 7263 </class> 7264 <!-- end class com.google.inject.servlet.ScopingOnly --> 7265 <!-- start class com.google.inject.servlet.ServletModule --> 7266 <class name="ServletModule" extends="com.google.inject.AbstractModule" 7267 abstract="false" 7268 static="false" final="false" visibility="public" 7269 deprecated="not deprecated"> 7270 <constructor name="ServletModule" 7271 static="false" final="false" visibility="public" 7272 deprecated="not deprecated"> 7273 </constructor> 7274 <method name="configure" 7275 abstract="false" native="false" synchronized="false" 7276 static="false" final="true" visibility="protected" 7277 deprecated="not deprecated"> 7278 </method> 7279 <method name="configureServlets" 7280 abstract="false" native="false" synchronized="false" 7281 static="false" final="false" visibility="protected" 7282 deprecated="not deprecated"> 7283 <doc> 7284 <![CDATA[<h3>Servlet Mapping EDSL</h3> 7285 7286 <p> Part of the EDSL builder language for configuring servlets 7287 and filters with guice-servlet. Think of this as an in-code replacement for web.xml. 7288 Filters and servlets are configured here using simple java method calls. Here is a typical 7289 example of registering a filter when creating your Guice injector: 7290 7291 <pre> 7292 Guice.createInjector(..., new ServletModule() { 7293 7294 {@literal @}Override 7295 protected void configureServlets() { 7296 <b>serve("*.html").with(MyServlet.class)</b> 7297 } 7298 } 7299 </pre> 7300 7301 This registers a servlet (subclass of {@code HttpServlet}) called {@code MyServlet} to service 7302 any web pages ending in {@code .html}. You can also use a path-style syntax to register 7303 servlets: 7304 7305 <pre> 7306 <b>serve("/my/*").with(MyServlet.class)</b> 7307 </pre> 7308 7309 Every servlet (or filter) is required to be a singleton. If you cannot annotate the class 7310 directly, you should add a separate {@code bind(..).in(Singleton.class)} rule elsewhere in 7311 your module. Mapping a servlet that is bound under any other scope is an error. 7312 7313 <p> 7314 <h4>Dispatch Order</h4> 7315 You are free to register as many servlets and filters as you like this way. They will 7316 be compared and dispatched in the order in which the filter methods are called: 7317 7318 <pre> 7319 7320 Guice.createInjector(..., new ServletModule() { 7321 7322 {@literal @}Override 7323 protected void configureServlets() { 7324 filter("/*").through(MyFilter.class); 7325 filter("*.css").through(MyCssFilter.class); 7326 filter("*.jpg").through(new MyJpgFilter()); 7327 // etc.. 7328 7329 serve("*.html").with(MyServlet.class); 7330 serve("/my/*").with(MyServlet.class); 7331 serve("*.jpg").with(new MyServlet()); 7332 // etc.. 7333 } 7334 } 7335 </pre> 7336 This will traverse down the list of rules in lexical order. For example, a url 7337 "{@code /my/file.js}" (after it runs through the matching filters) will first 7338 be compared against the servlet mapping: 7339 7340 <pre> 7341 serve("*.html").with(MyServlet.class); 7342 </pre> 7343 And failing that, it will descend to the next servlet mapping: 7344 7345 <pre> 7346 serve("/my/*").with(MyServlet.class); 7347 </pre> 7348 7349 Since this rule matches, Guice Servlet will dispatch to {@code MyServlet}. These 7350 two mapping rules can also be written in more compact form using varargs syntax: 7351 7352 <pre> 7353 serve(<b>"*.html", "/my/*"</b>).with(MyServlet.class); 7354 </pre> 7355 7356 This way you can map several URI patterns to the same servlet. A similar syntax is 7357 also available for filter mappings. 7358 7359 <p> 7360 <h4>Regular Expressions</h4> 7361 You can also map servlets (or filters) to URIs using regular expressions: 7362 <pre> 7363 <b>serveRegex("(.)*ajax(.)*").with(MyAjaxServlet.class)</b> 7364 </pre> 7365 7366 This will map any URI containing the text "ajax" in it to {@code MyAjaxServlet}. Such as: 7367 <ul> 7368 <li>http://www.google.com/ajax.html</li> 7369 <li>http://www.google.com/content/ajax/index</li> 7370 <li>http://www.google.com/it/is_totally_ajaxian</li> 7371 </ul> 7372 7373 7374 <h3>Initialization Parameters</h3> 7375 7376 Servlets (and filters) allow you to pass in init params 7377 using the {@code <init-param>} tag in web.xml. You can similarly pass in parameters to 7378 Servlets and filters registered in Guice-servlet using a {@link java.util.Map} of parameter 7379 name/value pairs. For example, to initialize {@code MyServlet} with two parameters 7380 ({@code name="Dhanji", site="google.com"}) you could write: 7381 7382 <pre> 7383 Map<String, String> params = new HashMap<String, String>(); 7384 params.put("name", "Dhanji"); 7385 params.put("site", "google.com"); 7386 7387 ... 7388 serve("/*").with(MyServlet.class, <b>params</b>) 7389 </pre> 7390 7391 <p> 7392 <h3>Binding Keys</h3> 7393 7394 You can also bind keys rather than classes. This lets you hide 7395 implementations with package-local visbility and expose them using 7396 only a Guice module and an annotation: 7397 7398 <pre> 7399 ... 7400 filter("/*").through(<b>Key.get(Filter.class, Fave.class)</b>); 7401 </pre> 7402 7403 Where {@code Filter.class} refers to the Servlet API interface and {@code Fave.class} is a 7404 custom binding annotation. Elsewhere (in one of your own modules) you can bind this 7405 filter's implementation: 7406 7407 <pre> 7408 bind(Filter.class)<b>.annotatedWith(Fave.class)</b>.to(MyFilterImpl.class); 7409 </pre> 7410 7411 See {@link com.google.inject.Binder} for more information on binding syntax. 7412 7413 <p> 7414 <h3>Multiple Modules</h3> 7415 7416 It is sometimes useful to capture servlet and filter mappings from multiple different 7417 modules. This is essential if you want to package and offer drop-in Guice plugins that 7418 provide servlet functionality. 7419 7420 <p> 7421 Guice Servlet allows you to register several instances of {@code ServletModule} to your 7422 injector. The order in which these modules are installed determines the dispatch order 7423 of filters and the precedence order of servlets. For example, if you had two servlet modules, 7424 {@code RpcModule} and {@code WebServiceModule} and they each contained a filter that mapped 7425 to the same URI pattern, {@code "/*"}: 7426 7427 <p> 7428 In {@code RpcModule}: 7429 <pre> 7430 filter("/*").through(RpcFilter.class); 7431 </pre> 7432 7433 In {@code WebServiceModule}: 7434 <pre> 7435 filter("/*").through(WebServiceFilter.class); 7436 </pre> 7437 7438 Then the order in which these filters are dispatched is determined by the order in which 7439 the modules are installed: 7440 7441 <pre> 7442 <b>install(new WebServiceModule());</b> 7443 install(new RpcModule()); 7444 </pre> 7445 7446 In the case shown above {@code WebServiceFilter} will run first. 7447 7448 @since 2.0]]> 7449 </doc> 7450 </method> 7451 <method name="filter" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder" 7452 abstract="false" native="false" synchronized="false" 7453 static="false" final="true" visibility="protected" 7454 deprecated="not deprecated"> 7455 <param name="urlPattern" type="java.lang.String"/> 7456 <param name="morePatterns" type="java.lang.String[]"/> 7457 <doc> 7458 <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc. 7459 @since 2.0]]> 7460 </doc> 7461 </method> 7462 <method name="filter" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder" 7463 abstract="false" native="false" synchronized="false" 7464 static="false" final="true" visibility="protected" 7465 deprecated="not deprecated"> 7466 <param name="urlPatterns" type="java.lang.Iterable<java.lang.String>"/> 7467 <doc> 7468 <![CDATA[@param urlPatterns Any Servlet-style patterns. examples: /*, /html/*, *.html, etc. 7469 @since 4.1]]> 7470 </doc> 7471 </method> 7472 <method name="filterRegex" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder" 7473 abstract="false" native="false" synchronized="false" 7474 static="false" final="true" visibility="protected" 7475 deprecated="not deprecated"> 7476 <param name="regex" type="java.lang.String"/> 7477 <param name="regexes" type="java.lang.String[]"/> 7478 <doc> 7479 <![CDATA[@param regex Any Java-style regular expression. 7480 @since 2.0]]> 7481 </doc> 7482 </method> 7483 <method name="filterRegex" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder" 7484 abstract="false" native="false" synchronized="false" 7485 static="false" final="true" visibility="protected" 7486 deprecated="not deprecated"> 7487 <param name="regexes" type="java.lang.Iterable<java.lang.String>"/> 7488 <doc> 7489 <![CDATA[@param regexes Any Java-style regular expressions. 7490 @since 4.1]]> 7491 </doc> 7492 </method> 7493 <method name="serve" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder" 7494 abstract="false" native="false" synchronized="false" 7495 static="false" final="true" visibility="protected" 7496 deprecated="not deprecated"> 7497 <param name="urlPattern" type="java.lang.String"/> 7498 <param name="morePatterns" type="java.lang.String[]"/> 7499 <doc> 7500 <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc. 7501 @since 2.0]]> 7502 </doc> 7503 </method> 7504 <method name="serve" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder" 7505 abstract="false" native="false" synchronized="false" 7506 static="false" final="true" visibility="protected" 7507 deprecated="not deprecated"> 7508 <param name="urlPatterns" type="java.lang.Iterable<java.lang.String>"/> 7509 <doc> 7510 <![CDATA[@param urlPatterns Any Servlet-style patterns. examples: /*, /html/*, *.html, etc. 7511 @since 4.1]]> 7512 </doc> 7513 </method> 7514 <method name="serveRegex" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder" 7515 abstract="false" native="false" synchronized="false" 7516 static="false" final="true" visibility="protected" 7517 deprecated="not deprecated"> 7518 <param name="regex" type="java.lang.String"/> 7519 <param name="regexes" type="java.lang.String[]"/> 7520 <doc> 7521 <![CDATA[@param regex Any Java-style regular expression. 7522 @since 2.0]]> 7523 </doc> 7524 </method> 7525 <method name="serveRegex" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder" 7526 abstract="false" native="false" synchronized="false" 7527 static="false" final="true" visibility="protected" 7528 deprecated="not deprecated"> 7529 <param name="regexes" type="java.lang.Iterable<java.lang.String>"/> 7530 <doc> 7531 <![CDATA[@param regexes Any Java-style regular expressions. 7532 @since 4.1]]> 7533 </doc> 7534 </method> 7535 <method name="getServletContext" return="javax.servlet.ServletContext" 7536 abstract="false" native="false" synchronized="false" 7537 static="false" final="true" visibility="protected" 7538 deprecated="not deprecated"> 7539 <doc> 7540 <![CDATA[This method only works if you are using the {@linkplain GuiceServletContextListener} to 7541 create your injector. Otherwise, it returns null. 7542 @return The current servlet context. 7543 @since 3.0]]> 7544 </doc> 7545 </method> 7546 <doc> 7547 <![CDATA[Configures the servlet scopes and creates bindings for the servlet API 7548 objects so you can inject the request, response, session, etc. 7549 7550 <p> 7551 You should subclass this module to register servlets and 7552 filters in the {@link #configureServlets()} method. 7553 7554 @author crazybob@google.com (Bob Lee) 7555 @author dhanji@gmail.com (Dhanji R. Prasanna)]]> 7556 </doc> 7557 </class> 7558 <!-- end class com.google.inject.servlet.ServletModule --> 7559 <!-- start interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder --> 7560 <interface name="ServletModule.FilterKeyBindingBuilder" abstract="true" 7561 static="true" final="false" visibility="public" 7562 deprecated="not deprecated"> 7563 <method name="through" 7564 abstract="true" native="false" synchronized="false" 7565 static="false" final="false" visibility="public" 7566 deprecated="not deprecated"> 7567 <param name="filterKey" type="java.lang.Class<? extends javax.servlet.Filter>"/> 7568 </method> 7569 <method name="through" 7570 abstract="true" native="false" synchronized="false" 7571 static="false" final="false" visibility="public" 7572 deprecated="not deprecated"> 7573 <param name="filterKey" type="com.google.inject.Key<? extends javax.servlet.Filter>"/> 7574 </method> 7575 <method name="through" 7576 abstract="true" native="false" synchronized="false" 7577 static="false" final="false" visibility="public" 7578 deprecated="not deprecated"> 7579 <param name="filter" type="javax.servlet.Filter"/> 7580 <doc> 7581 <![CDATA[@since 3.0]]> 7582 </doc> 7583 </method> 7584 <method name="through" 7585 abstract="true" native="false" synchronized="false" 7586 static="false" final="false" visibility="public" 7587 deprecated="not deprecated"> 7588 <param name="filterKey" type="java.lang.Class<? extends javax.servlet.Filter>"/> 7589 <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7590 </method> 7591 <method name="through" 7592 abstract="true" native="false" synchronized="false" 7593 static="false" final="false" visibility="public" 7594 deprecated="not deprecated"> 7595 <param name="filterKey" type="com.google.inject.Key<? extends javax.servlet.Filter>"/> 7596 <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7597 </method> 7598 <method name="through" 7599 abstract="true" native="false" synchronized="false" 7600 static="false" final="false" visibility="public" 7601 deprecated="not deprecated"> 7602 <param name="filter" type="javax.servlet.Filter"/> 7603 <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7604 <doc> 7605 <![CDATA[@since 3.0]]> 7606 </doc> 7607 </method> 7608 <doc> 7609 <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()} 7610 7611 @since 2.0]]> 7612 </doc> 7613 </interface> 7614 <!-- end interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder --> 7615 <!-- start interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder --> 7616 <interface name="ServletModule.ServletKeyBindingBuilder" abstract="true" 7617 static="true" final="false" visibility="public" 7618 deprecated="not deprecated"> 7619 <method name="with" 7620 abstract="true" native="false" synchronized="false" 7621 static="false" final="false" visibility="public" 7622 deprecated="not deprecated"> 7623 <param name="servletKey" type="java.lang.Class<? extends javax.servlet.http.HttpServlet>"/> 7624 </method> 7625 <method name="with" 7626 abstract="true" native="false" synchronized="false" 7627 static="false" final="false" visibility="public" 7628 deprecated="not deprecated"> 7629 <param name="servletKey" type="com.google.inject.Key<? extends javax.servlet.http.HttpServlet>"/> 7630 </method> 7631 <method name="with" 7632 abstract="true" native="false" synchronized="false" 7633 static="false" final="false" visibility="public" 7634 deprecated="not deprecated"> 7635 <param name="servlet" type="javax.servlet.http.HttpServlet"/> 7636 <doc> 7637 <![CDATA[@since 3.0]]> 7638 </doc> 7639 </method> 7640 <method name="with" 7641 abstract="true" native="false" synchronized="false" 7642 static="false" final="false" visibility="public" 7643 deprecated="not deprecated"> 7644 <param name="servletKey" type="java.lang.Class<? extends javax.servlet.http.HttpServlet>"/> 7645 <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7646 </method> 7647 <method name="with" 7648 abstract="true" native="false" synchronized="false" 7649 static="false" final="false" visibility="public" 7650 deprecated="not deprecated"> 7651 <param name="servletKey" type="com.google.inject.Key<? extends javax.servlet.http.HttpServlet>"/> 7652 <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7653 </method> 7654 <method name="with" 7655 abstract="true" native="false" synchronized="false" 7656 static="false" final="false" visibility="public" 7657 deprecated="not deprecated"> 7658 <param name="servlet" type="javax.servlet.http.HttpServlet"/> 7659 <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7660 <doc> 7661 <![CDATA[@since 3.0]]> 7662 </doc> 7663 </method> 7664 <doc> 7665 <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()} 7666 7667 @since 2.0]]> 7668 </doc> 7669 </interface> 7670 <!-- end interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder --> 7671 <!-- start interface com.google.inject.servlet.ServletModuleBinding --> 7672 <interface name="ServletModuleBinding" abstract="true" 7673 static="false" final="false" visibility="public" 7674 deprecated="not deprecated"> 7675 <method name="getUriPatternType" return="com.google.inject.servlet.UriPatternType" 7676 abstract="true" native="false" synchronized="false" 7677 static="false" final="false" visibility="public" 7678 deprecated="not deprecated"> 7679 <doc> 7680 <![CDATA[Returns the pattern type that this binding was created with.]]> 7681 </doc> 7682 </method> 7683 <method name="getPattern" return="java.lang.String" 7684 abstract="true" native="false" synchronized="false" 7685 static="false" final="false" visibility="public" 7686 deprecated="not deprecated"> 7687 <doc> 7688 <![CDATA[Returns the pattern used to match against the binding.]]> 7689 </doc> 7690 </method> 7691 <method name="getInitParams" return="java.util.Map<java.lang.String, java.lang.String>" 7692 abstract="true" native="false" synchronized="false" 7693 static="false" final="false" visibility="public" 7694 deprecated="not deprecated"> 7695 <doc> 7696 <![CDATA[Returns any context params supplied when creating the binding.]]> 7697 </doc> 7698 </method> 7699 <method name="matchesUri" return="boolean" 7700 abstract="true" native="false" synchronized="false" 7701 static="false" final="false" visibility="public" 7702 deprecated="not deprecated"> 7703 <param name="uri" type="java.lang.String"/> 7704 <doc> 7705 <![CDATA[Returns true if the given URI will match this binding.]]> 7706 </doc> 7707 </method> 7708 <doc> 7709 <![CDATA[A binding created by {@link ServletModule}. 7710 7711 @author sameb@google.com (Sam Berlin) 7712 @since 3.0]]> 7713 </doc> 7714 </interface> 7715 <!-- end interface com.google.inject.servlet.ServletModuleBinding --> 7716 <!-- start interface com.google.inject.servlet.ServletModuleTargetVisitor --> 7717 <interface name="ServletModuleTargetVisitor" abstract="true" 7718 static="false" final="false" visibility="public" 7719 deprecated="not deprecated"> 7720 <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 7721 <method name="visit" return="V" 7722 abstract="true" native="false" synchronized="false" 7723 static="false" final="false" visibility="public" 7724 deprecated="not deprecated"> 7725 <param name="binding" type="com.google.inject.servlet.LinkedFilterBinding"/> 7726 <doc> 7727 <![CDATA[Visits a filter binding created by {@link ServletModule#filter}, where 7728 {@link FilterKeyBindingBuilder#through} is called with a Class or Key. 7729 7730 If multiple patterns were specified, this will be called multiple times.]]> 7731 </doc> 7732 </method> 7733 <method name="visit" return="V" 7734 abstract="true" native="false" synchronized="false" 7735 static="false" final="false" visibility="public" 7736 deprecated="not deprecated"> 7737 <param name="binding" type="com.google.inject.servlet.InstanceFilterBinding"/> 7738 <doc> 7739 <![CDATA[Visits a filter binding created by {@link ServletModule#filter} where 7740 {@link FilterKeyBindingBuilder#through} is called with a {@link Filter}. 7741 7742 If multiple patterns were specified, this will be called multiple times.]]> 7743 </doc> 7744 </method> 7745 <method name="visit" return="V" 7746 abstract="true" native="false" synchronized="false" 7747 static="false" final="false" visibility="public" 7748 deprecated="not deprecated"> 7749 <param name="binding" type="com.google.inject.servlet.LinkedServletBinding"/> 7750 <doc> 7751 <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where 7752 {@link ServletKeyBindingBuilder#with}, is called with a Class or Key. 7753 7754 If multiple patterns were specified, this will be called multiple times.]]> 7755 </doc> 7756 </method> 7757 <method name="visit" return="V" 7758 abstract="true" native="false" synchronized="false" 7759 static="false" final="false" visibility="public" 7760 deprecated="not deprecated"> 7761 <param name="binding" type="com.google.inject.servlet.InstanceServletBinding"/> 7762 <doc> 7763 <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where 7764 {@link ServletKeyBindingBuilder#with}, is called with an {@link HttpServlet}. 7765 7766 If multiple patterns were specified, this will be called multiple times.]]> 7767 </doc> 7768 </method> 7769 <doc> 7770 <![CDATA[A visitor for the servlet extension. 7771 7772 If your {@link BindingTargetVisitor} implements this interface, bindings created by using 7773 {@link ServletModule} will be visited through this interface. 7774 7775 @since 3.0 7776 @author sameb@google.com (Sam Berlin)]]> 7777 </doc> 7778 </interface> 7779 <!-- end interface com.google.inject.servlet.ServletModuleTargetVisitor --> 7780 <!-- start class com.google.inject.servlet.ServletScopes --> 7781 <class name="ServletScopes" extends="java.lang.Object" 7782 abstract="false" 7783 static="false" final="false" visibility="public" 7784 deprecated="not deprecated"> 7785 <method name="continueRequest" return="java.util.concurrent.Callable<T>" 7786 abstract="false" native="false" synchronized="false" 7787 static="true" final="false" visibility="public" 7788 deprecated="You probably want to use {@code transferRequest} instead"> 7789 <param name="callable" type="java.util.concurrent.Callable<T>"/> 7790 <param name="seedMap" type="java.util.Map<com.google.inject.Key<?>, java.lang.Object>"/> 7791 <doc> 7792 <![CDATA[Wraps the given callable in a contextual callable that "continues" the 7793 HTTP request in another thread. This acts as a way of transporting 7794 request context data from the request processing thread to to worker 7795 threads. 7796 <p> 7797 There are some limitations: 7798 <ul> 7799 <li>Derived objects (i.e. anything marked @RequestScoped will not be 7800 transported.</li> 7801 <li>State changes to the HttpServletRequest after this method is called 7802 will not be seen in the continued thread.</li> 7803 <li>Only the HttpServletRequest, ServletContext and request parameter 7804 map are available in the continued thread. The response and session 7805 are not available.</li> 7806 </ul> 7807 7808 <p>The returned callable will throw a {@link ScopingException} when called 7809 if the HTTP request scope is still active on the current thread. 7810 7811 @param callable code to be executed in another thread, which depends on 7812 the request scope. 7813 @param seedMap the initial set of scoped instances for Guice to seed the 7814 request scope with. To seed a key with null, use {@code null} as 7815 the value. 7816 @return a callable that will invoke the given callable, making the request 7817 context available to it. 7818 @throws OutOfScopeException if this method is called from a non-request 7819 thread, or if the request has completed. 7820 7821 @since 3.0 7822 @deprecated You probably want to use {@code transferRequest} instead]]> 7823 </doc> 7824 </method> 7825 <method name="transferRequest" return="java.util.concurrent.Callable<T>" 7826 abstract="false" native="false" synchronized="false" 7827 static="true" final="false" visibility="public" 7828 deprecated="not deprecated"> 7829 <param name="callable" type="java.util.concurrent.Callable<T>"/> 7830 <doc> 7831 <![CDATA[Wraps the given callable in a contextual callable that "transfers" the 7832 request to another thread. This acts as a way of transporting 7833 request context data from the current thread to a future thread. 7834 7835 <p>As opposed to {@link #continueRequest}, this method propagates all 7836 existing scoped objects. The primary use case is in server implementations 7837 where you can detach the request processing thread while waiting for data, 7838 and reattach to a different thread to finish processing at a later time. 7839 7840 <p>Because request-scoped objects are not typically thread-safe, the 7841 callable returned by this method must not be run on a different thread 7842 until the current request scope has terminated. The returned callable will 7843 block until the current thread has released the request scope. 7844 7845 @param callable code to be executed in another thread, which depends on 7846 the request scope. 7847 @return a callable that will invoke the given callable, making the request 7848 context available to it. 7849 @throws OutOfScopeException if this method is called from a non-request 7850 thread, or if the request has completed. 7851 @since 4.0]]> 7852 </doc> 7853 </method> 7854 <method name="transferRequest" return="com.google.inject.servlet.RequestScoper" 7855 abstract="false" native="false" synchronized="false" 7856 static="true" final="false" visibility="public" 7857 deprecated="not deprecated"> 7858 <doc> 7859 <![CDATA[Returns an object that "transfers" the request to another thread. This acts 7860 as a way of transporting request context data from the current thread to a 7861 future thread. The transferred scope is the one active for the thread that 7862 calls this method. A later call to {@code open()} activates the transferred 7863 the scope, including propagating any objects scoped at that time. 7864 7865 <p>As opposed to {@link #continueRequest}, this method propagates all 7866 existing scoped objects. The primary use case is in server implementations 7867 where you can detach the request processing thread while waiting for data, 7868 and reattach to a different thread to finish processing at a later time. 7869 7870 <p>Because request-scoped objects are not typically thread-safe, it is 7871 important to avoid applying the same request scope concurrently. The 7872 returned Scoper will block on open until the current thread has released 7873 the request scope. 7874 7875 @return an object that when opened will initiate the request scope 7876 @throws OutOfScopeException if this method is called from a non-request 7877 thread, or if the request has completed. 7878 @since 4.1]]> 7879 </doc> 7880 </method> 7881 <method name="isRequestScoped" return="boolean" 7882 abstract="false" native="false" synchronized="false" 7883 static="true" final="false" visibility="public" 7884 deprecated="not deprecated"> 7885 <param name="binding" type="com.google.inject.Binding<?>"/> 7886 <doc> 7887 <![CDATA[Returns true if {@code binding} is request-scoped. If the binding is a 7888 {@link com.google.inject.spi.LinkedKeyBinding linked key binding} and 7889 belongs to an injector (i. e. it was retrieved via 7890 {@link Injector#getBinding Injector.getBinding()}), then this method will 7891 also return true if the target binding is request-scoped. 7892 7893 @since 4.0]]> 7894 </doc> 7895 </method> 7896 <method name="scopeRequest" return="java.util.concurrent.Callable<T>" 7897 abstract="false" native="false" synchronized="false" 7898 static="true" final="false" visibility="public" 7899 deprecated="not deprecated"> 7900 <param name="callable" type="java.util.concurrent.Callable<T>"/> 7901 <param name="seedMap" type="java.util.Map<com.google.inject.Key<?>, java.lang.Object>"/> 7902 <doc> 7903 <![CDATA[Scopes the given callable inside a request scope. This is not the same 7904 as the HTTP request scope, but is used if no HTTP request scope is in 7905 progress. In this way, keys can be scoped as @RequestScoped and exist 7906 in non-HTTP requests (for example: RPC requests) as well as in HTTP 7907 request threads. 7908 7909 <p>The returned callable will throw a {@link ScopingException} when called 7910 if there is a request scope already active on the current thread. 7911 7912 @param callable code to be executed which depends on the request scope. 7913 Typically in another thread, but not necessarily so. 7914 @param seedMap the initial set of scoped instances for Guice to seed the 7915 request scope with. To seed a key with null, use {@code null} as 7916 the value. 7917 @return a callable that when called will run inside the a request scope 7918 that exposes the instances in the {@code seedMap} as scoped keys. 7919 @since 3.0]]> 7920 </doc> 7921 </method> 7922 <method name="scopeRequest" return="com.google.inject.servlet.RequestScoper" 7923 abstract="false" native="false" synchronized="false" 7924 static="true" final="false" visibility="public" 7925 deprecated="not deprecated"> 7926 <param name="seedMap" type="java.util.Map<com.google.inject.Key<?>, java.lang.Object>"/> 7927 <doc> 7928 <![CDATA[Returns an object that will apply request scope to a block of code. This is 7929 not the same as the HTTP request scope, but is used if no HTTP request 7930 scope is in progress. In this way, keys can be scoped as @RequestScoped and 7931 exist in non-HTTP requests (for example: RPC requests) as well as in HTTP 7932 request threads. 7933 7934 <p>The returned object will throw a {@link ScopingException} when opened 7935 if there is a request scope already active on the current thread. 7936 7937 @param seedMap the initial set of scoped instances for Guice to seed the 7938 request scope with. To seed a key with null, use {@code null} as 7939 the value. 7940 @return an object that when opened will initiate the request scope 7941 @since 4.1]]> 7942 </doc> 7943 </method> 7944 <field name="REQUEST" type="com.google.inject.Scope" 7945 transient="false" volatile="false" 7946 static="true" final="true" visibility="public" 7947 deprecated="not deprecated"> 7948 <doc> 7949 <![CDATA[HTTP servlet request scope.]]> 7950 </doc> 7951 </field> 7952 <field name="SESSION" type="com.google.inject.Scope" 7953 transient="false" volatile="false" 7954 static="true" final="true" visibility="public" 7955 deprecated="not deprecated"> 7956 <doc> 7957 <![CDATA[HTTP session scope.]]> 7958 </doc> 7959 </field> 7960 <doc> 7961 <![CDATA[Servlet scopes. 7962 7963 @author crazybob@google.com (Bob Lee)]]> 7964 </doc> 7965 </class> 7966 <!-- end class com.google.inject.servlet.ServletScopes --> 7967 <!-- start class com.google.inject.servlet.SessionScoped --> 7968 <class name="SessionScoped" abstract="true" 7969 static="false" final="false" visibility="public" 7970 deprecated="not deprecated"> 7971 <implements name="java.lang.annotation.Annotation"/> 7972 <doc> 7973 <![CDATA[Apply this to implementation classes when you want one instance per session. 7974 7975 @see com.google.inject.Scopes#SINGLETON 7976 @author crazybob@google.com (Bob Lee)]]> 7977 </doc> 7978 </class> 7979 <!-- end class com.google.inject.servlet.SessionScoped --> 7980 <!-- start class com.google.inject.servlet.UriPatternType --> 7981 <class name="UriPatternType" extends="java.lang.Enum<com.google.inject.servlet.UriPatternType>" 7982 abstract="false" 7983 static="false" final="true" visibility="public" 7984 deprecated="not deprecated"> 7985 <method name="values" return="com.google.inject.servlet.UriPatternType[]" 7986 abstract="false" native="false" synchronized="false" 7987 static="true" final="false" visibility="public" 7988 deprecated="not deprecated"> 7989 </method> 7990 <method name="valueOf" return="com.google.inject.servlet.UriPatternType" 7991 abstract="false" native="false" synchronized="false" 7992 static="true" final="false" visibility="public" 7993 deprecated="not deprecated"> 7994 <param name="name" type="java.lang.String"/> 7995 </method> 7996 <doc> 7997 <![CDATA[An enumeration of the available URI-pattern matching styles 7998 7999 @since 3.0]]> 8000 </doc> 8001 </class> 8002 <!-- end class com.google.inject.servlet.UriPatternType --> 8003</package> 8004<package name="com.google.inject.spi"> 8005 <!-- start interface com.google.inject.spi.BindingScopingVisitor --> 8006 <interface name="BindingScopingVisitor" abstract="true" 8007 static="false" final="false" visibility="public" 8008 deprecated="not deprecated"> 8009 <method name="visitEagerSingleton" return="V" 8010 abstract="true" native="false" synchronized="false" 8011 static="false" final="false" visibility="public" 8012 deprecated="not deprecated"> 8013 <doc> 8014 <![CDATA[Visit an eager singleton or single instance. This scope strategy is found on both module and 8015 injector bindings.]]> 8016 </doc> 8017 </method> 8018 <method name="visitScope" return="V" 8019 abstract="true" native="false" synchronized="false" 8020 static="false" final="false" visibility="public" 8021 deprecated="not deprecated"> 8022 <param name="scope" type="com.google.inject.Scope"/> 8023 <doc> 8024 <![CDATA[Visit a scope instance. This scope strategy is found on both module and injector bindings.]]> 8025 </doc> 8026 </method> 8027 <method name="visitScopeAnnotation" return="V" 8028 abstract="true" native="false" synchronized="false" 8029 static="false" final="false" visibility="public" 8030 deprecated="not deprecated"> 8031 <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 8032 <doc> 8033 <![CDATA[Visit a scope annotation. This scope strategy is found only on module bindings. The instance 8034 that implements this scope is registered by {@link com.google.inject.Binder#bindScope(Class, 8035 Scope) Binder.bindScope()}.]]> 8036 </doc> 8037 </method> 8038 <method name="visitNoScoping" return="V" 8039 abstract="true" native="false" synchronized="false" 8040 static="false" final="false" visibility="public" 8041 deprecated="not deprecated"> 8042 <doc> 8043 <![CDATA[Visit an unspecified or unscoped strategy. On a module, this strategy indicates that the 8044 injector should use scoping annotations to find a scope. On an injector, it indicates that 8045 no scope is applied to the binding. An unscoped binding will behave like a scoped one when it 8046 is linked to a scoped binding.]]> 8047 </doc> 8048 </method> 8049 <doc> 8050 <![CDATA[Visits each of the strategies used to scope an injection. 8051 8052 @param <V> any type to be returned by the visit method. Use {@link Void} with 8053 {@code return null} if no return type is needed. 8054 @since 2.0]]> 8055 </doc> 8056 </interface> 8057 <!-- end interface com.google.inject.spi.BindingScopingVisitor --> 8058 <!-- start interface com.google.inject.spi.BindingTargetVisitor --> 8059 <interface name="BindingTargetVisitor" abstract="true" 8060 static="false" final="false" visibility="public" 8061 deprecated="not deprecated"> 8062 <method name="visit" return="V" 8063 abstract="true" native="false" synchronized="false" 8064 static="false" final="false" visibility="public" 8065 deprecated="not deprecated"> 8066 <param name="binding" type="com.google.inject.spi.InstanceBinding<? extends T>"/> 8067 <doc> 8068 <![CDATA[Visit a instance binding. The same instance is returned for every injection. This target is 8069 found in both module and injector bindings.]]> 8070 </doc> 8071 </method> 8072 <method name="visit" return="V" 8073 abstract="true" native="false" synchronized="false" 8074 static="false" final="false" visibility="public" 8075 deprecated="not deprecated"> 8076 <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding<? extends T>"/> 8077 <doc> 8078 <![CDATA[Visit a provider instance binding. The provider's {@code get} method is invoked to resolve 8079 injections. This target is found in both module and injector bindings.]]> 8080 </doc> 8081 </method> 8082 <method name="visit" return="V" 8083 abstract="true" native="false" synchronized="false" 8084 static="false" final="false" visibility="public" 8085 deprecated="not deprecated"> 8086 <param name="binding" type="com.google.inject.spi.ProviderKeyBinding<? extends T>"/> 8087 <doc> 8088 <![CDATA[Visit a provider key binding. To resolve injections, the provider key is first resolved, then 8089 that provider's {@code get} method is invoked. This target is found in both module and injector 8090 bindings.]]> 8091 </doc> 8092 </method> 8093 <method name="visit" return="V" 8094 abstract="true" native="false" synchronized="false" 8095 static="false" final="false" visibility="public" 8096 deprecated="not deprecated"> 8097 <param name="binding" type="com.google.inject.spi.LinkedKeyBinding<? extends T>"/> 8098 <doc> 8099 <![CDATA[Visit a linked key binding. The other key's binding is used to resolve injections. This 8100 target is found in both module and injector bindings.]]> 8101 </doc> 8102 </method> 8103 <method name="visit" return="V" 8104 abstract="true" native="false" synchronized="false" 8105 static="false" final="false" visibility="public" 8106 deprecated="not deprecated"> 8107 <param name="binding" type="com.google.inject.spi.ExposedBinding<? extends T>"/> 8108 <doc> 8109 <![CDATA[Visit a binding to a key exposed from an enclosed private environment. This target is only 8110 found in injector bindings.]]> 8111 </doc> 8112 </method> 8113 <method name="visit" return="V" 8114 abstract="true" native="false" synchronized="false" 8115 static="false" final="false" visibility="public" 8116 deprecated="not deprecated"> 8117 <param name="binding" type="com.google.inject.spi.UntargettedBinding<? extends T>"/> 8118 <doc> 8119 <![CDATA[Visit an untargetted binding. This target is found only on module bindings. It indicates 8120 that the injector should use its implicit binding strategies to resolve injections.]]> 8121 </doc> 8122 </method> 8123 <method name="visit" return="V" 8124 abstract="true" native="false" synchronized="false" 8125 static="false" final="false" visibility="public" 8126 deprecated="not deprecated"> 8127 <param name="binding" type="com.google.inject.spi.ConstructorBinding<? extends T>"/> 8128 <doc> 8129 <![CDATA[Visit a constructor binding. To resolve injections, an instance is instantiated by invoking 8130 {@code constructor}. This target is found only on injector bindings.]]> 8131 </doc> 8132 </method> 8133 <method name="visit" return="V" 8134 abstract="true" native="false" synchronized="false" 8135 static="false" final="false" visibility="public" 8136 deprecated="not deprecated"> 8137 <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding<? extends T>"/> 8138 <doc> 8139 <![CDATA[Visit a binding created from converting a bound instance to a new type. The source binding 8140 has the same binding annotation but a different type. This target is found only on injector 8141 bindings.]]> 8142 </doc> 8143 </method> 8144 <method name="visit" return="V" 8145 abstract="true" native="false" synchronized="false" 8146 static="false" final="false" visibility="public" 8147 deprecated="not deprecated"> 8148 <param name="binding" type="com.google.inject.spi.ProviderBinding<? extends T>"/> 8149 <doc> 8150 <![CDATA[Visit a binding to a {@link com.google.inject.Provider} that delegates to the binding for the 8151 provided type. This target is found only on injector bindings.]]> 8152 </doc> 8153 </method> 8154 <doc> 8155 <![CDATA[Visits each of the strategies used to find an instance to satisfy an injection. 8156 8157 @param <V> any type to be returned by the visit method. Use {@link Void} with 8158 {@code return null} if no return type is needed. 8159 @since 2.0]]> 8160 </doc> 8161 </interface> 8162 <!-- end interface com.google.inject.spi.BindingTargetVisitor --> 8163 <!-- start interface com.google.inject.spi.ConstructorBinding --> 8164 <interface name="ConstructorBinding" abstract="true" 8165 static="false" final="false" visibility="public" 8166 deprecated="not deprecated"> 8167 <implements name="com.google.inject.Binding<T>"/> 8168 <implements name="com.google.inject.spi.HasDependencies"/> 8169 <method name="getConstructor" return="com.google.inject.spi.InjectionPoint" 8170 abstract="true" native="false" synchronized="false" 8171 static="false" final="false" visibility="public" 8172 deprecated="not deprecated"> 8173 <doc> 8174 <![CDATA[Gets the constructor this binding injects.]]> 8175 </doc> 8176 </method> 8177 <method name="getInjectableMembers" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 8178 abstract="true" native="false" synchronized="false" 8179 static="false" final="false" visibility="public" 8180 deprecated="not deprecated"> 8181 <doc> 8182 <![CDATA[Returns all instance method and field injection points on {@code type}. 8183 8184 @return a possibly empty set of injection points. The set has a specified iteration order. All 8185 fields are returned and then all methods. Within the fields, supertype fields are returned 8186 before subtype fields. Similarly, supertype methods are returned before subtype methods.]]> 8187 </doc> 8188 </method> 8189 <method name="getMethodInterceptors" return="java.util.Map<java.lang.reflect.Method, java.util.List<org.aopalliance.intercept.MethodInterceptor>>" 8190 abstract="true" native="false" synchronized="false" 8191 static="false" final="false" visibility="public" 8192 deprecated="not deprecated"> 8193 <doc> 8194 <![CDATA[Returns the interceptors applied to each method, in the order that they will be applied. 8195 8196 @return a possibly empty map]]> 8197 </doc> 8198 </method> 8199 <doc> 8200 <![CDATA[A binding to the constructor of a concrete clss. To resolve injections, an instance is 8201 instantiated by invoking the constructor. 8202 8203 @author jessewilson@google.com (Jesse Wilson) 8204 @since 2.0]]> 8205 </doc> 8206 </interface> 8207 <!-- end interface com.google.inject.spi.ConstructorBinding --> 8208 <!-- start interface com.google.inject.spi.ConvertedConstantBinding --> 8209 <interface name="ConvertedConstantBinding" abstract="true" 8210 static="false" final="false" visibility="public" 8211 deprecated="not deprecated"> 8212 <implements name="com.google.inject.Binding<T>"/> 8213 <implements name="com.google.inject.spi.HasDependencies"/> 8214 <method name="getValue" return="T" 8215 abstract="true" native="false" synchronized="false" 8216 static="false" final="false" visibility="public" 8217 deprecated="not deprecated"> 8218 <doc> 8219 <![CDATA[Returns the converted value.]]> 8220 </doc> 8221 </method> 8222 <method name="getTypeConverterBinding" return="com.google.inject.spi.TypeConverterBinding" 8223 abstract="true" native="false" synchronized="false" 8224 static="false" final="false" visibility="public" 8225 deprecated="not deprecated"> 8226 <doc> 8227 <![CDATA[Returns the type converter binding used to convert the constant. 8228 8229 @since 3.0]]> 8230 </doc> 8231 </method> 8232 <method name="getSourceKey" return="com.google.inject.Key<java.lang.String>" 8233 abstract="true" native="false" synchronized="false" 8234 static="false" final="false" visibility="public" 8235 deprecated="not deprecated"> 8236 <doc> 8237 <![CDATA[Returns the key for the source binding. That binding can be retrieved from an injector using 8238 {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]> 8239 </doc> 8240 </method> 8241 <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 8242 abstract="true" native="false" synchronized="false" 8243 static="false" final="false" visibility="public" 8244 deprecated="not deprecated"> 8245 <doc> 8246 <![CDATA[Returns a singleton set containing only the converted key.]]> 8247 </doc> 8248 </method> 8249 <doc> 8250 <![CDATA[A binding created from converting a bound instance to a new type. The source binding has the same 8251 binding annotation but a different type. 8252 8253 @author jessewilson@google.com (Jesse Wilson) 8254 @since 2.0]]> 8255 </doc> 8256 </interface> 8257 <!-- end interface com.google.inject.spi.ConvertedConstantBinding --> 8258 <!-- start class com.google.inject.spi.DefaultBindingScopingVisitor --> 8259 <class name="DefaultBindingScopingVisitor" extends="java.lang.Object" 8260 abstract="false" 8261 static="false" final="false" visibility="public" 8262 deprecated="not deprecated"> 8263 <implements name="com.google.inject.spi.BindingScopingVisitor<V>"/> 8264 <constructor name="DefaultBindingScopingVisitor" 8265 static="false" final="false" visibility="public" 8266 deprecated="not deprecated"> 8267 </constructor> 8268 <method name="visitOther" return="V" 8269 abstract="false" native="false" synchronized="false" 8270 static="false" final="false" visibility="protected" 8271 deprecated="not deprecated"> 8272 <doc> 8273 <![CDATA[Default visit implementation. Returns {@code null}.]]> 8274 </doc> 8275 </method> 8276 <method name="visitEagerSingleton" return="V" 8277 abstract="false" native="false" synchronized="false" 8278 static="false" final="false" visibility="public" 8279 deprecated="not deprecated"> 8280 </method> 8281 <method name="visitScope" return="V" 8282 abstract="false" native="false" synchronized="false" 8283 static="false" final="false" visibility="public" 8284 deprecated="not deprecated"> 8285 <param name="scope" type="com.google.inject.Scope"/> 8286 </method> 8287 <method name="visitScopeAnnotation" return="V" 8288 abstract="false" native="false" synchronized="false" 8289 static="false" final="false" visibility="public" 8290 deprecated="not deprecated"> 8291 <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 8292 </method> 8293 <method name="visitNoScoping" return="V" 8294 abstract="false" native="false" synchronized="false" 8295 static="false" final="false" visibility="public" 8296 deprecated="not deprecated"> 8297 </method> 8298 <doc> 8299 <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to 8300 {@link #visitOther()}, returning its result. 8301 8302 @param <V> any type to be returned by the visit method. Use {@link Void} with 8303 {@code return null} if no return type is needed. 8304 8305 @author jessewilson@google.com (Jesse Wilson) 8306 @since 2.0]]> 8307 </doc> 8308 </class> 8309 <!-- end class com.google.inject.spi.DefaultBindingScopingVisitor --> 8310 <!-- start class com.google.inject.spi.DefaultBindingTargetVisitor --> 8311 <class name="DefaultBindingTargetVisitor" extends="java.lang.Object" 8312 abstract="true" 8313 static="false" final="false" visibility="public" 8314 deprecated="not deprecated"> 8315 <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 8316 <constructor name="DefaultBindingTargetVisitor" 8317 static="false" final="false" visibility="public" 8318 deprecated="not deprecated"> 8319 </constructor> 8320 <method name="visitOther" return="V" 8321 abstract="false" native="false" synchronized="false" 8322 static="false" final="false" visibility="protected" 8323 deprecated="not deprecated"> 8324 <param name="binding" type="com.google.inject.Binding<? extends T>"/> 8325 <doc> 8326 <![CDATA[Default visit implementation. Returns {@code null}.]]> 8327 </doc> 8328 </method> 8329 <method name="visit" return="V" 8330 abstract="false" native="false" synchronized="false" 8331 static="false" final="false" visibility="public" 8332 deprecated="not deprecated"> 8333 <param name="instanceBinding" type="com.google.inject.spi.InstanceBinding<? extends T>"/> 8334 </method> 8335 <method name="visit" return="V" 8336 abstract="false" native="false" synchronized="false" 8337 static="false" final="false" visibility="public" 8338 deprecated="not deprecated"> 8339 <param name="providerInstanceBinding" type="com.google.inject.spi.ProviderInstanceBinding<? extends T>"/> 8340 </method> 8341 <method name="visit" return="V" 8342 abstract="false" native="false" synchronized="false" 8343 static="false" final="false" visibility="public" 8344 deprecated="not deprecated"> 8345 <param name="providerKeyBinding" type="com.google.inject.spi.ProviderKeyBinding<? extends T>"/> 8346 </method> 8347 <method name="visit" return="V" 8348 abstract="false" native="false" synchronized="false" 8349 static="false" final="false" visibility="public" 8350 deprecated="not deprecated"> 8351 <param name="linkedKeyBinding" type="com.google.inject.spi.LinkedKeyBinding<? extends T>"/> 8352 </method> 8353 <method name="visit" return="V" 8354 abstract="false" native="false" synchronized="false" 8355 static="false" final="false" visibility="public" 8356 deprecated="not deprecated"> 8357 <param name="exposedBinding" type="com.google.inject.spi.ExposedBinding<? extends T>"/> 8358 </method> 8359 <method name="visit" return="V" 8360 abstract="false" native="false" synchronized="false" 8361 static="false" final="false" visibility="public" 8362 deprecated="not deprecated"> 8363 <param name="untargettedBinding" type="com.google.inject.spi.UntargettedBinding<? extends T>"/> 8364 </method> 8365 <method name="visit" return="V" 8366 abstract="false" native="false" synchronized="false" 8367 static="false" final="false" visibility="public" 8368 deprecated="not deprecated"> 8369 <param name="constructorBinding" type="com.google.inject.spi.ConstructorBinding<? extends T>"/> 8370 </method> 8371 <method name="visit" return="V" 8372 abstract="false" native="false" synchronized="false" 8373 static="false" final="false" visibility="public" 8374 deprecated="not deprecated"> 8375 <param name="convertedConstantBinding" type="com.google.inject.spi.ConvertedConstantBinding<? extends T>"/> 8376 </method> 8377 <method name="visit" return="V" 8378 abstract="false" native="false" synchronized="false" 8379 static="false" final="false" visibility="public" 8380 deprecated="not deprecated"> 8381 <param name="providerBinding" type="com.google.inject.spi.ProviderBinding<? extends T>"/> 8382 </method> 8383 <doc> 8384 <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to {@link 8385 #visitOther(Binding)}, returning its result. 8386 8387 @param <V> any type to be returned by the visit method. Use {@link Void} with 8388 {@code return null} if no return type is needed. 8389 8390 @author jessewilson@google.com (Jesse Wilson) 8391 @since 2.0]]> 8392 </doc> 8393 </class> 8394 <!-- end class com.google.inject.spi.DefaultBindingTargetVisitor --> 8395 <!-- start class com.google.inject.spi.DefaultElementVisitor --> 8396 <class name="DefaultElementVisitor" extends="java.lang.Object" 8397 abstract="true" 8398 static="false" final="false" visibility="public" 8399 deprecated="not deprecated"> 8400 <implements name="com.google.inject.spi.ElementVisitor<V>"/> 8401 <constructor name="DefaultElementVisitor" 8402 static="false" final="false" visibility="public" 8403 deprecated="not deprecated"> 8404 </constructor> 8405 <method name="visitOther" return="V" 8406 abstract="false" native="false" synchronized="false" 8407 static="false" final="false" visibility="protected" 8408 deprecated="not deprecated"> 8409 <param name="element" type="com.google.inject.spi.Element"/> 8410 <doc> 8411 <![CDATA[Default visit implementation. Returns {@code null}.]]> 8412 </doc> 8413 </method> 8414 <method name="visit" return="V" 8415 abstract="false" native="false" synchronized="false" 8416 static="false" final="false" visibility="public" 8417 deprecated="not deprecated"> 8418 <param name="message" type="com.google.inject.spi.Message"/> 8419 </method> 8420 <method name="visit" return="V" 8421 abstract="false" native="false" synchronized="false" 8422 static="false" final="false" visibility="public" 8423 deprecated="not deprecated"> 8424 <param name="binding" type="com.google.inject.Binding<T>"/> 8425 </method> 8426 <method name="visit" return="V" 8427 abstract="false" native="false" synchronized="false" 8428 static="false" final="false" visibility="public" 8429 deprecated="not deprecated"> 8430 <param name="interceptorBinding" type="com.google.inject.spi.InterceptorBinding"/> 8431 </method> 8432 <method name="visit" return="V" 8433 abstract="false" native="false" synchronized="false" 8434 static="false" final="false" visibility="public" 8435 deprecated="not deprecated"> 8436 <param name="scopeBinding" type="com.google.inject.spi.ScopeBinding"/> 8437 </method> 8438 <method name="visit" return="V" 8439 abstract="false" native="false" synchronized="false" 8440 static="false" final="false" visibility="public" 8441 deprecated="not deprecated"> 8442 <param name="typeConverterBinding" type="com.google.inject.spi.TypeConverterBinding"/> 8443 </method> 8444 <method name="visit" return="V" 8445 abstract="false" native="false" synchronized="false" 8446 static="false" final="false" visibility="public" 8447 deprecated="not deprecated"> 8448 <param name="providerLookup" type="com.google.inject.spi.ProviderLookup<T>"/> 8449 </method> 8450 <method name="visit" return="V" 8451 abstract="false" native="false" synchronized="false" 8452 static="false" final="false" visibility="public" 8453 deprecated="not deprecated"> 8454 <param name="injectionRequest" type="com.google.inject.spi.InjectionRequest<?>"/> 8455 </method> 8456 <method name="visit" return="V" 8457 abstract="false" native="false" synchronized="false" 8458 static="false" final="false" visibility="public" 8459 deprecated="not deprecated"> 8460 <param name="staticInjectionRequest" type="com.google.inject.spi.StaticInjectionRequest"/> 8461 </method> 8462 <method name="visit" return="V" 8463 abstract="false" native="false" synchronized="false" 8464 static="false" final="false" visibility="public" 8465 deprecated="not deprecated"> 8466 <param name="privateElements" type="com.google.inject.spi.PrivateElements"/> 8467 </method> 8468 <method name="visit" return="V" 8469 abstract="false" native="false" synchronized="false" 8470 static="false" final="false" visibility="public" 8471 deprecated="not deprecated"> 8472 <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup<T>"/> 8473 </method> 8474 <method name="visit" return="V" 8475 abstract="false" native="false" synchronized="false" 8476 static="false" final="false" visibility="public" 8477 deprecated="not deprecated"> 8478 <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/> 8479 </method> 8480 <method name="visit" return="V" 8481 abstract="false" native="false" synchronized="false" 8482 static="false" final="false" visibility="public" 8483 deprecated="not deprecated"> 8484 <param name="binding" type="com.google.inject.spi.ProvisionListenerBinding"/> 8485 </method> 8486 <method name="visit" return="V" 8487 abstract="false" native="false" synchronized="false" 8488 static="false" final="false" visibility="public" 8489 deprecated="not deprecated"> 8490 <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/> 8491 </method> 8492 <method name="visit" return="V" 8493 abstract="false" native="false" synchronized="false" 8494 static="false" final="false" visibility="public" 8495 deprecated="not deprecated"> 8496 <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/> 8497 </method> 8498 <method name="visit" return="V" 8499 abstract="false" native="false" synchronized="false" 8500 static="false" final="false" visibility="public" 8501 deprecated="not deprecated"> 8502 <param name="option" type="com.google.inject.spi.RequireAtInjectOnConstructorsOption"/> 8503 </method> 8504 <method name="visit" return="V" 8505 abstract="false" native="false" synchronized="false" 8506 static="false" final="false" visibility="public" 8507 deprecated="not deprecated"> 8508 <param name="option" type="com.google.inject.spi.RequireExactBindingAnnotationsOption"/> 8509 </method> 8510 <method name="visit" return="V" 8511 abstract="false" native="false" synchronized="false" 8512 static="false" final="false" visibility="public" 8513 deprecated="not deprecated"> 8514 <param name="binding" type="com.google.inject.spi.ModuleAnnotatedMethodScannerBinding"/> 8515 </method> 8516 <doc> 8517 <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to 8518 {@link #visitOther(Element)}, returning its result. 8519 8520 @param <V> any type to be returned by the visit method. Use {@link Void} with 8521 {@code return null} if no return type is needed. 8522 8523 @author sberlin@gmail.com (Sam Berlin) 8524 @since 2.0]]> 8525 </doc> 8526 </class> 8527 <!-- end class com.google.inject.spi.DefaultElementVisitor --> 8528 <!-- start class com.google.inject.spi.Dependency --> 8529 <class name="Dependency" extends="java.lang.Object" 8530 abstract="false" 8531 static="false" final="true" visibility="public" 8532 deprecated="not deprecated"> 8533 <method name="get" return="com.google.inject.spi.Dependency<T>" 8534 abstract="false" native="false" synchronized="false" 8535 static="true" final="false" visibility="public" 8536 deprecated="not deprecated"> 8537 <param name="key" type="com.google.inject.Key<T>"/> 8538 <doc> 8539 <![CDATA[Returns a new dependency that is not attached to an injection point. The returned dependency is 8540 nullable.]]> 8541 </doc> 8542 </method> 8543 <method name="forInjectionPoints" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 8544 abstract="false" native="false" synchronized="false" 8545 static="true" final="false" visibility="public" 8546 deprecated="not deprecated"> 8547 <param name="injectionPoints" type="java.util.Set<com.google.inject.spi.InjectionPoint>"/> 8548 <doc> 8549 <![CDATA[Returns the dependencies from the given injection points.]]> 8550 </doc> 8551 </method> 8552 <method name="getKey" return="com.google.inject.Key<T>" 8553 abstract="false" native="false" synchronized="false" 8554 static="false" final="false" visibility="public" 8555 deprecated="not deprecated"> 8556 <doc> 8557 <![CDATA[Returns the key to the binding that satisfies this dependency.]]> 8558 </doc> 8559 </method> 8560 <method name="isNullable" return="boolean" 8561 abstract="false" native="false" synchronized="false" 8562 static="false" final="false" visibility="public" 8563 deprecated="not deprecated"> 8564 <doc> 8565 <![CDATA[Returns true if null is a legal value for this dependency.]]> 8566 </doc> 8567 </method> 8568 <method name="getInjectionPoint" return="com.google.inject.spi.InjectionPoint" 8569 abstract="false" native="false" synchronized="false" 8570 static="false" final="false" visibility="public" 8571 deprecated="not deprecated"> 8572 <doc> 8573 <![CDATA[Returns the injection point to which this dependency belongs, or null if this dependency isn't 8574 attached to a particular injection point.]]> 8575 </doc> 8576 </method> 8577 <method name="getParameterIndex" return="int" 8578 abstract="false" native="false" synchronized="false" 8579 static="false" final="false" visibility="public" 8580 deprecated="not deprecated"> 8581 <doc> 8582 <![CDATA[Returns the index of this dependency in the injection point's parameter list, or {@code -1} if 8583 this dependency does not belong to a parameter list. Only method and constuctor dependencies 8584 are elements in a parameter list.]]> 8585 </doc> 8586 </method> 8587 <method name="hashCode" return="int" 8588 abstract="false" native="false" synchronized="false" 8589 static="false" final="false" visibility="public" 8590 deprecated="not deprecated"> 8591 </method> 8592 <method name="equals" return="boolean" 8593 abstract="false" native="false" synchronized="false" 8594 static="false" final="false" visibility="public" 8595 deprecated="not deprecated"> 8596 <param name="o" type="java.lang.Object"/> 8597 </method> 8598 <method name="toString" return="java.lang.String" 8599 abstract="false" native="false" synchronized="false" 8600 static="false" final="false" visibility="public" 8601 deprecated="not deprecated"> 8602 </method> 8603 <doc> 8604 <![CDATA[A variable that can be resolved by an injector. 8605 8606 <p>Use {@link #get} to build a freestanding dependency, or {@link InjectionPoint} to build one 8607 that's attached to a constructor, method or field. 8608 8609 @author crazybob@google.com (Bob Lee) 8610 @author jessewilson@google.com (Jesse Wilson) 8611 @since 2.0]]> 8612 </doc> 8613 </class> 8614 <!-- end class com.google.inject.spi.Dependency --> 8615 <!-- start class com.google.inject.spi.DependencyAndSource --> 8616 <class name="DependencyAndSource" extends="java.lang.Object" 8617 abstract="false" 8618 static="false" final="true" visibility="public" 8619 deprecated="not deprecated"> 8620 <constructor name="DependencyAndSource" type="com.google.inject.spi.Dependency<?>, java.lang.Object" 8621 static="false" final="false" visibility="public" 8622 deprecated="not deprecated"> 8623 </constructor> 8624 <method name="getDependency" return="com.google.inject.spi.Dependency<?>" 8625 abstract="false" native="false" synchronized="false" 8626 static="false" final="false" visibility="public" 8627 deprecated="not deprecated"> 8628 <doc> 8629 <![CDATA[Returns the Dependency, if one exists. For anything that can be referenced 8630 by {@link Injector#getBinding}, a dependency exists. A dependency will not 8631 exist (and this will return null) for types initialized with 8632 {@link Binder#requestInjection} or {@link Injector#injectMembers(Object)}, 8633 nor will it exist for objects injected into Providers bound with 8634 LinkedBindingBuilder#toProvider(Provider).]]> 8635 </doc> 8636 </method> 8637 <method name="getBindingSource" return="java.lang.String" 8638 abstract="false" native="false" synchronized="false" 8639 static="false" final="false" visibility="public" 8640 deprecated="not deprecated"> 8641 <doc> 8642 <![CDATA[Returns a string describing where this dependency was bound. If the binding 8643 was just-in-time, there is no valid binding source, so this describes the 8644 class in question.]]> 8645 </doc> 8646 </method> 8647 <method name="toString" return="java.lang.String" 8648 abstract="false" native="false" synchronized="false" 8649 static="false" final="false" visibility="public" 8650 deprecated="not deprecated"> 8651 </method> 8652 <doc> 8653 <![CDATA[A combination of a {@link Dependency} and the {@link Binding#getSource() 8654 source} where the dependency was bound. 8655 8656 @author sameb@google.com (Sam Berlin) 8657 @since 4.0]]> 8658 </doc> 8659 </class> 8660 <!-- end class com.google.inject.spi.DependencyAndSource --> 8661 <!-- start class com.google.inject.spi.DisableCircularProxiesOption --> 8662 <class name="DisableCircularProxiesOption" extends="java.lang.Object" 8663 abstract="false" 8664 static="false" final="true" visibility="public" 8665 deprecated="not deprecated"> 8666 <implements name="com.google.inject.spi.Element"/> 8667 <method name="getSource" return="java.lang.Object" 8668 abstract="false" native="false" synchronized="false" 8669 static="false" final="false" visibility="public" 8670 deprecated="not deprecated"> 8671 </method> 8672 <method name="applyTo" 8673 abstract="false" native="false" synchronized="false" 8674 static="false" final="false" visibility="public" 8675 deprecated="not deprecated"> 8676 <param name="binder" type="com.google.inject.Binder"/> 8677 </method> 8678 <method name="acceptVisitor" return="T" 8679 abstract="false" native="false" synchronized="false" 8680 static="false" final="false" visibility="public" 8681 deprecated="not deprecated"> 8682 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 8683 </method> 8684 <doc> 8685 <![CDATA[A request to disable circular proxies. 8686 8687 @author sameb@google.com (Sam Berlin) 8688 @since 3.0]]> 8689 </doc> 8690 </class> 8691 <!-- end class com.google.inject.spi.DisableCircularProxiesOption --> 8692 <!-- start interface com.google.inject.spi.Element --> 8693 <interface name="Element" abstract="true" 8694 static="false" final="false" visibility="public" 8695 deprecated="not deprecated"> 8696 <method name="getSource" return="java.lang.Object" 8697 abstract="true" native="false" synchronized="false" 8698 static="false" final="false" visibility="public" 8699 deprecated="not deprecated"> 8700 <doc> 8701 <![CDATA[Returns an arbitrary object containing information about the "place" where this element was 8702 configured. Used by Guice in the production of descriptive error messages. 8703 8704 <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good 8705 example. Tools should simply call {@code toString()} on the source object if the type is 8706 unfamiliar.]]> 8707 </doc> 8708 </method> 8709 <method name="acceptVisitor" return="T" 8710 abstract="true" native="false" synchronized="false" 8711 static="false" final="false" visibility="public" 8712 deprecated="not deprecated"> 8713 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 8714 <doc> 8715 <![CDATA[Accepts an element visitor. Invokes the visitor method specific to this element's type. 8716 8717 @param visitor to call back on]]> 8718 </doc> 8719 </method> 8720 <method name="applyTo" 8721 abstract="true" native="false" synchronized="false" 8722 static="false" final="false" visibility="public" 8723 deprecated="not deprecated"> 8724 <param name="binder" type="com.google.inject.Binder"/> 8725 <doc> 8726 <![CDATA[Writes this module element to the given binder (optional operation). 8727 8728 @param binder to apply configuration element to 8729 @throws UnsupportedOperationException if the {@code applyTo} method is not supported by this 8730 element.]]> 8731 </doc> 8732 </method> 8733 <doc> 8734 <![CDATA[A core component of a module or injector. 8735 8736 <p>The elements of a module can be inspected, validated and rewritten. Use {@link 8737 Elements#getElements(com.google.inject.Module[]) Elements.getElements()} to read the elements 8738 from a module, and {@link Elements#getModule(Iterable) Elements.getModule()} to rewrite them. 8739 This can be used for static analysis and generation of Guice modules. 8740 8741 <p>The elements of an injector can be inspected and exercised. Use {@link 8742 com.google.inject.Injector#getBindings Injector.getBindings()} to reflect on Guice injectors. 8743 8744 @author jessewilson@google.com (Jesse Wilson) 8745 @author crazybob@google.com (Bob Lee) 8746 @since 2.0]]> 8747 </doc> 8748 </interface> 8749 <!-- end interface com.google.inject.spi.Element --> 8750 <!-- start class com.google.inject.spi.Elements --> 8751 <class name="Elements" extends="java.lang.Object" 8752 abstract="false" 8753 static="false" final="true" visibility="public" 8754 deprecated="not deprecated"> 8755 <constructor name="Elements" 8756 static="false" final="false" visibility="public" 8757 deprecated="not deprecated"> 8758 </constructor> 8759 <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 8760 abstract="false" native="false" synchronized="false" 8761 static="true" final="false" visibility="public" 8762 deprecated="not deprecated"> 8763 <param name="modules" type="com.google.inject.Module[]"/> 8764 <doc> 8765 <![CDATA[Records the elements executed by {@code modules}.]]> 8766 </doc> 8767 </method> 8768 <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 8769 abstract="false" native="false" synchronized="false" 8770 static="true" final="false" visibility="public" 8771 deprecated="not deprecated"> 8772 <param name="stage" type="com.google.inject.Stage"/> 8773 <param name="modules" type="com.google.inject.Module[]"/> 8774 <doc> 8775 <![CDATA[Records the elements executed by {@code modules}.]]> 8776 </doc> 8777 </method> 8778 <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 8779 abstract="false" native="false" synchronized="false" 8780 static="true" final="false" visibility="public" 8781 deprecated="not deprecated"> 8782 <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 8783 <doc> 8784 <![CDATA[Records the elements executed by {@code modules}.]]> 8785 </doc> 8786 </method> 8787 <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 8788 abstract="false" native="false" synchronized="false" 8789 static="true" final="false" visibility="public" 8790 deprecated="not deprecated"> 8791 <param name="stage" type="com.google.inject.Stage"/> 8792 <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 8793 <doc> 8794 <![CDATA[Records the elements executed by {@code modules}.]]> 8795 </doc> 8796 </method> 8797 <method name="getModule" return="com.google.inject.Module" 8798 abstract="false" native="false" synchronized="false" 8799 static="true" final="false" visibility="public" 8800 deprecated="not deprecated"> 8801 <param name="elements" type="java.lang.Iterable<? extends com.google.inject.spi.Element>"/> 8802 <doc> 8803 <![CDATA[Returns the module composed of {@code elements}.]]> 8804 </doc> 8805 </method> 8806 <doc> 8807 <![CDATA[Exposes elements of a module so they can be inspected, validated or {@link 8808 Element#applyTo(Binder) rewritten}. 8809 8810 @author jessewilson@google.com (Jesse Wilson) 8811 @since 2.0]]> 8812 </doc> 8813 </class> 8814 <!-- end class com.google.inject.spi.Elements --> 8815 <!-- start class com.google.inject.spi.ElementSource --> 8816 <class name="ElementSource" extends="java.lang.Object" 8817 abstract="false" 8818 static="false" final="true" visibility="public" 8819 deprecated="not deprecated"> 8820 <method name="getOriginalElementSource" return="com.google.inject.spi.ElementSource" 8821 abstract="false" native="false" synchronized="false" 8822 static="false" final="false" visibility="public" 8823 deprecated="not deprecated"> 8824 <doc> 8825 <![CDATA[Returns the {@link ElementSource} of the element this was created or copied from. If this was 8826 not created or copied from another element, returns {@code null}.]]> 8827 </doc> 8828 </method> 8829 <method name="getDeclaringSource" return="java.lang.Object" 8830 abstract="false" native="false" synchronized="false" 8831 static="false" final="false" visibility="public" 8832 deprecated="not deprecated"> 8833 <doc> 8834 <![CDATA[Returns a single location in source code that defines the element. It can be any object 8835 such as {@link java.lang.reflect.Constructor}, {@link java.lang.reflect.Method}, 8836 {@link java.lang.reflect.Field}, {@link StackTraceElement}, etc. For 8837 example, if the element is created from a method annotated by {@literal @Provides}, the 8838 declaring source of element would be the method itself.]]> 8839 </doc> 8840 </method> 8841 <method name="getModuleClassNames" return="java.util.List<java.lang.String>" 8842 abstract="false" native="false" synchronized="false" 8843 static="false" final="false" visibility="public" 8844 deprecated="not deprecated"> 8845 <doc> 8846 <![CDATA[Returns the class names of modules involved in creating this {@link Element}. The first 8847 element (index 0) is the class name of module that defined the element, and the last element 8848 is the class name of root module.]]> 8849 </doc> 8850 </method> 8851 <method name="getModuleConfigurePositionsInStackTrace" return="java.util.List<java.lang.Integer>" 8852 abstract="false" native="false" synchronized="false" 8853 static="false" final="false" visibility="public" 8854 deprecated="not deprecated"> 8855 <doc> 8856 <![CDATA[Returns the position of {@link com.google.inject.Module#configure configure(Binder)} method 8857 call in the {@link #getStackTrace stack trace} for modules that their classes returned by 8858 {@link #getModuleClassNames}. For example, if the stack trace looks like the following: 8859 <p> 8860 {@code 8861 0 - Binder.bind(), 8862 1 - ModuleTwo.configure(), 8863 2 - Binder.install(), 8864 3 - ModuleOne.configure(), 8865 4 - theRest(). 8866 } 8867 <p> 8868 1 and 3 are returned. 8869 <p> 8870 In the cases where stack trace is not available (i.e., the stack trace was not collected), 8871 it returns -1 for all module positions.]]> 8872 </doc> 8873 </method> 8874 <method name="getStackTrace" return="java.lang.StackTraceElement[]" 8875 abstract="false" native="false" synchronized="false" 8876 static="false" final="false" visibility="public" 8877 deprecated="not deprecated"> 8878 <doc> 8879 <![CDATA[Returns the sequence of method calls that ends at one of {@link com.google.inject.Binder} 8880 {@code bindXXX()} methods and eventually defines the element. Note that 8881 {@link #getStackTrace} lists {@link StackTraceElement StackTraceElements} in reverse 8882 chronological order. The first element (index zero) is the last method call and the last 8883 element is the first method invocation. In the cases where stack trace is not available 8884 (i.e.,the stack trace was not collected), it returns an empty array.]]> 8885 </doc> 8886 </method> 8887 <method name="toString" return="java.lang.String" 8888 abstract="false" native="false" synchronized="false" 8889 static="false" final="false" visibility="public" 8890 deprecated="not deprecated"> 8891 <doc> 8892 <![CDATA[Returns {@code getDeclaringSource().toString()} value.]]> 8893 </doc> 8894 </method> 8895 <doc> 8896 <![CDATA[Contains information about where and how an {@link Element element} was 8897 bound. 8898 <p> 8899 The {@link #getDeclaringSource() declaring source} refers to a location in 8900 source code that defines the Guice {@link Element element}. For example, if 8901 the element is created from a method annotated by {@literal @Provides}, the 8902 declaring source of element would be the method itself. 8903 <p> 8904 The {@link #getStackTrace()} refers to the sequence of calls ends at one of 8905 {@link com.google.inject.Binder} {@code bindXXX()} methods and eventually 8906 defines the element. Note that {@link #getStackTrace()} lists 8907 {@link StackTraceElement StackTraceElements} in reverse chronological order. 8908 The first element (index zero) is the last method call and the last element 8909 is the first method invocation. By default, the stack trace is not collected. 8910 The default behavior can be changed by setting the 8911 {@code guice_include_stack_traces} flag value. The value can be either 8912 {@code OFF}, {@code ONLY_FOR_DECLARING_SOURCE} or {@code COMPLETE}. Note that 8913 collecting stack traces for every binding can cause a performance hit when 8914 the injector is created. 8915 <p> 8916 The sequence of class names of {@link com.google.inject.Module modules} 8917 involved in the element creation can be retrieved by 8918 {@link #getModuleClassNames()}. Similar to {@link #getStackTrace()}, the 8919 order is reverse chronological. The first module (index 0) is the module that 8920 installs the {@link Element element}. The last module is the root module. 8921 <p> 8922 In order to support the cases where a Guice {@link Element element} is 8923 created from another Guice {@link Element element} (original) (e.g., by 8924 {@link Element#applyTo}), it also provides a reference to the original 8925 element source ({@link #getOriginalElementSource()}). 8926 8927 @since 4.0]]> 8928 </doc> 8929 </class> 8930 <!-- end class com.google.inject.spi.ElementSource --> 8931 <!-- start interface com.google.inject.spi.ElementVisitor --> 8932 <interface name="ElementVisitor" abstract="true" 8933 static="false" final="false" visibility="public" 8934 deprecated="not deprecated"> 8935 <method name="visit" return="V" 8936 abstract="true" native="false" synchronized="false" 8937 static="false" final="false" visibility="public" 8938 deprecated="not deprecated"> 8939 <param name="binding" type="com.google.inject.Binding<T>"/> 8940 <doc> 8941 <![CDATA[Visit a mapping from a key (type and optional annotation) to the strategy for getting 8942 instances of the type.]]> 8943 </doc> 8944 </method> 8945 <method name="visit" return="V" 8946 abstract="true" native="false" synchronized="false" 8947 static="false" final="false" visibility="public" 8948 deprecated="not deprecated"> 8949 <param name="binding" type="com.google.inject.spi.InterceptorBinding"/> 8950 <doc> 8951 <![CDATA[Visit a registration of interceptors for matching methods of matching classes.]]> 8952 </doc> 8953 </method> 8954 <method name="visit" return="V" 8955 abstract="true" native="false" synchronized="false" 8956 static="false" final="false" visibility="public" 8957 deprecated="not deprecated"> 8958 <param name="binding" type="com.google.inject.spi.ScopeBinding"/> 8959 <doc> 8960 <![CDATA[Visit a registration of a scope annotation with the scope that implements it.]]> 8961 </doc> 8962 </method> 8963 <method name="visit" return="V" 8964 abstract="true" native="false" synchronized="false" 8965 static="false" final="false" visibility="public" 8966 deprecated="not deprecated"> 8967 <param name="binding" type="com.google.inject.spi.TypeConverterBinding"/> 8968 <doc> 8969 <![CDATA[Visit a registration of type converters for matching target types.]]> 8970 </doc> 8971 </method> 8972 <method name="visit" return="V" 8973 abstract="true" native="false" synchronized="false" 8974 static="false" final="false" visibility="public" 8975 deprecated="not deprecated"> 8976 <param name="request" type="com.google.inject.spi.InjectionRequest<?>"/> 8977 <doc> 8978 <![CDATA[Visit a request to inject the instance fields and methods of an instance.]]> 8979 </doc> 8980 </method> 8981 <method name="visit" return="V" 8982 abstract="true" native="false" synchronized="false" 8983 static="false" final="false" visibility="public" 8984 deprecated="not deprecated"> 8985 <param name="request" type="com.google.inject.spi.StaticInjectionRequest"/> 8986 <doc> 8987 <![CDATA[Visit a request to inject the static fields and methods of type.]]> 8988 </doc> 8989 </method> 8990 <method name="visit" return="V" 8991 abstract="true" native="false" synchronized="false" 8992 static="false" final="false" visibility="public" 8993 deprecated="not deprecated"> 8994 <param name="lookup" type="com.google.inject.spi.ProviderLookup<T>"/> 8995 <doc> 8996 <![CDATA[Visit a lookup of the provider for a type.]]> 8997 </doc> 8998 </method> 8999 <method name="visit" return="V" 9000 abstract="true" native="false" synchronized="false" 9001 static="false" final="false" visibility="public" 9002 deprecated="not deprecated"> 9003 <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup<T>"/> 9004 <doc> 9005 <![CDATA[Visit a lookup of the members injector.]]> 9006 </doc> 9007 </method> 9008 <method name="visit" return="V" 9009 abstract="true" native="false" synchronized="false" 9010 static="false" final="false" visibility="public" 9011 deprecated="not deprecated"> 9012 <param name="message" type="com.google.inject.spi.Message"/> 9013 <doc> 9014 <![CDATA[Visit an error message and the context in which it occured.]]> 9015 </doc> 9016 </method> 9017 <method name="visit" return="V" 9018 abstract="true" native="false" synchronized="false" 9019 static="false" final="false" visibility="public" 9020 deprecated="not deprecated"> 9021 <param name="elements" type="com.google.inject.spi.PrivateElements"/> 9022 <doc> 9023 <![CDATA[Visit a collection of configuration elements for a {@linkplain com.google.inject.PrivateBinder 9024 private binder}.]]> 9025 </doc> 9026 </method> 9027 <method name="visit" return="V" 9028 abstract="true" native="false" synchronized="false" 9029 static="false" final="false" visibility="public" 9030 deprecated="not deprecated"> 9031 <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/> 9032 <doc> 9033 <![CDATA[Visit an injectable type listener binding.]]> 9034 </doc> 9035 </method> 9036 <method name="visit" return="V" 9037 abstract="true" native="false" synchronized="false" 9038 static="false" final="false" visibility="public" 9039 deprecated="not deprecated"> 9040 <param name="binding" type="com.google.inject.spi.ProvisionListenerBinding"/> 9041 <doc> 9042 <![CDATA[Visit a provision listener binding. 9043 9044 @since 4.0]]> 9045 </doc> 9046 </method> 9047 <method name="visit" return="V" 9048 abstract="true" native="false" synchronized="false" 9049 static="false" final="false" visibility="public" 9050 deprecated="not deprecated"> 9051 <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/> 9052 <doc> 9053 <![CDATA[Visit a require explicit bindings command. 9054 9055 @since 3.0]]> 9056 </doc> 9057 </method> 9058 <method name="visit" return="V" 9059 abstract="true" native="false" synchronized="false" 9060 static="false" final="false" visibility="public" 9061 deprecated="not deprecated"> 9062 <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/> 9063 <doc> 9064 <![CDATA[Visit a disable circular proxies command. 9065 9066 @since 3.0]]> 9067 </doc> 9068 </method> 9069 <method name="visit" return="V" 9070 abstract="true" native="false" synchronized="false" 9071 static="false" final="false" visibility="public" 9072 deprecated="not deprecated"> 9073 <param name="option" type="com.google.inject.spi.RequireAtInjectOnConstructorsOption"/> 9074 <doc> 9075 <![CDATA[Visit a require explicit {@literal @}{@link Inject} command. 9076 9077 @since 4.0]]> 9078 </doc> 9079 </method> 9080 <method name="visit" return="V" 9081 abstract="true" native="false" synchronized="false" 9082 static="false" final="false" visibility="public" 9083 deprecated="not deprecated"> 9084 <param name="option" type="com.google.inject.spi.RequireExactBindingAnnotationsOption"/> 9085 <doc> 9086 <![CDATA[Visit a require exact binding annotations command. 9087 9088 @since 4.0]]> 9089 </doc> 9090 </method> 9091 <method name="visit" return="V" 9092 abstract="true" native="false" synchronized="false" 9093 static="false" final="false" visibility="public" 9094 deprecated="not deprecated"> 9095 <param name="binding" type="com.google.inject.spi.ModuleAnnotatedMethodScannerBinding"/> 9096 <doc> 9097 <![CDATA[Visits a {@link Binder#scanModulesForAnnotatedMethods} command. 9098 9099 @since 4.0]]> 9100 </doc> 9101 </method> 9102 <doc> 9103 <![CDATA[Visit elements. 9104 9105 @param <V> any type to be returned by the visit method. Use {@link Void} with 9106 {@code return null} if no return type is needed. 9107 9108 @since 2.0]]> 9109 </doc> 9110 </interface> 9111 <!-- end interface com.google.inject.spi.ElementVisitor --> 9112 <!-- start interface com.google.inject.spi.ExposedBinding --> 9113 <interface name="ExposedBinding" abstract="true" 9114 static="false" final="false" visibility="public" 9115 deprecated="not deprecated"> 9116 <implements name="com.google.inject.Binding<T>"/> 9117 <implements name="com.google.inject.spi.HasDependencies"/> 9118 <method name="getPrivateElements" return="com.google.inject.spi.PrivateElements" 9119 abstract="true" native="false" synchronized="false" 9120 static="false" final="false" visibility="public" 9121 deprecated="not deprecated"> 9122 <doc> 9123 <![CDATA[Returns the enclosed environment that holds the original binding.]]> 9124 </doc> 9125 </method> 9126 <method name="applyTo" 9127 abstract="true" native="false" synchronized="false" 9128 static="false" final="false" visibility="public" 9129 deprecated="not deprecated"> 9130 <param name="binder" type="com.google.inject.Binder"/> 9131 <doc> 9132 <![CDATA[Unsupported. Always throws {@link UnsupportedOperationException}.]]> 9133 </doc> 9134 </method> 9135 <doc> 9136 <![CDATA[A binding to a key exposed from an enclosed private environment. 9137 9138 @author jessewilson@google.com (Jesse Wilson) 9139 @since 2.0]]> 9140 </doc> 9141 </interface> 9142 <!-- end interface com.google.inject.spi.ExposedBinding --> 9143 <!-- start interface com.google.inject.spi.HasDependencies --> 9144 <interface name="HasDependencies" abstract="true" 9145 static="false" final="false" visibility="public" 9146 deprecated="not deprecated"> 9147 <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 9148 abstract="true" native="false" synchronized="false" 9149 static="false" final="false" visibility="public" 9150 deprecated="not deprecated"> 9151 <doc> 9152 <![CDATA[Returns the known dependencies for this type. If this has dependencies whose values are not 9153 known statically, a dependency for the {@link com.google.inject.Injector Injector} will be 9154 included in the returned set. 9155 9156 @return a possibly empty set]]> 9157 </doc> 9158 </method> 9159 <doc> 9160 <![CDATA[Implemented by {@link com.google.inject.Binding bindings}, {@link com.google.inject.Provider 9161 providers} and instances that expose their dependencies explicitly. 9162 9163 @author jessewilson@google.com (Jesse Wilson) 9164 @since 2.0]]> 9165 </doc> 9166 </interface> 9167 <!-- end interface com.google.inject.spi.HasDependencies --> 9168 <!-- start interface com.google.inject.spi.InjectionListener --> 9169 <interface name="InjectionListener" abstract="true" 9170 static="false" final="false" visibility="public" 9171 deprecated="not deprecated"> 9172 <method name="afterInjection" 9173 abstract="true" native="false" synchronized="false" 9174 static="false" final="false" visibility="public" 9175 deprecated="not deprecated"> 9176 <param name="injectee" type="I"/> 9177 <doc> 9178 <![CDATA[Invoked by Guice after it injects the fields and methods of instance. 9179 9180 @param injectee instance that Guice injected dependencies into]]> 9181 </doc> 9182 </method> 9183 <doc> 9184 <![CDATA[Listens for injections into instances of type {@code I}. Useful for performing further 9185 injections, post-injection initialization, and more. 9186 9187 @author crazybob@google.com (Bob Lee) 9188 @author jessewilson@google.com (Jesse Wilson) 9189 @since 2.0]]> 9190 </doc> 9191 </interface> 9192 <!-- end interface com.google.inject.spi.InjectionListener --> 9193 <!-- start class com.google.inject.spi.InjectionPoint --> 9194 <class name="InjectionPoint" extends="java.lang.Object" 9195 abstract="false" 9196 static="false" final="true" visibility="public" 9197 deprecated="not deprecated"> 9198 <method name="getMember" return="java.lang.reflect.Member" 9199 abstract="false" native="false" synchronized="false" 9200 static="false" final="false" visibility="public" 9201 deprecated="not deprecated"> 9202 <doc> 9203 <![CDATA[Returns the injected constructor, field, or method.]]> 9204 </doc> 9205 </method> 9206 <method name="getDependencies" return="java.util.List<com.google.inject.spi.Dependency<?>>" 9207 abstract="false" native="false" synchronized="false" 9208 static="false" final="false" visibility="public" 9209 deprecated="not deprecated"> 9210 <doc> 9211 <![CDATA[Returns the dependencies for this injection point. If the injection point is for a method or 9212 constructor, the dependencies will correspond to that member's parameters. Field injection 9213 points always have a single dependency for the field itself. 9214 9215 @return a possibly-empty list]]> 9216 </doc> 9217 </method> 9218 <method name="isOptional" return="boolean" 9219 abstract="false" native="false" synchronized="false" 9220 static="false" final="false" visibility="public" 9221 deprecated="not deprecated"> 9222 <doc> 9223 <![CDATA[Returns true if this injection point shall be skipped if the injector cannot resolve bindings 9224 for all required dependencies. Both explicit bindings (as specified in a module), and implicit 9225 bindings ({@literal @}{@link com.google.inject.ImplementedBy ImplementedBy}, default 9226 constructors etc.) may be used to satisfy optional injection points.]]> 9227 </doc> 9228 </method> 9229 <method name="isToolable" return="boolean" 9230 abstract="false" native="false" synchronized="false" 9231 static="false" final="false" visibility="public" 9232 deprecated="not deprecated"> 9233 <doc> 9234 <![CDATA[Returns true if the element is annotated with {@literal @}{@link Toolable}. 9235 9236 @since 3.0]]> 9237 </doc> 9238 </method> 9239 <method name="getDeclaringType" return="com.google.inject.TypeLiteral<?>" 9240 abstract="false" native="false" synchronized="false" 9241 static="false" final="false" visibility="public" 9242 deprecated="not deprecated"> 9243 <doc> 9244 <![CDATA[Returns the generic type that defines this injection point. If the member exists on a 9245 parameterized type, the result will include more type information than the member's {@link 9246 Member#getDeclaringClass() raw declaring class}. 9247 9248 @since 3.0]]> 9249 </doc> 9250 </method> 9251 <method name="equals" return="boolean" 9252 abstract="false" native="false" synchronized="false" 9253 static="false" final="false" visibility="public" 9254 deprecated="not deprecated"> 9255 <param name="o" type="java.lang.Object"/> 9256 </method> 9257 <method name="hashCode" return="int" 9258 abstract="false" native="false" synchronized="false" 9259 static="false" final="false" visibility="public" 9260 deprecated="not deprecated"> 9261 </method> 9262 <method name="toString" return="java.lang.String" 9263 abstract="false" native="false" synchronized="false" 9264 static="false" final="false" visibility="public" 9265 deprecated="not deprecated"> 9266 </method> 9267 <method name="forConstructor" return="com.google.inject.spi.InjectionPoint" 9268 abstract="false" native="false" synchronized="false" 9269 static="true" final="false" visibility="public" 9270 deprecated="not deprecated"> 9271 <param name="constructor" type="java.lang.reflect.Constructor<T>"/> 9272 <doc> 9273 <![CDATA[Returns a new injection point for the specified constructor. If the declaring type of {@code 9274 constructor} is parameterized (such as {@code List<T>}), prefer the overload that includes a 9275 type literal. 9276 9277 @param constructor any single constructor present on {@code type}. 9278 9279 @since 3.0]]> 9280 </doc> 9281 </method> 9282 <method name="forConstructor" return="com.google.inject.spi.InjectionPoint" 9283 abstract="false" native="false" synchronized="false" 9284 static="true" final="false" visibility="public" 9285 deprecated="not deprecated"> 9286 <param name="constructor" type="java.lang.reflect.Constructor<T>"/> 9287 <param name="type" type="com.google.inject.TypeLiteral<? extends T>"/> 9288 <doc> 9289 <![CDATA[Returns a new injection point for the specified constructor of {@code type}. 9290 9291 @param constructor any single constructor present on {@code type}. 9292 @param type the concrete type that defines {@code constructor}. 9293 9294 @since 3.0]]> 9295 </doc> 9296 </method> 9297 <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint" 9298 abstract="false" native="false" synchronized="false" 9299 static="true" final="false" visibility="public" 9300 deprecated="not deprecated"> 9301 <param name="type" type="com.google.inject.TypeLiteral<?>"/> 9302 <doc> 9303 <![CDATA[Returns a new injection point for the injectable constructor of {@code type}. 9304 9305 @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject}, 9306 or a no-arguments constructor that is not private. 9307 @throws ConfigurationException if there is no injectable constructor, more than one injectable 9308 constructor, or if parameters of the injectable constructor are malformed, such as a 9309 parameter with multiple binding annotations.]]> 9310 </doc> 9311 </method> 9312 <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint" 9313 abstract="false" native="false" synchronized="false" 9314 static="true" final="false" visibility="public" 9315 deprecated="not deprecated"> 9316 <param name="type" type="java.lang.Class<?>"/> 9317 <doc> 9318 <![CDATA[Returns a new injection point for the injectable constructor of {@code type}. 9319 9320 @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject}, 9321 or a no-arguments constructor that is not private. 9322 @throws ConfigurationException if there is no injectable constructor, more than one injectable 9323 constructor, or if parameters of the injectable constructor are malformed, such as a 9324 parameter with multiple binding annotations.]]> 9325 </doc> 9326 </method> 9327 <method name="forMethod" return="com.google.inject.spi.InjectionPoint" 9328 abstract="false" native="false" synchronized="false" 9329 static="true" final="false" visibility="public" 9330 deprecated="not deprecated"> 9331 <param name="method" type="java.lang.reflect.Method"/> 9332 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 9333 <doc> 9334 <![CDATA[Returns a new injection point for the specified method of {@code type}. 9335 This is useful for extensions that need to build dependency graphs from 9336 arbitrary methods. 9337 9338 @param method any single method present on {@code type}. 9339 @param type the concrete type that defines {@code method}. 9340 9341 @since 4.0]]> 9342 </doc> 9343 </method> 9344 <method name="forStaticMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9345 abstract="false" native="false" synchronized="false" 9346 static="true" final="false" visibility="public" 9347 deprecated="not deprecated"> 9348 <param name="type" type="com.google.inject.TypeLiteral<?>"/> 9349 <doc> 9350 <![CDATA[Returns all static method and field injection points on {@code type}. 9351 9352 @return a possibly empty set of injection points. The set has a specified iteration order. All 9353 fields are returned and then all methods. Within the fields, supertype fields are returned 9354 before subtype fields. Similarly, supertype methods are returned before subtype methods. 9355 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 9356 a field with multiple binding annotations. The exception's {@link 9357 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 9358 of the valid injection points.]]> 9359 </doc> 9360 </method> 9361 <method name="forStaticMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9362 abstract="false" native="false" synchronized="false" 9363 static="true" final="false" visibility="public" 9364 deprecated="not deprecated"> 9365 <param name="type" type="java.lang.Class<?>"/> 9366 <doc> 9367 <![CDATA[Returns all static method and field injection points on {@code type}. 9368 9369 @return a possibly empty set of injection points. The set has a specified iteration order. All 9370 fields are returned and then all methods. Within the fields, supertype fields are returned 9371 before subtype fields. Similarly, supertype methods are returned before subtype methods. 9372 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 9373 a field with multiple binding annotations. The exception's {@link 9374 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 9375 of the valid injection points.]]> 9376 </doc> 9377 </method> 9378 <method name="forInstanceMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9379 abstract="false" native="false" synchronized="false" 9380 static="true" final="false" visibility="public" 9381 deprecated="not deprecated"> 9382 <param name="type" type="com.google.inject.TypeLiteral<?>"/> 9383 <doc> 9384 <![CDATA[Returns all instance method and field injection points on {@code type}. 9385 9386 @return a possibly empty set of injection points. The set has a specified iteration order. All 9387 fields are returned and then all methods. Within the fields, supertype fields are returned 9388 before subtype fields. Similarly, supertype methods are returned before subtype methods. 9389 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 9390 a field with multiple binding annotations. The exception's {@link 9391 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 9392 of the valid injection points.]]> 9393 </doc> 9394 </method> 9395 <method name="forInstanceMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9396 abstract="false" native="false" synchronized="false" 9397 static="true" final="false" visibility="public" 9398 deprecated="not deprecated"> 9399 <param name="type" type="java.lang.Class<?>"/> 9400 <doc> 9401 <![CDATA[Returns all instance method and field injection points on {@code type}. 9402 9403 @return a possibly empty set of injection points. The set has a specified iteration order. All 9404 fields are returned and then all methods. Within the fields, supertype fields are returned 9405 before subtype fields. Similarly, supertype methods are returned before subtype methods. 9406 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 9407 a field with multiple binding annotations. The exception's {@link 9408 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 9409 of the valid injection points.]]> 9410 </doc> 9411 </method> 9412 <doc> 9413 <![CDATA[A constructor, field or method that can receive injections. Typically this is a member with the 9414 {@literal @}{@link Inject} annotation. For non-private, no argument constructors, the member may 9415 omit the annotation. 9416 9417 @author crazybob@google.com (Bob Lee) 9418 @since 2.0]]> 9419 </doc> 9420 </class> 9421 <!-- end class com.google.inject.spi.InjectionPoint --> 9422 <!-- start class com.google.inject.spi.InjectionRequest --> 9423 <class name="InjectionRequest" extends="java.lang.Object" 9424 abstract="false" 9425 static="false" final="true" visibility="public" 9426 deprecated="not deprecated"> 9427 <implements name="com.google.inject.spi.Element"/> 9428 <constructor name="InjectionRequest" type="java.lang.Object, com.google.inject.TypeLiteral<T>, T" 9429 static="false" final="false" visibility="public" 9430 deprecated="not deprecated"> 9431 </constructor> 9432 <method name="getSource" return="java.lang.Object" 9433 abstract="false" native="false" synchronized="false" 9434 static="false" final="false" visibility="public" 9435 deprecated="not deprecated"> 9436 </method> 9437 <method name="getInstance" return="T" 9438 abstract="false" native="false" synchronized="false" 9439 static="false" final="false" visibility="public" 9440 deprecated="not deprecated"> 9441 </method> 9442 <method name="getType" return="com.google.inject.TypeLiteral<T>" 9443 abstract="false" native="false" synchronized="false" 9444 static="false" final="false" visibility="public" 9445 deprecated="not deprecated"> 9446 </method> 9447 <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9448 abstract="false" native="false" synchronized="false" 9449 static="false" final="false" visibility="public" 9450 deprecated="not deprecated"> 9451 <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/> 9452 <doc> 9453 <![CDATA[Returns the instance methods and fields of {@code instance} that will be injected to fulfill 9454 this request. 9455 9456 @return a possibly empty set of injection points. The set has a specified iteration order. All 9457 fields are returned and then all methods. Within the fields, supertype fields are returned 9458 before subtype fields. Similarly, supertype methods are returned before subtype methods. 9459 @throws ConfigurationException if there is a malformed injection point on the class of {@code 9460 instance}, such as a field with multiple binding annotations. The exception's {@link 9461 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 9462 of the valid injection points.]]> 9463 </doc> 9464 </method> 9465 <method name="acceptVisitor" return="R" 9466 abstract="false" native="false" synchronized="false" 9467 static="false" final="false" visibility="public" 9468 deprecated="not deprecated"> 9469 <param name="visitor" type="com.google.inject.spi.ElementVisitor<R>"/> 9470 </method> 9471 <method name="applyTo" 9472 abstract="false" native="false" synchronized="false" 9473 static="false" final="false" visibility="public" 9474 deprecated="not deprecated"> 9475 <param name="binder" type="com.google.inject.Binder"/> 9476 </method> 9477 <doc> 9478 <![CDATA[A request to inject the instance fields and methods of an instance. Requests are created 9479 explicitly in a module using {@link com.google.inject.Binder#requestInjection(Object) 9480 requestInjection()} statements: 9481 <pre> 9482 requestInjection(serviceInstance);</pre> 9483 9484 @author mikeward@google.com (Mike Ward) 9485 @since 2.0]]> 9486 </doc> 9487 </class> 9488 <!-- end class com.google.inject.spi.InjectionRequest --> 9489 <!-- start interface com.google.inject.spi.InstanceBinding --> 9490 <interface name="InstanceBinding" abstract="true" 9491 static="false" final="false" visibility="public" 9492 deprecated="not deprecated"> 9493 <implements name="com.google.inject.Binding<T>"/> 9494 <implements name="com.google.inject.spi.HasDependencies"/> 9495 <method name="getInstance" return="T" 9496 abstract="true" native="false" synchronized="false" 9497 static="false" final="false" visibility="public" 9498 deprecated="not deprecated"> 9499 <doc> 9500 <![CDATA[Returns the user-supplied instance.]]> 9501 </doc> 9502 </method> 9503 <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9504 abstract="true" native="false" synchronized="false" 9505 static="false" final="false" visibility="public" 9506 deprecated="not deprecated"> 9507 <doc> 9508 <![CDATA[Returns the field and method injection points of the instance, injected at injector-creation 9509 time only. 9510 9511 @return a possibly empty set]]> 9512 </doc> 9513 </method> 9514 <doc> 9515 <![CDATA[A binding to a single instance. The same instance is returned for every injection. 9516 9517 @author jessewilson@google.com (Jesse Wilson) 9518 @since 2.0]]> 9519 </doc> 9520 </interface> 9521 <!-- end interface com.google.inject.spi.InstanceBinding --> 9522 <!-- start class com.google.inject.spi.InterceptorBinding --> 9523 <class name="InterceptorBinding" extends="java.lang.Object" 9524 abstract="false" 9525 static="false" final="true" visibility="public" 9526 deprecated="not deprecated"> 9527 <implements name="com.google.inject.spi.Element"/> 9528 <method name="getSource" return="java.lang.Object" 9529 abstract="false" native="false" synchronized="false" 9530 static="false" final="false" visibility="public" 9531 deprecated="not deprecated"> 9532 </method> 9533 <method name="getClassMatcher" return="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>" 9534 abstract="false" native="false" synchronized="false" 9535 static="false" final="false" visibility="public" 9536 deprecated="not deprecated"> 9537 </method> 9538 <method name="getMethodMatcher" return="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>" 9539 abstract="false" native="false" synchronized="false" 9540 static="false" final="false" visibility="public" 9541 deprecated="not deprecated"> 9542 </method> 9543 <method name="getInterceptors" return="java.util.List<org.aopalliance.intercept.MethodInterceptor>" 9544 abstract="false" native="false" synchronized="false" 9545 static="false" final="false" visibility="public" 9546 deprecated="not deprecated"> 9547 </method> 9548 <method name="acceptVisitor" return="T" 9549 abstract="false" native="false" synchronized="false" 9550 static="false" final="false" visibility="public" 9551 deprecated="not deprecated"> 9552 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9553 </method> 9554 <method name="applyTo" 9555 abstract="false" native="false" synchronized="false" 9556 static="false" final="false" visibility="public" 9557 deprecated="not deprecated"> 9558 <param name="binder" type="com.google.inject.Binder"/> 9559 </method> 9560 <doc> 9561 <![CDATA[Registration of interceptors for matching methods of matching classes. Instances are created 9562 explicitly in a module using {@link com.google.inject.Binder#bindInterceptor( 9563 Matcher, Matcher, MethodInterceptor[]) bindInterceptor()} statements: 9564 <pre> 9565 bindInterceptor(Matchers.subclassesOf(MyAction.class), 9566 Matchers.annotatedWith(Transactional.class), 9567 new MyTransactionInterceptor());</pre> 9568 9569 or from an injectable type listener using {@link TypeEncounter#bindInterceptor(Matcher, 9570 org.aopalliance.intercept.MethodInterceptor[]) TypeEncounter.bindInterceptor()}. 9571 9572 @author jessewilson@google.com (Jesse Wilson) 9573 @since 2.0]]> 9574 </doc> 9575 </class> 9576 <!-- end class com.google.inject.spi.InterceptorBinding --> 9577 <!-- start interface com.google.inject.spi.LinkedKeyBinding --> 9578 <interface name="LinkedKeyBinding" abstract="true" 9579 static="false" final="false" visibility="public" 9580 deprecated="not deprecated"> 9581 <implements name="com.google.inject.Binding<T>"/> 9582 <method name="getLinkedKey" return="com.google.inject.Key<? extends T>" 9583 abstract="true" native="false" synchronized="false" 9584 static="false" final="false" visibility="public" 9585 deprecated="not deprecated"> 9586 <doc> 9587 <![CDATA[Returns the linked key used to resolve injections. That binding can be retrieved from an 9588 injector using {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]> 9589 </doc> 9590 </method> 9591 <doc> 9592 <![CDATA[A binding to a linked key. The other key's binding is used to resolve injections. 9593 9594 @author jessewilson@google.com (Jesse Wilson) 9595 @since 2.0]]> 9596 </doc> 9597 </interface> 9598 <!-- end interface com.google.inject.spi.LinkedKeyBinding --> 9599 <!-- start class com.google.inject.spi.MembersInjectorLookup --> 9600 <class name="MembersInjectorLookup" extends="java.lang.Object" 9601 abstract="false" 9602 static="false" final="true" visibility="public" 9603 deprecated="not deprecated"> 9604 <implements name="com.google.inject.spi.Element"/> 9605 <constructor name="MembersInjectorLookup" type="java.lang.Object, com.google.inject.TypeLiteral<T>" 9606 static="false" final="false" visibility="public" 9607 deprecated="not deprecated"> 9608 </constructor> 9609 <method name="getSource" return="java.lang.Object" 9610 abstract="false" native="false" synchronized="false" 9611 static="false" final="false" visibility="public" 9612 deprecated="not deprecated"> 9613 </method> 9614 <method name="getType" return="com.google.inject.TypeLiteral<T>" 9615 abstract="false" native="false" synchronized="false" 9616 static="false" final="false" visibility="public" 9617 deprecated="not deprecated"> 9618 <doc> 9619 <![CDATA[Gets the type containing the members to be injected.]]> 9620 </doc> 9621 </method> 9622 <method name="acceptVisitor" return="T" 9623 abstract="false" native="false" synchronized="false" 9624 static="false" final="false" visibility="public" 9625 deprecated="not deprecated"> 9626 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9627 </method> 9628 <method name="initializeDelegate" 9629 abstract="false" native="false" synchronized="false" 9630 static="false" final="false" visibility="public" 9631 deprecated="not deprecated"> 9632 <param name="delegate" type="com.google.inject.MembersInjector<T>"/> 9633 <doc> 9634 <![CDATA[Sets the actual members injector. 9635 9636 @throws IllegalStateException if the delegate is already set]]> 9637 </doc> 9638 </method> 9639 <method name="applyTo" 9640 abstract="false" native="false" synchronized="false" 9641 static="false" final="false" visibility="public" 9642 deprecated="not deprecated"> 9643 <param name="binder" type="com.google.inject.Binder"/> 9644 </method> 9645 <method name="getDelegate" return="com.google.inject.MembersInjector<T>" 9646 abstract="false" native="false" synchronized="false" 9647 static="false" final="false" visibility="public" 9648 deprecated="not deprecated"> 9649 <doc> 9650 <![CDATA[Returns the delegate members injector, or {@code null} if it has not yet been initialized. 9651 The delegate will be initialized when this element is processed, or otherwise used to create 9652 an injector.]]> 9653 </doc> 9654 </method> 9655 <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 9656 abstract="false" native="false" synchronized="false" 9657 static="false" final="false" visibility="public" 9658 deprecated="not deprecated"> 9659 <doc> 9660 <![CDATA[Returns the looked up members injector. The result is not valid until this lookup has been 9661 initialized, which usually happens when the injector is created. The members injector will 9662 throw an {@code IllegalStateException} if you try to use it beforehand.]]> 9663 </doc> 9664 </method> 9665 <doc> 9666 <![CDATA[A lookup of the members injector for a type. Lookups are created explicitly in a module using 9667 {@link com.google.inject.Binder#getMembersInjector(Class) getMembersInjector()} statements: 9668 <pre> 9669 MembersInjector<PaymentService> membersInjector 9670 = getMembersInjector(PaymentService.class);</pre> 9671 9672 @author crazybob@google.com (Bob Lee) 9673 @since 2.0]]> 9674 </doc> 9675 </class> 9676 <!-- end class com.google.inject.spi.MembersInjectorLookup --> 9677 <!-- start class com.google.inject.spi.Message --> 9678 <class name="Message" extends="java.lang.Object" 9679 abstract="false" 9680 static="false" final="true" visibility="public" 9681 deprecated="not deprecated"> 9682 <implements name="java.io.Serializable"/> 9683 <implements name="com.google.inject.spi.Element"/> 9684 <constructor name="Message" type="java.util.List<java.lang.Object>, java.lang.String, java.lang.Throwable" 9685 static="false" final="false" visibility="public" 9686 deprecated="not deprecated"> 9687 <doc> 9688 <![CDATA[@since 2.0]]> 9689 </doc> 9690 </constructor> 9691 <constructor name="Message" type="java.lang.String, java.lang.Throwable" 9692 static="false" final="false" visibility="public" 9693 deprecated="not deprecated"> 9694 <doc> 9695 <![CDATA[@since 4.0]]> 9696 </doc> 9697 </constructor> 9698 <constructor name="Message" type="java.lang.Object, java.lang.String" 9699 static="false" final="false" visibility="public" 9700 deprecated="not deprecated"> 9701 </constructor> 9702 <constructor name="Message" type="java.lang.String" 9703 static="false" final="false" visibility="public" 9704 deprecated="not deprecated"> 9705 </constructor> 9706 <method name="getSource" return="java.lang.String" 9707 abstract="false" native="false" synchronized="false" 9708 static="false" final="false" visibility="public" 9709 deprecated="not deprecated"> 9710 </method> 9711 <method name="getSources" return="java.util.List<java.lang.Object>" 9712 abstract="false" native="false" synchronized="false" 9713 static="false" final="false" visibility="public" 9714 deprecated="not deprecated"> 9715 <doc> 9716 <![CDATA[@since 2.0]]> 9717 </doc> 9718 </method> 9719 <method name="getMessage" return="java.lang.String" 9720 abstract="false" native="false" synchronized="false" 9721 static="false" final="false" visibility="public" 9722 deprecated="not deprecated"> 9723 <doc> 9724 <![CDATA[Gets the error message text.]]> 9725 </doc> 9726 </method> 9727 <method name="acceptVisitor" return="T" 9728 abstract="false" native="false" synchronized="false" 9729 static="false" final="false" visibility="public" 9730 deprecated="not deprecated"> 9731 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9732 <doc> 9733 <![CDATA[@since 2.0]]> 9734 </doc> 9735 </method> 9736 <method name="getCause" return="java.lang.Throwable" 9737 abstract="false" native="false" synchronized="false" 9738 static="false" final="false" visibility="public" 9739 deprecated="not deprecated"> 9740 <doc> 9741 <![CDATA[Returns the throwable that caused this message, or {@code null} if this 9742 message was not caused by a throwable. 9743 9744 @since 2.0]]> 9745 </doc> 9746 </method> 9747 <method name="toString" return="java.lang.String" 9748 abstract="false" native="false" synchronized="false" 9749 static="false" final="false" visibility="public" 9750 deprecated="not deprecated"> 9751 </method> 9752 <method name="hashCode" return="int" 9753 abstract="false" native="false" synchronized="false" 9754 static="false" final="false" visibility="public" 9755 deprecated="not deprecated"> 9756 </method> 9757 <method name="equals" return="boolean" 9758 abstract="false" native="false" synchronized="false" 9759 static="false" final="false" visibility="public" 9760 deprecated="not deprecated"> 9761 <param name="o" type="java.lang.Object"/> 9762 </method> 9763 <method name="applyTo" 9764 abstract="false" native="false" synchronized="false" 9765 static="false" final="false" visibility="public" 9766 deprecated="not deprecated"> 9767 <param name="binder" type="com.google.inject.Binder"/> 9768 <doc> 9769 <![CDATA[@since 2.0]]> 9770 </doc> 9771 </method> 9772 <doc> 9773 <![CDATA[An error message and the context in which it occured. Messages are usually created internally by 9774 Guice and its extensions. Messages can be created explicitly in a module using {@link 9775 com.google.inject.Binder#addError(Throwable) addError()} statements: 9776 <pre> 9777 try { 9778 bindPropertiesFromFile(); 9779 } catch (IOException e) { 9780 addError(e); 9781 }</pre> 9782 9783 @author crazybob@google.com (Bob Lee)]]> 9784 </doc> 9785 </class> 9786 <!-- end class com.google.inject.spi.Message --> 9787 <!-- start class com.google.inject.spi.ModuleAnnotatedMethodScanner --> 9788 <class name="ModuleAnnotatedMethodScanner" extends="java.lang.Object" 9789 abstract="true" 9790 static="false" final="false" visibility="public" 9791 deprecated="not deprecated"> 9792 <constructor name="ModuleAnnotatedMethodScanner" 9793 static="false" final="false" visibility="public" 9794 deprecated="not deprecated"> 9795 </constructor> 9796 <method name="annotationClasses" return="java.util.Set<? extends java.lang.Class<? extends java.lang.annotation.Annotation>>" 9797 abstract="true" native="false" synchronized="false" 9798 static="false" final="false" visibility="public" 9799 deprecated="not deprecated"> 9800 <doc> 9801 <![CDATA[Returns the annotations this should scan for. Every method in the module that has one of these 9802 annotations will create a Provider binding, with the return value of the binding being what's 9803 provided and the parameters of the method being dependencies of the provider.]]> 9804 </doc> 9805 </method> 9806 <method name="prepareMethod" return="com.google.inject.Key<T>" 9807 abstract="true" native="false" synchronized="false" 9808 static="false" final="false" visibility="public" 9809 deprecated="not deprecated"> 9810 <param name="binder" type="com.google.inject.Binder"/> 9811 <param name="annotation" type="java.lang.annotation.Annotation"/> 9812 <param name="key" type="com.google.inject.Key<T>"/> 9813 <param name="injectionPoint" type="com.google.inject.spi.InjectionPoint"/> 9814 <doc> 9815 <![CDATA[Prepares a method for binding. This {@code key} parameter is the key discovered from looking at 9816 the binding annotation and return value of the method. Implementations can modify the key to 9817 instead bind to another key. For example, Multibinder may want to change 9818 {@code @SetProvides String provideFoo()} to bind into a unique Key within the multibinder 9819 instead of binding {@code String}. 9820 9821 <p>The injection point and annotation are provided in case the implementation wants to set the 9822 key based on the property of the annotation or if any additional preparation is needed for any 9823 of the dependencies. The annotation is guaranteed to be an instance of one the classes returned 9824 by {@link #annotationClasses}.]]> 9825 </doc> 9826 </method> 9827 <doc> 9828 <![CDATA[Allows extensions to scan modules for annotated methods and bind those methods 9829 as providers, similar to {@code @Provides} methods. 9830 9831 @since 4.0]]> 9832 </doc> 9833 </class> 9834 <!-- end class com.google.inject.spi.ModuleAnnotatedMethodScanner --> 9835 <!-- start class com.google.inject.spi.ModuleAnnotatedMethodScannerBinding --> 9836 <class name="ModuleAnnotatedMethodScannerBinding" extends="java.lang.Object" 9837 abstract="false" 9838 static="false" final="true" visibility="public" 9839 deprecated="not deprecated"> 9840 <implements name="com.google.inject.spi.Element"/> 9841 <constructor name="ModuleAnnotatedMethodScannerBinding" type="java.lang.Object, com.google.inject.spi.ModuleAnnotatedMethodScanner" 9842 static="false" final="false" visibility="public" 9843 deprecated="not deprecated"> 9844 </constructor> 9845 <method name="getSource" return="java.lang.Object" 9846 abstract="false" native="false" synchronized="false" 9847 static="false" final="false" visibility="public" 9848 deprecated="not deprecated"> 9849 </method> 9850 <method name="getScanner" return="com.google.inject.spi.ModuleAnnotatedMethodScanner" 9851 abstract="false" native="false" synchronized="false" 9852 static="false" final="false" visibility="public" 9853 deprecated="not deprecated"> 9854 </method> 9855 <method name="acceptVisitor" return="T" 9856 abstract="false" native="false" synchronized="false" 9857 static="false" final="false" visibility="public" 9858 deprecated="not deprecated"> 9859 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9860 </method> 9861 <method name="applyTo" 9862 abstract="false" native="false" synchronized="false" 9863 static="false" final="false" visibility="public" 9864 deprecated="not deprecated"> 9865 <param name="binder" type="com.google.inject.Binder"/> 9866 </method> 9867 <method name="toString" return="java.lang.String" 9868 abstract="false" native="false" synchronized="false" 9869 static="false" final="false" visibility="public" 9870 deprecated="not deprecated"> 9871 </method> 9872 <doc> 9873 <![CDATA[Represents a call to {@link Binder#scanModulesForAnnotatedMethods} in a module. 9874 9875 @author sameb@google.com (Sam Berlin) 9876 @since 4.0]]> 9877 </doc> 9878 </class> 9879 <!-- end class com.google.inject.spi.ModuleAnnotatedMethodScannerBinding --> 9880 <!-- start interface com.google.inject.spi.PrivateElements --> 9881 <interface name="PrivateElements" abstract="true" 9882 static="false" final="false" visibility="public" 9883 deprecated="not deprecated"> 9884 <implements name="com.google.inject.spi.Element"/> 9885 <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 9886 abstract="true" native="false" synchronized="false" 9887 static="false" final="false" visibility="public" 9888 deprecated="not deprecated"> 9889 <doc> 9890 <![CDATA[Returns the configuration information in this private environment.]]> 9891 </doc> 9892 </method> 9893 <method name="getInjector" return="com.google.inject.Injector" 9894 abstract="true" native="false" synchronized="false" 9895 static="false" final="false" visibility="public" 9896 deprecated="not deprecated"> 9897 <doc> 9898 <![CDATA[Returns the child injector that hosts these private elements, or null if the elements haven't 9899 been used to create an injector.]]> 9900 </doc> 9901 </method> 9902 <method name="getExposedKeys" return="java.util.Set<com.google.inject.Key<?>>" 9903 abstract="true" native="false" synchronized="false" 9904 static="false" final="false" visibility="public" 9905 deprecated="not deprecated"> 9906 <doc> 9907 <![CDATA[Returns the unique exposed keys for these private elements.]]> 9908 </doc> 9909 </method> 9910 <method name="getExposedSource" return="java.lang.Object" 9911 abstract="true" native="false" synchronized="false" 9912 static="false" final="false" visibility="public" 9913 deprecated="not deprecated"> 9914 <param name="key" type="com.google.inject.Key<?>"/> 9915 <doc> 9916 <![CDATA[Returns an arbitrary object containing information about the "place" where this key was 9917 exposed. Used by Guice in the production of descriptive error messages. 9918 9919 <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good 9920 example. Tools should simply call {@code toString()} on the source object if the type is 9921 unfamiliar. 9922 9923 @param key one of the keys exposed by this module.]]> 9924 </doc> 9925 </method> 9926 <doc> 9927 <![CDATA[A private collection of elements that are hidden from the enclosing injector or module by 9928 default. See {@link com.google.inject.PrivateModule PrivateModule} for details. 9929 9930 @author jessewilson@google.com (Jesse Wilson) 9931 @since 2.0]]> 9932 </doc> 9933 </interface> 9934 <!-- end interface com.google.inject.spi.PrivateElements --> 9935 <!-- start interface com.google.inject.spi.ProviderBinding --> 9936 <interface name="ProviderBinding" abstract="true" 9937 static="false" final="false" visibility="public" 9938 deprecated="not deprecated"> 9939 <implements name="com.google.inject.Binding<T>"/> 9940 <method name="getProvidedKey" return="com.google.inject.Key<?>" 9941 abstract="true" native="false" synchronized="false" 9942 static="false" final="false" visibility="public" 9943 deprecated="not deprecated"> 9944 <doc> 9945 <![CDATA[Returns the key whose binding is used to {@link Provider#get provide instances}. That binding 9946 can be retrieved from an injector using {@link com.google.inject.Injector#getBinding(Key) 9947 Injector.getBinding(providedKey)}]]> 9948 </doc> 9949 </method> 9950 <doc> 9951 <![CDATA[A binding to a {@link Provider} that delegates to the binding for the provided type. This binding 9952 is used whenever a {@code Provider<T>} is injected (as opposed to injecting {@code T} directly). 9953 9954 @author jessewilson@google.com (Jesse Wilson) 9955 @since 2.0]]> 9956 </doc> 9957 </interface> 9958 <!-- end interface com.google.inject.spi.ProviderBinding --> 9959 <!-- start interface com.google.inject.spi.ProviderInstanceBinding --> 9960 <interface name="ProviderInstanceBinding" abstract="true" 9961 static="false" final="false" visibility="public" 9962 deprecated="not deprecated"> 9963 <implements name="com.google.inject.Binding<T>"/> 9964 <implements name="com.google.inject.spi.HasDependencies"/> 9965 <method name="getProviderInstance" return="com.google.inject.Provider<? extends T>" 9966 abstract="true" native="false" synchronized="false" 9967 static="false" final="false" visibility="public" 9968 deprecated="Use {@link #getUserSuppliedProvider} instead."> 9969 <doc> 9970 <![CDATA[If the user supplied a JSR330 binding, then this will wrap that one. To always return the 9971 user-supplied provider, use {@link #getUserSuppliedProvider}. 9972 9973 @deprecated Use {@link #getUserSuppliedProvider} instead.]]> 9974 </doc> 9975 </method> 9976 <method name="getUserSuppliedProvider" return="javax.inject.Provider<? extends T>" 9977 abstract="true" native="false" synchronized="false" 9978 static="false" final="false" visibility="public" 9979 deprecated="not deprecated"> 9980 <doc> 9981 <![CDATA[Returns the user-supplied, unscoped provider. 9982 @since 4.0]]> 9983 </doc> 9984 </method> 9985 <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9986 abstract="true" native="false" synchronized="false" 9987 static="false" final="false" visibility="public" 9988 deprecated="not deprecated"> 9989 <doc> 9990 <![CDATA[Returns the field and method injection points of the provider, injected at injector-creation 9991 time only. 9992 9993 @return a possibly empty set]]> 9994 </doc> 9995 </method> 9996 <doc> 9997 <![CDATA[A binding to a provider instance. The provider's {@code get} method is invoked to resolve 9998 injections. 9999 10000 @author jessewilson@google.com (Jesse Wilson) 10001 @since 2.0]]> 10002 </doc> 10003 </interface> 10004 <!-- end interface com.google.inject.spi.ProviderInstanceBinding --> 10005 <!-- start interface com.google.inject.spi.ProviderKeyBinding --> 10006 <interface name="ProviderKeyBinding" abstract="true" 10007 static="false" final="false" visibility="public" 10008 deprecated="not deprecated"> 10009 <implements name="com.google.inject.Binding<T>"/> 10010 <method name="getProviderKey" return="com.google.inject.Key<? extends javax.inject.Provider<? extends T>>" 10011 abstract="true" native="false" synchronized="false" 10012 static="false" final="false" visibility="public" 10013 deprecated="not deprecated"> 10014 <doc> 10015 <![CDATA[Returns the key used to resolve the provider's binding. That binding can be retrieved from an 10016 injector using {@link com.google.inject.Injector#getBinding(Key) 10017 Injector.getBinding(providerKey)}]]> 10018 </doc> 10019 </method> 10020 <doc> 10021 <![CDATA[A binding to a provider key. To resolve injections, the provider key is first resolved, then that 10022 provider's {@code get} method is invoked. 10023 10024 @author jessewilson@google.com (Jesse Wilson) 10025 @since 2.0]]> 10026 </doc> 10027 </interface> 10028 <!-- end interface com.google.inject.spi.ProviderKeyBinding --> 10029 <!-- start class com.google.inject.spi.ProviderLookup --> 10030 <class name="ProviderLookup" extends="java.lang.Object" 10031 abstract="false" 10032 static="false" final="true" visibility="public" 10033 deprecated="not deprecated"> 10034 <implements name="com.google.inject.spi.Element"/> 10035 <constructor name="ProviderLookup" type="java.lang.Object, com.google.inject.Key<T>" 10036 static="false" final="false" visibility="public" 10037 deprecated="not deprecated"> 10038 </constructor> 10039 <constructor name="ProviderLookup" type="java.lang.Object, com.google.inject.spi.Dependency<T>" 10040 static="false" final="false" visibility="public" 10041 deprecated="not deprecated"> 10042 <doc> 10043 <![CDATA[@since 4.0]]> 10044 </doc> 10045 </constructor> 10046 <method name="getSource" return="java.lang.Object" 10047 abstract="false" native="false" synchronized="false" 10048 static="false" final="false" visibility="public" 10049 deprecated="not deprecated"> 10050 </method> 10051 <method name="getKey" return="com.google.inject.Key<T>" 10052 abstract="false" native="false" synchronized="false" 10053 static="false" final="false" visibility="public" 10054 deprecated="not deprecated"> 10055 </method> 10056 <method name="getDependency" return="com.google.inject.spi.Dependency<T>" 10057 abstract="false" native="false" synchronized="false" 10058 static="false" final="false" visibility="public" 10059 deprecated="not deprecated"> 10060 <doc> 10061 <![CDATA[@since 4.0]]> 10062 </doc> 10063 </method> 10064 <method name="acceptVisitor" return="T" 10065 abstract="false" native="false" synchronized="false" 10066 static="false" final="false" visibility="public" 10067 deprecated="not deprecated"> 10068 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10069 </method> 10070 <method name="initializeDelegate" 10071 abstract="false" native="false" synchronized="false" 10072 static="false" final="false" visibility="public" 10073 deprecated="not deprecated"> 10074 <param name="delegate" type="com.google.inject.Provider<T>"/> 10075 <doc> 10076 <![CDATA[Sets the actual provider. 10077 10078 @throws IllegalStateException if the delegate is already set]]> 10079 </doc> 10080 </method> 10081 <method name="applyTo" 10082 abstract="false" native="false" synchronized="false" 10083 static="false" final="false" visibility="public" 10084 deprecated="not deprecated"> 10085 <param name="binder" type="com.google.inject.Binder"/> 10086 </method> 10087 <method name="getDelegate" return="com.google.inject.Provider<T>" 10088 abstract="false" native="false" synchronized="false" 10089 static="false" final="false" visibility="public" 10090 deprecated="not deprecated"> 10091 <doc> 10092 <![CDATA[Returns the delegate provider, or {@code null} if it has not yet been initialized. The delegate 10093 will be initialized when this element is processed, or otherwise used to create an injector.]]> 10094 </doc> 10095 </method> 10096 <method name="getProvider" return="com.google.inject.Provider<T>" 10097 abstract="false" native="false" synchronized="false" 10098 static="false" final="false" visibility="public" 10099 deprecated="not deprecated"> 10100 <doc> 10101 <![CDATA[Returns the looked up provider. The result is not valid until this lookup has been initialized, 10102 which usually happens when the injector is created. The provider will throw an {@code 10103 IllegalStateException} if you try to use it beforehand.]]> 10104 </doc> 10105 </method> 10106 <doc> 10107 <![CDATA[A lookup of the provider for a type. Lookups are created explicitly in a module using 10108 {@link com.google.inject.Binder#getProvider(Class) getProvider()} statements: 10109 <pre> 10110 Provider<PaymentService> paymentServiceProvider 10111 = getProvider(PaymentService.class);</pre> 10112 10113 @author jessewilson@google.com (Jesse Wilson) 10114 @since 2.0]]> 10115 </doc> 10116 </class> 10117 <!-- end class com.google.inject.spi.ProviderLookup --> 10118 <!-- start interface com.google.inject.spi.ProviderWithDependencies --> 10119 <interface name="ProviderWithDependencies" abstract="true" 10120 static="false" final="false" visibility="public" 10121 deprecated="not deprecated"> 10122 <implements name="com.google.inject.Provider<T>"/> 10123 <implements name="com.google.inject.spi.HasDependencies"/> 10124 <doc> 10125 <![CDATA[A provider with dependencies on other injected types. If a {@link Provider} has dependencies that 10126 aren't specified in injections, this interface should be used to expose all dependencies. 10127 10128 @since 2.0]]> 10129 </doc> 10130 </interface> 10131 <!-- end interface com.google.inject.spi.ProviderWithDependencies --> 10132 <!-- start interface com.google.inject.spi.ProviderWithExtensionVisitor --> 10133 <interface name="ProviderWithExtensionVisitor" abstract="true" 10134 static="false" final="false" visibility="public" 10135 deprecated="not deprecated"> 10136 <implements name="com.google.inject.Provider<T>"/> 10137 <method name="acceptExtensionVisitor" return="V" 10138 abstract="true" native="false" synchronized="false" 10139 static="false" final="false" visibility="public" 10140 deprecated="not deprecated"> 10141 <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor<B, V>"/> 10142 <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding<? extends B>"/> 10143 <doc> 10144 <![CDATA[Instructs the extension determine if the visitor is an instance of a custom 10145 extension visitor, and if so, visit it using that method. If the visitor is 10146 not an instance of the custom extension visitor, this method <b>MUST</b> 10147 call visitor.visit(binding). 10148 <p> 10149 Due to issues with generics, the type parameters of this method do not 10150 relate to the type of the provider. In practice, the 'B' type will always 10151 be a supertype of 'T'.]]> 10152 </doc> 10153 </method> 10154 <doc> 10155 <![CDATA[A Provider that is part of an extension which supports a custom 10156 BindingTargetVisitor. 10157 <p> 10158 When an extension binds a provider instance, the provider can implement this 10159 interface to allow users using the 10160 {@link Binding#acceptTargetVisitor(BindingTargetVisitor)} method to visit a 10161 custom visitor designed for that extension. A typical implementation within 10162 the extension would look like 10163 <pre> 10164 <V, B> V acceptExtensionVisitor(BindingTargetVisitor<B, V> visitor, ProviderInstanceBinding<? extends B> binding) { 10165 if(visitor instanceof MyCustomExtensionVisitor) { 10166 return ((MyCustomExtensionVisitor<B, V>)visitor).visitCustomExtension(customProperties, binding); 10167 } else { 10168 return visitor.visit(binding); 10169 } 10170 }</pre> 10171 'MyCustomExtensionVisitor' in the example above would be an interface the 10172 extension provides that users can implement in order to be notified of custom 10173 extension information. These visitor interfaces must extend from 10174 BindingTargetVisitor. 10175 10176 @since 3.0 10177 @author sameb@google.com (Sam Berlin)]]> 10178 </doc> 10179 </interface> 10180 <!-- end interface com.google.inject.spi.ProviderWithExtensionVisitor --> 10181 <!-- start interface com.google.inject.spi.ProvidesMethodBinding --> 10182 <interface name="ProvidesMethodBinding" abstract="true" 10183 static="false" final="false" visibility="public" 10184 deprecated="not deprecated"> 10185 <implements name="com.google.inject.spi.HasDependencies"/> 10186 <method name="getMethod" return="java.lang.reflect.Method" 10187 abstract="true" native="false" synchronized="false" 10188 static="false" final="false" visibility="public" 10189 deprecated="not deprecated"> 10190 <doc> 10191 <![CDATA[Returns the method this binding uses.]]> 10192 </doc> 10193 </method> 10194 <method name="getEnclosingInstance" return="java.lang.Object" 10195 abstract="true" native="false" synchronized="false" 10196 static="false" final="false" visibility="public" 10197 deprecated="not deprecated"> 10198 <doc> 10199 <![CDATA[Returns the instance of the object the method is defined in.]]> 10200 </doc> 10201 </method> 10202 <method name="getKey" return="com.google.inject.Key<T>" 10203 abstract="true" native="false" synchronized="false" 10204 static="false" final="false" visibility="public" 10205 deprecated="not deprecated"> 10206 <doc> 10207 <![CDATA[Returns the key of the binding.]]> 10208 </doc> 10209 </method> 10210 <method name="getAnnotation" return="java.lang.annotation.Annotation" 10211 abstract="true" native="false" synchronized="false" 10212 static="false" final="false" visibility="public" 10213 deprecated="not deprecated"> 10214 <doc> 10215 <![CDATA[Returns the annotation that caused this binding to be created. For {@code @Provides} methods, 10216 this is an instance of the {@code @Provides} annotation. For bindings from 10217 {@link ModuleAnnotatedMethodScanner}, this is the annotation that caused the scanner to produce 10218 the binding.]]> 10219 </doc> 10220 </method> 10221 <doc> 10222 <![CDATA[An {@literal @}{@link Provides} binding or binding produced by a 10223 {@link ModuleAnnotatedMethodScanner}. 10224 10225 @since 4.0 10226 @author sameb@google.com (Sam Berlin)]]> 10227 </doc> 10228 </interface> 10229 <!-- end interface com.google.inject.spi.ProvidesMethodBinding --> 10230 <!-- start interface com.google.inject.spi.ProvidesMethodTargetVisitor --> 10231 <interface name="ProvidesMethodTargetVisitor" abstract="true" 10232 static="false" final="false" visibility="public" 10233 deprecated="not deprecated"> 10234 <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 10235 <method name="visit" return="V" 10236 abstract="true" native="false" synchronized="false" 10237 static="false" final="false" visibility="public" 10238 deprecated="not deprecated"> 10239 <param name="providesMethodBinding" type="com.google.inject.spi.ProvidesMethodBinding<? extends T>"/> 10240 <doc> 10241 <![CDATA[Visits an {@link ProvidesMethodBinding} created with an {@literal @}{@link Provides} method.]]> 10242 </doc> 10243 </method> 10244 <doc> 10245 <![CDATA[A visitor for the {@literal @}{@link Provides} bindings. 10246 <p> 10247 If your {@link BindingTargetVisitor} implements this interface, bindings created by using 10248 {@code @Provides} will be visited through this interface. 10249 10250 @since 4.0 10251 @author sameb@google.com (Sam Berlin)]]> 10252 </doc> 10253 </interface> 10254 <!-- end interface com.google.inject.spi.ProvidesMethodTargetVisitor --> 10255 <!-- start interface com.google.inject.spi.ProvisionListener --> 10256 <interface name="ProvisionListener" abstract="true" 10257 static="false" final="false" visibility="public" 10258 deprecated="not deprecated"> 10259 <method name="onProvision" 10260 abstract="true" native="false" synchronized="false" 10261 static="false" final="false" visibility="public" 10262 deprecated="not deprecated"> 10263 <param name="provision" type="com.google.inject.spi.ProvisionListener.ProvisionInvocation<T>"/> 10264 <doc> 10265 <![CDATA[Invoked by Guice when an object requires provisioning. Provisioning occurs 10266 when Guice locates and injects the dependencies for a binding. For types 10267 bound to a Provider, provisioning encapsulates the {@link Provider#get} 10268 method. For toInstance or constant bindings, provisioning encapsulates 10269 the injecting of {@literal @}{@code Inject}ed fields or methods. 10270 For other types, provisioning encapsulates the construction of the 10271 object. If a type is bound within a {@link Scope}, provisioning depends on 10272 the scope. Types bound in Singleton scope will only be provisioned once. 10273 Types bound in no scope will be provisioned every time they are injected. 10274 Other scopes define their own behavior for provisioning. 10275 <p> 10276 To perform the provision, call {@link ProvisionInvocation#provision()}. 10277 If you do not explicitly call provision, it will be automatically done after 10278 this method returns. It is an error to call provision more than once.]]> 10279 </doc> 10280 </method> 10281 <doc> 10282 <![CDATA[Listens for provisioning of objects. Useful for gathering timing information 10283 about provisioning, post-provision initialization, and more. 10284 10285 @author sameb@google.com (Sam Berlin) 10286 @since 4.0]]> 10287 </doc> 10288 </interface> 10289 <!-- end interface com.google.inject.spi.ProvisionListener --> 10290 <!-- start class com.google.inject.spi.ProvisionListener.ProvisionInvocation --> 10291 <class name="ProvisionListener.ProvisionInvocation" extends="java.lang.Object" 10292 abstract="true" 10293 static="true" final="false" visibility="public" 10294 deprecated="not deprecated"> 10295 <constructor name="ProvisionInvocation" 10296 static="false" final="false" visibility="public" 10297 deprecated="not deprecated"> 10298 </constructor> 10299 <method name="getBinding" return="com.google.inject.Binding<T>" 10300 abstract="true" native="false" synchronized="false" 10301 static="false" final="false" visibility="public" 10302 deprecated="not deprecated"> 10303 <doc> 10304 <![CDATA[Returns the Binding this is provisioning. 10305 <p> 10306 You must not call {@link Provider#get()} on the provider returned by 10307 {@link Binding#getProvider}, otherwise you will get confusing error messages.]]> 10308 </doc> 10309 </method> 10310 <method name="provision" return="T" 10311 abstract="true" native="false" synchronized="false" 10312 static="false" final="false" visibility="public" 10313 deprecated="not deprecated"> 10314 <doc> 10315 <![CDATA[Performs the provision, returning the object provisioned.]]> 10316 </doc> 10317 </method> 10318 <method name="getDependencyChain" return="java.util.List<com.google.inject.spi.DependencyAndSource>" 10319 abstract="true" native="false" synchronized="false" 10320 static="false" final="false" visibility="public" 10321 deprecated="not deprecated"> 10322 <doc> 10323 <![CDATA[Returns the dependency chain that led to this object being provisioned.]]> 10324 </doc> 10325 </method> 10326 <doc> 10327 <![CDATA[Encapsulates a single act of provisioning. 10328 10329 @since 4.0]]> 10330 </doc> 10331 </class> 10332 <!-- end class com.google.inject.spi.ProvisionListener.ProvisionInvocation --> 10333 <!-- start class com.google.inject.spi.ProvisionListenerBinding --> 10334 <class name="ProvisionListenerBinding" extends="java.lang.Object" 10335 abstract="false" 10336 static="false" final="true" visibility="public" 10337 deprecated="not deprecated"> 10338 <implements name="com.google.inject.spi.Element"/> 10339 <method name="getListeners" return="java.util.List<com.google.inject.spi.ProvisionListener>" 10340 abstract="false" native="false" synchronized="false" 10341 static="false" final="false" visibility="public" 10342 deprecated="not deprecated"> 10343 <doc> 10344 <![CDATA[Returns the registered listeners.]]> 10345 </doc> 10346 </method> 10347 <method name="getBindingMatcher" return="com.google.inject.matcher.Matcher<? super com.google.inject.Binding<?>>" 10348 abstract="false" native="false" synchronized="false" 10349 static="false" final="false" visibility="public" 10350 deprecated="not deprecated"> 10351 <doc> 10352 <![CDATA[Returns the binding matcher which chooses which bindings the listener should be notified of.]]> 10353 </doc> 10354 </method> 10355 <method name="getSource" return="java.lang.Object" 10356 abstract="false" native="false" synchronized="false" 10357 static="false" final="false" visibility="public" 10358 deprecated="not deprecated"> 10359 </method> 10360 <method name="acceptVisitor" return="R" 10361 abstract="false" native="false" synchronized="false" 10362 static="false" final="false" visibility="public" 10363 deprecated="not deprecated"> 10364 <param name="visitor" type="com.google.inject.spi.ElementVisitor<R>"/> 10365 </method> 10366 <method name="applyTo" 10367 abstract="false" native="false" synchronized="false" 10368 static="false" final="false" visibility="public" 10369 deprecated="not deprecated"> 10370 <param name="binder" type="com.google.inject.Binder"/> 10371 </method> 10372 <doc> 10373 <![CDATA[Binds keys (picked using a Matcher) to a provision listener. Listeners are created explicitly in 10374 a module using {@link Binder#bindListener(Matcher, ProvisionListener...)} statements: 10375 10376 @author sameb@google.com (Sam Berlin) 10377 @since 4.0]]> 10378 </doc> 10379 </class> 10380 <!-- end class com.google.inject.spi.ProvisionListenerBinding --> 10381 <!-- start class com.google.inject.spi.RequireAtInjectOnConstructorsOption --> 10382 <class name="RequireAtInjectOnConstructorsOption" extends="java.lang.Object" 10383 abstract="false" 10384 static="false" final="true" visibility="public" 10385 deprecated="not deprecated"> 10386 <implements name="com.google.inject.spi.Element"/> 10387 <method name="getSource" return="java.lang.Object" 10388 abstract="false" native="false" synchronized="false" 10389 static="false" final="false" visibility="public" 10390 deprecated="not deprecated"> 10391 </method> 10392 <method name="applyTo" 10393 abstract="false" native="false" synchronized="false" 10394 static="false" final="false" visibility="public" 10395 deprecated="not deprecated"> 10396 <param name="binder" type="com.google.inject.Binder"/> 10397 </method> 10398 <method name="acceptVisitor" return="T" 10399 abstract="false" native="false" synchronized="false" 10400 static="false" final="false" visibility="public" 10401 deprecated="not deprecated"> 10402 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10403 </method> 10404 <doc> 10405 <![CDATA[A request to require explicit {@literal @}{@link Inject} annotations on constructors. 10406 10407 @author sameb@google.com (Sam Berlin) 10408 @since 4.0]]> 10409 </doc> 10410 </class> 10411 <!-- end class com.google.inject.spi.RequireAtInjectOnConstructorsOption --> 10412 <!-- start class com.google.inject.spi.RequireExactBindingAnnotationsOption --> 10413 <class name="RequireExactBindingAnnotationsOption" extends="java.lang.Object" 10414 abstract="false" 10415 static="false" final="true" visibility="public" 10416 deprecated="not deprecated"> 10417 <implements name="com.google.inject.spi.Element"/> 10418 <method name="getSource" return="java.lang.Object" 10419 abstract="false" native="false" synchronized="false" 10420 static="false" final="false" visibility="public" 10421 deprecated="not deprecated"> 10422 </method> 10423 <method name="applyTo" 10424 abstract="false" native="false" synchronized="false" 10425 static="false" final="false" visibility="public" 10426 deprecated="not deprecated"> 10427 <param name="binder" type="com.google.inject.Binder"/> 10428 </method> 10429 <method name="acceptVisitor" return="T" 10430 abstract="false" native="false" synchronized="false" 10431 static="false" final="false" visibility="public" 10432 deprecated="not deprecated"> 10433 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10434 </method> 10435 <doc> 10436 <![CDATA[A request to require exact binding annotations. 10437 10438 @author sameb@google.com (Sam Berlin) 10439 @since 4.0]]> 10440 </doc> 10441 </class> 10442 <!-- end class com.google.inject.spi.RequireExactBindingAnnotationsOption --> 10443 <!-- start class com.google.inject.spi.RequireExplicitBindingsOption --> 10444 <class name="RequireExplicitBindingsOption" extends="java.lang.Object" 10445 abstract="false" 10446 static="false" final="true" visibility="public" 10447 deprecated="not deprecated"> 10448 <implements name="com.google.inject.spi.Element"/> 10449 <method name="getSource" return="java.lang.Object" 10450 abstract="false" native="false" synchronized="false" 10451 static="false" final="false" visibility="public" 10452 deprecated="not deprecated"> 10453 </method> 10454 <method name="applyTo" 10455 abstract="false" native="false" synchronized="false" 10456 static="false" final="false" visibility="public" 10457 deprecated="not deprecated"> 10458 <param name="binder" type="com.google.inject.Binder"/> 10459 </method> 10460 <method name="acceptVisitor" return="T" 10461 abstract="false" native="false" synchronized="false" 10462 static="false" final="false" visibility="public" 10463 deprecated="not deprecated"> 10464 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10465 </method> 10466 <doc> 10467 <![CDATA[A request to require explicit bindings. 10468 10469 @author sameb@google.com (Sam Berlin) 10470 @since 3.0]]> 10471 </doc> 10472 </class> 10473 <!-- end class com.google.inject.spi.RequireExplicitBindingsOption --> 10474 <!-- start class com.google.inject.spi.ScopeBinding --> 10475 <class name="ScopeBinding" extends="java.lang.Object" 10476 abstract="false" 10477 static="false" final="true" visibility="public" 10478 deprecated="not deprecated"> 10479 <implements name="com.google.inject.spi.Element"/> 10480 <method name="getSource" return="java.lang.Object" 10481 abstract="false" native="false" synchronized="false" 10482 static="false" final="false" visibility="public" 10483 deprecated="not deprecated"> 10484 </method> 10485 <method name="getAnnotationType" return="java.lang.Class<? extends java.lang.annotation.Annotation>" 10486 abstract="false" native="false" synchronized="false" 10487 static="false" final="false" visibility="public" 10488 deprecated="not deprecated"> 10489 </method> 10490 <method name="getScope" return="com.google.inject.Scope" 10491 abstract="false" native="false" synchronized="false" 10492 static="false" final="false" visibility="public" 10493 deprecated="not deprecated"> 10494 </method> 10495 <method name="acceptVisitor" return="T" 10496 abstract="false" native="false" synchronized="false" 10497 static="false" final="false" visibility="public" 10498 deprecated="not deprecated"> 10499 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10500 </method> 10501 <method name="applyTo" 10502 abstract="false" native="false" synchronized="false" 10503 static="false" final="false" visibility="public" 10504 deprecated="not deprecated"> 10505 <param name="binder" type="com.google.inject.Binder"/> 10506 </method> 10507 <doc> 10508 <![CDATA[Registration of a scope annotation with the scope that implements it. Instances are created 10509 explicitly in a module using {@link com.google.inject.Binder#bindScope(Class, Scope) bindScope()} 10510 statements: 10511 <pre> 10512 Scope recordScope = new RecordScope(); 10513 bindScope(RecordScoped.class, new RecordScope());</pre> 10514 10515 @author jessewilson@google.com (Jesse Wilson) 10516 @since 2.0]]> 10517 </doc> 10518 </class> 10519 <!-- end class com.google.inject.spi.ScopeBinding --> 10520 <!-- start class com.google.inject.spi.StaticInjectionRequest --> 10521 <class name="StaticInjectionRequest" extends="java.lang.Object" 10522 abstract="false" 10523 static="false" final="true" visibility="public" 10524 deprecated="not deprecated"> 10525 <implements name="com.google.inject.spi.Element"/> 10526 <method name="getSource" return="java.lang.Object" 10527 abstract="false" native="false" synchronized="false" 10528 static="false" final="false" visibility="public" 10529 deprecated="not deprecated"> 10530 </method> 10531 <method name="getType" return="java.lang.Class<?>" 10532 abstract="false" native="false" synchronized="false" 10533 static="false" final="false" visibility="public" 10534 deprecated="not deprecated"> 10535 </method> 10536 <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 10537 abstract="false" native="false" synchronized="false" 10538 static="false" final="false" visibility="public" 10539 deprecated="not deprecated"> 10540 <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/> 10541 <doc> 10542 <![CDATA[Returns the static methods and fields of {@code type} that will be injected to fulfill this 10543 request. 10544 10545 @return a possibly empty set of injection points. The set has a specified iteration order. All 10546 fields are returned and then all methods. Within the fields, supertype fields are returned 10547 before subtype fields. Similarly, supertype methods are returned before subtype methods. 10548 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 10549 a field with multiple binding annotations. The exception's {@link 10550 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 10551 of the valid injection points.]]> 10552 </doc> 10553 </method> 10554 <method name="applyTo" 10555 abstract="false" native="false" synchronized="false" 10556 static="false" final="false" visibility="public" 10557 deprecated="not deprecated"> 10558 <param name="binder" type="com.google.inject.Binder"/> 10559 </method> 10560 <method name="acceptVisitor" return="T" 10561 abstract="false" native="false" synchronized="false" 10562 static="false" final="false" visibility="public" 10563 deprecated="not deprecated"> 10564 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10565 </method> 10566 <doc> 10567 <![CDATA[A request to inject the static fields and methods of a type. Requests are created 10568 explicitly in a module using {@link com.google.inject.Binder#requestStaticInjection(Class[]) 10569 requestStaticInjection()} statements: 10570 <pre> 10571 requestStaticInjection(MyLegacyService.class);</pre> 10572 10573 @author jessewilson@google.com (Jesse Wilson) 10574 @since 2.0]]> 10575 </doc> 10576 </class> 10577 <!-- end class com.google.inject.spi.StaticInjectionRequest --> 10578 <!-- start class com.google.inject.spi.Toolable --> 10579 <class name="Toolable" abstract="true" 10580 static="false" final="false" visibility="public" 10581 deprecated="not deprecated"> 10582 <implements name="java.lang.annotation.Annotation"/> 10583 <doc> 10584 <![CDATA[Instructs an {@link Injector} running in {@link Stage#TOOL} that a method should be injected. 10585 This is typically useful for for extensions to Guice that perform additional validation in an 10586 injected method or field. This only applies to objects that are already constructed when 10587 bindings are created (ie., something bound using {@link 10588 com.google.inject.binder.LinkedBindingBuilder#toProvider toProvider}, {@link 10589 com.google.inject.binder.LinkedBindingBuilder#toInstance toInstance}, or {@link 10590 com.google.inject.Binder#requestInjection requestInjection}. 10591 10592 @author sberlin@gmail.com (Sam Berlin) 10593 @since 3.0]]> 10594 </doc> 10595 </class> 10596 <!-- end class com.google.inject.spi.Toolable --> 10597 <!-- start interface com.google.inject.spi.TypeConverter --> 10598 <interface name="TypeConverter" abstract="true" 10599 static="false" final="false" visibility="public" 10600 deprecated="not deprecated"> 10601 <method name="convert" return="java.lang.Object" 10602 abstract="true" native="false" synchronized="false" 10603 static="false" final="false" visibility="public" 10604 deprecated="not deprecated"> 10605 <param name="value" type="java.lang.String"/> 10606 <param name="toType" type="com.google.inject.TypeLiteral<?>"/> 10607 <doc> 10608 <![CDATA[Converts a string value. Throws an exception if a conversion error occurs.]]> 10609 </doc> 10610 </method> 10611 <doc> 10612 <![CDATA[Converts constant string values to a different type. 10613 10614 @author crazybob@google.com (Bob Lee) 10615 @since 2.0]]> 10616 </doc> 10617 </interface> 10618 <!-- end interface com.google.inject.spi.TypeConverter --> 10619 <!-- start class com.google.inject.spi.TypeConverterBinding --> 10620 <class name="TypeConverterBinding" extends="java.lang.Object" 10621 abstract="false" 10622 static="false" final="true" visibility="public" 10623 deprecated="not deprecated"> 10624 <implements name="com.google.inject.spi.Element"/> 10625 <constructor name="TypeConverterBinding" type="java.lang.Object, com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>, com.google.inject.spi.TypeConverter" 10626 static="false" final="false" visibility="public" 10627 deprecated="not deprecated"> 10628 <doc> 10629 <![CDATA[@since 3.0]]> 10630 </doc> 10631 </constructor> 10632 <method name="getSource" return="java.lang.Object" 10633 abstract="false" native="false" synchronized="false" 10634 static="false" final="false" visibility="public" 10635 deprecated="not deprecated"> 10636 </method> 10637 <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>" 10638 abstract="false" native="false" synchronized="false" 10639 static="false" final="false" visibility="public" 10640 deprecated="not deprecated"> 10641 </method> 10642 <method name="getTypeConverter" return="com.google.inject.spi.TypeConverter" 10643 abstract="false" native="false" synchronized="false" 10644 static="false" final="false" visibility="public" 10645 deprecated="not deprecated"> 10646 </method> 10647 <method name="acceptVisitor" return="T" 10648 abstract="false" native="false" synchronized="false" 10649 static="false" final="false" visibility="public" 10650 deprecated="not deprecated"> 10651 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10652 </method> 10653 <method name="applyTo" 10654 abstract="false" native="false" synchronized="false" 10655 static="false" final="false" visibility="public" 10656 deprecated="not deprecated"> 10657 <param name="binder" type="com.google.inject.Binder"/> 10658 </method> 10659 <method name="toString" return="java.lang.String" 10660 abstract="false" native="false" synchronized="false" 10661 static="false" final="false" visibility="public" 10662 deprecated="not deprecated"> 10663 </method> 10664 <doc> 10665 <![CDATA[Registration of type converters for matching target types. Instances are created 10666 explicitly in a module using {@link com.google.inject.Binder#convertToTypes(Matcher, 10667 TypeConverter) convertToTypes()} statements: 10668 <pre> 10669 convertToTypes(Matchers.only(TypeLiteral.get(DateTime.class)), new DateTimeConverter());</pre> 10670 10671 @author jessewilson@google.com (Jesse Wilson) 10672 @since 2.0]]> 10673 </doc> 10674 </class> 10675 <!-- end class com.google.inject.spi.TypeConverterBinding --> 10676 <!-- start interface com.google.inject.spi.TypeEncounter --> 10677 <interface name="TypeEncounter" abstract="true" 10678 static="false" final="false" visibility="public" 10679 deprecated="not deprecated"> 10680 <method name="addError" 10681 abstract="true" native="false" synchronized="false" 10682 static="false" final="false" visibility="public" 10683 deprecated="not deprecated"> 10684 <param name="message" type="java.lang.String"/> 10685 <param name="arguments" type="java.lang.Object[]"/> 10686 <doc> 10687 <![CDATA[Records an error message for type {@code I} which will be presented to the user at a later 10688 time. Unlike throwing an exception, this enable us to continue configuring the Injector and 10689 discover more errors. Uses {@link String#format(String, Object[])} to insert the arguments 10690 into the message.]]> 10691 </doc> 10692 </method> 10693 <method name="addError" 10694 abstract="true" native="false" synchronized="false" 10695 static="false" final="false" visibility="public" 10696 deprecated="not deprecated"> 10697 <param name="t" type="java.lang.Throwable"/> 10698 <doc> 10699 <![CDATA[Records an exception for type {@code I}, the full details of which will be logged, and the 10700 message of which will be presented to the user at a later time. If your type listener calls 10701 something that you worry may fail, you should catch the exception and pass it to this method.]]> 10702 </doc> 10703 </method> 10704 <method name="addError" 10705 abstract="true" native="false" synchronized="false" 10706 static="false" final="false" visibility="public" 10707 deprecated="not deprecated"> 10708 <param name="message" type="com.google.inject.spi.Message"/> 10709 <doc> 10710 <![CDATA[Records an error message to be presented to the user at a later time.]]> 10711 </doc> 10712 </method> 10713 <method name="getProvider" return="com.google.inject.Provider<T>" 10714 abstract="true" native="false" synchronized="false" 10715 static="false" final="false" visibility="public" 10716 deprecated="not deprecated"> 10717 <param name="key" type="com.google.inject.Key<T>"/> 10718 <doc> 10719 <![CDATA[Returns the provider used to obtain instances for the given injection key. The returned 10720 provider will not be valid until the injector has been created. The provider will throw an 10721 {@code IllegalStateException} if you try to use it beforehand.]]> 10722 </doc> 10723 </method> 10724 <method name="getProvider" return="com.google.inject.Provider<T>" 10725 abstract="true" native="false" synchronized="false" 10726 static="false" final="false" visibility="public" 10727 deprecated="not deprecated"> 10728 <param name="type" type="java.lang.Class<T>"/> 10729 <doc> 10730 <![CDATA[Returns the provider used to obtain instances for the given injection type. The returned 10731 provider will not be valid until the injector has been created. The provider will throw an 10732 {@code IllegalStateException} if you try to use it beforehand.]]> 10733 </doc> 10734 </method> 10735 <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 10736 abstract="true" native="false" synchronized="false" 10737 static="false" final="false" visibility="public" 10738 deprecated="not deprecated"> 10739 <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 10740 <doc> 10741 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 10742 of the given type {@code T}. The returned members injector will not be valid until the main 10743 injector has been created. The members injector will throw an {@code IllegalStateException} 10744 if you try to use it beforehand. 10745 10746 @param typeLiteral type to get members injector for]]> 10747 </doc> 10748 </method> 10749 <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 10750 abstract="true" native="false" synchronized="false" 10751 static="false" final="false" visibility="public" 10752 deprecated="not deprecated"> 10753 <param name="type" type="java.lang.Class<T>"/> 10754 <doc> 10755 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 10756 of the given type {@code T}. The returned members injector will not be valid until the main 10757 injector has been created. The members injector will throw an {@code IllegalStateException} 10758 if you try to use it beforehand. 10759 10760 @param type type to get members injector for]]> 10761 </doc> 10762 </method> 10763 <method name="register" 10764 abstract="true" native="false" synchronized="false" 10765 static="false" final="false" visibility="public" 10766 deprecated="not deprecated"> 10767 <param name="membersInjector" type="com.google.inject.MembersInjector<? super I>"/> 10768 <doc> 10769 <![CDATA[Registers a members injector for type {@code I}. Guice will use the members injector after its 10770 performed its own injections on an instance of {@code I}.]]> 10771 </doc> 10772 </method> 10773 <method name="register" 10774 abstract="true" native="false" synchronized="false" 10775 static="false" final="false" visibility="public" 10776 deprecated="not deprecated"> 10777 <param name="listener" type="com.google.inject.spi.InjectionListener<? super I>"/> 10778 <doc> 10779 <![CDATA[Registers an injection listener for type {@code I}. Guice will notify the listener after all 10780 injections have been performed on an instance of {@code I}.]]> 10781 </doc> 10782 </method> 10783 <method name="bindInterceptor" 10784 abstract="true" native="false" synchronized="false" 10785 static="false" final="false" visibility="public" 10786 deprecated="not deprecated"> 10787 <param name="methodMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>"/> 10788 <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/> 10789 <doc> 10790 <![CDATA[Binds method interceptor[s] to methods matched in type {@code I} and its supertypes. A 10791 method is eligible for interception if: 10792 10793 <ul> 10794 <li>Guice created the instance the method is on</li> 10795 <li>Neither the enclosing type nor the method is final</li> 10796 <li>And the method is package-private or more accessible</li> 10797 </ul> 10798 10799 @param methodMatcher matches methods the interceptor should apply to. For 10800 example: {@code annotatedWith(Transactional.class)}. 10801 @param interceptors to bind]]> 10802 </doc> 10803 </method> 10804 <doc> 10805 <![CDATA[Context of an injectable type encounter. Enables reporting errors, registering injection 10806 listeners and binding method interceptors for injectable type {@code I}. It is an error to use 10807 an encounter after the {@link TypeListener#hear(TypeLiteral, TypeEncounter) hear()} method has 10808 returned. 10809 10810 @param <I> the injectable type encountered 10811 @since 2.0]]> 10812 </doc> 10813 </interface> 10814 <!-- end interface com.google.inject.spi.TypeEncounter --> 10815 <!-- start interface com.google.inject.spi.TypeListener --> 10816 <interface name="TypeListener" abstract="true" 10817 static="false" final="false" visibility="public" 10818 deprecated="not deprecated"> 10819 <method name="hear" 10820 abstract="true" native="false" synchronized="false" 10821 static="false" final="false" visibility="public" 10822 deprecated="not deprecated"> 10823 <param name="type" type="com.google.inject.TypeLiteral<I>"/> 10824 <param name="encounter" type="com.google.inject.spi.TypeEncounter<I>"/> 10825 <doc> 10826 <![CDATA[Invoked when Guice encounters a new type eligible for constructor or members injection. 10827 Called during injector creation (or afterwards if Guice encounters a type at run time and 10828 creates a JIT binding). 10829 10830 @param type encountered by Guice 10831 @param encounter context of this encounter, enables reporting errors, registering injection 10832 listeners and binding method interceptors for {@code type}. 10833 10834 @param <I> the injectable type]]> 10835 </doc> 10836 </method> 10837 <doc> 10838 <![CDATA[Listens for Guice to encounter injectable types. If a given type has its constructor injected in 10839 one situation but only its methods and fields injected in another, Guice will notify this 10840 listener once. 10841 10842 <p>Useful for extra type checking, {@linkplain TypeEncounter#register(InjectionListener) 10843 registering injection listeners}, and {@linkplain TypeEncounter#bindInterceptor( 10844 com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[]) 10845 binding method interceptors}. 10846 10847 @since 2.0]]> 10848 </doc> 10849 </interface> 10850 <!-- end interface com.google.inject.spi.TypeListener --> 10851 <!-- start class com.google.inject.spi.TypeListenerBinding --> 10852 <class name="TypeListenerBinding" extends="java.lang.Object" 10853 abstract="false" 10854 static="false" final="true" visibility="public" 10855 deprecated="not deprecated"> 10856 <implements name="com.google.inject.spi.Element"/> 10857 <method name="getListener" return="com.google.inject.spi.TypeListener" 10858 abstract="false" native="false" synchronized="false" 10859 static="false" final="false" visibility="public" 10860 deprecated="not deprecated"> 10861 <doc> 10862 <![CDATA[Returns the registered listener.]]> 10863 </doc> 10864 </method> 10865 <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>" 10866 abstract="false" native="false" synchronized="false" 10867 static="false" final="false" visibility="public" 10868 deprecated="not deprecated"> 10869 <doc> 10870 <![CDATA[Returns the type matcher which chooses which types the listener should be notified of.]]> 10871 </doc> 10872 </method> 10873 <method name="getSource" return="java.lang.Object" 10874 abstract="false" native="false" synchronized="false" 10875 static="false" final="false" visibility="public" 10876 deprecated="not deprecated"> 10877 </method> 10878 <method name="acceptVisitor" return="T" 10879 abstract="false" native="false" synchronized="false" 10880 static="false" final="false" visibility="public" 10881 deprecated="not deprecated"> 10882 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10883 </method> 10884 <method name="applyTo" 10885 abstract="false" native="false" synchronized="false" 10886 static="false" final="false" visibility="public" 10887 deprecated="not deprecated"> 10888 <param name="binder" type="com.google.inject.Binder"/> 10889 </method> 10890 <doc> 10891 <![CDATA[Binds types (picked using a Matcher) to an type listener. Registrations are created explicitly in 10892 a module using {@link com.google.inject.Binder#bindListener(Matcher, TypeListener)} statements: 10893 10894 <pre> 10895 register(only(new TypeLiteral<PaymentService<CreditCard>>() {}), listener);</pre> 10896 10897 @author jessewilson@google.com (Jesse Wilson) 10898 @since 2.0]]> 10899 </doc> 10900 </class> 10901 <!-- end class com.google.inject.spi.TypeListenerBinding --> 10902 <!-- start interface com.google.inject.spi.UntargettedBinding --> 10903 <interface name="UntargettedBinding" abstract="true" 10904 static="false" final="false" visibility="public" 10905 deprecated="not deprecated"> 10906 <implements name="com.google.inject.Binding<T>"/> 10907 <doc> 10908 <![CDATA[An untargetted binding. This binding indicates that the injector should use its implicit binding 10909 strategies to resolve injections. 10910 10911 @author jessewilson@google.com (Jesse Wilson) 10912 @since 2.0]]> 10913 </doc> 10914 </interface> 10915 <!-- end interface com.google.inject.spi.UntargettedBinding --> 10916</package> 10917<package name="com.google.inject.spring"> 10918 <!-- start class com.google.inject.spring.SpringIntegration --> 10919 <class name="SpringIntegration" extends="java.lang.Object" 10920 abstract="false" 10921 static="false" final="false" visibility="public" 10922 deprecated="not deprecated"> 10923 <method name="fromSpring" return="com.google.inject.Provider<T>" 10924 abstract="false" native="false" synchronized="false" 10925 static="true" final="false" visibility="public" 10926 deprecated="not deprecated"> 10927 <param name="type" type="java.lang.Class<T>"/> 10928 <param name="name" type="java.lang.String"/> 10929 <doc> 10930 <![CDATA[Creates a provider which looks up objects from Spring using the given name. 10931 Expects a binding to {@link 10932 org.springframework.beans.factory.BeanFactory}. Example usage: 10933 10934 <pre> 10935 bind(DataSource.class) 10936 .toProvider(fromSpring(DataSource.class, "dataSource")); 10937 </pre>]]> 10938 </doc> 10939 </method> 10940 <method name="bindAll" 10941 abstract="false" native="false" synchronized="false" 10942 static="true" final="false" visibility="public" 10943 deprecated="not deprecated"> 10944 <param name="binder" type="com.google.inject.Binder"/> 10945 <param name="beanFactory" type="org.springframework.beans.factory.ListableBeanFactory"/> 10946 <doc> 10947 <![CDATA[Binds all Spring beans from the given factory by name. For a Spring bean 10948 named "foo", this method creates a binding to the bean's type and 10949 {@code @Named("foo")}. 10950 10951 @see com.google.inject.name.Named 10952 @see com.google.inject.name.Names#named(String)]]> 10953 </doc> 10954 </method> 10955 <doc> 10956 <![CDATA[Integrates Guice with Spring. 10957 10958 @author crazybob@google.com (Bob Lee)]]> 10959 </doc> 10960 </class> 10961 <!-- end class com.google.inject.spring.SpringIntegration --> 10962</package> 10963<package name="com.google.inject.struts2"> 10964 <!-- start class com.google.inject.struts2.GuiceObjectFactory --> 10965 <class name="GuiceObjectFactory" extends="com.opensymphony.xwork2.ObjectFactory" 10966 abstract="false" 10967 static="false" final="false" visibility="public" 10968 deprecated="Use {@link com.google.inject.struts2.Struts2Factory} instead."> 10969 <constructor name="GuiceObjectFactory" 10970 static="false" final="false" visibility="public" 10971 deprecated="not deprecated"> 10972 </constructor> 10973 <method name="isNoArgConstructorRequired" return="boolean" 10974 abstract="false" native="false" synchronized="false" 10975 static="false" final="false" visibility="public" 10976 deprecated="not deprecated"> 10977 </method> 10978 <method name="getClassInstance" return="java.lang.Class" 10979 abstract="false" native="false" synchronized="false" 10980 static="false" final="false" visibility="public" 10981 deprecated="not deprecated"> 10982 <param name="name" type="java.lang.String"/> 10983 <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/> 10984 </method> 10985 <method name="buildBean" return="java.lang.Object" 10986 abstract="false" native="false" synchronized="false" 10987 static="false" final="false" visibility="public" 10988 deprecated="not deprecated"> 10989 <param name="clazz" type="java.lang.Class"/> 10990 <param name="extraContext" type="java.util.Map"/> 10991 </method> 10992 <method name="buildInterceptor" return="com.opensymphony.xwork2.interceptor.Interceptor" 10993 abstract="false" native="false" synchronized="false" 10994 static="false" final="false" visibility="public" 10995 deprecated="not deprecated"> 10996 <param name="interceptorConfig" type="com.opensymphony.xwork2.config.entities.InterceptorConfig"/> 10997 <param name="interceptorRefParams" type="java.util.Map"/> 10998 <exception name="ConfigurationException" type="com.opensymphony.xwork2.config.ConfigurationException"/> 10999 </method> 11000 <doc> 11001 <![CDATA[@deprecated Use {@link com.google.inject.struts2.Struts2Factory} instead.]]> 11002 </doc> 11003 </class> 11004 <!-- end class com.google.inject.struts2.GuiceObjectFactory --> 11005 <!-- start class com.google.inject.struts2.Struts2Factory --> 11006 <class name="Struts2Factory" extends="com.opensymphony.xwork2.ObjectFactory" 11007 abstract="false" 11008 static="false" final="false" visibility="public" 11009 deprecated="not deprecated"> 11010 <constructor name="Struts2Factory" 11011 static="false" final="false" visibility="public" 11012 deprecated="not deprecated"> 11013 </constructor> 11014 <method name="isNoArgConstructorRequired" return="boolean" 11015 abstract="false" native="false" synchronized="false" 11016 static="false" final="false" visibility="public" 11017 deprecated="not deprecated"> 11018 </method> 11019 <method name="getClassInstance" return="java.lang.Class<?>" 11020 abstract="false" native="false" synchronized="false" 11021 static="false" final="false" visibility="public" 11022 deprecated="not deprecated"> 11023 <param name="name" type="java.lang.String"/> 11024 <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/> 11025 </method> 11026 <method name="buildBean" return="java.lang.Object" 11027 abstract="false" native="false" synchronized="false" 11028 static="false" final="false" visibility="public" 11029 deprecated="not deprecated"> 11030 <param name="clazz" type="java.lang.Class"/> 11031 <param name="extraContext" type="java.util.Map<java.lang.String, java.lang.Object>"/> 11032 </method> 11033 <method name="buildInterceptor" return="com.opensymphony.xwork2.interceptor.Interceptor" 11034 abstract="false" native="false" synchronized="false" 11035 static="false" final="false" visibility="public" 11036 deprecated="not deprecated"> 11037 <param name="interceptorConfig" type="com.opensymphony.xwork2.config.entities.InterceptorConfig"/> 11038 <param name="interceptorRefParams" type="java.util.Map"/> 11039 <exception name="ConfigurationException" type="com.opensymphony.xwork2.config.ConfigurationException"/> 11040 </method> 11041 <doc> 11042 <![CDATA[Cleanup up version from Bob's GuiceObjectFactory. Now works properly with 11043 GS2 and fixes several bugs. 11044 11045 @author dhanji@gmail.com 11046 @author benmccann.com]]> 11047 </doc> 11048 </class> 11049 <!-- end class com.google.inject.struts2.Struts2Factory --> 11050 <!-- start class com.google.inject.struts2.Struts2GuicePluginModule --> 11051 <class name="Struts2GuicePluginModule" extends="com.google.inject.AbstractModule" 11052 abstract="false" 11053 static="false" final="false" visibility="public" 11054 deprecated="not deprecated"> 11055 <constructor name="Struts2GuicePluginModule" 11056 static="false" final="false" visibility="public" 11057 deprecated="not deprecated"> 11058 </constructor> 11059 <method name="configure" 11060 abstract="false" native="false" synchronized="false" 11061 static="false" final="false" visibility="protected" 11062 deprecated="not deprecated"> 11063 </method> 11064 <doc> 11065 <![CDATA[Initializes the Struts 2 Guice Plugin. Must be added to the injector returned 11066 by {@link com.google.inject.servlet.GuiceServletContextListener#getInjector}. 11067 11068 @author benmccann.com]]> 11069 </doc> 11070 </class> 11071 <!-- end class com.google.inject.struts2.Struts2GuicePluginModule --> 11072</package> 11073<package name="com.google.inject.testing.fieldbinder"> 11074 <!-- start class com.google.inject.testing.fieldbinder.Bind --> 11075 <class name="Bind" abstract="true" 11076 static="false" final="false" visibility="public" 11077 deprecated="not deprecated"> 11078 <implements name="java.lang.annotation.Annotation"/> 11079 <doc> 11080 <![CDATA[Annotation used by {@link BoundFieldModule} to indicate that a field should be bound to its 11081 value using Guice. 11082 11083 <p>Binding to {@code null} is only allowed for fields that are annotated {@code @Nullable}. See 11084 <a href="https://github.com/google/guice/wiki/UseNullable">https://github.com/google/guice/wiki/UseNullable</a> 11085 11086 @see BoundFieldModule 11087 @author eatnumber1@google.com (Russ Harmon)]]> 11088 </doc> 11089 </class> 11090 <!-- end class com.google.inject.testing.fieldbinder.Bind --> 11091 <!-- start class com.google.inject.testing.fieldbinder.BoundFieldModule --> 11092 <class name="BoundFieldModule" extends="java.lang.Object" 11093 abstract="false" 11094 static="false" final="true" visibility="public" 11095 deprecated="not deprecated"> 11096 <implements name="com.google.inject.Module"/> 11097 <method name="of" return="com.google.inject.testing.fieldbinder.BoundFieldModule" 11098 abstract="false" native="false" synchronized="false" 11099 static="true" final="false" visibility="public" 11100 deprecated="not deprecated"> 11101 <param name="instance" type="java.lang.Object"/> 11102 <doc> 11103 <![CDATA[Create a BoundFieldModule which binds the {@link Bind} annotated fields of {@code instance}. 11104 11105 @param instance the instance whose fields will be bound. 11106 @return a module which will bind the {@link Bind} annotated fields of {@code instance}.]]> 11107 </doc> 11108 </method> 11109 <method name="configure" 11110 abstract="false" native="false" synchronized="false" 11111 static="false" final="false" visibility="public" 11112 deprecated="not deprecated"> 11113 <param name="binder" type="com.google.inject.Binder"/> 11114 </method> 11115 <doc> 11116 <![CDATA[Automatically creates Guice bindings for fields in an object annotated with {@link Bind}. 11117 11118 <p>This module is intended for use in tests to reduce the code needed to bind local fields 11119 (usually mocks) for injection. 11120 11121 <p>The following rules are followed in determining how fields are bound using this module: 11122 11123 <ul> 11124 <li> 11125 For each {@link Bind} annotated field of an object and its superclasses, this module will bind 11126 that field's type to that field's value at injector creation time. This includes both instance 11127 and static fields. 11128 </li> 11129 <li> 11130 If {@link Bind#to} is specified, the field's value will be bound to the class specified by 11131 {@link Bind#to} instead of the field's actual type. 11132 </li> 11133 <li> 11134 If a {@link BindingAnnotation} or {@link javax.inject.Qualifier} is present on the field, 11135 that field will be bound using that annotation via {@link AnnotatedBindingBuilder#annotatedWith}. 11136 For example, {@code bind(Foo.class).annotatedWith(BarAnnotation.class).toInstance(theValue)}. 11137 It is an error to supply more than one {@link BindingAnnotation} or 11138 {@link javax.inject.Qualifier}. 11139 </li> 11140 <li> 11141 If the field is of type {@link Provider}, the field's value will be bound as a {@link Provider} 11142 using {@link LinkedBindingBuilder#toProvider} to the provider's parameterized type. For example, 11143 {@code Provider<Integer>} binds to {@link Integer}. Attempting to bind a non-parameterized 11144 {@link Provider} without a {@link Bind#to} clause is an error. 11145 </li> 11146 </ul> 11147 11148 <p>Example use: 11149 <pre><code> 11150 public class TestFoo { 11151 // bind(new TypeLiteral{@code <List<Object>>}() {}).toInstance(listOfObjects); 11152 {@literal @}Bind private List{@code <Object>} listOfObjects = Lists.of(); 11153 11154 // bind(String.class).toProvider(new Provider() { public String get() { return userName; }}); 11155 {@literal @}Bind(lazy = true) private String userName; 11156 11157 // bind(SuperClass.class).toInstance(aSubClass); 11158 {@literal @}Bind(to = SuperClass.class) private SubClass aSubClass = new SubClass(); 11159 11160 // bind(String.class).annotatedWith(MyBindingAnnotation.class).toInstance(myString); 11161 {@literal @}Bind 11162 {@literal @}MyBindingAnnotation 11163 private String myString = "hello"; 11164 11165 // bind(Object.class).toProvider(myProvider); 11166 {@literal @}Bind private Provider{@code <Object>} myProvider = getProvider(); 11167 11168 {@literal @}Before public void setUp() { 11169 Guice.createInjector(BoundFieldModule.of(this)).injectMembers(this); 11170 } 11171 } 11172 </code></pre> 11173 11174 @see Bind 11175 @author eatnumber1@google.com (Russ Harmon)]]> 11176 </doc> 11177 </class> 11178 <!-- end class com.google.inject.testing.fieldbinder.BoundFieldModule --> 11179</package> 11180<package name="com.google.inject.throwingproviders"> 11181 <!-- start interface com.google.inject.throwingproviders.CheckedProvider --> 11182 <interface name="CheckedProvider" abstract="true" 11183 static="false" final="false" visibility="public" 11184 deprecated="not deprecated"> 11185 <method name="get" return="T" 11186 abstract="true" native="false" synchronized="false" 11187 static="false" final="false" visibility="public" 11188 deprecated="not deprecated"> 11189 <exception name="Exception" type="java.lang.Exception"/> 11190 </method> 11191 <doc> 11192 <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws 11193 a checked Exception. Users may not inject {@code T} directly. 11194 11195 <p>This interface must be extended to use application-specific exception types. 11196 Such subinterfaces may not define new methods, but may narrow the exception type. 11197 <pre> 11198 public interface RemoteProvider<T> extends CheckedProvider<T> { 11199 T get() throws CustomExceptionOne, CustomExceptionTwo; 11200 } 11201 </pre> 11202 11203 <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned 11204 or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get} 11205 will invoked at most once within each scope. 11206 11207 @since 3.0]]> 11208 </doc> 11209 </interface> 11210 <!-- end interface com.google.inject.throwingproviders.CheckedProvider --> 11211 <!-- start class com.google.inject.throwingproviders.CheckedProvides --> 11212 <class name="CheckedProvides" abstract="true" 11213 static="false" final="false" visibility="public" 11214 deprecated="not deprecated"> 11215 <implements name="java.lang.annotation.Annotation"/> 11216 <doc> 11217 <![CDATA[Annotates methods of a {@link com.google.inject.Module} to create a 11218 {@link CheckedProvider} method binding that can throw exceptions. The 11219 method's return type is bound to a {@link CheckedProvider} that can be 11220 injected. Guice will pass dependencies to the method as parameters. Install 11221 {@literal @}CheckedProvides methods by using 11222 {@link ThrowingProviderBinder#forModule(com.google.inject.Module)} on the 11223 module where the methods are declared. 11224 11225 @author sameb@google.com (Sam Berlin) 11226 @since 3.0]]> 11227 </doc> 11228 </class> 11229 <!-- end class com.google.inject.throwingproviders.CheckedProvides --> 11230 <!-- start class com.google.inject.throwingproviders.ThrowingInject --> 11231 <class name="ThrowingInject" abstract="true" 11232 static="false" final="false" visibility="public" 11233 deprecated="not deprecated"> 11234 <implements name="java.lang.annotation.Annotation"/> 11235 <doc> 11236 <![CDATA[A version of {@literal @}{@link Inject} designed for ThrowingProviders. Use by: 11237 <pre><code>ThrowingProviderBinder.create(binder()) 11238 .bind(RemoteProvider.class, Customer.class) 11239 .providing(CustomerImpl.class); 11240 </code></pre> 11241 where CustomerImpl has a constructor annotated with ThrowingInject. 11242 11243 @author sameb@google.com (Sam Berlin) 11244 @since 4.0]]> 11245 </doc> 11246 </class> 11247 <!-- end class com.google.inject.throwingproviders.ThrowingInject --> 11248 <!-- start interface com.google.inject.throwingproviders.ThrowingProvider --> 11249 <interface name="ThrowingProvider" abstract="true" 11250 static="false" final="false" visibility="public" 11251 deprecated="use {@link CheckedProvider} instead."> 11252 <implements name="com.google.inject.throwingproviders.CheckedProvider<T>"/> 11253 <method name="get" return="T" 11254 abstract="true" native="false" synchronized="false" 11255 static="false" final="false" visibility="public" 11256 deprecated="not deprecated"> 11257 <exception name="Exception" type="java.lang.Exception"/> 11258 </method> 11259 <doc> 11260 <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws 11261 a checked Exception. Users may not inject {@code T} directly. 11262 11263 <p>This interface must be extended to use application-specific exception types. 11264 Such subinterfaces may not define new methods: 11265 <pre> 11266 public interface RemoteProvider<T> extends ThrowingProvider<T, RemoteException> { } 11267 </pre> 11268 11269 <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned 11270 or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get} 11271 will invoked at most once within each scope. 11272 11273 @author jmourits@google.com (Jerome Mourits) 11274 @author jessewilson@google.com (Jesse Wilson) 11275 @deprecated use {@link CheckedProvider} instead.]]> 11276 </doc> 11277 </interface> 11278 <!-- end interface com.google.inject.throwingproviders.ThrowingProvider --> 11279 <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder --> 11280 <class name="ThrowingProviderBinder" extends="java.lang.Object" 11281 abstract="false" 11282 static="false" final="false" visibility="public" 11283 deprecated="not deprecated"> 11284 <method name="create" return="com.google.inject.throwingproviders.ThrowingProviderBinder" 11285 abstract="false" native="false" synchronized="false" 11286 static="true" final="false" visibility="public" 11287 deprecated="not deprecated"> 11288 <param name="binder" type="com.google.inject.Binder"/> 11289 </method> 11290 <method name="forModule" return="com.google.inject.Module" 11291 abstract="false" native="false" synchronized="false" 11292 static="true" final="false" visibility="public" 11293 deprecated="not deprecated"> 11294 <param name="module" type="com.google.inject.Module"/> 11295 <doc> 11296 <![CDATA[Returns a module that installs {@literal @}{@link CheckedProvides} methods. 11297 11298 @since 3.0]]> 11299 </doc> 11300 </method> 11301 <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P, ?>" 11302 abstract="false" native="false" synchronized="false" 11303 static="false" final="false" visibility="public" 11304 deprecated="Use {@link #bind(Class, Class)} or {@link #bind(Class, TypeLiteral)} instead."> 11305 <param name="interfaceType" type="java.lang.Class<P>"/> 11306 <param name="clazz" type="java.lang.reflect.Type"/> 11307 <doc> 11308 <![CDATA[@deprecated Use {@link #bind(Class, Class)} or {@link #bind(Class, TypeLiteral)} instead.]]> 11309 </doc> 11310 </method> 11311 <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P, T>" 11312 abstract="false" native="false" synchronized="false" 11313 static="false" final="false" visibility="public" 11314 deprecated="not deprecated"> 11315 <param name="interfaceType" type="java.lang.Class<P>"/> 11316 <param name="clazz" type="java.lang.Class<T>"/> 11317 <doc> 11318 <![CDATA[@since 4.0]]> 11319 </doc> 11320 </method> 11321 <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P, T>" 11322 abstract="false" native="false" synchronized="false" 11323 static="false" final="false" visibility="public" 11324 deprecated="not deprecated"> 11325 <param name="interfaceType" type="java.lang.Class<P>"/> 11326 <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 11327 <doc> 11328 <![CDATA[@since 4.0]]> 11329 </doc> 11330 </method> 11331 <doc> 11332 <![CDATA[<p>Builds a binding for a {@link CheckedProvider}. 11333 11334 <p>You can use a fluent API and custom providers: 11335 <pre><code>ThrowingProviderBinder.create(binder()) 11336 .bind(RemoteProvider.class, Customer.class) 11337 .to(RemoteCustomerProvider.class) 11338 .in(RequestScope.class); 11339 </code></pre> 11340 or, you can use throwing provider methods: 11341 <pre><code>class MyModule extends AbstractModule { 11342 configure() { 11343 ThrowingProviderBinder.install(this, binder()); 11344 } 11345 11346 {@literal @}CheckedProvides(RemoteProvider.class) 11347 {@literal @}RequestScope 11348 Customer provideCustomer(FlakyCustomerCreator creator) throws RemoteException { 11349 return creator.getCustomerOrThrow(); 11350 } 11351 } 11352 </code></pre> 11353 You also can declare that a CheckedProvider construct 11354 a particular class whose constructor throws an exception: 11355 <pre><code>ThrowingProviderBinder.create(binder()) 11356 .bind(RemoteProvider.class, Customer.class) 11357 .providing(CustomerImpl.class) 11358 .in(RequestScope.class); 11359 </code></pre> 11360 11361 @author jmourits@google.com (Jerome Mourits) 11362 @author jessewilson@google.com (Jesse Wilson) 11363 @author sameb@google.com (Sam Berlin)]]> 11364 </doc> 11365 </class> 11366 <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder --> 11367 <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder --> 11368 <class name="ThrowingProviderBinder.SecondaryBinder" extends="java.lang.Object" 11369 abstract="false" 11370 static="false" final="false" visibility="public" 11371 deprecated="not deprecated"> 11372 <constructor name="SecondaryBinder" type="java.lang.Class<P>, java.lang.reflect.Type" 11373 static="false" final="false" visibility="public" 11374 deprecated="not deprecated"> 11375 </constructor> 11376 <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P, T>" 11377 abstract="false" native="false" synchronized="false" 11378 static="false" final="false" visibility="public" 11379 deprecated="not deprecated"> 11380 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 11381 </method> 11382 <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P, T>" 11383 abstract="false" native="false" synchronized="false" 11384 static="false" final="false" visibility="public" 11385 deprecated="not deprecated"> 11386 <param name="annotation" type="java.lang.annotation.Annotation"/> 11387 </method> 11388 <method name="scopeExceptions" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P, T>" 11389 abstract="false" native="false" synchronized="false" 11390 static="false" final="false" visibility="public" 11391 deprecated="not deprecated"> 11392 <param name="scopeExceptions" type="boolean"/> 11393 <doc> 11394 <![CDATA[Determines if exceptions should be scoped. By default exceptions are scoped. 11395 11396 @param scopeExceptions whether exceptions should be scoped. 11397 @since 4.0]]> 11398 </doc> 11399 </method> 11400 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 11401 abstract="false" native="false" synchronized="false" 11402 static="false" final="false" visibility="public" 11403 deprecated="not deprecated"> 11404 <param name="target" type="P extends com.google.inject.throwingproviders.CheckedProvider"/> 11405 </method> 11406 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 11407 abstract="false" native="false" synchronized="false" 11408 static="false" final="false" visibility="public" 11409 deprecated="not deprecated"> 11410 <param name="targetType" type="java.lang.Class<? extends P>"/> 11411 </method> 11412 <method name="providing" return="com.google.inject.binder.ScopedBindingBuilder" 11413 abstract="false" native="false" synchronized="false" 11414 static="false" final="false" visibility="public" 11415 deprecated="not deprecated"> 11416 <param name="cxtorClass" type="java.lang.Class<? extends T>"/> 11417 <doc> 11418 <![CDATA[@since 4.0]]> 11419 </doc> 11420 </method> 11421 <method name="providing" return="com.google.inject.binder.ScopedBindingBuilder" 11422 abstract="false" native="false" synchronized="false" 11423 static="false" final="false" visibility="public" 11424 deprecated="not deprecated"> 11425 <param name="cxtorLiteral" type="com.google.inject.TypeLiteral<? extends T>"/> 11426 <doc> 11427 <![CDATA[@since 4.0]]> 11428 </doc> 11429 </method> 11430 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 11431 abstract="false" native="false" synchronized="false" 11432 static="false" final="false" visibility="public" 11433 deprecated="not deprecated"> 11434 <param name="targetKey" type="com.google.inject.Key<? extends P>"/> 11435 </method> 11436 </class> 11437 <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder --> 11438</package> 11439<package name="com.google.inject.tools.jmx"> 11440 <!-- start interface com.google.inject.tools.jmx.ManagedBindingMBean --> 11441 <interface name="ManagedBindingMBean" abstract="true" 11442 static="false" final="false" visibility="public" 11443 deprecated="not deprecated"> 11444 <method name="getSource" return="java.lang.String" 11445 abstract="true" native="false" synchronized="false" 11446 static="false" final="false" visibility="public" 11447 deprecated="not deprecated"> 11448 <doc> 11449 <![CDATA[Gets the source of this binding.]]> 11450 </doc> 11451 </method> 11452 <method name="getProvider" return="java.lang.String" 11453 abstract="true" native="false" synchronized="false" 11454 static="false" final="false" visibility="public" 11455 deprecated="not deprecated"> 11456 <doc> 11457 <![CDATA[Gets the provider to which this binding is bound.]]> 11458 </doc> 11459 </method> 11460 <method name="getKey" return="java.lang.String" 11461 abstract="true" native="false" synchronized="false" 11462 static="false" final="false" visibility="public" 11463 deprecated="not deprecated"> 11464 <doc> 11465 <![CDATA[Gets the binding key.]]> 11466 </doc> 11467 </method> 11468 <doc> 11469 <![CDATA[JMX interface to bindings. 11470 11471 @author crazybob@google.com (Bob Lee)]]> 11472 </doc> 11473 </interface> 11474 <!-- end interface com.google.inject.tools.jmx.ManagedBindingMBean --> 11475 <!-- start class com.google.inject.tools.jmx.Manager --> 11476 <class name="Manager" extends="java.lang.Object" 11477 abstract="false" 11478 static="false" final="false" visibility="public" 11479 deprecated="not deprecated"> 11480 <constructor name="Manager" 11481 static="false" final="false" visibility="public" 11482 deprecated="not deprecated"> 11483 </constructor> 11484 <method name="manage" 11485 abstract="false" native="false" synchronized="false" 11486 static="true" final="false" visibility="public" 11487 deprecated="not deprecated"> 11488 <param name="domain" type="java.lang.String"/> 11489 <param name="injector" type="com.google.inject.Injector"/> 11490 <doc> 11491 <![CDATA[Registers all the bindings of an Injector with the platform MBean server. 11492 Consider using the name of your root {@link Module} class as the domain.]]> 11493 </doc> 11494 </method> 11495 <method name="manage" 11496 abstract="false" native="false" synchronized="false" 11497 static="true" final="false" visibility="public" 11498 deprecated="not deprecated"> 11499 <param name="server" type="javax.management.MBeanServer"/> 11500 <param name="domain" type="java.lang.String"/> 11501 <param name="injector" type="com.google.inject.Injector"/> 11502 <doc> 11503 <![CDATA[Registers all the bindings of an Injector with the given MBean server. 11504 Consider using the name of your root {@link Module} class as the domain.]]> 11505 </doc> 11506 </method> 11507 <method name="main" 11508 abstract="false" native="false" synchronized="false" 11509 static="true" final="false" visibility="public" 11510 deprecated="not deprecated"> 11511 <param name="args" type="java.lang.String[]"/> 11512 <exception name="Exception" type="java.lang.Exception"/> 11513 <doc> 11514 <![CDATA[Run with no arguments for usage instructions.]]> 11515 </doc> 11516 </method> 11517 <doc> 11518 <![CDATA[Provides a JMX interface to Guice. 11519 11520 @author crazybob@google.com (Bob Lee)]]> 11521 </doc> 11522 </class> 11523 <!-- end class com.google.inject.tools.jmx.Manager --> 11524</package> 11525<package name="com.google.inject.util"> 11526 <!-- start class com.google.inject.util.Modules --> 11527 <class name="Modules" extends="java.lang.Object" 11528 abstract="false" 11529 static="false" final="true" visibility="public" 11530 deprecated="not deprecated"> 11531 <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder" 11532 abstract="false" native="false" synchronized="false" 11533 static="true" final="false" visibility="public" 11534 deprecated="not deprecated"> 11535 <param name="modules" type="com.google.inject.Module[]"/> 11536 <doc> 11537 <![CDATA[Returns a builder that creates a module that overlays override modules over the given 11538 modules. If a key is bound in both sets of modules, only the binding from the override modules 11539 is kept. If a single {@link PrivateModule} is supplied or all elements are from 11540 a single {@link PrivateBinder}, then this will overwrite the private bindings. 11541 Otherwise, private bindings will not be overwritten unless they are exposed. 11542 This can be used to replace the bindings of a production module with test bindings: 11543 <pre> 11544 Module functionalTestModule 11545 = Modules.override(new ProductionModule()).with(new TestModule()); 11546 </pre> 11547 11548 <p>Prefer to write smaller modules that can be reused and tested without overrides. 11549 11550 @param modules the modules whose bindings are open to be overridden]]> 11551 </doc> 11552 </method> 11553 <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder" 11554 abstract="false" native="false" synchronized="false" 11555 static="true" final="false" visibility="public" 11556 deprecated="not deprecated"> 11557 <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 11558 <doc> 11559 <![CDATA[Returns a builder that creates a module that overlays override modules over the given 11560 modules. If a key is bound in both sets of modules, only the binding from the override modules 11561 is kept. If a single {@link PrivateModule} is supplied or all elements are from 11562 a single {@link PrivateBinder}, then this will overwrite the private bindings. 11563 Otherwise, private bindings will not be overwritten unless they are exposed. 11564 This can be used to replace the bindings of a production module with test bindings: 11565 <pre> 11566 Module functionalTestModule 11567 = Modules.override(getProductionModules()).with(getTestModules()); 11568 </pre> 11569 11570 <p>Prefer to write smaller modules that can be reused and tested without overrides. 11571 11572 @param modules the modules whose bindings are open to be overridden]]> 11573 </doc> 11574 </method> 11575 <method name="combine" return="com.google.inject.Module" 11576 abstract="false" native="false" synchronized="false" 11577 static="true" final="false" visibility="public" 11578 deprecated="not deprecated"> 11579 <param name="modules" type="com.google.inject.Module[]"/> 11580 <doc> 11581 <![CDATA[Returns a new module that installs all of {@code modules}.]]> 11582 </doc> 11583 </method> 11584 <method name="combine" return="com.google.inject.Module" 11585 abstract="false" native="false" synchronized="false" 11586 static="true" final="false" visibility="public" 11587 deprecated="not deprecated"> 11588 <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 11589 <doc> 11590 <![CDATA[Returns a new module that installs all of {@code modules}.]]> 11591 </doc> 11592 </method> 11593 <field name="EMPTY_MODULE" type="com.google.inject.Module" 11594 transient="false" volatile="false" 11595 static="true" final="true" visibility="public" 11596 deprecated="not deprecated"> 11597 </field> 11598 <doc> 11599 <![CDATA[Static utility methods for creating and working with instances of {@link Module}. 11600 11601 @author jessewilson@google.com (Jesse Wilson) 11602 @since 2.0]]> 11603 </doc> 11604 </class> 11605 <!-- end class com.google.inject.util.Modules --> 11606 <!-- start interface com.google.inject.util.Modules.OverriddenModuleBuilder --> 11607 <interface name="Modules.OverriddenModuleBuilder" abstract="true" 11608 static="true" final="false" visibility="public" 11609 deprecated="not deprecated"> 11610 <method name="with" return="com.google.inject.Module" 11611 abstract="true" native="false" synchronized="false" 11612 static="false" final="false" visibility="public" 11613 deprecated="not deprecated"> 11614 <param name="overrides" type="com.google.inject.Module[]"/> 11615 <doc> 11616 <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]> 11617 </doc> 11618 </method> 11619 <method name="with" return="com.google.inject.Module" 11620 abstract="true" native="false" synchronized="false" 11621 static="false" final="false" visibility="public" 11622 deprecated="not deprecated"> 11623 <param name="overrides" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 11624 <doc> 11625 <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]> 11626 </doc> 11627 </method> 11628 <doc> 11629 <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]> 11630 </doc> 11631 </interface> 11632 <!-- end interface com.google.inject.util.Modules.OverriddenModuleBuilder --> 11633 <!-- start class com.google.inject.util.Providers --> 11634 <class name="Providers" extends="java.lang.Object" 11635 abstract="false" 11636 static="false" final="true" visibility="public" 11637 deprecated="not deprecated"> 11638 <method name="of" return="com.google.inject.Provider<T>" 11639 abstract="false" native="false" synchronized="false" 11640 static="true" final="false" visibility="public" 11641 deprecated="not deprecated"> 11642 <param name="instance" type="T"/> 11643 <doc> 11644 <![CDATA[Returns a provider which always provides {@code instance}. This should not 11645 be necessary to use in your application, but is helpful for several types 11646 of unit tests. 11647 11648 @param instance the instance that should always be provided. This is also 11649 permitted to be null, to enable aggressive testing, although in real 11650 life a Guice-supplied Provider will never return null.]]> 11651 </doc> 11652 </method> 11653 <method name="guicify" return="com.google.inject.Provider<T>" 11654 abstract="false" native="false" synchronized="false" 11655 static="true" final="false" visibility="public" 11656 deprecated="not deprecated"> 11657 <param name="provider" type="javax.inject.Provider<T>"/> 11658 <doc> 11659 <![CDATA[Returns a Guice-friendly {@code com.google.inject.Provider} for the given 11660 JSR-330 {@code javax.inject.Provider}. The converse method is unnecessary, 11661 since Guice providers directly implement the JSR-330 interface. 11662 11663 @since 3.0]]> 11664 </doc> 11665 </method> 11666 <doc> 11667 <![CDATA[Static utility methods for creating and working with instances of 11668 {@link Provider}. 11669 11670 @author Kevin Bourrillion (kevinb9n@gmail.com) 11671 @since 2.0]]> 11672 </doc> 11673 </class> 11674 <!-- end class com.google.inject.util.Providers --> 11675 <!-- start class com.google.inject.util.Types --> 11676 <class name="Types" extends="java.lang.Object" 11677 abstract="false" 11678 static="false" final="true" visibility="public" 11679 deprecated="not deprecated"> 11680 <method name="newParameterizedType" return="java.lang.reflect.ParameterizedType" 11681 abstract="false" native="false" synchronized="false" 11682 static="true" final="false" visibility="public" 11683 deprecated="not deprecated"> 11684 <param name="rawType" type="java.lang.reflect.Type"/> 11685 <param name="typeArguments" type="java.lang.reflect.Type[]"/> 11686 <doc> 11687 <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to 11688 {@code rawType}. The returned type does not have an owner type. 11689 11690 @return a {@link java.io.Serializable serializable} parameterized type.]]> 11691 </doc> 11692 </method> 11693 <method name="newParameterizedTypeWithOwner" return="java.lang.reflect.ParameterizedType" 11694 abstract="false" native="false" synchronized="false" 11695 static="true" final="false" visibility="public" 11696 deprecated="not deprecated"> 11697 <param name="ownerType" type="java.lang.reflect.Type"/> 11698 <param name="rawType" type="java.lang.reflect.Type"/> 11699 <param name="typeArguments" type="java.lang.reflect.Type[]"/> 11700 <doc> 11701 <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to 11702 {@code rawType} and enclosed by {@code ownerType}. 11703 11704 @return a {@link java.io.Serializable serializable} parameterized type.]]> 11705 </doc> 11706 </method> 11707 <method name="arrayOf" return="java.lang.reflect.GenericArrayType" 11708 abstract="false" native="false" synchronized="false" 11709 static="true" final="false" visibility="public" 11710 deprecated="not deprecated"> 11711 <param name="componentType" type="java.lang.reflect.Type"/> 11712 <doc> 11713 <![CDATA[Returns an array type whose elements are all instances of 11714 {@code componentType}. 11715 11716 @return a {@link java.io.Serializable serializable} generic array type.]]> 11717 </doc> 11718 </method> 11719 <method name="subtypeOf" return="java.lang.reflect.WildcardType" 11720 abstract="false" native="false" synchronized="false" 11721 static="true" final="false" visibility="public" 11722 deprecated="not deprecated"> 11723 <param name="bound" type="java.lang.reflect.Type"/> 11724 <doc> 11725 <![CDATA[Returns a type that represents an unknown type that extends {@code bound}. 11726 For example, if {@code bound} is {@code CharSequence.class}, this returns 11727 {@code ? extends CharSequence}. If {@code bound} is {@code Object.class}, 11728 this returns {@code ?}, which is shorthand for {@code ? extends Object}.]]> 11729 </doc> 11730 </method> 11731 <method name="supertypeOf" return="java.lang.reflect.WildcardType" 11732 abstract="false" native="false" synchronized="false" 11733 static="true" final="false" visibility="public" 11734 deprecated="not deprecated"> 11735 <param name="bound" type="java.lang.reflect.Type"/> 11736 <doc> 11737 <![CDATA[Returns a type that represents an unknown supertype of {@code bound}. For 11738 example, if {@code bound} is {@code String.class}, this returns {@code ? 11739 super String}.]]> 11740 </doc> 11741 </method> 11742 <method name="listOf" return="java.lang.reflect.ParameterizedType" 11743 abstract="false" native="false" synchronized="false" 11744 static="true" final="false" visibility="public" 11745 deprecated="not deprecated"> 11746 <param name="elementType" type="java.lang.reflect.Type"/> 11747 <doc> 11748 <![CDATA[Returns a type modelling a {@link List} whose elements are of type 11749 {@code elementType}. 11750 11751 @return a {@link java.io.Serializable serializable} parameterized type.]]> 11752 </doc> 11753 </method> 11754 <method name="collectionOf" return="java.lang.reflect.ParameterizedType" 11755 abstract="false" native="false" synchronized="false" 11756 static="true" final="false" visibility="public" 11757 deprecated="not deprecated"> 11758 <param name="elementType" type="java.lang.reflect.Type"/> 11759 <doc> 11760 <![CDATA[Returns a type modelling a {@link Collection} whose elements are of type 11761 {@code elementType}. 11762 11763 @return a {@link java.io.Serializable serializable} parameterized type.]]> 11764 </doc> 11765 </method> 11766 <method name="setOf" return="java.lang.reflect.ParameterizedType" 11767 abstract="false" native="false" synchronized="false" 11768 static="true" final="false" visibility="public" 11769 deprecated="not deprecated"> 11770 <param name="elementType" type="java.lang.reflect.Type"/> 11771 <doc> 11772 <![CDATA[Returns a type modelling a {@link Set} whose elements are of type 11773 {@code elementType}. 11774 11775 @return a {@link java.io.Serializable serializable} parameterized type.]]> 11776 </doc> 11777 </method> 11778 <method name="mapOf" return="java.lang.reflect.ParameterizedType" 11779 abstract="false" native="false" synchronized="false" 11780 static="true" final="false" visibility="public" 11781 deprecated="not deprecated"> 11782 <param name="keyType" type="java.lang.reflect.Type"/> 11783 <param name="valueType" type="java.lang.reflect.Type"/> 11784 <doc> 11785 <![CDATA[Returns a type modelling a {@link Map} whose keys are of type 11786 {@code keyType} and whose values are of type {@code valueType}. 11787 11788 @return a {@link java.io.Serializable serializable} parameterized type.]]> 11789 </doc> 11790 </method> 11791 <method name="providerOf" return="java.lang.reflect.ParameterizedType" 11792 abstract="false" native="false" synchronized="false" 11793 static="true" final="false" visibility="public" 11794 deprecated="not deprecated"> 11795 <param name="providedType" type="java.lang.reflect.Type"/> 11796 <doc> 11797 <![CDATA[Returns a type modelling a {@link Provider} that provides elements of type 11798 {@code elementType}. 11799 11800 @return a {@link java.io.Serializable serializable} parameterized type.]]> 11801 </doc> 11802 </method> 11803 <method name="javaxProviderOf" return="java.lang.reflect.Type" 11804 abstract="false" native="false" synchronized="false" 11805 static="true" final="false" visibility="public" 11806 deprecated="not deprecated"> 11807 <param name="type" type="java.lang.reflect.Type"/> 11808 <doc> 11809 <![CDATA[Returns a type modelling a {@link javax.inject.Provider} that provides elements of type 11810 {@code elementType}. 11811 11812 @return a {@link java.io.Serializable serializable} parameterized type.]]> 11813 </doc> 11814 </method> 11815 <doc> 11816 <![CDATA[Static methods for working with types. 11817 11818 @author crazybob@google.com (Bob Lee) 11819 @since 2.0]]> 11820 </doc> 11821 </class> 11822 <!-- end class com.google.inject.util.Types --> 11823</package> 11824 11825</api> 11826