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 Tue Apr 28 17:33:25 EDT 2015 --> 5 6<api 7 xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 8 xsi:noNamespaceSchemaLocation='api.xsd' 9 name="4.0" 10 jdversion="1.1.1"> 11 12<!-- Command line arguments = -doclet jdiff.JDiff -docletpath /usr/local/google/home/cgdecker/Projects/guice/lib/build/jdiff/jdiff.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/jdiff/xerces.jar -classpath /usr/local/google/home/cgdecker/Projects/guice/lib/aopalliance.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/guava-16.0.1.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/javax.inject.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/asm-5.0.3.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/bnd-0.0.384.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/cglib-3.1.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/commons-logging-1.0.4.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/easymock.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/felix-2.0.5.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/guava-testlib-16.0.1.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/jarjar-1.1.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/javax.inject-tck.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/jsr305.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/junit.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/munge.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/safesax.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/spring-beans.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/spring-core.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/dagger-adapter/lib/dagger-2.0.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/antlr-2.7.5h3.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/aopalliance.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/cglib-nodep-3.0.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/commons-collections.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/commons-io.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/commons-logging-1.0.4.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/db4o-6.4.14.8131-java5.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/dom4j-1.6.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/easymock.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/ejb3-persistence.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/hibernate-annotations.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/hibernate-entitymanager.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/hibernate-search.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/hibernate3.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/hsqldb.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/javassist.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/jaxen-1.1-beta-7.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/jboss-archive-browsing.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/jta.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/log4j-1.2.14.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/ognl-2.6.7.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/oro-2.0.8.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/servlet-api-2.5.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/xwork-2.0.4.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/ant-1.6.5.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/commons-fileupload-1.2.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/commons-io-1.3.2.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/commons-logging-1.0.4.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/core-3.1.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/freemarker-2.3.16.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/javassist.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/jetty-6.1.0.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/jetty-util-6.1.0.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/jsp-2.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/jsp-api-2.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/ognl-3.0.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/servlet-api-2.5.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/struts2-core-2.2.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/xwork-core-2.2.1.jar:/usr/local/google/home/cgdecker/Projects/guice/build/classes -doclet jdiff.JDiff -docletpath /usr/local/google/home/cgdecker/Projects/guice/lib/build/jdiff/jdiff.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/jdiff/xerces.jar -apidir build/docs/latest-api-diffs -apiname 4.0 --> 13<package name="com.google.inject"> 14 <!-- start class com.google.inject.AbstractModule --> 15 <class name="AbstractModule" extends="java.lang.Object" 16 abstract="true" 17 static="false" final="false" visibility="public" 18 deprecated="not deprecated"> 19 <implements name="com.google.inject.Module"/> 20 <constructor name="AbstractModule" 21 static="false" final="false" visibility="public" 22 deprecated="not deprecated"> 23 </constructor> 24 <method name="configure" 25 abstract="false" native="false" synchronized="true" 26 static="false" final="true" visibility="public" 27 deprecated="not deprecated"> 28 <param name="builder" type="com.google.inject.Binder"/> 29 </method> 30 <method name="configure" 31 abstract="true" native="false" synchronized="false" 32 static="false" final="false" visibility="protected" 33 deprecated="not deprecated"> 34 <doc> 35 <![CDATA[Configures a {@link Binder} via the exposed methods.]]> 36 </doc> 37 </method> 38 <method name="binder" return="com.google.inject.Binder" 39 abstract="false" native="false" synchronized="false" 40 static="false" final="false" visibility="protected" 41 deprecated="not deprecated"> 42 <doc> 43 <![CDATA[Gets direct access to the underlying {@code Binder}.]]> 44 </doc> 45 </method> 46 <method name="bindScope" 47 abstract="false" native="false" synchronized="false" 48 static="false" final="false" visibility="protected" 49 deprecated="not deprecated"> 50 <param name="scopeAnnotation" type="java.lang.Class<? 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 constructing a {@link Proxy} when a circular dependency 671 is found. By default, circular proxies are not disabled. 672 <p> 673 If a parent injector disables circular proxies, then all child injectors 674 (and private modules within that injector) also disable circular proxies. 675 If a parent does not disable circular proxies, a child injector or private 676 module may optionally declare itself as disabling circular proxies. If it 677 does, the behavior is limited only to that child or any grandchildren. No 678 siblings of the child will disable circular proxies. 679 680 @since 3.0]]> 681 </doc> 682 </method> 683 <method name="requireAtInjectOnConstructors" 684 abstract="true" native="false" synchronized="false" 685 static="false" final="false" visibility="public" 686 deprecated="not deprecated"> 687 <doc> 688 <![CDATA[Requires that a {@literal @}{@link Inject} annotation exists on a constructor in order for 689 Guice to consider it an eligible injectable class. By default, Guice will inject classes that 690 have a no-args constructor if no {@literal @}{@link Inject} annotation exists on any 691 constructor. 692 <p> 693 If the class is bound using {@link LinkedBindingBuilder#toConstructor}, Guice will still inject 694 that constructor regardless of annotations. 695 696 @since 4.0]]> 697 </doc> 698 </method> 699 <method name="requireExactBindingAnnotations" 700 abstract="true" native="false" synchronized="false" 701 static="false" final="false" visibility="public" 702 deprecated="not deprecated"> 703 <doc> 704 <![CDATA[Requires that Guice finds an exactly matching binding annotation. This disables the 705 error-prone feature in Guice where it can substitute a binding for 706 <code>{@literal @}Named Foo</code> when attempting to inject 707 <code>{@literal @}Named("foo") Foo</code>. 708 709 @since 4.0]]> 710 </doc> 711 </method> 712 <method name="scanModulesForAnnotatedMethods" 713 abstract="true" native="false" synchronized="false" 714 static="false" final="false" visibility="public" 715 deprecated="not deprecated"> 716 <param name="scanner" type="com.google.inject.spi.ModuleAnnotatedMethodScanner"/> 717 <doc> 718 <![CDATA[Adds a scanner that will look in all installed modules for annotations the scanner can parse, 719 and binds them like {@literal @}Provides methods. Scanners apply to all modules installed in 720 the injector. Scanners installed in child injectors or private modules do not impact modules in 721 siblings or parents, however scanners installed in parents do apply to all child injectors and 722 private modules. 723 724 @since 4.0]]> 725 </doc> 726 </method> 727 <doc> 728 <![CDATA[Collects configuration information (primarily <i>bindings</i>) which will be 729 used to create an {@link Injector}. Guice provides this object to your 730 application's {@link Module} implementors so they may each contribute 731 their own bindings and other registrations. 732 733 <h3>The Guice Binding EDSL</h3> 734 735 Guice uses an <i>embedded domain-specific language</i>, or EDSL, to help you 736 create bindings simply and readably. This approach is great for overall 737 usability, but it does come with a small cost: <b>it is difficult to 738 learn how to use the Binding EDSL by reading 739 method-level javadocs</b>. Instead, you should consult the series of 740 examples below. To save space, these examples omit the opening 741 {@code binder}, just as you will if your module extends 742 {@link AbstractModule}. 743 744 <pre> 745 bind(ServiceImpl.class);</pre> 746 747 This statement does essentially nothing; it "binds the {@code ServiceImpl} 748 class to itself" and does not change Guice's default behavior. You may still 749 want to use this if you prefer your {@link Module} class to serve as an 750 explicit <i>manifest</i> for the services it provides. Also, in rare cases, 751 Guice may be unable to validate a binding at injector creation time unless it 752 is given explicitly. 753 754 <pre> 755 bind(Service.class).to(ServiceImpl.class);</pre> 756 757 Specifies that a request for a {@code Service} instance with no binding 758 annotations should be treated as if it were a request for a 759 {@code ServiceImpl} instance. This <i>overrides</i> the function of any 760 {@link ImplementedBy @ImplementedBy} or {@link ProvidedBy @ProvidedBy} 761 annotations found on {@code Service}, since Guice will have already 762 "moved on" to {@code ServiceImpl} before it reaches the point when it starts 763 looking for these annotations. 764 765 <pre> 766 bind(Service.class).toProvider(ServiceProvider.class);</pre> 767 768 In this example, {@code ServiceProvider} must extend or implement 769 {@code Provider<Service>}. This binding specifies that Guice should resolve 770 an unannotated injection request for {@code Service} by first resolving an 771 instance of {@code ServiceProvider} in the regular way, then calling 772 {@link Provider#get get()} on the resulting Provider instance to obtain the 773 {@code Service} instance. 774 775 <p>The {@link Provider} you use here does not have to be a "factory"; that 776 is, a provider which always <i>creates</i> each instance it provides. 777 However, this is generally a good practice to follow. You can then use 778 Guice's concept of {@link Scope scopes} to guide when creation should happen 779 -- "letting Guice work for you". 780 781 <pre> 782 bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class);</pre> 783 784 Like the previous example, but only applies to injection requests that use 785 the binding annotation {@code @Red}. If your module also includes bindings 786 for particular <i>values</i> of the {@code @Red} annotation (see below), 787 then this binding will serve as a "catch-all" for any values of {@code @Red} 788 that have no exact match in the bindings. 789 790 <pre> 791 bind(ServiceImpl.class).in(Singleton.class); 792 // or, alternatively 793 bind(ServiceImpl.class).in(Scopes.SINGLETON);</pre> 794 795 Either of these statements places the {@code ServiceImpl} class into 796 singleton scope. Guice will create only one instance of {@code ServiceImpl} 797 and will reuse it for all injection requests of this type. Note that it is 798 still possible to bind another instance of {@code ServiceImpl} if the second 799 binding is qualified by an annotation as in the previous example. Guice is 800 not overly concerned with <i>preventing</i> you from creating multiple 801 instances of your "singletons", only with <i>enabling</i> your application to 802 share only one instance if that's all you tell Guice you need. 803 804 <p><b>Note:</b> a scope specified in this way <i>overrides</i> any scope that 805 was specified with an annotation on the {@code ServiceImpl} class. 806 807 <p>Besides {@link Singleton}/{@link Scopes#SINGLETON}, there are 808 servlet-specific scopes available in 809 {@code com.google.inject.servlet.ServletScopes}, and your Modules can 810 contribute their own custom scopes for use here as well. 811 812 <pre> 813 bind(new TypeLiteral<PaymentService<CreditCard>>() {}) 814 .to(CreditCardPaymentService.class);</pre> 815 816 This admittedly odd construct is the way to bind a parameterized type. It 817 tells Guice how to honor an injection request for an element of type 818 {@code PaymentService<CreditCard>}. The class 819 {@code CreditCardPaymentService} must implement the 820 {@code PaymentService<CreditCard>} interface. Guice cannot currently bind or 821 inject a generic type, such as {@code Set<E>}; all type parameters must be 822 fully specified. 823 824 <pre> 825 bind(Service.class).toInstance(new ServiceImpl()); 826 // or, alternatively 827 bind(Service.class).toInstance(SomeLegacyRegistry.getService());</pre> 828 829 In this example, your module itself, <i>not Guice</i>, takes responsibility 830 for obtaining a {@code ServiceImpl} instance, then asks Guice to always use 831 this single instance to fulfill all {@code Service} injection requests. When 832 the {@link Injector} is created, it will automatically perform field 833 and method injection for this instance, but any injectable constructor on 834 {@code ServiceImpl} is simply ignored. Note that using this approach results 835 in "eager loading" behavior that you can't control. 836 837 <pre> 838 bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre> 839 840 Sets up a constant binding. Constant injections must always be annotated. 841 When a constant binding's value is a string, it is eligile for conversion to 842 all primitive types, to {@link Enum#valueOf(Class, String) all enums}, and to 843 {@link Class#forName class literals}. Conversions for other types can be 844 configured using {@link #convertToTypes(Matcher, TypeConverter) 845 convertToTypes()}. 846 847 <pre> 848 {@literal @}Color("red") Color red; // A member variable (field) 849 . . . 850 red = MyModule.class.getDeclaredField("red").getAnnotation(Color.class); 851 bind(Service.class).annotatedWith(red).to(RedService.class);</pre> 852 853 If your binding annotation has parameters you can apply different bindings to 854 different specific values of your annotation. Getting your hands on the 855 right instance of the annotation is a bit of a pain -- one approach, shown 856 above, is to apply a prototype annotation to a field in your module class, so 857 that you can read this annotation instance and give it to Guice. 858 859 <pre> 860 bind(Service.class) 861 .annotatedWith(Names.named("blue")) 862 .to(BlueService.class);</pre> 863 864 Differentiating by names is a common enough use case that we provided a 865 standard annotation, {@link com.google.inject.name.Named @Named}. Because of 866 Guice's library support, binding by name is quite easier than in the 867 arbitrary binding annotation case we just saw. However, remember that these 868 names will live in a single flat namespace with all the other names used in 869 your application. 870 871 <pre> 872 Constructor<T> loneCtor = getLoneCtorFromServiceImplViaReflection(); 873 bind(ServiceImpl.class) 874 .toConstructor(loneCtor);</pre> 875 876 In this example, we directly tell Guice which constructor to use in a concrete 877 class implementation. It means that we do not need to place {@literal @}Inject 878 on any of the constructors and that Guice treats the provided constructor as though 879 it were annotated so. It is useful for cases where you cannot modify existing 880 classes and is a bit simpler than using a {@link Provider}. 881 882 <p>The above list of examples is far from exhaustive. If you can think of 883 how the concepts of one example might coexist with the concepts from another, 884 you can most likely weave the two together. If the two concepts make no 885 sense with each other, you most likely won't be able to do it. In a few 886 cases Guice will let something bogus slip by, and will then inform you of 887 the problems at runtime, as soon as you try to create your Injector. 888 889 <p>The other methods of Binder such as {@link #bindScope}, 890 {@link #bindInterceptor}, {@link #install}, {@link #requestStaticInjection}, 891 {@link #addError} and {@link #currentStage} are not part of the Binding EDSL; 892 you can learn how to use these in the usual way, from the method 893 documentation. 894 895 @author crazybob@google.com (Bob Lee) 896 @author jessewilson@google.com (Jesse Wilson) 897 @author kevinb@google.com (Kevin Bourrillion)]]> 898 </doc> 899 </interface> 900 <!-- end interface com.google.inject.Binder --> 901 <!-- start interface com.google.inject.Binding --> 902 <interface name="Binding" abstract="true" 903 static="false" final="false" visibility="public" 904 deprecated="not deprecated"> 905 <implements name="com.google.inject.spi.Element"/> 906 <method name="getKey" return="com.google.inject.Key<T>" 907 abstract="true" native="false" synchronized="false" 908 static="false" final="false" visibility="public" 909 deprecated="not deprecated"> 910 <doc> 911 <![CDATA[Returns the key for this binding.]]> 912 </doc> 913 </method> 914 <method name="getProvider" return="com.google.inject.Provider<T>" 915 abstract="true" native="false" synchronized="false" 916 static="false" final="false" visibility="public" 917 deprecated="not deprecated"> 918 <doc> 919 <![CDATA[Returns the scoped provider guice uses to fulfill requests for this 920 binding. 921 922 @throws UnsupportedOperationException when invoked on a {@link Binding} 923 created via {@link com.google.inject.spi.Elements#getElements}. This 924 method is only supported on {@link Binding}s returned from an injector.]]> 925 </doc> 926 </method> 927 <method name="acceptTargetVisitor" return="V" 928 abstract="true" native="false" synchronized="false" 929 static="false" final="false" visibility="public" 930 deprecated="not deprecated"> 931 <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor<? super T, V>"/> 932 <doc> 933 <![CDATA[Accepts a target visitor. Invokes the visitor method specific to this binding's target. 934 935 @param visitor to call back on 936 @since 2.0]]> 937 </doc> 938 </method> 939 <method name="acceptScopingVisitor" return="V" 940 abstract="true" native="false" synchronized="false" 941 static="false" final="false" visibility="public" 942 deprecated="not deprecated"> 943 <param name="visitor" type="com.google.inject.spi.BindingScopingVisitor<V>"/> 944 <doc> 945 <![CDATA[Accepts a scoping visitor. Invokes the visitor method specific to this binding's scoping. 946 947 @param visitor to call back on 948 @since 2.0]]> 949 </doc> 950 </method> 951 <doc> 952 <![CDATA[A mapping from a key (type and optional annotation) to the strategy for getting instances of the 953 type. This interface is part of the introspection API and is intended primarily for use by 954 tools. 955 956 <p>Bindings are created in several ways: 957 <ul> 958 <li>Explicitly in a module, via {@code bind()} and {@code bindConstant()} 959 statements: 960 <pre> 961 bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class); 962 bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre></li> 963 <li>Implicitly by the Injector by following a type's {@link ImplementedBy 964 pointer} {@link ProvidedBy annotations} or by using its {@link Inject annotated} or 965 default constructor.</li> 966 <li>By converting a bound instance to a different type.</li> 967 <li>For {@link Provider providers}, by delegating to the binding for the provided type.</li> 968 </ul> 969 970 971 <p>They exist on both modules and on injectors, and their behaviour is different for each: 972 <ul> 973 <li><strong>Module bindings</strong> are incomplete and cannot be used to provide instances. 974 This is because the applicable scopes and interceptors may not be known until an injector 975 is created. From a tool's perspective, module bindings are like the injector's source 976 code. They can be inspected or rewritten, but this analysis must be done statically.</li> 977 <li><strong>Injector bindings</strong> are complete and valid and can be used to provide 978 instances. From a tools' perspective, injector bindings are like reflection for an 979 injector. They have full runtime information, including the complete graph of injections 980 necessary to satisfy a binding.</li> 981 </ul> 982 983 @param <T> the bound type. The injected is always assignable to this type. 984 985 @author crazybob@google.com (Bob Lee) 986 @author jessewilson@google.com (Jesse Wilson)]]> 987 </doc> 988 </interface> 989 <!-- end interface com.google.inject.Binding --> 990 <!-- start class com.google.inject.BindingAnnotation --> 991 <class name="BindingAnnotation" abstract="true" 992 static="false" final="false" visibility="public" 993 deprecated="not deprecated"> 994 <implements name="java.lang.annotation.Annotation"/> 995 <doc> 996 <![CDATA[Annotates annotations which are used for binding. Only one such annotation 997 may apply to a single injection point. You must also annotate binder 998 annotations with {@code @Retention(RUNTIME)}. For example: 999 1000 <pre> 1001 {@code @}Retention(RUNTIME) 1002 {@code @}Target({ FIELD, PARAMETER, METHOD }) 1003 {@code @}BindingAnnotation 1004 public {@code @}interface Transactional {} 1005 </pre> 1006 1007 @author crazybob@google.com (Bob Lee)]]> 1008 </doc> 1009 </class> 1010 <!-- end class com.google.inject.BindingAnnotation --> 1011 <!-- start class com.google.inject.ConfigurationException --> 1012 <class name="ConfigurationException" extends="java.lang.RuntimeException" 1013 abstract="false" 1014 static="false" final="true" visibility="public" 1015 deprecated="not deprecated"> 1016 <constructor name="ConfigurationException" type="java.lang.Iterable<com.google.inject.spi.Message>" 1017 static="false" final="false" visibility="public" 1018 deprecated="not deprecated"> 1019 <doc> 1020 <![CDATA[Creates a ConfigurationException containing {@code messages}.]]> 1021 </doc> 1022 </constructor> 1023 <method name="withPartialValue" return="com.google.inject.ConfigurationException" 1024 abstract="false" native="false" synchronized="false" 1025 static="false" final="false" visibility="public" 1026 deprecated="not deprecated"> 1027 <param name="partialValue" type="java.lang.Object"/> 1028 <doc> 1029 <![CDATA[Returns a copy of this configuration exception with the specified partial value.]]> 1030 </doc> 1031 </method> 1032 <method name="getErrorMessages" return="java.util.Collection<com.google.inject.spi.Message>" 1033 abstract="false" native="false" synchronized="false" 1034 static="false" final="false" visibility="public" 1035 deprecated="not deprecated"> 1036 <doc> 1037 <![CDATA[Returns messages for the errors that caused this exception.]]> 1038 </doc> 1039 </method> 1040 <method name="getPartialValue" return="E" 1041 abstract="false" native="false" synchronized="false" 1042 static="false" final="false" visibility="public" 1043 deprecated="not deprecated"> 1044 <doc> 1045 <![CDATA[Returns a value that was only partially computed due to this exception. The caller can use 1046 this while collecting additional configuration problems. 1047 1048 @return the partial value, or {@code null} if none was set. The type of the partial value is 1049 specified by the throwing method.]]> 1050 </doc> 1051 </method> 1052 <method name="getMessage" return="java.lang.String" 1053 abstract="false" native="false" synchronized="false" 1054 static="false" final="false" visibility="public" 1055 deprecated="not deprecated"> 1056 </method> 1057 <doc> 1058 <![CDATA[Thrown when a programming error such as a misplaced annotation, illegal binding, or unsupported 1059 scope is found. Clients should catch this exception, log it, and stop execution. 1060 1061 @author jessewilson@google.com (Jesse Wilson) 1062 @since 2.0]]> 1063 </doc> 1064 </class> 1065 <!-- end class com.google.inject.ConfigurationException --> 1066 <!-- start class com.google.inject.CreationException --> 1067 <class name="CreationException" extends="java.lang.RuntimeException" 1068 abstract="false" 1069 static="false" final="false" visibility="public" 1070 deprecated="not deprecated"> 1071 <constructor name="CreationException" type="java.util.Collection<com.google.inject.spi.Message>" 1072 static="false" final="false" visibility="public" 1073 deprecated="not deprecated"> 1074 <doc> 1075 <![CDATA[Creates a CreationException containing {@code messages}.]]> 1076 </doc> 1077 </constructor> 1078 <method name="getErrorMessages" return="java.util.Collection<com.google.inject.spi.Message>" 1079 abstract="false" native="false" synchronized="false" 1080 static="false" final="false" visibility="public" 1081 deprecated="not deprecated"> 1082 <doc> 1083 <![CDATA[Returns messages for the errors that caused this exception.]]> 1084 </doc> 1085 </method> 1086 <method name="getMessage" return="java.lang.String" 1087 abstract="false" native="false" synchronized="false" 1088 static="false" final="false" visibility="public" 1089 deprecated="not deprecated"> 1090 </method> 1091 <doc> 1092 <![CDATA[Thrown when errors occur while creating a {@link Injector}. Includes a list of encountered 1093 errors. Clients should catch this exception, log it, and stop execution. 1094 1095 @author crazybob@google.com (Bob Lee)]]> 1096 </doc> 1097 </class> 1098 <!-- end class com.google.inject.CreationException --> 1099 <!-- start class com.google.inject.Exposed --> 1100 <class name="Exposed" abstract="true" 1101 static="false" final="false" visibility="public" 1102 deprecated="not deprecated"> 1103 <implements name="java.lang.annotation.Annotation"/> 1104 <doc> 1105 <![CDATA[Acccompanies a {@literal @}{@link com.google.inject.Provides Provides} method annotation in a 1106 private module to indicate that the provided binding is exposed. 1107 1108 @author jessewilson@google.com (Jesse Wilson) 1109 @since 2.0]]> 1110 </doc> 1111 </class> 1112 <!-- end class com.google.inject.Exposed --> 1113 <!-- start class com.google.inject.Guice --> 1114 <class name="Guice" extends="java.lang.Object" 1115 abstract="false" 1116 static="false" final="true" visibility="public" 1117 deprecated="not deprecated"> 1118 <method name="createInjector" return="com.google.inject.Injector" 1119 abstract="false" native="false" synchronized="false" 1120 static="true" final="false" visibility="public" 1121 deprecated="not deprecated"> 1122 <param name="modules" type="com.google.inject.Module[]"/> 1123 <doc> 1124 <![CDATA[Creates an injector for the given set of modules. This is equivalent to 1125 calling {@link #createInjector(Stage, Module...)} with Stage.DEVELOPMENT. 1126 1127 @throws CreationException if one or more errors occur during injector 1128 construction]]> 1129 </doc> 1130 </method> 1131 <method name="createInjector" return="com.google.inject.Injector" 1132 abstract="false" native="false" synchronized="false" 1133 static="true" final="false" visibility="public" 1134 deprecated="not deprecated"> 1135 <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 1136 <doc> 1137 <![CDATA[Creates an injector for the given set of modules. This is equivalent to 1138 calling {@link #createInjector(Stage, Iterable)} with Stage.DEVELOPMENT. 1139 1140 @throws CreationException if one or more errors occur during injector 1141 creation]]> 1142 </doc> 1143 </method> 1144 <method name="createInjector" return="com.google.inject.Injector" 1145 abstract="false" native="false" synchronized="false" 1146 static="true" final="false" visibility="public" 1147 deprecated="not deprecated"> 1148 <param name="stage" type="com.google.inject.Stage"/> 1149 <param name="modules" type="com.google.inject.Module[]"/> 1150 <doc> 1151 <![CDATA[Creates an injector for the given set of modules, in a given development 1152 stage. 1153 1154 @throws CreationException if one or more errors occur during injector 1155 creation.]]> 1156 </doc> 1157 </method> 1158 <method name="createInjector" return="com.google.inject.Injector" 1159 abstract="false" native="false" synchronized="false" 1160 static="true" final="false" visibility="public" 1161 deprecated="not deprecated"> 1162 <param name="stage" type="com.google.inject.Stage"/> 1163 <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 1164 <doc> 1165 <![CDATA[Creates an injector for the given set of modules, in a given development 1166 stage. 1167 1168 @throws CreationException if one or more errors occur during injector 1169 construction]]> 1170 </doc> 1171 </method> 1172 <doc> 1173 <![CDATA[The entry point to the Guice framework. Creates {@link Injector}s from 1174 {@link Module}s. 1175 1176 <p>Guice supports a model of development that draws clear boundaries between 1177 APIs, Implementations of these APIs, Modules which configure these 1178 implementations, and finally Applications which consist of a collection of 1179 Modules. It is the Application, which typically defines your {@code main()} 1180 method, that bootstraps the Guice Injector using the {@code Guice} class, as 1181 in this example: 1182 <pre> 1183 public class FooApplication { 1184 public static void main(String[] args) { 1185 Injector injector = Guice.createInjector( 1186 new ModuleA(), 1187 new ModuleB(), 1188 . . . 1189 new FooApplicationFlagsModule(args) 1190 ); 1191 1192 // Now just bootstrap the application and you're done 1193 FooStarter starter = injector.getInstance(FooStarter.class); 1194 starter.runApplication(); 1195 } 1196 } 1197 </pre>]]> 1198 </doc> 1199 </class> 1200 <!-- end class com.google.inject.Guice --> 1201 <!-- start class com.google.inject.ImplementedBy --> 1202 <class name="ImplementedBy" abstract="true" 1203 static="false" final="false" visibility="public" 1204 deprecated="not deprecated"> 1205 <implements name="java.lang.annotation.Annotation"/> 1206 <doc> 1207 <![CDATA[A pointer to the default implementation of a type. 1208 1209 @author crazybob@google.com (Bob Lee)]]> 1210 </doc> 1211 </class> 1212 <!-- end class com.google.inject.ImplementedBy --> 1213 <!-- start class com.google.inject.Inject --> 1214 <class name="Inject" abstract="true" 1215 static="false" final="false" visibility="public" 1216 deprecated="not deprecated"> 1217 <implements name="java.lang.annotation.Annotation"/> 1218 <doc> 1219 <![CDATA[Annotates members of your implementation class (constructors, methods 1220 and fields) into which the {@link Injector} should inject values. 1221 The Injector fulfills injection requests for: 1222 1223 <ul> 1224 <li>Every instance it constructs. The class being constructed must have 1225 exactly one of its constructors marked with {@code @Inject} or must have a 1226 constructor taking no parameters. The Injector then proceeds to perform 1227 field and method injections. 1228 1229 <li>Pre-constructed instances passed to {@link Injector#injectMembers}, 1230 {@link com.google.inject.binder.LinkedBindingBuilder#toInstance(Object)} and 1231 {@link com.google.inject.binder.LinkedBindingBuilder#toProvider(javax.inject.Provider)}. 1232 In this case all constructors are, of course, ignored. 1233 1234 <li>Static fields and methods of classes which any {@link Module} has 1235 specifically requested static injection for, using 1236 {@link Binder#requestStaticInjection}. 1237 </ul> 1238 1239 In all cases, a member can be injected regardless of its Java access 1240 specifier (private, default, protected, public). 1241 1242 @author crazybob@google.com (Bob Lee)]]> 1243 </doc> 1244 </class> 1245 <!-- end class com.google.inject.Inject --> 1246 <!-- start interface com.google.inject.Injector --> 1247 <interface name="Injector" abstract="true" 1248 static="false" final="false" visibility="public" 1249 deprecated="not deprecated"> 1250 <method name="injectMembers" 1251 abstract="true" native="false" synchronized="false" 1252 static="false" final="false" visibility="public" 1253 deprecated="not deprecated"> 1254 <param name="instance" type="java.lang.Object"/> 1255 <doc> 1256 <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or 1257 absence of an injectable constructor. 1258 1259 <p>Whenever Guice creates an instance, it performs this injection automatically (after first 1260 performing constructor injection), so if you're able to let Guice create all your objects for 1261 you, you'll never need to use this method. 1262 1263 @param instance to inject members on 1264 1265 @see Binder#getMembersInjector(Class) for a preferred alternative that supports checks before 1266 run time]]> 1267 </doc> 1268 </method> 1269 <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 1270 abstract="true" native="false" synchronized="false" 1271 static="false" final="false" visibility="public" 1272 deprecated="not deprecated"> 1273 <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1274 <doc> 1275 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 1276 of the given type {@code T}. 1277 1278 @param typeLiteral type to get members injector for 1279 @see Binder#getMembersInjector(TypeLiteral) for an alternative that offers up front error 1280 detection 1281 @since 2.0]]> 1282 </doc> 1283 </method> 1284 <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 1285 abstract="true" native="false" synchronized="false" 1286 static="false" final="false" visibility="public" 1287 deprecated="not deprecated"> 1288 <param name="type" type="java.lang.Class<T>"/> 1289 <doc> 1290 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 1291 of the given type {@code T}. When feasible, use {@link Binder#getMembersInjector(TypeLiteral)} 1292 instead to get increased up front error detection. 1293 1294 @param type type to get members injector for 1295 @see Binder#getMembersInjector(Class) for an alternative that offers up front error 1296 detection 1297 @since 2.0]]> 1298 </doc> 1299 </method> 1300 <method name="getBindings" return="java.util.Map<com.google.inject.Key<?>, com.google.inject.Binding<?>>" 1301 abstract="true" native="false" synchronized="false" 1302 static="false" final="false" visibility="public" 1303 deprecated="not deprecated"> 1304 <doc> 1305 <![CDATA[Returns this injector's <strong>explicit</strong> bindings. 1306 1307 <p>The returned map does not include bindings inherited from a {@link #getParent() parent 1308 injector}, should one exist. The returned map is guaranteed to iterate (for example, with 1309 its {@link Map#entrySet()} iterator) in the order of insertion. In other words, the order in 1310 which bindings appear in user Modules. 1311 1312 <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]> 1313 </doc> 1314 </method> 1315 <method name="getAllBindings" return="java.util.Map<com.google.inject.Key<?>, com.google.inject.Binding<?>>" 1316 abstract="true" native="false" synchronized="false" 1317 static="false" final="false" visibility="public" 1318 deprecated="not deprecated"> 1319 <doc> 1320 <![CDATA[Returns a snapshot of this injector's bindings, <strong>both explicit and 1321 just-in-time</strong>. The returned map is immutable; it contains only the bindings that were 1322 present when {@code getAllBindings()} was invoked. Subsequent calls may return a map with 1323 additional just-in-time bindings. 1324 1325 <p>The returned map does not include bindings inherited from a {@link #getParent() parent 1326 injector}, should one exist. 1327 1328 <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1329 1330 @since 3.0]]> 1331 </doc> 1332 </method> 1333 <method name="getBinding" return="com.google.inject.Binding<T>" 1334 abstract="true" native="false" synchronized="false" 1335 static="false" final="false" visibility="public" 1336 deprecated="not deprecated"> 1337 <param name="key" type="com.google.inject.Key<T>"/> 1338 <doc> 1339 <![CDATA[Returns the binding for the given injection key. This will be an explicit bindings if the key 1340 was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will 1341 be created if necessary. 1342 1343 <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1344 1345 @throws ConfigurationException if this injector cannot find or create the binding.]]> 1346 </doc> 1347 </method> 1348 <method name="getBinding" return="com.google.inject.Binding<T>" 1349 abstract="true" native="false" synchronized="false" 1350 static="false" final="false" visibility="public" 1351 deprecated="not deprecated"> 1352 <param name="type" type="java.lang.Class<T>"/> 1353 <doc> 1354 <![CDATA[Returns the binding for the given type. This will be an explicit bindings if the injection key 1355 was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will 1356 be created if necessary. 1357 1358 <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1359 1360 @throws ConfigurationException if this injector cannot find or create the binding. 1361 @since 2.0]]> 1362 </doc> 1363 </method> 1364 <method name="getExistingBinding" return="com.google.inject.Binding<T>" 1365 abstract="true" native="false" synchronized="false" 1366 static="false" final="false" visibility="public" 1367 deprecated="not deprecated"> 1368 <param name="key" type="com.google.inject.Key<T>"/> 1369 <doc> 1370 <![CDATA[Returns the binding if it already exists, or null if does not exist. Unlike 1371 {@link #getBinding(Key)}, this does not attempt to create just-in-time bindings 1372 for keys that aren't bound. 1373 1374 <p> This method is part of the Guice SPI and is intended for use by tools and extensions. 1375 1376 @since 3.0]]> 1377 </doc> 1378 </method> 1379 <method name="findBindingsByType" return="java.util.List<com.google.inject.Binding<T>>" 1380 abstract="true" native="false" synchronized="false" 1381 static="false" final="false" visibility="public" 1382 deprecated="not deprecated"> 1383 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 1384 <doc> 1385 <![CDATA[Returns all explicit bindings for {@code type}. 1386 1387 <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]> 1388 </doc> 1389 </method> 1390 <method name="getProvider" return="com.google.inject.Provider<T>" 1391 abstract="true" native="false" synchronized="false" 1392 static="false" final="false" visibility="public" 1393 deprecated="not deprecated"> 1394 <param name="key" type="com.google.inject.Key<T>"/> 1395 <doc> 1396 <![CDATA[Returns the provider used to obtain instances for the given injection key. When feasible, avoid 1397 using this method, in favor of having Guice inject your dependencies ahead of time. 1398 1399 @throws ConfigurationException if this injector cannot find or create the provider. 1400 @see Binder#getProvider(Key) for an alternative that offers up front error detection]]> 1401 </doc> 1402 </method> 1403 <method name="getProvider" return="com.google.inject.Provider<T>" 1404 abstract="true" native="false" synchronized="false" 1405 static="false" final="false" visibility="public" 1406 deprecated="not deprecated"> 1407 <param name="type" type="java.lang.Class<T>"/> 1408 <doc> 1409 <![CDATA[Returns the provider used to obtain instances for the given type. When feasible, avoid 1410 using this method, in favor of having Guice inject your dependencies ahead of time. 1411 1412 @throws ConfigurationException if this injector cannot find or create the provider. 1413 @see Binder#getProvider(Class) for an alternative that offers up front error detection]]> 1414 </doc> 1415 </method> 1416 <method name="getInstance" return="T" 1417 abstract="true" native="false" synchronized="false" 1418 static="false" final="false" visibility="public" 1419 deprecated="not deprecated"> 1420 <param name="key" type="com.google.inject.Key<T>"/> 1421 <doc> 1422 <![CDATA[Returns the appropriate instance for the given injection key; equivalent to {@code 1423 getProvider(key).get()}. When feasible, avoid using this method, in favor of having Guice 1424 inject your dependencies ahead of time. 1425 1426 @throws ConfigurationException if this injector cannot find or create the provider. 1427 @throws ProvisionException if there was a runtime failure while providing an instance.]]> 1428 </doc> 1429 </method> 1430 <method name="getInstance" return="T" 1431 abstract="true" native="false" synchronized="false" 1432 static="false" final="false" visibility="public" 1433 deprecated="not deprecated"> 1434 <param name="type" type="java.lang.Class<T>"/> 1435 <doc> 1436 <![CDATA[Returns the appropriate instance for the given injection type; equivalent to {@code 1437 getProvider(type).get()}. When feasible, avoid using this method, in favor of having Guice 1438 inject your dependencies ahead of time. 1439 1440 @throws ConfigurationException if this injector cannot find or create the provider. 1441 @throws ProvisionException if there was a runtime failure while providing an instance.]]> 1442 </doc> 1443 </method> 1444 <method name="getParent" return="com.google.inject.Injector" 1445 abstract="true" native="false" synchronized="false" 1446 static="false" final="false" visibility="public" 1447 deprecated="not deprecated"> 1448 <doc> 1449 <![CDATA[Returns this injector's parent, or {@code null} if this is a top-level injector. 1450 1451 @since 2.0]]> 1452 </doc> 1453 </method> 1454 <method name="createChildInjector" return="com.google.inject.Injector" 1455 abstract="true" native="false" synchronized="false" 1456 static="false" final="false" visibility="public" 1457 deprecated="not deprecated"> 1458 <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 1459 <doc> 1460 <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes, 1461 interceptors and type converters are inherited -- they are visible to the child injector. 1462 Elements of the child injector are not visible to its parent. 1463 1464 <p>Just-in-time bindings created for child injectors will be created in an ancestor injector 1465 whenever possible. This allows for scoped instances to be shared between injectors. Use 1466 explicit bindings to prevent bindings from being shared with the parent injector. Optional 1467 injections in just-in-time bindings (created in the parent injector) may be silently 1468 ignored if the optional dependencies are from the child injector. 1469 1470 <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time 1471 bindings. The lone exception is the key for {@code Injector.class}, which is bound by each 1472 injector to itself. 1473 1474 @since 2.0]]> 1475 </doc> 1476 </method> 1477 <method name="createChildInjector" return="com.google.inject.Injector" 1478 abstract="true" native="false" synchronized="false" 1479 static="false" final="false" visibility="public" 1480 deprecated="not deprecated"> 1481 <param name="modules" type="com.google.inject.Module[]"/> 1482 <doc> 1483 <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes, 1484 interceptors and type converters are inherited -- they are visible to the child injector. 1485 Elements of the child injector are not visible to its parent. 1486 1487 <p>Just-in-time bindings created for child injectors will be created in an ancestor injector 1488 whenever possible. This allows for scoped instances to be shared between injectors. Use 1489 explicit bindings to prevent bindings from being shared with the parent injector. 1490 1491 <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time 1492 bindings. The lone exception is the key for {@code Injector.class}, which is bound by each 1493 injector to itself. 1494 1495 @since 2.0]]> 1496 </doc> 1497 </method> 1498 <method name="getScopeBindings" return="java.util.Map<java.lang.Class<? extends java.lang.annotation.Annotation>, com.google.inject.Scope>" 1499 abstract="true" native="false" synchronized="false" 1500 static="false" final="false" visibility="public" 1501 deprecated="not deprecated"> 1502 <doc> 1503 <![CDATA[Returns a map containing all scopes in the injector. The maps keys are scoping annotations 1504 like {@code Singleton.class}, and the values are scope instances, such as {@code 1505 Scopes.SINGLETON}. The returned map is immutable. 1506 1507 <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1508 1509 @since 3.0]]> 1510 </doc> 1511 </method> 1512 <method name="getTypeConverterBindings" return="java.util.Set<com.google.inject.spi.TypeConverterBinding>" 1513 abstract="true" native="false" synchronized="false" 1514 static="false" final="false" visibility="public" 1515 deprecated="not deprecated"> 1516 <doc> 1517 <![CDATA[Returns a set containing all type converter bindings in the injector. The returned set is 1518 immutable. 1519 1520 <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1521 1522 @since 3.0]]> 1523 </doc> 1524 </method> 1525 <doc> 1526 <![CDATA[Builds the graphs of objects that make up your application. The injector tracks the dependencies 1527 for each type and uses bindings to inject them. This is the core of Guice, although you rarely 1528 interact with it directly. This "behind-the-scenes" operation is what distinguishes dependency 1529 injection from its cousin, the service locator pattern. 1530 1531 <p>Contains several default bindings: 1532 1533 <ul> 1534 <li>This {@link Injector} instance itself 1535 <li>A {@code Provider<T>} for each binding of type {@code T} 1536 <li>The {@link java.util.logging.Logger} for the class being injected 1537 <li>The {@link Stage} in which the Injector was created 1538 </ul> 1539 1540 Injectors are created using the facade class {@link Guice}. 1541 1542 <p>An injector can also {@link #injectMembers(Object) inject the dependencies} of 1543 already-constructed instances. This can be used to interoperate with objects created by other 1544 frameworks or services. 1545 1546 <p>Injectors can be {@link #createChildInjector(Iterable) hierarchical}. Child injectors inherit 1547 the configuration of their parent injectors, but the converse does not hold. 1548 1549 <p>The injector's {@link #getBindings() internal bindings} are available for introspection. This 1550 enables tools and extensions to operate on an injector reflectively. 1551 1552 @author crazybob@google.com (Bob Lee) 1553 @author jessewilson@google.com (Jesse Wilson)]]> 1554 </doc> 1555 </interface> 1556 <!-- end interface com.google.inject.Injector --> 1557 <!-- start class com.google.inject.Key --> 1558 <class name="Key" extends="java.lang.Object" 1559 abstract="false" 1560 static="false" final="false" visibility="public" 1561 deprecated="not deprecated"> 1562 <constructor name="Key" type="java.lang.Class<? extends java.lang.annotation.Annotation>" 1563 static="false" final="false" visibility="protected" 1564 deprecated="not deprecated"> 1565 <doc> 1566 <![CDATA[Constructs a new key. Derives the type from this class's type parameter. 1567 1568 <p>Clients create an empty anonymous subclass. Doing so embeds the type 1569 parameter in the anonymous class's type hierarchy so we can reconstitute it 1570 at runtime despite erasure. 1571 1572 <p>Example usage for a binding of type {@code Foo} annotated with 1573 {@code @Bar}: 1574 1575 <p>{@code new Key<Foo>(Bar.class) {}}.]]> 1576 </doc> 1577 </constructor> 1578 <constructor name="Key" type="java.lang.annotation.Annotation" 1579 static="false" final="false" visibility="protected" 1580 deprecated="not deprecated"> 1581 <doc> 1582 <![CDATA[Constructs a new key. Derives the type from this class's type parameter. 1583 1584 <p>Clients create an empty anonymous subclass. Doing so embeds the type 1585 parameter in the anonymous class's type hierarchy so we can reconstitute it 1586 at runtime despite erasure. 1587 1588 <p>Example usage for a binding of type {@code Foo} annotated with 1589 {@code @Bar}: 1590 1591 <p>{@code new Key<Foo>(new Bar()) {}}.]]> 1592 </doc> 1593 </constructor> 1594 <constructor name="Key" 1595 static="false" final="false" visibility="protected" 1596 deprecated="not deprecated"> 1597 <doc> 1598 <![CDATA[Constructs a new key. Derives the type from this class's type parameter. 1599 1600 <p>Clients create an empty anonymous subclass. Doing so embeds the type 1601 parameter in the anonymous class's type hierarchy so we can reconstitute it 1602 at runtime despite erasure. 1603 1604 <p>Example usage for a binding of type {@code Foo}: 1605 1606 <p>{@code new Key<Foo>() {}}.]]> 1607 </doc> 1608 </constructor> 1609 <method name="getTypeLiteral" return="com.google.inject.TypeLiteral<T>" 1610 abstract="false" native="false" synchronized="false" 1611 static="false" final="true" visibility="public" 1612 deprecated="not deprecated"> 1613 <doc> 1614 <![CDATA[Gets the key type.]]> 1615 </doc> 1616 </method> 1617 <method name="getAnnotationType" return="java.lang.Class<? extends java.lang.annotation.Annotation>" 1618 abstract="false" native="false" synchronized="false" 1619 static="false" final="true" visibility="public" 1620 deprecated="not deprecated"> 1621 <doc> 1622 <![CDATA[Gets the annotation type.]]> 1623 </doc> 1624 </method> 1625 <method name="getAnnotation" return="java.lang.annotation.Annotation" 1626 abstract="false" native="false" synchronized="false" 1627 static="false" final="true" visibility="public" 1628 deprecated="not deprecated"> 1629 <doc> 1630 <![CDATA[Gets the annotation.]]> 1631 </doc> 1632 </method> 1633 <method name="equals" return="boolean" 1634 abstract="false" native="false" synchronized="false" 1635 static="false" final="true" visibility="public" 1636 deprecated="not deprecated"> 1637 <param name="o" type="java.lang.Object"/> 1638 </method> 1639 <method name="hashCode" return="int" 1640 abstract="false" native="false" synchronized="false" 1641 static="false" final="true" visibility="public" 1642 deprecated="not deprecated"> 1643 </method> 1644 <method name="toString" return="java.lang.String" 1645 abstract="false" native="false" synchronized="false" 1646 static="false" final="true" visibility="public" 1647 deprecated="not deprecated"> 1648 </method> 1649 <method name="get" return="com.google.inject.Key<T>" 1650 abstract="false" native="false" synchronized="false" 1651 static="true" final="false" visibility="public" 1652 deprecated="not deprecated"> 1653 <param name="type" type="java.lang.Class<T>"/> 1654 <doc> 1655 <![CDATA[Gets a key for an injection type.]]> 1656 </doc> 1657 </method> 1658 <method name="get" return="com.google.inject.Key<T>" 1659 abstract="false" native="false" synchronized="false" 1660 static="true" final="false" visibility="public" 1661 deprecated="not deprecated"> 1662 <param name="type" type="java.lang.Class<T>"/> 1663 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 1664 <doc> 1665 <![CDATA[Gets a key for an injection type and an annotation type.]]> 1666 </doc> 1667 </method> 1668 <method name="get" return="com.google.inject.Key<T>" 1669 abstract="false" native="false" synchronized="false" 1670 static="true" final="false" visibility="public" 1671 deprecated="not deprecated"> 1672 <param name="type" type="java.lang.Class<T>"/> 1673 <param name="annotation" type="java.lang.annotation.Annotation"/> 1674 <doc> 1675 <![CDATA[Gets a key for an injection type and an annotation.]]> 1676 </doc> 1677 </method> 1678 <method name="get" return="com.google.inject.Key<?>" 1679 abstract="false" native="false" synchronized="false" 1680 static="true" final="false" visibility="public" 1681 deprecated="not deprecated"> 1682 <param name="type" type="java.lang.reflect.Type"/> 1683 <doc> 1684 <![CDATA[Gets a key for an injection type.]]> 1685 </doc> 1686 </method> 1687 <method name="get" return="com.google.inject.Key<?>" 1688 abstract="false" native="false" synchronized="false" 1689 static="true" final="false" visibility="public" 1690 deprecated="not deprecated"> 1691 <param name="type" type="java.lang.reflect.Type"/> 1692 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 1693 <doc> 1694 <![CDATA[Gets a key for an injection type and an annotation type.]]> 1695 </doc> 1696 </method> 1697 <method name="get" return="com.google.inject.Key<?>" 1698 abstract="false" native="false" synchronized="false" 1699 static="true" final="false" visibility="public" 1700 deprecated="not deprecated"> 1701 <param name="type" type="java.lang.reflect.Type"/> 1702 <param name="annotation" type="java.lang.annotation.Annotation"/> 1703 <doc> 1704 <![CDATA[Gets a key for an injection type and an annotation.]]> 1705 </doc> 1706 </method> 1707 <method name="get" return="com.google.inject.Key<T>" 1708 abstract="false" native="false" synchronized="false" 1709 static="true" final="false" visibility="public" 1710 deprecated="not deprecated"> 1711 <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1712 <doc> 1713 <![CDATA[Gets a key for an injection type.]]> 1714 </doc> 1715 </method> 1716 <method name="get" return="com.google.inject.Key<T>" 1717 abstract="false" native="false" synchronized="false" 1718 static="true" final="false" visibility="public" 1719 deprecated="not deprecated"> 1720 <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1721 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 1722 <doc> 1723 <![CDATA[Gets a key for an injection type and an annotation type.]]> 1724 </doc> 1725 </method> 1726 <method name="get" return="com.google.inject.Key<T>" 1727 abstract="false" native="false" synchronized="false" 1728 static="true" final="false" visibility="public" 1729 deprecated="not deprecated"> 1730 <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1731 <param name="annotation" type="java.lang.annotation.Annotation"/> 1732 <doc> 1733 <![CDATA[Gets a key for an injection type and an annotation.]]> 1734 </doc> 1735 </method> 1736 <method name="ofType" return="com.google.inject.Key<T>" 1737 abstract="false" native="false" synchronized="false" 1738 static="false" final="false" visibility="public" 1739 deprecated="not deprecated"> 1740 <param name="type" type="java.lang.Class<T>"/> 1741 <doc> 1742 <![CDATA[Returns a new key of the specified type with the same annotation as this 1743 key. 1744 1745 @since 3.0]]> 1746 </doc> 1747 </method> 1748 <method name="ofType" return="com.google.inject.Key<?>" 1749 abstract="false" native="false" synchronized="false" 1750 static="false" final="false" visibility="public" 1751 deprecated="not deprecated"> 1752 <param name="type" type="java.lang.reflect.Type"/> 1753 <doc> 1754 <![CDATA[Returns a new key of the specified type with the same annotation as this 1755 key. 1756 1757 @since 3.0]]> 1758 </doc> 1759 </method> 1760 <method name="ofType" return="com.google.inject.Key<T>" 1761 abstract="false" native="false" synchronized="false" 1762 static="false" final="false" visibility="public" 1763 deprecated="not deprecated"> 1764 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 1765 <doc> 1766 <![CDATA[Returns a new key of the specified type with the same annotation as this 1767 key. 1768 1769 @since 3.0]]> 1770 </doc> 1771 </method> 1772 <method name="hasAttributes" return="boolean" 1773 abstract="false" native="false" synchronized="false" 1774 static="false" final="false" visibility="public" 1775 deprecated="not deprecated"> 1776 <doc> 1777 <![CDATA[Returns true if this key has annotation attributes. 1778 1779 @since 3.0]]> 1780 </doc> 1781 </method> 1782 <method name="withoutAttributes" return="com.google.inject.Key<T>" 1783 abstract="false" native="false" synchronized="false" 1784 static="false" final="false" visibility="public" 1785 deprecated="not deprecated"> 1786 <doc> 1787 <![CDATA[Returns this key without annotation attributes, i.e. with only the 1788 annotation type. 1789 1790 @since 3.0]]> 1791 </doc> 1792 </method> 1793 <doc> 1794 <![CDATA[Binding key consisting of an injection type and an optional annotation. 1795 Matches the type and annotation at a point of injection. 1796 1797 <p>For example, {@code Key.get(Service.class, Transactional.class)} will 1798 match: 1799 1800 <pre> 1801 {@literal @}Inject 1802 public void setService({@literal @}Transactional Service service) { 1803 ... 1804 } 1805 </pre> 1806 1807 <p>{@code Key} supports generic types via subclassing just like {@link 1808 TypeLiteral}. 1809 1810 <p>Keys do not differentiate between primitive types (int, char, etc.) and 1811 their corresponding wrapper types (Integer, Character, etc.). Primitive 1812 types will be replaced with their wrapper types when keys are created. 1813 1814 @author crazybob@google.com (Bob Lee)]]> 1815 </doc> 1816 </class> 1817 <!-- end class com.google.inject.Key --> 1818 <!-- start interface com.google.inject.MembersInjector --> 1819 <interface name="MembersInjector" abstract="true" 1820 static="false" final="false" visibility="public" 1821 deprecated="not deprecated"> 1822 <method name="injectMembers" 1823 abstract="true" native="false" synchronized="false" 1824 static="false" final="false" visibility="public" 1825 deprecated="not deprecated"> 1826 <param name="instance" type="T"/> 1827 <doc> 1828 <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or 1829 absence of an injectable constructor. 1830 1831 <p>Whenever Guice creates an instance, it performs this injection automatically (after first 1832 performing constructor injection), so if you're able to let Guice create all your objects for 1833 you, you'll never need to use this method. 1834 1835 @param instance to inject members on. May be {@code null}.]]> 1836 </doc> 1837 </method> 1838 <doc> 1839 <![CDATA[Injects dependencies into the fields and methods on instances of type {@code T}. Ignores the 1840 presence or absence of an injectable constructor. 1841 1842 @param <T> type to inject members of 1843 1844 @author crazybob@google.com (Bob Lee) 1845 @author jessewilson@google.com (Jesse Wilson) 1846 @since 2.0]]> 1847 </doc> 1848 </interface> 1849 <!-- end interface com.google.inject.MembersInjector --> 1850 <!-- start interface com.google.inject.Module --> 1851 <interface name="Module" abstract="true" 1852 static="false" final="false" visibility="public" 1853 deprecated="not deprecated"> 1854 <method name="configure" 1855 abstract="true" native="false" synchronized="false" 1856 static="false" final="false" visibility="public" 1857 deprecated="not deprecated"> 1858 <param name="binder" type="com.google.inject.Binder"/> 1859 <doc> 1860 <![CDATA[Contributes bindings and other configurations for this module to {@code binder}. 1861 1862 <p><strong>Do not invoke this method directly</strong> to install submodules. Instead use 1863 {@link Binder#install(Module)}, which ensures that {@link Provides provider methods} are 1864 discovered.]]> 1865 </doc> 1866 </method> 1867 <doc> 1868 <![CDATA[A module contributes configuration information, typically interface 1869 bindings, which will be used to create an {@link Injector}. A Guice-based 1870 application is ultimately composed of little more than a set of 1871 {@code Module}s and some bootstrapping code. 1872 1873 <p>Your Module classes can use a more streamlined syntax by extending 1874 {@link AbstractModule} rather than implementing this interface directly. 1875 1876 <p>In addition to the bindings configured via {@link #configure}, bindings 1877 will be created for all methods annotated with {@literal @}{@link Provides}. 1878 Use scope and binding annotations on these methods to configure the 1879 bindings.]]> 1880 </doc> 1881 </interface> 1882 <!-- end interface com.google.inject.Module --> 1883 <!-- start class com.google.inject.OutOfScopeException --> 1884 <class name="OutOfScopeException" extends="java.lang.RuntimeException" 1885 abstract="false" 1886 static="false" final="true" visibility="public" 1887 deprecated="not deprecated"> 1888 <constructor name="OutOfScopeException" type="java.lang.String" 1889 static="false" final="false" visibility="public" 1890 deprecated="not deprecated"> 1891 </constructor> 1892 <constructor name="OutOfScopeException" type="java.lang.String, java.lang.Throwable" 1893 static="false" final="false" visibility="public" 1894 deprecated="not deprecated"> 1895 </constructor> 1896 <constructor name="OutOfScopeException" type="java.lang.Throwable" 1897 static="false" final="false" visibility="public" 1898 deprecated="not deprecated"> 1899 </constructor> 1900 <doc> 1901 <![CDATA[Thrown from {@link Provider#get} when an attempt is made to access a scoped 1902 object while the scope in question is not currently active. 1903 1904 @author kevinb@google.com (Kevin Bourrillion) 1905 @since 2.0]]> 1906 </doc> 1907 </class> 1908 <!-- end class com.google.inject.OutOfScopeException --> 1909 <!-- start interface com.google.inject.PrivateBinder --> 1910 <interface name="PrivateBinder" abstract="true" 1911 static="false" final="false" visibility="public" 1912 deprecated="not deprecated"> 1913 <implements name="com.google.inject.Binder"/> 1914 <method name="expose" 1915 abstract="true" native="false" synchronized="false" 1916 static="false" final="false" visibility="public" 1917 deprecated="not deprecated"> 1918 <param name="key" type="com.google.inject.Key<?>"/> 1919 <doc> 1920 <![CDATA[Makes the binding for {@code key} available to the enclosing environment]]> 1921 </doc> 1922 </method> 1923 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 1924 abstract="true" native="false" synchronized="false" 1925 static="false" final="false" visibility="public" 1926 deprecated="not deprecated"> 1927 <param name="type" type="java.lang.Class<?>"/> 1928 <doc> 1929 <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link 1930 com.google.inject.binder.AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 1931 binding annotation.]]> 1932 </doc> 1933 </method> 1934 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 1935 abstract="true" native="false" synchronized="false" 1936 static="false" final="false" visibility="public" 1937 deprecated="not deprecated"> 1938 <param name="type" type="com.google.inject.TypeLiteral<?>"/> 1939 <doc> 1940 <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link 1941 AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 1942 binding annotation.]]> 1943 </doc> 1944 </method> 1945 <method name="withSource" return="com.google.inject.PrivateBinder" 1946 abstract="true" native="false" synchronized="false" 1947 static="false" final="false" visibility="public" 1948 deprecated="not deprecated"> 1949 <param name="source" type="java.lang.Object"/> 1950 </method> 1951 <method name="skipSources" return="com.google.inject.PrivateBinder" 1952 abstract="true" native="false" synchronized="false" 1953 static="false" final="false" visibility="public" 1954 deprecated="not deprecated"> 1955 <param name="classesToSkip" type="java.lang.Class[]"/> 1956 </method> 1957 <doc> 1958 <![CDATA[Returns a binder whose configuration information is hidden from its environment by default. See 1959 {@link com.google.inject.PrivateModule PrivateModule} for details. 1960 1961 @author jessewilson@google.com (Jesse Wilson) 1962 @since 2.0]]> 1963 </doc> 1964 </interface> 1965 <!-- end interface com.google.inject.PrivateBinder --> 1966 <!-- start class com.google.inject.PrivateModule --> 1967 <class name="PrivateModule" extends="java.lang.Object" 1968 abstract="true" 1969 static="false" final="false" visibility="public" 1970 deprecated="not deprecated"> 1971 <implements name="com.google.inject.Module"/> 1972 <constructor name="PrivateModule" 1973 static="false" final="false" visibility="public" 1974 deprecated="not deprecated"> 1975 </constructor> 1976 <method name="configure" 1977 abstract="false" native="false" synchronized="true" 1978 static="false" final="true" visibility="public" 1979 deprecated="not deprecated"> 1980 <param name="binder" type="com.google.inject.Binder"/> 1981 </method> 1982 <method name="configure" 1983 abstract="true" native="false" synchronized="false" 1984 static="false" final="false" visibility="protected" 1985 deprecated="not deprecated"> 1986 <doc> 1987 <![CDATA[Creates bindings and other configurations private to this module. Use {@link #expose(Class) 1988 expose()} to make the bindings in this module available externally.]]> 1989 </doc> 1990 </method> 1991 <method name="expose" 1992 abstract="false" native="false" synchronized="false" 1993 static="false" final="true" visibility="protected" 1994 deprecated="not deprecated"> 1995 <param name="key" type="com.google.inject.Key<T>"/> 1996 <doc> 1997 <![CDATA[Makes the binding for {@code key} available to other modules and the injector.]]> 1998 </doc> 1999 </method> 2000 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 2001 abstract="false" native="false" synchronized="false" 2002 static="false" final="true" visibility="protected" 2003 deprecated="not deprecated"> 2004 <param name="type" type="java.lang.Class<?>"/> 2005 <doc> 2006 <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link 2007 AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 2008 binding annotation.]]> 2009 </doc> 2010 </method> 2011 <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 2012 abstract="false" native="false" synchronized="false" 2013 static="false" final="true" visibility="protected" 2014 deprecated="not deprecated"> 2015 <param name="type" type="com.google.inject.TypeLiteral<?>"/> 2016 <doc> 2017 <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link 2018 AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 2019 binding annotation.]]> 2020 </doc> 2021 </method> 2022 <method name="binder" return="com.google.inject.PrivateBinder" 2023 abstract="false" native="false" synchronized="false" 2024 static="false" final="true" visibility="protected" 2025 deprecated="not deprecated"> 2026 <doc> 2027 <![CDATA[Returns the current binder.]]> 2028 </doc> 2029 </method> 2030 <method name="bindScope" 2031 abstract="false" native="false" synchronized="false" 2032 static="false" final="true" visibility="protected" 2033 deprecated="not deprecated"> 2034 <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 2035 <param name="scope" type="com.google.inject.Scope"/> 2036 <doc> 2037 <![CDATA[@see Binder#bindScope(Class, Scope)]]> 2038 </doc> 2039 </method> 2040 <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder<T>" 2041 abstract="false" native="false" synchronized="false" 2042 static="false" final="true" visibility="protected" 2043 deprecated="not deprecated"> 2044 <param name="key" type="com.google.inject.Key<T>"/> 2045 <doc> 2046 <![CDATA[@see Binder#bind(Key)]]> 2047 </doc> 2048 </method> 2049 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 2050 abstract="false" native="false" synchronized="false" 2051 static="false" final="true" visibility="protected" 2052 deprecated="not deprecated"> 2053 <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 2054 <doc> 2055 <![CDATA[@see Binder#bind(TypeLiteral)]]> 2056 </doc> 2057 </method> 2058 <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 2059 abstract="false" native="false" synchronized="false" 2060 static="false" final="true" visibility="protected" 2061 deprecated="not deprecated"> 2062 <param name="clazz" type="java.lang.Class<T>"/> 2063 <doc> 2064 <![CDATA[@see Binder#bind(Class)]]> 2065 </doc> 2066 </method> 2067 <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder" 2068 abstract="false" native="false" synchronized="false" 2069 static="false" final="true" visibility="protected" 2070 deprecated="not deprecated"> 2071 <doc> 2072 <![CDATA[@see Binder#bindConstant()]]> 2073 </doc> 2074 </method> 2075 <method name="install" 2076 abstract="false" native="false" synchronized="false" 2077 static="false" final="true" visibility="protected" 2078 deprecated="not deprecated"> 2079 <param name="module" type="com.google.inject.Module"/> 2080 <doc> 2081 <![CDATA[@see Binder#install(Module)]]> 2082 </doc> 2083 </method> 2084 <method name="addError" 2085 abstract="false" native="false" synchronized="false" 2086 static="false" final="true" visibility="protected" 2087 deprecated="not deprecated"> 2088 <param name="message" type="java.lang.String"/> 2089 <param name="arguments" type="java.lang.Object[]"/> 2090 <doc> 2091 <![CDATA[@see Binder#addError(String, Object[])]]> 2092 </doc> 2093 </method> 2094 <method name="addError" 2095 abstract="false" native="false" synchronized="false" 2096 static="false" final="true" visibility="protected" 2097 deprecated="not deprecated"> 2098 <param name="t" type="java.lang.Throwable"/> 2099 <doc> 2100 <![CDATA[@see Binder#addError(Throwable)]]> 2101 </doc> 2102 </method> 2103 <method name="addError" 2104 abstract="false" native="false" synchronized="false" 2105 static="false" final="true" visibility="protected" 2106 deprecated="not deprecated"> 2107 <param name="message" type="com.google.inject.spi.Message"/> 2108 <doc> 2109 <![CDATA[@see Binder#addError(Message)]]> 2110 </doc> 2111 </method> 2112 <method name="requestInjection" 2113 abstract="false" native="false" synchronized="false" 2114 static="false" final="true" visibility="protected" 2115 deprecated="not deprecated"> 2116 <param name="instance" type="java.lang.Object"/> 2117 <doc> 2118 <![CDATA[@see Binder#requestInjection(Object)]]> 2119 </doc> 2120 </method> 2121 <method name="requestStaticInjection" 2122 abstract="false" native="false" synchronized="false" 2123 static="false" final="true" visibility="protected" 2124 deprecated="not deprecated"> 2125 <param name="types" type="java.lang.Class[]"/> 2126 <doc> 2127 <![CDATA[@see Binder#requestStaticInjection(Class[])]]> 2128 </doc> 2129 </method> 2130 <method name="bindInterceptor" 2131 abstract="false" native="false" synchronized="false" 2132 static="false" final="true" visibility="protected" 2133 deprecated="not deprecated"> 2134 <param name="classMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>"/> 2135 <param name="methodMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>"/> 2136 <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/> 2137 <doc> 2138 <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher, com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])]]> 2139 </doc> 2140 </method> 2141 <method name="requireBinding" 2142 abstract="false" native="false" synchronized="false" 2143 static="false" final="true" visibility="protected" 2144 deprecated="not deprecated"> 2145 <param name="key" type="com.google.inject.Key<?>"/> 2146 <doc> 2147 <![CDATA[Instructs Guice to require a binding to the given key.]]> 2148 </doc> 2149 </method> 2150 <method name="requireBinding" 2151 abstract="false" native="false" synchronized="false" 2152 static="false" final="true" visibility="protected" 2153 deprecated="not deprecated"> 2154 <param name="type" type="java.lang.Class<?>"/> 2155 <doc> 2156 <![CDATA[Instructs Guice to require a binding to the given type.]]> 2157 </doc> 2158 </method> 2159 <method name="getProvider" return="com.google.inject.Provider<T>" 2160 abstract="false" native="false" synchronized="false" 2161 static="false" final="true" visibility="protected" 2162 deprecated="not deprecated"> 2163 <param name="key" type="com.google.inject.Key<T>"/> 2164 <doc> 2165 <![CDATA[@see Binder#getProvider(Key)]]> 2166 </doc> 2167 </method> 2168 <method name="getProvider" return="com.google.inject.Provider<T>" 2169 abstract="false" native="false" synchronized="false" 2170 static="false" final="true" visibility="protected" 2171 deprecated="not deprecated"> 2172 <param name="type" type="java.lang.Class<T>"/> 2173 <doc> 2174 <![CDATA[@see Binder#getProvider(Class)]]> 2175 </doc> 2176 </method> 2177 <method name="convertToTypes" 2178 abstract="false" native="false" synchronized="false" 2179 static="false" final="true" visibility="protected" 2180 deprecated="not deprecated"> 2181 <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> 2182 <param name="converter" type="com.google.inject.spi.TypeConverter"/> 2183 <doc> 2184 <![CDATA[@see Binder#convertToTypes(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeConverter)]]> 2185 </doc> 2186 </method> 2187 <method name="currentStage" return="com.google.inject.Stage" 2188 abstract="false" native="false" synchronized="false" 2189 static="false" final="true" visibility="protected" 2190 deprecated="not deprecated"> 2191 <doc> 2192 <![CDATA[@see Binder#currentStage()]]> 2193 </doc> 2194 </method> 2195 <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 2196 abstract="false" native="false" synchronized="false" 2197 static="false" final="false" visibility="protected" 2198 deprecated="not deprecated"> 2199 <param name="type" type="java.lang.Class<T>"/> 2200 <doc> 2201 <![CDATA[@see Binder#getMembersInjector(Class)]]> 2202 </doc> 2203 </method> 2204 <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 2205 abstract="false" native="false" synchronized="false" 2206 static="false" final="false" visibility="protected" 2207 deprecated="not deprecated"> 2208 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 2209 <doc> 2210 <![CDATA[@see Binder#getMembersInjector(TypeLiteral)]]> 2211 </doc> 2212 </method> 2213 <method name="bindListener" 2214 abstract="false" native="false" synchronized="false" 2215 static="false" final="false" visibility="protected" 2216 deprecated="not deprecated"> 2217 <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> 2218 <param name="listener" type="com.google.inject.spi.TypeListener"/> 2219 <doc> 2220 <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeListener)]]> 2221 </doc> 2222 </method> 2223 <method name="bindListener" 2224 abstract="false" native="false" synchronized="false" 2225 static="false" final="false" visibility="protected" 2226 deprecated="not deprecated"> 2227 <param name="bindingMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.Binding<?>>"/> 2228 <param name="listeners" type="com.google.inject.spi.ProvisionListener[]"/> 2229 <doc> 2230 <![CDATA[@see Binder#bindListener(Matcher, ProvisionListener...) 2231 @since 4.0]]> 2232 </doc> 2233 </method> 2234 <doc> 2235 <![CDATA[A module whose configuration information is hidden from its environment by default. Only bindings 2236 that are explicitly exposed will be available to other modules and to the users of the injector. 2237 This module may expose the bindings it creates and the bindings of the modules it installs. 2238 2239 <p>A private module can be nested within a regular module or within another private module using 2240 {@link Binder#install install()}. Its bindings live in a new environment that inherits bindings, 2241 type converters, scopes, and interceptors from the surrounding ("parent") environment. When you 2242 nest multiple private modules, the result is a tree of environments where the injector's 2243 environment is the root. 2244 2245 <p>Guice EDSL bindings can be exposed with {@link #expose(Class) expose()}. {@literal @}{@link 2246 com.google.inject.Provides Provides} bindings can be exposed with the {@literal @}{@link 2247 Exposed} annotation: 2248 2249 <pre> 2250 public class FooBarBazModule extends PrivateModule { 2251 protected void configure() { 2252 bind(Foo.class).to(RealFoo.class); 2253 expose(Foo.class); 2254 2255 install(new TransactionalBarModule()); 2256 expose(Bar.class).annotatedWith(Transactional.class); 2257 2258 bind(SomeImplementationDetail.class); 2259 install(new MoreImplementationDetailsModule()); 2260 } 2261 2262 {@literal @}Provides {@literal @}Exposed 2263 public Baz provideBaz() { 2264 return new SuperBaz(); 2265 } 2266 } 2267 </pre> 2268 2269 <p>Private modules are implemented using {@link Injector#createChildInjector(Module[]) parent 2270 injectors}. When it can satisfy their dependencies, just-in-time bindings will be created in the 2271 root environment. Such bindings are shared among all environments in the tree. 2272 2273 <p>The scope of a binding is constrained to its environment. A singleton bound in a private 2274 module will be unique to its environment. But a binding for the same type in a different private 2275 module will yield a different instance. 2276 2277 <p>A shared binding that injects the {@code Injector} gets the root injector, which only has 2278 access to bindings in the root environment. An explicit binding that injects the {@code Injector} 2279 gets access to all bindings in the child environment. 2280 2281 <p>To promote a just-in-time binding to an explicit binding, bind it: 2282 <pre> 2283 bind(FooImpl.class); 2284 </pre> 2285 2286 @author jessewilson@google.com (Jesse Wilson) 2287 @since 2.0]]> 2288 </doc> 2289 </class> 2290 <!-- end class com.google.inject.PrivateModule --> 2291 <!-- start class com.google.inject.ProvidedBy --> 2292 <class name="ProvidedBy" abstract="true" 2293 static="false" final="false" visibility="public" 2294 deprecated="not deprecated"> 2295 <implements name="java.lang.annotation.Annotation"/> 2296 <doc> 2297 <![CDATA[A pointer to the default provider type for a type. 2298 2299 @author crazybob@google.com (Bob Lee)]]> 2300 </doc> 2301 </class> 2302 <!-- end class com.google.inject.ProvidedBy --> 2303 <!-- start interface com.google.inject.Provider --> 2304 <interface name="Provider" abstract="true" 2305 static="false" final="false" visibility="public" 2306 deprecated="not deprecated"> 2307 <implements name="javax.inject.Provider<T>"/> 2308 <method name="get" return="T" 2309 abstract="true" native="false" synchronized="false" 2310 static="false" final="false" visibility="public" 2311 deprecated="not deprecated"> 2312 <doc> 2313 <![CDATA[Provides an instance of {@code T}. Must never return {@code null}. 2314 2315 @throws OutOfScopeException when an attempt is made to access a scoped object while the scope 2316 in question is not currently active 2317 @throws ProvisionException if an instance cannot be provided. Such exceptions include messages 2318 and throwables to describe why provision failed.]]> 2319 </doc> 2320 </method> 2321 <doc> 2322 <![CDATA[An object capable of providing instances of type {@code T}. Providers are used in numerous ways 2323 by Guice: 2324 2325 <ul> 2326 <li>When the default means for obtaining instances (an injectable or parameterless constructor) 2327 is insufficient for a particular binding, the module can specify a custom {@code Provider} 2328 instead, to control exactly how Guice creates or obtains instances for the binding. 2329 2330 <li>An implementation class may always choose to have a {@code Provider<T>} instance injected, 2331 rather than having a {@code T} injected directly. This may give you access to multiple 2332 instances, instances you wish to safely mutate and discard, instances which are out of scope 2333 (e.g. using a {@code @RequestScoped} object from within a {@code @SessionScoped} object), or 2334 instances that will be initialized lazily. 2335 2336 <li>A custom {@link Scope} is implemented as a decorator of {@code Provider<T>}, which decides 2337 when to delegate to the backing provider and when to provide the instance some other way. 2338 2339 <li>The {@link Injector} offers access to the {@code Provider<T>} it uses to fulfill requests 2340 for a given key, via the {@link Injector#getProvider} methods. 2341 </ul> 2342 2343 @param <T> the type of object this provides 2344 2345 @author crazybob@google.com (Bob Lee)]]> 2346 </doc> 2347 </interface> 2348 <!-- end interface com.google.inject.Provider --> 2349 <!-- start class com.google.inject.Provides --> 2350 <class name="Provides" abstract="true" 2351 static="false" final="false" visibility="public" 2352 deprecated="not deprecated"> 2353 <implements name="java.lang.annotation.Annotation"/> 2354 <doc> 2355 <![CDATA[Annotates methods of a {@link Module} to create a provider method binding. The method's return 2356 type is bound to its returned value. Guice will pass dependencies to the method as parameters. 2357 2358 @author crazybob@google.com (Bob Lee) 2359 @since 2.0]]> 2360 </doc> 2361 </class> 2362 <!-- end class com.google.inject.Provides --> 2363 <!-- start class com.google.inject.ProvisionException --> 2364 <class name="ProvisionException" extends="java.lang.RuntimeException" 2365 abstract="false" 2366 static="false" final="true" visibility="public" 2367 deprecated="not deprecated"> 2368 <constructor name="ProvisionException" type="java.lang.Iterable<com.google.inject.spi.Message>" 2369 static="false" final="false" visibility="public" 2370 deprecated="not deprecated"> 2371 <doc> 2372 <![CDATA[Creates a ProvisionException containing {@code messages}.]]> 2373 </doc> 2374 </constructor> 2375 <constructor name="ProvisionException" type="java.lang.String, java.lang.Throwable" 2376 static="false" final="false" visibility="public" 2377 deprecated="not deprecated"> 2378 </constructor> 2379 <constructor name="ProvisionException" type="java.lang.String" 2380 static="false" final="false" visibility="public" 2381 deprecated="not deprecated"> 2382 </constructor> 2383 <method name="getErrorMessages" return="java.util.Collection<com.google.inject.spi.Message>" 2384 abstract="false" native="false" synchronized="false" 2385 static="false" final="false" visibility="public" 2386 deprecated="not deprecated"> 2387 <doc> 2388 <![CDATA[Returns messages for the errors that caused this exception.]]> 2389 </doc> 2390 </method> 2391 <method name="getMessage" return="java.lang.String" 2392 abstract="false" native="false" synchronized="false" 2393 static="false" final="false" visibility="public" 2394 deprecated="not deprecated"> 2395 </method> 2396 <doc> 2397 <![CDATA[Indicates that there was a runtime failure while providing an instance. 2398 2399 @author kevinb@google.com (Kevin Bourrillion) 2400 @author jessewilson@google.com (Jesse Wilson) 2401 @since 2.0]]> 2402 </doc> 2403 </class> 2404 <!-- end class com.google.inject.ProvisionException --> 2405 <!-- start interface com.google.inject.Scope --> 2406 <interface name="Scope" abstract="true" 2407 static="false" final="false" visibility="public" 2408 deprecated="not deprecated"> 2409 <method name="scope" return="com.google.inject.Provider<T>" 2410 abstract="true" native="false" synchronized="false" 2411 static="false" final="false" visibility="public" 2412 deprecated="not deprecated"> 2413 <param name="key" type="com.google.inject.Key<T>"/> 2414 <param name="unscoped" type="com.google.inject.Provider<T>"/> 2415 <doc> 2416 <![CDATA[Scopes a provider. The returned provider returns objects from this scope. 2417 If an object does not exist in this scope, the provider can use the given 2418 unscoped provider to retrieve one. 2419 2420 <p>Scope implementations are strongly encouraged to override 2421 {@link Object#toString} in the returned provider and include the backing 2422 provider's {@code toString()} output. 2423 2424 @param key binding key 2425 @param unscoped locates an instance when one doesn't already exist in this 2426 scope. 2427 @return a new provider which only delegates to the given unscoped provider 2428 when an instance of the requested object doesn't already exist in this 2429 scope]]> 2430 </doc> 2431 </method> 2432 <method name="toString" return="java.lang.String" 2433 abstract="true" native="false" synchronized="false" 2434 static="false" final="false" visibility="public" 2435 deprecated="not deprecated"> 2436 <doc> 2437 <![CDATA[A short but useful description of this scope. For comparison, the standard 2438 scopes that ship with guice use the descriptions 2439 {@code "Scopes.SINGLETON"}, {@code "ServletScopes.SESSION"} and 2440 {@code "ServletScopes.REQUEST"}.]]> 2441 </doc> 2442 </method> 2443 <doc> 2444 <![CDATA[A scope is a level of visibility that instances provided by Guice may have. 2445 By default, an instance created by the {@link Injector} has <i>no scope</i>, 2446 meaning it has no state from the framework's perspective -- the 2447 {@code Injector} creates it, injects it once into the class that required it, 2448 and then immediately forgets it. Associating a scope with a particular 2449 binding allows the created instance to be "remembered" and possibly used 2450 again for other injections. 2451 2452 <p>An example of a scope is {@link Scopes#SINGLETON}. 2453 2454 @author crazybob@google.com (Bob Lee)]]> 2455 </doc> 2456 </interface> 2457 <!-- end interface com.google.inject.Scope --> 2458 <!-- start class com.google.inject.ScopeAnnotation --> 2459 <class name="ScopeAnnotation" abstract="true" 2460 static="false" final="false" visibility="public" 2461 deprecated="not deprecated"> 2462 <implements name="java.lang.annotation.Annotation"/> 2463 <doc> 2464 <![CDATA[Annotates annotations which are used for scoping. Only one such annotation 2465 may apply to a single implementation class. You must also annotate scope 2466 annotations with {@code @Retention(RUNTIME)}. For example: 2467 2468 <pre> 2469 {@code @}Retention(RUNTIME) 2470 {@code @}Target(TYPE, METHOD) 2471 {@code @}ScopeAnnotation 2472 public {@code @}interface SessionScoped {} 2473 </pre> 2474 2475 @author crazybob@google.com (Bob Lee)]]> 2476 </doc> 2477 </class> 2478 <!-- end class com.google.inject.ScopeAnnotation --> 2479 <!-- start class com.google.inject.Scopes --> 2480 <class name="Scopes" extends="java.lang.Object" 2481 abstract="false" 2482 static="false" final="false" visibility="public" 2483 deprecated="not deprecated"> 2484 <method name="isSingleton" return="boolean" 2485 abstract="false" native="false" synchronized="false" 2486 static="true" final="false" visibility="public" 2487 deprecated="not deprecated"> 2488 <param name="binding" type="com.google.inject.Binding<?>"/> 2489 <doc> 2490 <![CDATA[Returns true if {@code binding} is singleton-scoped. If the binding is a {@link 2491 com.google.inject.spi.LinkedKeyBinding linked key binding} and belongs to an injector (ie. it 2492 was retrieved via {@link Injector#getBinding Injector.getBinding()}), then this method will 2493 also true if the target binding is singleton-scoped. 2494 2495 @since 3.0]]> 2496 </doc> 2497 </method> 2498 <method name="isScoped" return="boolean" 2499 abstract="false" native="false" synchronized="false" 2500 static="true" final="false" visibility="public" 2501 deprecated="not deprecated"> 2502 <param name="binding" type="com.google.inject.Binding<?>"/> 2503 <param name="scope" type="com.google.inject.Scope"/> 2504 <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 2505 <doc> 2506 <![CDATA[Returns true if {@code binding} has the given scope. If the binding is a {@link 2507 com.google.inject.spi.LinkedKeyBinding linked key binding} and belongs to an injector (ie. it 2508 was retrieved via {@link Injector#getBinding Injector.getBinding()}), then this method will 2509 also true if the target binding has the given scope. 2510 2511 @param binding binding to check 2512 @param scope scope implementation instance 2513 @param scopeAnnotation scope annotation class 2514 @since 4.0]]> 2515 </doc> 2516 </method> 2517 <method name="isCircularProxy" return="boolean" 2518 abstract="false" native="false" synchronized="false" 2519 static="true" final="false" visibility="public" 2520 deprecated="not deprecated"> 2521 <param name="object" type="java.lang.Object"/> 2522 <doc> 2523 <![CDATA[Returns true if the object is a proxy for a circular dependency, 2524 constructed by Guice because it encountered a circular dependency. Scope 2525 implementations should be careful to <b>not cache circular proxies</b>, 2526 because the proxies are not intended for general purpose use. (They are 2527 designed just to fulfill the immediate injection, not all injections. 2528 Caching them can lead to IllegalArgumentExceptions or ClassCastExceptions.) 2529 2530 @since 4.0]]> 2531 </doc> 2532 </method> 2533 <field name="SINGLETON" type="com.google.inject.Scope" 2534 transient="false" volatile="false" 2535 static="true" final="true" visibility="public" 2536 deprecated="not deprecated"> 2537 <doc> 2538 <![CDATA[One instance per {@link Injector}. Also see {@code @}{@link Singleton}.]]> 2539 </doc> 2540 </field> 2541 <field name="NO_SCOPE" type="com.google.inject.Scope" 2542 transient="false" volatile="false" 2543 static="true" final="true" visibility="public" 2544 deprecated="not deprecated"> 2545 <doc> 2546 <![CDATA[No scope; the same as not applying any scope at all. Each time the 2547 Injector obtains an instance of an object with "no scope", it injects this 2548 instance then immediately forgets it. When the next request for the same 2549 binding arrives it will need to obtain the instance over again. 2550 2551 <p>This exists only in case a class has been annotated with a scope 2552 annotation such as {@link Singleton @Singleton}, and you need to override 2553 this to "no scope" in your binding. 2554 2555 @since 2.0]]> 2556 </doc> 2557 </field> 2558 <doc> 2559 <![CDATA[Built-in scope implementations. 2560 2561 @author crazybob@google.com (Bob Lee)]]> 2562 </doc> 2563 </class> 2564 <!-- end class com.google.inject.Scopes --> 2565 <!-- start class com.google.inject.Singleton --> 2566 <class name="Singleton" abstract="true" 2567 static="false" final="false" visibility="public" 2568 deprecated="not deprecated"> 2569 <implements name="java.lang.annotation.Annotation"/> 2570 <doc> 2571 <![CDATA[Apply this to implementation classes when you want only one instance 2572 (per {@link Injector}) to be reused for all injections for that binding. 2573 2574 @author crazybob@google.com (Bob Lee)]]> 2575 </doc> 2576 </class> 2577 <!-- end class com.google.inject.Singleton --> 2578 <!-- start class com.google.inject.Stage --> 2579 <class name="Stage" extends="java.lang.Enum<com.google.inject.Stage>" 2580 abstract="false" 2581 static="false" final="true" visibility="public" 2582 deprecated="not deprecated"> 2583 <method name="values" return="com.google.inject.Stage[]" 2584 abstract="false" native="false" synchronized="false" 2585 static="true" final="false" visibility="public" 2586 deprecated="not deprecated"> 2587 </method> 2588 <method name="valueOf" return="com.google.inject.Stage" 2589 abstract="false" native="false" synchronized="false" 2590 static="true" final="false" visibility="public" 2591 deprecated="not deprecated"> 2592 <param name="name" type="java.lang.String"/> 2593 </method> 2594 <doc> 2595 <![CDATA[The stage we're running in. 2596 2597 @author crazybob@google.com (Bob Lee)]]> 2598 </doc> 2599 </class> 2600 <!-- end class com.google.inject.Stage --> 2601 <!-- start class com.google.inject.TypeLiteral --> 2602 <class name="TypeLiteral" extends="java.lang.Object" 2603 abstract="false" 2604 static="false" final="false" visibility="public" 2605 deprecated="not deprecated"> 2606 <constructor name="TypeLiteral" 2607 static="false" final="false" visibility="protected" 2608 deprecated="not deprecated"> 2609 <doc> 2610 <![CDATA[Constructs a new type literal. Derives represented class from type 2611 parameter. 2612 2613 <p>Clients create an empty anonymous subclass. Doing so embeds the type 2614 parameter in the anonymous class's type hierarchy so we can reconstitute it 2615 at runtime despite erasure.]]> 2616 </doc> 2617 </constructor> 2618 <method name="getRawType" return="java.lang.Class<? super T>" 2619 abstract="false" native="false" synchronized="false" 2620 static="false" final="true" visibility="public" 2621 deprecated="not deprecated"> 2622 <doc> 2623 <![CDATA[Returns the raw (non-generic) type for this type. 2624 2625 @since 2.0]]> 2626 </doc> 2627 </method> 2628 <method name="getType" return="java.lang.reflect.Type" 2629 abstract="false" native="false" synchronized="false" 2630 static="false" final="true" visibility="public" 2631 deprecated="not deprecated"> 2632 <doc> 2633 <![CDATA[Gets underlying {@code Type} instance.]]> 2634 </doc> 2635 </method> 2636 <method name="hashCode" return="int" 2637 abstract="false" native="false" synchronized="false" 2638 static="false" final="true" visibility="public" 2639 deprecated="not deprecated"> 2640 </method> 2641 <method name="equals" return="boolean" 2642 abstract="false" native="false" synchronized="false" 2643 static="false" final="true" visibility="public" 2644 deprecated="not deprecated"> 2645 <param name="o" type="java.lang.Object"/> 2646 </method> 2647 <method name="toString" return="java.lang.String" 2648 abstract="false" native="false" synchronized="false" 2649 static="false" final="true" visibility="public" 2650 deprecated="not deprecated"> 2651 </method> 2652 <method name="get" return="com.google.inject.TypeLiteral<?>" 2653 abstract="false" native="false" synchronized="false" 2654 static="true" final="false" visibility="public" 2655 deprecated="not deprecated"> 2656 <param name="type" type="java.lang.reflect.Type"/> 2657 <doc> 2658 <![CDATA[Gets type literal for the given {@code Type} instance.]]> 2659 </doc> 2660 </method> 2661 <method name="get" return="com.google.inject.TypeLiteral<T>" 2662 abstract="false" native="false" synchronized="false" 2663 static="true" final="false" visibility="public" 2664 deprecated="not deprecated"> 2665 <param name="type" type="java.lang.Class<T>"/> 2666 <doc> 2667 <![CDATA[Gets type literal for the given {@code Class} instance.]]> 2668 </doc> 2669 </method> 2670 <method name="getSupertype" return="com.google.inject.TypeLiteral<?>" 2671 abstract="false" native="false" synchronized="false" 2672 static="false" final="false" visibility="public" 2673 deprecated="not deprecated"> 2674 <param name="supertype" type="java.lang.Class<?>"/> 2675 <doc> 2676 <![CDATA[Returns the generic form of {@code supertype}. For example, if this is {@code 2677 ArrayList<String>}, this returns {@code Iterable<String>} given the input {@code 2678 Iterable.class}. 2679 2680 @param supertype a superclass of, or interface implemented by, this. 2681 @since 2.0]]> 2682 </doc> 2683 </method> 2684 <method name="getFieldType" return="com.google.inject.TypeLiteral<?>" 2685 abstract="false" native="false" synchronized="false" 2686 static="false" final="false" visibility="public" 2687 deprecated="not deprecated"> 2688 <param name="field" type="java.lang.reflect.Field"/> 2689 <doc> 2690 <![CDATA[Returns the resolved generic type of {@code field}. 2691 2692 @param field a field defined by this or any superclass. 2693 @since 2.0]]> 2694 </doc> 2695 </method> 2696 <method name="getParameterTypes" return="java.util.List<com.google.inject.TypeLiteral<?>>" 2697 abstract="false" native="false" synchronized="false" 2698 static="false" final="false" visibility="public" 2699 deprecated="not deprecated"> 2700 <param name="methodOrConstructor" type="java.lang.reflect.Member"/> 2701 <doc> 2702 <![CDATA[Returns the resolved generic parameter types of {@code methodOrConstructor}. 2703 2704 @param methodOrConstructor a method or constructor defined by this or any supertype. 2705 @since 2.0]]> 2706 </doc> 2707 </method> 2708 <method name="getExceptionTypes" return="java.util.List<com.google.inject.TypeLiteral<?>>" 2709 abstract="false" native="false" synchronized="false" 2710 static="false" final="false" visibility="public" 2711 deprecated="not deprecated"> 2712 <param name="methodOrConstructor" type="java.lang.reflect.Member"/> 2713 <doc> 2714 <![CDATA[Returns the resolved generic exception types thrown by {@code constructor}. 2715 2716 @param methodOrConstructor a method or constructor defined by this or any supertype. 2717 @since 2.0]]> 2718 </doc> 2719 </method> 2720 <method name="getReturnType" return="com.google.inject.TypeLiteral<?>" 2721 abstract="false" native="false" synchronized="false" 2722 static="false" final="false" visibility="public" 2723 deprecated="not deprecated"> 2724 <param name="method" type="java.lang.reflect.Method"/> 2725 <doc> 2726 <![CDATA[Returns the resolved generic return type of {@code method}. 2727 2728 @param method a method defined by this or any supertype. 2729 @since 2.0]]> 2730 </doc> 2731 </method> 2732 <doc> 2733 <![CDATA[Represents a generic type {@code T}. Java doesn't yet provide a way to 2734 represent generic types, so this class does. Forces clients to create a 2735 subclass of this class which enables retrieval the type information even at 2736 runtime. 2737 2738 <p>For example, to create a type literal for {@code List<String>}, you can 2739 create an empty anonymous inner class: 2740 2741 <p> 2742 {@code TypeLiteral<List<String>> list = new TypeLiteral<List<String>>() {};} 2743 2744 <p>Along with modeling generic types, this class can resolve type parameters. 2745 For example, to figure out what type {@code keySet()} returns on a {@code 2746 Map<Integer, String>}, use this code:<pre> {@code 2747 2748 TypeLiteral<Map<Integer, String>> mapType 2749 = new TypeLiteral<Map<Integer, String>>() {}; 2750 TypeLiteral<?> keySetType 2751 = mapType.getReturnType(Map.class.getMethod("keySet")); 2752 System.out.println(keySetType); // prints "Set<Integer>"}</pre> 2753 2754 @author crazybob@google.com (Bob Lee) 2755 @author jessewilson@google.com (Jesse Wilson)]]> 2756 </doc> 2757 </class> 2758 <!-- end class com.google.inject.TypeLiteral --> 2759</package> 2760<package name="com.google.inject.assistedinject"> 2761 <!-- start class com.google.inject.assistedinject.Assisted --> 2762 <class name="Assisted" abstract="true" 2763 static="false" final="false" visibility="public" 2764 deprecated="not deprecated"> 2765 <implements name="java.lang.annotation.Annotation"/> 2766 <doc> 2767 <![CDATA[Annotates an injected parameter or field whose value comes from an argument to a factory method. 2768 2769 @author jmourits@google.com (Jerome Mourits) 2770 @author jessewilson@google.com (Jesse Wilson)]]> 2771 </doc> 2772 </class> 2773 <!-- end class com.google.inject.assistedinject.Assisted --> 2774 <!-- start class com.google.inject.assistedinject.AssistedInject --> 2775 <class name="AssistedInject" abstract="true" 2776 static="false" final="false" visibility="public" 2777 deprecated="not deprecated"> 2778 <implements name="java.lang.annotation.Annotation"/> 2779 <doc> 2780 <![CDATA[<p> 2781 When used in tandem with {@link FactoryModuleBuilder}, constructors annotated with 2782 {@code @AssistedInject} indicate that multiple constructors can be injected, each with different 2783 parameters. AssistedInject annotations should not be mixed with {@literal @}{@link Inject} 2784 annotations. The assisted parameters must exactly match one corresponding factory method within 2785 the factory interface, but the parameters do not need to be in the same order. Constructors 2786 annotated with AssistedInject <b>are</b> created by Guice and receive all the benefits 2787 (such as AOP). 2788 2789 <p> 2790 <strong>Obsolete Usage:</strong> When used in tandem with {@link FactoryProvider}, constructors 2791 annotated with {@code @AssistedInject} trigger a "backwards compatibility mode". The assisted 2792 parameters must exactly match one corresponding factory method within the factory interface and 2793 all must be in the same order as listed in the factory. In this backwards compatable mode, 2794 constructors annotated with AssistedInject <b>are not</b> created by Guice and thus receive 2795 none of the benefits. 2796 2797 <p> 2798 Constructor parameters must be either supplied by the factory interface and marked with 2799 <code>@Assisted</code>, or they must be injectable. 2800 2801 @author jmourits@google.com (Jerome Mourits) 2802 @author jessewilson@google.com (Jesse Wilson)]]> 2803 </doc> 2804 </class> 2805 <!-- end class com.google.inject.assistedinject.AssistedInject --> 2806 <!-- start interface com.google.inject.assistedinject.AssistedInjectBinding --> 2807 <interface name="AssistedInjectBinding" abstract="true" 2808 static="false" final="false" visibility="public" 2809 deprecated="not deprecated"> 2810 <method name="getKey" return="com.google.inject.Key<T>" 2811 abstract="true" native="false" synchronized="false" 2812 static="false" final="false" visibility="public" 2813 deprecated="not deprecated"> 2814 <doc> 2815 <![CDATA[Returns the {@link Key} for the factory binding.]]> 2816 </doc> 2817 </method> 2818 <method name="getAssistedMethods" return="java.util.Collection<com.google.inject.assistedinject.AssistedMethod>" 2819 abstract="true" native="false" synchronized="false" 2820 static="false" final="false" visibility="public" 2821 deprecated="not deprecated"> 2822 <doc> 2823 <![CDATA[Returns an {@link AssistedMethod} for each method in the factory.]]> 2824 </doc> 2825 </method> 2826 <doc> 2827 <![CDATA[A binding for a factory created by FactoryModuleBuilder. 2828 2829 @param <T> The fully qualified type of the factory. 2830 2831 @since 3.0 2832 @author ramakrishna@google.com (Ramakrishna Rajanna)]]> 2833 </doc> 2834 </interface> 2835 <!-- end interface com.google.inject.assistedinject.AssistedInjectBinding --> 2836 <!-- start interface com.google.inject.assistedinject.AssistedInjectTargetVisitor --> 2837 <interface name="AssistedInjectTargetVisitor" abstract="true" 2838 static="false" final="false" visibility="public" 2839 deprecated="not deprecated"> 2840 <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 2841 <method name="visit" return="V" 2842 abstract="true" native="false" synchronized="false" 2843 static="false" final="false" visibility="public" 2844 deprecated="not deprecated"> 2845 <param name="assistedInjectBinding" type="com.google.inject.assistedinject.AssistedInjectBinding<? extends T>"/> 2846 <doc> 2847 <![CDATA[Visits an {@link AssistedInjectBinding} created through {@link FactoryModuleBuilder}.]]> 2848 </doc> 2849 </method> 2850 <doc> 2851 <![CDATA[A visitor for the AssistedInject extension. 2852 <p> 2853 If your {@link BindingTargetVisitor} implements this interface, bindings created by using 2854 {@link FactoryModuleBuilder} will be visited through this interface. 2855 2856 @since 3.0 2857 @author ramakrishna@google.com (Ramakrishna Rajanna)]]> 2858 </doc> 2859 </interface> 2860 <!-- end interface com.google.inject.assistedinject.AssistedInjectTargetVisitor --> 2861 <!-- start interface com.google.inject.assistedinject.AssistedMethod --> 2862 <interface name="AssistedMethod" abstract="true" 2863 static="false" final="false" visibility="public" 2864 deprecated="not deprecated"> 2865 <method name="getFactoryMethod" return="java.lang.reflect.Method" 2866 abstract="true" native="false" synchronized="false" 2867 static="false" final="false" visibility="public" 2868 deprecated="not deprecated"> 2869 <doc> 2870 <![CDATA[Returns the factory method that is being assisted.]]> 2871 </doc> 2872 </method> 2873 <method name="getImplementationType" return="com.google.inject.TypeLiteral<?>" 2874 abstract="true" native="false" synchronized="false" 2875 static="false" final="false" visibility="public" 2876 deprecated="not deprecated"> 2877 <doc> 2878 <![CDATA[Returns the implementation type that will be created when the method is 2879 used.]]> 2880 </doc> 2881 </method> 2882 <method name="getImplementationConstructor" return="java.lang.reflect.Constructor<?>" 2883 abstract="true" native="false" synchronized="false" 2884 static="false" final="false" visibility="public" 2885 deprecated="not deprecated"> 2886 <doc> 2887 <![CDATA[Returns the constructor that will be used to construct instances of the 2888 implementation.]]> 2889 </doc> 2890 </method> 2891 <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 2892 abstract="true" native="false" synchronized="false" 2893 static="false" final="false" visibility="public" 2894 deprecated="not deprecated"> 2895 <doc> 2896 <![CDATA[Returns all non-assisted dependencies required to construct and inject 2897 the implementation.]]> 2898 </doc> 2899 </method> 2900 <doc> 2901 <![CDATA[Details about how a method in an assisted inject factory will be assisted. 2902 2903 @since 3.0 2904 @author ramakrishna@google.com (Ramakrishna Rajanna)]]> 2905 </doc> 2906 </interface> 2907 <!-- end interface com.google.inject.assistedinject.AssistedMethod --> 2908 <!-- start class com.google.inject.assistedinject.FactoryModuleBuilder --> 2909 <class name="FactoryModuleBuilder" extends="java.lang.Object" 2910 abstract="false" 2911 static="false" final="true" visibility="public" 2912 deprecated="not deprecated"> 2913 <constructor name="FactoryModuleBuilder" 2914 static="false" final="false" visibility="public" 2915 deprecated="not deprecated"> 2916 </constructor> 2917 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2918 abstract="false" native="false" synchronized="false" 2919 static="false" final="false" visibility="public" 2920 deprecated="not deprecated"> 2921 <param name="source" type="java.lang.Class<T>"/> 2922 <param name="target" type="java.lang.Class<? extends T>"/> 2923 <doc> 2924 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2925 </doc> 2926 </method> 2927 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2928 abstract="false" native="false" synchronized="false" 2929 static="false" final="false" visibility="public" 2930 deprecated="not deprecated"> 2931 <param name="source" type="java.lang.Class<T>"/> 2932 <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2933 <doc> 2934 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2935 </doc> 2936 </method> 2937 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2938 abstract="false" native="false" synchronized="false" 2939 static="false" final="false" visibility="public" 2940 deprecated="not deprecated"> 2941 <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2942 <param name="target" type="java.lang.Class<? extends T>"/> 2943 <doc> 2944 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2945 </doc> 2946 </method> 2947 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2948 abstract="false" native="false" synchronized="false" 2949 static="false" final="false" visibility="public" 2950 deprecated="not deprecated"> 2951 <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2952 <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2953 <doc> 2954 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2955 </doc> 2956 </method> 2957 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2958 abstract="false" native="false" synchronized="false" 2959 static="false" final="false" visibility="public" 2960 deprecated="not deprecated"> 2961 <param name="source" type="java.lang.Class<T>"/> 2962 <param name="annotation" type="java.lang.annotation.Annotation"/> 2963 <param name="target" type="java.lang.Class<? extends T>"/> 2964 <doc> 2965 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2966 </doc> 2967 </method> 2968 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2969 abstract="false" native="false" synchronized="false" 2970 static="false" final="false" visibility="public" 2971 deprecated="not deprecated"> 2972 <param name="source" type="java.lang.Class<T>"/> 2973 <param name="annotation" type="java.lang.annotation.Annotation"/> 2974 <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2975 <doc> 2976 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2977 </doc> 2978 </method> 2979 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2980 abstract="false" native="false" synchronized="false" 2981 static="false" final="false" visibility="public" 2982 deprecated="not deprecated"> 2983 <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2984 <param name="annotation" type="java.lang.annotation.Annotation"/> 2985 <param name="target" type="java.lang.Class<? extends T>"/> 2986 <doc> 2987 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2988 </doc> 2989 </method> 2990 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2991 abstract="false" native="false" synchronized="false" 2992 static="false" final="false" visibility="public" 2993 deprecated="not deprecated"> 2994 <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2995 <param name="annotation" type="java.lang.annotation.Annotation"/> 2996 <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2997 <doc> 2998 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2999 </doc> 3000 </method> 3001 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 3002 abstract="false" native="false" synchronized="false" 3003 static="false" final="false" visibility="public" 3004 deprecated="not deprecated"> 3005 <param name="source" type="java.lang.Class<T>"/> 3006 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3007 <param name="target" type="java.lang.Class<? extends T>"/> 3008 <doc> 3009 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3010 </doc> 3011 </method> 3012 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 3013 abstract="false" native="false" synchronized="false" 3014 static="false" final="false" visibility="public" 3015 deprecated="not deprecated"> 3016 <param name="source" type="java.lang.Class<T>"/> 3017 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3018 <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 3019 <doc> 3020 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3021 </doc> 3022 </method> 3023 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 3024 abstract="false" native="false" synchronized="false" 3025 static="false" final="false" visibility="public" 3026 deprecated="not deprecated"> 3027 <param name="source" type="com.google.inject.TypeLiteral<T>"/> 3028 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3029 <param name="target" type="java.lang.Class<? extends T>"/> 3030 <doc> 3031 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3032 </doc> 3033 </method> 3034 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 3035 abstract="false" native="false" synchronized="false" 3036 static="false" final="false" visibility="public" 3037 deprecated="not deprecated"> 3038 <param name="source" type="com.google.inject.TypeLiteral<T>"/> 3039 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3040 <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 3041 <doc> 3042 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3043 </doc> 3044 </method> 3045 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 3046 abstract="false" native="false" synchronized="false" 3047 static="false" final="false" visibility="public" 3048 deprecated="not deprecated"> 3049 <param name="source" type="com.google.inject.Key<T>"/> 3050 <param name="target" type="java.lang.Class<? extends T>"/> 3051 <doc> 3052 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3053 </doc> 3054 </method> 3055 <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 3056 abstract="false" native="false" synchronized="false" 3057 static="false" final="false" visibility="public" 3058 deprecated="not deprecated"> 3059 <param name="source" type="com.google.inject.Key<T>"/> 3060 <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 3061 <doc> 3062 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3063 </doc> 3064 </method> 3065 <method name="build" return="com.google.inject.Module" 3066 abstract="false" native="false" synchronized="false" 3067 static="false" final="false" visibility="public" 3068 deprecated="not deprecated"> 3069 <param name="factoryInterface" type="java.lang.Class<F>"/> 3070 <doc> 3071 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3072 </doc> 3073 </method> 3074 <method name="build" return="com.google.inject.Module" 3075 abstract="false" native="false" synchronized="false" 3076 static="false" final="false" visibility="public" 3077 deprecated="not deprecated"> 3078 <param name="factoryInterface" type="com.google.inject.TypeLiteral<F>"/> 3079 <doc> 3080 <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3081 </doc> 3082 </method> 3083 <method name="build" return="com.google.inject.Module" 3084 abstract="false" native="false" synchronized="false" 3085 static="false" final="false" visibility="public" 3086 deprecated="not deprecated"> 3087 <param name="factoryInterface" type="com.google.inject.Key<F>"/> 3088 </method> 3089 <doc> 3090 <![CDATA[Provides a factory that combines the caller's arguments with injector-supplied values to 3091 construct objects. 3092 3093 <h3>Defining a factory</h3> 3094 Create an interface whose methods return the constructed type, or any of its supertypes. The 3095 method's parameters are the arguments required to build the constructed type. 3096 3097 <pre>public interface PaymentFactory { 3098 Payment create(Date startDate, Money amount); 3099 }</pre> 3100 3101 You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i> 3102 or <i>newPayment</i>. 3103 3104 <h3>Creating a type that accepts factory parameters</h3> 3105 {@code constructedType} is a concrete class with an {@literal @}{@link com.google.inject.Inject 3106 Inject}-annotated constructor. In addition to injector-supplied parameters, the constructor 3107 should have parameters that match each of the factory method's parameters. Each factory-supplied 3108 parameter requires an {@literal @}{@link Assisted} annotation. This serves to document that the 3109 parameter is not bound by your application's modules. 3110 3111 <pre>public class RealPayment implements Payment { 3112 {@literal @}Inject 3113 public RealPayment( 3114 CreditService creditService, 3115 AuthService authService, 3116 <strong>{@literal @}Assisted Date startDate</strong>, 3117 <strong>{@literal @}Assisted Money amount</strong>) { 3118 ... 3119 } 3120 }</pre> 3121 3122 <h3>Multiple factory methods for the same type</h3> 3123 If the factory contains many methods that return the same type, you can create multiple 3124 constructors in your concrete class, each constructor marked with with 3125 {@literal @}{@link AssistedInject}, in order to match the different parameters types of the 3126 factory methods. 3127 3128 <pre>public interface PaymentFactory { 3129 Payment create(Date startDate, Money amount); 3130 Payment createWithoutDate(Money amount); 3131 } 3132 3133 public class RealPayment implements Payment { 3134 {@literal @}AssistedInject 3135 public RealPayment( 3136 CreditService creditService, 3137 AuthService authService, 3138 <strong>{@literal @}Assisted Date startDate</strong>, 3139 <strong>{@literal @}Assisted Money amount</strong>) { 3140 ... 3141 } 3142 3143 {@literal @}AssistedInject 3144 public RealPayment( 3145 CreditService creditService, 3146 AuthService authService, 3147 <strong>{@literal @}Assisted Money amount</strong>) { 3148 ... 3149 } 3150 }</pre> 3151 3152 <h3>Configuring simple factories</h3> 3153 In your {@link Module module}, install a {@code FactoryModuleBuilder} that creates the 3154 factory: 3155 3156 <pre>install(new FactoryModuleBuilder() 3157 .implement(Payment.class, RealPayment.class) 3158 .build(PaymentFactory.class));</pre> 3159 3160 As a side-effect of this binding, Guice will inject the factory to initialize it for use. The 3161 factory cannot be used until the injector has been initialized. 3162 3163 <h3>Configuring complex factories</h3> 3164 Factories can create an arbitrary number of objects, one per each method. Each factory 3165 method can be configured using <code>.implement</code>. 3166 3167 <pre>public interface OrderFactory { 3168 Payment create(Date startDate, Money amount); 3169 Shipment create(Customer customer, Item item); 3170 Receipt create(Payment payment, Shipment shipment); 3171 } 3172 3173 [...] 3174 3175 install(new FactoryModuleBuilder() 3176 .implement(Payment.class, RealPayment.class) 3177 // excluding .implement for Shipment means the implementation class 3178 // will be 'Shipment' itself, which is legal if it's not an interface. 3179 .implement(Receipt.class, RealReceipt.class) 3180 .build(OrderFactory.class));</pre> 3181 </pre> 3182 3183 <h3>Using the factory</h3> 3184 Inject your factory into your application classes. When you use the factory, your arguments 3185 will be combined with values from the injector to construct an instance. 3186 3187 <pre>public class PaymentAction { 3188 {@literal @}Inject private PaymentFactory paymentFactory; 3189 3190 public void doPayment(Money amount) { 3191 Payment payment = paymentFactory.create(new Date(), amount); 3192 payment.apply(); 3193 } 3194 }</pre> 3195 3196 <h3>Making parameter types distinct</h3> 3197 The types of the factory method's parameters must be distinct. To use multiple parameters of 3198 the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the 3199 parameters. The names must be applied to the factory method's parameters: 3200 3201 <pre>public interface PaymentFactory { 3202 Payment create( 3203 <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 3204 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 3205 Money amount); 3206 } </pre> 3207 3208 ...and to the concrete type's constructor parameters: 3209 3210 <pre>public class RealPayment implements Payment { 3211 {@literal @}Inject 3212 public RealPayment( 3213 CreditService creditService, 3214 AuthService authService, 3215 <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 3216 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 3217 <strong>{@literal @}Assisted</strong> Money amount) { 3218 ... 3219 } 3220 }</pre> 3221 3222 <h3>Values are created by Guice</h3> 3223 Returned factories use child injectors to create values. The values are eligible for method 3224 interception. In addition, {@literal @}{@literal Inject} members will be injected before they are 3225 returned. 3226 3227 <h3>More configuration options</h3> 3228 In addition to simply specifying an implementation class for any returned type, factories' return 3229 values can be automatic or can be configured to use annotations: 3230 <p/> 3231 If you just want to return the types specified in the factory, do not configure any 3232 implementations: 3233 3234 <pre>public interface FruitFactory { 3235 Apple getApple(Color color); 3236 } 3237 ... 3238 protected void configure() { 3239 install(new FactoryModuleBuilder().build(FruitFactory.class)); 3240 }</pre> 3241 3242 Note that any type returned by the factory in this manner needs to be an implementation class. 3243 <p/> 3244 To return two different implementations for the same interface from your factory, use binding 3245 annotations on your return types: 3246 3247 <pre>interface CarFactory { 3248 {@literal @}Named("fast") Car getFastCar(Color color); 3249 {@literal @}Named("clean") Car getCleanCar(Color color); 3250 } 3251 ... 3252 protected void configure() { 3253 install(new FactoryModuleBuilder() 3254 .implement(Car.class, Names.named("fast"), Porsche.class) 3255 .implement(Car.class, Names.named("clean"), Prius.class) 3256 .build(CarFactory.class)); 3257 }</pre> 3258 3259 <h3>Implementation limitations</h3> 3260 As a limitation of the implementation, it is prohibited to declare a factory method that 3261 accepts a {@code Provider} as one of its arguments. 3262 3263 @since 3.0 3264 @author schmitt@google.com (Peter Schmitt)]]> 3265 </doc> 3266 </class> 3267 <!-- end class com.google.inject.assistedinject.FactoryModuleBuilder --> 3268 <!-- start class com.google.inject.assistedinject.FactoryProvider --> 3269 <class name="FactoryProvider" extends="java.lang.Object" 3270 abstract="false" 3271 static="false" final="false" visibility="public" 3272 deprecated="use {@link FactoryModuleBuilder} instead."> 3273 <implements name="com.google.inject.Provider<F>"/> 3274 <implements name="com.google.inject.spi.HasDependencies"/> 3275 <method name="newFactory" return="com.google.inject.Provider<F>" 3276 abstract="false" native="false" synchronized="false" 3277 static="true" final="false" visibility="public" 3278 deprecated="not deprecated"> 3279 <param name="factoryType" type="java.lang.Class<F>"/> 3280 <param name="implementationType" type="java.lang.Class<?>"/> 3281 </method> 3282 <method name="newFactory" return="com.google.inject.Provider<F>" 3283 abstract="false" native="false" synchronized="false" 3284 static="true" final="false" visibility="public" 3285 deprecated="not deprecated"> 3286 <param name="factoryType" type="com.google.inject.TypeLiteral<F>"/> 3287 <param name="implementationType" type="com.google.inject.TypeLiteral<?>"/> 3288 </method> 3289 <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 3290 abstract="false" native="false" synchronized="false" 3291 static="false" final="false" visibility="public" 3292 deprecated="not deprecated"> 3293 </method> 3294 <method name="get" return="F" 3295 abstract="false" native="false" synchronized="false" 3296 static="false" final="false" visibility="public" 3297 deprecated="not deprecated"> 3298 </method> 3299 <method name="hashCode" return="int" 3300 abstract="false" native="false" synchronized="false" 3301 static="false" final="false" visibility="public" 3302 deprecated="not deprecated"> 3303 </method> 3304 <method name="equals" return="boolean" 3305 abstract="false" native="false" synchronized="false" 3306 static="false" final="false" visibility="public" 3307 deprecated="not deprecated"> 3308 <param name="obj" type="java.lang.Object"/> 3309 </method> 3310 <doc> 3311 <![CDATA[<strong>Obsolete.</strong> Prefer {@link FactoryModuleBuilder} for its more concise API and 3312 additional capability. 3313 3314 <p>Provides a factory that combines the caller's arguments with injector-supplied values to 3315 construct objects. 3316 3317 <h3>Defining a factory</h3> 3318 Create an interface whose methods return the constructed type, or any of its supertypes. The 3319 method's parameters are the arguments required to build the constructed type. 3320 <pre>public interface PaymentFactory { 3321 Payment create(Date startDate, Money amount); 3322 }</pre> 3323 You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i> 3324 or <i>newPayment</i>. 3325 3326 <h3>Creating a type that accepts factory parameters</h3> 3327 {@code constructedType} is a concrete class with an {@literal @}{@link Inject}-annotated 3328 constructor. In addition to injector-supplied parameters, the constructor should have 3329 parameters that match each of the factory method's parameters. Each factory-supplied parameter 3330 requires an {@literal @}{@link Assisted} annotation. This serves to document that the parameter 3331 is not bound by your application's modules. 3332 <pre>public class RealPayment implements Payment { 3333 {@literal @}Inject 3334 public RealPayment( 3335 CreditService creditService, 3336 AuthService authService, 3337 <strong>{@literal @}Assisted Date startDate</strong>, 3338 <strong>{@literal @}Assisted Money amount</strong>) { 3339 ... 3340 } 3341 }</pre> 3342 Any parameter that permits a null value should also be annotated {@code @Nullable}. 3343 3344 <h3>Configuring factories</h3> 3345 In your {@link com.google.inject.Module module}, bind the factory interface to the returned 3346 factory: 3347 <pre>bind(PaymentFactory.class).toProvider( 3348 FactoryProvider.newFactory(PaymentFactory.class, RealPayment.class));</pre> 3349 As a side-effect of this binding, Guice will inject the factory to initialize it for use. The 3350 factory cannot be used until the injector has been initialized. 3351 3352 <h3>Using the factory</h3> 3353 Inject your factory into your application classes. When you use the factory, your arguments 3354 will be combined with values from the injector to construct an instance. 3355 <pre>public class PaymentAction { 3356 {@literal @}Inject private PaymentFactory paymentFactory; 3357 3358 public void doPayment(Money amount) { 3359 Payment payment = paymentFactory.create(new Date(), amount); 3360 payment.apply(); 3361 } 3362 }</pre> 3363 3364 <h3>Making parameter types distinct</h3> 3365 The types of the factory method's parameters must be distinct. To use multiple parameters of 3366 the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the 3367 parameters. The names must be applied to the factory method's parameters: 3368 3369 <pre>public interface PaymentFactory { 3370 Payment create( 3371 <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 3372 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 3373 Money amount); 3374 } </pre> 3375 ...and to the concrete type's constructor parameters: 3376 <pre>public class RealPayment implements Payment { 3377 {@literal @}Inject 3378 public RealPayment( 3379 CreditService creditService, 3380 AuthService authService, 3381 <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 3382 <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 3383 <strong>{@literal @}Assisted</strong> Money amount) { 3384 ... 3385 } 3386 }</pre> 3387 3388 <h3>Values are created by Guice</h3> 3389 Returned factories use child injectors to create values. The values are eligible for method 3390 interception. In addition, {@literal @}{@literal Inject} members will be injected before they are 3391 returned. 3392 3393 <h3>Backwards compatibility using {@literal @}AssistedInject</h3> 3394 Instead of the {@literal @}Inject annotation, you may annotate the constructed classes with 3395 {@literal @}{@link AssistedInject}. This triggers a limited backwards-compatability mode. 3396 3397 <p>Instead of matching factory method arguments to constructor parameters using their names, the 3398 <strong>parameters are matched by their order</strong>. The first factory method argument is 3399 used for the first {@literal @}Assisted constructor parameter, etc.. Annotation names have no 3400 effect. 3401 3402 <p>Returned values are <strong>not created by Guice</strong>. These types are not eligible for 3403 method interception. They do receive post-construction member injection. 3404 3405 @param <F> The factory interface 3406 3407 @author jmourits@google.com (Jerome Mourits) 3408 @author jessewilson@google.com (Jesse Wilson) 3409 @author dtm@google.com (Daniel Martin) 3410 3411 @deprecated use {@link FactoryModuleBuilder} instead.]]> 3412 </doc> 3413 </class> 3414 <!-- end class com.google.inject.assistedinject.FactoryProvider --> 3415</package> 3416<package name="com.google.inject.binder"> 3417 <!-- start interface com.google.inject.binder.AnnotatedBindingBuilder --> 3418 <interface name="AnnotatedBindingBuilder" abstract="true" 3419 static="false" final="false" visibility="public" 3420 deprecated="not deprecated"> 3421 <implements name="com.google.inject.binder.LinkedBindingBuilder<T>"/> 3422 <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder<T>" 3423 abstract="true" native="false" synchronized="false" 3424 static="false" final="false" visibility="public" 3425 deprecated="not deprecated"> 3426 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3427 <doc> 3428 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3429 </doc> 3430 </method> 3431 <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder<T>" 3432 abstract="true" native="false" synchronized="false" 3433 static="false" final="false" visibility="public" 3434 deprecated="not deprecated"> 3435 <param name="annotation" type="java.lang.annotation.Annotation"/> 3436 <doc> 3437 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3438 </doc> 3439 </method> 3440 <doc> 3441 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3442 3443 @author crazybob@google.com (Bob Lee)]]> 3444 </doc> 3445 </interface> 3446 <!-- end interface com.google.inject.binder.AnnotatedBindingBuilder --> 3447 <!-- start interface com.google.inject.binder.AnnotatedConstantBindingBuilder --> 3448 <interface name="AnnotatedConstantBindingBuilder" abstract="true" 3449 static="false" final="false" visibility="public" 3450 deprecated="not deprecated"> 3451 <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder" 3452 abstract="true" native="false" synchronized="false" 3453 static="false" final="false" visibility="public" 3454 deprecated="not deprecated"> 3455 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3456 <doc> 3457 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3458 </doc> 3459 </method> 3460 <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder" 3461 abstract="true" native="false" synchronized="false" 3462 static="false" final="false" visibility="public" 3463 deprecated="not deprecated"> 3464 <param name="annotation" type="java.lang.annotation.Annotation"/> 3465 <doc> 3466 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3467 </doc> 3468 </method> 3469 <doc> 3470 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3471 3472 @author crazybob@google.com (Bob Lee)]]> 3473 </doc> 3474 </interface> 3475 <!-- end interface com.google.inject.binder.AnnotatedConstantBindingBuilder --> 3476 <!-- start interface com.google.inject.binder.AnnotatedElementBuilder --> 3477 <interface name="AnnotatedElementBuilder" abstract="true" 3478 static="false" final="false" visibility="public" 3479 deprecated="not deprecated"> 3480 <method name="annotatedWith" 3481 abstract="true" native="false" synchronized="false" 3482 static="false" final="false" visibility="public" 3483 deprecated="not deprecated"> 3484 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3485 <doc> 3486 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3487 </doc> 3488 </method> 3489 <method name="annotatedWith" 3490 abstract="true" native="false" synchronized="false" 3491 static="false" final="false" visibility="public" 3492 deprecated="not deprecated"> 3493 <param name="annotation" type="java.lang.annotation.Annotation"/> 3494 <doc> 3495 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3496 </doc> 3497 </method> 3498 <doc> 3499 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3500 3501 @author jessewilson@google.com (Jesse Wilson) 3502 @since 2.0]]> 3503 </doc> 3504 </interface> 3505 <!-- end interface com.google.inject.binder.AnnotatedElementBuilder --> 3506 <!-- start interface com.google.inject.binder.ConstantBindingBuilder --> 3507 <interface name="ConstantBindingBuilder" abstract="true" 3508 static="false" final="false" visibility="public" 3509 deprecated="not deprecated"> 3510 <method name="to" 3511 abstract="true" native="false" synchronized="false" 3512 static="false" final="false" visibility="public" 3513 deprecated="not deprecated"> 3514 <param name="value" type="java.lang.String"/> 3515 <doc> 3516 <![CDATA[Binds constant to the given value.]]> 3517 </doc> 3518 </method> 3519 <method name="to" 3520 abstract="true" native="false" synchronized="false" 3521 static="false" final="false" visibility="public" 3522 deprecated="not deprecated"> 3523 <param name="value" type="int"/> 3524 <doc> 3525 <![CDATA[Binds constant to the given value.]]> 3526 </doc> 3527 </method> 3528 <method name="to" 3529 abstract="true" native="false" synchronized="false" 3530 static="false" final="false" visibility="public" 3531 deprecated="not deprecated"> 3532 <param name="value" type="long"/> 3533 <doc> 3534 <![CDATA[Binds constant to the given value.]]> 3535 </doc> 3536 </method> 3537 <method name="to" 3538 abstract="true" native="false" synchronized="false" 3539 static="false" final="false" visibility="public" 3540 deprecated="not deprecated"> 3541 <param name="value" type="boolean"/> 3542 <doc> 3543 <![CDATA[Binds constant to the given value.]]> 3544 </doc> 3545 </method> 3546 <method name="to" 3547 abstract="true" native="false" synchronized="false" 3548 static="false" final="false" visibility="public" 3549 deprecated="not deprecated"> 3550 <param name="value" type="double"/> 3551 <doc> 3552 <![CDATA[Binds constant to the given value.]]> 3553 </doc> 3554 </method> 3555 <method name="to" 3556 abstract="true" native="false" synchronized="false" 3557 static="false" final="false" visibility="public" 3558 deprecated="not deprecated"> 3559 <param name="value" type="float"/> 3560 <doc> 3561 <![CDATA[Binds constant to the given value.]]> 3562 </doc> 3563 </method> 3564 <method name="to" 3565 abstract="true" native="false" synchronized="false" 3566 static="false" final="false" visibility="public" 3567 deprecated="not deprecated"> 3568 <param name="value" type="short"/> 3569 <doc> 3570 <![CDATA[Binds constant to the given value.]]> 3571 </doc> 3572 </method> 3573 <method name="to" 3574 abstract="true" native="false" synchronized="false" 3575 static="false" final="false" visibility="public" 3576 deprecated="not deprecated"> 3577 <param name="value" type="char"/> 3578 <doc> 3579 <![CDATA[Binds constant to the given value.]]> 3580 </doc> 3581 </method> 3582 <method name="to" 3583 abstract="true" native="false" synchronized="false" 3584 static="false" final="false" visibility="public" 3585 deprecated="not deprecated"> 3586 <param name="value" type="byte"/> 3587 <doc> 3588 <![CDATA[Binds constant to the given value. 3589 3590 @since 3.0]]> 3591 </doc> 3592 </method> 3593 <method name="to" 3594 abstract="true" native="false" synchronized="false" 3595 static="false" final="false" visibility="public" 3596 deprecated="not deprecated"> 3597 <param name="value" type="java.lang.Class<?>"/> 3598 <doc> 3599 <![CDATA[Binds constant to the given value.]]> 3600 </doc> 3601 </method> 3602 <method name="to" 3603 abstract="true" native="false" synchronized="false" 3604 static="false" final="false" visibility="public" 3605 deprecated="not deprecated"> 3606 <param name="value" type="E extends java.lang.Enum<E>"/> 3607 <doc> 3608 <![CDATA[Binds constant to the given value.]]> 3609 </doc> 3610 </method> 3611 <doc> 3612 <![CDATA[Binds to a constant value.]]> 3613 </doc> 3614 </interface> 3615 <!-- end interface com.google.inject.binder.ConstantBindingBuilder --> 3616 <!-- start interface com.google.inject.binder.LinkedBindingBuilder --> 3617 <interface name="LinkedBindingBuilder" abstract="true" 3618 static="false" final="false" visibility="public" 3619 deprecated="not deprecated"> 3620 <implements name="com.google.inject.binder.ScopedBindingBuilder"/> 3621 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 3622 abstract="true" native="false" synchronized="false" 3623 static="false" final="false" visibility="public" 3624 deprecated="not deprecated"> 3625 <param name="implementation" type="java.lang.Class<? extends T>"/> 3626 <doc> 3627 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3628 </doc> 3629 </method> 3630 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 3631 abstract="true" native="false" synchronized="false" 3632 static="false" final="false" visibility="public" 3633 deprecated="not deprecated"> 3634 <param name="implementation" type="com.google.inject.TypeLiteral<? extends T>"/> 3635 <doc> 3636 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3637 </doc> 3638 </method> 3639 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 3640 abstract="true" native="false" synchronized="false" 3641 static="false" final="false" visibility="public" 3642 deprecated="not deprecated"> 3643 <param name="targetKey" type="com.google.inject.Key<? extends T>"/> 3644 <doc> 3645 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3646 </doc> 3647 </method> 3648 <method name="toInstance" 3649 abstract="true" native="false" synchronized="false" 3650 static="false" final="false" visibility="public" 3651 deprecated="not deprecated"> 3652 <param name="instance" type="T"/> 3653 <doc> 3654 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3655 3656 @see com.google.inject.Injector#injectMembers]]> 3657 </doc> 3658 </method> 3659 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3660 abstract="true" native="false" synchronized="false" 3661 static="false" final="false" visibility="public" 3662 deprecated="not deprecated"> 3663 <param name="provider" type="com.google.inject.Provider<? extends T>"/> 3664 <doc> 3665 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3666 3667 @see com.google.inject.Injector#injectMembers]]> 3668 </doc> 3669 </method> 3670 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3671 abstract="true" native="false" synchronized="false" 3672 static="false" final="false" visibility="public" 3673 deprecated="not deprecated"> 3674 <param name="provider" type="javax.inject.Provider<? extends T>"/> 3675 <doc> 3676 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3677 3678 @see com.google.inject.Injector#injectMembers 3679 @since 4.0]]> 3680 </doc> 3681 </method> 3682 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3683 abstract="true" native="false" synchronized="false" 3684 static="false" final="false" visibility="public" 3685 deprecated="not deprecated"> 3686 <param name="providerType" type="java.lang.Class<? extends javax.inject.Provider<? extends T>>"/> 3687 <doc> 3688 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3689 </doc> 3690 </method> 3691 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3692 abstract="true" native="false" synchronized="false" 3693 static="false" final="false" visibility="public" 3694 deprecated="not deprecated"> 3695 <param name="providerType" type="com.google.inject.TypeLiteral<? extends javax.inject.Provider<? extends T>>"/> 3696 <doc> 3697 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3698 </doc> 3699 </method> 3700 <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3701 abstract="true" native="false" synchronized="false" 3702 static="false" final="false" visibility="public" 3703 deprecated="not deprecated"> 3704 <param name="providerKey" type="com.google.inject.Key<? extends javax.inject.Provider<? extends T>>"/> 3705 <doc> 3706 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3707 </doc> 3708 </method> 3709 <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder" 3710 abstract="true" native="false" synchronized="false" 3711 static="false" final="false" visibility="public" 3712 deprecated="not deprecated"> 3713 <param name="constructor" type="java.lang.reflect.Constructor<S>"/> 3714 <doc> 3715 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3716 3717 @since 3.0]]> 3718 </doc> 3719 </method> 3720 <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder" 3721 abstract="true" native="false" synchronized="false" 3722 static="false" final="false" visibility="public" 3723 deprecated="not deprecated"> 3724 <param name="constructor" type="java.lang.reflect.Constructor<S>"/> 3725 <param name="type" type="com.google.inject.TypeLiteral<? extends S>"/> 3726 <doc> 3727 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3728 3729 @since 3.0]]> 3730 </doc> 3731 </method> 3732 <doc> 3733 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3734 3735 @author crazybob@google.com (Bob Lee)]]> 3736 </doc> 3737 </interface> 3738 <!-- end interface com.google.inject.binder.LinkedBindingBuilder --> 3739 <!-- start interface com.google.inject.binder.ScopedBindingBuilder --> 3740 <interface name="ScopedBindingBuilder" abstract="true" 3741 static="false" final="false" visibility="public" 3742 deprecated="not deprecated"> 3743 <method name="in" 3744 abstract="true" native="false" synchronized="false" 3745 static="false" final="false" visibility="public" 3746 deprecated="not deprecated"> 3747 <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3748 <doc> 3749 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3750 </doc> 3751 </method> 3752 <method name="in" 3753 abstract="true" native="false" synchronized="false" 3754 static="false" final="false" visibility="public" 3755 deprecated="not deprecated"> 3756 <param name="scope" type="com.google.inject.Scope"/> 3757 <doc> 3758 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3759 </doc> 3760 </method> 3761 <method name="asEagerSingleton" 3762 abstract="true" native="false" synchronized="false" 3763 static="false" final="false" visibility="public" 3764 deprecated="not deprecated"> 3765 <doc> 3766 <![CDATA[Instructs the {@link com.google.inject.Injector} to eagerly initialize this 3767 singleton-scoped binding upon creation. Useful for application 3768 initialization logic. See the EDSL examples at 3769 {@link com.google.inject.Binder}.]]> 3770 </doc> 3771 </method> 3772 <doc> 3773 <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3774 3775 @author crazybob@google.com (Bob Lee)]]> 3776 </doc> 3777 </interface> 3778 <!-- end interface com.google.inject.binder.ScopedBindingBuilder --> 3779</package> 3780<package name="com.google.inject.daggeradapter"> 3781 <!-- start class com.google.inject.daggeradapter.DaggerAdapter --> 3782 <class name="DaggerAdapter" extends="java.lang.Object" 3783 abstract="false" 3784 static="false" final="true" visibility="public" 3785 deprecated="not deprecated"> 3786 <method name="from" return="com.google.inject.Module" 3787 abstract="false" native="false" synchronized="false" 3788 static="true" final="false" visibility="public" 3789 deprecated="not deprecated"> 3790 <param name="daggerModuleObjects" type="java.lang.Object[]"/> 3791 <doc> 3792 <![CDATA[Returns a guice module from a dagger module. 3793 3794 <p>Note: At present, it does not honor {@code @Module(includes=...)} directives.]]> 3795 </doc> 3796 </method> 3797 <doc> 3798 <![CDATA[A utility to adapt classes annotated with {@link @dagger.Module} such that their 3799 {@link @dagger.Provides} methods can be properly invoked by Guice to perform their 3800 provision operations. 3801 3802 <p>Simple example: <pre>{@code 3803 Guice.createInjector(...other modules..., DaggerAdapter.from(new SomeDaggerAdapter())); 3804 }</pre> 3805 3806 <p>Some notes on usage and compatibility. 3807 <ul> 3808 <li>Dagger provider methods have a "SET_VALUES" provision mode not supported by Guice. 3809 <li>MapBindings are not yet implemented (pending). 3810 <li>Be careful about stateful modules. In contrast to Dagger (where components are 3811 expected to be recreated on-demand with new Module instances), Guice typically 3812 has a single injector with a long lifetime, so your module instance will be used 3813 throughout the lifetime of the entire app. 3814 <li>Dagger 1.x uses {@link @Singleton} for all scopes, including shorter-lived scopes 3815 like per-request or per-activity. Using modules written with Dagger 1.x usage 3816 in mind may result in mis-scoped objects. 3817 <li>Dagger 2.x supports custom scope annotations, but for use in Guice, a custom scope 3818 implementation must be registered in order to support the custom lifetime of that 3819 annotation. 3820 </ul> 3821 3822 @author cgruber@google.com (Christian Gruber)]]> 3823 </doc> 3824 </class> 3825 <!-- end class com.google.inject.daggeradapter.DaggerAdapter --> 3826</package> 3827<package name="com.google.inject.grapher"> 3828 <!-- start class com.google.inject.grapher.AbstractInjectorGrapher --> 3829 <class name="AbstractInjectorGrapher" extends="java.lang.Object" 3830 abstract="true" 3831 static="false" final="false" visibility="public" 3832 deprecated="not deprecated"> 3833 <implements name="com.google.inject.grapher.InjectorGrapher"/> 3834 <constructor name="AbstractInjectorGrapher" 3835 static="false" final="false" visibility="public" 3836 deprecated="not deprecated"> 3837 </constructor> 3838 <constructor name="AbstractInjectorGrapher" type="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters" 3839 static="false" final="false" visibility="public" 3840 deprecated="not deprecated"> 3841 </constructor> 3842 <method name="graph" 3843 abstract="false" native="false" synchronized="false" 3844 static="false" final="true" visibility="public" 3845 deprecated="not deprecated"> 3846 <param name="injector" type="com.google.inject.Injector"/> 3847 <exception name="IOException" type="java.io.IOException"/> 3848 </method> 3849 <method name="graph" 3850 abstract="false" native="false" synchronized="false" 3851 static="false" final="true" visibility="public" 3852 deprecated="not deprecated"> 3853 <param name="injector" type="com.google.inject.Injector"/> 3854 <param name="root" type="java.util.Set<com.google.inject.Key<?>>"/> 3855 <exception name="IOException" type="java.io.IOException"/> 3856 </method> 3857 <method name="reset" 3858 abstract="true" native="false" synchronized="false" 3859 static="false" final="false" visibility="protected" 3860 deprecated="not deprecated"> 3861 <exception name="IOException" type="java.io.IOException"/> 3862 <doc> 3863 <![CDATA[Resets the state of the grapher before rendering a new graph.]]> 3864 </doc> 3865 </method> 3866 <method name="newInterfaceNode" 3867 abstract="true" native="false" synchronized="false" 3868 static="false" final="false" visibility="protected" 3869 deprecated="not deprecated"> 3870 <param name="node" type="com.google.inject.grapher.InterfaceNode"/> 3871 <exception name="IOException" type="java.io.IOException"/> 3872 <doc> 3873 <![CDATA[Adds a new interface node to the graph.]]> 3874 </doc> 3875 </method> 3876 <method name="newImplementationNode" 3877 abstract="true" native="false" synchronized="false" 3878 static="false" final="false" visibility="protected" 3879 deprecated="not deprecated"> 3880 <param name="node" type="com.google.inject.grapher.ImplementationNode"/> 3881 <exception name="IOException" type="java.io.IOException"/> 3882 <doc> 3883 <![CDATA[Adds a new implementation node to the graph.]]> 3884 </doc> 3885 </method> 3886 <method name="newInstanceNode" 3887 abstract="true" native="false" synchronized="false" 3888 static="false" final="false" visibility="protected" 3889 deprecated="not deprecated"> 3890 <param name="node" type="com.google.inject.grapher.InstanceNode"/> 3891 <exception name="IOException" type="java.io.IOException"/> 3892 <doc> 3893 <![CDATA[Adds a new instance node to the graph.]]> 3894 </doc> 3895 </method> 3896 <method name="newDependencyEdge" 3897 abstract="true" native="false" synchronized="false" 3898 static="false" final="false" visibility="protected" 3899 deprecated="not deprecated"> 3900 <param name="edge" type="com.google.inject.grapher.DependencyEdge"/> 3901 <exception name="IOException" type="java.io.IOException"/> 3902 <doc> 3903 <![CDATA[Adds a new dependency edge to the graph.]]> 3904 </doc> 3905 </method> 3906 <method name="newBindingEdge" 3907 abstract="true" native="false" synchronized="false" 3908 static="false" final="false" visibility="protected" 3909 deprecated="not deprecated"> 3910 <param name="edge" type="com.google.inject.grapher.BindingEdge"/> 3911 <exception name="IOException" type="java.io.IOException"/> 3912 <doc> 3913 <![CDATA[Adds a new binding edge to the graph.]]> 3914 </doc> 3915 </method> 3916 <method name="postProcess" 3917 abstract="true" native="false" synchronized="false" 3918 static="false" final="false" visibility="protected" 3919 deprecated="not deprecated"> 3920 <exception name="IOException" type="java.io.IOException"/> 3921 <doc> 3922 <![CDATA[Performs any post processing required after all nodes and edges have been added.]]> 3923 </doc> 3924 </method> 3925 <doc> 3926 <![CDATA[Abstract injector grapher that builds the dependency graph but doesn't render it. 3927 3928 @author bojand@google.com (Bojan Djordjevic) 3929 @since 4.0]]> 3930 </doc> 3931 </class> 3932 <!-- end class com.google.inject.grapher.AbstractInjectorGrapher --> 3933 <!-- start class com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters --> 3934 <class name="AbstractInjectorGrapher.GrapherParameters" extends="java.lang.Object" 3935 abstract="false" 3936 static="true" final="true" visibility="public" 3937 deprecated="not deprecated"> 3938 <constructor name="GrapherParameters" 3939 static="false" final="false" visibility="public" 3940 deprecated="not deprecated"> 3941 </constructor> 3942 <method name="getRootKeySetCreator" return="com.google.inject.grapher.RootKeySetCreator" 3943 abstract="false" native="false" synchronized="false" 3944 static="false" final="false" visibility="public" 3945 deprecated="not deprecated"> 3946 </method> 3947 <method name="setRootKeySetCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters" 3948 abstract="false" native="false" synchronized="false" 3949 static="false" final="false" visibility="public" 3950 deprecated="not deprecated"> 3951 <param name="rootKeySetCreator" type="com.google.inject.grapher.RootKeySetCreator"/> 3952 </method> 3953 <method name="getAliasCreator" return="com.google.inject.grapher.AliasCreator" 3954 abstract="false" native="false" synchronized="false" 3955 static="false" final="false" visibility="public" 3956 deprecated="not deprecated"> 3957 </method> 3958 <method name="setAliasCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters" 3959 abstract="false" native="false" synchronized="false" 3960 static="false" final="false" visibility="public" 3961 deprecated="not deprecated"> 3962 <param name="aliasCreator" type="com.google.inject.grapher.AliasCreator"/> 3963 </method> 3964 <method name="getNodeCreator" return="com.google.inject.grapher.NodeCreator" 3965 abstract="false" native="false" synchronized="false" 3966 static="false" final="false" visibility="public" 3967 deprecated="not deprecated"> 3968 </method> 3969 <method name="setNodeCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters" 3970 abstract="false" native="false" synchronized="false" 3971 static="false" final="false" visibility="public" 3972 deprecated="not deprecated"> 3973 <param name="nodeCreator" type="com.google.inject.grapher.NodeCreator"/> 3974 </method> 3975 <method name="getEdgeCreator" return="com.google.inject.grapher.EdgeCreator" 3976 abstract="false" native="false" synchronized="false" 3977 static="false" final="false" visibility="public" 3978 deprecated="not deprecated"> 3979 </method> 3980 <method name="setEdgeCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters" 3981 abstract="false" native="false" synchronized="false" 3982 static="false" final="false" visibility="public" 3983 deprecated="not deprecated"> 3984 <param name="edgeCreator" type="com.google.inject.grapher.EdgeCreator"/> 3985 </method> 3986 <doc> 3987 <![CDATA[Parameters used to override default settings of the grapher. 3988 @since 4.0]]> 3989 </doc> 3990 </class> 3991 <!-- end class com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters --> 3992 <!-- start class com.google.inject.grapher.Alias --> 3993 <class name="Alias" extends="java.lang.Object" 3994 abstract="false" 3995 static="false" final="true" visibility="public" 3996 deprecated="not deprecated"> 3997 <constructor name="Alias" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId" 3998 static="false" final="false" visibility="public" 3999 deprecated="not deprecated"> 4000 </constructor> 4001 <method name="getFromId" return="com.google.inject.grapher.NodeId" 4002 abstract="false" native="false" synchronized="false" 4003 static="false" final="false" visibility="public" 4004 deprecated="not deprecated"> 4005 </method> 4006 <method name="getToId" return="com.google.inject.grapher.NodeId" 4007 abstract="false" native="false" synchronized="false" 4008 static="false" final="false" visibility="public" 4009 deprecated="not deprecated"> 4010 </method> 4011 <doc> 4012 <![CDATA[Alias between two nodes. Causes the 'from' node to be aliased with the 'to' node, which means 4013 that the 'from' node is not rendered and all edges going to it instead go to the 'to' node. 4014 4015 @author bojand@google.com (Bojan Djordjevic) 4016 @since 4.0]]> 4017 </doc> 4018 </class> 4019 <!-- end class com.google.inject.grapher.Alias --> 4020 <!-- start interface com.google.inject.grapher.AliasCreator --> 4021 <interface name="AliasCreator" abstract="true" 4022 static="false" final="false" visibility="public" 4023 deprecated="not deprecated"> 4024 <method name="createAliases" return="java.lang.Iterable<com.google.inject.grapher.Alias>" 4025 abstract="true" native="false" synchronized="false" 4026 static="false" final="false" visibility="public" 4027 deprecated="not deprecated"> 4028 <param name="bindings" type="java.lang.Iterable<com.google.inject.Binding<?>>"/> 4029 <doc> 4030 <![CDATA[Returns aliases for the given dependency graph. The aliases do not need to be transitively 4031 resolved, i.e. it is valid to return an alias (X to Y) and an alias (Y to Z). It is the 4032 responsibility of the caller to resolve this to (X to Z) and (Y to Z). 4033 4034 @param bindings bindings that make up the dependency graph 4035 @return aliases that should be applied on the graph]]> 4036 </doc> 4037 </method> 4038 <doc> 4039 <![CDATA[Creator of node aliases. Used by dependency graphers to merge nodes in the internal Guice graph 4040 into a single node on the rendered graph. 4041 4042 @author bojand@google.com (Bojan Djordjevic) 4043 @since 4.0]]> 4044 </doc> 4045 </interface> 4046 <!-- end interface com.google.inject.grapher.AliasCreator --> 4047 <!-- start class com.google.inject.grapher.BindingEdge --> 4048 <class name="BindingEdge" extends="com.google.inject.grapher.Edge" 4049 abstract="false" 4050 static="false" final="false" visibility="public" 4051 deprecated="not deprecated"> 4052 <constructor name="BindingEdge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId, com.google.inject.grapher.BindingEdge.Type" 4053 static="false" final="false" visibility="public" 4054 deprecated="not deprecated"> 4055 </constructor> 4056 <method name="getType" return="com.google.inject.grapher.BindingEdge.Type" 4057 abstract="false" native="false" synchronized="false" 4058 static="false" final="false" visibility="public" 4059 deprecated="not deprecated"> 4060 </method> 4061 <method name="equals" return="boolean" 4062 abstract="false" native="false" synchronized="false" 4063 static="false" final="false" visibility="public" 4064 deprecated="not deprecated"> 4065 <param name="obj" type="java.lang.Object"/> 4066 </method> 4067 <method name="hashCode" return="int" 4068 abstract="false" native="false" synchronized="false" 4069 static="false" final="false" visibility="public" 4070 deprecated="not deprecated"> 4071 </method> 4072 <method name="toString" return="java.lang.String" 4073 abstract="false" native="false" synchronized="false" 4074 static="false" final="false" visibility="public" 4075 deprecated="not deprecated"> 4076 </method> 4077 <method name="copy" return="com.google.inject.grapher.Edge" 4078 abstract="false" native="false" synchronized="false" 4079 static="false" final="false" visibility="public" 4080 deprecated="not deprecated"> 4081 <param name="fromId" type="com.google.inject.grapher.NodeId"/> 4082 <param name="toId" type="com.google.inject.grapher.NodeId"/> 4083 </method> 4084 <doc> 4085 <![CDATA[Edge that connects an interface to the type or instance that is bound to implement it. 4086 4087 @author phopkins@gmail.com (Pete Hopkins) 4088 @since 4.0 (since 2.0 as an interface)]]> 4089 </doc> 4090 </class> 4091 <!-- end class com.google.inject.grapher.BindingEdge --> 4092 <!-- start class com.google.inject.grapher.BindingEdge.Type --> 4093 <class name="BindingEdge.Type" extends="java.lang.Enum<com.google.inject.grapher.BindingEdge.Type>" 4094 abstract="false" 4095 static="true" final="true" visibility="public" 4096 deprecated="not deprecated"> 4097 <method name="values" return="com.google.inject.grapher.BindingEdge.Type[]" 4098 abstract="false" native="false" synchronized="false" 4099 static="true" final="false" visibility="public" 4100 deprecated="not deprecated"> 4101 </method> 4102 <method name="valueOf" return="com.google.inject.grapher.BindingEdge.Type" 4103 abstract="false" native="false" synchronized="false" 4104 static="true" final="false" visibility="public" 4105 deprecated="not deprecated"> 4106 <param name="name" type="java.lang.String"/> 4107 </method> 4108 <doc> 4109 <![CDATA[Classification for what kind of binding this edge represents.]]> 4110 </doc> 4111 </class> 4112 <!-- end class com.google.inject.grapher.BindingEdge.Type --> 4113 <!-- start class com.google.inject.grapher.DefaultRootKeySetCreator --> 4114 <class name="DefaultRootKeySetCreator" extends="java.lang.Object" 4115 abstract="false" 4116 static="false" final="false" visibility="public" 4117 deprecated="not deprecated"> 4118 <implements name="com.google.inject.grapher.RootKeySetCreator"/> 4119 <constructor name="DefaultRootKeySetCreator" 4120 static="false" final="false" visibility="public" 4121 deprecated="not deprecated"> 4122 </constructor> 4123 <method name="getRootKeys" return="java.util.Set<com.google.inject.Key<?>>" 4124 abstract="false" native="false" synchronized="false" 4125 static="false" final="false" visibility="public" 4126 deprecated="not deprecated"> 4127 <param name="injector" type="com.google.inject.Injector"/> 4128 </method> 4129 <doc> 4130 <![CDATA[Root key set creator that starts with all types that are not Guice internal types or the 4131 {@link Logger} type. 4132 4133 @author bojand@google.com (Bojan Djordjevic) 4134 @since 4.0]]> 4135 </doc> 4136 </class> 4137 <!-- end class com.google.inject.grapher.DefaultRootKeySetCreator --> 4138 <!-- start class com.google.inject.grapher.DependencyEdge --> 4139 <class name="DependencyEdge" extends="com.google.inject.grapher.Edge" 4140 abstract="false" 4141 static="false" final="false" visibility="public" 4142 deprecated="not deprecated"> 4143 <constructor name="DependencyEdge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId, com.google.inject.spi.InjectionPoint" 4144 static="false" final="false" visibility="public" 4145 deprecated="not deprecated"> 4146 </constructor> 4147 <method name="getInjectionPoint" return="com.google.inject.spi.InjectionPoint" 4148 abstract="false" native="false" synchronized="false" 4149 static="false" final="false" visibility="public" 4150 deprecated="not deprecated"> 4151 </method> 4152 <method name="equals" return="boolean" 4153 abstract="false" native="false" synchronized="false" 4154 static="false" final="false" visibility="public" 4155 deprecated="not deprecated"> 4156 <param name="obj" type="java.lang.Object"/> 4157 </method> 4158 <method name="hashCode" return="int" 4159 abstract="false" native="false" synchronized="false" 4160 static="false" final="false" visibility="public" 4161 deprecated="not deprecated"> 4162 </method> 4163 <method name="toString" return="java.lang.String" 4164 abstract="false" native="false" synchronized="false" 4165 static="false" final="false" visibility="public" 4166 deprecated="not deprecated"> 4167 </method> 4168 <method name="copy" return="com.google.inject.grapher.Edge" 4169 abstract="false" native="false" synchronized="false" 4170 static="false" final="false" visibility="public" 4171 deprecated="not deprecated"> 4172 <param name="fromId" type="com.google.inject.grapher.NodeId"/> 4173 <param name="toId" type="com.google.inject.grapher.NodeId"/> 4174 </method> 4175 <doc> 4176 <![CDATA[Edge from a class or {@link InjectionPoint} to the interface node that will satisfy the 4177 dependency. 4178 4179 @author phopkins@gmail.com (Pete Hopkins) 4180 @since 4.0 (since 2.0 as an interface)]]> 4181 </doc> 4182 </class> 4183 <!-- end class com.google.inject.grapher.DependencyEdge --> 4184 <!-- start class com.google.inject.grapher.Edge --> 4185 <class name="Edge" extends="java.lang.Object" 4186 abstract="true" 4187 static="false" final="false" visibility="public" 4188 deprecated="not deprecated"> 4189 <constructor name="Edge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId" 4190 static="false" final="false" visibility="protected" 4191 deprecated="not deprecated"> 4192 </constructor> 4193 <method name="getFromId" return="com.google.inject.grapher.NodeId" 4194 abstract="false" native="false" synchronized="false" 4195 static="false" final="false" visibility="public" 4196 deprecated="not deprecated"> 4197 </method> 4198 <method name="getToId" return="com.google.inject.grapher.NodeId" 4199 abstract="false" native="false" synchronized="false" 4200 static="false" final="false" visibility="public" 4201 deprecated="not deprecated"> 4202 </method> 4203 <method name="equals" return="boolean" 4204 abstract="false" native="false" synchronized="false" 4205 static="false" final="false" visibility="public" 4206 deprecated="not deprecated"> 4207 <param name="obj" type="java.lang.Object"/> 4208 </method> 4209 <method name="hashCode" return="int" 4210 abstract="false" native="false" synchronized="false" 4211 static="false" final="false" visibility="public" 4212 deprecated="not deprecated"> 4213 </method> 4214 <method name="copy" return="com.google.inject.grapher.Edge" 4215 abstract="true" native="false" synchronized="false" 4216 static="false" final="false" visibility="public" 4217 deprecated="not deprecated"> 4218 <param name="fromId" type="com.google.inject.grapher.NodeId"/> 4219 <param name="toId" type="com.google.inject.grapher.NodeId"/> 4220 <doc> 4221 <![CDATA[Returns a copy of the edge with new node IDs. 4222 4223 @param fromId new ID of the 'from' node 4224 @param toId new ID of the 'to' node 4225 @return copy of the edge with the new node IDs]]> 4226 </doc> 4227 </method> 4228 <doc> 4229 <![CDATA[Edge in a guice dependency graph. 4230 4231 @author bojand@google.com (Bojan Djordjevic) 4232 @since 4.0]]> 4233 </doc> 4234 </class> 4235 <!-- end class com.google.inject.grapher.Edge --> 4236 <!-- start interface com.google.inject.grapher.EdgeCreator --> 4237 <interface name="EdgeCreator" abstract="true" 4238 static="false" final="false" visibility="public" 4239 deprecated="not deprecated"> 4240 <method name="getEdges" return="java.lang.Iterable<com.google.inject.grapher.Edge>" 4241 abstract="true" native="false" synchronized="false" 4242 static="false" final="false" visibility="public" 4243 deprecated="not deprecated"> 4244 <param name="bindings" type="java.lang.Iterable<com.google.inject.Binding<?>>"/> 4245 <doc> 4246 <![CDATA[Returns edges for the given dependency graph.]]> 4247 </doc> 4248 </method> 4249 <doc> 4250 <![CDATA[Creator of graph edges to render. All edges will be rendered on the graph after node aliasing is 4251 performed. 4252 4253 @author bojand@google.com (Bojan Djordjevic) 4254 @since 4.0]]> 4255 </doc> 4256 </interface> 4257 <!-- end interface com.google.inject.grapher.EdgeCreator --> 4258 <!-- start class com.google.inject.grapher.ImplementationNode --> 4259 <class name="ImplementationNode" extends="com.google.inject.grapher.Node" 4260 abstract="false" 4261 static="false" final="false" visibility="public" 4262 deprecated="not deprecated"> 4263 <constructor name="ImplementationNode" type="com.google.inject.grapher.NodeId, java.lang.Object, java.util.Collection<java.lang.reflect.Member>" 4264 static="false" final="false" visibility="public" 4265 deprecated="not deprecated"> 4266 </constructor> 4267 <method name="getMembers" return="java.util.Collection<java.lang.reflect.Member>" 4268 abstract="false" native="false" synchronized="false" 4269 static="false" final="false" visibility="public" 4270 deprecated="not deprecated"> 4271 </method> 4272 <method name="equals" return="boolean" 4273 abstract="false" native="false" synchronized="false" 4274 static="false" final="false" visibility="public" 4275 deprecated="not deprecated"> 4276 <param name="obj" type="java.lang.Object"/> 4277 </method> 4278 <method name="hashCode" return="int" 4279 abstract="false" native="false" synchronized="false" 4280 static="false" final="false" visibility="public" 4281 deprecated="not deprecated"> 4282 </method> 4283 <method name="toString" return="java.lang.String" 4284 abstract="false" native="false" synchronized="false" 4285 static="false" final="false" visibility="public" 4286 deprecated="not deprecated"> 4287 </method> 4288 <method name="copy" return="com.google.inject.grapher.Node" 4289 abstract="false" native="false" synchronized="false" 4290 static="false" final="false" visibility="public" 4291 deprecated="not deprecated"> 4292 <param name="id" type="com.google.inject.grapher.NodeId"/> 4293 </method> 4294 <doc> 4295 <![CDATA[Node for types that have {@link com.google.inject.spi.Dependency}s and are 4296 bound to {@link InterfaceNode}s. These nodes will often have fields for 4297 {@link Member}s that are {@link com.google.inject.spi.InjectionPoint}s. 4298 4299 @see DependencyEdge 4300 @author phopkins@gmail.com (Pete Hopkins) 4301 @since 4.0 (since 2.0 as an interface)]]> 4302 </doc> 4303 </class> 4304 <!-- end class com.google.inject.grapher.ImplementationNode --> 4305 <!-- start interface com.google.inject.grapher.InjectorGrapher --> 4306 <interface name="InjectorGrapher" abstract="true" 4307 static="false" final="false" visibility="public" 4308 deprecated="not deprecated"> 4309 <method name="graph" 4310 abstract="true" native="false" synchronized="false" 4311 static="false" final="false" visibility="public" 4312 deprecated="not deprecated"> 4313 <param name="injector" type="com.google.inject.Injector"/> 4314 <exception name="IOException" type="java.io.IOException"/> 4315 <doc> 4316 <![CDATA[Graphs the guice dependency graph for the given injector using default starting keys.]]> 4317 </doc> 4318 </method> 4319 <method name="graph" 4320 abstract="true" native="false" synchronized="false" 4321 static="false" final="false" visibility="public" 4322 deprecated="not deprecated"> 4323 <param name="injector" type="com.google.inject.Injector"/> 4324 <param name="root" type="java.util.Set<com.google.inject.Key<?>>"/> 4325 <exception name="IOException" type="java.io.IOException"/> 4326 <doc> 4327 <![CDATA[Graphs the guice dependency graph for the given injector using the given starting keys and 4328 their transitive dependencies.]]> 4329 </doc> 4330 </method> 4331 <doc> 4332 <![CDATA[Guice injector grapher. Renders the guice dependency graph for an injector. It can render the 4333 whole dependency graph or just transitive dependencies of a given set of nodes. 4334 4335 @author phopkins@gmail.com (Pete Hopkins) 4336 @since 4.0 (since 2.0 as a concrete class with a different API)]]> 4337 </doc> 4338 </interface> 4339 <!-- end interface com.google.inject.grapher.InjectorGrapher --> 4340 <!-- start class com.google.inject.grapher.InstanceNode --> 4341 <class name="InstanceNode" extends="com.google.inject.grapher.Node" 4342 abstract="false" 4343 static="false" final="false" visibility="public" 4344 deprecated="not deprecated"> 4345 <constructor name="InstanceNode" type="com.google.inject.grapher.NodeId, java.lang.Object, java.lang.Object, java.lang.Iterable<java.lang.reflect.Member>" 4346 static="false" final="false" visibility="public" 4347 deprecated="not deprecated"> 4348 </constructor> 4349 <method name="getInstance" return="java.lang.Object" 4350 abstract="false" native="false" synchronized="false" 4351 static="false" final="false" visibility="public" 4352 deprecated="not deprecated"> 4353 </method> 4354 <method name="getMembers" return="java.lang.Iterable<java.lang.reflect.Member>" 4355 abstract="false" native="false" synchronized="false" 4356 static="false" final="false" visibility="public" 4357 deprecated="not deprecated"> 4358 </method> 4359 <method name="equals" return="boolean" 4360 abstract="false" native="false" synchronized="false" 4361 static="false" final="false" visibility="public" 4362 deprecated="not deprecated"> 4363 <param name="obj" type="java.lang.Object"/> 4364 </method> 4365 <method name="hashCode" return="int" 4366 abstract="false" native="false" synchronized="false" 4367 static="false" final="false" visibility="public" 4368 deprecated="not deprecated"> 4369 </method> 4370 <method name="toString" return="java.lang.String" 4371 abstract="false" native="false" synchronized="false" 4372 static="false" final="false" visibility="public" 4373 deprecated="not deprecated"> 4374 </method> 4375 <method name="copy" return="com.google.inject.grapher.Node" 4376 abstract="false" native="false" synchronized="false" 4377 static="false" final="false" visibility="public" 4378 deprecated="not deprecated"> 4379 <param name="id" type="com.google.inject.grapher.NodeId"/> 4380 </method> 4381 <doc> 4382 <![CDATA[Node for instances. Used when a type is bound to an instance. 4383 4384 @author bojand@google.com (Bojan Djordjevic) 4385 @since 4.0]]> 4386 </doc> 4387 </class> 4388 <!-- end class com.google.inject.grapher.InstanceNode --> 4389 <!-- start class com.google.inject.grapher.InterfaceNode --> 4390 <class name="InterfaceNode" extends="com.google.inject.grapher.Node" 4391 abstract="false" 4392 static="false" final="false" visibility="public" 4393 deprecated="not deprecated"> 4394 <constructor name="InterfaceNode" type="com.google.inject.grapher.NodeId, java.lang.Object" 4395 static="false" final="false" visibility="public" 4396 deprecated="not deprecated"> 4397 </constructor> 4398 <method name="copy" return="com.google.inject.grapher.Node" 4399 abstract="false" native="false" synchronized="false" 4400 static="false" final="false" visibility="public" 4401 deprecated="not deprecated"> 4402 <param name="id" type="com.google.inject.grapher.NodeId"/> 4403 </method> 4404 <method name="equals" return="boolean" 4405 abstract="false" native="false" synchronized="false" 4406 static="false" final="false" visibility="public" 4407 deprecated="not deprecated"> 4408 <param name="obj" type="java.lang.Object"/> 4409 </method> 4410 <method name="toString" return="java.lang.String" 4411 abstract="false" native="false" synchronized="false" 4412 static="false" final="false" visibility="public" 4413 deprecated="not deprecated"> 4414 </method> 4415 <doc> 4416 <![CDATA[Node for an interface type that has been bound to an implementation class or instance. 4417 4418 @see BindingEdge 4419 @author phopkins@gmail.com (Pete Hopkins) 4420 @since 4.0 (since 2.0 as an interface)]]> 4421 </doc> 4422 </class> 4423 <!-- end class com.google.inject.grapher.InterfaceNode --> 4424 <!-- start interface com.google.inject.grapher.NameFactory --> 4425 <interface name="NameFactory" abstract="true" 4426 static="false" final="false" visibility="public" 4427 deprecated="not deprecated"> 4428 <method name="getMemberName" return="java.lang.String" 4429 abstract="true" native="false" synchronized="false" 4430 static="false" final="false" visibility="public" 4431 deprecated="not deprecated"> 4432 <param name="member" type="java.lang.reflect.Member"/> 4433 </method> 4434 <method name="getClassName" return="java.lang.String" 4435 abstract="true" native="false" synchronized="false" 4436 static="false" final="false" visibility="public" 4437 deprecated="not deprecated"> 4438 <param name="key" type="com.google.inject.Key<?>"/> 4439 </method> 4440 <method name="getInstanceName" return="java.lang.String" 4441 abstract="true" native="false" synchronized="false" 4442 static="false" final="false" visibility="public" 4443 deprecated="not deprecated"> 4444 <param name="instance" type="java.lang.Object"/> 4445 </method> 4446 <method name="getAnnotationName" return="java.lang.String" 4447 abstract="true" native="false" synchronized="false" 4448 static="false" final="false" visibility="public" 4449 deprecated="not deprecated"> 4450 <param name="key" type="com.google.inject.Key<?>"/> 4451 </method> 4452 <method name="getSourceName" return="java.lang.String" 4453 abstract="true" native="false" synchronized="false" 4454 static="false" final="false" visibility="public" 4455 deprecated="not deprecated"> 4456 <param name="source" type="java.lang.Object"/> 4457 </method> 4458 <doc> 4459 <![CDATA[Interface for a service that provides nice {@link String}s that we can 4460 display in the graph for the types that come up in 4461 {@link com.google.inject.Binding}s. 4462 4463 @author phopkins@gmail.com (Pete Hopkins)]]> 4464 </doc> 4465 </interface> 4466 <!-- end interface com.google.inject.grapher.NameFactory --> 4467 <!-- start class com.google.inject.grapher.Node --> 4468 <class name="Node" extends="java.lang.Object" 4469 abstract="true" 4470 static="false" final="false" visibility="public" 4471 deprecated="not deprecated"> 4472 <constructor name="Node" type="com.google.inject.grapher.NodeId, java.lang.Object" 4473 static="false" final="false" visibility="protected" 4474 deprecated="not deprecated"> 4475 </constructor> 4476 <method name="getId" return="com.google.inject.grapher.NodeId" 4477 abstract="false" native="false" synchronized="false" 4478 static="false" final="false" visibility="public" 4479 deprecated="not deprecated"> 4480 </method> 4481 <method name="getSource" return="java.lang.Object" 4482 abstract="false" native="false" synchronized="false" 4483 static="false" final="false" visibility="public" 4484 deprecated="not deprecated"> 4485 </method> 4486 <method name="equals" return="boolean" 4487 abstract="false" native="false" synchronized="false" 4488 static="false" final="false" visibility="public" 4489 deprecated="not deprecated"> 4490 <param name="obj" type="java.lang.Object"/> 4491 </method> 4492 <method name="hashCode" return="int" 4493 abstract="false" native="false" synchronized="false" 4494 static="false" final="false" visibility="public" 4495 deprecated="not deprecated"> 4496 </method> 4497 <method name="copy" return="com.google.inject.grapher.Node" 4498 abstract="true" native="false" synchronized="false" 4499 static="false" final="false" visibility="public" 4500 deprecated="not deprecated"> 4501 <param name="id" type="com.google.inject.grapher.NodeId"/> 4502 <doc> 4503 <![CDATA[Returns a copy of the node with a new ID. 4504 4505 @param id new ID of the node 4506 @return copy of the node with a new ID]]> 4507 </doc> 4508 </method> 4509 <doc> 4510 <![CDATA[Node in a guice dependency graph. 4511 4512 @author bojand@google.com (Bojan Djordjevic) 4513 @since 4.0]]> 4514 </doc> 4515 </class> 4516 <!-- end class com.google.inject.grapher.Node --> 4517 <!-- start interface com.google.inject.grapher.NodeCreator --> 4518 <interface name="NodeCreator" abstract="true" 4519 static="false" final="false" visibility="public" 4520 deprecated="not deprecated"> 4521 <method name="getNodes" return="java.lang.Iterable<com.google.inject.grapher.Node>" 4522 abstract="true" native="false" synchronized="false" 4523 static="false" final="false" visibility="public" 4524 deprecated="not deprecated"> 4525 <param name="bindings" type="java.lang.Iterable<com.google.inject.Binding<?>>"/> 4526 <doc> 4527 <![CDATA[Returns nodes for the given dependency graph.]]> 4528 </doc> 4529 </method> 4530 <doc> 4531 <![CDATA[Creator of graph nodes. 4532 4533 @author bojand@google.com (Bojan Djordjevic) 4534 @since 4.0]]> 4535 </doc> 4536 </interface> 4537 <!-- end interface com.google.inject.grapher.NodeCreator --> 4538 <!-- start class com.google.inject.grapher.NodeId --> 4539 <class name="NodeId" extends="java.lang.Object" 4540 abstract="false" 4541 static="false" final="true" visibility="public" 4542 deprecated="not deprecated"> 4543 <method name="newTypeId" return="com.google.inject.grapher.NodeId" 4544 abstract="false" native="false" synchronized="false" 4545 static="true" final="false" visibility="public" 4546 deprecated="not deprecated"> 4547 <param name="key" type="com.google.inject.Key<?>"/> 4548 </method> 4549 <method name="newInstanceId" return="com.google.inject.grapher.NodeId" 4550 abstract="false" native="false" synchronized="false" 4551 static="true" final="false" visibility="public" 4552 deprecated="not deprecated"> 4553 <param name="key" type="com.google.inject.Key<?>"/> 4554 </method> 4555 <method name="getKey" return="com.google.inject.Key<?>" 4556 abstract="false" native="false" synchronized="false" 4557 static="false" final="false" visibility="public" 4558 deprecated="not deprecated"> 4559 </method> 4560 <method name="hashCode" return="int" 4561 abstract="false" native="false" synchronized="false" 4562 static="false" final="false" visibility="public" 4563 deprecated="not deprecated"> 4564 </method> 4565 <method name="equals" return="boolean" 4566 abstract="false" native="false" synchronized="false" 4567 static="false" final="false" visibility="public" 4568 deprecated="not deprecated"> 4569 <param name="obj" type="java.lang.Object"/> 4570 </method> 4571 <method name="toString" return="java.lang.String" 4572 abstract="false" native="false" synchronized="false" 4573 static="false" final="false" visibility="public" 4574 deprecated="not deprecated"> 4575 </method> 4576 <doc> 4577 <![CDATA[ID of a node in the graph. An ID is given by a {@link Key} and a node type, which is used to 4578 distinguish instances and implementation classes for the same key. For example 4579 {@code bind(Integer.class).toInstance(42)} produces two nodes: an 4580 interface node with the key of {@code Key<Integer>} and an instance node with the same 4581 {@link Key} and value of 42. 4582 4583 @author bojand@google.com (Bojan Djordjevic) 4584 @since 4.0]]> 4585 </doc> 4586 </class> 4587 <!-- end class com.google.inject.grapher.NodeId --> 4588 <!-- start class com.google.inject.grapher.NodeId.NodeType --> 4589 <class name="NodeId.NodeType" extends="java.lang.Enum<com.google.inject.grapher.NodeId.NodeType>" 4590 abstract="false" 4591 static="true" final="true" visibility="public" 4592 deprecated="not deprecated"> 4593 <method name="values" return="com.google.inject.grapher.NodeId.NodeType[]" 4594 abstract="false" native="false" synchronized="false" 4595 static="true" final="false" visibility="public" 4596 deprecated="not deprecated"> 4597 </method> 4598 <method name="valueOf" return="com.google.inject.grapher.NodeId.NodeType" 4599 abstract="false" native="false" synchronized="false" 4600 static="true" final="false" visibility="public" 4601 deprecated="not deprecated"> 4602 <param name="name" type="java.lang.String"/> 4603 </method> 4604 <doc> 4605 <![CDATA[Type of node. 4606 4607 @since 4.0]]> 4608 </doc> 4609 </class> 4610 <!-- end class com.google.inject.grapher.NodeId.NodeType --> 4611 <!-- start interface com.google.inject.grapher.RootKeySetCreator --> 4612 <interface name="RootKeySetCreator" abstract="true" 4613 static="false" final="false" visibility="public" 4614 deprecated="not deprecated"> 4615 <method name="getRootKeys" return="java.util.Set<com.google.inject.Key<?>>" 4616 abstract="true" native="false" synchronized="false" 4617 static="false" final="false" visibility="public" 4618 deprecated="not deprecated"> 4619 <param name="injector" type="com.google.inject.Injector"/> 4620 <doc> 4621 <![CDATA[Returns the set of starting keys to graph.]]> 4622 </doc> 4623 </method> 4624 <doc> 4625 <![CDATA[Creator of the default starting set of keys to graph. These keys and their transitive 4626 dependencies will be graphed. 4627 4628 @author bojand@google.com (Bojan Djordjevic) 4629 @since 4.0]]> 4630 </doc> 4631 </interface> 4632 <!-- end interface com.google.inject.grapher.RootKeySetCreator --> 4633 <!-- start class com.google.inject.grapher.ShortNameFactory --> 4634 <class name="ShortNameFactory" extends="java.lang.Object" 4635 abstract="false" 4636 static="false" final="false" visibility="public" 4637 deprecated="not deprecated"> 4638 <implements name="com.google.inject.grapher.NameFactory"/> 4639 <constructor name="ShortNameFactory" 4640 static="false" final="false" visibility="public" 4641 deprecated="not deprecated"> 4642 </constructor> 4643 <method name="getMemberName" return="java.lang.String" 4644 abstract="false" native="false" synchronized="false" 4645 static="false" final="false" visibility="public" 4646 deprecated="not deprecated"> 4647 <param name="member" type="java.lang.reflect.Member"/> 4648 </method> 4649 <method name="getAnnotationName" return="java.lang.String" 4650 abstract="false" native="false" synchronized="false" 4651 static="false" final="false" visibility="public" 4652 deprecated="not deprecated"> 4653 <param name="key" type="com.google.inject.Key<?>"/> 4654 </method> 4655 <method name="getClassName" return="java.lang.String" 4656 abstract="false" native="false" synchronized="false" 4657 static="false" final="false" visibility="public" 4658 deprecated="not deprecated"> 4659 <param name="key" type="com.google.inject.Key<?>"/> 4660 </method> 4661 <method name="getInstanceName" return="java.lang.String" 4662 abstract="false" native="false" synchronized="false" 4663 static="false" final="false" visibility="public" 4664 deprecated="not deprecated"> 4665 <param name="instance" type="java.lang.Object"/> 4666 </method> 4667 <method name="getSourceName" return="java.lang.String" 4668 abstract="false" native="false" synchronized="false" 4669 static="false" final="false" visibility="public" 4670 deprecated="not deprecated"> 4671 <param name="source" type="java.lang.Object"/> 4672 <doc> 4673 <![CDATA[Returns a name for a Guice "source" object. This will typically be either 4674 a {@link StackTraceElement} for when the binding is made to the instance, 4675 or a {@link Method} when a provider method is used.]]> 4676 </doc> 4677 </method> 4678 <method name="getFileString" return="java.lang.String" 4679 abstract="false" native="false" synchronized="false" 4680 static="false" final="false" visibility="protected" 4681 deprecated="not deprecated"> 4682 <param name="stackTraceElement" type="java.lang.StackTraceElement"/> 4683 </method> 4684 <method name="getMethodString" return="java.lang.String" 4685 abstract="false" native="false" synchronized="false" 4686 static="false" final="false" visibility="protected" 4687 deprecated="not deprecated"> 4688 <param name="method" type="java.lang.reflect.Method"/> 4689 </method> 4690 <doc> 4691 <![CDATA[Reasonable implementation for {@link NameFactory}. Mostly takes various 4692 {@link Object#toString()}s and strips package names out of them so that 4693 they'll fit on the graph. 4694 4695 @author phopkins@gmail.com (Pete Hopkins)]]> 4696 </doc> 4697 </class> 4698 <!-- end class com.google.inject.grapher.ShortNameFactory --> 4699 <!-- start class com.google.inject.grapher.TransitiveDependencyVisitor --> 4700 <class name="TransitiveDependencyVisitor" extends="com.google.inject.spi.DefaultBindingTargetVisitor<java.lang.Object, java.util.Collection<com.google.inject.Key<?>>>" 4701 abstract="false" 4702 static="false" final="false" visibility="public" 4703 deprecated="not deprecated"> 4704 <constructor name="TransitiveDependencyVisitor" 4705 static="false" final="false" visibility="public" 4706 deprecated="not deprecated"> 4707 </constructor> 4708 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4709 abstract="false" native="false" synchronized="false" 4710 static="false" final="false" visibility="public" 4711 deprecated="not deprecated"> 4712 <param name="binding" type="com.google.inject.spi.ConstructorBinding<?>"/> 4713 </method> 4714 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4715 abstract="false" native="false" synchronized="false" 4716 static="false" final="false" visibility="public" 4717 deprecated="not deprecated"> 4718 <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding<?>"/> 4719 </method> 4720 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4721 abstract="false" native="false" synchronized="false" 4722 static="false" final="false" visibility="public" 4723 deprecated="not deprecated"> 4724 <param name="binding" type="com.google.inject.spi.InstanceBinding<?>"/> 4725 </method> 4726 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4727 abstract="false" native="false" synchronized="false" 4728 static="false" final="false" visibility="public" 4729 deprecated="not deprecated"> 4730 <param name="binding" type="com.google.inject.spi.LinkedKeyBinding<?>"/> 4731 </method> 4732 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4733 abstract="false" native="false" synchronized="false" 4734 static="false" final="false" visibility="public" 4735 deprecated="not deprecated"> 4736 <param name="binding" type="com.google.inject.spi.ProviderBinding<?>"/> 4737 </method> 4738 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4739 abstract="false" native="false" synchronized="false" 4740 static="false" final="false" visibility="public" 4741 deprecated="not deprecated"> 4742 <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding<?>"/> 4743 </method> 4744 <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4745 abstract="false" native="false" synchronized="false" 4746 static="false" final="false" visibility="public" 4747 deprecated="not deprecated"> 4748 <param name="binding" type="com.google.inject.spi.ProviderKeyBinding<?>"/> 4749 </method> 4750 <method name="visitOther" return="java.util.Collection<com.google.inject.Key<?>>" 4751 abstract="false" native="false" synchronized="false" 4752 static="false" final="false" visibility="public" 4753 deprecated="not deprecated"> 4754 <param name="binding" type="com.google.inject.Binding<?>"/> 4755 <doc> 4756 <![CDATA[@since 4.0]]> 4757 </doc> 4758 </method> 4759 <doc> 4760 <![CDATA[{@link com.google.inject.spi.BindingTargetVisitor} that returns a 4761 {@link Collection} of the {@link Key}s of each {@link Binding}'s 4762 dependencies. Used by {@link InjectorGrapher} to walk the dependency graph 4763 from a starting set of {@link Binding}s. 4764 4765 @author phopkins@gmail.com (Pete Hopkins)]]> 4766 </doc> 4767 </class> 4768 <!-- end class com.google.inject.grapher.TransitiveDependencyVisitor --> 4769</package> 4770<package name="com.google.inject.grapher.graphviz"> 4771 <!-- start class com.google.inject.grapher.graphviz.ArrowType --> 4772 <class name="ArrowType" extends="java.lang.Enum<com.google.inject.grapher.graphviz.ArrowType>" 4773 abstract="false" 4774 static="false" final="true" visibility="public" 4775 deprecated="not deprecated"> 4776 <method name="values" return="com.google.inject.grapher.graphviz.ArrowType[]" 4777 abstract="false" native="false" synchronized="false" 4778 static="true" final="false" visibility="public" 4779 deprecated="not deprecated"> 4780 </method> 4781 <method name="valueOf" return="com.google.inject.grapher.graphviz.ArrowType" 4782 abstract="false" native="false" synchronized="false" 4783 static="true" final="false" visibility="public" 4784 deprecated="not deprecated"> 4785 <param name="name" type="java.lang.String"/> 4786 </method> 4787 <method name="toString" return="java.lang.String" 4788 abstract="false" native="false" synchronized="false" 4789 static="false" final="false" visibility="public" 4790 deprecated="not deprecated"> 4791 </method> 4792 <doc> 4793 <![CDATA[Arrow symbols that are available from Graphviz. These can be composed by 4794 concatenation to make double arrows and such. 4795 <p> 4796 See: http://www.graphviz.org/doc/info/arrows.html 4797 4798 @author phopkins@gmail.com (Pete Hopkins)]]> 4799 </doc> 4800 </class> 4801 <!-- end class com.google.inject.grapher.graphviz.ArrowType --> 4802 <!-- start class com.google.inject.grapher.graphviz.CompassPoint --> 4803 <class name="CompassPoint" extends="java.lang.Enum<com.google.inject.grapher.graphviz.CompassPoint>" 4804 abstract="false" 4805 static="false" final="true" visibility="public" 4806 deprecated="not deprecated"> 4807 <method name="values" return="com.google.inject.grapher.graphviz.CompassPoint[]" 4808 abstract="false" native="false" synchronized="false" 4809 static="true" final="false" visibility="public" 4810 deprecated="not deprecated"> 4811 </method> 4812 <method name="valueOf" return="com.google.inject.grapher.graphviz.CompassPoint" 4813 abstract="false" native="false" synchronized="false" 4814 static="true" final="false" visibility="public" 4815 deprecated="not deprecated"> 4816 <param name="name" type="java.lang.String"/> 4817 </method> 4818 <method name="toString" return="java.lang.String" 4819 abstract="false" native="false" synchronized="false" 4820 static="false" final="false" visibility="public" 4821 deprecated="not deprecated"> 4822 </method> 4823 <doc> 4824 <![CDATA[Enum for the "compass point" values used to control where edge 4825 end points appear on the graph. 4826 <p> 4827 See: http://www.graphviz.org/doc/info/attrs.html#k:portPos 4828 4829 @author phopkins@gmail.com (Pete Hopkins)]]> 4830 </doc> 4831 </class> 4832 <!-- end class com.google.inject.grapher.graphviz.CompassPoint --> 4833 <!-- start class com.google.inject.grapher.graphviz.EdgeStyle --> 4834 <class name="EdgeStyle" extends="java.lang.Enum<com.google.inject.grapher.graphviz.EdgeStyle>" 4835 abstract="false" 4836 static="false" final="true" visibility="public" 4837 deprecated="not deprecated"> 4838 <method name="values" return="com.google.inject.grapher.graphviz.EdgeStyle[]" 4839 abstract="false" native="false" synchronized="false" 4840 static="true" final="false" visibility="public" 4841 deprecated="not deprecated"> 4842 </method> 4843 <method name="valueOf" return="com.google.inject.grapher.graphviz.EdgeStyle" 4844 abstract="false" native="false" synchronized="false" 4845 static="true" final="false" visibility="public" 4846 deprecated="not deprecated"> 4847 <param name="name" type="java.lang.String"/> 4848 </method> 4849 <method name="toString" return="java.lang.String" 4850 abstract="false" native="false" synchronized="false" 4851 static="false" final="false" visibility="public" 4852 deprecated="not deprecated"> 4853 </method> 4854 <doc> 4855 <![CDATA[Styles for edges. 4856 <p> 4857 See: http://www.graphviz.org/doc/info/attrs.html#k:style 4858 4859 @author phopkins@gmail.com (Pete Hopkins)]]> 4860 </doc> 4861 </class> 4862 <!-- end class com.google.inject.grapher.graphviz.EdgeStyle --> 4863 <!-- start class com.google.inject.grapher.graphviz.GraphvizEdge --> 4864 <class name="GraphvizEdge" extends="java.lang.Object" 4865 abstract="false" 4866 static="false" final="false" visibility="public" 4867 deprecated="not deprecated"> 4868 <constructor name="GraphvizEdge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId" 4869 static="false" final="false" visibility="public" 4870 deprecated="not deprecated"> 4871 </constructor> 4872 <method name="getHeadNodeId" return="com.google.inject.grapher.NodeId" 4873 abstract="false" native="false" synchronized="false" 4874 static="false" final="false" visibility="public" 4875 deprecated="not deprecated"> 4876 <doc> 4877 <![CDATA[@since 4.0]]> 4878 </doc> 4879 </method> 4880 <method name="getHeadPortId" return="java.lang.String" 4881 abstract="false" native="false" synchronized="false" 4882 static="false" final="false" visibility="public" 4883 deprecated="not deprecated"> 4884 </method> 4885 <method name="setHeadPortId" 4886 abstract="false" native="false" synchronized="false" 4887 static="false" final="false" visibility="public" 4888 deprecated="not deprecated"> 4889 <param name="headPortId" type="java.lang.String"/> 4890 </method> 4891 <method name="getHeadCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint" 4892 abstract="false" native="false" synchronized="false" 4893 static="false" final="false" visibility="public" 4894 deprecated="not deprecated"> 4895 </method> 4896 <method name="setHeadCompassPoint" 4897 abstract="false" native="false" synchronized="false" 4898 static="false" final="false" visibility="public" 4899 deprecated="not deprecated"> 4900 <param name="headCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/> 4901 </method> 4902 <method name="getArrowHead" return="java.util.List<com.google.inject.grapher.graphviz.ArrowType>" 4903 abstract="false" native="false" synchronized="false" 4904 static="false" final="false" visibility="public" 4905 deprecated="not deprecated"> 4906 </method> 4907 <method name="setArrowHead" 4908 abstract="false" native="false" synchronized="false" 4909 static="false" final="false" visibility="public" 4910 deprecated="not deprecated"> 4911 <param name="arrowHead" type="java.util.List<com.google.inject.grapher.graphviz.ArrowType>"/> 4912 </method> 4913 <method name="getTailNodeId" return="com.google.inject.grapher.NodeId" 4914 abstract="false" native="false" synchronized="false" 4915 static="false" final="false" visibility="public" 4916 deprecated="not deprecated"> 4917 <doc> 4918 <![CDATA[@since 4.0]]> 4919 </doc> 4920 </method> 4921 <method name="getTailPortId" return="java.lang.String" 4922 abstract="false" native="false" synchronized="false" 4923 static="false" final="false" visibility="public" 4924 deprecated="not deprecated"> 4925 </method> 4926 <method name="setTailPortId" 4927 abstract="false" native="false" synchronized="false" 4928 static="false" final="false" visibility="public" 4929 deprecated="not deprecated"> 4930 <param name="tailPortId" type="java.lang.String"/> 4931 </method> 4932 <method name="getTailCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint" 4933 abstract="false" native="false" synchronized="false" 4934 static="false" final="false" visibility="public" 4935 deprecated="not deprecated"> 4936 </method> 4937 <method name="setTailCompassPoint" 4938 abstract="false" native="false" synchronized="false" 4939 static="false" final="false" visibility="public" 4940 deprecated="not deprecated"> 4941 <param name="tailCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/> 4942 </method> 4943 <method name="getArrowTail" return="java.util.List<com.google.inject.grapher.graphviz.ArrowType>" 4944 abstract="false" native="false" synchronized="false" 4945 static="false" final="false" visibility="public" 4946 deprecated="not deprecated"> 4947 </method> 4948 <method name="setArrowTail" 4949 abstract="false" native="false" synchronized="false" 4950 static="false" final="false" visibility="public" 4951 deprecated="not deprecated"> 4952 <param name="arrowTail" type="java.util.List<com.google.inject.grapher.graphviz.ArrowType>"/> 4953 </method> 4954 <method name="getStyle" return="com.google.inject.grapher.graphviz.EdgeStyle" 4955 abstract="false" native="false" synchronized="false" 4956 static="false" final="false" visibility="public" 4957 deprecated="not deprecated"> 4958 </method> 4959 <method name="setStyle" 4960 abstract="false" native="false" synchronized="false" 4961 static="false" final="false" visibility="public" 4962 deprecated="not deprecated"> 4963 <param name="style" type="com.google.inject.grapher.graphviz.EdgeStyle"/> 4964 </method> 4965 <doc> 4966 <![CDATA[Data object to encapsulate the attributes of Graphviz edges that we're 4967 interested in drawing. 4968 4969 @author phopkins@gmail.com (Pete Hopkins)]]> 4970 </doc> 4971 </class> 4972 <!-- end class com.google.inject.grapher.graphviz.GraphvizEdge --> 4973 <!-- start class com.google.inject.grapher.graphviz.GraphvizGrapher --> 4974 <class name="GraphvizGrapher" extends="com.google.inject.grapher.AbstractInjectorGrapher" 4975 abstract="false" 4976 static="false" final="false" visibility="public" 4977 deprecated="not deprecated"> 4978 <method name="reset" 4979 abstract="false" native="false" synchronized="false" 4980 static="false" final="false" visibility="protected" 4981 deprecated="not deprecated"> 4982 </method> 4983 <method name="setOut" 4984 abstract="false" native="false" synchronized="false" 4985 static="false" final="false" visibility="public" 4986 deprecated="not deprecated"> 4987 <param name="out" type="java.io.PrintWriter"/> 4988 </method> 4989 <method name="setRankdir" 4990 abstract="false" native="false" synchronized="false" 4991 static="false" final="false" visibility="public" 4992 deprecated="not deprecated"> 4993 <param name="rankdir" type="java.lang.String"/> 4994 </method> 4995 <method name="postProcess" 4996 abstract="false" native="false" synchronized="false" 4997 static="false" final="false" visibility="protected" 4998 deprecated="not deprecated"> 4999 </method> 5000 <method name="getGraphAttributes" return="java.util.Map<java.lang.String, java.lang.String>" 5001 abstract="false" native="false" synchronized="false" 5002 static="false" final="false" visibility="protected" 5003 deprecated="not deprecated"> 5004 </method> 5005 <method name="start" 5006 abstract="false" native="false" synchronized="false" 5007 static="false" final="false" visibility="protected" 5008 deprecated="not deprecated"> 5009 </method> 5010 <method name="finish" 5011 abstract="false" native="false" synchronized="false" 5012 static="false" final="false" visibility="protected" 5013 deprecated="not deprecated"> 5014 </method> 5015 <method name="renderNode" 5016 abstract="false" native="false" synchronized="false" 5017 static="false" final="false" visibility="protected" 5018 deprecated="not deprecated"> 5019 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/> 5020 </method> 5021 <method name="getNodeAttributes" return="java.util.Map<java.lang.String, java.lang.String>" 5022 abstract="false" native="false" synchronized="false" 5023 static="false" final="false" visibility="protected" 5024 deprecated="not deprecated"> 5025 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/> 5026 </method> 5027 <method name="getNodeLabel" return="java.lang.String" 5028 abstract="false" native="false" synchronized="false" 5029 static="false" final="false" visibility="protected" 5030 deprecated="not deprecated"> 5031 <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/> 5032 <doc> 5033 <![CDATA[Creates the "label" for a node. This is a string of HTML that defines a 5034 table with a heading at the top and (in the case of 5035 {@link ImplementationNode}s) rows for each of the member fields.]]> 5036 </doc> 5037 </method> 5038 <method name="renderEdge" 5039 abstract="false" native="false" synchronized="false" 5040 static="false" final="false" visibility="protected" 5041 deprecated="not deprecated"> 5042 <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/> 5043 </method> 5044 <method name="getEdgeAttributes" return="java.util.Map<java.lang.String, java.lang.String>" 5045 abstract="false" native="false" synchronized="false" 5046 static="false" final="false" visibility="protected" 5047 deprecated="not deprecated"> 5048 <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/> 5049 </method> 5050 <method name="getArrowString" return="java.lang.String" 5051 abstract="false" native="false" synchronized="false" 5052 static="false" final="false" visibility="protected" 5053 deprecated="not deprecated"> 5054 <param name="arrows" type="java.util.List<com.google.inject.grapher.graphviz.ArrowType>"/> 5055 <doc> 5056 <![CDATA[Turns a {@link List} of {@link ArrowType}s into a {@link String} that 5057 represents combining them. With Graphviz, that just means concatenating 5058 them.]]> 5059 </doc> 5060 </method> 5061 <method name="getEdgeEndPoint" return="java.lang.String" 5062 abstract="false" native="false" synchronized="false" 5063 static="false" final="false" visibility="protected" 5064 deprecated="not deprecated"> 5065 <param name="nodeId" type="java.lang.String"/> 5066 <param name="portId" type="java.lang.String"/> 5067 <param name="compassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/> 5068 </method> 5069 <method name="htmlEscape" return="java.lang.String" 5070 abstract="false" native="false" synchronized="false" 5071 static="false" final="false" visibility="protected" 5072 deprecated="not deprecated"> 5073 <param name="str" type="java.lang.String"/> 5074 </method> 5075 <method name="htmlEscape" return="java.util.List<java.lang.String>" 5076 abstract="false" native="false" synchronized="false" 5077 static="false" final="false" visibility="protected" 5078 deprecated="not deprecated"> 5079 <param name="elements" type="java.util.List<java.lang.String>"/> 5080 </method> 5081 <method name="newInterfaceNode" 5082 abstract="false" native="false" synchronized="false" 5083 static="false" final="false" visibility="protected" 5084 deprecated="not deprecated"> 5085 <param name="node" type="com.google.inject.grapher.InterfaceNode"/> 5086 </method> 5087 <method name="newImplementationNode" 5088 abstract="false" native="false" synchronized="false" 5089 static="false" final="false" visibility="protected" 5090 deprecated="not deprecated"> 5091 <param name="node" type="com.google.inject.grapher.ImplementationNode"/> 5092 </method> 5093 <method name="newInstanceNode" 5094 abstract="false" native="false" synchronized="false" 5095 static="false" final="false" visibility="protected" 5096 deprecated="not deprecated"> 5097 <param name="node" type="com.google.inject.grapher.InstanceNode"/> 5098 </method> 5099 <method name="newDependencyEdge" 5100 abstract="false" native="false" synchronized="false" 5101 static="false" final="false" visibility="protected" 5102 deprecated="not deprecated"> 5103 <param name="edge" type="com.google.inject.grapher.DependencyEdge"/> 5104 </method> 5105 <method name="newBindingEdge" 5106 abstract="false" native="false" synchronized="false" 5107 static="false" final="false" visibility="protected" 5108 deprecated="not deprecated"> 5109 <param name="edge" type="com.google.inject.grapher.BindingEdge"/> 5110 </method> 5111 <doc> 5112 <![CDATA[{@link com.google.inject.grapher.InjectorGrapher} implementation that writes out a Graphviz DOT 5113 file of the graph. Dependencies are bound in {@link GraphvizModule}. 5114 <p> 5115 Specify the {@link PrintWriter} to output to with {@link #setOut(PrintWriter)}. 5116 5117 @author phopkins@gmail.com (Pete Hopkins) 5118 @since 4.0]]> 5119 </doc> 5120 </class> 5121 <!-- end class com.google.inject.grapher.graphviz.GraphvizGrapher --> 5122 <!-- start class com.google.inject.grapher.graphviz.GraphvizModule --> 5123 <class name="GraphvizModule" extends="com.google.inject.AbstractModule" 5124 abstract="false" 5125 static="false" final="false" visibility="public" 5126 deprecated="not deprecated"> 5127 <constructor name="GraphvizModule" 5128 static="false" final="false" visibility="public" 5129 deprecated="not deprecated"> 5130 </constructor> 5131 <method name="configure" 5132 abstract="false" native="false" synchronized="false" 5133 static="false" final="false" visibility="protected" 5134 deprecated="not deprecated"> 5135 </method> 5136 <doc> 5137 <![CDATA[Module that provides classes needed by {@link GraphvizGrapher}. 5138 5139 @author phopkins@gmail.com (Pete Hopkins)]]> 5140 </doc> 5141 </class> 5142 <!-- end class com.google.inject.grapher.graphviz.GraphvizModule --> 5143 <!-- start class com.google.inject.grapher.graphviz.GraphvizNode --> 5144 <class name="GraphvizNode" extends="java.lang.Object" 5145 abstract="false" 5146 static="false" final="false" visibility="public" 5147 deprecated="not deprecated"> 5148 <constructor name="GraphvizNode" type="com.google.inject.grapher.NodeId" 5149 static="false" final="false" visibility="public" 5150 deprecated="not deprecated"> 5151 <doc> 5152 <![CDATA[@since 4.0]]> 5153 </doc> 5154 </constructor> 5155 <method name="getNodeId" return="com.google.inject.grapher.NodeId" 5156 abstract="false" native="false" synchronized="false" 5157 static="false" final="false" visibility="public" 5158 deprecated="not deprecated"> 5159 <doc> 5160 <![CDATA[@since 4.0]]> 5161 </doc> 5162 </method> 5163 <method name="getShape" return="com.google.inject.grapher.graphviz.NodeShape" 5164 abstract="false" native="false" synchronized="false" 5165 static="false" final="false" visibility="public" 5166 deprecated="not deprecated"> 5167 </method> 5168 <method name="setShape" 5169 abstract="false" native="false" synchronized="false" 5170 static="false" final="false" visibility="public" 5171 deprecated="not deprecated"> 5172 <param name="shape" type="com.google.inject.grapher.graphviz.NodeShape"/> 5173 </method> 5174 <method name="getStyle" return="com.google.inject.grapher.graphviz.NodeStyle" 5175 abstract="false" native="false" synchronized="false" 5176 static="false" final="false" visibility="public" 5177 deprecated="not deprecated"> 5178 </method> 5179 <method name="setStyle" 5180 abstract="false" native="false" synchronized="false" 5181 static="false" final="false" visibility="public" 5182 deprecated="not deprecated"> 5183 <param name="style" type="com.google.inject.grapher.graphviz.NodeStyle"/> 5184 </method> 5185 <method name="getTitle" return="java.lang.String" 5186 abstract="false" native="false" synchronized="false" 5187 static="false" final="false" visibility="public" 5188 deprecated="not deprecated"> 5189 </method> 5190 <method name="setTitle" 5191 abstract="false" native="false" synchronized="false" 5192 static="false" final="false" visibility="public" 5193 deprecated="not deprecated"> 5194 <param name="title" type="java.lang.String"/> 5195 </method> 5196 <method name="getSubtitles" return="java.util.List<java.lang.String>" 5197 abstract="false" native="false" synchronized="false" 5198 static="false" final="false" visibility="public" 5199 deprecated="not deprecated"> 5200 </method> 5201 <method name="addSubtitle" 5202 abstract="false" native="false" synchronized="false" 5203 static="false" final="false" visibility="public" 5204 deprecated="not deprecated"> 5205 <param name="position" type="int"/> 5206 <param name="subtitle" type="java.lang.String"/> 5207 </method> 5208 <method name="getHeaderTextColor" return="java.lang.String" 5209 abstract="false" native="false" synchronized="false" 5210 static="false" final="false" visibility="public" 5211 deprecated="not deprecated"> 5212 </method> 5213 <method name="setHeaderTextColor" 5214 abstract="false" native="false" synchronized="false" 5215 static="false" final="false" visibility="public" 5216 deprecated="not deprecated"> 5217 <param name="headerTextColor" type="java.lang.String"/> 5218 </method> 5219 <method name="getHeaderBackgroundColor" return="java.lang.String" 5220 abstract="false" native="false" synchronized="false" 5221 static="false" final="false" visibility="public" 5222 deprecated="not deprecated"> 5223 </method> 5224 <method name="setHeaderBackgroundColor" 5225 abstract="false" native="false" synchronized="false" 5226 static="false" final="false" visibility="public" 5227 deprecated="not deprecated"> 5228 <param name="headerBackgroundColor" type="java.lang.String"/> 5229 </method> 5230 <method name="addField" 5231 abstract="false" native="false" synchronized="false" 5232 static="false" final="false" visibility="public" 5233 deprecated="not deprecated"> 5234 <param name="portId" type="java.lang.String"/> 5235 <param name="title" type="java.lang.String"/> 5236 </method> 5237 <method name="getFields" return="java.util.Map<java.lang.String, java.lang.String>" 5238 abstract="false" native="false" synchronized="false" 5239 static="false" final="false" visibility="public" 5240 deprecated="not deprecated"> 5241 </method> 5242 <method name="getIdentifier" return="java.lang.String" 5243 abstract="false" native="false" synchronized="false" 5244 static="false" final="false" visibility="public" 5245 deprecated="not deprecated"> 5246 <doc> 5247 <![CDATA[@since 4.0]]> 5248 </doc> 5249 </method> 5250 <method name="setIdentifier" 5251 abstract="false" native="false" synchronized="false" 5252 static="false" final="false" visibility="public" 5253 deprecated="not deprecated"> 5254 <param name="identifier" type="java.lang.String"/> 5255 <doc> 5256 <![CDATA[@since 4.0]]> 5257 </doc> 5258 </method> 5259 <doc> 5260 <![CDATA[Data object to encapsulate the attributes of Graphviz nodes that we're 5261 interested in drawing. 5262 5263 @author phopkins@gmail.com (Pete Hopkins)]]> 5264 </doc> 5265 </class> 5266 <!-- end class com.google.inject.grapher.graphviz.GraphvizNode --> 5267 <!-- start class com.google.inject.grapher.graphviz.NodeShape --> 5268 <class name="NodeShape" extends="java.lang.Enum<com.google.inject.grapher.graphviz.NodeShape>" 5269 abstract="false" 5270 static="false" final="true" visibility="public" 5271 deprecated="not deprecated"> 5272 <method name="values" return="com.google.inject.grapher.graphviz.NodeShape[]" 5273 abstract="false" native="false" synchronized="false" 5274 static="true" final="false" visibility="public" 5275 deprecated="not deprecated"> 5276 </method> 5277 <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeShape" 5278 abstract="false" native="false" synchronized="false" 5279 static="true" final="false" visibility="public" 5280 deprecated="not deprecated"> 5281 <param name="name" type="java.lang.String"/> 5282 </method> 5283 <method name="toString" return="java.lang.String" 5284 abstract="false" native="false" synchronized="false" 5285 static="false" final="false" visibility="public" 5286 deprecated="not deprecated"> 5287 </method> 5288 <doc> 5289 <![CDATA[Enum for the shapes that are most interesting for Guice graphing. 5290 <p> 5291 See: http://www.graphviz.org/doc/info/shapes.html 5292 5293 @author phopkins@gmail.com (Pete Hopkins)]]> 5294 </doc> 5295 </class> 5296 <!-- end class com.google.inject.grapher.graphviz.NodeShape --> 5297 <!-- start class com.google.inject.grapher.graphviz.NodeStyle --> 5298 <class name="NodeStyle" extends="java.lang.Enum<com.google.inject.grapher.graphviz.NodeStyle>" 5299 abstract="false" 5300 static="false" final="true" visibility="public" 5301 deprecated="not deprecated"> 5302 <method name="values" return="com.google.inject.grapher.graphviz.NodeStyle[]" 5303 abstract="false" native="false" synchronized="false" 5304 static="true" final="false" visibility="public" 5305 deprecated="not deprecated"> 5306 </method> 5307 <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeStyle" 5308 abstract="false" native="false" synchronized="false" 5309 static="true" final="false" visibility="public" 5310 deprecated="not deprecated"> 5311 <param name="name" type="java.lang.String"/> 5312 </method> 5313 <method name="toString" return="java.lang.String" 5314 abstract="false" native="false" synchronized="false" 5315 static="false" final="false" visibility="public" 5316 deprecated="not deprecated"> 5317 </method> 5318 <doc> 5319 <![CDATA[Styles for nodes. Similar to {@link EdgeStyle} but with a few more options. 5320 <p> 5321 See: http://www.graphviz.org/doc/info/attrs.html#k:style 5322 5323 @author phopkins@gmail.com (Pete Hopkins)]]> 5324 </doc> 5325 </class> 5326 <!-- end class com.google.inject.grapher.graphviz.NodeStyle --> 5327 <!-- start interface com.google.inject.grapher.graphviz.PortIdFactory --> 5328 <interface name="PortIdFactory" abstract="true" 5329 static="false" final="false" visibility="public" 5330 deprecated="not deprecated"> 5331 <method name="getPortId" return="java.lang.String" 5332 abstract="true" native="false" synchronized="false" 5333 static="false" final="false" visibility="public" 5334 deprecated="not deprecated"> 5335 <param name="member" type="java.lang.reflect.Member"/> 5336 </method> 5337 <doc> 5338 <![CDATA[Interface for a service that returns Graphviz port IDs, used for naming the 5339 rows in {@link com.google.inject.grapher.ImplementationNode}-displaying {@link GraphvizNode}s. 5340 5341 @author phopkins@gmail.com (Pete Hopkins)]]> 5342 </doc> 5343 </interface> 5344 <!-- end interface com.google.inject.grapher.graphviz.PortIdFactory --> 5345 <!-- start class com.google.inject.grapher.graphviz.PortIdFactoryImpl --> 5346 <class name="PortIdFactoryImpl" extends="java.lang.Object" 5347 abstract="false" 5348 static="false" final="false" visibility="public" 5349 deprecated="not deprecated"> 5350 <implements name="com.google.inject.grapher.graphviz.PortIdFactory"/> 5351 <constructor name="PortIdFactoryImpl" 5352 static="false" final="false" visibility="public" 5353 deprecated="not deprecated"> 5354 </constructor> 5355 <method name="getPortId" return="java.lang.String" 5356 abstract="false" native="false" synchronized="false" 5357 static="false" final="false" visibility="public" 5358 deprecated="not deprecated"> 5359 <param name="member" type="java.lang.reflect.Member"/> 5360 </method> 5361 <doc> 5362 <![CDATA[Implementation of {@link PortIdFactory}. Bound in {@link GraphvizModule}. 5363 5364 @author phopkins@gmail.com (Pete Hopkins)]]> 5365 </doc> 5366 </class> 5367 <!-- end class com.google.inject.grapher.graphviz.PortIdFactoryImpl --> 5368</package> 5369<package name="com.google.inject.jndi"> 5370 <!-- start class com.google.inject.jndi.JndiIntegration --> 5371 <class name="JndiIntegration" extends="java.lang.Object" 5372 abstract="false" 5373 static="false" final="false" visibility="public" 5374 deprecated="not deprecated"> 5375 <method name="fromJndi" return="com.google.inject.Provider<T>" 5376 abstract="false" native="false" synchronized="false" 5377 static="true" final="false" visibility="public" 5378 deprecated="not deprecated"> 5379 <param name="type" type="java.lang.Class<T>"/> 5380 <param name="name" type="java.lang.String"/> 5381 <doc> 5382 <![CDATA[Creates a provider which looks up objects in JNDI using the given name. 5383 Example usage: 5384 5385 <pre> 5386 bind(DataSource.class).toProvider(fromJndi(DataSource.class, "java:...")); 5387 </pre>]]> 5388 </doc> 5389 </method> 5390 <doc> 5391 <![CDATA[Integrates Guice with JNDI. Requires a binding to 5392 {@link javax.naming.Context}. 5393 5394 @author crazybob@google.com (Bob Lee)]]> 5395 </doc> 5396 </class> 5397 <!-- end class com.google.inject.jndi.JndiIntegration --> 5398</package> 5399<package name="com.google.inject.matcher"> 5400 <!-- start class com.google.inject.matcher.AbstractMatcher --> 5401 <class name="AbstractMatcher" extends="java.lang.Object" 5402 abstract="true" 5403 static="false" final="false" visibility="public" 5404 deprecated="not deprecated"> 5405 <implements name="com.google.inject.matcher.Matcher<T>"/> 5406 <constructor name="AbstractMatcher" 5407 static="false" final="false" visibility="public" 5408 deprecated="not deprecated"> 5409 </constructor> 5410 <method name="and" return="com.google.inject.matcher.Matcher<T>" 5411 abstract="false" native="false" synchronized="false" 5412 static="false" final="false" visibility="public" 5413 deprecated="not deprecated"> 5414 <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 5415 </method> 5416 <method name="or" return="com.google.inject.matcher.Matcher<T>" 5417 abstract="false" native="false" synchronized="false" 5418 static="false" final="false" visibility="public" 5419 deprecated="not deprecated"> 5420 <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 5421 </method> 5422 <doc> 5423 <![CDATA[Implements {@code and()} and {@code or()}. 5424 5425 @author crazybob@google.com (Bob Lee)]]> 5426 </doc> 5427 </class> 5428 <!-- end class com.google.inject.matcher.AbstractMatcher --> 5429 <!-- start interface com.google.inject.matcher.Matcher --> 5430 <interface name="Matcher" abstract="true" 5431 static="false" final="false" visibility="public" 5432 deprecated="not deprecated"> 5433 <method name="matches" return="boolean" 5434 abstract="true" native="false" synchronized="false" 5435 static="false" final="false" visibility="public" 5436 deprecated="not deprecated"> 5437 <param name="t" type="T"/> 5438 <doc> 5439 <![CDATA[Returns {@code true} if this matches {@code t}, {@code false} otherwise.]]> 5440 </doc> 5441 </method> 5442 <method name="and" return="com.google.inject.matcher.Matcher<T>" 5443 abstract="true" native="false" synchronized="false" 5444 static="false" final="false" visibility="public" 5445 deprecated="not deprecated"> 5446 <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 5447 <doc> 5448 <![CDATA[Returns a new matcher which returns {@code true} if both this and the 5449 given matcher return {@code true}.]]> 5450 </doc> 5451 </method> 5452 <method name="or" return="com.google.inject.matcher.Matcher<T>" 5453 abstract="true" native="false" synchronized="false" 5454 static="false" final="false" visibility="public" 5455 deprecated="not deprecated"> 5456 <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 5457 <doc> 5458 <![CDATA[Returns a new matcher which returns {@code true} if either this or the 5459 given matcher return {@code true}.]]> 5460 </doc> 5461 </method> 5462 <doc> 5463 <![CDATA[Returns {@code true} or {@code false} for a given input. 5464 5465 @author crazybob@google.com (Bob Lee)]]> 5466 </doc> 5467 </interface> 5468 <!-- end interface com.google.inject.matcher.Matcher --> 5469 <!-- start class com.google.inject.matcher.Matchers --> 5470 <class name="Matchers" extends="java.lang.Object" 5471 abstract="false" 5472 static="false" final="false" visibility="public" 5473 deprecated="not deprecated"> 5474 <method name="any" return="com.google.inject.matcher.Matcher<java.lang.Object>" 5475 abstract="false" native="false" synchronized="false" 5476 static="true" final="false" visibility="public" 5477 deprecated="not deprecated"> 5478 <doc> 5479 <![CDATA[Returns a matcher which matches any input.]]> 5480 </doc> 5481 </method> 5482 <method name="not" return="com.google.inject.matcher.Matcher<T>" 5483 abstract="false" native="false" synchronized="false" 5484 static="true" final="false" visibility="public" 5485 deprecated="not deprecated"> 5486 <param name="p" type="com.google.inject.matcher.Matcher<? super T>"/> 5487 <doc> 5488 <![CDATA[Inverts the given matcher.]]> 5489 </doc> 5490 </method> 5491 <method name="annotatedWith" return="com.google.inject.matcher.Matcher<java.lang.reflect.AnnotatedElement>" 5492 abstract="false" native="false" synchronized="false" 5493 static="true" final="false" visibility="public" 5494 deprecated="not deprecated"> 5495 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5496 <doc> 5497 <![CDATA[Returns a matcher which matches elements (methods, classes, etc.) 5498 with a given annotation.]]> 5499 </doc> 5500 </method> 5501 <method name="annotatedWith" return="com.google.inject.matcher.Matcher<java.lang.reflect.AnnotatedElement>" 5502 abstract="false" native="false" synchronized="false" 5503 static="true" final="false" visibility="public" 5504 deprecated="not deprecated"> 5505 <param name="annotation" type="java.lang.annotation.Annotation"/> 5506 <doc> 5507 <![CDATA[Returns a matcher which matches elements (methods, classes, etc.) 5508 with a given annotation.]]> 5509 </doc> 5510 </method> 5511 <method name="subclassesOf" return="com.google.inject.matcher.Matcher<java.lang.Class>" 5512 abstract="false" native="false" synchronized="false" 5513 static="true" final="false" visibility="public" 5514 deprecated="not deprecated"> 5515 <param name="superclass" type="java.lang.Class<?>"/> 5516 <doc> 5517 <![CDATA[Returns a matcher which matches subclasses of the given type (as well as 5518 the given type).]]> 5519 </doc> 5520 </method> 5521 <method name="only" return="com.google.inject.matcher.Matcher<java.lang.Object>" 5522 abstract="false" native="false" synchronized="false" 5523 static="true" final="false" visibility="public" 5524 deprecated="not deprecated"> 5525 <param name="value" type="java.lang.Object"/> 5526 <doc> 5527 <![CDATA[Returns a matcher which matches objects equal to the given object.]]> 5528 </doc> 5529 </method> 5530 <method name="identicalTo" return="com.google.inject.matcher.Matcher<java.lang.Object>" 5531 abstract="false" native="false" synchronized="false" 5532 static="true" final="false" visibility="public" 5533 deprecated="not deprecated"> 5534 <param name="value" type="java.lang.Object"/> 5535 <doc> 5536 <![CDATA[Returns a matcher which matches only the given object.]]> 5537 </doc> 5538 </method> 5539 <method name="inPackage" return="com.google.inject.matcher.Matcher<java.lang.Class>" 5540 abstract="false" native="false" synchronized="false" 5541 static="true" final="false" visibility="public" 5542 deprecated="not deprecated"> 5543 <param name="targetPackage" type="java.lang.Package"/> 5544 <doc> 5545 <![CDATA[Returns a matcher which matches classes in the given package. Packages are specific to their 5546 classloader, so classes with the same package name may not have the same package at runtime.]]> 5547 </doc> 5548 </method> 5549 <method name="inSubpackage" return="com.google.inject.matcher.Matcher<java.lang.Class>" 5550 abstract="false" native="false" synchronized="false" 5551 static="true" final="false" visibility="public" 5552 deprecated="not deprecated"> 5553 <param name="targetPackageName" type="java.lang.String"/> 5554 <doc> 5555 <![CDATA[Returns a matcher which matches classes in the given package and its subpackages. Unlike 5556 {@link #inPackage(Package) inPackage()}, this matches classes from any classloader. 5557 5558 @since 2.0]]> 5559 </doc> 5560 </method> 5561 <method name="returns" return="com.google.inject.matcher.Matcher<java.lang.reflect.Method>" 5562 abstract="false" native="false" synchronized="false" 5563 static="true" final="false" visibility="public" 5564 deprecated="not deprecated"> 5565 <param name="returnType" type="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>"/> 5566 <doc> 5567 <![CDATA[Returns a matcher which matches methods with matching return types.]]> 5568 </doc> 5569 </method> 5570 <doc> 5571 <![CDATA[Matcher implementations. Supports matching classes and methods. 5572 5573 @author crazybob@google.com (Bob Lee)]]> 5574 </doc> 5575 </class> 5576 <!-- end class com.google.inject.matcher.Matchers --> 5577</package> 5578<package name="com.google.inject.multibindings"> 5579 <!-- start class com.google.inject.multibindings.ClassMapKey --> 5580 <class name="ClassMapKey" abstract="true" 5581 static="false" final="false" visibility="public" 5582 deprecated="not deprecated"> 5583 <implements name="java.lang.annotation.Annotation"/> 5584 <doc> 5585 <![CDATA[Allows {@literal @}{@link ProvidesIntoMap} to specify a class map key. 5586 5587 @since 4.0]]> 5588 </doc> 5589 </class> 5590 <!-- end class com.google.inject.multibindings.ClassMapKey --> 5591 <!-- start class com.google.inject.multibindings.MapBinder --> 5592 <class name="MapBinder" extends="java.lang.Object" 5593 abstract="true" 5594 static="false" final="false" visibility="public" 5595 deprecated="not deprecated"> 5596 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5597 abstract="false" native="false" synchronized="false" 5598 static="true" final="false" visibility="public" 5599 deprecated="not deprecated"> 5600 <param name="binder" type="com.google.inject.Binder"/> 5601 <param name="keyType" type="com.google.inject.TypeLiteral<K>"/> 5602 <param name="valueType" type="com.google.inject.TypeLiteral<V>"/> 5603 <doc> 5604 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5605 {@link Map} that is itself bound with no binding annotation.]]> 5606 </doc> 5607 </method> 5608 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5609 abstract="false" native="false" synchronized="false" 5610 static="true" final="false" visibility="public" 5611 deprecated="not deprecated"> 5612 <param name="binder" type="com.google.inject.Binder"/> 5613 <param name="keyType" type="java.lang.Class<K>"/> 5614 <param name="valueType" type="java.lang.Class<V>"/> 5615 <doc> 5616 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5617 {@link Map} that is itself bound with no binding annotation.]]> 5618 </doc> 5619 </method> 5620 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5621 abstract="false" native="false" synchronized="false" 5622 static="true" final="false" visibility="public" 5623 deprecated="not deprecated"> 5624 <param name="binder" type="com.google.inject.Binder"/> 5625 <param name="keyType" type="com.google.inject.TypeLiteral<K>"/> 5626 <param name="valueType" type="com.google.inject.TypeLiteral<V>"/> 5627 <param name="annotation" type="java.lang.annotation.Annotation"/> 5628 <doc> 5629 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5630 {@link Map} that is itself bound with {@code annotation}.]]> 5631 </doc> 5632 </method> 5633 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5634 abstract="false" native="false" synchronized="false" 5635 static="true" final="false" visibility="public" 5636 deprecated="not deprecated"> 5637 <param name="binder" type="com.google.inject.Binder"/> 5638 <param name="keyType" type="java.lang.Class<K>"/> 5639 <param name="valueType" type="java.lang.Class<V>"/> 5640 <param name="annotation" type="java.lang.annotation.Annotation"/> 5641 <doc> 5642 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5643 {@link Map} that is itself bound with {@code annotation}.]]> 5644 </doc> 5645 </method> 5646 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5647 abstract="false" native="false" synchronized="false" 5648 static="true" final="false" visibility="public" 5649 deprecated="not deprecated"> 5650 <param name="binder" type="com.google.inject.Binder"/> 5651 <param name="keyType" type="com.google.inject.TypeLiteral<K>"/> 5652 <param name="valueType" type="com.google.inject.TypeLiteral<V>"/> 5653 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5654 <doc> 5655 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5656 {@link Map} that is itself bound with {@code annotationType}.]]> 5657 </doc> 5658 </method> 5659 <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5660 abstract="false" native="false" synchronized="false" 5661 static="true" final="false" visibility="public" 5662 deprecated="not deprecated"> 5663 <param name="binder" type="com.google.inject.Binder"/> 5664 <param name="keyType" type="java.lang.Class<K>"/> 5665 <param name="valueType" type="java.lang.Class<V>"/> 5666 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5667 <doc> 5668 <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5669 {@link Map} that is itself bound with {@code annotationType}.]]> 5670 </doc> 5671 </method> 5672 <method name="permitDuplicates" return="com.google.inject.multibindings.MapBinder<K, V>" 5673 abstract="true" native="false" synchronized="false" 5674 static="false" final="false" visibility="public" 5675 deprecated="not deprecated"> 5676 <doc> 5677 <![CDATA[Configures the {@code MapBinder} to handle duplicate entries. 5678 <p>When multiple equal keys are bound, the value that gets included in the map is 5679 arbitrary. 5680 <p>In addition to the {@code Map<K, V>} and {@code Map<K, Provider<V>>} 5681 maps that are normally bound, a {@code Map<K, Set<V>>} and 5682 {@code Map<K, Set<Provider<V>>>} are <em>also</em> bound, which contain 5683 all values bound to each key. 5684 <p> 5685 When multiple modules contribute elements to the map, this configuration 5686 option impacts all of them. 5687 5688 @return this map binder 5689 @since 3.0]]> 5690 </doc> 5691 </method> 5692 <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder<V>" 5693 abstract="true" native="false" synchronized="false" 5694 static="false" final="false" visibility="public" 5695 deprecated="not deprecated"> 5696 <param name="key" type="K"/> 5697 <doc> 5698 <![CDATA[Returns a binding builder used to add a new entry in the map. Each 5699 key must be distinct (and non-null). Bound providers will be evaluated each 5700 time the map is injected. 5701 5702 <p>It is an error to call this method without also calling one of the 5703 {@code to} methods on the returned binding builder. 5704 5705 <p>Scoping elements independently is supported. Use the {@code in} method 5706 to specify a binding scope.]]> 5707 </doc> 5708 </method> 5709 <doc> 5710 <![CDATA[An API to bind multiple map entries separately, only to later inject them as 5711 a complete map. MapBinder is intended for use in your application's module: 5712 <pre><code> 5713 public class SnacksModule extends AbstractModule { 5714 protected void configure() { 5715 MapBinder<String, Snack> mapbinder 5716 = MapBinder.newMapBinder(binder(), String.class, Snack.class); 5717 mapbinder.addBinding("twix").toInstance(new Twix()); 5718 mapbinder.addBinding("snickers").toProvider(SnickersProvider.class); 5719 mapbinder.addBinding("skittles").to(Skittles.class); 5720 } 5721 }</code></pre> 5722 5723 <p>With this binding, a {@link Map}{@code <String, Snack>} can now be 5724 injected: 5725 <pre><code> 5726 class SnackMachine { 5727 {@literal @}Inject 5728 public SnackMachine(Map<String, Snack> snacks) { ... } 5729 }</code></pre> 5730 5731 <p>In addition to binding {@code Map<K, V>}, a mapbinder will also bind 5732 {@code Map<K, Provider<V>>} for lazy value provision: 5733 <pre><code> 5734 class SnackMachine { 5735 {@literal @}Inject 5736 public SnackMachine(Map<String, Provider<Snack>> snackProviders) { ... } 5737 }</code></pre> 5738 5739 <p>Contributing mapbindings from different modules is supported. For example, 5740 it is okay to have both {@code CandyModule} and {@code ChipsModule} both 5741 create their own {@code MapBinder<String, Snack>}, and to each contribute 5742 bindings to the snacks map. When that map is injected, it will contain 5743 entries from both modules. 5744 5745 <p>The map's iteration order is consistent with the binding order. This is 5746 convenient when multiple elements are contributed by the same module because 5747 that module can order its bindings appropriately. Avoid relying on the 5748 iteration order of elements contributed by different modules, since there is 5749 no equivalent mechanism to order modules. 5750 5751 <p>The map is unmodifiable. Elements can only be added to the map by 5752 configuring the MapBinder. Elements can never be removed from the map. 5753 5754 <p>Values are resolved at map injection time. If a value is bound to a 5755 provider, that provider's get method will be called each time the map is 5756 injected (unless the binding is also scoped, or a map of providers is injected). 5757 5758 <p>Annotations are used to create different maps of the same key/value 5759 type. Each distinct annotation gets its own independent map. 5760 5761 <p><strong>Keys must be distinct.</strong> If the same key is bound more than 5762 once, map injection will fail. However, use {@link #permitDuplicates()} in 5763 order to allow duplicate keys; extra bindings to {@code Map<K, Set<V>>} and 5764 {@code Map<K, Set<Provider<V>>} will be added. 5765 5766 <p><strong>Keys must be non-null.</strong> {@code addBinding(null)} will 5767 throw an unchecked exception. 5768 5769 <p><strong>Values must be non-null to use map injection.</strong> If any 5770 value is null, map injection will fail (although injecting a map of providers 5771 will not). 5772 5773 @author dpb@google.com (David P. Baker)]]> 5774 </doc> 5775 </class> 5776 <!-- end class com.google.inject.multibindings.MapBinder --> 5777 <!-- start interface com.google.inject.multibindings.MapBinderBinding --> 5778 <interface name="MapBinderBinding" abstract="true" 5779 static="false" final="false" visibility="public" 5780 deprecated="not deprecated"> 5781 <method name="getMapKey" return="com.google.inject.Key<T>" 5782 abstract="true" native="false" synchronized="false" 5783 static="false" final="false" visibility="public" 5784 deprecated="not deprecated"> 5785 <doc> 5786 <![CDATA[Returns the {@link Key} for the map.]]> 5787 </doc> 5788 </method> 5789 <method name="getKeyTypeLiteral" return="com.google.inject.TypeLiteral<?>" 5790 abstract="true" native="false" synchronized="false" 5791 static="false" final="false" visibility="public" 5792 deprecated="not deprecated"> 5793 <doc> 5794 <![CDATA[Returns the TypeLiteral describing the keys of the map. 5795 <p> 5796 The TypeLiteral will always match the type Map's generic type. For example, if getMapKey 5797 returns a key of <code>Map<String, Snack></code>, then this will always return a 5798 <code>TypeLiteral<String></code>.]]> 5799 </doc> 5800 </method> 5801 <method name="getValueTypeLiteral" return="com.google.inject.TypeLiteral<?>" 5802 abstract="true" native="false" synchronized="false" 5803 static="false" final="false" visibility="public" 5804 deprecated="not deprecated"> 5805 <doc> 5806 <![CDATA[Returns the TypeLiteral describing the values of the map. 5807 <p> 5808 The TypeLiteral will always match the type Map's generic type. For example, if getMapKey 5809 returns a key of <code>Map<String, Snack></code>, then this will always return a 5810 <code>TypeLiteral<Snack></code>.]]> 5811 </doc> 5812 </method> 5813 <method name="getEntries" return="java.util.List<java.util.Map.Entry<?, com.google.inject.Binding<?>>>" 5814 abstract="true" native="false" synchronized="false" 5815 static="false" final="false" visibility="public" 5816 deprecated="not deprecated"> 5817 <doc> 5818 <![CDATA[Returns all entries in the Map. The returned list of Map.Entries contains the key and a binding 5819 to the value. Duplicate keys or values will exist as separate Map.Entries in the returned list. 5820 This is only supported on bindings returned from an injector. This will throw 5821 {@link UnsupportedOperationException} if it is called on an element retrieved from 5822 {@link Elements#getElements}. 5823 <p> 5824 The elements will always match the type Map's generic type. For example, if getMapKey returns a 5825 key of <code>Map<String, Snack></code>, then this will always return a list of type 5826 <code>List<Map.Entry<String, Binding<Snack>>></code>.]]> 5827 </doc> 5828 </method> 5829 <method name="permitsDuplicates" return="boolean" 5830 abstract="true" native="false" synchronized="false" 5831 static="false" final="false" visibility="public" 5832 deprecated="not deprecated"> 5833 <doc> 5834 <![CDATA[Returns true if the MapBinder permits duplicates. This is only supported on bindings returned 5835 from an injector. This will throw {@link UnsupportedOperationException} if it is called on a 5836 MapBinderBinding retrieved from {@link Elements#getElements}.]]> 5837 </doc> 5838 </method> 5839 <method name="containsElement" return="boolean" 5840 abstract="true" native="false" synchronized="false" 5841 static="false" final="false" visibility="public" 5842 deprecated="not deprecated"> 5843 <param name="element" type="com.google.inject.spi.Element"/> 5844 <doc> 5845 <![CDATA[Returns true if this MapBinder contains the given Element in order to build the map or uses the 5846 given Element in order to support building and injecting the map. This will work for 5847 MapBinderBindings retrieved from an injector and {@link Elements#getElements}. Usually this is 5848 only necessary if you are working with elements retrieved from modules (without an Injector), 5849 otherwise {@link #getEntries} and {@link #permitsDuplicates} are better options. 5850 <p> 5851 If you need to introspect the details of the map, such as the keys, values or if it permits 5852 duplicates, it is necessary to pass the elements through an Injector and use 5853 {@link #getEntries()} and {@link #permitsDuplicates()}.]]> 5854 </doc> 5855 </method> 5856 <doc> 5857 <![CDATA[A binding for a MapBinder. 5858 <p> 5859 Although MapBinders may be injected through a variety of generic types (Map<K, V>, Map 5860 <K, Provider<V>>, Map<K, Set<V>>, Map<K, Set< 5861 Provider<V>>, and even Set<Map.Entry<K, Provider<V>>), a 5862 MapBinderBinding exists only on the Binding associated with the Map<K, V> key. Other 5863 bindings can be validated to be derived from this MapBinderBinding using 5864 {@link #containsElement(Element)}. 5865 5866 @param <T> The fully qualified type of the map, including Map. For example: 5867 <code>MapBinderBinding<Map<String, Snack>></code> 5868 5869 @since 3.0 5870 @author sameb@google.com (Sam Berlin)]]> 5871 </doc> 5872 </interface> 5873 <!-- end interface com.google.inject.multibindings.MapBinderBinding --> 5874 <!-- start class com.google.inject.multibindings.MapKey --> 5875 <class name="MapKey" abstract="true" 5876 static="false" final="false" visibility="public" 5877 deprecated="not deprecated"> 5878 <implements name="java.lang.annotation.Annotation"/> 5879 <doc> 5880 <![CDATA[Allows users define customized key type annotations for map bindings by annotating an annotation 5881 of a {@code Map}'s key type. The custom key annotation can be applied to methods also annotated 5882 with {@literal @}{@link ProvidesIntoMap}. 5883 5884 <p>A {@link StringMapKey} and {@link ClassMapKey} are provided for convenience with maps whose 5885 keys are strings or classes. For maps with enums or primitive types as keys, you must provide 5886 your own MapKey annotation, such as this one for an enum: 5887 5888 <pre> 5889 {@literal @}MapKey(unwrapValue = true) 5890 {@literal @}Retention(RUNTIME) 5891 public {@literal @}interface MyCustomEnumKey { 5892 MyCustomEnum value(); 5893 } 5894 </pre> 5895 5896 You can also use the whole annotation as the key, if {@code unwrapValue=false}. 5897 When unwrapValue is false, the annotation type will be the key type for the injected map and 5898 the annotation instances will be the key values. If {@code unwrapValue=true}, the value() type 5899 will be the key type for injected map and the value() instances will be the keys values. 5900 5901 @since 4.0]]> 5902 </doc> 5903 </class> 5904 <!-- end class com.google.inject.multibindings.MapKey --> 5905 <!-- start class com.google.inject.multibindings.Multibinder --> 5906 <class name="Multibinder" extends="java.lang.Object" 5907 abstract="true" 5908 static="false" final="false" visibility="public" 5909 deprecated="not deprecated"> 5910 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5911 abstract="false" native="false" synchronized="false" 5912 static="true" final="false" visibility="public" 5913 deprecated="not deprecated"> 5914 <param name="binder" type="com.google.inject.Binder"/> 5915 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 5916 <doc> 5917 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5918 itself bound with no binding annotation.]]> 5919 </doc> 5920 </method> 5921 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5922 abstract="false" native="false" synchronized="false" 5923 static="true" final="false" visibility="public" 5924 deprecated="not deprecated"> 5925 <param name="binder" type="com.google.inject.Binder"/> 5926 <param name="type" type="java.lang.Class<T>"/> 5927 <doc> 5928 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5929 itself bound with no binding annotation.]]> 5930 </doc> 5931 </method> 5932 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5933 abstract="false" native="false" synchronized="false" 5934 static="true" final="false" visibility="public" 5935 deprecated="not deprecated"> 5936 <param name="binder" type="com.google.inject.Binder"/> 5937 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 5938 <param name="annotation" type="java.lang.annotation.Annotation"/> 5939 <doc> 5940 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5941 itself bound with {@code annotation}.]]> 5942 </doc> 5943 </method> 5944 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5945 abstract="false" native="false" synchronized="false" 5946 static="true" final="false" visibility="public" 5947 deprecated="not deprecated"> 5948 <param name="binder" type="com.google.inject.Binder"/> 5949 <param name="type" type="java.lang.Class<T>"/> 5950 <param name="annotation" type="java.lang.annotation.Annotation"/> 5951 <doc> 5952 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5953 itself bound with {@code annotation}.]]> 5954 </doc> 5955 </method> 5956 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5957 abstract="false" native="false" synchronized="false" 5958 static="true" final="false" visibility="public" 5959 deprecated="not deprecated"> 5960 <param name="binder" type="com.google.inject.Binder"/> 5961 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 5962 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5963 <doc> 5964 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5965 itself bound with {@code annotationType}.]]> 5966 </doc> 5967 </method> 5968 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5969 abstract="false" native="false" synchronized="false" 5970 static="true" final="false" visibility="public" 5971 deprecated="not deprecated"> 5972 <param name="binder" type="com.google.inject.Binder"/> 5973 <param name="key" type="com.google.inject.Key<T>"/> 5974 <doc> 5975 <![CDATA[Returns a new multibinder that collects instances of the key's type in a {@link Set} that is 5976 itself bound with the annotation (if any) of the key. 5977 5978 @since 4.0]]> 5979 </doc> 5980 </method> 5981 <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5982 abstract="false" native="false" synchronized="false" 5983 static="true" final="false" visibility="public" 5984 deprecated="not deprecated"> 5985 <param name="binder" type="com.google.inject.Binder"/> 5986 <param name="type" type="java.lang.Class<T>"/> 5987 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5988 <doc> 5989 <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5990 itself bound with {@code annotationType}.]]> 5991 </doc> 5992 </method> 5993 <method name="permitDuplicates" return="com.google.inject.multibindings.Multibinder<T>" 5994 abstract="true" native="false" synchronized="false" 5995 static="false" final="false" visibility="public" 5996 deprecated="not deprecated"> 5997 <doc> 5998 <![CDATA[Configures the bound set to silently discard duplicate elements. When multiple equal values are 5999 bound, the one that gets included is arbitrary. When multiple modules contribute elements to 6000 the set, this configuration option impacts all of them. 6001 6002 @return this multibinder 6003 @since 3.0]]> 6004 </doc> 6005 </method> 6006 <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder<T>" 6007 abstract="true" native="false" synchronized="false" 6008 static="false" final="false" visibility="public" 6009 deprecated="not deprecated"> 6010 <doc> 6011 <![CDATA[Returns a binding builder used to add a new element in the set. Each 6012 bound element must have a distinct value. Bound providers will be 6013 evaluated each time the set is injected. 6014 6015 <p>It is an error to call this method without also calling one of the 6016 {@code to} methods on the returned binding builder. 6017 6018 <p>Scoping elements independently is supported. Use the {@code in} method 6019 to specify a binding scope.]]> 6020 </doc> 6021 </method> 6022 <doc> 6023 <![CDATA[An API to bind multiple values separately, only to later inject them as a 6024 complete collection. Multibinder is intended for use in your application's 6025 module: 6026 <pre><code> 6027 public class SnacksModule extends AbstractModule { 6028 protected void configure() { 6029 Multibinder<Snack> multibinder 6030 = Multibinder.newSetBinder(binder(), Snack.class); 6031 multibinder.addBinding().toInstance(new Twix()); 6032 multibinder.addBinding().toProvider(SnickersProvider.class); 6033 multibinder.addBinding().to(Skittles.class); 6034 } 6035 }</code></pre> 6036 6037 <p>With this binding, a {@link Set}{@code <Snack>} can now be injected: 6038 <pre><code> 6039 class SnackMachine { 6040 {@literal @}Inject 6041 public SnackMachine(Set<Snack> snacks) { ... } 6042 }</code></pre> 6043 6044 If desired, {@link Collection}{@code <Provider<Snack>>} can also be injected. 6045 6046 <p>Contributing multibindings from different modules is supported. For 6047 example, it is okay for both {@code CandyModule} and {@code ChipsModule} 6048 to create their own {@code Multibinder<Snack>}, and to each contribute 6049 bindings to the set of snacks. When that set is injected, it will contain 6050 elements from both modules. 6051 6052 <p>The set's iteration order is consistent with the binding order. This is 6053 convenient when multiple elements are contributed by the same module because 6054 that module can order its bindings appropriately. Avoid relying on the 6055 iteration order of elements contributed by different modules, since there is 6056 no equivalent mechanism to order modules. 6057 6058 <p>The set is unmodifiable. Elements can only be added to the set by 6059 configuring the multibinder. Elements can never be removed from the set. 6060 6061 <p>Elements are resolved at set injection time. If an element is bound to a 6062 provider, that provider's get method will be called each time the set is 6063 injected (unless the binding is also scoped). 6064 6065 <p>Annotations are be used to create different sets of the same element 6066 type. Each distinct annotation gets its own independent collection of 6067 elements. 6068 6069 <p><strong>Elements must be distinct.</strong> If multiple bound elements 6070 have the same value, set injection will fail. 6071 6072 <p><strong>Elements must be non-null.</strong> If any set element is null, 6073 set injection will fail. 6074 6075 @author jessewilson@google.com (Jesse Wilson)]]> 6076 </doc> 6077 </class> 6078 <!-- end class com.google.inject.multibindings.Multibinder --> 6079 <!-- start interface com.google.inject.multibindings.MultibinderBinding --> 6080 <interface name="MultibinderBinding" abstract="true" 6081 static="false" final="false" visibility="public" 6082 deprecated="not deprecated"> 6083 <method name="getSetKey" return="com.google.inject.Key<T>" 6084 abstract="true" native="false" synchronized="false" 6085 static="false" final="false" visibility="public" 6086 deprecated="not deprecated"> 6087 <doc> 6088 <![CDATA[Returns the key for the set.]]> 6089 </doc> 6090 </method> 6091 <method name="getElementTypeLiteral" return="com.google.inject.TypeLiteral<?>" 6092 abstract="true" native="false" synchronized="false" 6093 static="false" final="false" visibility="public" 6094 deprecated="not deprecated"> 6095 <doc> 6096 <![CDATA[Returns the TypeLiteral that describes the type of elements in the set. 6097 <p> 6098 The elements will always match the type Set's generic type. For example, if getSetKey returns a 6099 key of <code>Set<String></code>, then this will always return a 6100 <code>TypeLiteral<String></code>.]]> 6101 </doc> 6102 </method> 6103 <method name="getElements" return="java.util.List<com.google.inject.Binding<?>>" 6104 abstract="true" native="false" synchronized="false" 6105 static="false" final="false" visibility="public" 6106 deprecated="not deprecated"> 6107 <doc> 6108 <![CDATA[Returns all bindings that make up the set. This is only supported on bindings returned from an 6109 injector. This will throw {@link UnsupportedOperationException} if it is called on an element 6110 retrieved from {@link Elements#getElements}. 6111 <p> 6112 The elements will always match the type Set's generic type. For example, if getSetKey returns a 6113 key of <code>Set<String></code>, then this will always return a list of type 6114 <code>List<Binding<String>></code>.]]> 6115 </doc> 6116 </method> 6117 <method name="permitsDuplicates" return="boolean" 6118 abstract="true" native="false" synchronized="false" 6119 static="false" final="false" visibility="public" 6120 deprecated="not deprecated"> 6121 <doc> 6122 <![CDATA[Returns true if the multibinder permits duplicates. This is only supported on bindings returned 6123 from an injector. This will throw {@link UnsupportedOperationException} if it is called on a 6124 MultibinderBinding retrieved from {@link Elements#getElements}.]]> 6125 </doc> 6126 </method> 6127 <method name="containsElement" return="boolean" 6128 abstract="true" native="false" synchronized="false" 6129 static="false" final="false" visibility="public" 6130 deprecated="not deprecated"> 6131 <param name="element" type="com.google.inject.spi.Element"/> 6132 <doc> 6133 <![CDATA[Returns true if this Multibinder uses the given Element. This will be true for bindings that 6134 derive the elements of the set and other bindings that Multibinder uses internally. This will 6135 work for MultibinderBindings retrieved from an injector and {@link Elements#getElements}. 6136 Usually this is only necessary if you are working with elements retrieved from modules (without 6137 an Injector), otherwise {@link #getElements} and {@link #permitsDuplicates} are better options. 6138 <p> 6139 If you need to introspect the details of the set, such as the values or if it permits 6140 duplicates, it is necessary to pass the elements through an Injector and use 6141 {@link #getElements()} and {@link #permitsDuplicates()}.]]> 6142 </doc> 6143 </method> 6144 <doc> 6145 <![CDATA[A binding for a Multibinder. 6146 6147 @param <T> The fully qualified type of the set, including Set. For example: 6148 <code>MultibinderBinding<Set<Boolean>></code> 6149 6150 @since 3.0 6151 @author sameb@google.com (Sam Berlin)]]> 6152 </doc> 6153 </interface> 6154 <!-- end interface com.google.inject.multibindings.MultibinderBinding --> 6155 <!-- start class com.google.inject.multibindings.MultibindingsScanner --> 6156 <class name="MultibindingsScanner" extends="java.lang.Object" 6157 abstract="false" 6158 static="false" final="false" visibility="public" 6159 deprecated="not deprecated"> 6160 <method name="asModule" return="com.google.inject.Module" 6161 abstract="false" native="false" synchronized="false" 6162 static="true" final="false" visibility="public" 6163 deprecated="not deprecated"> 6164 <doc> 6165 <![CDATA[Returns a module that, when installed, will scan all modules for methods with the annotations 6166 {@literal @}{@link ProvidesIntoMap}, {@literal @}{@link ProvidesIntoSet}, and 6167 {@literal @}{@link ProvidesIntoOptional}. 6168 6169 <p>This is a convenience method, equivalent to doing 6170 {@code binder().scanModulesForAnnotatedMethods(MultibindingsScanner.scanner())}.]]> 6171 </doc> 6172 </method> 6173 <method name="scanner" return="com.google.inject.spi.ModuleAnnotatedMethodScanner" 6174 abstract="false" native="false" synchronized="false" 6175 static="true" final="false" visibility="public" 6176 deprecated="not deprecated"> 6177 <doc> 6178 <![CDATA[Returns a {@link ModuleAnnotatedMethodScanner} that, when bound, will scan all modules for 6179 methods with the annotations {@literal @}{@link ProvidesIntoMap}, 6180 {@literal @}{@link ProvidesIntoSet}, and {@literal @}{@link ProvidesIntoOptional}.]]> 6181 </doc> 6182 </method> 6183 <doc> 6184 <![CDATA[Scans a module for annotations that signal multibindings, mapbindings, and optional bindings. 6185 6186 @since 4.0]]> 6187 </doc> 6188 </class> 6189 <!-- end class com.google.inject.multibindings.MultibindingsScanner --> 6190 <!-- start interface com.google.inject.multibindings.MultibindingsTargetVisitor --> 6191 <interface name="MultibindingsTargetVisitor" abstract="true" 6192 static="false" final="false" visibility="public" 6193 deprecated="not deprecated"> 6194 <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 6195 <method name="visit" return="V" 6196 abstract="true" native="false" synchronized="false" 6197 static="false" final="false" visibility="public" 6198 deprecated="not deprecated"> 6199 <param name="multibinding" type="com.google.inject.multibindings.MultibinderBinding<? extends T>"/> 6200 <doc> 6201 <![CDATA[Visits a binding created through {@link Multibinder}.]]> 6202 </doc> 6203 </method> 6204 <method name="visit" return="V" 6205 abstract="true" native="false" synchronized="false" 6206 static="false" final="false" visibility="public" 6207 deprecated="not deprecated"> 6208 <param name="mapbinding" type="com.google.inject.multibindings.MapBinderBinding<? extends T>"/> 6209 <doc> 6210 <![CDATA[Visits a binding created through {@link MapBinder}.]]> 6211 </doc> 6212 </method> 6213 <method name="visit" return="V" 6214 abstract="true" native="false" synchronized="false" 6215 static="false" final="false" visibility="public" 6216 deprecated="not deprecated"> 6217 <param name="optionalbinding" type="com.google.inject.multibindings.OptionalBinderBinding<? extends T>"/> 6218 <doc> 6219 <![CDATA[Visits a binding created through {@link OptionalBinder}. 6220 6221 @since 4.0]]> 6222 </doc> 6223 </method> 6224 <doc> 6225 <![CDATA[A visitor for the multibinder extension. 6226 <p> 6227 If your {@link BindingTargetVisitor} implements this interface, bindings created by using 6228 {@link Multibinder}, {@link MapBinder} or {@link OptionalBinderBinding} will be visited through 6229 this interface. 6230 6231 @since 3.0 6232 @author sameb@google.com (Sam Berlin)]]> 6233 </doc> 6234 </interface> 6235 <!-- end interface com.google.inject.multibindings.MultibindingsTargetVisitor --> 6236 <!-- start class com.google.inject.multibindings.OptionalBinder --> 6237 <class name="OptionalBinder" extends="java.lang.Object" 6238 abstract="true" 6239 static="false" final="false" visibility="public" 6240 deprecated="not deprecated"> 6241 <method name="newOptionalBinder" return="com.google.inject.multibindings.OptionalBinder<T>" 6242 abstract="false" native="false" synchronized="false" 6243 static="true" final="false" visibility="public" 6244 deprecated="not deprecated"> 6245 <param name="binder" type="com.google.inject.Binder"/> 6246 <param name="type" type="java.lang.Class<T>"/> 6247 </method> 6248 <method name="newOptionalBinder" return="com.google.inject.multibindings.OptionalBinder<T>" 6249 abstract="false" native="false" synchronized="false" 6250 static="true" final="false" visibility="public" 6251 deprecated="not deprecated"> 6252 <param name="binder" type="com.google.inject.Binder"/> 6253 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 6254 </method> 6255 <method name="newOptionalBinder" return="com.google.inject.multibindings.OptionalBinder<T>" 6256 abstract="false" native="false" synchronized="false" 6257 static="true" final="false" visibility="public" 6258 deprecated="not deprecated"> 6259 <param name="binder" type="com.google.inject.Binder"/> 6260 <param name="type" type="com.google.inject.Key<T>"/> 6261 </method> 6262 <method name="setDefault" return="com.google.inject.binder.LinkedBindingBuilder<T>" 6263 abstract="true" native="false" synchronized="false" 6264 static="false" final="false" visibility="public" 6265 deprecated="not deprecated"> 6266 <doc> 6267 <![CDATA[Returns a binding builder used to set the default value that will be injected. 6268 The binding set by this method will be ignored if {@link #setBinding} is called. 6269 6270 <p>It is an error to call this method without also calling one of the {@code to} 6271 methods on the returned binding builder.]]> 6272 </doc> 6273 </method> 6274 <method name="setBinding" return="com.google.inject.binder.LinkedBindingBuilder<T>" 6275 abstract="true" native="false" synchronized="false" 6276 static="false" final="false" visibility="public" 6277 deprecated="not deprecated"> 6278 <doc> 6279 <![CDATA[Returns a binding builder used to set the actual value that will be injected. 6280 This overrides any binding set by {@link #setDefault}. 6281 6282 <p>It is an error to call this method without also calling one of the {@code to} 6283 methods on the returned binding builder.]]> 6284 </doc> 6285 </method> 6286 <doc> 6287 <![CDATA[An API to bind optional values, optionally with a default value. 6288 OptionalBinder fulfills two roles: <ol> 6289 <li>It allows a framework to define an injection point that may or 6290 may not be bound by users. 6291 <li>It allows a framework to supply a default value that can be changed 6292 by users. 6293 </ol> 6294 6295 <p>When an OptionalBinder is added, it will always supply the bindings: 6296 {@code Optional<T>} and {@code Optional<Provider<T>>}. If 6297 {@link #setBinding} or {@link #setDefault} are called, it will also 6298 bind {@code T}. 6299 6300 <p>{@code setDefault} is intended for use by frameworks that need a default 6301 value. User code can call {@code setBinding} to override the default. 6302 <b>Warning: Even if setBinding is called, the default binding 6303 will still exist in the object graph. If it is a singleton, it will be 6304 instantiated in {@code Stage.PRODUCTION}.</b> 6305 6306 <p>If setDefault or setBinding are linked to Providers, the Provider may return 6307 {@code null}. If it does, the Optional bindings will be absent. Binding 6308 setBinding to a Provider that returns null will not cause OptionalBinder 6309 to fall back to the setDefault binding. 6310 6311 <p>If neither setDefault nor setBinding are called, it will try to link to a 6312 user-supplied binding of the same type. If no binding exists, the optionals 6313 will be absent. Otherwise, if a user-supplied binding of that type exists, 6314 or if setBinding or setDefault are called, the optionals will return present 6315 if they are bound to a non-null value. 6316 6317 <p>Values are resolved at injection time. If a value is bound to a 6318 provider, that provider's get method will be called each time the optional 6319 is injected (unless the binding is also scoped, or an optional of provider is 6320 injected). 6321 6322 <p>Annotations are used to create different optionals of the same key/value 6323 type. Each distinct annotation gets its own independent binding. 6324 6325 <pre><code> 6326 public class FrameworkModule extends AbstractModule { 6327 protected void configure() { 6328 OptionalBinder.newOptionalBinder(binder(), Renamer.class); 6329 } 6330 }</code></pre> 6331 6332 <p>With this module, an {@link Optional}{@code <Renamer>} can now be 6333 injected. With no other bindings, the optional will be absent. 6334 Users can specify bindings in one of two ways: 6335 6336 <p>Option 1: 6337 <pre><code> 6338 public class UserRenamerModule extends AbstractModule { 6339 protected void configure() { 6340 bind(Renamer.class).to(ReplacingRenamer.class); 6341 } 6342 }</code></pre> 6343 6344 <p>or Option 2: 6345 <pre><code> 6346 public class UserRenamerModule extends AbstractModule { 6347 protected void configure() { 6348 OptionalBinder.newOptionalBinder(binder(), Renamer.class) 6349 .setBinding().to(ReplacingRenamer.class); 6350 } 6351 }</code></pre> 6352 With both options, the {@code Optional<Renamer>} will be present and supply the 6353 ReplacingRenamer. 6354 6355 <p>Default values can be supplied using: 6356 <pre><code> 6357 public class FrameworkModule extends AbstractModule { 6358 protected void configure() { 6359 OptionalBinder.newOptionalBinder(binder(), Key.get(String.class, LookupUrl.class)) 6360 .setDefault().toInstance(DEFAULT_LOOKUP_URL); 6361 } 6362 }</code></pre> 6363 With the above module, code can inject an {@code @LookupUrl String} and it 6364 will supply the DEFAULT_LOOKUP_URL. A user can change this value by binding 6365 <pre><code> 6366 public class UserLookupModule extends AbstractModule { 6367 protected void configure() { 6368 OptionalBinder.newOptionalBinder(binder(), Key.get(String.class, LookupUrl.class)) 6369 .setBinding().toInstance(CUSTOM_LOOKUP_URL); 6370 } 6371 }</code></pre> 6372 ... which will override the default value. 6373 6374 <p>If one module uses setDefault the only way to override the default is to use setBinding. 6375 It is an error for a user to specify the binding without using OptionalBinder if 6376 setDefault or setBinding are called. For example, 6377 <pre><code> 6378 public class FrameworkModule extends AbstractModule { 6379 protected void configure() { 6380 OptionalBinder.newOptionalBinder(binder(), Key.get(String.class, LookupUrl.class)) 6381 .setDefault().toInstance(DEFAULT_LOOKUP_URL); 6382 } 6383 } 6384 public class UserLookupModule extends AbstractModule { 6385 protected void configure() { 6386 bind(Key.get(String.class, LookupUrl.class)).toInstance(CUSTOM_LOOKUP_URL); 6387 } 6388 }</code></pre> 6389 ... would generate an error, because both the framework and the user are trying to bind 6390 {@code @LookupUrl String}. 6391 6392 @author sameb@google.com (Sam Berlin) 6393 @since 4.0]]> 6394 </doc> 6395 </class> 6396 <!-- end class com.google.inject.multibindings.OptionalBinder --> 6397 <!-- start interface com.google.inject.multibindings.OptionalBinderBinding --> 6398 <interface name="OptionalBinderBinding" abstract="true" 6399 static="false" final="false" visibility="public" 6400 deprecated="not deprecated"> 6401 <method name="getKey" return="com.google.inject.Key<T>" 6402 abstract="true" native="false" synchronized="false" 6403 static="false" final="false" visibility="public" 6404 deprecated="not deprecated"> 6405 <doc> 6406 <![CDATA[Returns the {@link Key} for this binding.]]> 6407 </doc> 6408 </method> 6409 <method name="getDefaultBinding" return="com.google.inject.Binding<?>" 6410 abstract="true" native="false" synchronized="false" 6411 static="false" final="false" visibility="public" 6412 deprecated="not deprecated"> 6413 <doc> 6414 <![CDATA[Returns the default binding (set by {@link OptionalBinder#setDefault}) if one exists or null 6415 if no default binding is set. This will throw {@link UnsupportedOperationException} if it is 6416 called on an element retrieved from {@link Elements#getElements}. 6417 <p> 6418 The Binding's type will always match the type Optional's generic type. For example, if getKey 6419 returns a key of <code>Optional<String></code>, then this will always return a 6420 <code>Binding<String></code>.]]> 6421 </doc> 6422 </method> 6423 <method name="getActualBinding" return="com.google.inject.Binding<?>" 6424 abstract="true" native="false" synchronized="false" 6425 static="false" final="false" visibility="public" 6426 deprecated="not deprecated"> 6427 <doc> 6428 <![CDATA[Returns the actual binding (set by {@link OptionalBinder#setBinding}) or null if not set. 6429 This will throw {@link UnsupportedOperationException} if it is called on an element retrieved 6430 from {@link Elements#getElements}. 6431 <p> 6432 The Binding's type will always match the type Optional's generic type. For example, if getKey 6433 returns a key of <code>Optional<String></code>, then this will always return a 6434 <code>Binding<String></code>.]]> 6435 </doc> 6436 </method> 6437 <method name="containsElement" return="boolean" 6438 abstract="true" native="false" synchronized="false" 6439 static="false" final="false" visibility="public" 6440 deprecated="not deprecated"> 6441 <param name="element" type="com.google.inject.spi.Element"/> 6442 <doc> 6443 <![CDATA[Returns true if this OptionalBinder contains the given Element in order to build the optional 6444 binding or uses the given Element in order to support building and injecting its data. This 6445 will work for OptionalBinderBinding retrieved from an injector and 6446 {@link Elements#getElements}. Usually this is only necessary if you are working with elements 6447 retrieved from modules (without an Injector), otherwise {@link #getDefaultBinding} and 6448 {@link #getActualBinding} are better options.]]> 6449 </doc> 6450 </method> 6451 <doc> 6452 <![CDATA[A binding for a OptionalBinder. 6453 6454 <p>Although OptionalBinders may be injected through a variety of types 6455 {@code T}, {@code Optional<T>}, {@code Optional<Provider<T>>}, etc..), an 6456 OptionalBinderBinding exists only on the Binding associated with the 6457 {@code Optional<T>} key. Other bindings can be validated to be derived from this 6458 OptionalBinderBinding using {@link #containsElement}. 6459 6460 @param <T> The fully qualified type of the optional binding, including Optional. 6461 For example: {@code Optional<String>}. 6462 6463 @since 4.0 6464 @author sameb@google.com (Sam Berlin)]]> 6465 </doc> 6466 </interface> 6467 <!-- end interface com.google.inject.multibindings.OptionalBinderBinding --> 6468 <!-- start class com.google.inject.multibindings.ProvidesIntoMap --> 6469 <class name="ProvidesIntoMap" abstract="true" 6470 static="false" final="false" visibility="public" 6471 deprecated="not deprecated"> 6472 <implements name="java.lang.annotation.Annotation"/> 6473 <doc> 6474 <![CDATA[Annotates methods of a {@link Module} to add items to a {@link MapBinder}. 6475 The method's return type, binding annotation and additional key annotation determines 6476 what Map this will contribute to. For example, 6477 6478 <pre> 6479 {@literal @}ProvidesIntoMap 6480 {@literal @}StringMapKey("Foo") 6481 {@literal @}Named("plugins") 6482 Plugin provideFooUrl(FooManager fm) { returm fm.getPlugin(); } 6483 6484 {@literal @}ProvidesIntoMap 6485 {@literal @}StringMapKey("Bar") 6486 {@literal @}Named("urls") 6487 Plugin provideBarUrl(BarManager bm) { return bm.getPlugin(); } 6488 </pre> 6489 6490 will add two items to the {@code @Named("urls") Map<String, Plugin>} map. The key 'Foo' 6491 will map to the provideFooUrl method, and the key 'Bar' will map to the provideBarUrl method. 6492 The values are bound as providers and will be evaluated at injection time. 6493 6494 <p>Because the key is specified as an annotation, only Strings, Classes, enums, primitive 6495 types and annotation instances are supported as keys. 6496 6497 @author sameb@google.com (Sam Berlin) 6498 @since 4.0]]> 6499 </doc> 6500 </class> 6501 <!-- end class com.google.inject.multibindings.ProvidesIntoMap --> 6502 <!-- start class com.google.inject.multibindings.ProvidesIntoOptional --> 6503 <class name="ProvidesIntoOptional" abstract="true" 6504 static="false" final="false" visibility="public" 6505 deprecated="not deprecated"> 6506 <implements name="java.lang.annotation.Annotation"/> 6507 <doc> 6508 <![CDATA[Annotates methods of a {@link Module} to add items to a {@link Multibinder}. 6509 The method's return type and binding annotation determines what Optional this will 6510 contribute to. For example, 6511 6512 <pre> 6513 {@literal @}ProvidesIntoOptional(DEFAULT) 6514 {@literal @}Named("url") 6515 String provideFooUrl(FooManager fm) { returm fm.getUrl(); } 6516 6517 {@literal @}ProvidesIntoOptional(ACTUAL) 6518 {@literal @}Named("url") 6519 String provideBarUrl(BarManager bm) { return bm.getUrl(); } 6520 </pre> 6521 6522 will set the default value of {@code @Named("url") Optional<String>} to foo's URL, 6523 and then override it to bar's URL. 6524 6525 @author sameb@google.com (Sam Berlin) 6526 @since 4.0]]> 6527 </doc> 6528 </class> 6529 <!-- end class com.google.inject.multibindings.ProvidesIntoOptional --> 6530 <!-- start class com.google.inject.multibindings.ProvidesIntoOptional.Type --> 6531 <class name="ProvidesIntoOptional.Type" extends="java.lang.Enum<com.google.inject.multibindings.ProvidesIntoOptional.Type>" 6532 abstract="false" 6533 static="true" final="true" visibility="public" 6534 deprecated="not deprecated"> 6535 <method name="values" return="com.google.inject.multibindings.ProvidesIntoOptional.Type[]" 6536 abstract="false" native="false" synchronized="false" 6537 static="true" final="false" visibility="public" 6538 deprecated="not deprecated"> 6539 </method> 6540 <method name="valueOf" return="com.google.inject.multibindings.ProvidesIntoOptional.Type" 6541 abstract="false" native="false" synchronized="false" 6542 static="true" final="false" visibility="public" 6543 deprecated="not deprecated"> 6544 <param name="name" type="java.lang.String"/> 6545 </method> 6546 <doc> 6547 <![CDATA[@since 4.0]]> 6548 </doc> 6549 </class> 6550 <!-- end class com.google.inject.multibindings.ProvidesIntoOptional.Type --> 6551 <!-- start class com.google.inject.multibindings.ProvidesIntoSet --> 6552 <class name="ProvidesIntoSet" abstract="true" 6553 static="false" final="false" visibility="public" 6554 deprecated="not deprecated"> 6555 <implements name="java.lang.annotation.Annotation"/> 6556 <doc> 6557 <![CDATA[Annotates methods of a {@link Module} to add items to a {@link Multibinder}. 6558 The method's return type and binding annotation determines what Set this will 6559 contribute to. For example, 6560 6561 <pre> 6562 {@literal @}ProvidesIntoSet 6563 {@literal @}Named("urls") 6564 String provideFooUrl(FooManager fm) { returm fm.getUrl(); } 6565 6566 {@literal @}ProvidesIntoSet 6567 {@literal @}Named("urls") 6568 String provideBarUrl(BarManager bm) { return bm.getUrl(); } 6569 </pre> 6570 6571 will add two items to the {@code @Named("urls") Set<String>} set. The items are bound as 6572 providers and will be evaluated at injection time. 6573 6574 @author sameb@google.com (Sam Berlin) 6575 @since 4.0]]> 6576 </doc> 6577 </class> 6578 <!-- end class com.google.inject.multibindings.ProvidesIntoSet --> 6579 <!-- start class com.google.inject.multibindings.StringMapKey --> 6580 <class name="StringMapKey" abstract="true" 6581 static="false" final="false" visibility="public" 6582 deprecated="not deprecated"> 6583 <implements name="java.lang.annotation.Annotation"/> 6584 <doc> 6585 <![CDATA[Allows {@literal @}{@link ProvidesIntoMap} to specify a string map key. 6586 6587 @since 4.0]]> 6588 </doc> 6589 </class> 6590 <!-- end class com.google.inject.multibindings.StringMapKey --> 6591</package> 6592<package name="com.google.inject.name"> 6593 <!-- start class com.google.inject.name.Named --> 6594 <class name="Named" abstract="true" 6595 static="false" final="false" visibility="public" 6596 deprecated="not deprecated"> 6597 <implements name="java.lang.annotation.Annotation"/> 6598 <doc> 6599 <![CDATA[Annotates named things. 6600 6601 @author crazybob@google.com (Bob Lee)]]> 6602 </doc> 6603 </class> 6604 <!-- end class com.google.inject.name.Named --> 6605 <!-- start class com.google.inject.name.Names --> 6606 <class name="Names" extends="java.lang.Object" 6607 abstract="false" 6608 static="false" final="false" visibility="public" 6609 deprecated="not deprecated"> 6610 <method name="named" return="com.google.inject.name.Named" 6611 abstract="false" native="false" synchronized="false" 6612 static="true" final="false" visibility="public" 6613 deprecated="not deprecated"> 6614 <param name="name" type="java.lang.String"/> 6615 <doc> 6616 <![CDATA[Creates a {@link Named} annotation with {@code name} as the value.]]> 6617 </doc> 6618 </method> 6619 <method name="bindProperties" 6620 abstract="false" native="false" synchronized="false" 6621 static="true" final="false" visibility="public" 6622 deprecated="not deprecated"> 6623 <param name="binder" type="com.google.inject.Binder"/> 6624 <param name="properties" type="java.util.Map<java.lang.String, java.lang.String>"/> 6625 <doc> 6626 <![CDATA[Creates a constant binding to {@code @Named(key)} for each entry in 6627 {@code properties}.]]> 6628 </doc> 6629 </method> 6630 <method name="bindProperties" 6631 abstract="false" native="false" synchronized="false" 6632 static="true" final="false" visibility="public" 6633 deprecated="not deprecated"> 6634 <param name="binder" type="com.google.inject.Binder"/> 6635 <param name="properties" type="java.util.Properties"/> 6636 <doc> 6637 <![CDATA[Creates a constant binding to {@code @Named(key)} for each property. This 6638 method binds all properties including those inherited from 6639 {@link Properties#defaults defaults}.]]> 6640 </doc> 6641 </method> 6642 <doc> 6643 <![CDATA[Utility methods for use with {@code @}{@link Named}. 6644 6645 @author crazybob@google.com (Bob Lee)]]> 6646 </doc> 6647 </class> 6648 <!-- end class com.google.inject.name.Names --> 6649</package> 6650<package name="com.google.inject.persist"> 6651 <!-- start class com.google.inject.persist.PersistFilter --> 6652 <class name="PersistFilter" extends="java.lang.Object" 6653 abstract="false" 6654 static="false" final="true" visibility="public" 6655 deprecated="not deprecated"> 6656 <implements name="javax.servlet.Filter"/> 6657 <constructor name="PersistFilter" type="com.google.inject.persist.UnitOfWork, com.google.inject.persist.PersistService" 6658 static="false" final="false" visibility="public" 6659 deprecated="not deprecated"> 6660 </constructor> 6661 <method name="init" 6662 abstract="false" native="false" synchronized="false" 6663 static="false" final="false" visibility="public" 6664 deprecated="not deprecated"> 6665 <param name="filterConfig" type="javax.servlet.FilterConfig"/> 6666 <exception name="ServletException" type="javax.servlet.ServletException"/> 6667 </method> 6668 <method name="destroy" 6669 abstract="false" native="false" synchronized="false" 6670 static="false" final="false" visibility="public" 6671 deprecated="not deprecated"> 6672 </method> 6673 <method name="doFilter" 6674 abstract="false" native="false" synchronized="false" 6675 static="false" final="false" visibility="public" 6676 deprecated="not deprecated"> 6677 <param name="servletRequest" type="javax.servlet.ServletRequest"/> 6678 <param name="servletResponse" type="javax.servlet.ServletResponse"/> 6679 <param name="filterChain" type="javax.servlet.FilterChain"/> 6680 <exception name="IOException" type="java.io.IOException"/> 6681 <exception name="ServletException" type="javax.servlet.ServletException"/> 6682 </method> 6683 <doc> 6684 <![CDATA[Apply this filter to enable the HTTP Request unit of work and to have 6685 guice-persist manage the lifecycle of active units of work. 6686 The filter automatically starts and stops the relevant {@link PersistService} 6687 upon {@link javax.servlet.Filter#init(javax.servlet.FilterConfig)} and 6688 {@link javax.servlet.Filter#destroy()} respectively. 6689 6690 <p> To be able to use the open session-in-view pattern (i.e. work per request), 6691 register this filter <b>once</b> in your Guice {@code ServletModule}. It is 6692 important that you register this filter before any other filter. 6693 6694 For multiple providers, you should register this filter once per provider, inside 6695 a private module for each persist module installed (this must be the same private 6696 module where the specific persist module is itself installed). 6697 6698 <p> 6699 Example configuration: 6700 <pre>{@code 6701 public class MyModule extends ServletModule { 6702 public void configureServlets() { 6703 filter("/*").through(PersistFilter.class); 6704 6705 serve("/index.html").with(MyHtmlServlet.class); 6706 // Etc. 6707 } 6708 } 6709 }</pre> 6710 <p> 6711 This filter is thread safe and allows you to create injectors concurrently 6712 and deploy multiple guice-persist modules within the same injector, or even 6713 multiple injectors with persist modules withing the same JVM or web app. 6714 <p> 6715 This filter requires the Guice Servlet extension. 6716 6717 @author Dhanji R. Prasanna (dhanji@gmail.com)]]> 6718 </doc> 6719 </class> 6720 <!-- end class com.google.inject.persist.PersistFilter --> 6721 <!-- start class com.google.inject.persist.PersistModule --> 6722 <class name="PersistModule" extends="com.google.inject.AbstractModule" 6723 abstract="true" 6724 static="false" final="false" visibility="public" 6725 deprecated="not deprecated"> 6726 <constructor name="PersistModule" 6727 static="false" final="false" visibility="public" 6728 deprecated="not deprecated"> 6729 </constructor> 6730 <method name="configure" 6731 abstract="false" native="false" synchronized="false" 6732 static="false" final="true" visibility="protected" 6733 deprecated="not deprecated"> 6734 </method> 6735 <method name="configurePersistence" 6736 abstract="true" native="false" synchronized="false" 6737 static="false" final="false" visibility="protected" 6738 deprecated="not deprecated"> 6739 </method> 6740 <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor" 6741 abstract="true" native="false" synchronized="false" 6742 static="false" final="false" visibility="protected" 6743 deprecated="not deprecated"> 6744 </method> 6745 <doc> 6746 <![CDATA[Install this module to add guice-persist library support for JPA persistence 6747 providers. 6748 6749 @author dhanji@gmail.com (Dhanji R. Prasanna)]]> 6750 </doc> 6751 </class> 6752 <!-- end class com.google.inject.persist.PersistModule --> 6753 <!-- start interface com.google.inject.persist.PersistService --> 6754 <interface name="PersistService" abstract="true" 6755 static="false" final="false" visibility="public" 6756 deprecated="not deprecated"> 6757 <method name="start" 6758 abstract="true" native="false" synchronized="false" 6759 static="false" final="false" visibility="public" 6760 deprecated="not deprecated"> 6761 <doc> 6762 <![CDATA[Starts the underlying persistence engine and makes guice-persist ready for 6763 use. For instance, with JPA, it creates an EntityManagerFactory and may 6764 open connection pools. This method must be called by your code prior to 6765 using any guice-persist or JPA artifacts. If already started, 6766 calling this method does nothing, if already stopped, it also does 6767 nothing.]]> 6768 </doc> 6769 </method> 6770 <method name="stop" 6771 abstract="true" native="false" synchronized="false" 6772 static="false" final="false" visibility="public" 6773 deprecated="not deprecated"> 6774 <doc> 6775 <![CDATA[Stops the underlying persistence engine. For instance, with JPA, it 6776 closes the {@code EntityManagerFactory}. If already stopped, calling this 6777 method does nothing. If not yet started, it also does nothing.]]> 6778 </doc> 6779 </method> 6780 <doc> 6781 <![CDATA[Persistence provider service. Use this to manage the overall 6782 startup and stop of the persistence module(s). 6783 6784 TODO(dhanji): Integrate with Service API when appropriate. 6785 6786 @author dhanji@gmail.com (Dhanji R. Prasanna)]]> 6787 </doc> 6788 </interface> 6789 <!-- end interface com.google.inject.persist.PersistService --> 6790 <!-- start class com.google.inject.persist.Transactional --> 6791 <class name="Transactional" abstract="true" 6792 static="false" final="false" visibility="public" 6793 deprecated="not deprecated"> 6794 <implements name="java.lang.annotation.Annotation"/> 6795 <doc> 6796 <![CDATA[<p> Any method or class marked with this annotation will be considered for transactionality. 6797 Consult the documentation on https://github.com/google/guice/wiki/GuicePersist for detailed 6798 semantics. 6799 Marking a method {@code @Transactional} will start a new transaction before the method 6800 executes and commit it after the method returns. 6801 <p> 6802 If the method throws an exception, the transaction will be rolled back <em>unless</em> 6803 you have specifically requested not to in the {@link #ignore()} clause. 6804 <p> 6805 Similarly, the set of exceptions that will trigger a rollback can be defined in 6806 the {@link #rollbackOn()} clause. By default, only unchecked exceptions trigger a 6807 rollback. 6808 6809 @author Dhanji R. Prasanna (dhanji@gmail.com)]]> 6810 </doc> 6811 </class> 6812 <!-- end class com.google.inject.persist.Transactional --> 6813 <!-- start interface com.google.inject.persist.UnitOfWork --> 6814 <interface name="UnitOfWork" abstract="true" 6815 static="false" final="false" visibility="public" 6816 deprecated="not deprecated"> 6817 <method name="begin" 6818 abstract="true" native="false" synchronized="false" 6819 static="false" final="false" visibility="public" 6820 deprecated="not deprecated"> 6821 <doc> 6822 <![CDATA[Starts a Unit Of Work. Underneath, causes a session to the data layer to be opened. If there 6823 is already one open, the invocation will do nothing. In this way, you can define arbitrary 6824 units-of-work that nest within one another safely. 6825 6826 Transaction semantics are not affected.]]> 6827 </doc> 6828 </method> 6829 <method name="end" 6830 abstract="true" native="false" synchronized="false" 6831 static="false" final="false" visibility="public" 6832 deprecated="not deprecated"> 6833 <doc> 6834 <![CDATA[Declares an end to the current Unit of Work. Underneath, causes any open session to the data 6835 layer to close. If there is no Unit of work open, then the call returns silently. You can 6836 safely invoke end() repeatedly. 6837 <p> 6838 Transaction semantics are not affected.]]> 6839 </doc> 6840 </method> 6841 <doc> 6842 <![CDATA[This interface is used to gain manual control over the unit of work. This is mostly to do 6843 work in non-request, non-transactional threads. Or where more fine-grained control over the unit 6844 of work is required. Starting and ending a unit of work directly corresponds to opening and 6845 closing a {@code Session}, {@code EntityManager} or {@code ObjectContainer} respectively. 6846 <p> The 6847 Unit of Work referred to by UnitOfWork will always be local to the calling thread. Be careful to 6848 end() in a finally block. Neither JPA, nor Hibernate supports threadsafe sessions (reasoning 6849 behind thread-locality of Unit of Work semantics). 6850 6851 <ul> 6852 <li>Using UnitOfWork with the PersistFilter inside a request is not recommended.</li> 6853 <li>Using UnitOfWork with session-per-txn strategy is not terribly clever either.</li> 6854 <li>Using UnitOfWork with session-per-request strategy but *outside* a request (i.e. in a 6855 background or bootstrap thread) is probably a good use case.</li> 6856 </ul> 6857 6858 @author Dhanji R. Prasanna (dhanji@gmail com)]]> 6859 </doc> 6860 </interface> 6861 <!-- end interface com.google.inject.persist.UnitOfWork --> 6862</package> 6863<package name="com.google.inject.persist.finder"> 6864 <!-- start class com.google.inject.persist.finder.DynamicFinder --> 6865 <class name="DynamicFinder" extends="java.lang.Object" 6866 abstract="false" 6867 static="false" final="true" visibility="public" 6868 deprecated="not deprecated"> 6869 <constructor name="DynamicFinder" type="java.lang.reflect.Method" 6870 static="false" final="false" visibility="public" 6871 deprecated="not deprecated"> 6872 </constructor> 6873 <method name="from" return="com.google.inject.persist.finder.DynamicFinder" 6874 abstract="false" native="false" synchronized="false" 6875 static="true" final="false" visibility="public" 6876 deprecated="not deprecated"> 6877 <param name="method" type="java.lang.reflect.Method"/> 6878 <doc> 6879 <![CDATA[Returns some metadata if the method is annotated {@code @Finder} or null. 6880 6881 @param method a method you want to test as a dynamic finder]]> 6882 </doc> 6883 </method> 6884 <method name="metadata" return="com.google.inject.persist.finder.Finder" 6885 abstract="false" native="false" synchronized="false" 6886 static="false" final="false" visibility="public" 6887 deprecated="not deprecated"> 6888 </method> 6889 <doc> 6890 <![CDATA[Utility that helps you introspect dynamic finder methods. 6891 6892 @author dhanji@gmail.com (Dhanji R. Prasanna)]]> 6893 </doc> 6894 </class> 6895 <!-- end class com.google.inject.persist.finder.DynamicFinder --> 6896 <!-- start class com.google.inject.persist.finder.Finder --> 6897 <class name="Finder" abstract="true" 6898 static="false" final="false" visibility="public" 6899 deprecated="not deprecated"> 6900 <implements name="java.lang.annotation.Annotation"/> 6901 <doc> 6902 <![CDATA[Marks a method stub as a dynamic finder. The method is intercepted and replaced with the 6903 specified JPAQL query. Provides result auto-boxing and automatic parameter binding. 6904 6905 @author Dhanji R. Prasanna (dhanji@gmail.com)]]> 6906 </doc> 6907 </class> 6908 <!-- end class com.google.inject.persist.finder.Finder --> 6909 <!-- start class com.google.inject.persist.finder.FirstResult --> 6910 <class name="FirstResult" abstract="true" 6911 static="false" final="false" visibility="public" 6912 deprecated="not deprecated"> 6913 <implements name="java.lang.annotation.Annotation"/> 6914 <doc> 6915 <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in 6916 the index of the first result in the result set you are interested in. 6917 Useful for paging result sets. Complemented by {@link MaxResults}. 6918 6919 @author Dhanji R. Prasanna (dhanji@gmail.com)]]> 6920 </doc> 6921 </class> 6922 <!-- end class com.google.inject.persist.finder.FirstResult --> 6923 <!-- start class com.google.inject.persist.finder.MaxResults --> 6924 <class name="MaxResults" abstract="true" 6925 static="false" final="false" visibility="public" 6926 deprecated="not deprecated"> 6927 <implements name="java.lang.annotation.Annotation"/> 6928 <doc> 6929 <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in 6930 the maximum size of returned result window. Usefule for paging result sets. 6931 Complement of {@link FirstResult}. 6932 6933 @author Dhanji R. Prasanna (dhanji@gmail.com)]]> 6934 </doc> 6935 </class> 6936 <!-- end class com.google.inject.persist.finder.MaxResults --> 6937</package> 6938<package name="com.google.inject.persist.jpa"> 6939 <!-- start class com.google.inject.persist.jpa.JpaPersistModule --> 6940 <class name="JpaPersistModule" extends="com.google.inject.persist.PersistModule" 6941 abstract="false" 6942 static="false" final="true" visibility="public" 6943 deprecated="not deprecated"> 6944 <constructor name="JpaPersistModule" type="java.lang.String" 6945 static="false" final="false" visibility="public" 6946 deprecated="not deprecated"> 6947 </constructor> 6948 <method name="configurePersistence" 6949 abstract="false" native="false" synchronized="false" 6950 static="false" final="false" visibility="protected" 6951 deprecated="not deprecated"> 6952 </method> 6953 <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor" 6954 abstract="false" native="false" synchronized="false" 6955 static="false" final="false" visibility="protected" 6956 deprecated="not deprecated"> 6957 </method> 6958 <method name="properties" return="com.google.inject.persist.jpa.JpaPersistModule" 6959 abstract="false" native="false" synchronized="false" 6960 static="false" final="false" visibility="public" 6961 deprecated="not deprecated"> 6962 <param name="properties" type="java.util.Map<?, ?>"/> 6963 <doc> 6964 <![CDATA[Configures the JPA persistence provider with a set of properties. 6965 6966 @param properties A set of name value pairs that configure a JPA persistence 6967 provider as per the specification. 6968 @since 4.0 (since 3.0 with a parameter type of {@code java.util.Properties})]]> 6969 </doc> 6970 </method> 6971 <method name="addFinder" return="com.google.inject.persist.jpa.JpaPersistModule" 6972 abstract="false" native="false" synchronized="false" 6973 static="false" final="false" visibility="public" 6974 deprecated="not deprecated"> 6975 <param name="iface" type="java.lang.Class<T>"/> 6976 <doc> 6977 <![CDATA[Adds an interface to this module to use as a dynamic finder. 6978 6979 @param iface Any interface type whose methods are all dynamic finders.]]> 6980 </doc> 6981 </method> 6982 <doc> 6983 <![CDATA[JPA provider for guice persist. 6984 6985 @author dhanji@gmail.com (Dhanji R. Prasanna)]]> 6986 </doc> 6987 </class> 6988 <!-- end class com.google.inject.persist.jpa.JpaPersistModule --> 6989</package> 6990<package name="com.google.inject.servlet"> 6991 <!-- start class com.google.inject.servlet.GuiceFilter --> 6992 <class name="GuiceFilter" extends="java.lang.Object" 6993 abstract="false" 6994 static="false" final="false" visibility="public" 6995 deprecated="not deprecated"> 6996 <implements name="javax.servlet.Filter"/> 6997 <constructor name="GuiceFilter" 6998 static="false" final="false" visibility="public" 6999 deprecated="not deprecated"> 7000 </constructor> 7001 <method name="doFilter" 7002 abstract="false" native="false" synchronized="false" 7003 static="false" final="false" visibility="public" 7004 deprecated="not deprecated"> 7005 <param name="servletRequest" type="javax.servlet.ServletRequest"/> 7006 <param name="servletResponse" type="javax.servlet.ServletResponse"/> 7007 <param name="filterChain" type="javax.servlet.FilterChain"/> 7008 <exception name="IOException" type="java.io.IOException"/> 7009 <exception name="ServletException" type="javax.servlet.ServletException"/> 7010 </method> 7011 <method name="init" 7012 abstract="false" native="false" synchronized="false" 7013 static="false" final="false" visibility="public" 7014 deprecated="not deprecated"> 7015 <param name="filterConfig" type="javax.servlet.FilterConfig"/> 7016 <exception name="ServletException" type="javax.servlet.ServletException"/> 7017 </method> 7018 <method name="destroy" 7019 abstract="false" native="false" synchronized="false" 7020 static="false" final="false" visibility="public" 7021 deprecated="not deprecated"> 7022 </method> 7023 <doc> 7024 <![CDATA[<p> 7025 Apply this filter in web.xml above all other filters (typically), to all requests where you plan 7026 to use servlet scopes. This is also needed in order to dispatch requests to injectable filters 7027 and servlets: 7028 <pre> 7029 <filter> 7030 <filter-name>guiceFilter</filter-name> 7031 <filter-class><b>com.google.inject.servlet.GuiceFilter</b></filter-class> 7032 </filter> 7033 7034 <filter-mapping> 7035 <filter-name>guiceFilter</filter-name> 7036 <url-pattern>/*</url-pattern> 7037 </filter-mapping> 7038 </pre> 7039 7040 This filter must appear before every filter that makes use of Guice injection or servlet 7041 scopes functionality. Typically, you will only register this filter in web.xml and register 7042 any other filters (and servlets) using a {@link ServletModule}. 7043 7044 @author crazybob@google.com (Bob Lee) 7045 @author dhanji@gmail.com (Dhanji R. Prasanna)]]> 7046 </doc> 7047 </class> 7048 <!-- end class com.google.inject.servlet.GuiceFilter --> 7049 <!-- start class com.google.inject.servlet.GuiceServletContextListener --> 7050 <class name="GuiceServletContextListener" extends="java.lang.Object" 7051 abstract="true" 7052 static="false" final="false" visibility="public" 7053 deprecated="not deprecated"> 7054 <implements name="javax.servlet.ServletContextListener"/> 7055 <constructor name="GuiceServletContextListener" 7056 static="false" final="false" visibility="public" 7057 deprecated="not deprecated"> 7058 </constructor> 7059 <method name="contextInitialized" 7060 abstract="false" native="false" synchronized="false" 7061 static="false" final="false" visibility="public" 7062 deprecated="not deprecated"> 7063 <param name="servletContextEvent" type="javax.servlet.ServletContextEvent"/> 7064 </method> 7065 <method name="contextDestroyed" 7066 abstract="false" native="false" synchronized="false" 7067 static="false" final="false" visibility="public" 7068 deprecated="not deprecated"> 7069 <param name="servletContextEvent" type="javax.servlet.ServletContextEvent"/> 7070 </method> 7071 <method name="getInjector" return="com.google.inject.Injector" 7072 abstract="true" native="false" synchronized="false" 7073 static="false" final="false" visibility="protected" 7074 deprecated="not deprecated"> 7075 <doc> 7076 <![CDATA[Override this method to create (or otherwise obtain a reference to) your 7077 injector.]]> 7078 </doc> 7079 </method> 7080 <doc> 7081 <![CDATA[As of Guice 2.0 you can still use (your subclasses of) {@code GuiceServletContextListener} 7082 class as a logical place to create and configure your injector. This will ensure the injector 7083 is created when the web application is deployed. 7084 7085 @author Kevin Bourrillion (kevinb@google.com) 7086 @since 2.0]]> 7087 </doc> 7088 </class> 7089 <!-- end class com.google.inject.servlet.GuiceServletContextListener --> 7090 <!-- start interface com.google.inject.servlet.InstanceFilterBinding --> 7091 <interface name="InstanceFilterBinding" abstract="true" 7092 static="false" final="false" visibility="public" 7093 deprecated="not deprecated"> 7094 <implements name="com.google.inject.servlet.ServletModuleBinding"/> 7095 <method name="getFilterInstance" return="javax.servlet.Filter" 7096 abstract="true" native="false" synchronized="false" 7097 static="false" final="false" visibility="public" 7098 deprecated="not deprecated"> 7099 <doc> 7100 <![CDATA[Returns the filter instance that will be used.]]> 7101 </doc> 7102 </method> 7103 <doc> 7104 <![CDATA[A binding to a single instance of a filter. 7105 7106 @author sameb@google.com 7107 @since 3.0]]> 7108 </doc> 7109 </interface> 7110 <!-- end interface com.google.inject.servlet.InstanceFilterBinding --> 7111 <!-- start interface com.google.inject.servlet.InstanceServletBinding --> 7112 <interface name="InstanceServletBinding" abstract="true" 7113 static="false" final="false" visibility="public" 7114 deprecated="not deprecated"> 7115 <implements name="com.google.inject.servlet.ServletModuleBinding"/> 7116 <method name="getServletInstance" return="javax.servlet.http.HttpServlet" 7117 abstract="true" native="false" synchronized="false" 7118 static="false" final="false" visibility="public" 7119 deprecated="not deprecated"> 7120 <doc> 7121 <![CDATA[Returns the servlet instance that will be used.]]> 7122 </doc> 7123 </method> 7124 <doc> 7125 <![CDATA[A binding to a single instance of a servlet. 7126 7127 @author sameb@google.com 7128 @since 3.0]]> 7129 </doc> 7130 </interface> 7131 <!-- end interface com.google.inject.servlet.InstanceServletBinding --> 7132 <!-- start interface com.google.inject.servlet.LinkedFilterBinding --> 7133 <interface name="LinkedFilterBinding" abstract="true" 7134 static="false" final="false" visibility="public" 7135 deprecated="not deprecated"> 7136 <implements name="com.google.inject.servlet.ServletModuleBinding"/> 7137 <method name="getLinkedKey" return="com.google.inject.Key<? extends javax.servlet.Filter>" 7138 abstract="true" native="false" synchronized="false" 7139 static="false" final="false" visibility="public" 7140 deprecated="not deprecated"> 7141 <doc> 7142 <![CDATA[Returns the key used to lookup the filter instance.]]> 7143 </doc> 7144 </method> 7145 <doc> 7146 <![CDATA[A linked binding to a filter. 7147 7148 @author sameb@google.com 7149 @since 3.0]]> 7150 </doc> 7151 </interface> 7152 <!-- end interface com.google.inject.servlet.LinkedFilterBinding --> 7153 <!-- start interface com.google.inject.servlet.LinkedServletBinding --> 7154 <interface name="LinkedServletBinding" abstract="true" 7155 static="false" final="false" visibility="public" 7156 deprecated="not deprecated"> 7157 <implements name="com.google.inject.servlet.ServletModuleBinding"/> 7158 <method name="getLinkedKey" return="com.google.inject.Key<? extends javax.servlet.http.HttpServlet>" 7159 abstract="true" native="false" synchronized="false" 7160 static="false" final="false" visibility="public" 7161 deprecated="not deprecated"> 7162 <doc> 7163 <![CDATA[Returns the key used to lookup the servlet instance.]]> 7164 </doc> 7165 </method> 7166 <doc> 7167 <![CDATA[A linked binding to a servlet. 7168 7169 @author sameb@google.com 7170 @since 3.0]]> 7171 </doc> 7172 </interface> 7173 <!-- end interface com.google.inject.servlet.LinkedServletBinding --> 7174 <!-- start class com.google.inject.servlet.RequestParameters --> 7175 <class name="RequestParameters" abstract="true" 7176 static="false" final="false" visibility="public" 7177 deprecated="not deprecated"> 7178 <implements name="java.lang.annotation.Annotation"/> 7179 <doc> 7180 <![CDATA[Apply this to field or parameters of type {@code Map<String, String[]>} 7181 when you want the HTTP request parameter map to be injected. 7182 7183 @author crazybob@google.com (Bob Lee)]]> 7184 </doc> 7185 </class> 7186 <!-- end class com.google.inject.servlet.RequestParameters --> 7187 <!-- start class com.google.inject.servlet.RequestScoped --> 7188 <class name="RequestScoped" abstract="true" 7189 static="false" final="false" visibility="public" 7190 deprecated="not deprecated"> 7191 <implements name="java.lang.annotation.Annotation"/> 7192 <doc> 7193 <![CDATA[Apply this to implementation classes when you want one instance per request. 7194 7195 @author crazybob@google.com (Bob Lee)]]> 7196 </doc> 7197 </class> 7198 <!-- end class com.google.inject.servlet.RequestScoped --> 7199 <!-- start class com.google.inject.servlet.ScopingException --> 7200 <class name="ScopingException" extends="java.lang.IllegalStateException" 7201 abstract="false" 7202 static="false" final="true" visibility="public" 7203 deprecated="not deprecated"> 7204 <constructor name="ScopingException" type="java.lang.String" 7205 static="false" final="false" visibility="public" 7206 deprecated="not deprecated"> 7207 </constructor> 7208 <doc> 7209 <![CDATA[Exception thrown when there was a failure entering request scope. 7210 7211 @author Chris Nokleberg 7212 @since 4.0]]> 7213 </doc> 7214 </class> 7215 <!-- end class com.google.inject.servlet.ScopingException --> 7216 <!-- start class com.google.inject.servlet.ScopingOnly --> 7217 <class name="ScopingOnly" abstract="true" 7218 static="false" final="false" visibility="public" 7219 deprecated="not deprecated"> 7220 <implements name="java.lang.annotation.Annotation"/> 7221 <doc> 7222 <![CDATA[Annotates a {@link GuiceFilter} that provides scope functionality, but 7223 doesn't dispatch to {@link ServletModule} bound servlets or filters. 7224 7225 @author iqshum@google.com (Isaac Shum) 7226 @since 4.0]]> 7227 </doc> 7228 </class> 7229 <!-- end class com.google.inject.servlet.ScopingOnly --> 7230 <!-- start class com.google.inject.servlet.ServletModule --> 7231 <class name="ServletModule" extends="com.google.inject.AbstractModule" 7232 abstract="false" 7233 static="false" final="false" visibility="public" 7234 deprecated="not deprecated"> 7235 <constructor name="ServletModule" 7236 static="false" final="false" visibility="public" 7237 deprecated="not deprecated"> 7238 </constructor> 7239 <method name="configure" 7240 abstract="false" native="false" synchronized="false" 7241 static="false" final="true" visibility="protected" 7242 deprecated="not deprecated"> 7243 </method> 7244 <method name="configureServlets" 7245 abstract="false" native="false" synchronized="false" 7246 static="false" final="false" visibility="protected" 7247 deprecated="not deprecated"> 7248 <doc> 7249 <![CDATA[<h3>Servlet Mapping EDSL</h3> 7250 7251 <p> Part of the EDSL builder language for configuring servlets 7252 and filters with guice-servlet. Think of this as an in-code replacement for web.xml. 7253 Filters and servlets are configured here using simple java method calls. Here is a typical 7254 example of registering a filter when creating your Guice injector: 7255 7256 <pre> 7257 Guice.createInjector(..., new ServletModule() { 7258 7259 {@literal @}Override 7260 protected void configureServlets() { 7261 <b>serve("*.html").with(MyServlet.class)</b> 7262 } 7263 } 7264 </pre> 7265 7266 This registers a servlet (subclass of {@code HttpServlet}) called {@code MyServlet} to service 7267 any web pages ending in {@code .html}. You can also use a path-style syntax to register 7268 servlets: 7269 7270 <pre> 7271 <b>serve("/my/*").with(MyServlet.class)</b> 7272 </pre> 7273 7274 Every servlet (or filter) is required to be a singleton. If you cannot annotate the class 7275 directly, you should add a separate {@code bind(..).in(Singleton.class)} rule elsewhere in 7276 your module. Mapping a servlet that is bound under any other scope is an error. 7277 7278 <p> 7279 <h4>Dispatch Order</h4> 7280 You are free to register as many servlets and filters as you like this way. They will 7281 be compared and dispatched in the order in which the filter methods are called: 7282 7283 <pre> 7284 7285 Guice.createInjector(..., new ServletModule() { 7286 7287 {@literal @}Override 7288 protected void configureServlets() { 7289 filter("/*").through(MyFilter.class); 7290 filter("*.css").through(MyCssFilter.class); 7291 filter("*.jpg").through(new MyJpgFilter()); 7292 // etc.. 7293 7294 serve("*.html").with(MyServlet.class); 7295 serve("/my/*").with(MyServlet.class); 7296 serve("*.jpg").with(new MyServlet()); 7297 // etc.. 7298 } 7299 } 7300 </pre> 7301 This will traverse down the list of rules in lexical order. For example, a url 7302 "{@code /my/file.js}" (after it runs through the matching filters) will first 7303 be compared against the servlet mapping: 7304 7305 <pre> 7306 serve("*.html").with(MyServlet.class); 7307 </pre> 7308 And failing that, it will descend to the next servlet mapping: 7309 7310 <pre> 7311 serve("/my/*").with(MyServlet.class); 7312 </pre> 7313 7314 Since this rule matches, Guice Servlet will dispatch to {@code MyServlet}. These 7315 two mapping rules can also be written in more compact form using varargs syntax: 7316 7317 <pre> 7318 serve(<b>"*.html", "/my/*"</b>).with(MyServlet.class); 7319 </pre> 7320 7321 This way you can map several URI patterns to the same servlet. A similar syntax is 7322 also available for filter mappings. 7323 7324 <p> 7325 <h4>Regular Expressions</h4> 7326 You can also map servlets (or filters) to URIs using regular expressions: 7327 <pre> 7328 <b>serveRegex("(.)*ajax(.)*").with(MyAjaxServlet.class)</b> 7329 </pre> 7330 7331 This will map any URI containing the text "ajax" in it to {@code MyAjaxServlet}. Such as: 7332 <ul> 7333 <li>http://www.google.com/ajax.html</li> 7334 <li>http://www.google.com/content/ajax/index</li> 7335 <li>http://www.google.com/it/is_totally_ajaxian</li> 7336 </ul> 7337 7338 7339 <h3>Initialization Parameters</h3> 7340 7341 Servlets (and filters) allow you to pass in init params 7342 using the {@code <init-param>} tag in web.xml. You can similarly pass in parameters to 7343 Servlets and filters registered in Guice-servlet using a {@link java.util.Map} of parameter 7344 name/value pairs. For example, to initialize {@code MyServlet} with two parameters 7345 ({@code name="Dhanji", site="google.com"}) you could write: 7346 7347 <pre> 7348 Map<String, String> params = new HashMap<String, String>(); 7349 params.put("name", "Dhanji"); 7350 params.put("site", "google.com"); 7351 7352 ... 7353 serve("/*").with(MyServlet.class, <b>params</b>) 7354 </pre> 7355 7356 <p> 7357 <h3>Binding Keys</h3> 7358 7359 You can also bind keys rather than classes. This lets you hide 7360 implementations with package-local visbility and expose them using 7361 only a Guice module and an annotation: 7362 7363 <pre> 7364 ... 7365 filter("/*").through(<b>Key.get(Filter.class, Fave.class)</b>); 7366 </pre> 7367 7368 Where {@code Filter.class} refers to the Servlet API interface and {@code Fave.class} is a 7369 custom binding annotation. Elsewhere (in one of your own modules) you can bind this 7370 filter's implementation: 7371 7372 <pre> 7373 bind(Filter.class)<b>.annotatedWith(Fave.class)</b>.to(MyFilterImpl.class); 7374 </pre> 7375 7376 See {@link com.google.inject.Binder} for more information on binding syntax. 7377 7378 <p> 7379 <h3>Multiple Modules</h3> 7380 7381 It is sometimes useful to capture servlet and filter mappings from multiple different 7382 modules. This is essential if you want to package and offer drop-in Guice plugins that 7383 provide servlet functionality. 7384 7385 <p> 7386 Guice Servlet allows you to register several instances of {@code ServletModule} to your 7387 injector. The order in which these modules are installed determines the dispatch order 7388 of filters and the precedence order of servlets. For example, if you had two servlet modules, 7389 {@code RpcModule} and {@code WebServiceModule} and they each contained a filter that mapped 7390 to the same URI pattern, {@code "/*"}: 7391 7392 <p> 7393 In {@code RpcModule}: 7394 <pre> 7395 filter("/*").through(RpcFilter.class); 7396 </pre> 7397 7398 In {@code WebServiceModule}: 7399 <pre> 7400 filter("/*").through(WebServiceFilter.class); 7401 </pre> 7402 7403 Then the order in which these filters are dispatched is determined by the order in which 7404 the modules are installed: 7405 7406 <pre> 7407 <b>install(new WebServiceModule());</b> 7408 install(new RpcModule()); 7409 </pre> 7410 7411 In the case shown above {@code WebServiceFilter} will run first. 7412 7413 @since 2.0]]> 7414 </doc> 7415 </method> 7416 <method name="filter" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder" 7417 abstract="false" native="false" synchronized="false" 7418 static="false" final="true" visibility="protected" 7419 deprecated="not deprecated"> 7420 <param name="urlPattern" type="java.lang.String"/> 7421 <param name="morePatterns" type="java.lang.String[]"/> 7422 <doc> 7423 <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc. 7424 @since 2.0]]> 7425 </doc> 7426 </method> 7427 <method name="filterRegex" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder" 7428 abstract="false" native="false" synchronized="false" 7429 static="false" final="true" visibility="protected" 7430 deprecated="not deprecated"> 7431 <param name="regex" type="java.lang.String"/> 7432 <param name="regexes" type="java.lang.String[]"/> 7433 <doc> 7434 <![CDATA[@param regex Any Java-style regular expression. 7435 @since 2.0]]> 7436 </doc> 7437 </method> 7438 <method name="serve" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder" 7439 abstract="false" native="false" synchronized="false" 7440 static="false" final="true" visibility="protected" 7441 deprecated="not deprecated"> 7442 <param name="urlPattern" type="java.lang.String"/> 7443 <param name="morePatterns" type="java.lang.String[]"/> 7444 <doc> 7445 <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc. 7446 @since 2.0]]> 7447 </doc> 7448 </method> 7449 <method name="serveRegex" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder" 7450 abstract="false" native="false" synchronized="false" 7451 static="false" final="true" visibility="protected" 7452 deprecated="not deprecated"> 7453 <param name="regex" type="java.lang.String"/> 7454 <param name="regexes" type="java.lang.String[]"/> 7455 <doc> 7456 <![CDATA[@param regex Any Java-style regular expression. 7457 @since 2.0]]> 7458 </doc> 7459 </method> 7460 <method name="getServletContext" return="javax.servlet.ServletContext" 7461 abstract="false" native="false" synchronized="false" 7462 static="false" final="true" visibility="protected" 7463 deprecated="not deprecated"> 7464 <doc> 7465 <![CDATA[This method only works if you are using the {@linkplain GuiceServletContextListener} to 7466 create your injector. Otherwise, it returns null. 7467 @return The current servlet context. 7468 @since 3.0]]> 7469 </doc> 7470 </method> 7471 <doc> 7472 <![CDATA[Configures the servlet scopes and creates bindings for the servlet API 7473 objects so you can inject the request, response, session, etc. 7474 7475 <p> 7476 You should subclass this module to register servlets and 7477 filters in the {@link #configureServlets()} method. 7478 7479 @author crazybob@google.com (Bob Lee) 7480 @author dhanji@gmail.com (Dhanji R. Prasanna)]]> 7481 </doc> 7482 </class> 7483 <!-- end class com.google.inject.servlet.ServletModule --> 7484 <!-- start interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder --> 7485 <interface name="ServletModule.FilterKeyBindingBuilder" abstract="true" 7486 static="true" final="false" visibility="public" 7487 deprecated="not deprecated"> 7488 <method name="through" 7489 abstract="true" native="false" synchronized="false" 7490 static="false" final="false" visibility="public" 7491 deprecated="not deprecated"> 7492 <param name="filterKey" type="java.lang.Class<? extends javax.servlet.Filter>"/> 7493 </method> 7494 <method name="through" 7495 abstract="true" native="false" synchronized="false" 7496 static="false" final="false" visibility="public" 7497 deprecated="not deprecated"> 7498 <param name="filterKey" type="com.google.inject.Key<? extends javax.servlet.Filter>"/> 7499 </method> 7500 <method name="through" 7501 abstract="true" native="false" synchronized="false" 7502 static="false" final="false" visibility="public" 7503 deprecated="not deprecated"> 7504 <param name="filter" type="javax.servlet.Filter"/> 7505 <doc> 7506 <![CDATA[@since 3.0]]> 7507 </doc> 7508 </method> 7509 <method name="through" 7510 abstract="true" native="false" synchronized="false" 7511 static="false" final="false" visibility="public" 7512 deprecated="not deprecated"> 7513 <param name="filterKey" type="java.lang.Class<? extends javax.servlet.Filter>"/> 7514 <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7515 </method> 7516 <method name="through" 7517 abstract="true" native="false" synchronized="false" 7518 static="false" final="false" visibility="public" 7519 deprecated="not deprecated"> 7520 <param name="filterKey" type="com.google.inject.Key<? extends javax.servlet.Filter>"/> 7521 <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7522 </method> 7523 <method name="through" 7524 abstract="true" native="false" synchronized="false" 7525 static="false" final="false" visibility="public" 7526 deprecated="not deprecated"> 7527 <param name="filter" type="javax.servlet.Filter"/> 7528 <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7529 <doc> 7530 <![CDATA[@since 3.0]]> 7531 </doc> 7532 </method> 7533 <doc> 7534 <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()} 7535 7536 @since 2.0]]> 7537 </doc> 7538 </interface> 7539 <!-- end interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder --> 7540 <!-- start interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder --> 7541 <interface name="ServletModule.ServletKeyBindingBuilder" abstract="true" 7542 static="true" final="false" visibility="public" 7543 deprecated="not deprecated"> 7544 <method name="with" 7545 abstract="true" native="false" synchronized="false" 7546 static="false" final="false" visibility="public" 7547 deprecated="not deprecated"> 7548 <param name="servletKey" type="java.lang.Class<? extends javax.servlet.http.HttpServlet>"/> 7549 </method> 7550 <method name="with" 7551 abstract="true" native="false" synchronized="false" 7552 static="false" final="false" visibility="public" 7553 deprecated="not deprecated"> 7554 <param name="servletKey" type="com.google.inject.Key<? extends javax.servlet.http.HttpServlet>"/> 7555 </method> 7556 <method name="with" 7557 abstract="true" native="false" synchronized="false" 7558 static="false" final="false" visibility="public" 7559 deprecated="not deprecated"> 7560 <param name="servlet" type="javax.servlet.http.HttpServlet"/> 7561 <doc> 7562 <![CDATA[@since 3.0]]> 7563 </doc> 7564 </method> 7565 <method name="with" 7566 abstract="true" native="false" synchronized="false" 7567 static="false" final="false" visibility="public" 7568 deprecated="not deprecated"> 7569 <param name="servletKey" type="java.lang.Class<? extends javax.servlet.http.HttpServlet>"/> 7570 <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7571 </method> 7572 <method name="with" 7573 abstract="true" native="false" synchronized="false" 7574 static="false" final="false" visibility="public" 7575 deprecated="not deprecated"> 7576 <param name="servletKey" type="com.google.inject.Key<? extends javax.servlet.http.HttpServlet>"/> 7577 <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7578 </method> 7579 <method name="with" 7580 abstract="true" native="false" synchronized="false" 7581 static="false" final="false" visibility="public" 7582 deprecated="not deprecated"> 7583 <param name="servlet" type="javax.servlet.http.HttpServlet"/> 7584 <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7585 <doc> 7586 <![CDATA[@since 3.0]]> 7587 </doc> 7588 </method> 7589 <doc> 7590 <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()} 7591 7592 @since 2.0]]> 7593 </doc> 7594 </interface> 7595 <!-- end interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder --> 7596 <!-- start interface com.google.inject.servlet.ServletModuleBinding --> 7597 <interface name="ServletModuleBinding" abstract="true" 7598 static="false" final="false" visibility="public" 7599 deprecated="not deprecated"> 7600 <method name="getUriPatternType" return="com.google.inject.servlet.UriPatternType" 7601 abstract="true" native="false" synchronized="false" 7602 static="false" final="false" visibility="public" 7603 deprecated="not deprecated"> 7604 <doc> 7605 <![CDATA[Returns the pattern type that this binding was created with.]]> 7606 </doc> 7607 </method> 7608 <method name="getPattern" return="java.lang.String" 7609 abstract="true" native="false" synchronized="false" 7610 static="false" final="false" visibility="public" 7611 deprecated="not deprecated"> 7612 <doc> 7613 <![CDATA[Returns the pattern used to match against the binding.]]> 7614 </doc> 7615 </method> 7616 <method name="getInitParams" return="java.util.Map<java.lang.String, java.lang.String>" 7617 abstract="true" native="false" synchronized="false" 7618 static="false" final="false" visibility="public" 7619 deprecated="not deprecated"> 7620 <doc> 7621 <![CDATA[Returns any context params supplied when creating the binding.]]> 7622 </doc> 7623 </method> 7624 <method name="matchesUri" return="boolean" 7625 abstract="true" native="false" synchronized="false" 7626 static="false" final="false" visibility="public" 7627 deprecated="not deprecated"> 7628 <param name="uri" type="java.lang.String"/> 7629 <doc> 7630 <![CDATA[Returns true if the given URI will match this binding.]]> 7631 </doc> 7632 </method> 7633 <doc> 7634 <![CDATA[A binding created by {@link ServletModule}. 7635 7636 @author sameb@google.com (Sam Berlin) 7637 @since 3.0]]> 7638 </doc> 7639 </interface> 7640 <!-- end interface com.google.inject.servlet.ServletModuleBinding --> 7641 <!-- start interface com.google.inject.servlet.ServletModuleTargetVisitor --> 7642 <interface name="ServletModuleTargetVisitor" abstract="true" 7643 static="false" final="false" visibility="public" 7644 deprecated="not deprecated"> 7645 <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 7646 <method name="visit" return="V" 7647 abstract="true" native="false" synchronized="false" 7648 static="false" final="false" visibility="public" 7649 deprecated="not deprecated"> 7650 <param name="binding" type="com.google.inject.servlet.LinkedFilterBinding"/> 7651 <doc> 7652 <![CDATA[Visits a filter binding created by {@link ServletModule#filter}, where 7653 {@link FilterKeyBindingBuilder#through} is called with a Class or Key. 7654 7655 If multiple patterns were specified, this will be called multiple times.]]> 7656 </doc> 7657 </method> 7658 <method name="visit" return="V" 7659 abstract="true" native="false" synchronized="false" 7660 static="false" final="false" visibility="public" 7661 deprecated="not deprecated"> 7662 <param name="binding" type="com.google.inject.servlet.InstanceFilterBinding"/> 7663 <doc> 7664 <![CDATA[Visits a filter binding created by {@link ServletModule#filter} where 7665 {@link FilterKeyBindingBuilder#through} is called with a {@link Filter}. 7666 7667 If multiple patterns were specified, this will be called multiple times.]]> 7668 </doc> 7669 </method> 7670 <method name="visit" return="V" 7671 abstract="true" native="false" synchronized="false" 7672 static="false" final="false" visibility="public" 7673 deprecated="not deprecated"> 7674 <param name="binding" type="com.google.inject.servlet.LinkedServletBinding"/> 7675 <doc> 7676 <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where 7677 {@link ServletKeyBindingBuilder#with}, is called with a Class or Key. 7678 7679 If multiple patterns were specified, this will be called multiple times.]]> 7680 </doc> 7681 </method> 7682 <method name="visit" return="V" 7683 abstract="true" native="false" synchronized="false" 7684 static="false" final="false" visibility="public" 7685 deprecated="not deprecated"> 7686 <param name="binding" type="com.google.inject.servlet.InstanceServletBinding"/> 7687 <doc> 7688 <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where 7689 {@link ServletKeyBindingBuilder#with}, is called with an {@link HttpServlet}. 7690 7691 If multiple patterns were specified, this will be called multiple times.]]> 7692 </doc> 7693 </method> 7694 <doc> 7695 <![CDATA[A visitor for the servlet extension. 7696 7697 If your {@link BindingTargetVisitor} implements this interface, bindings created by using 7698 {@link ServletModule} will be visited through this interface. 7699 7700 @since 3.0 7701 @author sameb@google.com (Sam Berlin)]]> 7702 </doc> 7703 </interface> 7704 <!-- end interface com.google.inject.servlet.ServletModuleTargetVisitor --> 7705 <!-- start class com.google.inject.servlet.ServletScopes --> 7706 <class name="ServletScopes" extends="java.lang.Object" 7707 abstract="false" 7708 static="false" final="false" visibility="public" 7709 deprecated="not deprecated"> 7710 <method name="continueRequest" return="java.util.concurrent.Callable<T>" 7711 abstract="false" native="false" synchronized="false" 7712 static="true" final="false" visibility="public" 7713 deprecated="not deprecated"> 7714 <param name="callable" type="java.util.concurrent.Callable<T>"/> 7715 <param name="seedMap" type="java.util.Map<com.google.inject.Key<?>, java.lang.Object>"/> 7716 <doc> 7717 <![CDATA[Wraps the given callable in a contextual callable that "continues" the 7718 HTTP request in another thread. This acts as a way of transporting 7719 request context data from the request processing thread to to worker 7720 threads. 7721 <p> 7722 There are some limitations: 7723 <ul> 7724 <li>Derived objects (i.e. anything marked @RequestScoped will not be 7725 transported.</li> 7726 <li>State changes to the HttpServletRequest after this method is called 7727 will not be seen in the continued thread.</li> 7728 <li>Only the HttpServletRequest, ServletContext and request parameter 7729 map are available in the continued thread. The response and session 7730 are not available.</li> 7731 </ul> 7732 7733 <p>The returned callable will throw a {@link ScopingException} when called 7734 if the HTTP request scope is still active on the current thread. 7735 7736 @param callable code to be executed in another thread, which depends on 7737 the request scope. 7738 @param seedMap the initial set of scoped instances for Guice to seed the 7739 request scope with. To seed a key with null, use {@code null} as 7740 the value. 7741 @return a callable that will invoke the given callable, making the request 7742 context available to it. 7743 @throws OutOfScopeException if this method is called from a non-request 7744 thread, or if the request has completed. 7745 7746 @since 3.0]]> 7747 </doc> 7748 </method> 7749 <method name="transferRequest" return="java.util.concurrent.Callable<T>" 7750 abstract="false" native="false" synchronized="false" 7751 static="true" final="false" visibility="public" 7752 deprecated="not deprecated"> 7753 <param name="callable" type="java.util.concurrent.Callable<T>"/> 7754 <doc> 7755 <![CDATA[Wraps the given callable in a contextual callable that "transfers" the 7756 request to another thread. This acts as a way of transporting 7757 request context data from the current thread to a future thread. 7758 7759 <p>As opposed to {@link #continueRequest}, this method propagates all 7760 existing scoped objects. The primary use case is in server implementations 7761 where you can detach the request processing thread while waiting for data, 7762 and reattach to a different thread to finish processing at a later time. 7763 7764 <p>Because request-scoped objects are not typically thread-safe, the 7765 callable returned by this method must not be run on a different thread 7766 until the current request scope has terminated. The returned callable will 7767 block until the current thread has released the request scope. 7768 7769 @param callable code to be executed in another thread, which depends on 7770 the request scope. 7771 @return a callable that will invoke the given callable, making the request 7772 context available to it. 7773 @throws OutOfScopeException if this method is called from a non-request 7774 thread, or if the request has completed. 7775 @since 4.0]]> 7776 </doc> 7777 </method> 7778 <method name="isRequestScoped" return="boolean" 7779 abstract="false" native="false" synchronized="false" 7780 static="true" final="false" visibility="public" 7781 deprecated="not deprecated"> 7782 <param name="binding" type="com.google.inject.Binding<?>"/> 7783 <doc> 7784 <![CDATA[Returns true if {@code binding} is request-scoped. If the binding is a 7785 {@link com.google.inject.spi.LinkedKeyBinding linked key binding} and 7786 belongs to an injector (i. e. it was retrieved via 7787 {@link Injector#getBinding Injector.getBinding()}), then this method will 7788 also return true if the target binding is request-scoped. 7789 7790 @since 4.0]]> 7791 </doc> 7792 </method> 7793 <method name="scopeRequest" return="java.util.concurrent.Callable<T>" 7794 abstract="false" native="false" synchronized="false" 7795 static="true" final="false" visibility="public" 7796 deprecated="not deprecated"> 7797 <param name="callable" type="java.util.concurrent.Callable<T>"/> 7798 <param name="seedMap" type="java.util.Map<com.google.inject.Key<?>, java.lang.Object>"/> 7799 <doc> 7800 <![CDATA[Scopes the given callable inside a request scope. This is not the same 7801 as the HTTP request scope, but is used if no HTTP request scope is in 7802 progress. In this way, keys can be scoped as @RequestScoped and exist 7803 in non-HTTP requests (for example: RPC requests) as well as in HTTP 7804 request threads. 7805 7806 <p>The returned callable will throw a {@link ScopingException} when called 7807 if there is a request scope already active on the current thread. 7808 7809 @param callable code to be executed which depends on the request scope. 7810 Typically in another thread, but not necessarily so. 7811 @param seedMap the initial set of scoped instances for Guice to seed the 7812 request scope with. To seed a key with null, use {@code null} as 7813 the value. 7814 @return a callable that when called will run inside the a request scope 7815 that exposes the instances in the {@code seedMap} as scoped keys. 7816 @since 3.0]]> 7817 </doc> 7818 </method> 7819 <field name="REQUEST" type="com.google.inject.Scope" 7820 transient="false" volatile="false" 7821 static="true" final="true" visibility="public" 7822 deprecated="not deprecated"> 7823 <doc> 7824 <![CDATA[HTTP servlet request scope.]]> 7825 </doc> 7826 </field> 7827 <field name="SESSION" type="com.google.inject.Scope" 7828 transient="false" volatile="false" 7829 static="true" final="true" visibility="public" 7830 deprecated="not deprecated"> 7831 <doc> 7832 <![CDATA[HTTP session scope.]]> 7833 </doc> 7834 </field> 7835 <doc> 7836 <![CDATA[Servlet scopes. 7837 7838 @author crazybob@google.com (Bob Lee)]]> 7839 </doc> 7840 </class> 7841 <!-- end class com.google.inject.servlet.ServletScopes --> 7842 <!-- start class com.google.inject.servlet.SessionScoped --> 7843 <class name="SessionScoped" abstract="true" 7844 static="false" final="false" visibility="public" 7845 deprecated="not deprecated"> 7846 <implements name="java.lang.annotation.Annotation"/> 7847 <doc> 7848 <![CDATA[Apply this to implementation classes when you want one instance per session. 7849 7850 @see com.google.inject.Scopes#SINGLETON 7851 @author crazybob@google.com (Bob Lee)]]> 7852 </doc> 7853 </class> 7854 <!-- end class com.google.inject.servlet.SessionScoped --> 7855 <!-- start class com.google.inject.servlet.UriPatternType --> 7856 <class name="UriPatternType" extends="java.lang.Enum<com.google.inject.servlet.UriPatternType>" 7857 abstract="false" 7858 static="false" final="true" visibility="public" 7859 deprecated="not deprecated"> 7860 <method name="values" return="com.google.inject.servlet.UriPatternType[]" 7861 abstract="false" native="false" synchronized="false" 7862 static="true" final="false" visibility="public" 7863 deprecated="not deprecated"> 7864 </method> 7865 <method name="valueOf" return="com.google.inject.servlet.UriPatternType" 7866 abstract="false" native="false" synchronized="false" 7867 static="true" final="false" visibility="public" 7868 deprecated="not deprecated"> 7869 <param name="name" type="java.lang.String"/> 7870 </method> 7871 <doc> 7872 <![CDATA[An enumeration of the available URI-pattern matching styles 7873 7874 @since 3.0]]> 7875 </doc> 7876 </class> 7877 <!-- end class com.google.inject.servlet.UriPatternType --> 7878</package> 7879<package name="com.google.inject.spi"> 7880 <!-- start interface com.google.inject.spi.BindingScopingVisitor --> 7881 <interface name="BindingScopingVisitor" abstract="true" 7882 static="false" final="false" visibility="public" 7883 deprecated="not deprecated"> 7884 <method name="visitEagerSingleton" return="V" 7885 abstract="true" native="false" synchronized="false" 7886 static="false" final="false" visibility="public" 7887 deprecated="not deprecated"> 7888 <doc> 7889 <![CDATA[Visit an eager singleton or single instance. This scope strategy is found on both module and 7890 injector bindings.]]> 7891 </doc> 7892 </method> 7893 <method name="visitScope" return="V" 7894 abstract="true" native="false" synchronized="false" 7895 static="false" final="false" visibility="public" 7896 deprecated="not deprecated"> 7897 <param name="scope" type="com.google.inject.Scope"/> 7898 <doc> 7899 <![CDATA[Visit a scope instance. This scope strategy is found on both module and injector bindings.]]> 7900 </doc> 7901 </method> 7902 <method name="visitScopeAnnotation" return="V" 7903 abstract="true" native="false" synchronized="false" 7904 static="false" final="false" visibility="public" 7905 deprecated="not deprecated"> 7906 <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 7907 <doc> 7908 <![CDATA[Visit a scope annotation. This scope strategy is found only on module bindings. The instance 7909 that implements this scope is registered by {@link com.google.inject.Binder#bindScope(Class, 7910 Scope) Binder.bindScope()}.]]> 7911 </doc> 7912 </method> 7913 <method name="visitNoScoping" return="V" 7914 abstract="true" native="false" synchronized="false" 7915 static="false" final="false" visibility="public" 7916 deprecated="not deprecated"> 7917 <doc> 7918 <![CDATA[Visit an unspecified or unscoped strategy. On a module, this strategy indicates that the 7919 injector should use scoping annotations to find a scope. On an injector, it indicates that 7920 no scope is applied to the binding. An unscoped binding will behave like a scoped one when it 7921 is linked to a scoped binding.]]> 7922 </doc> 7923 </method> 7924 <doc> 7925 <![CDATA[Visits each of the strategies used to scope an injection. 7926 7927 @param <V> any type to be returned by the visit method. Use {@link Void} with 7928 {@code return null} if no return type is needed. 7929 @since 2.0]]> 7930 </doc> 7931 </interface> 7932 <!-- end interface com.google.inject.spi.BindingScopingVisitor --> 7933 <!-- start interface com.google.inject.spi.BindingTargetVisitor --> 7934 <interface name="BindingTargetVisitor" abstract="true" 7935 static="false" final="false" visibility="public" 7936 deprecated="not deprecated"> 7937 <method name="visit" return="V" 7938 abstract="true" native="false" synchronized="false" 7939 static="false" final="false" visibility="public" 7940 deprecated="not deprecated"> 7941 <param name="binding" type="com.google.inject.spi.InstanceBinding<? extends T>"/> 7942 <doc> 7943 <![CDATA[Visit a instance binding. The same instance is returned for every injection. This target is 7944 found in both module and injector bindings.]]> 7945 </doc> 7946 </method> 7947 <method name="visit" return="V" 7948 abstract="true" native="false" synchronized="false" 7949 static="false" final="false" visibility="public" 7950 deprecated="not deprecated"> 7951 <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding<? extends T>"/> 7952 <doc> 7953 <![CDATA[Visit a provider instance binding. The provider's {@code get} method is invoked to resolve 7954 injections. This target is found in both module and injector bindings.]]> 7955 </doc> 7956 </method> 7957 <method name="visit" return="V" 7958 abstract="true" native="false" synchronized="false" 7959 static="false" final="false" visibility="public" 7960 deprecated="not deprecated"> 7961 <param name="binding" type="com.google.inject.spi.ProviderKeyBinding<? extends T>"/> 7962 <doc> 7963 <![CDATA[Visit a provider key binding. To resolve injections, the provider key is first resolved, then 7964 that provider's {@code get} method is invoked. This target is found in both module and injector 7965 bindings.]]> 7966 </doc> 7967 </method> 7968 <method name="visit" return="V" 7969 abstract="true" native="false" synchronized="false" 7970 static="false" final="false" visibility="public" 7971 deprecated="not deprecated"> 7972 <param name="binding" type="com.google.inject.spi.LinkedKeyBinding<? extends T>"/> 7973 <doc> 7974 <![CDATA[Visit a linked key binding. The other key's binding is used to resolve injections. This 7975 target is found in both module and injector bindings.]]> 7976 </doc> 7977 </method> 7978 <method name="visit" return="V" 7979 abstract="true" native="false" synchronized="false" 7980 static="false" final="false" visibility="public" 7981 deprecated="not deprecated"> 7982 <param name="binding" type="com.google.inject.spi.ExposedBinding<? extends T>"/> 7983 <doc> 7984 <![CDATA[Visit a binding to a key exposed from an enclosed private environment. This target is only 7985 found in injector bindings.]]> 7986 </doc> 7987 </method> 7988 <method name="visit" return="V" 7989 abstract="true" native="false" synchronized="false" 7990 static="false" final="false" visibility="public" 7991 deprecated="not deprecated"> 7992 <param name="binding" type="com.google.inject.spi.UntargettedBinding<? extends T>"/> 7993 <doc> 7994 <![CDATA[Visit an untargetted binding. This target is found only on module bindings. It indicates 7995 that the injector should use its implicit binding strategies to resolve injections.]]> 7996 </doc> 7997 </method> 7998 <method name="visit" return="V" 7999 abstract="true" native="false" synchronized="false" 8000 static="false" final="false" visibility="public" 8001 deprecated="not deprecated"> 8002 <param name="binding" type="com.google.inject.spi.ConstructorBinding<? extends T>"/> 8003 <doc> 8004 <![CDATA[Visit a constructor binding. To resolve injections, an instance is instantiated by invoking 8005 {@code constructor}. This target is found only on injector bindings.]]> 8006 </doc> 8007 </method> 8008 <method name="visit" return="V" 8009 abstract="true" native="false" synchronized="false" 8010 static="false" final="false" visibility="public" 8011 deprecated="not deprecated"> 8012 <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding<? extends T>"/> 8013 <doc> 8014 <![CDATA[Visit a binding created from converting a bound instance to a new type. The source binding 8015 has the same binding annotation but a different type. This target is found only on injector 8016 bindings.]]> 8017 </doc> 8018 </method> 8019 <method name="visit" return="V" 8020 abstract="true" native="false" synchronized="false" 8021 static="false" final="false" visibility="public" 8022 deprecated="not deprecated"> 8023 <param name="binding" type="com.google.inject.spi.ProviderBinding<? extends T>"/> 8024 <doc> 8025 <![CDATA[Visit a binding to a {@link com.google.inject.Provider} that delegates to the binding for the 8026 provided type. This target is found only on injector bindings.]]> 8027 </doc> 8028 </method> 8029 <doc> 8030 <![CDATA[Visits each of the strategies used to find an instance to satisfy an injection. 8031 8032 @param <V> any type to be returned by the visit method. Use {@link Void} with 8033 {@code return null} if no return type is needed. 8034 @since 2.0]]> 8035 </doc> 8036 </interface> 8037 <!-- end interface com.google.inject.spi.BindingTargetVisitor --> 8038 <!-- start interface com.google.inject.spi.ConstructorBinding --> 8039 <interface name="ConstructorBinding" abstract="true" 8040 static="false" final="false" visibility="public" 8041 deprecated="not deprecated"> 8042 <implements name="com.google.inject.Binding<T>"/> 8043 <implements name="com.google.inject.spi.HasDependencies"/> 8044 <method name="getConstructor" return="com.google.inject.spi.InjectionPoint" 8045 abstract="true" native="false" synchronized="false" 8046 static="false" final="false" visibility="public" 8047 deprecated="not deprecated"> 8048 <doc> 8049 <![CDATA[Gets the constructor this binding injects.]]> 8050 </doc> 8051 </method> 8052 <method name="getInjectableMembers" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 8053 abstract="true" native="false" synchronized="false" 8054 static="false" final="false" visibility="public" 8055 deprecated="not deprecated"> 8056 <doc> 8057 <![CDATA[Returns all instance method and field injection points on {@code type}. 8058 8059 @return a possibly empty set of injection points. The set has a specified iteration order. All 8060 fields are returned and then all methods. Within the fields, supertype fields are returned 8061 before subtype fields. Similarly, supertype methods are returned before subtype methods.]]> 8062 </doc> 8063 </method> 8064 <method name="getMethodInterceptors" return="java.util.Map<java.lang.reflect.Method, java.util.List<org.aopalliance.intercept.MethodInterceptor>>" 8065 abstract="true" native="false" synchronized="false" 8066 static="false" final="false" visibility="public" 8067 deprecated="not deprecated"> 8068 <doc> 8069 <![CDATA[Returns the interceptors applied to each method, in the order that they will be applied. 8070 8071 @return a possibly empty map]]> 8072 </doc> 8073 </method> 8074 <doc> 8075 <![CDATA[A binding to the constructor of a concrete clss. To resolve injections, an instance is 8076 instantiated by invoking the constructor. 8077 8078 @author jessewilson@google.com (Jesse Wilson) 8079 @since 2.0]]> 8080 </doc> 8081 </interface> 8082 <!-- end interface com.google.inject.spi.ConstructorBinding --> 8083 <!-- start interface com.google.inject.spi.ConvertedConstantBinding --> 8084 <interface name="ConvertedConstantBinding" abstract="true" 8085 static="false" final="false" visibility="public" 8086 deprecated="not deprecated"> 8087 <implements name="com.google.inject.Binding<T>"/> 8088 <implements name="com.google.inject.spi.HasDependencies"/> 8089 <method name="getValue" return="T" 8090 abstract="true" native="false" synchronized="false" 8091 static="false" final="false" visibility="public" 8092 deprecated="not deprecated"> 8093 <doc> 8094 <![CDATA[Returns the converted value.]]> 8095 </doc> 8096 </method> 8097 <method name="getTypeConverterBinding" return="com.google.inject.spi.TypeConverterBinding" 8098 abstract="true" native="false" synchronized="false" 8099 static="false" final="false" visibility="public" 8100 deprecated="not deprecated"> 8101 <doc> 8102 <![CDATA[Returns the type converter binding used to convert the constant. 8103 8104 @since 3.0]]> 8105 </doc> 8106 </method> 8107 <method name="getSourceKey" return="com.google.inject.Key<java.lang.String>" 8108 abstract="true" native="false" synchronized="false" 8109 static="false" final="false" visibility="public" 8110 deprecated="not deprecated"> 8111 <doc> 8112 <![CDATA[Returns the key for the source binding. That binding can be retrieved from an injector using 8113 {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]> 8114 </doc> 8115 </method> 8116 <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 8117 abstract="true" native="false" synchronized="false" 8118 static="false" final="false" visibility="public" 8119 deprecated="not deprecated"> 8120 <doc> 8121 <![CDATA[Returns a singleton set containing only the converted key.]]> 8122 </doc> 8123 </method> 8124 <doc> 8125 <![CDATA[A binding created from converting a bound instance to a new type. The source binding has the same 8126 binding annotation but a different type. 8127 8128 @author jessewilson@google.com (Jesse Wilson) 8129 @since 2.0]]> 8130 </doc> 8131 </interface> 8132 <!-- end interface com.google.inject.spi.ConvertedConstantBinding --> 8133 <!-- start class com.google.inject.spi.DefaultBindingScopingVisitor --> 8134 <class name="DefaultBindingScopingVisitor" extends="java.lang.Object" 8135 abstract="false" 8136 static="false" final="false" visibility="public" 8137 deprecated="not deprecated"> 8138 <implements name="com.google.inject.spi.BindingScopingVisitor<V>"/> 8139 <constructor name="DefaultBindingScopingVisitor" 8140 static="false" final="false" visibility="public" 8141 deprecated="not deprecated"> 8142 </constructor> 8143 <method name="visitOther" return="V" 8144 abstract="false" native="false" synchronized="false" 8145 static="false" final="false" visibility="protected" 8146 deprecated="not deprecated"> 8147 <doc> 8148 <![CDATA[Default visit implementation. Returns {@code null}.]]> 8149 </doc> 8150 </method> 8151 <method name="visitEagerSingleton" return="V" 8152 abstract="false" native="false" synchronized="false" 8153 static="false" final="false" visibility="public" 8154 deprecated="not deprecated"> 8155 </method> 8156 <method name="visitScope" return="V" 8157 abstract="false" native="false" synchronized="false" 8158 static="false" final="false" visibility="public" 8159 deprecated="not deprecated"> 8160 <param name="scope" type="com.google.inject.Scope"/> 8161 </method> 8162 <method name="visitScopeAnnotation" return="V" 8163 abstract="false" native="false" synchronized="false" 8164 static="false" final="false" visibility="public" 8165 deprecated="not deprecated"> 8166 <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 8167 </method> 8168 <method name="visitNoScoping" return="V" 8169 abstract="false" native="false" synchronized="false" 8170 static="false" final="false" visibility="public" 8171 deprecated="not deprecated"> 8172 </method> 8173 <doc> 8174 <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to 8175 {@link #visitOther()}, returning its result. 8176 8177 @param <V> any type to be returned by the visit method. Use {@link Void} with 8178 {@code return null} if no return type is needed. 8179 8180 @author jessewilson@google.com (Jesse Wilson) 8181 @since 2.0]]> 8182 </doc> 8183 </class> 8184 <!-- end class com.google.inject.spi.DefaultBindingScopingVisitor --> 8185 <!-- start class com.google.inject.spi.DefaultBindingTargetVisitor --> 8186 <class name="DefaultBindingTargetVisitor" extends="java.lang.Object" 8187 abstract="true" 8188 static="false" final="false" visibility="public" 8189 deprecated="not deprecated"> 8190 <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 8191 <constructor name="DefaultBindingTargetVisitor" 8192 static="false" final="false" visibility="public" 8193 deprecated="not deprecated"> 8194 </constructor> 8195 <method name="visitOther" return="V" 8196 abstract="false" native="false" synchronized="false" 8197 static="false" final="false" visibility="protected" 8198 deprecated="not deprecated"> 8199 <param name="binding" type="com.google.inject.Binding<? extends T>"/> 8200 <doc> 8201 <![CDATA[Default visit implementation. Returns {@code null}.]]> 8202 </doc> 8203 </method> 8204 <method name="visit" return="V" 8205 abstract="false" native="false" synchronized="false" 8206 static="false" final="false" visibility="public" 8207 deprecated="not deprecated"> 8208 <param name="instanceBinding" type="com.google.inject.spi.InstanceBinding<? extends T>"/> 8209 </method> 8210 <method name="visit" return="V" 8211 abstract="false" native="false" synchronized="false" 8212 static="false" final="false" visibility="public" 8213 deprecated="not deprecated"> 8214 <param name="providerInstanceBinding" type="com.google.inject.spi.ProviderInstanceBinding<? extends T>"/> 8215 </method> 8216 <method name="visit" return="V" 8217 abstract="false" native="false" synchronized="false" 8218 static="false" final="false" visibility="public" 8219 deprecated="not deprecated"> 8220 <param name="providerKeyBinding" type="com.google.inject.spi.ProviderKeyBinding<? extends T>"/> 8221 </method> 8222 <method name="visit" return="V" 8223 abstract="false" native="false" synchronized="false" 8224 static="false" final="false" visibility="public" 8225 deprecated="not deprecated"> 8226 <param name="linkedKeyBinding" type="com.google.inject.spi.LinkedKeyBinding<? extends T>"/> 8227 </method> 8228 <method name="visit" return="V" 8229 abstract="false" native="false" synchronized="false" 8230 static="false" final="false" visibility="public" 8231 deprecated="not deprecated"> 8232 <param name="exposedBinding" type="com.google.inject.spi.ExposedBinding<? extends T>"/> 8233 </method> 8234 <method name="visit" return="V" 8235 abstract="false" native="false" synchronized="false" 8236 static="false" final="false" visibility="public" 8237 deprecated="not deprecated"> 8238 <param name="untargettedBinding" type="com.google.inject.spi.UntargettedBinding<? extends T>"/> 8239 </method> 8240 <method name="visit" return="V" 8241 abstract="false" native="false" synchronized="false" 8242 static="false" final="false" visibility="public" 8243 deprecated="not deprecated"> 8244 <param name="constructorBinding" type="com.google.inject.spi.ConstructorBinding<? extends T>"/> 8245 </method> 8246 <method name="visit" return="V" 8247 abstract="false" native="false" synchronized="false" 8248 static="false" final="false" visibility="public" 8249 deprecated="not deprecated"> 8250 <param name="convertedConstantBinding" type="com.google.inject.spi.ConvertedConstantBinding<? extends T>"/> 8251 </method> 8252 <method name="visit" return="V" 8253 abstract="false" native="false" synchronized="false" 8254 static="false" final="false" visibility="public" 8255 deprecated="not deprecated"> 8256 <param name="providerBinding" type="com.google.inject.spi.ProviderBinding<? extends T>"/> 8257 </method> 8258 <doc> 8259 <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to {@link 8260 #visitOther(Binding)}, returning its result. 8261 8262 @param <V> any type to be returned by the visit method. Use {@link Void} with 8263 {@code return null} if no return type is needed. 8264 8265 @author jessewilson@google.com (Jesse Wilson) 8266 @since 2.0]]> 8267 </doc> 8268 </class> 8269 <!-- end class com.google.inject.spi.DefaultBindingTargetVisitor --> 8270 <!-- start class com.google.inject.spi.DefaultElementVisitor --> 8271 <class name="DefaultElementVisitor" extends="java.lang.Object" 8272 abstract="true" 8273 static="false" final="false" visibility="public" 8274 deprecated="not deprecated"> 8275 <implements name="com.google.inject.spi.ElementVisitor<V>"/> 8276 <constructor name="DefaultElementVisitor" 8277 static="false" final="false" visibility="public" 8278 deprecated="not deprecated"> 8279 </constructor> 8280 <method name="visitOther" return="V" 8281 abstract="false" native="false" synchronized="false" 8282 static="false" final="false" visibility="protected" 8283 deprecated="not deprecated"> 8284 <param name="element" type="com.google.inject.spi.Element"/> 8285 <doc> 8286 <![CDATA[Default visit implementation. Returns {@code null}.]]> 8287 </doc> 8288 </method> 8289 <method name="visit" return="V" 8290 abstract="false" native="false" synchronized="false" 8291 static="false" final="false" visibility="public" 8292 deprecated="not deprecated"> 8293 <param name="message" type="com.google.inject.spi.Message"/> 8294 </method> 8295 <method name="visit" return="V" 8296 abstract="false" native="false" synchronized="false" 8297 static="false" final="false" visibility="public" 8298 deprecated="not deprecated"> 8299 <param name="binding" type="com.google.inject.Binding<T>"/> 8300 </method> 8301 <method name="visit" return="V" 8302 abstract="false" native="false" synchronized="false" 8303 static="false" final="false" visibility="public" 8304 deprecated="not deprecated"> 8305 <param name="interceptorBinding" type="com.google.inject.spi.InterceptorBinding"/> 8306 </method> 8307 <method name="visit" return="V" 8308 abstract="false" native="false" synchronized="false" 8309 static="false" final="false" visibility="public" 8310 deprecated="not deprecated"> 8311 <param name="scopeBinding" type="com.google.inject.spi.ScopeBinding"/> 8312 </method> 8313 <method name="visit" return="V" 8314 abstract="false" native="false" synchronized="false" 8315 static="false" final="false" visibility="public" 8316 deprecated="not deprecated"> 8317 <param name="typeConverterBinding" type="com.google.inject.spi.TypeConverterBinding"/> 8318 </method> 8319 <method name="visit" return="V" 8320 abstract="false" native="false" synchronized="false" 8321 static="false" final="false" visibility="public" 8322 deprecated="not deprecated"> 8323 <param name="providerLookup" type="com.google.inject.spi.ProviderLookup<T>"/> 8324 </method> 8325 <method name="visit" return="V" 8326 abstract="false" native="false" synchronized="false" 8327 static="false" final="false" visibility="public" 8328 deprecated="not deprecated"> 8329 <param name="injectionRequest" type="com.google.inject.spi.InjectionRequest<?>"/> 8330 </method> 8331 <method name="visit" return="V" 8332 abstract="false" native="false" synchronized="false" 8333 static="false" final="false" visibility="public" 8334 deprecated="not deprecated"> 8335 <param name="staticInjectionRequest" type="com.google.inject.spi.StaticInjectionRequest"/> 8336 </method> 8337 <method name="visit" return="V" 8338 abstract="false" native="false" synchronized="false" 8339 static="false" final="false" visibility="public" 8340 deprecated="not deprecated"> 8341 <param name="privateElements" type="com.google.inject.spi.PrivateElements"/> 8342 </method> 8343 <method name="visit" return="V" 8344 abstract="false" native="false" synchronized="false" 8345 static="false" final="false" visibility="public" 8346 deprecated="not deprecated"> 8347 <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup<T>"/> 8348 </method> 8349 <method name="visit" return="V" 8350 abstract="false" native="false" synchronized="false" 8351 static="false" final="false" visibility="public" 8352 deprecated="not deprecated"> 8353 <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/> 8354 </method> 8355 <method name="visit" return="V" 8356 abstract="false" native="false" synchronized="false" 8357 static="false" final="false" visibility="public" 8358 deprecated="not deprecated"> 8359 <param name="binding" type="com.google.inject.spi.ProvisionListenerBinding"/> 8360 </method> 8361 <method name="visit" return="V" 8362 abstract="false" native="false" synchronized="false" 8363 static="false" final="false" visibility="public" 8364 deprecated="not deprecated"> 8365 <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/> 8366 </method> 8367 <method name="visit" return="V" 8368 abstract="false" native="false" synchronized="false" 8369 static="false" final="false" visibility="public" 8370 deprecated="not deprecated"> 8371 <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/> 8372 </method> 8373 <method name="visit" return="V" 8374 abstract="false" native="false" synchronized="false" 8375 static="false" final="false" visibility="public" 8376 deprecated="not deprecated"> 8377 <param name="option" type="com.google.inject.spi.RequireAtInjectOnConstructorsOption"/> 8378 </method> 8379 <method name="visit" return="V" 8380 abstract="false" native="false" synchronized="false" 8381 static="false" final="false" visibility="public" 8382 deprecated="not deprecated"> 8383 <param name="option" type="com.google.inject.spi.RequireExactBindingAnnotationsOption"/> 8384 </method> 8385 <method name="visit" return="V" 8386 abstract="false" native="false" synchronized="false" 8387 static="false" final="false" visibility="public" 8388 deprecated="not deprecated"> 8389 <param name="binding" type="com.google.inject.spi.ModuleAnnotatedMethodScannerBinding"/> 8390 </method> 8391 <doc> 8392 <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to 8393 {@link #visitOther(Element)}, returning its result. 8394 8395 @param <V> any type to be returned by the visit method. Use {@link Void} with 8396 {@code return null} if no return type is needed. 8397 8398 @author sberlin@gmail.com (Sam Berlin) 8399 @since 2.0]]> 8400 </doc> 8401 </class> 8402 <!-- end class com.google.inject.spi.DefaultElementVisitor --> 8403 <!-- start class com.google.inject.spi.Dependency --> 8404 <class name="Dependency" extends="java.lang.Object" 8405 abstract="false" 8406 static="false" final="true" visibility="public" 8407 deprecated="not deprecated"> 8408 <method name="get" return="com.google.inject.spi.Dependency<T>" 8409 abstract="false" native="false" synchronized="false" 8410 static="true" final="false" visibility="public" 8411 deprecated="not deprecated"> 8412 <param name="key" type="com.google.inject.Key<T>"/> 8413 <doc> 8414 <![CDATA[Returns a new dependency that is not attached to an injection point. The returned dependency is 8415 nullable.]]> 8416 </doc> 8417 </method> 8418 <method name="forInjectionPoints" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 8419 abstract="false" native="false" synchronized="false" 8420 static="true" final="false" visibility="public" 8421 deprecated="not deprecated"> 8422 <param name="injectionPoints" type="java.util.Set<com.google.inject.spi.InjectionPoint>"/> 8423 <doc> 8424 <![CDATA[Returns the dependencies from the given injection points.]]> 8425 </doc> 8426 </method> 8427 <method name="getKey" return="com.google.inject.Key<T>" 8428 abstract="false" native="false" synchronized="false" 8429 static="false" final="false" visibility="public" 8430 deprecated="not deprecated"> 8431 <doc> 8432 <![CDATA[Returns the key to the binding that satisfies this dependency.]]> 8433 </doc> 8434 </method> 8435 <method name="isNullable" return="boolean" 8436 abstract="false" native="false" synchronized="false" 8437 static="false" final="false" visibility="public" 8438 deprecated="not deprecated"> 8439 <doc> 8440 <![CDATA[Returns true if null is a legal value for this dependency.]]> 8441 </doc> 8442 </method> 8443 <method name="getInjectionPoint" return="com.google.inject.spi.InjectionPoint" 8444 abstract="false" native="false" synchronized="false" 8445 static="false" final="false" visibility="public" 8446 deprecated="not deprecated"> 8447 <doc> 8448 <![CDATA[Returns the injection point to which this dependency belongs, or null if this dependency isn't 8449 attached to a particular injection point.]]> 8450 </doc> 8451 </method> 8452 <method name="getParameterIndex" return="int" 8453 abstract="false" native="false" synchronized="false" 8454 static="false" final="false" visibility="public" 8455 deprecated="not deprecated"> 8456 <doc> 8457 <![CDATA[Returns the index of this dependency in the injection point's parameter list, or {@code -1} if 8458 this dependency does not belong to a parameter list. Only method and constuctor dependencies 8459 are elements in a parameter list.]]> 8460 </doc> 8461 </method> 8462 <method name="hashCode" return="int" 8463 abstract="false" native="false" synchronized="false" 8464 static="false" final="false" visibility="public" 8465 deprecated="not deprecated"> 8466 </method> 8467 <method name="equals" return="boolean" 8468 abstract="false" native="false" synchronized="false" 8469 static="false" final="false" visibility="public" 8470 deprecated="not deprecated"> 8471 <param name="o" type="java.lang.Object"/> 8472 </method> 8473 <method name="toString" return="java.lang.String" 8474 abstract="false" native="false" synchronized="false" 8475 static="false" final="false" visibility="public" 8476 deprecated="not deprecated"> 8477 </method> 8478 <doc> 8479 <![CDATA[A variable that can be resolved by an injector. 8480 8481 <p>Use {@link #get} to build a freestanding dependency, or {@link InjectionPoint} to build one 8482 that's attached to a constructor, method or field. 8483 8484 @author crazybob@google.com (Bob Lee) 8485 @author jessewilson@google.com (Jesse Wilson) 8486 @since 2.0]]> 8487 </doc> 8488 </class> 8489 <!-- end class com.google.inject.spi.Dependency --> 8490 <!-- start class com.google.inject.spi.DependencyAndSource --> 8491 <class name="DependencyAndSource" extends="java.lang.Object" 8492 abstract="false" 8493 static="false" final="true" visibility="public" 8494 deprecated="not deprecated"> 8495 <constructor name="DependencyAndSource" type="com.google.inject.spi.Dependency<?>, java.lang.Object" 8496 static="false" final="false" visibility="public" 8497 deprecated="not deprecated"> 8498 </constructor> 8499 <method name="getDependency" return="com.google.inject.spi.Dependency<?>" 8500 abstract="false" native="false" synchronized="false" 8501 static="false" final="false" visibility="public" 8502 deprecated="not deprecated"> 8503 <doc> 8504 <![CDATA[Returns the Dependency, if one exists. For anything that can be referenced 8505 by {@link Injector#getBinding}, a dependency exists. A dependency will not 8506 exist (and this will return null) for types initialized with 8507 {@link Binder#requestInjection} or {@link Injector#injectMembers(Object)}, 8508 nor will it exist for objects injected into Providers bound with 8509 LinkedBindingBuilder#toProvider(Provider).]]> 8510 </doc> 8511 </method> 8512 <method name="getBindingSource" return="java.lang.String" 8513 abstract="false" native="false" synchronized="false" 8514 static="false" final="false" visibility="public" 8515 deprecated="not deprecated"> 8516 <doc> 8517 <![CDATA[Returns a string describing where this dependency was bound. If the binding 8518 was just-in-time, there is no valid binding source, so this describes the 8519 class in question.]]> 8520 </doc> 8521 </method> 8522 <method name="toString" return="java.lang.String" 8523 abstract="false" native="false" synchronized="false" 8524 static="false" final="false" visibility="public" 8525 deprecated="not deprecated"> 8526 </method> 8527 <doc> 8528 <![CDATA[A combination of a {@link Dependency} and the {@link Binding#getSource() 8529 source} where the dependency was bound. 8530 8531 @author sameb@google.com (Sam Berlin) 8532 @since 4.0]]> 8533 </doc> 8534 </class> 8535 <!-- end class com.google.inject.spi.DependencyAndSource --> 8536 <!-- start class com.google.inject.spi.DisableCircularProxiesOption --> 8537 <class name="DisableCircularProxiesOption" extends="java.lang.Object" 8538 abstract="false" 8539 static="false" final="true" visibility="public" 8540 deprecated="not deprecated"> 8541 <implements name="com.google.inject.spi.Element"/> 8542 <method name="getSource" return="java.lang.Object" 8543 abstract="false" native="false" synchronized="false" 8544 static="false" final="false" visibility="public" 8545 deprecated="not deprecated"> 8546 </method> 8547 <method name="applyTo" 8548 abstract="false" native="false" synchronized="false" 8549 static="false" final="false" visibility="public" 8550 deprecated="not deprecated"> 8551 <param name="binder" type="com.google.inject.Binder"/> 8552 </method> 8553 <method name="acceptVisitor" return="T" 8554 abstract="false" native="false" synchronized="false" 8555 static="false" final="false" visibility="public" 8556 deprecated="not deprecated"> 8557 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 8558 </method> 8559 <doc> 8560 <![CDATA[A request to disable circular proxies. 8561 8562 @author sameb@google.com (Sam Berlin) 8563 @since 3.0]]> 8564 </doc> 8565 </class> 8566 <!-- end class com.google.inject.spi.DisableCircularProxiesOption --> 8567 <!-- start interface com.google.inject.spi.Element --> 8568 <interface name="Element" abstract="true" 8569 static="false" final="false" visibility="public" 8570 deprecated="not deprecated"> 8571 <method name="getSource" return="java.lang.Object" 8572 abstract="true" native="false" synchronized="false" 8573 static="false" final="false" visibility="public" 8574 deprecated="not deprecated"> 8575 <doc> 8576 <![CDATA[Returns an arbitrary object containing information about the "place" where this element was 8577 configured. Used by Guice in the production of descriptive error messages. 8578 8579 <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good 8580 example. Tools should simply call {@code toString()} on the source object if the type is 8581 unfamiliar.]]> 8582 </doc> 8583 </method> 8584 <method name="acceptVisitor" return="T" 8585 abstract="true" native="false" synchronized="false" 8586 static="false" final="false" visibility="public" 8587 deprecated="not deprecated"> 8588 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 8589 <doc> 8590 <![CDATA[Accepts an element visitor. Invokes the visitor method specific to this element's type. 8591 8592 @param visitor to call back on]]> 8593 </doc> 8594 </method> 8595 <method name="applyTo" 8596 abstract="true" native="false" synchronized="false" 8597 static="false" final="false" visibility="public" 8598 deprecated="not deprecated"> 8599 <param name="binder" type="com.google.inject.Binder"/> 8600 <doc> 8601 <![CDATA[Writes this module element to the given binder (optional operation). 8602 8603 @param binder to apply configuration element to 8604 @throws UnsupportedOperationException if the {@code applyTo} method is not supported by this 8605 element.]]> 8606 </doc> 8607 </method> 8608 <doc> 8609 <![CDATA[A core component of a module or injector. 8610 8611 <p>The elements of a module can be inspected, validated and rewritten. Use {@link 8612 Elements#getElements(com.google.inject.Module[]) Elements.getElements()} to read the elements 8613 from a module, and {@link Elements#getModule(Iterable) Elements.getModule()} to rewrite them. 8614 This can be used for static analysis and generation of Guice modules. 8615 8616 <p>The elements of an injector can be inspected and exercised. Use {@link 8617 com.google.inject.Injector#getBindings Injector.getBindings()} to reflect on Guice injectors. 8618 8619 @author jessewilson@google.com (Jesse Wilson) 8620 @author crazybob@google.com (Bob Lee) 8621 @since 2.0]]> 8622 </doc> 8623 </interface> 8624 <!-- end interface com.google.inject.spi.Element --> 8625 <!-- start class com.google.inject.spi.Elements --> 8626 <class name="Elements" extends="java.lang.Object" 8627 abstract="false" 8628 static="false" final="true" visibility="public" 8629 deprecated="not deprecated"> 8630 <constructor name="Elements" 8631 static="false" final="false" visibility="public" 8632 deprecated="not deprecated"> 8633 </constructor> 8634 <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 8635 abstract="false" native="false" synchronized="false" 8636 static="true" final="false" visibility="public" 8637 deprecated="not deprecated"> 8638 <param name="modules" type="com.google.inject.Module[]"/> 8639 <doc> 8640 <![CDATA[Records the elements executed by {@code modules}.]]> 8641 </doc> 8642 </method> 8643 <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 8644 abstract="false" native="false" synchronized="false" 8645 static="true" final="false" visibility="public" 8646 deprecated="not deprecated"> 8647 <param name="stage" type="com.google.inject.Stage"/> 8648 <param name="modules" type="com.google.inject.Module[]"/> 8649 <doc> 8650 <![CDATA[Records the elements executed by {@code modules}.]]> 8651 </doc> 8652 </method> 8653 <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 8654 abstract="false" native="false" synchronized="false" 8655 static="true" final="false" visibility="public" 8656 deprecated="not deprecated"> 8657 <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 8658 <doc> 8659 <![CDATA[Records the elements executed by {@code modules}.]]> 8660 </doc> 8661 </method> 8662 <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 8663 abstract="false" native="false" synchronized="false" 8664 static="true" final="false" visibility="public" 8665 deprecated="not deprecated"> 8666 <param name="stage" type="com.google.inject.Stage"/> 8667 <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 8668 <doc> 8669 <![CDATA[Records the elements executed by {@code modules}.]]> 8670 </doc> 8671 </method> 8672 <method name="getModule" return="com.google.inject.Module" 8673 abstract="false" native="false" synchronized="false" 8674 static="true" final="false" visibility="public" 8675 deprecated="not deprecated"> 8676 <param name="elements" type="java.lang.Iterable<? extends com.google.inject.spi.Element>"/> 8677 <doc> 8678 <![CDATA[Returns the module composed of {@code elements}.]]> 8679 </doc> 8680 </method> 8681 <doc> 8682 <![CDATA[Exposes elements of a module so they can be inspected, validated or {@link 8683 Element#applyTo(Binder) rewritten}. 8684 8685 @author jessewilson@google.com (Jesse Wilson) 8686 @since 2.0]]> 8687 </doc> 8688 </class> 8689 <!-- end class com.google.inject.spi.Elements --> 8690 <!-- start class com.google.inject.spi.ElementSource --> 8691 <class name="ElementSource" extends="java.lang.Object" 8692 abstract="false" 8693 static="false" final="true" visibility="public" 8694 deprecated="not deprecated"> 8695 <method name="getOriginalElementSource" return="com.google.inject.spi.ElementSource" 8696 abstract="false" native="false" synchronized="false" 8697 static="false" final="false" visibility="public" 8698 deprecated="not deprecated"> 8699 <doc> 8700 <![CDATA[Returns the {@link ElementSource} of the element this was created or copied from. If this was 8701 not created or copied from another element, returns {@code null}.]]> 8702 </doc> 8703 </method> 8704 <method name="getDeclaringSource" return="java.lang.Object" 8705 abstract="false" native="false" synchronized="false" 8706 static="false" final="false" visibility="public" 8707 deprecated="not deprecated"> 8708 <doc> 8709 <![CDATA[Returns a single location in source code that defines the element. It can be any object 8710 such as {@link java.lang.reflect.Constructor}, {@link java.lang.reflect.Method}, 8711 {@link java.lang.reflect.Field}, {@link StackTraceElement}, etc. For 8712 example, if the element is created from a method annotated by {@literal @Provides}, the 8713 declaring source of element would be the method itself.]]> 8714 </doc> 8715 </method> 8716 <method name="getModuleClassNames" return="java.util.List<java.lang.String>" 8717 abstract="false" native="false" synchronized="false" 8718 static="false" final="false" visibility="public" 8719 deprecated="not deprecated"> 8720 <doc> 8721 <![CDATA[Returns the class names of modules involved in creating this {@link Element}. The first 8722 element (index 0) is the class name of module that defined the element, and the last element 8723 is the class name of root module.]]> 8724 </doc> 8725 </method> 8726 <method name="getModuleConfigurePositionsInStackTrace" return="java.util.List<java.lang.Integer>" 8727 abstract="false" native="false" synchronized="false" 8728 static="false" final="false" visibility="public" 8729 deprecated="not deprecated"> 8730 <doc> 8731 <![CDATA[Returns the position of {@link com.google.inject.Module#configure configure(Binder)} method 8732 call in the {@link #getStackTrace stack trace} for modules that their classes returned by 8733 {@link #getModuleClassNames}. For example, if the stack trace looks like the following: 8734 <p> 8735 {@code 8736 0 - Binder.bind(), 8737 1 - ModuleTwo.configure(), 8738 2 - Binder.install(), 8739 3 - ModuleOne.configure(), 8740 4 - theRest(). 8741 } 8742 <p> 8743 1 and 3 are returned. 8744 <p> 8745 In the cases where stack trace is not available (i.e., the stack trace was not collected), 8746 it returns -1 for all module positions.]]> 8747 </doc> 8748 </method> 8749 <method name="getStackTrace" return="java.lang.StackTraceElement[]" 8750 abstract="false" native="false" synchronized="false" 8751 static="false" final="false" visibility="public" 8752 deprecated="not deprecated"> 8753 <doc> 8754 <![CDATA[Returns the sequence of method calls that ends at one of {@link com.google.inject.Binder} 8755 {@code bindXXX()} methods and eventually defines the element. Note that 8756 {@link #getStackTrace} lists {@link StackTraceElement StackTraceElements} in reverse 8757 chronological order. The first element (index zero) is the last method call and the last 8758 element is the first method invocation. In the cases where stack trace is not available 8759 (i.e.,the stack trace was not collected), it returns an empty array.]]> 8760 </doc> 8761 </method> 8762 <method name="toString" return="java.lang.String" 8763 abstract="false" native="false" synchronized="false" 8764 static="false" final="false" visibility="public" 8765 deprecated="not deprecated"> 8766 <doc> 8767 <![CDATA[Returns {@code getDeclaringSource().toString()} value.]]> 8768 </doc> 8769 </method> 8770 <doc> 8771 <![CDATA[Contains information about where and how an {@link Element element} was 8772 bound. 8773 <p> 8774 The {@link #getDeclaringSource() declaring source} refers to a location in 8775 source code that defines the Guice {@link Element element}. For example, if 8776 the element is created from a method annotated by {@literal @Provides}, the 8777 declaring source of element would be the method itself. 8778 <p> 8779 The {@link #getStackTrace()} refers to the sequence of calls ends at one of 8780 {@link com.google.inject.Binder} {@code bindXXX()} methods and eventually 8781 defines the element. Note that {@link #getStackTrace()} lists 8782 {@link StackTraceElement StackTraceElements} in reverse chronological order. 8783 The first element (index zero) is the last method call and the last element 8784 is the first method invocation. By default, the stack trace is not collected. 8785 The default behavior can be changed by setting the 8786 {@code guice_include_stack_traces} flag value. The value can be either 8787 {@code OFF}, {@code ONLY_FOR_DECLARING_SOURCE} or {@code COMPLETE}. Note that 8788 collecting stack traces for every binding can cause a performance hit when 8789 the injector is created. 8790 <p> 8791 The sequence of class names of {@link com.google.inject.Module modules} 8792 involved in the element creation can be retrieved by 8793 {@link #getModuleClassNames()}. Similar to {@link #getStackTrace()}, the 8794 order is reverse chronological. The first module (index 0) is the module that 8795 installs the {@link Element element}. The last module is the root module. 8796 <p> 8797 In order to support the cases where a Guice {@link Element element} is 8798 created from another Guice {@link Element element} (original) (e.g., by 8799 {@link Element#applyTo}), it also provides a reference to the original 8800 element source ({@link #getOriginalElementSource()}). 8801 8802 @since 4.0]]> 8803 </doc> 8804 </class> 8805 <!-- end class com.google.inject.spi.ElementSource --> 8806 <!-- start interface com.google.inject.spi.ElementVisitor --> 8807 <interface name="ElementVisitor" abstract="true" 8808 static="false" final="false" visibility="public" 8809 deprecated="not deprecated"> 8810 <method name="visit" return="V" 8811 abstract="true" native="false" synchronized="false" 8812 static="false" final="false" visibility="public" 8813 deprecated="not deprecated"> 8814 <param name="binding" type="com.google.inject.Binding<T>"/> 8815 <doc> 8816 <![CDATA[Visit a mapping from a key (type and optional annotation) to the strategy for getting 8817 instances of the type.]]> 8818 </doc> 8819 </method> 8820 <method name="visit" return="V" 8821 abstract="true" native="false" synchronized="false" 8822 static="false" final="false" visibility="public" 8823 deprecated="not deprecated"> 8824 <param name="binding" type="com.google.inject.spi.InterceptorBinding"/> 8825 <doc> 8826 <![CDATA[Visit a registration of interceptors for matching methods of matching classes.]]> 8827 </doc> 8828 </method> 8829 <method name="visit" return="V" 8830 abstract="true" native="false" synchronized="false" 8831 static="false" final="false" visibility="public" 8832 deprecated="not deprecated"> 8833 <param name="binding" type="com.google.inject.spi.ScopeBinding"/> 8834 <doc> 8835 <![CDATA[Visit a registration of a scope annotation with the scope that implements it.]]> 8836 </doc> 8837 </method> 8838 <method name="visit" return="V" 8839 abstract="true" native="false" synchronized="false" 8840 static="false" final="false" visibility="public" 8841 deprecated="not deprecated"> 8842 <param name="binding" type="com.google.inject.spi.TypeConverterBinding"/> 8843 <doc> 8844 <![CDATA[Visit a registration of type converters for matching target types.]]> 8845 </doc> 8846 </method> 8847 <method name="visit" return="V" 8848 abstract="true" native="false" synchronized="false" 8849 static="false" final="false" visibility="public" 8850 deprecated="not deprecated"> 8851 <param name="request" type="com.google.inject.spi.InjectionRequest<?>"/> 8852 <doc> 8853 <![CDATA[Visit a request to inject the instance fields and methods of an instance.]]> 8854 </doc> 8855 </method> 8856 <method name="visit" return="V" 8857 abstract="true" native="false" synchronized="false" 8858 static="false" final="false" visibility="public" 8859 deprecated="not deprecated"> 8860 <param name="request" type="com.google.inject.spi.StaticInjectionRequest"/> 8861 <doc> 8862 <![CDATA[Visit a request to inject the static fields and methods of type.]]> 8863 </doc> 8864 </method> 8865 <method name="visit" return="V" 8866 abstract="true" native="false" synchronized="false" 8867 static="false" final="false" visibility="public" 8868 deprecated="not deprecated"> 8869 <param name="lookup" type="com.google.inject.spi.ProviderLookup<T>"/> 8870 <doc> 8871 <![CDATA[Visit a lookup of the provider for a type.]]> 8872 </doc> 8873 </method> 8874 <method name="visit" return="V" 8875 abstract="true" native="false" synchronized="false" 8876 static="false" final="false" visibility="public" 8877 deprecated="not deprecated"> 8878 <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup<T>"/> 8879 <doc> 8880 <![CDATA[Visit a lookup of the members injector.]]> 8881 </doc> 8882 </method> 8883 <method name="visit" return="V" 8884 abstract="true" native="false" synchronized="false" 8885 static="false" final="false" visibility="public" 8886 deprecated="not deprecated"> 8887 <param name="message" type="com.google.inject.spi.Message"/> 8888 <doc> 8889 <![CDATA[Visit an error message and the context in which it occured.]]> 8890 </doc> 8891 </method> 8892 <method name="visit" return="V" 8893 abstract="true" native="false" synchronized="false" 8894 static="false" final="false" visibility="public" 8895 deprecated="not deprecated"> 8896 <param name="elements" type="com.google.inject.spi.PrivateElements"/> 8897 <doc> 8898 <![CDATA[Visit a collection of configuration elements for a {@linkplain com.google.inject.PrivateBinder 8899 private binder}.]]> 8900 </doc> 8901 </method> 8902 <method name="visit" return="V" 8903 abstract="true" native="false" synchronized="false" 8904 static="false" final="false" visibility="public" 8905 deprecated="not deprecated"> 8906 <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/> 8907 <doc> 8908 <![CDATA[Visit an injectable type listener binding.]]> 8909 </doc> 8910 </method> 8911 <method name="visit" return="V" 8912 abstract="true" native="false" synchronized="false" 8913 static="false" final="false" visibility="public" 8914 deprecated="not deprecated"> 8915 <param name="binding" type="com.google.inject.spi.ProvisionListenerBinding"/> 8916 <doc> 8917 <![CDATA[Visit a provision listener binding. 8918 8919 @since 4.0]]> 8920 </doc> 8921 </method> 8922 <method name="visit" return="V" 8923 abstract="true" native="false" synchronized="false" 8924 static="false" final="false" visibility="public" 8925 deprecated="not deprecated"> 8926 <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/> 8927 <doc> 8928 <![CDATA[Visit a require explicit bindings command. 8929 8930 @since 3.0]]> 8931 </doc> 8932 </method> 8933 <method name="visit" return="V" 8934 abstract="true" native="false" synchronized="false" 8935 static="false" final="false" visibility="public" 8936 deprecated="not deprecated"> 8937 <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/> 8938 <doc> 8939 <![CDATA[Visit a disable circular proxies command. 8940 8941 @since 3.0]]> 8942 </doc> 8943 </method> 8944 <method name="visit" return="V" 8945 abstract="true" native="false" synchronized="false" 8946 static="false" final="false" visibility="public" 8947 deprecated="not deprecated"> 8948 <param name="option" type="com.google.inject.spi.RequireAtInjectOnConstructorsOption"/> 8949 <doc> 8950 <![CDATA[Visit a require explicit {@literal @}{@link Inject} command. 8951 8952 @since 4.0]]> 8953 </doc> 8954 </method> 8955 <method name="visit" return="V" 8956 abstract="true" native="false" synchronized="false" 8957 static="false" final="false" visibility="public" 8958 deprecated="not deprecated"> 8959 <param name="option" type="com.google.inject.spi.RequireExactBindingAnnotationsOption"/> 8960 <doc> 8961 <![CDATA[Visit a require exact binding annotations command. 8962 8963 @since 4.0]]> 8964 </doc> 8965 </method> 8966 <method name="visit" return="V" 8967 abstract="true" native="false" synchronized="false" 8968 static="false" final="false" visibility="public" 8969 deprecated="not deprecated"> 8970 <param name="binding" type="com.google.inject.spi.ModuleAnnotatedMethodScannerBinding"/> 8971 <doc> 8972 <![CDATA[Visits a {@link Binder#scanModulesForAnnotatedMethods} command. 8973 8974 @since 4.0]]> 8975 </doc> 8976 </method> 8977 <doc> 8978 <![CDATA[Visit elements. 8979 8980 @param <V> any type to be returned by the visit method. Use {@link Void} with 8981 {@code return null} if no return type is needed. 8982 8983 @since 2.0]]> 8984 </doc> 8985 </interface> 8986 <!-- end interface com.google.inject.spi.ElementVisitor --> 8987 <!-- start interface com.google.inject.spi.ExposedBinding --> 8988 <interface name="ExposedBinding" abstract="true" 8989 static="false" final="false" visibility="public" 8990 deprecated="not deprecated"> 8991 <implements name="com.google.inject.Binding<T>"/> 8992 <implements name="com.google.inject.spi.HasDependencies"/> 8993 <method name="getPrivateElements" return="com.google.inject.spi.PrivateElements" 8994 abstract="true" native="false" synchronized="false" 8995 static="false" final="false" visibility="public" 8996 deprecated="not deprecated"> 8997 <doc> 8998 <![CDATA[Returns the enclosed environment that holds the original binding.]]> 8999 </doc> 9000 </method> 9001 <method name="applyTo" 9002 abstract="true" native="false" synchronized="false" 9003 static="false" final="false" visibility="public" 9004 deprecated="not deprecated"> 9005 <param name="binder" type="com.google.inject.Binder"/> 9006 <doc> 9007 <![CDATA[Unsupported. Always throws {@link UnsupportedOperationException}.]]> 9008 </doc> 9009 </method> 9010 <doc> 9011 <![CDATA[A binding to a key exposed from an enclosed private environment. 9012 9013 @author jessewilson@google.com (Jesse Wilson) 9014 @since 2.0]]> 9015 </doc> 9016 </interface> 9017 <!-- end interface com.google.inject.spi.ExposedBinding --> 9018 <!-- start interface com.google.inject.spi.HasDependencies --> 9019 <interface name="HasDependencies" abstract="true" 9020 static="false" final="false" visibility="public" 9021 deprecated="not deprecated"> 9022 <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 9023 abstract="true" native="false" synchronized="false" 9024 static="false" final="false" visibility="public" 9025 deprecated="not deprecated"> 9026 <doc> 9027 <![CDATA[Returns the known dependencies for this type. If this has dependencies whose values are not 9028 known statically, a dependency for the {@link com.google.inject.Injector Injector} will be 9029 included in the returned set. 9030 9031 @return a possibly empty set]]> 9032 </doc> 9033 </method> 9034 <doc> 9035 <![CDATA[Implemented by {@link com.google.inject.Binding bindings}, {@link com.google.inject.Provider 9036 providers} and instances that expose their dependencies explicitly. 9037 9038 @author jessewilson@google.com (Jesse Wilson) 9039 @since 2.0]]> 9040 </doc> 9041 </interface> 9042 <!-- end interface com.google.inject.spi.HasDependencies --> 9043 <!-- start interface com.google.inject.spi.InjectionListener --> 9044 <interface name="InjectionListener" abstract="true" 9045 static="false" final="false" visibility="public" 9046 deprecated="not deprecated"> 9047 <method name="afterInjection" 9048 abstract="true" native="false" synchronized="false" 9049 static="false" final="false" visibility="public" 9050 deprecated="not deprecated"> 9051 <param name="injectee" type="I"/> 9052 <doc> 9053 <![CDATA[Invoked by Guice after it injects the fields and methods of instance. 9054 9055 @param injectee instance that Guice injected dependencies into]]> 9056 </doc> 9057 </method> 9058 <doc> 9059 <![CDATA[Listens for injections into instances of type {@code I}. Useful for performing further 9060 injections, post-injection initialization, and more. 9061 9062 @author crazybob@google.com (Bob Lee) 9063 @author jessewilson@google.com (Jesse Wilson) 9064 @since 2.0]]> 9065 </doc> 9066 </interface> 9067 <!-- end interface com.google.inject.spi.InjectionListener --> 9068 <!-- start class com.google.inject.spi.InjectionPoint --> 9069 <class name="InjectionPoint" extends="java.lang.Object" 9070 abstract="false" 9071 static="false" final="true" visibility="public" 9072 deprecated="not deprecated"> 9073 <method name="getMember" return="java.lang.reflect.Member" 9074 abstract="false" native="false" synchronized="false" 9075 static="false" final="false" visibility="public" 9076 deprecated="not deprecated"> 9077 <doc> 9078 <![CDATA[Returns the injected constructor, field, or method.]]> 9079 </doc> 9080 </method> 9081 <method name="getDependencies" return="java.util.List<com.google.inject.spi.Dependency<?>>" 9082 abstract="false" native="false" synchronized="false" 9083 static="false" final="false" visibility="public" 9084 deprecated="not deprecated"> 9085 <doc> 9086 <![CDATA[Returns the dependencies for this injection point. If the injection point is for a method or 9087 constructor, the dependencies will correspond to that member's parameters. Field injection 9088 points always have a single dependency for the field itself. 9089 9090 @return a possibly-empty list]]> 9091 </doc> 9092 </method> 9093 <method name="isOptional" return="boolean" 9094 abstract="false" native="false" synchronized="false" 9095 static="false" final="false" visibility="public" 9096 deprecated="not deprecated"> 9097 <doc> 9098 <![CDATA[Returns true if this injection point shall be skipped if the injector cannot resolve bindings 9099 for all required dependencies. Both explicit bindings (as specified in a module), and implicit 9100 bindings ({@literal @}{@link com.google.inject.ImplementedBy ImplementedBy}, default 9101 constructors etc.) may be used to satisfy optional injection points.]]> 9102 </doc> 9103 </method> 9104 <method name="isToolable" return="boolean" 9105 abstract="false" native="false" synchronized="false" 9106 static="false" final="false" visibility="public" 9107 deprecated="not deprecated"> 9108 <doc> 9109 <![CDATA[Returns true if the element is annotated with {@literal @}{@link Toolable}. 9110 9111 @since 3.0]]> 9112 </doc> 9113 </method> 9114 <method name="getDeclaringType" return="com.google.inject.TypeLiteral<?>" 9115 abstract="false" native="false" synchronized="false" 9116 static="false" final="false" visibility="public" 9117 deprecated="not deprecated"> 9118 <doc> 9119 <![CDATA[Returns the generic type that defines this injection point. If the member exists on a 9120 parameterized type, the result will include more type information than the member's {@link 9121 Member#getDeclaringClass() raw declaring class}. 9122 9123 @since 3.0]]> 9124 </doc> 9125 </method> 9126 <method name="equals" return="boolean" 9127 abstract="false" native="false" synchronized="false" 9128 static="false" final="false" visibility="public" 9129 deprecated="not deprecated"> 9130 <param name="o" type="java.lang.Object"/> 9131 </method> 9132 <method name="hashCode" return="int" 9133 abstract="false" native="false" synchronized="false" 9134 static="false" final="false" visibility="public" 9135 deprecated="not deprecated"> 9136 </method> 9137 <method name="toString" return="java.lang.String" 9138 abstract="false" native="false" synchronized="false" 9139 static="false" final="false" visibility="public" 9140 deprecated="not deprecated"> 9141 </method> 9142 <method name="forConstructor" return="com.google.inject.spi.InjectionPoint" 9143 abstract="false" native="false" synchronized="false" 9144 static="true" final="false" visibility="public" 9145 deprecated="not deprecated"> 9146 <param name="constructor" type="java.lang.reflect.Constructor<T>"/> 9147 <doc> 9148 <![CDATA[Returns a new injection point for the specified constructor. If the declaring type of {@code 9149 constructor} is parameterized (such as {@code List<T>}), prefer the overload that includes a 9150 type literal. 9151 9152 @param constructor any single constructor present on {@code type}. 9153 9154 @since 3.0]]> 9155 </doc> 9156 </method> 9157 <method name="forConstructor" return="com.google.inject.spi.InjectionPoint" 9158 abstract="false" native="false" synchronized="false" 9159 static="true" final="false" visibility="public" 9160 deprecated="not deprecated"> 9161 <param name="constructor" type="java.lang.reflect.Constructor<T>"/> 9162 <param name="type" type="com.google.inject.TypeLiteral<? extends T>"/> 9163 <doc> 9164 <![CDATA[Returns a new injection point for the specified constructor of {@code type}. 9165 9166 @param constructor any single constructor present on {@code type}. 9167 @param type the concrete type that defines {@code constructor}. 9168 9169 @since 3.0]]> 9170 </doc> 9171 </method> 9172 <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint" 9173 abstract="false" native="false" synchronized="false" 9174 static="true" final="false" visibility="public" 9175 deprecated="not deprecated"> 9176 <param name="type" type="com.google.inject.TypeLiteral<?>"/> 9177 <doc> 9178 <![CDATA[Returns a new injection point for the injectable constructor of {@code type}. 9179 9180 @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject}, 9181 or a no-arguments constructor that is not private. 9182 @throws ConfigurationException if there is no injectable constructor, more than one injectable 9183 constructor, or if parameters of the injectable constructor are malformed, such as a 9184 parameter with multiple binding annotations.]]> 9185 </doc> 9186 </method> 9187 <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint" 9188 abstract="false" native="false" synchronized="false" 9189 static="true" final="false" visibility="public" 9190 deprecated="not deprecated"> 9191 <param name="type" type="java.lang.Class<?>"/> 9192 <doc> 9193 <![CDATA[Returns a new injection point for the injectable constructor of {@code type}. 9194 9195 @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject}, 9196 or a no-arguments constructor that is not private. 9197 @throws ConfigurationException if there is no injectable constructor, more than one injectable 9198 constructor, or if parameters of the injectable constructor are malformed, such as a 9199 parameter with multiple binding annotations.]]> 9200 </doc> 9201 </method> 9202 <method name="forMethod" return="com.google.inject.spi.InjectionPoint" 9203 abstract="false" native="false" synchronized="false" 9204 static="true" final="false" visibility="public" 9205 deprecated="not deprecated"> 9206 <param name="method" type="java.lang.reflect.Method"/> 9207 <param name="type" type="com.google.inject.TypeLiteral<T>"/> 9208 <doc> 9209 <![CDATA[Returns a new injection point for the specified method of {@code type}. 9210 This is useful for extensions that need to build dependency graphs from 9211 arbitrary methods. 9212 9213 @param method any single method present on {@code type}. 9214 @param type the concrete type that defines {@code method}. 9215 9216 @since 4.0]]> 9217 </doc> 9218 </method> 9219 <method name="forStaticMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9220 abstract="false" native="false" synchronized="false" 9221 static="true" final="false" visibility="public" 9222 deprecated="not deprecated"> 9223 <param name="type" type="com.google.inject.TypeLiteral<?>"/> 9224 <doc> 9225 <![CDATA[Returns all static method and field injection points on {@code type}. 9226 9227 @return a possibly empty set of injection points. The set has a specified iteration order. All 9228 fields are returned and then all methods. Within the fields, supertype fields are returned 9229 before subtype fields. Similarly, supertype methods are returned before subtype methods. 9230 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 9231 a field with multiple binding annotations. The exception's {@link 9232 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 9233 of the valid injection points.]]> 9234 </doc> 9235 </method> 9236 <method name="forStaticMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9237 abstract="false" native="false" synchronized="false" 9238 static="true" final="false" visibility="public" 9239 deprecated="not deprecated"> 9240 <param name="type" type="java.lang.Class<?>"/> 9241 <doc> 9242 <![CDATA[Returns all static method and field injection points on {@code type}. 9243 9244 @return a possibly empty set of injection points. The set has a specified iteration order. All 9245 fields are returned and then all methods. Within the fields, supertype fields are returned 9246 before subtype fields. Similarly, supertype methods are returned before subtype methods. 9247 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 9248 a field with multiple binding annotations. The exception's {@link 9249 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 9250 of the valid injection points.]]> 9251 </doc> 9252 </method> 9253 <method name="forInstanceMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9254 abstract="false" native="false" synchronized="false" 9255 static="true" final="false" visibility="public" 9256 deprecated="not deprecated"> 9257 <param name="type" type="com.google.inject.TypeLiteral<?>"/> 9258 <doc> 9259 <![CDATA[Returns all instance method and field injection points on {@code type}. 9260 9261 @return a possibly empty set of injection points. The set has a specified iteration order. All 9262 fields are returned and then all methods. Within the fields, supertype fields are returned 9263 before subtype fields. Similarly, supertype methods are returned before subtype methods. 9264 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 9265 a field with multiple binding annotations. The exception's {@link 9266 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 9267 of the valid injection points.]]> 9268 </doc> 9269 </method> 9270 <method name="forInstanceMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9271 abstract="false" native="false" synchronized="false" 9272 static="true" final="false" visibility="public" 9273 deprecated="not deprecated"> 9274 <param name="type" type="java.lang.Class<?>"/> 9275 <doc> 9276 <![CDATA[Returns all instance method and field injection points on {@code type}. 9277 9278 @return a possibly empty set of injection points. The set has a specified iteration order. All 9279 fields are returned and then all methods. Within the fields, supertype fields are returned 9280 before subtype fields. Similarly, supertype methods are returned before subtype methods. 9281 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 9282 a field with multiple binding annotations. The exception's {@link 9283 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 9284 of the valid injection points.]]> 9285 </doc> 9286 </method> 9287 <doc> 9288 <![CDATA[A constructor, field or method that can receive injections. Typically this is a member with the 9289 {@literal @}{@link Inject} annotation. For non-private, no argument constructors, the member may 9290 omit the annotation. 9291 9292 @author crazybob@google.com (Bob Lee) 9293 @since 2.0]]> 9294 </doc> 9295 </class> 9296 <!-- end class com.google.inject.spi.InjectionPoint --> 9297 <!-- start class com.google.inject.spi.InjectionRequest --> 9298 <class name="InjectionRequest" extends="java.lang.Object" 9299 abstract="false" 9300 static="false" final="true" visibility="public" 9301 deprecated="not deprecated"> 9302 <implements name="com.google.inject.spi.Element"/> 9303 <constructor name="InjectionRequest" type="java.lang.Object, com.google.inject.TypeLiteral<T>, T" 9304 static="false" final="false" visibility="public" 9305 deprecated="not deprecated"> 9306 </constructor> 9307 <method name="getSource" return="java.lang.Object" 9308 abstract="false" native="false" synchronized="false" 9309 static="false" final="false" visibility="public" 9310 deprecated="not deprecated"> 9311 </method> 9312 <method name="getInstance" return="T" 9313 abstract="false" native="false" synchronized="false" 9314 static="false" final="false" visibility="public" 9315 deprecated="not deprecated"> 9316 </method> 9317 <method name="getType" return="com.google.inject.TypeLiteral<T>" 9318 abstract="false" native="false" synchronized="false" 9319 static="false" final="false" visibility="public" 9320 deprecated="not deprecated"> 9321 </method> 9322 <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9323 abstract="false" native="false" synchronized="false" 9324 static="false" final="false" visibility="public" 9325 deprecated="not deprecated"> 9326 <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/> 9327 <doc> 9328 <![CDATA[Returns the instance methods and fields of {@code instance} that will be injected to fulfill 9329 this request. 9330 9331 @return a possibly empty set of injection points. The set has a specified iteration order. All 9332 fields are returned and then all methods. Within the fields, supertype fields are returned 9333 before subtype fields. Similarly, supertype methods are returned before subtype methods. 9334 @throws ConfigurationException if there is a malformed injection point on the class of {@code 9335 instance}, such as a field with multiple binding annotations. The exception's {@link 9336 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 9337 of the valid injection points.]]> 9338 </doc> 9339 </method> 9340 <method name="acceptVisitor" return="R" 9341 abstract="false" native="false" synchronized="false" 9342 static="false" final="false" visibility="public" 9343 deprecated="not deprecated"> 9344 <param name="visitor" type="com.google.inject.spi.ElementVisitor<R>"/> 9345 </method> 9346 <method name="applyTo" 9347 abstract="false" native="false" synchronized="false" 9348 static="false" final="false" visibility="public" 9349 deprecated="not deprecated"> 9350 <param name="binder" type="com.google.inject.Binder"/> 9351 </method> 9352 <doc> 9353 <![CDATA[A request to inject the instance fields and methods of an instance. Requests are created 9354 explicitly in a module using {@link com.google.inject.Binder#requestInjection(Object) 9355 requestInjection()} statements: 9356 <pre> 9357 requestInjection(serviceInstance);</pre> 9358 9359 @author mikeward@google.com (Mike Ward) 9360 @since 2.0]]> 9361 </doc> 9362 </class> 9363 <!-- end class com.google.inject.spi.InjectionRequest --> 9364 <!-- start interface com.google.inject.spi.InstanceBinding --> 9365 <interface name="InstanceBinding" abstract="true" 9366 static="false" final="false" visibility="public" 9367 deprecated="not deprecated"> 9368 <implements name="com.google.inject.Binding<T>"/> 9369 <implements name="com.google.inject.spi.HasDependencies"/> 9370 <method name="getInstance" return="T" 9371 abstract="true" native="false" synchronized="false" 9372 static="false" final="false" visibility="public" 9373 deprecated="not deprecated"> 9374 <doc> 9375 <![CDATA[Returns the user-supplied instance.]]> 9376 </doc> 9377 </method> 9378 <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9379 abstract="true" native="false" synchronized="false" 9380 static="false" final="false" visibility="public" 9381 deprecated="not deprecated"> 9382 <doc> 9383 <![CDATA[Returns the field and method injection points of the instance, injected at injector-creation 9384 time only. 9385 9386 @return a possibly empty set]]> 9387 </doc> 9388 </method> 9389 <doc> 9390 <![CDATA[A binding to a single instance. The same instance is returned for every injection. 9391 9392 @author jessewilson@google.com (Jesse Wilson) 9393 @since 2.0]]> 9394 </doc> 9395 </interface> 9396 <!-- end interface com.google.inject.spi.InstanceBinding --> 9397 <!-- start class com.google.inject.spi.InterceptorBinding --> 9398 <class name="InterceptorBinding" extends="java.lang.Object" 9399 abstract="false" 9400 static="false" final="true" visibility="public" 9401 deprecated="not deprecated"> 9402 <implements name="com.google.inject.spi.Element"/> 9403 <method name="getSource" return="java.lang.Object" 9404 abstract="false" native="false" synchronized="false" 9405 static="false" final="false" visibility="public" 9406 deprecated="not deprecated"> 9407 </method> 9408 <method name="getClassMatcher" return="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>" 9409 abstract="false" native="false" synchronized="false" 9410 static="false" final="false" visibility="public" 9411 deprecated="not deprecated"> 9412 </method> 9413 <method name="getMethodMatcher" return="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>" 9414 abstract="false" native="false" synchronized="false" 9415 static="false" final="false" visibility="public" 9416 deprecated="not deprecated"> 9417 </method> 9418 <method name="getInterceptors" return="java.util.List<org.aopalliance.intercept.MethodInterceptor>" 9419 abstract="false" native="false" synchronized="false" 9420 static="false" final="false" visibility="public" 9421 deprecated="not deprecated"> 9422 </method> 9423 <method name="acceptVisitor" return="T" 9424 abstract="false" native="false" synchronized="false" 9425 static="false" final="false" visibility="public" 9426 deprecated="not deprecated"> 9427 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9428 </method> 9429 <method name="applyTo" 9430 abstract="false" native="false" synchronized="false" 9431 static="false" final="false" visibility="public" 9432 deprecated="not deprecated"> 9433 <param name="binder" type="com.google.inject.Binder"/> 9434 </method> 9435 <doc> 9436 <![CDATA[Registration of interceptors for matching methods of matching classes. Instances are created 9437 explicitly in a module using {@link com.google.inject.Binder#bindInterceptor( 9438 Matcher, Matcher, MethodInterceptor[]) bindInterceptor()} statements: 9439 <pre> 9440 bindInterceptor(Matchers.subclassesOf(MyAction.class), 9441 Matchers.annotatedWith(Transactional.class), 9442 new MyTransactionInterceptor());</pre> 9443 9444 or from an injectable type listener using {@link TypeEncounter#bindInterceptor(Matcher, 9445 org.aopalliance.intercept.MethodInterceptor[]) TypeEncounter.bindInterceptor()}. 9446 9447 @author jessewilson@google.com (Jesse Wilson) 9448 @since 2.0]]> 9449 </doc> 9450 </class> 9451 <!-- end class com.google.inject.spi.InterceptorBinding --> 9452 <!-- start interface com.google.inject.spi.LinkedKeyBinding --> 9453 <interface name="LinkedKeyBinding" abstract="true" 9454 static="false" final="false" visibility="public" 9455 deprecated="not deprecated"> 9456 <implements name="com.google.inject.Binding<T>"/> 9457 <method name="getLinkedKey" return="com.google.inject.Key<? extends T>" 9458 abstract="true" native="false" synchronized="false" 9459 static="false" final="false" visibility="public" 9460 deprecated="not deprecated"> 9461 <doc> 9462 <![CDATA[Returns the linked key used to resolve injections. That binding can be retrieved from an 9463 injector using {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]> 9464 </doc> 9465 </method> 9466 <doc> 9467 <![CDATA[A binding to a linked key. The other key's binding is used to resolve injections. 9468 9469 @author jessewilson@google.com (Jesse Wilson) 9470 @since 2.0]]> 9471 </doc> 9472 </interface> 9473 <!-- end interface com.google.inject.spi.LinkedKeyBinding --> 9474 <!-- start class com.google.inject.spi.MembersInjectorLookup --> 9475 <class name="MembersInjectorLookup" extends="java.lang.Object" 9476 abstract="false" 9477 static="false" final="true" visibility="public" 9478 deprecated="not deprecated"> 9479 <implements name="com.google.inject.spi.Element"/> 9480 <constructor name="MembersInjectorLookup" type="java.lang.Object, com.google.inject.TypeLiteral<T>" 9481 static="false" final="false" visibility="public" 9482 deprecated="not deprecated"> 9483 </constructor> 9484 <method name="getSource" return="java.lang.Object" 9485 abstract="false" native="false" synchronized="false" 9486 static="false" final="false" visibility="public" 9487 deprecated="not deprecated"> 9488 </method> 9489 <method name="getType" return="com.google.inject.TypeLiteral<T>" 9490 abstract="false" native="false" synchronized="false" 9491 static="false" final="false" visibility="public" 9492 deprecated="not deprecated"> 9493 <doc> 9494 <![CDATA[Gets the type containing the members to be injected.]]> 9495 </doc> 9496 </method> 9497 <method name="acceptVisitor" return="T" 9498 abstract="false" native="false" synchronized="false" 9499 static="false" final="false" visibility="public" 9500 deprecated="not deprecated"> 9501 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9502 </method> 9503 <method name="initializeDelegate" 9504 abstract="false" native="false" synchronized="false" 9505 static="false" final="false" visibility="public" 9506 deprecated="not deprecated"> 9507 <param name="delegate" type="com.google.inject.MembersInjector<T>"/> 9508 <doc> 9509 <![CDATA[Sets the actual members injector. 9510 9511 @throws IllegalStateException if the delegate is already set]]> 9512 </doc> 9513 </method> 9514 <method name="applyTo" 9515 abstract="false" native="false" synchronized="false" 9516 static="false" final="false" visibility="public" 9517 deprecated="not deprecated"> 9518 <param name="binder" type="com.google.inject.Binder"/> 9519 </method> 9520 <method name="getDelegate" return="com.google.inject.MembersInjector<T>" 9521 abstract="false" native="false" synchronized="false" 9522 static="false" final="false" visibility="public" 9523 deprecated="not deprecated"> 9524 <doc> 9525 <![CDATA[Returns the delegate members injector, or {@code null} if it has not yet been initialized. 9526 The delegate will be initialized when this element is processed, or otherwise used to create 9527 an injector.]]> 9528 </doc> 9529 </method> 9530 <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 9531 abstract="false" native="false" synchronized="false" 9532 static="false" final="false" visibility="public" 9533 deprecated="not deprecated"> 9534 <doc> 9535 <![CDATA[Returns the looked up members injector. The result is not valid until this lookup has been 9536 initialized, which usually happens when the injector is created. The members injector will 9537 throw an {@code IllegalStateException} if you try to use it beforehand.]]> 9538 </doc> 9539 </method> 9540 <doc> 9541 <![CDATA[A lookup of the members injector for a type. Lookups are created explicitly in a module using 9542 {@link com.google.inject.Binder#getMembersInjector(Class) getMembersInjector()} statements: 9543 <pre> 9544 MembersInjector<PaymentService> membersInjector 9545 = getMembersInjector(PaymentService.class);</pre> 9546 9547 @author crazybob@google.com (Bob Lee) 9548 @since 2.0]]> 9549 </doc> 9550 </class> 9551 <!-- end class com.google.inject.spi.MembersInjectorLookup --> 9552 <!-- start class com.google.inject.spi.Message --> 9553 <class name="Message" extends="java.lang.Object" 9554 abstract="false" 9555 static="false" final="true" visibility="public" 9556 deprecated="not deprecated"> 9557 <implements name="java.io.Serializable"/> 9558 <implements name="com.google.inject.spi.Element"/> 9559 <constructor name="Message" type="java.util.List<java.lang.Object>, java.lang.String, java.lang.Throwable" 9560 static="false" final="false" visibility="public" 9561 deprecated="not deprecated"> 9562 <doc> 9563 <![CDATA[@since 2.0]]> 9564 </doc> 9565 </constructor> 9566 <constructor name="Message" type="java.lang.String, java.lang.Throwable" 9567 static="false" final="false" visibility="public" 9568 deprecated="not deprecated"> 9569 <doc> 9570 <![CDATA[@since 4.0]]> 9571 </doc> 9572 </constructor> 9573 <constructor name="Message" type="java.lang.Object, java.lang.String" 9574 static="false" final="false" visibility="public" 9575 deprecated="not deprecated"> 9576 </constructor> 9577 <constructor name="Message" type="java.lang.String" 9578 static="false" final="false" visibility="public" 9579 deprecated="not deprecated"> 9580 </constructor> 9581 <method name="getSource" return="java.lang.String" 9582 abstract="false" native="false" synchronized="false" 9583 static="false" final="false" visibility="public" 9584 deprecated="not deprecated"> 9585 </method> 9586 <method name="getSources" return="java.util.List<java.lang.Object>" 9587 abstract="false" native="false" synchronized="false" 9588 static="false" final="false" visibility="public" 9589 deprecated="not deprecated"> 9590 <doc> 9591 <![CDATA[@since 2.0]]> 9592 </doc> 9593 </method> 9594 <method name="getMessage" return="java.lang.String" 9595 abstract="false" native="false" synchronized="false" 9596 static="false" final="false" visibility="public" 9597 deprecated="not deprecated"> 9598 <doc> 9599 <![CDATA[Gets the error message text.]]> 9600 </doc> 9601 </method> 9602 <method name="acceptVisitor" return="T" 9603 abstract="false" native="false" synchronized="false" 9604 static="false" final="false" visibility="public" 9605 deprecated="not deprecated"> 9606 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9607 <doc> 9608 <![CDATA[@since 2.0]]> 9609 </doc> 9610 </method> 9611 <method name="getCause" return="java.lang.Throwable" 9612 abstract="false" native="false" synchronized="false" 9613 static="false" final="false" visibility="public" 9614 deprecated="not deprecated"> 9615 <doc> 9616 <![CDATA[Returns the throwable that caused this message, or {@code null} if this 9617 message was not caused by a throwable. 9618 9619 @since 2.0]]> 9620 </doc> 9621 </method> 9622 <method name="toString" return="java.lang.String" 9623 abstract="false" native="false" synchronized="false" 9624 static="false" final="false" visibility="public" 9625 deprecated="not deprecated"> 9626 </method> 9627 <method name="hashCode" return="int" 9628 abstract="false" native="false" synchronized="false" 9629 static="false" final="false" visibility="public" 9630 deprecated="not deprecated"> 9631 </method> 9632 <method name="equals" return="boolean" 9633 abstract="false" native="false" synchronized="false" 9634 static="false" final="false" visibility="public" 9635 deprecated="not deprecated"> 9636 <param name="o" type="java.lang.Object"/> 9637 </method> 9638 <method name="applyTo" 9639 abstract="false" native="false" synchronized="false" 9640 static="false" final="false" visibility="public" 9641 deprecated="not deprecated"> 9642 <param name="binder" type="com.google.inject.Binder"/> 9643 <doc> 9644 <![CDATA[@since 2.0]]> 9645 </doc> 9646 </method> 9647 <doc> 9648 <![CDATA[An error message and the context in which it occured. Messages are usually created internally by 9649 Guice and its extensions. Messages can be created explicitly in a module using {@link 9650 com.google.inject.Binder#addError(Throwable) addError()} statements: 9651 <pre> 9652 try { 9653 bindPropertiesFromFile(); 9654 } catch (IOException e) { 9655 addError(e); 9656 }</pre> 9657 9658 @author crazybob@google.com (Bob Lee)]]> 9659 </doc> 9660 </class> 9661 <!-- end class com.google.inject.spi.Message --> 9662 <!-- start class com.google.inject.spi.ModuleAnnotatedMethodScanner --> 9663 <class name="ModuleAnnotatedMethodScanner" extends="java.lang.Object" 9664 abstract="true" 9665 static="false" final="false" visibility="public" 9666 deprecated="not deprecated"> 9667 <constructor name="ModuleAnnotatedMethodScanner" 9668 static="false" final="false" visibility="public" 9669 deprecated="not deprecated"> 9670 </constructor> 9671 <method name="annotationClasses" return="java.util.Set<? extends java.lang.Class<? extends java.lang.annotation.Annotation>>" 9672 abstract="true" native="false" synchronized="false" 9673 static="false" final="false" visibility="public" 9674 deprecated="not deprecated"> 9675 <doc> 9676 <![CDATA[Returns the annotations this should scan for. Every method in the module that has one of these 9677 annotations will create a Provider binding, with the return value of the binding being what's 9678 provided and the parameters of the method being dependencies of the provider.]]> 9679 </doc> 9680 </method> 9681 <method name="prepareMethod" return="com.google.inject.Key<T>" 9682 abstract="true" native="false" synchronized="false" 9683 static="false" final="false" visibility="public" 9684 deprecated="not deprecated"> 9685 <param name="binder" type="com.google.inject.Binder"/> 9686 <param name="annotation" type="java.lang.annotation.Annotation"/> 9687 <param name="key" type="com.google.inject.Key<T>"/> 9688 <param name="injectionPoint" type="com.google.inject.spi.InjectionPoint"/> 9689 <doc> 9690 <![CDATA[Prepares a method for binding. This {@code key} parameter is the key discovered from looking at 9691 the binding annotation and return value of the method. Implementations can modify the key to 9692 instead bind to another key. For example, Multibinder may want to change 9693 {@code @SetProvides String provideFoo()} to bind into a unique Key within the multibinder 9694 instead of binding {@code String}. 9695 9696 <p>The injection point and annotation are provided in case the implementation wants to set the 9697 key based on the property of the annotation or if any additional preparation is needed for any 9698 of the dependencies. The annotation is guaranteed to be an instance of one the classes returned 9699 by {@link #annotationClasses}.]]> 9700 </doc> 9701 </method> 9702 <doc> 9703 <![CDATA[Allows extensions to scan modules for annotated methods and bind those methods 9704 as providers, similar to {@code @Provides} methods. 9705 9706 @since 4.0]]> 9707 </doc> 9708 </class> 9709 <!-- end class com.google.inject.spi.ModuleAnnotatedMethodScanner --> 9710 <!-- start class com.google.inject.spi.ModuleAnnotatedMethodScannerBinding --> 9711 <class name="ModuleAnnotatedMethodScannerBinding" extends="java.lang.Object" 9712 abstract="false" 9713 static="false" final="true" visibility="public" 9714 deprecated="not deprecated"> 9715 <implements name="com.google.inject.spi.Element"/> 9716 <constructor name="ModuleAnnotatedMethodScannerBinding" type="java.lang.Object, com.google.inject.spi.ModuleAnnotatedMethodScanner" 9717 static="false" final="false" visibility="public" 9718 deprecated="not deprecated"> 9719 </constructor> 9720 <method name="getSource" return="java.lang.Object" 9721 abstract="false" native="false" synchronized="false" 9722 static="false" final="false" visibility="public" 9723 deprecated="not deprecated"> 9724 </method> 9725 <method name="getScanner" return="com.google.inject.spi.ModuleAnnotatedMethodScanner" 9726 abstract="false" native="false" synchronized="false" 9727 static="false" final="false" visibility="public" 9728 deprecated="not deprecated"> 9729 </method> 9730 <method name="acceptVisitor" return="T" 9731 abstract="false" native="false" synchronized="false" 9732 static="false" final="false" visibility="public" 9733 deprecated="not deprecated"> 9734 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9735 </method> 9736 <method name="applyTo" 9737 abstract="false" native="false" synchronized="false" 9738 static="false" final="false" visibility="public" 9739 deprecated="not deprecated"> 9740 <param name="binder" type="com.google.inject.Binder"/> 9741 </method> 9742 <method name="toString" return="java.lang.String" 9743 abstract="false" native="false" synchronized="false" 9744 static="false" final="false" visibility="public" 9745 deprecated="not deprecated"> 9746 </method> 9747 <doc> 9748 <![CDATA[Represents a call to {@link Binder#scanModulesForAnnotatedMethods} in a module. 9749 9750 @author sameb@google.com (Sam Berlin) 9751 @since 4.0]]> 9752 </doc> 9753 </class> 9754 <!-- end class com.google.inject.spi.ModuleAnnotatedMethodScannerBinding --> 9755 <!-- start interface com.google.inject.spi.PrivateElements --> 9756 <interface name="PrivateElements" abstract="true" 9757 static="false" final="false" visibility="public" 9758 deprecated="not deprecated"> 9759 <implements name="com.google.inject.spi.Element"/> 9760 <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 9761 abstract="true" native="false" synchronized="false" 9762 static="false" final="false" visibility="public" 9763 deprecated="not deprecated"> 9764 <doc> 9765 <![CDATA[Returns the configuration information in this private environment.]]> 9766 </doc> 9767 </method> 9768 <method name="getInjector" return="com.google.inject.Injector" 9769 abstract="true" native="false" synchronized="false" 9770 static="false" final="false" visibility="public" 9771 deprecated="not deprecated"> 9772 <doc> 9773 <![CDATA[Returns the child injector that hosts these private elements, or null if the elements haven't 9774 been used to create an injector.]]> 9775 </doc> 9776 </method> 9777 <method name="getExposedKeys" return="java.util.Set<com.google.inject.Key<?>>" 9778 abstract="true" native="false" synchronized="false" 9779 static="false" final="false" visibility="public" 9780 deprecated="not deprecated"> 9781 <doc> 9782 <![CDATA[Returns the unique exposed keys for these private elements.]]> 9783 </doc> 9784 </method> 9785 <method name="getExposedSource" return="java.lang.Object" 9786 abstract="true" native="false" synchronized="false" 9787 static="false" final="false" visibility="public" 9788 deprecated="not deprecated"> 9789 <param name="key" type="com.google.inject.Key<?>"/> 9790 <doc> 9791 <![CDATA[Returns an arbitrary object containing information about the "place" where this key was 9792 exposed. Used by Guice in the production of descriptive error messages. 9793 9794 <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good 9795 example. Tools should simply call {@code toString()} on the source object if the type is 9796 unfamiliar. 9797 9798 @param key one of the keys exposed by this module.]]> 9799 </doc> 9800 </method> 9801 <doc> 9802 <![CDATA[A private collection of elements that are hidden from the enclosing injector or module by 9803 default. See {@link com.google.inject.PrivateModule PrivateModule} for details. 9804 9805 @author jessewilson@google.com (Jesse Wilson) 9806 @since 2.0]]> 9807 </doc> 9808 </interface> 9809 <!-- end interface com.google.inject.spi.PrivateElements --> 9810 <!-- start interface com.google.inject.spi.ProviderBinding --> 9811 <interface name="ProviderBinding" abstract="true" 9812 static="false" final="false" visibility="public" 9813 deprecated="not deprecated"> 9814 <implements name="com.google.inject.Binding<T>"/> 9815 <method name="getProvidedKey" return="com.google.inject.Key<?>" 9816 abstract="true" native="false" synchronized="false" 9817 static="false" final="false" visibility="public" 9818 deprecated="not deprecated"> 9819 <doc> 9820 <![CDATA[Returns the key whose binding is used to {@link Provider#get provide instances}. That binding 9821 can be retrieved from an injector using {@link com.google.inject.Injector#getBinding(Key) 9822 Injector.getBinding(providedKey)}]]> 9823 </doc> 9824 </method> 9825 <doc> 9826 <![CDATA[A binding to a {@link Provider} that delegates to the binding for the provided type. This binding 9827 is used whenever a {@code Provider<T>} is injected (as opposed to injecting {@code T} directly). 9828 9829 @author jessewilson@google.com (Jesse Wilson) 9830 @since 2.0]]> 9831 </doc> 9832 </interface> 9833 <!-- end interface com.google.inject.spi.ProviderBinding --> 9834 <!-- start interface com.google.inject.spi.ProviderInstanceBinding --> 9835 <interface name="ProviderInstanceBinding" abstract="true" 9836 static="false" final="false" visibility="public" 9837 deprecated="not deprecated"> 9838 <implements name="com.google.inject.Binding<T>"/> 9839 <implements name="com.google.inject.spi.HasDependencies"/> 9840 <method name="getProviderInstance" return="com.google.inject.Provider<? extends T>" 9841 abstract="true" native="false" synchronized="false" 9842 static="false" final="false" visibility="public" 9843 deprecated="Use {@link #getUserSuppliedProvider} instead."> 9844 <doc> 9845 <![CDATA[If the user supplied a JSR330 binding, then this will wrap that one. To always return the 9846 user-supplied provider, use {@link #getUserSuppliedProvider}. 9847 9848 @deprecated Use {@link #getUserSuppliedProvider} instead.]]> 9849 </doc> 9850 </method> 9851 <method name="getUserSuppliedProvider" return="javax.inject.Provider<? extends T>" 9852 abstract="true" native="false" synchronized="false" 9853 static="false" final="false" visibility="public" 9854 deprecated="not deprecated"> 9855 <doc> 9856 <![CDATA[Returns the user-supplied, unscoped provider. 9857 @since 4.0]]> 9858 </doc> 9859 </method> 9860 <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9861 abstract="true" native="false" synchronized="false" 9862 static="false" final="false" visibility="public" 9863 deprecated="not deprecated"> 9864 <doc> 9865 <![CDATA[Returns the field and method injection points of the provider, injected at injector-creation 9866 time only. 9867 9868 @return a possibly empty set]]> 9869 </doc> 9870 </method> 9871 <doc> 9872 <![CDATA[A binding to a provider instance. The provider's {@code get} method is invoked to resolve 9873 injections. 9874 9875 @author jessewilson@google.com (Jesse Wilson) 9876 @since 2.0]]> 9877 </doc> 9878 </interface> 9879 <!-- end interface com.google.inject.spi.ProviderInstanceBinding --> 9880 <!-- start interface com.google.inject.spi.ProviderKeyBinding --> 9881 <interface name="ProviderKeyBinding" abstract="true" 9882 static="false" final="false" visibility="public" 9883 deprecated="not deprecated"> 9884 <implements name="com.google.inject.Binding<T>"/> 9885 <method name="getProviderKey" return="com.google.inject.Key<? extends javax.inject.Provider<? extends T>>" 9886 abstract="true" native="false" synchronized="false" 9887 static="false" final="false" visibility="public" 9888 deprecated="not deprecated"> 9889 <doc> 9890 <![CDATA[Returns the key used to resolve the provider's binding. That binding can be retrieved from an 9891 injector using {@link com.google.inject.Injector#getBinding(Key) 9892 Injector.getBinding(providerKey)}]]> 9893 </doc> 9894 </method> 9895 <doc> 9896 <![CDATA[A binding to a provider key. To resolve injections, the provider key is first resolved, then that 9897 provider's {@code get} method is invoked. 9898 9899 @author jessewilson@google.com (Jesse Wilson) 9900 @since 2.0]]> 9901 </doc> 9902 </interface> 9903 <!-- end interface com.google.inject.spi.ProviderKeyBinding --> 9904 <!-- start class com.google.inject.spi.ProviderLookup --> 9905 <class name="ProviderLookup" extends="java.lang.Object" 9906 abstract="false" 9907 static="false" final="true" visibility="public" 9908 deprecated="not deprecated"> 9909 <implements name="com.google.inject.spi.Element"/> 9910 <constructor name="ProviderLookup" type="java.lang.Object, com.google.inject.Key<T>" 9911 static="false" final="false" visibility="public" 9912 deprecated="not deprecated"> 9913 </constructor> 9914 <constructor name="ProviderLookup" type="java.lang.Object, com.google.inject.spi.Dependency<T>" 9915 static="false" final="false" visibility="public" 9916 deprecated="not deprecated"> 9917 <doc> 9918 <![CDATA[@since 4.0]]> 9919 </doc> 9920 </constructor> 9921 <method name="getSource" return="java.lang.Object" 9922 abstract="false" native="false" synchronized="false" 9923 static="false" final="false" visibility="public" 9924 deprecated="not deprecated"> 9925 </method> 9926 <method name="getKey" return="com.google.inject.Key<T>" 9927 abstract="false" native="false" synchronized="false" 9928 static="false" final="false" visibility="public" 9929 deprecated="not deprecated"> 9930 </method> 9931 <method name="getDependency" return="com.google.inject.spi.Dependency<T>" 9932 abstract="false" native="false" synchronized="false" 9933 static="false" final="false" visibility="public" 9934 deprecated="not deprecated"> 9935 <doc> 9936 <![CDATA[@since 4.0]]> 9937 </doc> 9938 </method> 9939 <method name="acceptVisitor" return="T" 9940 abstract="false" native="false" synchronized="false" 9941 static="false" final="false" visibility="public" 9942 deprecated="not deprecated"> 9943 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9944 </method> 9945 <method name="initializeDelegate" 9946 abstract="false" native="false" synchronized="false" 9947 static="false" final="false" visibility="public" 9948 deprecated="not deprecated"> 9949 <param name="delegate" type="com.google.inject.Provider<T>"/> 9950 <doc> 9951 <![CDATA[Sets the actual provider. 9952 9953 @throws IllegalStateException if the delegate is already set]]> 9954 </doc> 9955 </method> 9956 <method name="applyTo" 9957 abstract="false" native="false" synchronized="false" 9958 static="false" final="false" visibility="public" 9959 deprecated="not deprecated"> 9960 <param name="binder" type="com.google.inject.Binder"/> 9961 </method> 9962 <method name="getDelegate" return="com.google.inject.Provider<T>" 9963 abstract="false" native="false" synchronized="false" 9964 static="false" final="false" visibility="public" 9965 deprecated="not deprecated"> 9966 <doc> 9967 <![CDATA[Returns the delegate provider, or {@code null} if it has not yet been initialized. The delegate 9968 will be initialized when this element is processed, or otherwise used to create an injector.]]> 9969 </doc> 9970 </method> 9971 <method name="getProvider" return="com.google.inject.Provider<T>" 9972 abstract="false" native="false" synchronized="false" 9973 static="false" final="false" visibility="public" 9974 deprecated="not deprecated"> 9975 <doc> 9976 <![CDATA[Returns the looked up provider. The result is not valid until this lookup has been initialized, 9977 which usually happens when the injector is created. The provider will throw an {@code 9978 IllegalStateException} if you try to use it beforehand.]]> 9979 </doc> 9980 </method> 9981 <doc> 9982 <![CDATA[A lookup of the provider for a type. Lookups are created explicitly in a module using 9983 {@link com.google.inject.Binder#getProvider(Class) getProvider()} statements: 9984 <pre> 9985 Provider<PaymentService> paymentServiceProvider 9986 = getProvider(PaymentService.class);</pre> 9987 9988 @author jessewilson@google.com (Jesse Wilson) 9989 @since 2.0]]> 9990 </doc> 9991 </class> 9992 <!-- end class com.google.inject.spi.ProviderLookup --> 9993 <!-- start interface com.google.inject.spi.ProviderWithDependencies --> 9994 <interface name="ProviderWithDependencies" abstract="true" 9995 static="false" final="false" visibility="public" 9996 deprecated="not deprecated"> 9997 <implements name="com.google.inject.Provider<T>"/> 9998 <implements name="com.google.inject.spi.HasDependencies"/> 9999 <doc> 10000 <![CDATA[A provider with dependencies on other injected types. If a {@link Provider} has dependencies that 10001 aren't specified in injections, this interface should be used to expose all dependencies. 10002 10003 @since 2.0]]> 10004 </doc> 10005 </interface> 10006 <!-- end interface com.google.inject.spi.ProviderWithDependencies --> 10007 <!-- start interface com.google.inject.spi.ProviderWithExtensionVisitor --> 10008 <interface name="ProviderWithExtensionVisitor" abstract="true" 10009 static="false" final="false" visibility="public" 10010 deprecated="not deprecated"> 10011 <implements name="com.google.inject.Provider<T>"/> 10012 <method name="acceptExtensionVisitor" return="V" 10013 abstract="true" native="false" synchronized="false" 10014 static="false" final="false" visibility="public" 10015 deprecated="not deprecated"> 10016 <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor<B, V>"/> 10017 <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding<? extends B>"/> 10018 <doc> 10019 <![CDATA[Instructs the extension determine if the visitor is an instance of a custom 10020 extension visitor, and if so, visit it using that method. If the visitor is 10021 not an instance of the custom extension visitor, this method <b>MUST</b> 10022 call visitor.visit(binding). 10023 <p> 10024 Due to issues with generics, the type parameters of this method do not 10025 relate to the type of the provider. In practice, the 'B' type will always 10026 be a supertype of 'T'.]]> 10027 </doc> 10028 </method> 10029 <doc> 10030 <![CDATA[A Provider that is part of an extension which supports a custom 10031 BindingTargetVisitor. 10032 <p> 10033 When an extension binds a provider instance, the provider can implement this 10034 interface to allow users using the 10035 {@link Binding#acceptTargetVisitor(BindingTargetVisitor)} method to visit a 10036 custom visitor designed for that extension. A typical implementation within 10037 the extension would look like 10038 <pre> 10039 <V, B> V acceptExtensionVisitor(BindingTargetVisitor<B, V> visitor, ProviderInstanceBinding<? extends B> binding) { 10040 if(visitor instanceof MyCustomExtensionVisitor) { 10041 return ((MyCustomExtensionVisitor<B, V>)visitor).visitCustomExtension(customProperties, binding); 10042 } else { 10043 return visitor.visit(binding); 10044 } 10045 }</pre> 10046 'MyCustomExtensionVisitor' in the example above would be an interface the 10047 extension provides that users can implement in order to be notified of custom 10048 extension information. These visitor interfaces must extend from 10049 BindingTargetVisitor. 10050 10051 @since 3.0 10052 @author sameb@google.com (Sam Berlin)]]> 10053 </doc> 10054 </interface> 10055 <!-- end interface com.google.inject.spi.ProviderWithExtensionVisitor --> 10056 <!-- start interface com.google.inject.spi.ProvidesMethodBinding --> 10057 <interface name="ProvidesMethodBinding" abstract="true" 10058 static="false" final="false" visibility="public" 10059 deprecated="not deprecated"> 10060 <implements name="com.google.inject.spi.HasDependencies"/> 10061 <method name="getMethod" return="java.lang.reflect.Method" 10062 abstract="true" native="false" synchronized="false" 10063 static="false" final="false" visibility="public" 10064 deprecated="not deprecated"> 10065 <doc> 10066 <![CDATA[Returns the method this binding uses.]]> 10067 </doc> 10068 </method> 10069 <method name="getEnclosingInstance" return="java.lang.Object" 10070 abstract="true" native="false" synchronized="false" 10071 static="false" final="false" visibility="public" 10072 deprecated="not deprecated"> 10073 <doc> 10074 <![CDATA[Returns the instance of the object the method is defined in.]]> 10075 </doc> 10076 </method> 10077 <method name="getKey" return="com.google.inject.Key<T>" 10078 abstract="true" native="false" synchronized="false" 10079 static="false" final="false" visibility="public" 10080 deprecated="not deprecated"> 10081 <doc> 10082 <![CDATA[Returns the key of the binding.]]> 10083 </doc> 10084 </method> 10085 <method name="getAnnotation" return="java.lang.annotation.Annotation" 10086 abstract="true" native="false" synchronized="false" 10087 static="false" final="false" visibility="public" 10088 deprecated="not deprecated"> 10089 <doc> 10090 <![CDATA[Returns the annotation that caused this binding to be created. For {@code @Provides} methods, 10091 this is an instance of the {@code @Provides} annotation. For bindings from 10092 {@link ModuleAnnotatedMethodScanner}, this is the annotation that caused the scanner to produce 10093 the binding.]]> 10094 </doc> 10095 </method> 10096 <doc> 10097 <![CDATA[An {@literal @}{@link Provides} binding or binding produced by a 10098 {@link ModuleAnnotatedMethodScanner}. 10099 10100 @since 4.0 10101 @author sameb@google.com (Sam Berlin)]]> 10102 </doc> 10103 </interface> 10104 <!-- end interface com.google.inject.spi.ProvidesMethodBinding --> 10105 <!-- start interface com.google.inject.spi.ProvidesMethodTargetVisitor --> 10106 <interface name="ProvidesMethodTargetVisitor" abstract="true" 10107 static="false" final="false" visibility="public" 10108 deprecated="not deprecated"> 10109 <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 10110 <method name="visit" return="V" 10111 abstract="true" native="false" synchronized="false" 10112 static="false" final="false" visibility="public" 10113 deprecated="not deprecated"> 10114 <param name="providesMethodBinding" type="com.google.inject.spi.ProvidesMethodBinding<? extends T>"/> 10115 <doc> 10116 <![CDATA[Visits an {@link ProvidesMethodBinding} created with an {@literal @}{@link Provides} method.]]> 10117 </doc> 10118 </method> 10119 <doc> 10120 <![CDATA[A visitor for the {@literal @}{@link Provides} bindings. 10121 <p> 10122 If your {@link BindingTargetVisitor} implements this interface, bindings created by using 10123 {@code @Provides} will be visited through this interface. 10124 10125 @since 4.0 10126 @author sameb@google.com (Sam Berlin)]]> 10127 </doc> 10128 </interface> 10129 <!-- end interface com.google.inject.spi.ProvidesMethodTargetVisitor --> 10130 <!-- start interface com.google.inject.spi.ProvisionListener --> 10131 <interface name="ProvisionListener" abstract="true" 10132 static="false" final="false" visibility="public" 10133 deprecated="not deprecated"> 10134 <method name="onProvision" 10135 abstract="true" native="false" synchronized="false" 10136 static="false" final="false" visibility="public" 10137 deprecated="not deprecated"> 10138 <param name="provision" type="com.google.inject.spi.ProvisionListener.ProvisionInvocation<T>"/> 10139 <doc> 10140 <![CDATA[Invoked by Guice when an object requires provisioning. Provisioning occurs 10141 when Guice locates and injects the dependencies for a binding. For types 10142 bound to a Provider, provisioning encapsulates the {@link Provider#get} 10143 method. For toInstance or constant bindings, provisioning encapsulates 10144 the injecting of {@literal @}{@code Inject}ed fields or methods. 10145 For other types, provisioning encapsulates the construction of the 10146 object. If a type is bound within a {@link Scope}, provisioning depends on 10147 the scope. Types bound in Singleton scope will only be provisioned once. 10148 Types bound in no scope will be provisioned every time they are injected. 10149 Other scopes define their own behavior for provisioning. 10150 <p> 10151 To perform the provision, call {@link ProvisionInvocation#provision()}. 10152 If you do not explicitly call provision, it will be automatically done after 10153 this method returns. It is an error to call provision more than once.]]> 10154 </doc> 10155 </method> 10156 <doc> 10157 <![CDATA[Listens for provisioning of objects. Useful for gathering timing information 10158 about provisioning, post-provision initialization, and more. 10159 10160 @author sameb@google.com (Sam Berlin) 10161 @since 4.0]]> 10162 </doc> 10163 </interface> 10164 <!-- end interface com.google.inject.spi.ProvisionListener --> 10165 <!-- start class com.google.inject.spi.ProvisionListener.ProvisionInvocation --> 10166 <class name="ProvisionListener.ProvisionInvocation" extends="java.lang.Object" 10167 abstract="true" 10168 static="true" final="false" visibility="public" 10169 deprecated="not deprecated"> 10170 <constructor name="ProvisionInvocation" 10171 static="false" final="false" visibility="public" 10172 deprecated="not deprecated"> 10173 </constructor> 10174 <method name="getBinding" return="com.google.inject.Binding<T>" 10175 abstract="true" native="false" synchronized="false" 10176 static="false" final="false" visibility="public" 10177 deprecated="not deprecated"> 10178 <doc> 10179 <![CDATA[Returns the Binding this is provisioning. 10180 <p> 10181 You must not call {@link Provider#get()} on the provider returned by 10182 {@link Binding#getProvider}, otherwise you will get confusing error messages.]]> 10183 </doc> 10184 </method> 10185 <method name="provision" return="T" 10186 abstract="true" native="false" synchronized="false" 10187 static="false" final="false" visibility="public" 10188 deprecated="not deprecated"> 10189 <doc> 10190 <![CDATA[Performs the provision, returning the object provisioned.]]> 10191 </doc> 10192 </method> 10193 <method name="getDependencyChain" return="java.util.List<com.google.inject.spi.DependencyAndSource>" 10194 abstract="true" native="false" synchronized="false" 10195 static="false" final="false" visibility="public" 10196 deprecated="not deprecated"> 10197 <doc> 10198 <![CDATA[Returns the dependency chain that led to this object being provisioned.]]> 10199 </doc> 10200 </method> 10201 <doc> 10202 <![CDATA[Encapsulates a single act of provisioning. 10203 10204 @since 4.0]]> 10205 </doc> 10206 </class> 10207 <!-- end class com.google.inject.spi.ProvisionListener.ProvisionInvocation --> 10208 <!-- start class com.google.inject.spi.ProvisionListenerBinding --> 10209 <class name="ProvisionListenerBinding" extends="java.lang.Object" 10210 abstract="false" 10211 static="false" final="true" visibility="public" 10212 deprecated="not deprecated"> 10213 <implements name="com.google.inject.spi.Element"/> 10214 <method name="getListeners" return="java.util.List<com.google.inject.spi.ProvisionListener>" 10215 abstract="false" native="false" synchronized="false" 10216 static="false" final="false" visibility="public" 10217 deprecated="not deprecated"> 10218 <doc> 10219 <![CDATA[Returns the registered listeners.]]> 10220 </doc> 10221 </method> 10222 <method name="getBindingMatcher" return="com.google.inject.matcher.Matcher<? super com.google.inject.Binding<?>>" 10223 abstract="false" native="false" synchronized="false" 10224 static="false" final="false" visibility="public" 10225 deprecated="not deprecated"> 10226 <doc> 10227 <![CDATA[Returns the binding matcher which chooses which bindings the listener should be notified of.]]> 10228 </doc> 10229 </method> 10230 <method name="getSource" return="java.lang.Object" 10231 abstract="false" native="false" synchronized="false" 10232 static="false" final="false" visibility="public" 10233 deprecated="not deprecated"> 10234 </method> 10235 <method name="acceptVisitor" return="R" 10236 abstract="false" native="false" synchronized="false" 10237 static="false" final="false" visibility="public" 10238 deprecated="not deprecated"> 10239 <param name="visitor" type="com.google.inject.spi.ElementVisitor<R>"/> 10240 </method> 10241 <method name="applyTo" 10242 abstract="false" native="false" synchronized="false" 10243 static="false" final="false" visibility="public" 10244 deprecated="not deprecated"> 10245 <param name="binder" type="com.google.inject.Binder"/> 10246 </method> 10247 <doc> 10248 <![CDATA[Binds keys (picked using a Matcher) to a provision listener. Listeners are created explicitly in 10249 a module using {@link Binder#bindListener(Matcher, ProvisionListener...)} statements: 10250 10251 @author sameb@google.com (Sam Berlin) 10252 @since 4.0]]> 10253 </doc> 10254 </class> 10255 <!-- end class com.google.inject.spi.ProvisionListenerBinding --> 10256 <!-- start class com.google.inject.spi.RequireAtInjectOnConstructorsOption --> 10257 <class name="RequireAtInjectOnConstructorsOption" extends="java.lang.Object" 10258 abstract="false" 10259 static="false" final="true" visibility="public" 10260 deprecated="not deprecated"> 10261 <implements name="com.google.inject.spi.Element"/> 10262 <method name="getSource" return="java.lang.Object" 10263 abstract="false" native="false" synchronized="false" 10264 static="false" final="false" visibility="public" 10265 deprecated="not deprecated"> 10266 </method> 10267 <method name="applyTo" 10268 abstract="false" native="false" synchronized="false" 10269 static="false" final="false" visibility="public" 10270 deprecated="not deprecated"> 10271 <param name="binder" type="com.google.inject.Binder"/> 10272 </method> 10273 <method name="acceptVisitor" return="T" 10274 abstract="false" native="false" synchronized="false" 10275 static="false" final="false" visibility="public" 10276 deprecated="not deprecated"> 10277 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10278 </method> 10279 <doc> 10280 <![CDATA[A request to require explicit {@literal @}{@link Inject} annotations on constructors. 10281 10282 @author sameb@google.com (Sam Berlin) 10283 @since 4.0]]> 10284 </doc> 10285 </class> 10286 <!-- end class com.google.inject.spi.RequireAtInjectOnConstructorsOption --> 10287 <!-- start class com.google.inject.spi.RequireExactBindingAnnotationsOption --> 10288 <class name="RequireExactBindingAnnotationsOption" extends="java.lang.Object" 10289 abstract="false" 10290 static="false" final="true" visibility="public" 10291 deprecated="not deprecated"> 10292 <implements name="com.google.inject.spi.Element"/> 10293 <method name="getSource" return="java.lang.Object" 10294 abstract="false" native="false" synchronized="false" 10295 static="false" final="false" visibility="public" 10296 deprecated="not deprecated"> 10297 </method> 10298 <method name="applyTo" 10299 abstract="false" native="false" synchronized="false" 10300 static="false" final="false" visibility="public" 10301 deprecated="not deprecated"> 10302 <param name="binder" type="com.google.inject.Binder"/> 10303 </method> 10304 <method name="acceptVisitor" return="T" 10305 abstract="false" native="false" synchronized="false" 10306 static="false" final="false" visibility="public" 10307 deprecated="not deprecated"> 10308 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10309 </method> 10310 <doc> 10311 <![CDATA[A request to require exact binding annotations. 10312 10313 @author sameb@google.com (Sam Berlin) 10314 @since 4.0]]> 10315 </doc> 10316 </class> 10317 <!-- end class com.google.inject.spi.RequireExactBindingAnnotationsOption --> 10318 <!-- start class com.google.inject.spi.RequireExplicitBindingsOption --> 10319 <class name="RequireExplicitBindingsOption" extends="java.lang.Object" 10320 abstract="false" 10321 static="false" final="true" visibility="public" 10322 deprecated="not deprecated"> 10323 <implements name="com.google.inject.spi.Element"/> 10324 <method name="getSource" return="java.lang.Object" 10325 abstract="false" native="false" synchronized="false" 10326 static="false" final="false" visibility="public" 10327 deprecated="not deprecated"> 10328 </method> 10329 <method name="applyTo" 10330 abstract="false" native="false" synchronized="false" 10331 static="false" final="false" visibility="public" 10332 deprecated="not deprecated"> 10333 <param name="binder" type="com.google.inject.Binder"/> 10334 </method> 10335 <method name="acceptVisitor" return="T" 10336 abstract="false" native="false" synchronized="false" 10337 static="false" final="false" visibility="public" 10338 deprecated="not deprecated"> 10339 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10340 </method> 10341 <doc> 10342 <![CDATA[A request to require explicit bindings. 10343 10344 @author sameb@google.com (Sam Berlin) 10345 @since 3.0]]> 10346 </doc> 10347 </class> 10348 <!-- end class com.google.inject.spi.RequireExplicitBindingsOption --> 10349 <!-- start class com.google.inject.spi.ScopeBinding --> 10350 <class name="ScopeBinding" extends="java.lang.Object" 10351 abstract="false" 10352 static="false" final="true" visibility="public" 10353 deprecated="not deprecated"> 10354 <implements name="com.google.inject.spi.Element"/> 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="getAnnotationType" return="java.lang.Class<? extends java.lang.annotation.Annotation>" 10361 abstract="false" native="false" synchronized="false" 10362 static="false" final="false" visibility="public" 10363 deprecated="not deprecated"> 10364 </method> 10365 <method name="getScope" return="com.google.inject.Scope" 10366 abstract="false" native="false" synchronized="false" 10367 static="false" final="false" visibility="public" 10368 deprecated="not deprecated"> 10369 </method> 10370 <method name="acceptVisitor" return="T" 10371 abstract="false" native="false" synchronized="false" 10372 static="false" final="false" visibility="public" 10373 deprecated="not deprecated"> 10374 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10375 </method> 10376 <method name="applyTo" 10377 abstract="false" native="false" synchronized="false" 10378 static="false" final="false" visibility="public" 10379 deprecated="not deprecated"> 10380 <param name="binder" type="com.google.inject.Binder"/> 10381 </method> 10382 <doc> 10383 <![CDATA[Registration of a scope annotation with the scope that implements it. Instances are created 10384 explicitly in a module using {@link com.google.inject.Binder#bindScope(Class, Scope) bindScope()} 10385 statements: 10386 <pre> 10387 Scope recordScope = new RecordScope(); 10388 bindScope(RecordScoped.class, new RecordScope());</pre> 10389 10390 @author jessewilson@google.com (Jesse Wilson) 10391 @since 2.0]]> 10392 </doc> 10393 </class> 10394 <!-- end class com.google.inject.spi.ScopeBinding --> 10395 <!-- start class com.google.inject.spi.StaticInjectionRequest --> 10396 <class name="StaticInjectionRequest" extends="java.lang.Object" 10397 abstract="false" 10398 static="false" final="true" visibility="public" 10399 deprecated="not deprecated"> 10400 <implements name="com.google.inject.spi.Element"/> 10401 <method name="getSource" return="java.lang.Object" 10402 abstract="false" native="false" synchronized="false" 10403 static="false" final="false" visibility="public" 10404 deprecated="not deprecated"> 10405 </method> 10406 <method name="getType" return="java.lang.Class<?>" 10407 abstract="false" native="false" synchronized="false" 10408 static="false" final="false" visibility="public" 10409 deprecated="not deprecated"> 10410 </method> 10411 <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 10412 abstract="false" native="false" synchronized="false" 10413 static="false" final="false" visibility="public" 10414 deprecated="not deprecated"> 10415 <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/> 10416 <doc> 10417 <![CDATA[Returns the static methods and fields of {@code type} that will be injected to fulfill this 10418 request. 10419 10420 @return a possibly empty set of injection points. The set has a specified iteration order. All 10421 fields are returned and then all methods. Within the fields, supertype fields are returned 10422 before subtype fields. Similarly, supertype methods are returned before subtype methods. 10423 @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 10424 a field with multiple binding annotations. The exception's {@link 10425 ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 10426 of the valid injection points.]]> 10427 </doc> 10428 </method> 10429 <method name="applyTo" 10430 abstract="false" native="false" synchronized="false" 10431 static="false" final="false" visibility="public" 10432 deprecated="not deprecated"> 10433 <param name="binder" type="com.google.inject.Binder"/> 10434 </method> 10435 <method name="acceptVisitor" return="T" 10436 abstract="false" native="false" synchronized="false" 10437 static="false" final="false" visibility="public" 10438 deprecated="not deprecated"> 10439 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10440 </method> 10441 <doc> 10442 <![CDATA[A request to inject the static fields and methods of a type. Requests are created 10443 explicitly in a module using {@link com.google.inject.Binder#requestStaticInjection(Class[]) 10444 requestStaticInjection()} statements: 10445 <pre> 10446 requestStaticInjection(MyLegacyService.class);</pre> 10447 10448 @author jessewilson@google.com (Jesse Wilson) 10449 @since 2.0]]> 10450 </doc> 10451 </class> 10452 <!-- end class com.google.inject.spi.StaticInjectionRequest --> 10453 <!-- start class com.google.inject.spi.Toolable --> 10454 <class name="Toolable" abstract="true" 10455 static="false" final="false" visibility="public" 10456 deprecated="not deprecated"> 10457 <implements name="java.lang.annotation.Annotation"/> 10458 <doc> 10459 <![CDATA[Instructs an {@link Injector} running in {@link Stage#TOOL} that a method should be injected. 10460 This is typically useful for for extensions to Guice that perform additional validation in an 10461 injected method or field. This only applies to objects that are already constructed when 10462 bindings are created (ie., something bound using {@link 10463 com.google.inject.binder.LinkedBindingBuilder#toProvider toProvider}, {@link 10464 com.google.inject.binder.LinkedBindingBuilder#toInstance toInstance}, or {@link 10465 com.google.inject.Binder#requestInjection requestInjection}. 10466 10467 @author sberlin@gmail.com (Sam Berlin) 10468 @since 3.0]]> 10469 </doc> 10470 </class> 10471 <!-- end class com.google.inject.spi.Toolable --> 10472 <!-- start interface com.google.inject.spi.TypeConverter --> 10473 <interface name="TypeConverter" abstract="true" 10474 static="false" final="false" visibility="public" 10475 deprecated="not deprecated"> 10476 <method name="convert" return="java.lang.Object" 10477 abstract="true" native="false" synchronized="false" 10478 static="false" final="false" visibility="public" 10479 deprecated="not deprecated"> 10480 <param name="value" type="java.lang.String"/> 10481 <param name="toType" type="com.google.inject.TypeLiteral<?>"/> 10482 <doc> 10483 <![CDATA[Converts a string value. Throws an exception if a conversion error occurs.]]> 10484 </doc> 10485 </method> 10486 <doc> 10487 <![CDATA[Converts constant string values to a different type. 10488 10489 @author crazybob@google.com (Bob Lee) 10490 @since 2.0]]> 10491 </doc> 10492 </interface> 10493 <!-- end interface com.google.inject.spi.TypeConverter --> 10494 <!-- start class com.google.inject.spi.TypeConverterBinding --> 10495 <class name="TypeConverterBinding" extends="java.lang.Object" 10496 abstract="false" 10497 static="false" final="true" visibility="public" 10498 deprecated="not deprecated"> 10499 <implements name="com.google.inject.spi.Element"/> 10500 <constructor name="TypeConverterBinding" type="java.lang.Object, com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>, com.google.inject.spi.TypeConverter" 10501 static="false" final="false" visibility="public" 10502 deprecated="not deprecated"> 10503 <doc> 10504 <![CDATA[@since 3.0]]> 10505 </doc> 10506 </constructor> 10507 <method name="getSource" return="java.lang.Object" 10508 abstract="false" native="false" synchronized="false" 10509 static="false" final="false" visibility="public" 10510 deprecated="not deprecated"> 10511 </method> 10512 <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>" 10513 abstract="false" native="false" synchronized="false" 10514 static="false" final="false" visibility="public" 10515 deprecated="not deprecated"> 10516 </method> 10517 <method name="getTypeConverter" return="com.google.inject.spi.TypeConverter" 10518 abstract="false" native="false" synchronized="false" 10519 static="false" final="false" visibility="public" 10520 deprecated="not deprecated"> 10521 </method> 10522 <method name="acceptVisitor" return="T" 10523 abstract="false" native="false" synchronized="false" 10524 static="false" final="false" visibility="public" 10525 deprecated="not deprecated"> 10526 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10527 </method> 10528 <method name="applyTo" 10529 abstract="false" native="false" synchronized="false" 10530 static="false" final="false" visibility="public" 10531 deprecated="not deprecated"> 10532 <param name="binder" type="com.google.inject.Binder"/> 10533 </method> 10534 <method name="toString" return="java.lang.String" 10535 abstract="false" native="false" synchronized="false" 10536 static="false" final="false" visibility="public" 10537 deprecated="not deprecated"> 10538 </method> 10539 <doc> 10540 <![CDATA[Registration of type converters for matching target types. Instances are created 10541 explicitly in a module using {@link com.google.inject.Binder#convertToTypes(Matcher, 10542 TypeConverter) convertToTypes()} statements: 10543 <pre> 10544 convertToTypes(Matchers.only(TypeLiteral.get(DateTime.class)), new DateTimeConverter());</pre> 10545 10546 @author jessewilson@google.com (Jesse Wilson) 10547 @since 2.0]]> 10548 </doc> 10549 </class> 10550 <!-- end class com.google.inject.spi.TypeConverterBinding --> 10551 <!-- start interface com.google.inject.spi.TypeEncounter --> 10552 <interface name="TypeEncounter" abstract="true" 10553 static="false" final="false" visibility="public" 10554 deprecated="not deprecated"> 10555 <method name="addError" 10556 abstract="true" native="false" synchronized="false" 10557 static="false" final="false" visibility="public" 10558 deprecated="not deprecated"> 10559 <param name="message" type="java.lang.String"/> 10560 <param name="arguments" type="java.lang.Object[]"/> 10561 <doc> 10562 <![CDATA[Records an error message for type {@code I} which will be presented to the user at a later 10563 time. Unlike throwing an exception, this enable us to continue configuring the Injector and 10564 discover more errors. Uses {@link String#format(String, Object[])} to insert the arguments 10565 into the message.]]> 10566 </doc> 10567 </method> 10568 <method name="addError" 10569 abstract="true" native="false" synchronized="false" 10570 static="false" final="false" visibility="public" 10571 deprecated="not deprecated"> 10572 <param name="t" type="java.lang.Throwable"/> 10573 <doc> 10574 <![CDATA[Records an exception for type {@code I}, the full details of which will be logged, and the 10575 message of which will be presented to the user at a later time. If your type listener calls 10576 something that you worry may fail, you should catch the exception and pass it to this method.]]> 10577 </doc> 10578 </method> 10579 <method name="addError" 10580 abstract="true" native="false" synchronized="false" 10581 static="false" final="false" visibility="public" 10582 deprecated="not deprecated"> 10583 <param name="message" type="com.google.inject.spi.Message"/> 10584 <doc> 10585 <![CDATA[Records an error message to be presented to the user at a later time.]]> 10586 </doc> 10587 </method> 10588 <method name="getProvider" return="com.google.inject.Provider<T>" 10589 abstract="true" native="false" synchronized="false" 10590 static="false" final="false" visibility="public" 10591 deprecated="not deprecated"> 10592 <param name="key" type="com.google.inject.Key<T>"/> 10593 <doc> 10594 <![CDATA[Returns the provider used to obtain instances for the given injection key. The returned 10595 provider will not be valid until the injector has been created. The provider will throw an 10596 {@code IllegalStateException} if you try to use it beforehand.]]> 10597 </doc> 10598 </method> 10599 <method name="getProvider" return="com.google.inject.Provider<T>" 10600 abstract="true" native="false" synchronized="false" 10601 static="false" final="false" visibility="public" 10602 deprecated="not deprecated"> 10603 <param name="type" type="java.lang.Class<T>"/> 10604 <doc> 10605 <![CDATA[Returns the provider used to obtain instances for the given injection type. The returned 10606 provider will not be valid until the injector has been created. The provider will throw an 10607 {@code IllegalStateException} if you try to use it beforehand.]]> 10608 </doc> 10609 </method> 10610 <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 10611 abstract="true" native="false" synchronized="false" 10612 static="false" final="false" visibility="public" 10613 deprecated="not deprecated"> 10614 <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 10615 <doc> 10616 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 10617 of the given type {@code T}. The returned members injector will not be valid until the main 10618 injector has been created. The members injector will throw an {@code IllegalStateException} 10619 if you try to use it beforehand. 10620 10621 @param typeLiteral type to get members injector for]]> 10622 </doc> 10623 </method> 10624 <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 10625 abstract="true" native="false" synchronized="false" 10626 static="false" final="false" visibility="public" 10627 deprecated="not deprecated"> 10628 <param name="type" type="java.lang.Class<T>"/> 10629 <doc> 10630 <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 10631 of the given type {@code T}. The returned members injector will not be valid until the main 10632 injector has been created. The members injector will throw an {@code IllegalStateException} 10633 if you try to use it beforehand. 10634 10635 @param type type to get members injector for]]> 10636 </doc> 10637 </method> 10638 <method name="register" 10639 abstract="true" native="false" synchronized="false" 10640 static="false" final="false" visibility="public" 10641 deprecated="not deprecated"> 10642 <param name="membersInjector" type="com.google.inject.MembersInjector<? super I>"/> 10643 <doc> 10644 <![CDATA[Registers a members injector for type {@code I}. Guice will use the members injector after its 10645 performed its own injections on an instance of {@code I}.]]> 10646 </doc> 10647 </method> 10648 <method name="register" 10649 abstract="true" native="false" synchronized="false" 10650 static="false" final="false" visibility="public" 10651 deprecated="not deprecated"> 10652 <param name="listener" type="com.google.inject.spi.InjectionListener<? super I>"/> 10653 <doc> 10654 <![CDATA[Registers an injection listener for type {@code I}. Guice will notify the listener after all 10655 injections have been performed on an instance of {@code I}.]]> 10656 </doc> 10657 </method> 10658 <method name="bindInterceptor" 10659 abstract="true" native="false" synchronized="false" 10660 static="false" final="false" visibility="public" 10661 deprecated="not deprecated"> 10662 <param name="methodMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>"/> 10663 <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/> 10664 <doc> 10665 <![CDATA[Binds method interceptor[s] to methods matched in type {@code I} and its supertypes. A 10666 method is eligible for interception if: 10667 10668 <ul> 10669 <li>Guice created the instance the method is on</li> 10670 <li>Neither the enclosing type nor the method is final</li> 10671 <li>And the method is package-private or more accessible</li> 10672 </ul> 10673 10674 @param methodMatcher matches methods the interceptor should apply to. For 10675 example: {@code annotatedWith(Transactional.class)}. 10676 @param interceptors to bind]]> 10677 </doc> 10678 </method> 10679 <doc> 10680 <![CDATA[Context of an injectable type encounter. Enables reporting errors, registering injection 10681 listeners and binding method interceptors for injectable type {@code I}. It is an error to use 10682 an encounter after the {@link TypeListener#hear(TypeLiteral, TypeEncounter) hear()} method has 10683 returned. 10684 10685 @param <I> the injectable type encountered 10686 @since 2.0]]> 10687 </doc> 10688 </interface> 10689 <!-- end interface com.google.inject.spi.TypeEncounter --> 10690 <!-- start interface com.google.inject.spi.TypeListener --> 10691 <interface name="TypeListener" abstract="true" 10692 static="false" final="false" visibility="public" 10693 deprecated="not deprecated"> 10694 <method name="hear" 10695 abstract="true" native="false" synchronized="false" 10696 static="false" final="false" visibility="public" 10697 deprecated="not deprecated"> 10698 <param name="type" type="com.google.inject.TypeLiteral<I>"/> 10699 <param name="encounter" type="com.google.inject.spi.TypeEncounter<I>"/> 10700 <doc> 10701 <![CDATA[Invoked when Guice encounters a new type eligible for constructor or members injection. 10702 Called during injector creation (or afterwords if Guice encounters a type at run time and 10703 creates a JIT binding). 10704 10705 @param type encountered by Guice 10706 @param encounter context of this encounter, enables reporting errors, registering injection 10707 listeners and binding method interceptors for {@code type}. 10708 10709 @param <I> the injectable type]]> 10710 </doc> 10711 </method> 10712 <doc> 10713 <![CDATA[Listens for Guice to encounter injectable types. If a given type has its constructor injected in 10714 one situation but only its methods and fields injected in another, Guice will notify this 10715 listener once. 10716 10717 <p>Useful for extra type checking, {@linkplain TypeEncounter#register(InjectionListener) 10718 registering injection listeners}, and {@linkplain TypeEncounter#bindInterceptor( 10719 com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[]) 10720 binding method interceptors}. 10721 10722 @since 2.0]]> 10723 </doc> 10724 </interface> 10725 <!-- end interface com.google.inject.spi.TypeListener --> 10726 <!-- start class com.google.inject.spi.TypeListenerBinding --> 10727 <class name="TypeListenerBinding" extends="java.lang.Object" 10728 abstract="false" 10729 static="false" final="true" visibility="public" 10730 deprecated="not deprecated"> 10731 <implements name="com.google.inject.spi.Element"/> 10732 <method name="getListener" return="com.google.inject.spi.TypeListener" 10733 abstract="false" native="false" synchronized="false" 10734 static="false" final="false" visibility="public" 10735 deprecated="not deprecated"> 10736 <doc> 10737 <![CDATA[Returns the registered listener.]]> 10738 </doc> 10739 </method> 10740 <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>" 10741 abstract="false" native="false" synchronized="false" 10742 static="false" final="false" visibility="public" 10743 deprecated="not deprecated"> 10744 <doc> 10745 <![CDATA[Returns the type matcher which chooses which types the listener should be notified of.]]> 10746 </doc> 10747 </method> 10748 <method name="getSource" return="java.lang.Object" 10749 abstract="false" native="false" synchronized="false" 10750 static="false" final="false" visibility="public" 10751 deprecated="not deprecated"> 10752 </method> 10753 <method name="acceptVisitor" return="T" 10754 abstract="false" native="false" synchronized="false" 10755 static="false" final="false" visibility="public" 10756 deprecated="not deprecated"> 10757 <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10758 </method> 10759 <method name="applyTo" 10760 abstract="false" native="false" synchronized="false" 10761 static="false" final="false" visibility="public" 10762 deprecated="not deprecated"> 10763 <param name="binder" type="com.google.inject.Binder"/> 10764 </method> 10765 <doc> 10766 <![CDATA[Binds types (picked using a Matcher) to an type listener. Registrations are created explicitly in 10767 a module using {@link com.google.inject.Binder#bindListener(Matcher, TypeListener)} statements: 10768 10769 <pre> 10770 register(only(new TypeLiteral<PaymentService<CreditCard>>() {}), listener);</pre> 10771 10772 @author jessewilson@google.com (Jesse Wilson) 10773 @since 2.0]]> 10774 </doc> 10775 </class> 10776 <!-- end class com.google.inject.spi.TypeListenerBinding --> 10777 <!-- start interface com.google.inject.spi.UntargettedBinding --> 10778 <interface name="UntargettedBinding" abstract="true" 10779 static="false" final="false" visibility="public" 10780 deprecated="not deprecated"> 10781 <implements name="com.google.inject.Binding<T>"/> 10782 <doc> 10783 <![CDATA[An untargetted binding. This binding indicates that the injector should use its implicit binding 10784 strategies to resolve injections. 10785 10786 @author jessewilson@google.com (Jesse Wilson) 10787 @since 2.0]]> 10788 </doc> 10789 </interface> 10790 <!-- end interface com.google.inject.spi.UntargettedBinding --> 10791</package> 10792<package name="com.google.inject.spring"> 10793 <!-- start class com.google.inject.spring.SpringIntegration --> 10794 <class name="SpringIntegration" extends="java.lang.Object" 10795 abstract="false" 10796 static="false" final="false" visibility="public" 10797 deprecated="not deprecated"> 10798 <method name="fromSpring" return="com.google.inject.Provider<T>" 10799 abstract="false" native="false" synchronized="false" 10800 static="true" final="false" visibility="public" 10801 deprecated="not deprecated"> 10802 <param name="type" type="java.lang.Class<T>"/> 10803 <param name="name" type="java.lang.String"/> 10804 <doc> 10805 <![CDATA[Creates a provider which looks up objects from Spring using the given name. 10806 Expects a binding to {@link 10807 org.springframework.beans.factory.BeanFactory}. Example usage: 10808 10809 <pre> 10810 bind(DataSource.class) 10811 .toProvider(fromSpring(DataSource.class, "dataSource")); 10812 </pre>]]> 10813 </doc> 10814 </method> 10815 <method name="bindAll" 10816 abstract="false" native="false" synchronized="false" 10817 static="true" final="false" visibility="public" 10818 deprecated="not deprecated"> 10819 <param name="binder" type="com.google.inject.Binder"/> 10820 <param name="beanFactory" type="org.springframework.beans.factory.ListableBeanFactory"/> 10821 <doc> 10822 <![CDATA[Binds all Spring beans from the given factory by name. For a Spring bean 10823 named "foo", this method creates a binding to the bean's type and 10824 {@code @Named("foo")}. 10825 10826 @see com.google.inject.name.Named 10827 @see com.google.inject.name.Names#named(String)]]> 10828 </doc> 10829 </method> 10830 <doc> 10831 <![CDATA[Integrates Guice with Spring. 10832 10833 @author crazybob@google.com (Bob Lee)]]> 10834 </doc> 10835 </class> 10836 <!-- end class com.google.inject.spring.SpringIntegration --> 10837</package> 10838<package name="com.google.inject.struts2"> 10839 <!-- start class com.google.inject.struts2.GuiceObjectFactory --> 10840 <class name="GuiceObjectFactory" extends="com.opensymphony.xwork2.ObjectFactory" 10841 abstract="false" 10842 static="false" final="false" visibility="public" 10843 deprecated="Use {@link com.google.inject.struts2.Struts2Factory} instead."> 10844 <constructor name="GuiceObjectFactory" 10845 static="false" final="false" visibility="public" 10846 deprecated="not deprecated"> 10847 </constructor> 10848 <method name="isNoArgConstructorRequired" return="boolean" 10849 abstract="false" native="false" synchronized="false" 10850 static="false" final="false" visibility="public" 10851 deprecated="not deprecated"> 10852 </method> 10853 <method name="getClassInstance" return="java.lang.Class" 10854 abstract="false" native="false" synchronized="false" 10855 static="false" final="false" visibility="public" 10856 deprecated="not deprecated"> 10857 <param name="name" type="java.lang.String"/> 10858 <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/> 10859 </method> 10860 <method name="buildBean" return="java.lang.Object" 10861 abstract="false" native="false" synchronized="false" 10862 static="false" final="false" visibility="public" 10863 deprecated="not deprecated"> 10864 <param name="clazz" type="java.lang.Class"/> 10865 <param name="extraContext" type="java.util.Map"/> 10866 </method> 10867 <method name="buildInterceptor" return="com.opensymphony.xwork2.interceptor.Interceptor" 10868 abstract="false" native="false" synchronized="false" 10869 static="false" final="false" visibility="public" 10870 deprecated="not deprecated"> 10871 <param name="interceptorConfig" type="com.opensymphony.xwork2.config.entities.InterceptorConfig"/> 10872 <param name="interceptorRefParams" type="java.util.Map"/> 10873 <exception name="ConfigurationException" type="com.opensymphony.xwork2.config.ConfigurationException"/> 10874 </method> 10875 <doc> 10876 <![CDATA[@deprecated Use {@link com.google.inject.struts2.Struts2Factory} instead.]]> 10877 </doc> 10878 </class> 10879 <!-- end class com.google.inject.struts2.GuiceObjectFactory --> 10880 <!-- start class com.google.inject.struts2.Struts2Factory --> 10881 <class name="Struts2Factory" extends="com.opensymphony.xwork2.ObjectFactory" 10882 abstract="false" 10883 static="false" final="false" visibility="public" 10884 deprecated="not deprecated"> 10885 <constructor name="Struts2Factory" 10886 static="false" final="false" visibility="public" 10887 deprecated="not deprecated"> 10888 </constructor> 10889 <method name="isNoArgConstructorRequired" return="boolean" 10890 abstract="false" native="false" synchronized="false" 10891 static="false" final="false" visibility="public" 10892 deprecated="not deprecated"> 10893 </method> 10894 <method name="getClassInstance" return="java.lang.Class<?>" 10895 abstract="false" native="false" synchronized="false" 10896 static="false" final="false" visibility="public" 10897 deprecated="not deprecated"> 10898 <param name="name" type="java.lang.String"/> 10899 <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/> 10900 </method> 10901 <method name="buildBean" return="java.lang.Object" 10902 abstract="false" native="false" synchronized="false" 10903 static="false" final="false" visibility="public" 10904 deprecated="not deprecated"> 10905 <param name="clazz" type="java.lang.Class"/> 10906 <param name="extraContext" type="java.util.Map<java.lang.String, java.lang.Object>"/> 10907 </method> 10908 <method name="buildInterceptor" return="com.opensymphony.xwork2.interceptor.Interceptor" 10909 abstract="false" native="false" synchronized="false" 10910 static="false" final="false" visibility="public" 10911 deprecated="not deprecated"> 10912 <param name="interceptorConfig" type="com.opensymphony.xwork2.config.entities.InterceptorConfig"/> 10913 <param name="interceptorRefParams" type="java.util.Map"/> 10914 <exception name="ConfigurationException" type="com.opensymphony.xwork2.config.ConfigurationException"/> 10915 </method> 10916 <doc> 10917 <![CDATA[Cleanup up version from Bob's GuiceObjectFactory. Now works properly with 10918 GS2 and fixes several bugs. 10919 10920 @author dhanji@gmail.com 10921 @author benmccann.com]]> 10922 </doc> 10923 </class> 10924 <!-- end class com.google.inject.struts2.Struts2Factory --> 10925 <!-- start class com.google.inject.struts2.Struts2GuicePluginModule --> 10926 <class name="Struts2GuicePluginModule" extends="com.google.inject.AbstractModule" 10927 abstract="false" 10928 static="false" final="false" visibility="public" 10929 deprecated="not deprecated"> 10930 <constructor name="Struts2GuicePluginModule" 10931 static="false" final="false" visibility="public" 10932 deprecated="not deprecated"> 10933 </constructor> 10934 <method name="configure" 10935 abstract="false" native="false" synchronized="false" 10936 static="false" final="false" visibility="protected" 10937 deprecated="not deprecated"> 10938 </method> 10939 <doc> 10940 <![CDATA[Initializes the Struts 2 Guice Plugin. Must be added to the injector returned 10941 by {@link com.google.inject.servlet.GuiceServletContextListener#getInjector}. 10942 10943 @author benmccann.com]]> 10944 </doc> 10945 </class> 10946 <!-- end class com.google.inject.struts2.Struts2GuicePluginModule --> 10947</package> 10948<package name="com.google.inject.testing.fieldbinder"> 10949 <!-- start class com.google.inject.testing.fieldbinder.Bind --> 10950 <class name="Bind" abstract="true" 10951 static="false" final="false" visibility="public" 10952 deprecated="not deprecated"> 10953 <implements name="java.lang.annotation.Annotation"/> 10954 <doc> 10955 <![CDATA[Annotation used by {@link BoundFieldModule} to indicate that a field should be bound to its 10956 value using Guice. 10957 10958 @see BoundFieldModule 10959 @author eatnumber1@google.com (Russ Harmon)]]> 10960 </doc> 10961 </class> 10962 <!-- end class com.google.inject.testing.fieldbinder.Bind --> 10963 <!-- start class com.google.inject.testing.fieldbinder.BoundFieldModule --> 10964 <class name="BoundFieldModule" extends="java.lang.Object" 10965 abstract="false" 10966 static="false" final="true" visibility="public" 10967 deprecated="not deprecated"> 10968 <implements name="com.google.inject.Module"/> 10969 <method name="of" return="com.google.inject.testing.fieldbinder.BoundFieldModule" 10970 abstract="false" native="false" synchronized="false" 10971 static="true" final="false" visibility="public" 10972 deprecated="not deprecated"> 10973 <param name="instance" type="java.lang.Object"/> 10974 <doc> 10975 <![CDATA[Create a BoundFieldModule which binds the {@link Bind} annotated fields of {@code instance}. 10976 10977 @param instance the instance whose fields will be bound. 10978 @return a module which will bind the {@link Bind} annotated fields of {@code instance}.]]> 10979 </doc> 10980 </method> 10981 <method name="configure" 10982 abstract="false" native="false" synchronized="false" 10983 static="false" final="false" visibility="public" 10984 deprecated="not deprecated"> 10985 <param name="binder" type="com.google.inject.Binder"/> 10986 </method> 10987 <doc> 10988 <![CDATA[Automatically creates Guice bindings for fields in an object annotated with {@link Bind}. 10989 10990 <p>This module is intended for use in tests to reduce the code needed to bind local fields 10991 (usually mocks) for injection. 10992 10993 <p>The following rules are followed in determining how fields are bound using this module: 10994 10995 <ul> 10996 <li> 10997 For each {@link Bind} annotated field of an object and its superclasses, this module will bind 10998 that field's type to that field's value at injector creation time. This includes both instance 10999 and static fields. 11000 </li> 11001 <li> 11002 If {@link Bind#to} is specified, the field's value will be bound to the class specified by 11003 {@link Bind#to} instead of the field's actual type. 11004 </li> 11005 <li> 11006 If a {@link BindingAnnotation} or {@link javax.inject.Qualifier} is present on the field, 11007 that field will be bound using that annotation via {@link AnnotatedBindingBuilder#annotatedWith}. 11008 For example, {@code bind(Foo.class).annotatedWith(BarAnnotation.class).toInstance(theValue)}. 11009 It is an error to supply more than one {@link BindingAnnotation} or 11010 {@link javax.inject.Qualifier}. 11011 </li> 11012 <li> 11013 If the field is of type {@link Provider}, the field's value will be bound as a {@link Provider} 11014 using {@link LinkedBindingBuilder#toProvider} to the provider's parameterized type. For example, 11015 {@code Provider<Integer>} binds to {@link Integer}. Attempting to bind a non-parameterized 11016 {@link Provider} without a {@link Bind#to} clause is an error. 11017 </li> 11018 </ul> 11019 11020 <p>Example use: 11021 <pre><code> 11022 public class TestFoo { 11023 // bind(new TypeLiteral{@code <List<Object>>}() {}).toInstance(listOfObjects); 11024 {@literal @}Bind private List{@code <Object>} listOfObjects = Lists.of(); 11025 11026 // bind(String.class).toProvider(new Provider() { public String get() { return userName; }}); 11027 {@literal @}Bind(lazy = true) private String userName; 11028 11029 // bind(SuperClass.class).toInstance(aSubClass); 11030 {@literal @}Bind(to = SuperClass.class) private SubClass aSubClass = new SubClass(); 11031 11032 // bind(Object.class).annotatedWith(MyBindingAnnotation.class).toInstance(object2); 11033 {@literal @}Bind 11034 {@literal @}MyBindingAnnotation 11035 private String myString = "hello"; 11036 11037 // bind(Object.class).toProvider(myProvider); 11038 {@literal @}Bind private Provider{@code <Object>} myProvider = getProvider(); 11039 11040 {@literal @}Before public void setUp() { 11041 Guice.createInjector(BoundFieldModule.of(this)).injectMembers(this); 11042 } 11043 } 11044 </code></pre> 11045 11046 @see Bind 11047 @author eatnumber1@google.com (Russ Harmon)]]> 11048 </doc> 11049 </class> 11050 <!-- end class com.google.inject.testing.fieldbinder.BoundFieldModule --> 11051</package> 11052<package name="com.google.inject.throwingproviders"> 11053 <!-- start interface com.google.inject.throwingproviders.CheckedProvider --> 11054 <interface name="CheckedProvider" abstract="true" 11055 static="false" final="false" visibility="public" 11056 deprecated="not deprecated"> 11057 <method name="get" return="T" 11058 abstract="true" native="false" synchronized="false" 11059 static="false" final="false" visibility="public" 11060 deprecated="not deprecated"> 11061 <exception name="Exception" type="java.lang.Exception"/> 11062 </method> 11063 <doc> 11064 <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws 11065 a checked Exception. Users may not inject {@code T} directly. 11066 11067 <p>This interface must be extended to use application-specific exception types. 11068 Such subinterfaces may not define new methods, but may narrow the exception type. 11069 <pre> 11070 public interface RemoteProvider<T> extends CheckedProvider<T> { 11071 T get() throws CustomExceptionOne, CustomExceptionTwo; 11072 } 11073 </pre> 11074 11075 <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned 11076 or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get} 11077 will invoked at most once within each scope. 11078 11079 @since 3.0]]> 11080 </doc> 11081 </interface> 11082 <!-- end interface com.google.inject.throwingproviders.CheckedProvider --> 11083 <!-- start class com.google.inject.throwingproviders.CheckedProvides --> 11084 <class name="CheckedProvides" abstract="true" 11085 static="false" final="false" visibility="public" 11086 deprecated="not deprecated"> 11087 <implements name="java.lang.annotation.Annotation"/> 11088 <doc> 11089 <![CDATA[Annotates methods of a {@link com.google.inject.Module} to create a 11090 {@link CheckedProvider} method binding that can throw exceptions. The 11091 method's return type is bound to a {@link CheckedProvider} that can be 11092 injected. Guice will pass dependencies to the method as parameters. Install 11093 {@literal @}CheckedProvides methods by using 11094 {@link ThrowingProviderBinder#forModule(com.google.inject.Module)} on the 11095 module where the methods are declared. 11096 11097 @author sameb@google.com (Sam Berlin) 11098 @since 3.0]]> 11099 </doc> 11100 </class> 11101 <!-- end class com.google.inject.throwingproviders.CheckedProvides --> 11102 <!-- start class com.google.inject.throwingproviders.ThrowingInject --> 11103 <class name="ThrowingInject" abstract="true" 11104 static="false" final="false" visibility="public" 11105 deprecated="not deprecated"> 11106 <implements name="java.lang.annotation.Annotation"/> 11107 <doc> 11108 <![CDATA[A version of {@literal @}{@link Inject} designed for ThrowingProviders. Use by: 11109 <pre><code>ThrowingProviderBinder.create(binder()) 11110 .bind(RemoteProvider.class, Customer.class) 11111 .providing(CustomerImpl.class); 11112 </code></pre> 11113 where CustomerImpl has a constructor annotated with ThrowingInject. 11114 11115 @author sameb@google.com (Sam Berlin) 11116 @since 4.0]]> 11117 </doc> 11118 </class> 11119 <!-- end class com.google.inject.throwingproviders.ThrowingInject --> 11120 <!-- start interface com.google.inject.throwingproviders.ThrowingProvider --> 11121 <interface name="ThrowingProvider" abstract="true" 11122 static="false" final="false" visibility="public" 11123 deprecated="use {@link CheckedProvider} instead."> 11124 <implements name="com.google.inject.throwingproviders.CheckedProvider<T>"/> 11125 <method name="get" return="T" 11126 abstract="true" native="false" synchronized="false" 11127 static="false" final="false" visibility="public" 11128 deprecated="not deprecated"> 11129 <exception name="Exception" type="java.lang.Exception"/> 11130 </method> 11131 <doc> 11132 <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws 11133 a checked Exception. Users may not inject {@code T} directly. 11134 11135 <p>This interface must be extended to use application-specific exception types. 11136 Such subinterfaces may not define new methods: 11137 <pre> 11138 public interface RemoteProvider<T> extends ThrowingProvider<T, RemoteException> { } 11139 </pre> 11140 11141 <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned 11142 or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get} 11143 will invoked at most once within each scope. 11144 11145 @author jmourits@google.com (Jerome Mourits) 11146 @author jessewilson@google.com (Jesse Wilson) 11147 @deprecated use {@link CheckedProvider} instead.]]> 11148 </doc> 11149 </interface> 11150 <!-- end interface com.google.inject.throwingproviders.ThrowingProvider --> 11151 <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder --> 11152 <class name="ThrowingProviderBinder" extends="java.lang.Object" 11153 abstract="false" 11154 static="false" final="false" visibility="public" 11155 deprecated="not deprecated"> 11156 <method name="create" return="com.google.inject.throwingproviders.ThrowingProviderBinder" 11157 abstract="false" native="false" synchronized="false" 11158 static="true" final="false" visibility="public" 11159 deprecated="not deprecated"> 11160 <param name="binder" type="com.google.inject.Binder"/> 11161 </method> 11162 <method name="forModule" return="com.google.inject.Module" 11163 abstract="false" native="false" synchronized="false" 11164 static="true" final="false" visibility="public" 11165 deprecated="not deprecated"> 11166 <param name="module" type="com.google.inject.Module"/> 11167 <doc> 11168 <![CDATA[Returns a module that installs {@literal @}{@link CheckedProvides} methods. 11169 11170 @since 3.0]]> 11171 </doc> 11172 </method> 11173 <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P, ?>" 11174 abstract="false" native="false" synchronized="false" 11175 static="false" final="false" visibility="public" 11176 deprecated="Use {@link #bind(Class, Class)} or {@link #bind(Class, TypeLiteral)} instead."> 11177 <param name="interfaceType" type="java.lang.Class<P>"/> 11178 <param name="clazz" type="java.lang.reflect.Type"/> 11179 <doc> 11180 <![CDATA[@deprecated Use {@link #bind(Class, Class)} or {@link #bind(Class, TypeLiteral)} instead.]]> 11181 </doc> 11182 </method> 11183 <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P, T>" 11184 abstract="false" native="false" synchronized="false" 11185 static="false" final="false" visibility="public" 11186 deprecated="not deprecated"> 11187 <param name="interfaceType" type="java.lang.Class<P>"/> 11188 <param name="clazz" type="java.lang.Class<T>"/> 11189 <doc> 11190 <![CDATA[@since 4.0]]> 11191 </doc> 11192 </method> 11193 <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P, T>" 11194 abstract="false" native="false" synchronized="false" 11195 static="false" final="false" visibility="public" 11196 deprecated="not deprecated"> 11197 <param name="interfaceType" type="java.lang.Class<P>"/> 11198 <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 11199 <doc> 11200 <![CDATA[@since 4.0]]> 11201 </doc> 11202 </method> 11203 <doc> 11204 <![CDATA[<p>Builds a binding for a {@link CheckedProvider}. 11205 11206 <p>You can use a fluent API and custom providers: 11207 <pre><code>ThrowingProviderBinder.create(binder()) 11208 .bind(RemoteProvider.class, Customer.class) 11209 .to(RemoteCustomerProvider.class) 11210 .in(RequestScope.class); 11211 </code></pre> 11212 or, you can use throwing provider methods: 11213 <pre><code>class MyModule extends AbstractModule { 11214 configure() { 11215 ThrowingProviderBinder.install(this, binder()); 11216 } 11217 11218 {@literal @}CheckedProvides(RemoteProvider.class) 11219 {@literal @}RequestScope 11220 Customer provideCustomer(FlakyCustomerCreator creator) throws RemoteException { 11221 return creator.getCustomerOrThrow(); 11222 } 11223 } 11224 </code></pre> 11225 You also can declare that a CheckedProvider construct 11226 a particular class whose constructor throws an exception: 11227 <pre><code>ThrowingProviderBinder.create(binder()) 11228 .bind(RemoteProvider.class, Customer.class) 11229 .providing(CustomerImpl.class) 11230 .in(RequestScope.class); 11231 </code></pre> 11232 11233 @author jmourits@google.com (Jerome Mourits) 11234 @author jessewilson@google.com (Jesse Wilson) 11235 @author sameb@google.com (Sam Berlin)]]> 11236 </doc> 11237 </class> 11238 <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder --> 11239 <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder --> 11240 <class name="ThrowingProviderBinder.SecondaryBinder" extends="java.lang.Object" 11241 abstract="false" 11242 static="false" final="false" visibility="public" 11243 deprecated="not deprecated"> 11244 <constructor name="SecondaryBinder" type="java.lang.Class<P>, java.lang.reflect.Type" 11245 static="false" final="false" visibility="public" 11246 deprecated="not deprecated"> 11247 </constructor> 11248 <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P, T>" 11249 abstract="false" native="false" synchronized="false" 11250 static="false" final="false" visibility="public" 11251 deprecated="not deprecated"> 11252 <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 11253 </method> 11254 <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P, T>" 11255 abstract="false" native="false" synchronized="false" 11256 static="false" final="false" visibility="public" 11257 deprecated="not deprecated"> 11258 <param name="annotation" type="java.lang.annotation.Annotation"/> 11259 </method> 11260 <method name="scopeExceptions" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P, T>" 11261 abstract="false" native="false" synchronized="false" 11262 static="false" final="false" visibility="public" 11263 deprecated="not deprecated"> 11264 <param name="scopeExceptions" type="boolean"/> 11265 <doc> 11266 <![CDATA[Determines if exceptions should be scoped. By default exceptions are scoped. 11267 11268 @param scopeExceptions whether exceptions should be scoped. 11269 @since 4.0]]> 11270 </doc> 11271 </method> 11272 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 11273 abstract="false" native="false" synchronized="false" 11274 static="false" final="false" visibility="public" 11275 deprecated="not deprecated"> 11276 <param name="target" type="P extends com.google.inject.throwingproviders.CheckedProvider"/> 11277 </method> 11278 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 11279 abstract="false" native="false" synchronized="false" 11280 static="false" final="false" visibility="public" 11281 deprecated="not deprecated"> 11282 <param name="targetType" type="java.lang.Class<? extends P>"/> 11283 </method> 11284 <method name="providing" return="com.google.inject.binder.ScopedBindingBuilder" 11285 abstract="false" native="false" synchronized="false" 11286 static="false" final="false" visibility="public" 11287 deprecated="not deprecated"> 11288 <param name="cxtorClass" type="java.lang.Class<? extends T>"/> 11289 <doc> 11290 <![CDATA[@since 4.0]]> 11291 </doc> 11292 </method> 11293 <method name="providing" return="com.google.inject.binder.ScopedBindingBuilder" 11294 abstract="false" native="false" synchronized="false" 11295 static="false" final="false" visibility="public" 11296 deprecated="not deprecated"> 11297 <param name="cxtorLiteral" type="com.google.inject.TypeLiteral<? extends T>"/> 11298 <doc> 11299 <![CDATA[@since 4.0]]> 11300 </doc> 11301 </method> 11302 <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 11303 abstract="false" native="false" synchronized="false" 11304 static="false" final="false" visibility="public" 11305 deprecated="not deprecated"> 11306 <param name="targetKey" type="com.google.inject.Key<? extends P>"/> 11307 </method> 11308 </class> 11309 <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder --> 11310</package> 11311<package name="com.google.inject.tools.jmx"> 11312 <!-- start interface com.google.inject.tools.jmx.ManagedBindingMBean --> 11313 <interface name="ManagedBindingMBean" abstract="true" 11314 static="false" final="false" visibility="public" 11315 deprecated="not deprecated"> 11316 <method name="getSource" return="java.lang.String" 11317 abstract="true" native="false" synchronized="false" 11318 static="false" final="false" visibility="public" 11319 deprecated="not deprecated"> 11320 <doc> 11321 <![CDATA[Gets the source of this binding.]]> 11322 </doc> 11323 </method> 11324 <method name="getProvider" return="java.lang.String" 11325 abstract="true" native="false" synchronized="false" 11326 static="false" final="false" visibility="public" 11327 deprecated="not deprecated"> 11328 <doc> 11329 <![CDATA[Gets the provider to which this binding is bound.]]> 11330 </doc> 11331 </method> 11332 <method name="getKey" return="java.lang.String" 11333 abstract="true" native="false" synchronized="false" 11334 static="false" final="false" visibility="public" 11335 deprecated="not deprecated"> 11336 <doc> 11337 <![CDATA[Gets the binding key.]]> 11338 </doc> 11339 </method> 11340 <doc> 11341 <![CDATA[JMX interface to bindings. 11342 11343 @author crazybob@google.com (Bob Lee)]]> 11344 </doc> 11345 </interface> 11346 <!-- end interface com.google.inject.tools.jmx.ManagedBindingMBean --> 11347 <!-- start class com.google.inject.tools.jmx.Manager --> 11348 <class name="Manager" extends="java.lang.Object" 11349 abstract="false" 11350 static="false" final="false" visibility="public" 11351 deprecated="not deprecated"> 11352 <constructor name="Manager" 11353 static="false" final="false" visibility="public" 11354 deprecated="not deprecated"> 11355 </constructor> 11356 <method name="manage" 11357 abstract="false" native="false" synchronized="false" 11358 static="true" final="false" visibility="public" 11359 deprecated="not deprecated"> 11360 <param name="domain" type="java.lang.String"/> 11361 <param name="injector" type="com.google.inject.Injector"/> 11362 <doc> 11363 <![CDATA[Registers all the bindings of an Injector with the platform MBean server. 11364 Consider using the name of your root {@link Module} class as the domain.]]> 11365 </doc> 11366 </method> 11367 <method name="manage" 11368 abstract="false" native="false" synchronized="false" 11369 static="true" final="false" visibility="public" 11370 deprecated="not deprecated"> 11371 <param name="server" type="javax.management.MBeanServer"/> 11372 <param name="domain" type="java.lang.String"/> 11373 <param name="injector" type="com.google.inject.Injector"/> 11374 <doc> 11375 <![CDATA[Registers all the bindings of an Injector with the given MBean server. 11376 Consider using the name of your root {@link Module} class as the domain.]]> 11377 </doc> 11378 </method> 11379 <method name="main" 11380 abstract="false" native="false" synchronized="false" 11381 static="true" final="false" visibility="public" 11382 deprecated="not deprecated"> 11383 <param name="args" type="java.lang.String[]"/> 11384 <exception name="Exception" type="java.lang.Exception"/> 11385 <doc> 11386 <![CDATA[Run with no arguments for usage instructions.]]> 11387 </doc> 11388 </method> 11389 <doc> 11390 <![CDATA[Provides a JMX interface to Guice. 11391 11392 @author crazybob@google.com (Bob Lee)]]> 11393 </doc> 11394 </class> 11395 <!-- end class com.google.inject.tools.jmx.Manager --> 11396</package> 11397<package name="com.google.inject.util"> 11398 <!-- start class com.google.inject.util.Modules --> 11399 <class name="Modules" extends="java.lang.Object" 11400 abstract="false" 11401 static="false" final="true" visibility="public" 11402 deprecated="not deprecated"> 11403 <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder" 11404 abstract="false" native="false" synchronized="false" 11405 static="true" final="false" visibility="public" 11406 deprecated="not deprecated"> 11407 <param name="modules" type="com.google.inject.Module[]"/> 11408 <doc> 11409 <![CDATA[Returns a builder that creates a module that overlays override modules over the given 11410 modules. If a key is bound in both sets of modules, only the binding from the override modules 11411 is kept. If a single {@link PrivateModule} is supplied or all elements are from 11412 a single {@link PrivateBinder}, then this will overwrite the private bindings. 11413 Otherwise, private bindings will not be overwritten unless they are exposed. 11414 This can be used to replace the bindings of a production module with test bindings: 11415 <pre> 11416 Module functionalTestModule 11417 = Modules.override(new ProductionModule()).with(new TestModule()); 11418 </pre> 11419 11420 <p>Prefer to write smaller modules that can be reused and tested without overrides. 11421 11422 @param modules the modules whose bindings are open to be overridden]]> 11423 </doc> 11424 </method> 11425 <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder" 11426 abstract="false" native="false" synchronized="false" 11427 static="true" final="false" visibility="public" 11428 deprecated="not deprecated"> 11429 <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 11430 <doc> 11431 <![CDATA[Returns a builder that creates a module that overlays override modules over the given 11432 modules. If a key is bound in both sets of modules, only the binding from the override modules 11433 is kept. If a single {@link PrivateModule} is supplied or all elements are from 11434 a single {@link PrivateBinder}, then this will overwrite the private bindings. 11435 Otherwise, private bindings will not be overwritten unless they are exposed. 11436 This can be used to replace the bindings of a production module with test bindings: 11437 <pre> 11438 Module functionalTestModule 11439 = Modules.override(getProductionModules()).with(getTestModules()); 11440 </pre> 11441 11442 <p>Prefer to write smaller modules that can be reused and tested without overrides. 11443 11444 @param modules the modules whose bindings are open to be overridden]]> 11445 </doc> 11446 </method> 11447 <method name="combine" return="com.google.inject.Module" 11448 abstract="false" native="false" synchronized="false" 11449 static="true" final="false" visibility="public" 11450 deprecated="not deprecated"> 11451 <param name="modules" type="com.google.inject.Module[]"/> 11452 <doc> 11453 <![CDATA[Returns a new module that installs all of {@code modules}.]]> 11454 </doc> 11455 </method> 11456 <method name="combine" return="com.google.inject.Module" 11457 abstract="false" native="false" synchronized="false" 11458 static="true" final="false" visibility="public" 11459 deprecated="not deprecated"> 11460 <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 11461 <doc> 11462 <![CDATA[Returns a new module that installs all of {@code modules}.]]> 11463 </doc> 11464 </method> 11465 <field name="EMPTY_MODULE" type="com.google.inject.Module" 11466 transient="false" volatile="false" 11467 static="true" final="true" visibility="public" 11468 deprecated="not deprecated"> 11469 </field> 11470 <doc> 11471 <![CDATA[Static utility methods for creating and working with instances of {@link Module}. 11472 11473 @author jessewilson@google.com (Jesse Wilson) 11474 @since 2.0]]> 11475 </doc> 11476 </class> 11477 <!-- end class com.google.inject.util.Modules --> 11478 <!-- start interface com.google.inject.util.Modules.OverriddenModuleBuilder --> 11479 <interface name="Modules.OverriddenModuleBuilder" abstract="true" 11480 static="true" final="false" visibility="public" 11481 deprecated="not deprecated"> 11482 <method name="with" return="com.google.inject.Module" 11483 abstract="true" native="false" synchronized="false" 11484 static="false" final="false" visibility="public" 11485 deprecated="not deprecated"> 11486 <param name="overrides" type="com.google.inject.Module[]"/> 11487 <doc> 11488 <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]> 11489 </doc> 11490 </method> 11491 <method name="with" return="com.google.inject.Module" 11492 abstract="true" native="false" synchronized="false" 11493 static="false" final="false" visibility="public" 11494 deprecated="not deprecated"> 11495 <param name="overrides" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 11496 <doc> 11497 <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]> 11498 </doc> 11499 </method> 11500 <doc> 11501 <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]> 11502 </doc> 11503 </interface> 11504 <!-- end interface com.google.inject.util.Modules.OverriddenModuleBuilder --> 11505 <!-- start class com.google.inject.util.Providers --> 11506 <class name="Providers" extends="java.lang.Object" 11507 abstract="false" 11508 static="false" final="true" visibility="public" 11509 deprecated="not deprecated"> 11510 <method name="of" return="com.google.inject.Provider<T>" 11511 abstract="false" native="false" synchronized="false" 11512 static="true" final="false" visibility="public" 11513 deprecated="not deprecated"> 11514 <param name="instance" type="T"/> 11515 <doc> 11516 <![CDATA[Returns a provider which always provides {@code instance}. This should not 11517 be necessary to use in your application, but is helpful for several types 11518 of unit tests. 11519 11520 @param instance the instance that should always be provided. This is also 11521 permitted to be null, to enable aggressive testing, although in real 11522 life a Guice-supplied Provider will never return null.]]> 11523 </doc> 11524 </method> 11525 <method name="guicify" return="com.google.inject.Provider<T>" 11526 abstract="false" native="false" synchronized="false" 11527 static="true" final="false" visibility="public" 11528 deprecated="not deprecated"> 11529 <param name="provider" type="javax.inject.Provider<T>"/> 11530 <doc> 11531 <![CDATA[Returns a Guice-friendly {@code com.google.inject.Provider} for the given 11532 JSR-330 {@code javax.inject.Provider}. The converse method is unnecessary, 11533 since Guice providers directly implement the JSR-330 interface. 11534 11535 @since 3.0]]> 11536 </doc> 11537 </method> 11538 <doc> 11539 <![CDATA[Static utility methods for creating and working with instances of 11540 {@link Provider}. 11541 11542 @author Kevin Bourrillion (kevinb9n@gmail.com) 11543 @since 2.0]]> 11544 </doc> 11545 </class> 11546 <!-- end class com.google.inject.util.Providers --> 11547 <!-- start class com.google.inject.util.Types --> 11548 <class name="Types" extends="java.lang.Object" 11549 abstract="false" 11550 static="false" final="true" visibility="public" 11551 deprecated="not deprecated"> 11552 <method name="newParameterizedType" return="java.lang.reflect.ParameterizedType" 11553 abstract="false" native="false" synchronized="false" 11554 static="true" final="false" visibility="public" 11555 deprecated="not deprecated"> 11556 <param name="rawType" type="java.lang.reflect.Type"/> 11557 <param name="typeArguments" type="java.lang.reflect.Type[]"/> 11558 <doc> 11559 <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to 11560 {@code rawType}. The returned type does not have an owner type. 11561 11562 @return a {@link java.io.Serializable serializable} parameterized type.]]> 11563 </doc> 11564 </method> 11565 <method name="newParameterizedTypeWithOwner" return="java.lang.reflect.ParameterizedType" 11566 abstract="false" native="false" synchronized="false" 11567 static="true" final="false" visibility="public" 11568 deprecated="not deprecated"> 11569 <param name="ownerType" type="java.lang.reflect.Type"/> 11570 <param name="rawType" type="java.lang.reflect.Type"/> 11571 <param name="typeArguments" type="java.lang.reflect.Type[]"/> 11572 <doc> 11573 <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to 11574 {@code rawType} and enclosed by {@code ownerType}. 11575 11576 @return a {@link java.io.Serializable serializable} parameterized type.]]> 11577 </doc> 11578 </method> 11579 <method name="arrayOf" return="java.lang.reflect.GenericArrayType" 11580 abstract="false" native="false" synchronized="false" 11581 static="true" final="false" visibility="public" 11582 deprecated="not deprecated"> 11583 <param name="componentType" type="java.lang.reflect.Type"/> 11584 <doc> 11585 <![CDATA[Returns an array type whose elements are all instances of 11586 {@code componentType}. 11587 11588 @return a {@link java.io.Serializable serializable} generic array type.]]> 11589 </doc> 11590 </method> 11591 <method name="subtypeOf" return="java.lang.reflect.WildcardType" 11592 abstract="false" native="false" synchronized="false" 11593 static="true" final="false" visibility="public" 11594 deprecated="not deprecated"> 11595 <param name="bound" type="java.lang.reflect.Type"/> 11596 <doc> 11597 <![CDATA[Returns a type that represents an unknown type that extends {@code bound}. 11598 For example, if {@code bound} is {@code CharSequence.class}, this returns 11599 {@code ? extends CharSequence}. If {@code bound} is {@code Object.class}, 11600 this returns {@code ?}, which is shorthand for {@code ? extends Object}.]]> 11601 </doc> 11602 </method> 11603 <method name="supertypeOf" return="java.lang.reflect.WildcardType" 11604 abstract="false" native="false" synchronized="false" 11605 static="true" final="false" visibility="public" 11606 deprecated="not deprecated"> 11607 <param name="bound" type="java.lang.reflect.Type"/> 11608 <doc> 11609 <![CDATA[Returns a type that represents an unknown supertype of {@code bound}. For 11610 example, if {@code bound} is {@code String.class}, this returns {@code ? 11611 super String}.]]> 11612 </doc> 11613 </method> 11614 <method name="listOf" return="java.lang.reflect.ParameterizedType" 11615 abstract="false" native="false" synchronized="false" 11616 static="true" final="false" visibility="public" 11617 deprecated="not deprecated"> 11618 <param name="elementType" type="java.lang.reflect.Type"/> 11619 <doc> 11620 <![CDATA[Returns a type modelling a {@link List} whose elements are of type 11621 {@code elementType}. 11622 11623 @return a {@link java.io.Serializable serializable} parameterized type.]]> 11624 </doc> 11625 </method> 11626 <method name="setOf" return="java.lang.reflect.ParameterizedType" 11627 abstract="false" native="false" synchronized="false" 11628 static="true" final="false" visibility="public" 11629 deprecated="not deprecated"> 11630 <param name="elementType" type="java.lang.reflect.Type"/> 11631 <doc> 11632 <![CDATA[Returns a type modelling a {@link Set} whose elements are of type 11633 {@code elementType}. 11634 11635 @return a {@link java.io.Serializable serializable} parameterized type.]]> 11636 </doc> 11637 </method> 11638 <method name="mapOf" return="java.lang.reflect.ParameterizedType" 11639 abstract="false" native="false" synchronized="false" 11640 static="true" final="false" visibility="public" 11641 deprecated="not deprecated"> 11642 <param name="keyType" type="java.lang.reflect.Type"/> 11643 <param name="valueType" type="java.lang.reflect.Type"/> 11644 <doc> 11645 <![CDATA[Returns a type modelling a {@link Map} whose keys are of type 11646 {@code keyType} and whose values are of type {@code valueType}. 11647 11648 @return a {@link java.io.Serializable serializable} parameterized type.]]> 11649 </doc> 11650 </method> 11651 <method name="providerOf" return="java.lang.reflect.ParameterizedType" 11652 abstract="false" native="false" synchronized="false" 11653 static="true" final="false" visibility="public" 11654 deprecated="not deprecated"> 11655 <param name="providedType" type="java.lang.reflect.Type"/> 11656 <doc> 11657 <![CDATA[Returns a type modelling a {@link Provider} that provides elements of type 11658 {@code elementType}. 11659 11660 @return a {@link java.io.Serializable serializable} parameterized type.]]> 11661 </doc> 11662 </method> 11663 <doc> 11664 <![CDATA[Static methods for working with types. 11665 11666 @author crazybob@google.com (Bob Lee) 11667 @since 2.0]]> 11668 </doc> 11669 </class> 11670 <!-- end class com.google.inject.util.Types --> 11671</package> 11672 11673</api> 11674