1*dc5640d1SHerbert Xue<?xml version="1.0" encoding="iso-8859-1" standalone="no"?> 2*dc5640d1SHerbert Xue<!-- Generated by the JDiff Javadoc doclet --> 3*dc5640d1SHerbert Xue<!-- (http://www.jdiff.org) --> 4*dc5640d1SHerbert Xue<!-- on Tue May 19 17:01:55 PDT 2009 --> 5*dc5640d1SHerbert Xue 6*dc5640d1SHerbert Xue<api 7*dc5640d1SHerbert Xue xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 8*dc5640d1SHerbert Xue xsi:noNamespaceSchemaLocation='api.xsd' 9*dc5640d1SHerbert Xue name="2.0" 10*dc5640d1SHerbert Xue jdversion="1.1.1"> 11*dc5640d1SHerbert Xue 12*dc5640d1SHerbert Xue<!-- Command line arguments = -doclet jdiff.JDiff -docletpath /Applications/bin/jdiff-1.1.1/jdiff.jar:/Applications/bin/jdiff-1.1.1/xerces.jar -d /Users/jessewilson/Guice/guice-everything/api-diffs -classpath /usr/share/ant/lib/ant-launcher.jar:/usr/share/ant/lib/ant-jai.jar:/usr/share/ant/lib/ant-jmf.jar:/usr/share/ant/lib/ant-junit.jar:/usr/share/ant/lib/ant-nodeps.jar:/usr/share/ant/lib/ant-swing.jar:/usr/share/ant/lib/ant-testutil.jar:/usr/share/ant/lib/ant-trax.jar:/usr/share/ant/lib/ant.jar:/usr/share/ant/lib/junit.jar:/usr/share/ant/lib/xercesImpl.jar:/usr/share/ant/lib/xml-apis.jar -sourcepath /Users/jessewilson/Guice/google-guice/src:/Users/jessewilson/Guice/google-guice/extensions/jmx/src:/Users/jessewilson/Guice/google-guice/extensions/jndi/src:/Users/jessewilson/Guice/google-guice/extensions/assistedinject/src:/Users/jessewilson/Guice/google-guice/extensions/multibindings/src:/Users/jessewilson/Guice/google-guice/extensions/throwingproviders/src:/Users/jessewilson/Guice/google-guice/servlet/src:/Users/jessewilson/Guice/google-guice/spring/src:/Users/jessewilson/Guice/google-guice/struts2/plugin/src -apiname 2.0 -baseURI http://www.w3.org -apidir /Users/jessewilson/Guice/guice-everything/api-diffs -source 1.5 --> 13*dc5640d1SHerbert Xue<package name="com.google.inject"> 14*dc5640d1SHerbert Xue <!-- start class com.google.inject.AbstractModule --> 15*dc5640d1SHerbert Xue <class name="AbstractModule" extends="java.lang.Object" 16*dc5640d1SHerbert Xue abstract="true" 17*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 18*dc5640d1SHerbert Xue deprecated="not deprecated"> 19*dc5640d1SHerbert Xue <implements name="com.google.inject.Module"/> 20*dc5640d1SHerbert Xue <constructor name="AbstractModule" 21*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 22*dc5640d1SHerbert Xue deprecated="not deprecated"> 23*dc5640d1SHerbert Xue </constructor> 24*dc5640d1SHerbert Xue <method name="configure" 25*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="true" 26*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 27*dc5640d1SHerbert Xue deprecated="not deprecated"> 28*dc5640d1SHerbert Xue <param name="builder" type="com.google.inject.Binder"/> 29*dc5640d1SHerbert Xue </method> 30*dc5640d1SHerbert Xue <method name="configure" 31*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 32*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 33*dc5640d1SHerbert Xue deprecated="not deprecated"> 34*dc5640d1SHerbert Xue <doc> 35*dc5640d1SHerbert Xue <![CDATA[Configures a {@link Binder} via the exposed methods.]]> 36*dc5640d1SHerbert Xue </doc> 37*dc5640d1SHerbert Xue </method> 38*dc5640d1SHerbert Xue <method name="binder" return="com.google.inject.Binder" 39*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 40*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 41*dc5640d1SHerbert Xue deprecated="not deprecated"> 42*dc5640d1SHerbert Xue <doc> 43*dc5640d1SHerbert Xue <![CDATA[Gets direct access to the underlying {@code Binder}.]]> 44*dc5640d1SHerbert Xue </doc> 45*dc5640d1SHerbert Xue </method> 46*dc5640d1SHerbert Xue <method name="bindScope" 47*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 48*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 49*dc5640d1SHerbert Xue deprecated="not deprecated"> 50*dc5640d1SHerbert Xue <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 51*dc5640d1SHerbert Xue <param name="scope" type="com.google.inject.Scope"/> 52*dc5640d1SHerbert Xue <doc> 53*dc5640d1SHerbert Xue <![CDATA[@see Binder#bindScope(Class, Scope)]]> 54*dc5640d1SHerbert Xue </doc> 55*dc5640d1SHerbert Xue </method> 56*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder<T>" 57*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 58*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 59*dc5640d1SHerbert Xue deprecated="not deprecated"> 60*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 61*dc5640d1SHerbert Xue <doc> 62*dc5640d1SHerbert Xue <![CDATA[@see Binder#bind(Key)]]> 63*dc5640d1SHerbert Xue </doc> 64*dc5640d1SHerbert Xue </method> 65*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 66*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 67*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 68*dc5640d1SHerbert Xue deprecated="not deprecated"> 69*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 70*dc5640d1SHerbert Xue <doc> 71*dc5640d1SHerbert Xue <![CDATA[@see Binder#bind(TypeLiteral)]]> 72*dc5640d1SHerbert Xue </doc> 73*dc5640d1SHerbert Xue </method> 74*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 75*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 76*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 77*dc5640d1SHerbert Xue deprecated="not deprecated"> 78*dc5640d1SHerbert Xue <param name="clazz" type="java.lang.Class<T>"/> 79*dc5640d1SHerbert Xue <doc> 80*dc5640d1SHerbert Xue <![CDATA[@see Binder#bind(Class)]]> 81*dc5640d1SHerbert Xue </doc> 82*dc5640d1SHerbert Xue </method> 83*dc5640d1SHerbert Xue <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder" 84*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 85*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 86*dc5640d1SHerbert Xue deprecated="not deprecated"> 87*dc5640d1SHerbert Xue <doc> 88*dc5640d1SHerbert Xue <![CDATA[@see Binder#bindConstant()]]> 89*dc5640d1SHerbert Xue </doc> 90*dc5640d1SHerbert Xue </method> 91*dc5640d1SHerbert Xue <method name="install" 92*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 93*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 94*dc5640d1SHerbert Xue deprecated="not deprecated"> 95*dc5640d1SHerbert Xue <param name="module" type="com.google.inject.Module"/> 96*dc5640d1SHerbert Xue <doc> 97*dc5640d1SHerbert Xue <![CDATA[@see Binder#install(Module)]]> 98*dc5640d1SHerbert Xue </doc> 99*dc5640d1SHerbert Xue </method> 100*dc5640d1SHerbert Xue <method name="addError" 101*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 102*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 103*dc5640d1SHerbert Xue deprecated="not deprecated"> 104*dc5640d1SHerbert Xue <param name="message" type="java.lang.String"/> 105*dc5640d1SHerbert Xue <param name="arguments" type="java.lang.Object[]"/> 106*dc5640d1SHerbert Xue <doc> 107*dc5640d1SHerbert Xue <![CDATA[@see Binder#addError(String, Object[])]]> 108*dc5640d1SHerbert Xue </doc> 109*dc5640d1SHerbert Xue </method> 110*dc5640d1SHerbert Xue <method name="addError" 111*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 112*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 113*dc5640d1SHerbert Xue deprecated="not deprecated"> 114*dc5640d1SHerbert Xue <param name="t" type="java.lang.Throwable"/> 115*dc5640d1SHerbert Xue <doc> 116*dc5640d1SHerbert Xue <![CDATA[@see Binder#addError(Throwable)]]> 117*dc5640d1SHerbert Xue </doc> 118*dc5640d1SHerbert Xue </method> 119*dc5640d1SHerbert Xue <method name="addError" 120*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 121*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 122*dc5640d1SHerbert Xue deprecated="not deprecated"> 123*dc5640d1SHerbert Xue <param name="message" type="com.google.inject.spi.Message"/> 124*dc5640d1SHerbert Xue <doc> 125*dc5640d1SHerbert Xue <![CDATA[@see Binder#addError(Message) 126*dc5640d1SHerbert Xue @since 2.0]]> 127*dc5640d1SHerbert Xue </doc> 128*dc5640d1SHerbert Xue </method> 129*dc5640d1SHerbert Xue <method name="requestInjection" 130*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 131*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 132*dc5640d1SHerbert Xue deprecated="not deprecated"> 133*dc5640d1SHerbert Xue <param name="instance" type="java.lang.Object"/> 134*dc5640d1SHerbert Xue <doc> 135*dc5640d1SHerbert Xue <![CDATA[@see Binder#requestInjection(Object) 136*dc5640d1SHerbert Xue @since 2.0]]> 137*dc5640d1SHerbert Xue </doc> 138*dc5640d1SHerbert Xue </method> 139*dc5640d1SHerbert Xue <method name="requestStaticInjection" 140*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 141*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 142*dc5640d1SHerbert Xue deprecated="not deprecated"> 143*dc5640d1SHerbert Xue <param name="types" type="java.lang.Class[]"/> 144*dc5640d1SHerbert Xue <doc> 145*dc5640d1SHerbert Xue <![CDATA[@see Binder#requestStaticInjection(Class[])]]> 146*dc5640d1SHerbert Xue </doc> 147*dc5640d1SHerbert Xue </method> 148*dc5640d1SHerbert Xue <method name="bindInterceptor" 149*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 150*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 151*dc5640d1SHerbert Xue deprecated="not deprecated"> 152*dc5640d1SHerbert Xue <param name="classMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>"/> 153*dc5640d1SHerbert Xue <param name="methodMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>"/> 154*dc5640d1SHerbert Xue <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/> 155*dc5640d1SHerbert Xue <doc> 156*dc5640d1SHerbert Xue <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher, 157*dc5640d1SHerbert Xue com.google.inject.matcher.Matcher, 158*dc5640d1SHerbert Xue org.aopalliance.intercept.MethodInterceptor[])]]> 159*dc5640d1SHerbert Xue </doc> 160*dc5640d1SHerbert Xue </method> 161*dc5640d1SHerbert Xue <method name="requireBinding" 162*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 163*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 164*dc5640d1SHerbert Xue deprecated="not deprecated"> 165*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 166*dc5640d1SHerbert Xue <doc> 167*dc5640d1SHerbert Xue <![CDATA[Adds a dependency from this module to {@code key}. When the injector is 168*dc5640d1SHerbert Xue created, Guice will report an error if {@code key} cannot be injected. 169*dc5640d1SHerbert Xue Note that this requirement may be satisfied by implicit binding, such as 170*dc5640d1SHerbert Xue a public no-arguments constructor. 171*dc5640d1SHerbert Xue 172*dc5640d1SHerbert Xue @since 2.0]]> 173*dc5640d1SHerbert Xue </doc> 174*dc5640d1SHerbert Xue </method> 175*dc5640d1SHerbert Xue <method name="requireBinding" 176*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 177*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 178*dc5640d1SHerbert Xue deprecated="not deprecated"> 179*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<?>"/> 180*dc5640d1SHerbert Xue <doc> 181*dc5640d1SHerbert Xue <![CDATA[Adds a dependency from this module to {@code type}. When the injector is 182*dc5640d1SHerbert Xue created, Guice will report an error if {@code type} cannot be injected. 183*dc5640d1SHerbert Xue Note that this requirement may be satisfied by implicit binding, such as 184*dc5640d1SHerbert Xue a public no-arguments constructor. 185*dc5640d1SHerbert Xue 186*dc5640d1SHerbert Xue @since 2.0]]> 187*dc5640d1SHerbert Xue </doc> 188*dc5640d1SHerbert Xue </method> 189*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 190*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 191*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 192*dc5640d1SHerbert Xue deprecated="not deprecated"> 193*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 194*dc5640d1SHerbert Xue <doc> 195*dc5640d1SHerbert Xue <![CDATA[@see Binder#getProvider(Key) 196*dc5640d1SHerbert Xue @since 2.0]]> 197*dc5640d1SHerbert Xue </doc> 198*dc5640d1SHerbert Xue </method> 199*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 200*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 201*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 202*dc5640d1SHerbert Xue deprecated="not deprecated"> 203*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 204*dc5640d1SHerbert Xue <doc> 205*dc5640d1SHerbert Xue <![CDATA[@see Binder#getProvider(Class) 206*dc5640d1SHerbert Xue @since 2.0]]> 207*dc5640d1SHerbert Xue </doc> 208*dc5640d1SHerbert Xue </method> 209*dc5640d1SHerbert Xue <method name="convertToTypes" 210*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 211*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 212*dc5640d1SHerbert Xue deprecated="not deprecated"> 213*dc5640d1SHerbert Xue <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> 214*dc5640d1SHerbert Xue <param name="converter" type="com.google.inject.spi.TypeConverter"/> 215*dc5640d1SHerbert Xue <doc> 216*dc5640d1SHerbert Xue <![CDATA[@see Binder#convertToTypes 217*dc5640d1SHerbert Xue @since 2.0]]> 218*dc5640d1SHerbert Xue </doc> 219*dc5640d1SHerbert Xue </method> 220*dc5640d1SHerbert Xue <method name="currentStage" return="com.google.inject.Stage" 221*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 222*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 223*dc5640d1SHerbert Xue deprecated="not deprecated"> 224*dc5640d1SHerbert Xue <doc> 225*dc5640d1SHerbert Xue <![CDATA[@see Binder#currentStage() 226*dc5640d1SHerbert Xue @since 2.0]]> 227*dc5640d1SHerbert Xue </doc> 228*dc5640d1SHerbert Xue </method> 229*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 230*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 231*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 232*dc5640d1SHerbert Xue deprecated="not deprecated"> 233*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 234*dc5640d1SHerbert Xue <doc> 235*dc5640d1SHerbert Xue <![CDATA[@see Binder#getMembersInjector(Class) 236*dc5640d1SHerbert Xue @since 2.0]]> 237*dc5640d1SHerbert Xue </doc> 238*dc5640d1SHerbert Xue </method> 239*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 240*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 241*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 242*dc5640d1SHerbert Xue deprecated="not deprecated"> 243*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<T>"/> 244*dc5640d1SHerbert Xue <doc> 245*dc5640d1SHerbert Xue <![CDATA[@see Binder#getMembersInjector(TypeLiteral) 246*dc5640d1SHerbert Xue @since 2.0]]> 247*dc5640d1SHerbert Xue </doc> 248*dc5640d1SHerbert Xue </method> 249*dc5640d1SHerbert Xue <method name="bindListener" 250*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 251*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 252*dc5640d1SHerbert Xue deprecated="not deprecated"> 253*dc5640d1SHerbert Xue <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> 254*dc5640d1SHerbert Xue <param name="listener" type="com.google.inject.spi.TypeListener"/> 255*dc5640d1SHerbert Xue <doc> 256*dc5640d1SHerbert Xue <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher, 257*dc5640d1SHerbert Xue com.google.inject.spi.TypeListener) 258*dc5640d1SHerbert Xue @since 2.0]]> 259*dc5640d1SHerbert Xue </doc> 260*dc5640d1SHerbert Xue </method> 261*dc5640d1SHerbert Xue <doc> 262*dc5640d1SHerbert Xue <![CDATA[A support class for {@link Module}s which reduces repetition and results in 263*dc5640d1SHerbert Xue a more readable configuration. Simply extend this class, implement {@link 264*dc5640d1SHerbert Xue #configure()}, and call the inherited methods which mirror those found in 265*dc5640d1SHerbert Xue {@link Binder}. For example: 266*dc5640d1SHerbert Xue 267*dc5640d1SHerbert Xue <pre> 268*dc5640d1SHerbert Xue public class MyModule extends AbstractModule { 269*dc5640d1SHerbert Xue protected void configure() { 270*dc5640d1SHerbert Xue bind(Service.class).to(ServiceImpl.class).in(Singleton.class); 271*dc5640d1SHerbert Xue bind(CreditCardPaymentService.class); 272*dc5640d1SHerbert Xue bind(PaymentService.class).to(CreditCardPaymentService.class); 273*dc5640d1SHerbert Xue bindConstant().annotatedWith(Names.named("port")).to(8080); 274*dc5640d1SHerbert Xue } 275*dc5640d1SHerbert Xue } 276*dc5640d1SHerbert Xue </pre> 277*dc5640d1SHerbert Xue 278*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 279*dc5640d1SHerbert Xue </doc> 280*dc5640d1SHerbert Xue </class> 281*dc5640d1SHerbert Xue <!-- end class com.google.inject.AbstractModule --> 282*dc5640d1SHerbert Xue <!-- start interface com.google.inject.Binder --> 283*dc5640d1SHerbert Xue <interface name="Binder" abstract="true" 284*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 285*dc5640d1SHerbert Xue deprecated="not deprecated"> 286*dc5640d1SHerbert Xue <method name="bindInterceptor" 287*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 288*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 289*dc5640d1SHerbert Xue deprecated="not deprecated"> 290*dc5640d1SHerbert Xue <param name="classMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>"/> 291*dc5640d1SHerbert Xue <param name="methodMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>"/> 292*dc5640d1SHerbert Xue <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/> 293*dc5640d1SHerbert Xue <doc> 294*dc5640d1SHerbert Xue <![CDATA[Binds method interceptor[s] to methods matched by class and method matchers. A method is 295*dc5640d1SHerbert Xue eligible for interception if: 296*dc5640d1SHerbert Xue 297*dc5640d1SHerbert Xue <ul> 298*dc5640d1SHerbert Xue <li>Guice created the instance the method is on</li> 299*dc5640d1SHerbert Xue <li>Neither the enclosing type nor the method is final</li> 300*dc5640d1SHerbert Xue <li>And the method is package-private, protected, or public</li> 301*dc5640d1SHerbert Xue </ul> 302*dc5640d1SHerbert Xue 303*dc5640d1SHerbert Xue @param classMatcher matches classes the interceptor should apply to. For 304*dc5640d1SHerbert Xue example: {@code only(Runnable.class)}. 305*dc5640d1SHerbert Xue @param methodMatcher matches methods the interceptor should apply to. For 306*dc5640d1SHerbert Xue example: {@code annotatedWith(Transactional.class)}. 307*dc5640d1SHerbert Xue @param interceptors to bind]]> 308*dc5640d1SHerbert Xue </doc> 309*dc5640d1SHerbert Xue </method> 310*dc5640d1SHerbert Xue <method name="bindScope" 311*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 312*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 313*dc5640d1SHerbert Xue deprecated="not deprecated"> 314*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 315*dc5640d1SHerbert Xue <param name="scope" type="com.google.inject.Scope"/> 316*dc5640d1SHerbert Xue <doc> 317*dc5640d1SHerbert Xue <![CDATA[Binds a scope to an annotation.]]> 318*dc5640d1SHerbert Xue </doc> 319*dc5640d1SHerbert Xue </method> 320*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder<T>" 321*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 322*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 323*dc5640d1SHerbert Xue deprecated="not deprecated"> 324*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 325*dc5640d1SHerbert Xue <doc> 326*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link Binder}.]]> 327*dc5640d1SHerbert Xue </doc> 328*dc5640d1SHerbert Xue </method> 329*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 330*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 331*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 332*dc5640d1SHerbert Xue deprecated="not deprecated"> 333*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 334*dc5640d1SHerbert Xue <doc> 335*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link Binder}.]]> 336*dc5640d1SHerbert Xue </doc> 337*dc5640d1SHerbert Xue </method> 338*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 339*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 340*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 341*dc5640d1SHerbert Xue deprecated="not deprecated"> 342*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 343*dc5640d1SHerbert Xue <doc> 344*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link Binder}.]]> 345*dc5640d1SHerbert Xue </doc> 346*dc5640d1SHerbert Xue </method> 347*dc5640d1SHerbert Xue <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder" 348*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 349*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 350*dc5640d1SHerbert Xue deprecated="not deprecated"> 351*dc5640d1SHerbert Xue <doc> 352*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link Binder}.]]> 353*dc5640d1SHerbert Xue </doc> 354*dc5640d1SHerbert Xue </method> 355*dc5640d1SHerbert Xue <method name="requestInjection" 356*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 357*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 358*dc5640d1SHerbert Xue deprecated="not deprecated"> 359*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<T>"/> 360*dc5640d1SHerbert Xue <param name="instance" type="T"/> 361*dc5640d1SHerbert Xue <doc> 362*dc5640d1SHerbert Xue <![CDATA[Upon successful creation, the {@link Injector} will inject instance fields 363*dc5640d1SHerbert Xue and methods of the given object. 364*dc5640d1SHerbert Xue 365*dc5640d1SHerbert Xue @param type of instance 366*dc5640d1SHerbert Xue @param instance for which members will be injected 367*dc5640d1SHerbert Xue @since 2.0]]> 368*dc5640d1SHerbert Xue </doc> 369*dc5640d1SHerbert Xue </method> 370*dc5640d1SHerbert Xue <method name="requestInjection" 371*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 372*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 373*dc5640d1SHerbert Xue deprecated="not deprecated"> 374*dc5640d1SHerbert Xue <param name="instance" type="java.lang.Object"/> 375*dc5640d1SHerbert Xue <doc> 376*dc5640d1SHerbert Xue <![CDATA[Upon successful creation, the {@link Injector} will inject instance fields 377*dc5640d1SHerbert Xue and methods of the given object. 378*dc5640d1SHerbert Xue 379*dc5640d1SHerbert Xue @param instance for which members will be injected 380*dc5640d1SHerbert Xue @since 2.0]]> 381*dc5640d1SHerbert Xue </doc> 382*dc5640d1SHerbert Xue </method> 383*dc5640d1SHerbert Xue <method name="requestStaticInjection" 384*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 385*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 386*dc5640d1SHerbert Xue deprecated="not deprecated"> 387*dc5640d1SHerbert Xue <param name="types" type="java.lang.Class[]"/> 388*dc5640d1SHerbert Xue <doc> 389*dc5640d1SHerbert Xue <![CDATA[Upon successful creation, the {@link Injector} will inject static fields 390*dc5640d1SHerbert Xue and methods in the given classes. 391*dc5640d1SHerbert Xue 392*dc5640d1SHerbert Xue @param types for which static members will be injected]]> 393*dc5640d1SHerbert Xue </doc> 394*dc5640d1SHerbert Xue </method> 395*dc5640d1SHerbert Xue <method name="install" 396*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 397*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 398*dc5640d1SHerbert Xue deprecated="not deprecated"> 399*dc5640d1SHerbert Xue <param name="module" type="com.google.inject.Module"/> 400*dc5640d1SHerbert Xue <doc> 401*dc5640d1SHerbert Xue <![CDATA[Uses the given module to configure more bindings.]]> 402*dc5640d1SHerbert Xue </doc> 403*dc5640d1SHerbert Xue </method> 404*dc5640d1SHerbert Xue <method name="currentStage" return="com.google.inject.Stage" 405*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 406*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 407*dc5640d1SHerbert Xue deprecated="not deprecated"> 408*dc5640d1SHerbert Xue <doc> 409*dc5640d1SHerbert Xue <![CDATA[Gets the current stage.]]> 410*dc5640d1SHerbert Xue </doc> 411*dc5640d1SHerbert Xue </method> 412*dc5640d1SHerbert Xue <method name="addError" 413*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 414*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 415*dc5640d1SHerbert Xue deprecated="not deprecated"> 416*dc5640d1SHerbert Xue <param name="message" type="java.lang.String"/> 417*dc5640d1SHerbert Xue <param name="arguments" type="java.lang.Object[]"/> 418*dc5640d1SHerbert Xue <doc> 419*dc5640d1SHerbert Xue <![CDATA[Records an error message which will be presented to the user at a later 420*dc5640d1SHerbert Xue time. Unlike throwing an exception, this enable us to continue 421*dc5640d1SHerbert Xue configuring the Injector and discover more errors. Uses {@link 422*dc5640d1SHerbert Xue String#format(String, Object[])} to insert the arguments into the 423*dc5640d1SHerbert Xue message.]]> 424*dc5640d1SHerbert Xue </doc> 425*dc5640d1SHerbert Xue </method> 426*dc5640d1SHerbert Xue <method name="addError" 427*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 428*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 429*dc5640d1SHerbert Xue deprecated="not deprecated"> 430*dc5640d1SHerbert Xue <param name="t" type="java.lang.Throwable"/> 431*dc5640d1SHerbert Xue <doc> 432*dc5640d1SHerbert Xue <![CDATA[Records an exception, the full details of which will be logged, and the 433*dc5640d1SHerbert Xue message of which will be presented to the user at a later 434*dc5640d1SHerbert Xue time. If your Module calls something that you worry may fail, you should 435*dc5640d1SHerbert Xue catch the exception and pass it into this.]]> 436*dc5640d1SHerbert Xue </doc> 437*dc5640d1SHerbert Xue </method> 438*dc5640d1SHerbert Xue <method name="addError" 439*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 440*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 441*dc5640d1SHerbert Xue deprecated="not deprecated"> 442*dc5640d1SHerbert Xue <param name="message" type="com.google.inject.spi.Message"/> 443*dc5640d1SHerbert Xue <doc> 444*dc5640d1SHerbert Xue <![CDATA[Records an error message to be presented to the user at a later time. 445*dc5640d1SHerbert Xue 446*dc5640d1SHerbert Xue @since 2.0]]> 447*dc5640d1SHerbert Xue </doc> 448*dc5640d1SHerbert Xue </method> 449*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 450*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 451*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 452*dc5640d1SHerbert Xue deprecated="not deprecated"> 453*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 454*dc5640d1SHerbert Xue <doc> 455*dc5640d1SHerbert Xue <![CDATA[Returns the provider used to obtain instances for the given injection key. 456*dc5640d1SHerbert Xue The returned will not be valid until the {@link Injector} has been 457*dc5640d1SHerbert Xue created. The provider will throw an {@code IllegalStateException} if you 458*dc5640d1SHerbert Xue try to use it beforehand. 459*dc5640d1SHerbert Xue 460*dc5640d1SHerbert Xue @since 2.0]]> 461*dc5640d1SHerbert Xue </doc> 462*dc5640d1SHerbert Xue </method> 463*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 464*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 465*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 466*dc5640d1SHerbert Xue deprecated="not deprecated"> 467*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 468*dc5640d1SHerbert Xue <doc> 469*dc5640d1SHerbert Xue <![CDATA[Returns the provider used to obtain instances for the given injection type. 470*dc5640d1SHerbert Xue The returned provider will not be valid until the {@link Injector} has been 471*dc5640d1SHerbert Xue created. The provider will throw an {@code IllegalStateException} if you 472*dc5640d1SHerbert Xue try to use it beforehand. 473*dc5640d1SHerbert Xue 474*dc5640d1SHerbert Xue @since 2.0]]> 475*dc5640d1SHerbert Xue </doc> 476*dc5640d1SHerbert Xue </method> 477*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 478*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 479*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 480*dc5640d1SHerbert Xue deprecated="not deprecated"> 481*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 482*dc5640d1SHerbert Xue <doc> 483*dc5640d1SHerbert Xue <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 484*dc5640d1SHerbert Xue of the given type {@code T}. The returned members injector will not be valid until the main 485*dc5640d1SHerbert Xue {@link Injector} has been created. The members injector will throw an {@code 486*dc5640d1SHerbert Xue IllegalStateException} if you try to use it beforehand. 487*dc5640d1SHerbert Xue 488*dc5640d1SHerbert Xue @param typeLiteral type to get members injector for 489*dc5640d1SHerbert Xue @since 2.0]]> 490*dc5640d1SHerbert Xue </doc> 491*dc5640d1SHerbert Xue </method> 492*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 493*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 494*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 495*dc5640d1SHerbert Xue deprecated="not deprecated"> 496*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 497*dc5640d1SHerbert Xue <doc> 498*dc5640d1SHerbert Xue <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 499*dc5640d1SHerbert Xue of the given type {@code T}. The returned members injector will not be valid until the main 500*dc5640d1SHerbert Xue {@link Injector} has been created. The members injector will throw an {@code 501*dc5640d1SHerbert Xue IllegalStateException} if you try to use it beforehand. 502*dc5640d1SHerbert Xue 503*dc5640d1SHerbert Xue @param type type to get members injector for 504*dc5640d1SHerbert Xue @since 2.0]]> 505*dc5640d1SHerbert Xue </doc> 506*dc5640d1SHerbert Xue </method> 507*dc5640d1SHerbert Xue <method name="convertToTypes" 508*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 509*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 510*dc5640d1SHerbert Xue deprecated="not deprecated"> 511*dc5640d1SHerbert Xue <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> 512*dc5640d1SHerbert Xue <param name="converter" type="com.google.inject.spi.TypeConverter"/> 513*dc5640d1SHerbert Xue <doc> 514*dc5640d1SHerbert Xue <![CDATA[Binds a type converter. The injector will use the given converter to 515*dc5640d1SHerbert Xue convert string constants to matching types as needed. 516*dc5640d1SHerbert Xue 517*dc5640d1SHerbert Xue @param typeMatcher matches types the converter can handle 518*dc5640d1SHerbert Xue @param converter converts values 519*dc5640d1SHerbert Xue @since 2.0]]> 520*dc5640d1SHerbert Xue </doc> 521*dc5640d1SHerbert Xue </method> 522*dc5640d1SHerbert Xue <method name="bindListener" 523*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 524*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 525*dc5640d1SHerbert Xue deprecated="not deprecated"> 526*dc5640d1SHerbert Xue <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> 527*dc5640d1SHerbert Xue <param name="listener" type="com.google.inject.spi.TypeListener"/> 528*dc5640d1SHerbert Xue <doc> 529*dc5640d1SHerbert Xue <![CDATA[Registers a listener for injectable types. Guice will notify the listener when it encounters 530*dc5640d1SHerbert Xue injectable types matched by the given type matcher. 531*dc5640d1SHerbert Xue 532*dc5640d1SHerbert Xue @param typeMatcher that matches injectable types the listener should be notified of 533*dc5640d1SHerbert Xue @param listener for injectable types matched by typeMatcher 534*dc5640d1SHerbert Xue @since 2.0]]> 535*dc5640d1SHerbert Xue </doc> 536*dc5640d1SHerbert Xue </method> 537*dc5640d1SHerbert Xue <method name="withSource" return="com.google.inject.Binder" 538*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 539*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 540*dc5640d1SHerbert Xue deprecated="not deprecated"> 541*dc5640d1SHerbert Xue <param name="source" type="java.lang.Object"/> 542*dc5640d1SHerbert Xue <doc> 543*dc5640d1SHerbert Xue <![CDATA[Returns a binder that uses {@code source} as the reference location for 544*dc5640d1SHerbert Xue configuration errors. This is typically a {@link StackTraceElement} 545*dc5640d1SHerbert Xue for {@code .java} source but it could any binding source, such as the 546*dc5640d1SHerbert Xue path to a {@code .properties} file. 547*dc5640d1SHerbert Xue 548*dc5640d1SHerbert Xue @param source any object representing the source location and has a 549*dc5640d1SHerbert Xue concise {@link Object#toString() toString()} value 550*dc5640d1SHerbert Xue @return a binder that shares its configuration with this binder 551*dc5640d1SHerbert Xue @since 2.0]]> 552*dc5640d1SHerbert Xue </doc> 553*dc5640d1SHerbert Xue </method> 554*dc5640d1SHerbert Xue <method name="skipSources" return="com.google.inject.Binder" 555*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 556*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 557*dc5640d1SHerbert Xue deprecated="not deprecated"> 558*dc5640d1SHerbert Xue <param name="classesToSkip" type="java.lang.Class[]"/> 559*dc5640d1SHerbert Xue <doc> 560*dc5640d1SHerbert Xue <![CDATA[Returns a binder that skips {@code classesToSkip} when identify the 561*dc5640d1SHerbert Xue calling code. The caller's {@link StackTraceElement} is used to locate 562*dc5640d1SHerbert Xue the source of configuration errors. 563*dc5640d1SHerbert Xue 564*dc5640d1SHerbert Xue @param classesToSkip library classes that create bindings on behalf of 565*dc5640d1SHerbert Xue their clients. 566*dc5640d1SHerbert Xue @return a binder that shares its configuration with this binder. 567*dc5640d1SHerbert Xue @since 2.0]]> 568*dc5640d1SHerbert Xue </doc> 569*dc5640d1SHerbert Xue </method> 570*dc5640d1SHerbert Xue <method name="newPrivateBinder" return="com.google.inject.PrivateBinder" 571*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 572*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 573*dc5640d1SHerbert Xue deprecated="not deprecated"> 574*dc5640d1SHerbert Xue <doc> 575*dc5640d1SHerbert Xue <![CDATA[Creates a new private child environment for bindings and other configuration. The returned 576*dc5640d1SHerbert Xue binder can be used to add and configuration information in this environment. See {@link 577*dc5640d1SHerbert Xue PrivateModule} for details. 578*dc5640d1SHerbert Xue 579*dc5640d1SHerbert Xue @return a binder that inherits configuration from this binder. Only exposed configuration on 580*dc5640d1SHerbert Xue the returned binder will be visible to this binder. 581*dc5640d1SHerbert Xue @since 2.0]]> 582*dc5640d1SHerbert Xue </doc> 583*dc5640d1SHerbert Xue </method> 584*dc5640d1SHerbert Xue <doc> 585*dc5640d1SHerbert Xue <![CDATA[Collects configuration information (primarily <i>bindings</i>) which will be 586*dc5640d1SHerbert Xue used to create an {@link Injector}. Guice provides this object to your 587*dc5640d1SHerbert Xue application's {@link Module} implementors so they may each contribute 588*dc5640d1SHerbert Xue their own bindings and other registrations. 589*dc5640d1SHerbert Xue 590*dc5640d1SHerbert Xue <h3>The Guice Binding EDSL</h3> 591*dc5640d1SHerbert Xue 592*dc5640d1SHerbert Xue Guice uses an <i>embedded domain-specific language</i>, or EDSL, to help you 593*dc5640d1SHerbert Xue create bindings simply and readably. This approach is great for overall 594*dc5640d1SHerbert Xue usability, but it does come with a small cost: <b>it is difficult to 595*dc5640d1SHerbert Xue learn how to use the Binding EDSL by reading 596*dc5640d1SHerbert Xue method-level javadocs</b>. Instead, you should consult the series of 597*dc5640d1SHerbert Xue examples below. To save space, these examples omit the opening 598*dc5640d1SHerbert Xue {@code binder}, just as you will if your module extends 599*dc5640d1SHerbert Xue {@link AbstractModule}. 600*dc5640d1SHerbert Xue 601*dc5640d1SHerbert Xue <pre> 602*dc5640d1SHerbert Xue bind(ServiceImpl.class);</pre> 603*dc5640d1SHerbert Xue 604*dc5640d1SHerbert Xue This statement does essentially nothing; it "binds the {@code ServiceImpl} 605*dc5640d1SHerbert Xue class to itself" and does not change Guice's default behavior. You may still 606*dc5640d1SHerbert Xue want to use this if you prefer your {@link Module} class to serve as an 607*dc5640d1SHerbert Xue explicit <i>manifest</i> for the services it provides. Also, in rare cases, 608*dc5640d1SHerbert Xue Guice may be unable to validate a binding at injector creation time unless it 609*dc5640d1SHerbert Xue is given explicitly. 610*dc5640d1SHerbert Xue 611*dc5640d1SHerbert Xue <pre> 612*dc5640d1SHerbert Xue bind(Service.class).to(ServiceImpl.class);</pre> 613*dc5640d1SHerbert Xue 614*dc5640d1SHerbert Xue Specifies that a request for a {@code Service} instance with no binding 615*dc5640d1SHerbert Xue annotations should be treated as if it were a request for a 616*dc5640d1SHerbert Xue {@code ServiceImpl} instance. This <i>overrides</i> the function of any 617*dc5640d1SHerbert Xue {@link ImplementedBy @ImplementedBy} or {@link ProvidedBy @ProvidedBy} 618*dc5640d1SHerbert Xue annotations found on {@code Service}, since Guice will have already 619*dc5640d1SHerbert Xue "moved on" to {@code ServiceImpl} before it reaches the point when it starts 620*dc5640d1SHerbert Xue looking for these annotations. 621*dc5640d1SHerbert Xue 622*dc5640d1SHerbert Xue <pre> 623*dc5640d1SHerbert Xue bind(Service.class).toProvider(ServiceProvider.class);</pre> 624*dc5640d1SHerbert Xue 625*dc5640d1SHerbert Xue In this example, {@code ServiceProvider} must extend or implement 626*dc5640d1SHerbert Xue {@code Provider<Service>}. This binding specifies that Guice should resolve 627*dc5640d1SHerbert Xue an unannotated injection request for {@code Service} by first resolving an 628*dc5640d1SHerbert Xue instance of {@code ServiceProvider} in the regular way, then calling 629*dc5640d1SHerbert Xue {@link Provider#get get()} on the resulting Provider instance to obtain the 630*dc5640d1SHerbert Xue {@code Service} instance. 631*dc5640d1SHerbert Xue 632*dc5640d1SHerbert Xue <p>The {@link Provider} you use here does not have to be a "factory"; that 633*dc5640d1SHerbert Xue is, a provider which always <i>creates</i> each instance it provides. 634*dc5640d1SHerbert Xue However, this is generally a good practice to follow. You can then use 635*dc5640d1SHerbert Xue Guice's concept of {@link Scope scopes} to guide when creation should happen 636*dc5640d1SHerbert Xue -- "letting Guice work for you". 637*dc5640d1SHerbert Xue 638*dc5640d1SHerbert Xue <pre> 639*dc5640d1SHerbert Xue bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class);</pre> 640*dc5640d1SHerbert Xue 641*dc5640d1SHerbert Xue Like the previous example, but only applies to injection requests that use 642*dc5640d1SHerbert Xue the binding annotation {@code @Red}. If your module also includes bindings 643*dc5640d1SHerbert Xue for particular <i>values</i> of the {@code @Red} annotation (see below), 644*dc5640d1SHerbert Xue then this binding will serve as a "catch-all" for any values of {@code @Red} 645*dc5640d1SHerbert Xue that have no exact match in the bindings. 646*dc5640d1SHerbert Xue 647*dc5640d1SHerbert Xue <pre> 648*dc5640d1SHerbert Xue bind(ServiceImpl.class).in(Singleton.class); 649*dc5640d1SHerbert Xue // or, alternatively 650*dc5640d1SHerbert Xue bind(ServiceImpl.class).in(Scopes.SINGLETON);</pre> 651*dc5640d1SHerbert Xue 652*dc5640d1SHerbert Xue Either of these statements places the {@code ServiceImpl} class into 653*dc5640d1SHerbert Xue singleton scope. Guice will create only one instance of {@code ServiceImpl} 654*dc5640d1SHerbert Xue and will reuse it for all injection requests of this type. Note that it is 655*dc5640d1SHerbert Xue still possible to bind another instance of {@code ServiceImpl} if the second 656*dc5640d1SHerbert Xue binding is qualified by an annotation as in the previous example. Guice is 657*dc5640d1SHerbert Xue not overly concerned with <i>preventing</i> you from creating multiple 658*dc5640d1SHerbert Xue instances of your "singletons", only with <i>enabling</i> your application to 659*dc5640d1SHerbert Xue share only one instance if that's all you tell Guice you need. 660*dc5640d1SHerbert Xue 661*dc5640d1SHerbert Xue <p><b>Note:</b> a scope specified in this way <i>overrides</i> any scope that 662*dc5640d1SHerbert Xue was specified with an annotation on the {@code ServiceImpl} class. 663*dc5640d1SHerbert Xue 664*dc5640d1SHerbert Xue <p>Besides {@link Singleton}/{@link Scopes#SINGLETON}, there are 665*dc5640d1SHerbert Xue servlet-specific scopes available in 666*dc5640d1SHerbert Xue {@code com.google.inject.servlet.ServletScopes}, and your Modules can 667*dc5640d1SHerbert Xue contribute their own custom scopes for use here as well. 668*dc5640d1SHerbert Xue 669*dc5640d1SHerbert Xue <pre> 670*dc5640d1SHerbert Xue bind(new TypeLiteral<PaymentService<CreditCard>>() {}) 671*dc5640d1SHerbert Xue .to(CreditCardPaymentService.class);</pre> 672*dc5640d1SHerbert Xue 673*dc5640d1SHerbert Xue This admittedly odd construct is the way to bind a parameterized type. It 674*dc5640d1SHerbert Xue tells Guice how to honor an injection request for an element of type 675*dc5640d1SHerbert Xue {@code PaymentService<CreditCard>}. The class 676*dc5640d1SHerbert Xue {@code CreditCardPaymentService} must implement the 677*dc5640d1SHerbert Xue {@code PaymentService<CreditCard>} interface. Guice cannot currently bind or 678*dc5640d1SHerbert Xue inject a generic type, such as {@code Set<E>}; all type parameters must be 679*dc5640d1SHerbert Xue fully specified. 680*dc5640d1SHerbert Xue 681*dc5640d1SHerbert Xue <pre> 682*dc5640d1SHerbert Xue bind(Service.class).toInstance(new ServiceImpl()); 683*dc5640d1SHerbert Xue // or, alternatively 684*dc5640d1SHerbert Xue bind(Service.class).toInstance(SomeLegacyRegistry.getService());</pre> 685*dc5640d1SHerbert Xue 686*dc5640d1SHerbert Xue In this example, your module itself, <i>not Guice</i>, takes responsibility 687*dc5640d1SHerbert Xue for obtaining a {@code ServiceImpl} instance, then asks Guice to always use 688*dc5640d1SHerbert Xue this single instance to fulfill all {@code Service} injection requests. When 689*dc5640d1SHerbert Xue the {@link Injector} is created, it will automatically perform field 690*dc5640d1SHerbert Xue and method injection for this instance, but any injectable constructor on 691*dc5640d1SHerbert Xue {@code ServiceImpl} is simply ignored. Note that using this approach results 692*dc5640d1SHerbert Xue in "eager loading" behavior that you can't control. 693*dc5640d1SHerbert Xue 694*dc5640d1SHerbert Xue <pre> 695*dc5640d1SHerbert Xue bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre> 696*dc5640d1SHerbert Xue 697*dc5640d1SHerbert Xue Sets up a constant binding. Constant injections must always be annotated. 698*dc5640d1SHerbert Xue When a constant binding's value is a string, it is eligile for conversion to 699*dc5640d1SHerbert Xue all primitive types, to {@link Enum#valueOf(Class, String) all enums}, and to 700*dc5640d1SHerbert Xue {@link Class#forName class literals}. Conversions for other types can be 701*dc5640d1SHerbert Xue configured using {@link #convertToTypes(Matcher, TypeConverter) 702*dc5640d1SHerbert Xue convertToTypes()}. 703*dc5640d1SHerbert Xue 704*dc5640d1SHerbert Xue <pre> 705*dc5640d1SHerbert Xue {@literal @}Color("red") Color red; // A member variable (field) 706*dc5640d1SHerbert Xue . . . 707*dc5640d1SHerbert Xue red = MyModule.class.getDeclaredField("red").getAnnotation(Color.class); 708*dc5640d1SHerbert Xue bind(Service.class).annotatedWith(red).to(RedService.class);</pre> 709*dc5640d1SHerbert Xue 710*dc5640d1SHerbert Xue If your binding annotation has parameters you can apply different bindings to 711*dc5640d1SHerbert Xue different specific values of your annotation. Getting your hands on the 712*dc5640d1SHerbert Xue right instance of the annotation is a bit of a pain -- one approach, shown 713*dc5640d1SHerbert Xue above, is to apply a prototype annotation to a field in your module class, so 714*dc5640d1SHerbert Xue that you can read this annotation instance and give it to Guice. 715*dc5640d1SHerbert Xue 716*dc5640d1SHerbert Xue <pre> 717*dc5640d1SHerbert Xue bind(Service.class) 718*dc5640d1SHerbert Xue .annotatedWith(Names.named("blue")) 719*dc5640d1SHerbert Xue .to(BlueService.class);</pre> 720*dc5640d1SHerbert Xue 721*dc5640d1SHerbert Xue Differentiating by names is a common enough use case that we provided a 722*dc5640d1SHerbert Xue standard annotation, {@link com.google.inject.name.Named @Named}. Because of 723*dc5640d1SHerbert Xue Guice's library support, binding by name is quite easier than in the 724*dc5640d1SHerbert Xue arbitrary binding annotation case we just saw. However, remember that these 725*dc5640d1SHerbert Xue names will live in a single flat namespace with all the other names used in 726*dc5640d1SHerbert Xue your application. 727*dc5640d1SHerbert Xue 728*dc5640d1SHerbert Xue <p>The above list of examples is far from exhaustive. If you can think of 729*dc5640d1SHerbert Xue how the concepts of one example might coexist with the concepts from another, 730*dc5640d1SHerbert Xue you can most likely weave the two together. If the two concepts make no 731*dc5640d1SHerbert Xue sense with each other, you most likely won't be able to do it. In a few 732*dc5640d1SHerbert Xue cases Guice will let something bogus slip by, and will then inform you of 733*dc5640d1SHerbert Xue the problems at runtime, as soon as you try to create your Injector. 734*dc5640d1SHerbert Xue 735*dc5640d1SHerbert Xue <p>The other methods of Binder such as {@link #bindScope}, 736*dc5640d1SHerbert Xue {@link #bindInterceptor}, {@link #install}, {@link #requestStaticInjection}, 737*dc5640d1SHerbert Xue {@link #addError} and {@link #currentStage} are not part of the Binding EDSL; 738*dc5640d1SHerbert Xue you can learn how to use these in the usual way, from the method 739*dc5640d1SHerbert Xue documentation. 740*dc5640d1SHerbert Xue 741*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 742*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 743*dc5640d1SHerbert Xue @author [email protected] (Kevin Bourrillion)]]> 744*dc5640d1SHerbert Xue </doc> 745*dc5640d1SHerbert Xue </interface> 746*dc5640d1SHerbert Xue <!-- end interface com.google.inject.Binder --> 747*dc5640d1SHerbert Xue <!-- start interface com.google.inject.Binding --> 748*dc5640d1SHerbert Xue <interface name="Binding" abstract="true" 749*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 750*dc5640d1SHerbert Xue deprecated="not deprecated"> 751*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 752*dc5640d1SHerbert Xue <method name="getKey" return="com.google.inject.Key<T>" 753*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 754*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 755*dc5640d1SHerbert Xue deprecated="not deprecated"> 756*dc5640d1SHerbert Xue <doc> 757*dc5640d1SHerbert Xue <![CDATA[Returns the key for this binding.]]> 758*dc5640d1SHerbert Xue </doc> 759*dc5640d1SHerbert Xue </method> 760*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 761*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 762*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 763*dc5640d1SHerbert Xue deprecated="not deprecated"> 764*dc5640d1SHerbert Xue <doc> 765*dc5640d1SHerbert Xue <![CDATA[Returns the scoped provider guice uses to fulfill requests for this 766*dc5640d1SHerbert Xue binding. 767*dc5640d1SHerbert Xue 768*dc5640d1SHerbert Xue @throws UnsupportedOperationException when invoked on a {@link Binding} 769*dc5640d1SHerbert Xue created via {@link com.google.inject.spi.Elements#getElements}. This 770*dc5640d1SHerbert Xue method is only supported on {@link Binding}s returned from an injector.]]> 771*dc5640d1SHerbert Xue </doc> 772*dc5640d1SHerbert Xue </method> 773*dc5640d1SHerbert Xue <method name="acceptTargetVisitor" return="V" 774*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 775*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 776*dc5640d1SHerbert Xue deprecated="not deprecated"> 777*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor<? super T, V>"/> 778*dc5640d1SHerbert Xue <doc> 779*dc5640d1SHerbert Xue <![CDATA[Accepts a target visitor. Invokes the visitor method specific to this binding's target. 780*dc5640d1SHerbert Xue 781*dc5640d1SHerbert Xue @param visitor to call back on 782*dc5640d1SHerbert Xue @since 2.0]]> 783*dc5640d1SHerbert Xue </doc> 784*dc5640d1SHerbert Xue </method> 785*dc5640d1SHerbert Xue <method name="acceptScopingVisitor" return="V" 786*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 787*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 788*dc5640d1SHerbert Xue deprecated="not deprecated"> 789*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.BindingScopingVisitor<V>"/> 790*dc5640d1SHerbert Xue <doc> 791*dc5640d1SHerbert Xue <![CDATA[Accepts a scoping visitor. Invokes the visitor method specific to this binding's scoping. 792*dc5640d1SHerbert Xue 793*dc5640d1SHerbert Xue @param visitor to call back on 794*dc5640d1SHerbert Xue @since 2.0]]> 795*dc5640d1SHerbert Xue </doc> 796*dc5640d1SHerbert Xue </method> 797*dc5640d1SHerbert Xue <doc> 798*dc5640d1SHerbert Xue <![CDATA[A mapping from a key (type and optional annotation) to the strategy for getting instances of the 799*dc5640d1SHerbert Xue type. This interface is part of the introspection API and is intended primarily for use by 800*dc5640d1SHerbert Xue tools. 801*dc5640d1SHerbert Xue 802*dc5640d1SHerbert Xue <p>Bindings are created in several ways: 803*dc5640d1SHerbert Xue <ul> 804*dc5640d1SHerbert Xue <li>Explicitly in a module, via {@code bind()} and {@code bindConstant()} 805*dc5640d1SHerbert Xue statements: 806*dc5640d1SHerbert Xue <pre> 807*dc5640d1SHerbert Xue bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class); 808*dc5640d1SHerbert Xue bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre></li> 809*dc5640d1SHerbert Xue <li>Implicitly by the Injector by following a type's {@link ImplementedBy 810*dc5640d1SHerbert Xue pointer} {@link ProvidedBy annotations} or by using its {@link Inject annotated} or 811*dc5640d1SHerbert Xue default constructor.</li> 812*dc5640d1SHerbert Xue <li>By converting a bound instance to a different type.</li> 813*dc5640d1SHerbert Xue <li>For {@link Provider providers}, by delegating to the binding for the provided type.</li> 814*dc5640d1SHerbert Xue </ul> 815*dc5640d1SHerbert Xue 816*dc5640d1SHerbert Xue 817*dc5640d1SHerbert Xue <p>They exist on both modules and on injectors, and their behaviour is different for each: 818*dc5640d1SHerbert Xue <ul> 819*dc5640d1SHerbert Xue <li><strong>Module bindings</strong> are incomplete and cannot be used to provide instances. 820*dc5640d1SHerbert Xue This is because the applicable scopes and interceptors may not be known until an injector 821*dc5640d1SHerbert Xue is created. From a tool's perspective, module bindings are like the injector's source 822*dc5640d1SHerbert Xue code. They can be inspected or rewritten, but this analysis must be done statically.</li> 823*dc5640d1SHerbert Xue <li><strong>Injector bindings</strong> are complete and valid and can be used to provide 824*dc5640d1SHerbert Xue instances. From a tools' perspective, injector bindings are like reflection for an 825*dc5640d1SHerbert Xue injector. They have full runtime information, including the complete graph of injections 826*dc5640d1SHerbert Xue necessary to satisfy a binding.</li> 827*dc5640d1SHerbert Xue </ul> 828*dc5640d1SHerbert Xue 829*dc5640d1SHerbert Xue @param <T> the bound type. The injected is always assignable to this type. 830*dc5640d1SHerbert Xue 831*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 832*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]> 833*dc5640d1SHerbert Xue </doc> 834*dc5640d1SHerbert Xue </interface> 835*dc5640d1SHerbert Xue <!-- end interface com.google.inject.Binding --> 836*dc5640d1SHerbert Xue <!-- start class com.google.inject.BindingAnnotation --> 837*dc5640d1SHerbert Xue <class name="BindingAnnotation" abstract="true" 838*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 839*dc5640d1SHerbert Xue deprecated="not deprecated"> 840*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 841*dc5640d1SHerbert Xue <doc> 842*dc5640d1SHerbert Xue <![CDATA[Annotates annotations which are used for binding. Only one such annotation 843*dc5640d1SHerbert Xue may apply to a single injection point. You must also annotate binder 844*dc5640d1SHerbert Xue annotations with {@code @Retention(RUNTIME)}. For example: 845*dc5640d1SHerbert Xue 846*dc5640d1SHerbert Xue <pre> 847*dc5640d1SHerbert Xue {@code @}Retention(RUNTIME) 848*dc5640d1SHerbert Xue {@code @}Target({ FIELD, PARAMETER, METHOD }) 849*dc5640d1SHerbert Xue {@code @}BindingAnnotation 850*dc5640d1SHerbert Xue public {@code @}interface Transactional {} 851*dc5640d1SHerbert Xue </pre> 852*dc5640d1SHerbert Xue 853*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 854*dc5640d1SHerbert Xue </doc> 855*dc5640d1SHerbert Xue </class> 856*dc5640d1SHerbert Xue <!-- end class com.google.inject.BindingAnnotation --> 857*dc5640d1SHerbert Xue <!-- start class com.google.inject.ConfigurationException --> 858*dc5640d1SHerbert Xue <class name="ConfigurationException" extends="java.lang.RuntimeException" 859*dc5640d1SHerbert Xue abstract="false" 860*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 861*dc5640d1SHerbert Xue deprecated="not deprecated"> 862*dc5640d1SHerbert Xue <constructor name="ConfigurationException" type="java.lang.Iterable<com.google.inject.spi.Message>" 863*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 864*dc5640d1SHerbert Xue deprecated="not deprecated"> 865*dc5640d1SHerbert Xue <doc> 866*dc5640d1SHerbert Xue <![CDATA[Creates a ConfigurationException containing {@code messages}.]]> 867*dc5640d1SHerbert Xue </doc> 868*dc5640d1SHerbert Xue </constructor> 869*dc5640d1SHerbert Xue <method name="withPartialValue" return="com.google.inject.ConfigurationException" 870*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 871*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 872*dc5640d1SHerbert Xue deprecated="not deprecated"> 873*dc5640d1SHerbert Xue <param name="partialValue" type="java.lang.Object"/> 874*dc5640d1SHerbert Xue <doc> 875*dc5640d1SHerbert Xue <![CDATA[Returns a copy of this configuration exception with the specified partial value.]]> 876*dc5640d1SHerbert Xue </doc> 877*dc5640d1SHerbert Xue </method> 878*dc5640d1SHerbert Xue <method name="getErrorMessages" return="java.util.Collection<com.google.inject.spi.Message>" 879*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 880*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 881*dc5640d1SHerbert Xue deprecated="not deprecated"> 882*dc5640d1SHerbert Xue <doc> 883*dc5640d1SHerbert Xue <![CDATA[Returns messages for the errors that caused this exception.]]> 884*dc5640d1SHerbert Xue </doc> 885*dc5640d1SHerbert Xue </method> 886*dc5640d1SHerbert Xue <method name="getPartialValue" return="E" 887*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 888*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 889*dc5640d1SHerbert Xue deprecated="not deprecated"> 890*dc5640d1SHerbert Xue <doc> 891*dc5640d1SHerbert Xue <![CDATA[Returns a value that was only partially computed due to this exception. The caller can use 892*dc5640d1SHerbert Xue this while collecting additional configuration problems. 893*dc5640d1SHerbert Xue 894*dc5640d1SHerbert Xue @return the partial value, or {@code null} if none was set. The type of the partial value is 895*dc5640d1SHerbert Xue specified by the throwing method.]]> 896*dc5640d1SHerbert Xue </doc> 897*dc5640d1SHerbert Xue </method> 898*dc5640d1SHerbert Xue <method name="getMessage" return="java.lang.String" 899*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 900*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 901*dc5640d1SHerbert Xue deprecated="not deprecated"> 902*dc5640d1SHerbert Xue </method> 903*dc5640d1SHerbert Xue <doc> 904*dc5640d1SHerbert Xue <![CDATA[Thrown when a programming error such as a misplaced annotation, illegal binding, or unsupported 905*dc5640d1SHerbert Xue scope is found. Clients should catch this exception, log it, and stop execution. 906*dc5640d1SHerbert Xue 907*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 908*dc5640d1SHerbert Xue @since 2.0]]> 909*dc5640d1SHerbert Xue </doc> 910*dc5640d1SHerbert Xue </class> 911*dc5640d1SHerbert Xue <!-- end class com.google.inject.ConfigurationException --> 912*dc5640d1SHerbert Xue <!-- start class com.google.inject.CreationException --> 913*dc5640d1SHerbert Xue <class name="CreationException" extends="java.lang.RuntimeException" 914*dc5640d1SHerbert Xue abstract="false" 915*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 916*dc5640d1SHerbert Xue deprecated="not deprecated"> 917*dc5640d1SHerbert Xue <constructor name="CreationException" type="java.util.Collection<com.google.inject.spi.Message>" 918*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 919*dc5640d1SHerbert Xue deprecated="not deprecated"> 920*dc5640d1SHerbert Xue <doc> 921*dc5640d1SHerbert Xue <![CDATA[Creates a CreationException containing {@code messages}.]]> 922*dc5640d1SHerbert Xue </doc> 923*dc5640d1SHerbert Xue </constructor> 924*dc5640d1SHerbert Xue <method name="getErrorMessages" return="java.util.Collection<com.google.inject.spi.Message>" 925*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 926*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 927*dc5640d1SHerbert Xue deprecated="not deprecated"> 928*dc5640d1SHerbert Xue <doc> 929*dc5640d1SHerbert Xue <![CDATA[Returns messages for the errors that caused this exception.]]> 930*dc5640d1SHerbert Xue </doc> 931*dc5640d1SHerbert Xue </method> 932*dc5640d1SHerbert Xue <method name="getMessage" return="java.lang.String" 933*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 934*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 935*dc5640d1SHerbert Xue deprecated="not deprecated"> 936*dc5640d1SHerbert Xue </method> 937*dc5640d1SHerbert Xue <doc> 938*dc5640d1SHerbert Xue <![CDATA[Thrown when errors occur while creating a {@link Injector}. Includes a list of encountered 939*dc5640d1SHerbert Xue errors. Clients should catch this exception, log it, and stop execution. 940*dc5640d1SHerbert Xue 941*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 942*dc5640d1SHerbert Xue </doc> 943*dc5640d1SHerbert Xue </class> 944*dc5640d1SHerbert Xue <!-- end class com.google.inject.CreationException --> 945*dc5640d1SHerbert Xue <!-- start class com.google.inject.Exposed --> 946*dc5640d1SHerbert Xue <class name="Exposed" abstract="true" 947*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 948*dc5640d1SHerbert Xue deprecated="not deprecated"> 949*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 950*dc5640d1SHerbert Xue <doc> 951*dc5640d1SHerbert Xue <![CDATA[Acccompanies a {@literal @}{@link com.google.inject.Provides Provides} method annotation in a 952*dc5640d1SHerbert Xue private module to indicate that the provided binding is exposed. 953*dc5640d1SHerbert Xue 954*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 955*dc5640d1SHerbert Xue @since 2.0]]> 956*dc5640d1SHerbert Xue </doc> 957*dc5640d1SHerbert Xue </class> 958*dc5640d1SHerbert Xue <!-- end class com.google.inject.Exposed --> 959*dc5640d1SHerbert Xue <!-- start class com.google.inject.Guice --> 960*dc5640d1SHerbert Xue <class name="Guice" extends="java.lang.Object" 961*dc5640d1SHerbert Xue abstract="false" 962*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 963*dc5640d1SHerbert Xue deprecated="not deprecated"> 964*dc5640d1SHerbert Xue <method name="createInjector" return="com.google.inject.Injector" 965*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 966*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 967*dc5640d1SHerbert Xue deprecated="not deprecated"> 968*dc5640d1SHerbert Xue <param name="modules" type="com.google.inject.Module[]"/> 969*dc5640d1SHerbert Xue <doc> 970*dc5640d1SHerbert Xue <![CDATA[Creates an injector for the given set of modules. 971*dc5640d1SHerbert Xue 972*dc5640d1SHerbert Xue @throws CreationException if one or more errors occur during Injector 973*dc5640d1SHerbert Xue construction]]> 974*dc5640d1SHerbert Xue </doc> 975*dc5640d1SHerbert Xue </method> 976*dc5640d1SHerbert Xue <method name="createInjector" return="com.google.inject.Injector" 977*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 978*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 979*dc5640d1SHerbert Xue deprecated="not deprecated"> 980*dc5640d1SHerbert Xue <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 981*dc5640d1SHerbert Xue <doc> 982*dc5640d1SHerbert Xue <![CDATA[Creates an injector for the given set of modules. 983*dc5640d1SHerbert Xue 984*dc5640d1SHerbert Xue @throws CreationException if one or more errors occur during Injector 985*dc5640d1SHerbert Xue creation]]> 986*dc5640d1SHerbert Xue </doc> 987*dc5640d1SHerbert Xue </method> 988*dc5640d1SHerbert Xue <method name="createInjector" return="com.google.inject.Injector" 989*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 990*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 991*dc5640d1SHerbert Xue deprecated="not deprecated"> 992*dc5640d1SHerbert Xue <param name="stage" type="com.google.inject.Stage"/> 993*dc5640d1SHerbert Xue <param name="modules" type="com.google.inject.Module[]"/> 994*dc5640d1SHerbert Xue <doc> 995*dc5640d1SHerbert Xue <![CDATA[Creates an injector for the given set of modules, in a given development 996*dc5640d1SHerbert Xue stage. 997*dc5640d1SHerbert Xue 998*dc5640d1SHerbert Xue @throws CreationException if one or more errors occur during Injector 999*dc5640d1SHerbert Xue creation]]> 1000*dc5640d1SHerbert Xue </doc> 1001*dc5640d1SHerbert Xue </method> 1002*dc5640d1SHerbert Xue <method name="createInjector" return="com.google.inject.Injector" 1003*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1004*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1005*dc5640d1SHerbert Xue deprecated="not deprecated"> 1006*dc5640d1SHerbert Xue <param name="stage" type="com.google.inject.Stage"/> 1007*dc5640d1SHerbert Xue <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 1008*dc5640d1SHerbert Xue <doc> 1009*dc5640d1SHerbert Xue <![CDATA[Creates an injector for the given set of modules, in a given development 1010*dc5640d1SHerbert Xue stage. 1011*dc5640d1SHerbert Xue 1012*dc5640d1SHerbert Xue @throws CreationException if one or more errors occur during Injector 1013*dc5640d1SHerbert Xue construction]]> 1014*dc5640d1SHerbert Xue </doc> 1015*dc5640d1SHerbert Xue </method> 1016*dc5640d1SHerbert Xue <doc> 1017*dc5640d1SHerbert Xue <![CDATA[The entry point to the Guice framework. Creates {@link Injector}s from 1018*dc5640d1SHerbert Xue {@link Module}s. 1019*dc5640d1SHerbert Xue 1020*dc5640d1SHerbert Xue <p>Guice supports a model of development that draws clear boundaries between 1021*dc5640d1SHerbert Xue APIs, Implementations of these APIs, Modules which configure these 1022*dc5640d1SHerbert Xue implementations, and finally Applications which consist of a collection of 1023*dc5640d1SHerbert Xue Modules. It is the Application, which typically defines your {@code main()} 1024*dc5640d1SHerbert Xue method, that bootstraps the Guice Injector using the {@code Guice} class, as 1025*dc5640d1SHerbert Xue in this example: 1026*dc5640d1SHerbert Xue <pre> 1027*dc5640d1SHerbert Xue public class FooApplication { 1028*dc5640d1SHerbert Xue public static void main(String[] args) { 1029*dc5640d1SHerbert Xue Injector injector = Guice.createInjector( 1030*dc5640d1SHerbert Xue new ModuleA(), 1031*dc5640d1SHerbert Xue new ModuleB(), 1032*dc5640d1SHerbert Xue . . . 1033*dc5640d1SHerbert Xue new FooApplicationFlagsModule(args) 1034*dc5640d1SHerbert Xue ); 1035*dc5640d1SHerbert Xue 1036*dc5640d1SHerbert Xue // Now just bootstrap the application and you're done 1037*dc5640d1SHerbert Xue FooStarter starter = injector.getInstance(FooStarter.class); 1038*dc5640d1SHerbert Xue starter.runApplication(); 1039*dc5640d1SHerbert Xue } 1040*dc5640d1SHerbert Xue } 1041*dc5640d1SHerbert Xue </pre>]]> 1042*dc5640d1SHerbert Xue </doc> 1043*dc5640d1SHerbert Xue </class> 1044*dc5640d1SHerbert Xue <!-- end class com.google.inject.Guice --> 1045*dc5640d1SHerbert Xue <!-- start class com.google.inject.ImplementedBy --> 1046*dc5640d1SHerbert Xue <class name="ImplementedBy" abstract="true" 1047*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1048*dc5640d1SHerbert Xue deprecated="not deprecated"> 1049*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 1050*dc5640d1SHerbert Xue <doc> 1051*dc5640d1SHerbert Xue <![CDATA[A pointer to the default implementation of a type. 1052*dc5640d1SHerbert Xue 1053*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 1054*dc5640d1SHerbert Xue </doc> 1055*dc5640d1SHerbert Xue </class> 1056*dc5640d1SHerbert Xue <!-- end class com.google.inject.ImplementedBy --> 1057*dc5640d1SHerbert Xue <!-- start class com.google.inject.Inject --> 1058*dc5640d1SHerbert Xue <class name="Inject" abstract="true" 1059*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1060*dc5640d1SHerbert Xue deprecated="not deprecated"> 1061*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 1062*dc5640d1SHerbert Xue <doc> 1063*dc5640d1SHerbert Xue <![CDATA[Annotates members of your implementation class (constructors, methods 1064*dc5640d1SHerbert Xue and fields) into which the {@link Injector} should inject values. 1065*dc5640d1SHerbert Xue The Injector fulfills injection requests for: 1066*dc5640d1SHerbert Xue 1067*dc5640d1SHerbert Xue <ul> 1068*dc5640d1SHerbert Xue <li>Every instance it constructs. The class being constructed must have 1069*dc5640d1SHerbert Xue exactly one of its constructors marked with {@code @Inject} or must have a 1070*dc5640d1SHerbert Xue constructor taking no parameters. The Injector then proceeds to perform 1071*dc5640d1SHerbert Xue method and field injections. 1072*dc5640d1SHerbert Xue 1073*dc5640d1SHerbert Xue <li>Pre-constructed instances passed to {@link Injector#injectMembers}, 1074*dc5640d1SHerbert Xue {@link com.google.inject.binder.LinkedBindingBuilder#toInstance(Object)} and 1075*dc5640d1SHerbert Xue {@link com.google.inject.binder.LinkedBindingBuilder#toProvider(Provider)}. 1076*dc5640d1SHerbert Xue In this case all constructors are, of course, ignored. 1077*dc5640d1SHerbert Xue 1078*dc5640d1SHerbert Xue <li>Static fields and methods of classes which any {@link Module} has 1079*dc5640d1SHerbert Xue specifically requested static injection for, using 1080*dc5640d1SHerbert Xue {@link Binder#requestStaticInjection}. 1081*dc5640d1SHerbert Xue </ul> 1082*dc5640d1SHerbert Xue 1083*dc5640d1SHerbert Xue In all cases, a member can be injected regardless of its Java access 1084*dc5640d1SHerbert Xue specifier (private, default, protected, public). 1085*dc5640d1SHerbert Xue 1086*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 1087*dc5640d1SHerbert Xue </doc> 1088*dc5640d1SHerbert Xue </class> 1089*dc5640d1SHerbert Xue <!-- end class com.google.inject.Inject --> 1090*dc5640d1SHerbert Xue <!-- start interface com.google.inject.Injector --> 1091*dc5640d1SHerbert Xue <interface name="Injector" abstract="true" 1092*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1093*dc5640d1SHerbert Xue deprecated="not deprecated"> 1094*dc5640d1SHerbert Xue <method name="injectMembers" 1095*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1096*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1097*dc5640d1SHerbert Xue deprecated="not deprecated"> 1098*dc5640d1SHerbert Xue <param name="instance" type="java.lang.Object"/> 1099*dc5640d1SHerbert Xue <doc> 1100*dc5640d1SHerbert Xue <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or 1101*dc5640d1SHerbert Xue absence of an injectable constructor. 1102*dc5640d1SHerbert Xue 1103*dc5640d1SHerbert Xue <p>Whenever Guice creates an instance, it performs this injection automatically (after first 1104*dc5640d1SHerbert Xue performing constructor injection), so if you're able to let Guice create all your objects for 1105*dc5640d1SHerbert Xue you, you'll never need to use this method. 1106*dc5640d1SHerbert Xue 1107*dc5640d1SHerbert Xue @param instance to inject members on 1108*dc5640d1SHerbert Xue 1109*dc5640d1SHerbert Xue @see Binder#getMembersInjector(Class) for a preferred alternative that supports checks before 1110*dc5640d1SHerbert Xue run time]]> 1111*dc5640d1SHerbert Xue </doc> 1112*dc5640d1SHerbert Xue </method> 1113*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 1114*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1115*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1116*dc5640d1SHerbert Xue deprecated="not deprecated"> 1117*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1118*dc5640d1SHerbert Xue <doc> 1119*dc5640d1SHerbert Xue <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 1120*dc5640d1SHerbert Xue of the given type {@code T}. 1121*dc5640d1SHerbert Xue 1122*dc5640d1SHerbert Xue @param typeLiteral type to get members injector for 1123*dc5640d1SHerbert Xue @see Binder#getMembersInjector(TypeLiteral) for an alternative that offers up front error 1124*dc5640d1SHerbert Xue detection 1125*dc5640d1SHerbert Xue @since 2.0]]> 1126*dc5640d1SHerbert Xue </doc> 1127*dc5640d1SHerbert Xue </method> 1128*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 1129*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1130*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1131*dc5640d1SHerbert Xue deprecated="not deprecated"> 1132*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1133*dc5640d1SHerbert Xue <doc> 1134*dc5640d1SHerbert Xue <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 1135*dc5640d1SHerbert Xue of the given type {@code T}. When feasible, use {@link Binder#getMembersInjector(TypeLiteral)} 1136*dc5640d1SHerbert Xue instead to get increased up front error detection. 1137*dc5640d1SHerbert Xue 1138*dc5640d1SHerbert Xue @param type type to get members injector for 1139*dc5640d1SHerbert Xue @see Binder#getMembersInjector(Class) for an alternative that offers up front error 1140*dc5640d1SHerbert Xue detection 1141*dc5640d1SHerbert Xue @since 2.0]]> 1142*dc5640d1SHerbert Xue </doc> 1143*dc5640d1SHerbert Xue </method> 1144*dc5640d1SHerbert Xue <method name="getBindings" return="java.util.Map<com.google.inject.Key<?>, com.google.inject.Binding<?>>" 1145*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1146*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1147*dc5640d1SHerbert Xue deprecated="not deprecated"> 1148*dc5640d1SHerbert Xue <doc> 1149*dc5640d1SHerbert Xue <![CDATA[Returns all explicit bindings. 1150*dc5640d1SHerbert Xue 1151*dc5640d1SHerbert Xue <p>The returned map does not include bindings inherited from a {@link #getParent() parent 1152*dc5640d1SHerbert Xue injector}, should one exist. The returned map is guaranteed to iterate (for example, with 1153*dc5640d1SHerbert Xue its {@link java.util.Map#entrySet()} iterator) in the order of insertion. In other words, 1154*dc5640d1SHerbert Xue the order in which bindings appear in user Modules. 1155*dc5640d1SHerbert Xue 1156*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]> 1157*dc5640d1SHerbert Xue </doc> 1158*dc5640d1SHerbert Xue </method> 1159*dc5640d1SHerbert Xue <method name="getBinding" return="com.google.inject.Binding<T>" 1160*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1161*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1162*dc5640d1SHerbert Xue deprecated="not deprecated"> 1163*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 1164*dc5640d1SHerbert Xue <doc> 1165*dc5640d1SHerbert Xue <![CDATA[Returns the binding for the given injection key. This will be an explicit bindings if the key 1166*dc5640d1SHerbert Xue was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will 1167*dc5640d1SHerbert Xue be created if necessary. 1168*dc5640d1SHerbert Xue 1169*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1170*dc5640d1SHerbert Xue 1171*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the binding.]]> 1172*dc5640d1SHerbert Xue </doc> 1173*dc5640d1SHerbert Xue </method> 1174*dc5640d1SHerbert Xue <method name="getBinding" return="com.google.inject.Binding<T>" 1175*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1176*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1177*dc5640d1SHerbert Xue deprecated="not deprecated"> 1178*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1179*dc5640d1SHerbert Xue <doc> 1180*dc5640d1SHerbert Xue <![CDATA[Returns the binding for the given type. This will be an explicit bindings if the injection key 1181*dc5640d1SHerbert Xue was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will 1182*dc5640d1SHerbert Xue be created if necessary. 1183*dc5640d1SHerbert Xue 1184*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1185*dc5640d1SHerbert Xue 1186*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the binding. 1187*dc5640d1SHerbert Xue @since 2.0]]> 1188*dc5640d1SHerbert Xue </doc> 1189*dc5640d1SHerbert Xue </method> 1190*dc5640d1SHerbert Xue <method name="findBindingsByType" return="java.util.List<com.google.inject.Binding<T>>" 1191*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1192*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1193*dc5640d1SHerbert Xue deprecated="not deprecated"> 1194*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<T>"/> 1195*dc5640d1SHerbert Xue <doc> 1196*dc5640d1SHerbert Xue <![CDATA[Returns all explicit bindings for {@code type}. 1197*dc5640d1SHerbert Xue 1198*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]> 1199*dc5640d1SHerbert Xue </doc> 1200*dc5640d1SHerbert Xue </method> 1201*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 1202*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1203*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1204*dc5640d1SHerbert Xue deprecated="not deprecated"> 1205*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 1206*dc5640d1SHerbert Xue <doc> 1207*dc5640d1SHerbert Xue <![CDATA[Returns the provider used to obtain instances for the given injection key. When feasible, avoid 1208*dc5640d1SHerbert Xue using this method, in favor of having Guice inject your dependencies ahead of time. 1209*dc5640d1SHerbert Xue 1210*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the provider. 1211*dc5640d1SHerbert Xue @see Binder#getProvider(Key) for an alternative that offers up front error detection]]> 1212*dc5640d1SHerbert Xue </doc> 1213*dc5640d1SHerbert Xue </method> 1214*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 1215*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1216*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1217*dc5640d1SHerbert Xue deprecated="not deprecated"> 1218*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1219*dc5640d1SHerbert Xue <doc> 1220*dc5640d1SHerbert Xue <![CDATA[Returns the provider used to obtain instances for the given type. When feasible, avoid 1221*dc5640d1SHerbert Xue using this method, in favor of having Guice inject your dependencies ahead of time. 1222*dc5640d1SHerbert Xue 1223*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the provider. 1224*dc5640d1SHerbert Xue @see Binder#getProvider(Class) for an alternative that offers up front error detection]]> 1225*dc5640d1SHerbert Xue </doc> 1226*dc5640d1SHerbert Xue </method> 1227*dc5640d1SHerbert Xue <method name="getInstance" return="T" 1228*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1229*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1230*dc5640d1SHerbert Xue deprecated="not deprecated"> 1231*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 1232*dc5640d1SHerbert Xue <doc> 1233*dc5640d1SHerbert Xue <![CDATA[Returns the appropriate instance for the given injection key; equivalent to {@code 1234*dc5640d1SHerbert Xue getProvider(key).get()}. When feasible, avoid using this method, in favor of having Guice 1235*dc5640d1SHerbert Xue inject your dependencies ahead of time. 1236*dc5640d1SHerbert Xue 1237*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the provider. 1238*dc5640d1SHerbert Xue @throws ProvisionException if there was a runtime failure while providing an instance.]]> 1239*dc5640d1SHerbert Xue </doc> 1240*dc5640d1SHerbert Xue </method> 1241*dc5640d1SHerbert Xue <method name="getInstance" return="T" 1242*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1243*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1244*dc5640d1SHerbert Xue deprecated="not deprecated"> 1245*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1246*dc5640d1SHerbert Xue <doc> 1247*dc5640d1SHerbert Xue <![CDATA[Returns the appropriate instance for the given injection type; equivalent to {@code 1248*dc5640d1SHerbert Xue getProvider(type).get()}. When feasible, avoid using this method, in favor of having Guice 1249*dc5640d1SHerbert Xue inject your dependencies ahead of time. 1250*dc5640d1SHerbert Xue 1251*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the provider. 1252*dc5640d1SHerbert Xue @throws ProvisionException if there was a runtime failure while providing an instance.]]> 1253*dc5640d1SHerbert Xue </doc> 1254*dc5640d1SHerbert Xue </method> 1255*dc5640d1SHerbert Xue <method name="getParent" return="com.google.inject.Injector" 1256*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1257*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1258*dc5640d1SHerbert Xue deprecated="not deprecated"> 1259*dc5640d1SHerbert Xue <doc> 1260*dc5640d1SHerbert Xue <![CDATA[Returns this injector's parent, or {@code null} if this is a top-level injector. 1261*dc5640d1SHerbert Xue 1262*dc5640d1SHerbert Xue @since 2.0]]> 1263*dc5640d1SHerbert Xue </doc> 1264*dc5640d1SHerbert Xue </method> 1265*dc5640d1SHerbert Xue <method name="createChildInjector" return="com.google.inject.Injector" 1266*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1267*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1268*dc5640d1SHerbert Xue deprecated="not deprecated"> 1269*dc5640d1SHerbert Xue <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 1270*dc5640d1SHerbert Xue <doc> 1271*dc5640d1SHerbert Xue <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes, 1272*dc5640d1SHerbert Xue interceptors and type converters are inherited -- they are visible to the child injector. 1273*dc5640d1SHerbert Xue Elements of the child injector are not visible to its parent. 1274*dc5640d1SHerbert Xue 1275*dc5640d1SHerbert Xue <p>Just-in-time bindings created for child injectors will be created in an ancestor injector 1276*dc5640d1SHerbert Xue whenever possible. This allows for scoped instances to be shared between injectors. Use 1277*dc5640d1SHerbert Xue explicit bindings to prevent bindings from being shared with the parent injector. 1278*dc5640d1SHerbert Xue 1279*dc5640d1SHerbert Xue <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time 1280*dc5640d1SHerbert Xue bindings. The lone exception is the key for {@code Injector.class}, which is bound by each 1281*dc5640d1SHerbert Xue injector to itself. 1282*dc5640d1SHerbert Xue 1283*dc5640d1SHerbert Xue @since 2.0]]> 1284*dc5640d1SHerbert Xue </doc> 1285*dc5640d1SHerbert Xue </method> 1286*dc5640d1SHerbert Xue <method name="createChildInjector" return="com.google.inject.Injector" 1287*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1288*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1289*dc5640d1SHerbert Xue deprecated="not deprecated"> 1290*dc5640d1SHerbert Xue <param name="modules" type="com.google.inject.Module[]"/> 1291*dc5640d1SHerbert Xue <doc> 1292*dc5640d1SHerbert Xue <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes, 1293*dc5640d1SHerbert Xue interceptors and type converters are inherited -- they are visible to the child injector. 1294*dc5640d1SHerbert Xue Elements of the child injector are not visible to its parent. 1295*dc5640d1SHerbert Xue 1296*dc5640d1SHerbert Xue <p>Just-in-time bindings created for child injectors will be created in an ancestor injector 1297*dc5640d1SHerbert Xue whenever possible. This allows for scoped instances to be shared between injectors. Use 1298*dc5640d1SHerbert Xue explicit bindings to prevent bindings from being shared with the parent injector. 1299*dc5640d1SHerbert Xue 1300*dc5640d1SHerbert Xue <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time 1301*dc5640d1SHerbert Xue bindings. The lone exception is the key for {@code Injector.class}, which is bound by each 1302*dc5640d1SHerbert Xue injector to itself. 1303*dc5640d1SHerbert Xue 1304*dc5640d1SHerbert Xue @since 2.0]]> 1305*dc5640d1SHerbert Xue </doc> 1306*dc5640d1SHerbert Xue </method> 1307*dc5640d1SHerbert Xue <doc> 1308*dc5640d1SHerbert Xue <![CDATA[Builds the graphs of objects that make up your application. The injector tracks the dependencies 1309*dc5640d1SHerbert Xue for each type and uses bindings to inject them. This is the core of Guice, although you rarely 1310*dc5640d1SHerbert Xue interact with it directly. This "behind-the-scenes" operation is what distinguishes dependency 1311*dc5640d1SHerbert Xue injection from its cousin, the service locator pattern. 1312*dc5640d1SHerbert Xue 1313*dc5640d1SHerbert Xue <p>Contains several default bindings: 1314*dc5640d1SHerbert Xue 1315*dc5640d1SHerbert Xue <ul> 1316*dc5640d1SHerbert Xue <li>This {@link Injector} instance itself 1317*dc5640d1SHerbert Xue <li>A {@code Provider<T>} for each binding of type {@code T} 1318*dc5640d1SHerbert Xue <li>The {@link java.util.logging.Logger} for the class being injected 1319*dc5640d1SHerbert Xue <li>The {@link Stage} in which the Injector was created 1320*dc5640d1SHerbert Xue </ul> 1321*dc5640d1SHerbert Xue 1322*dc5640d1SHerbert Xue Injectors are created using the facade class {@link Guice}. 1323*dc5640d1SHerbert Xue 1324*dc5640d1SHerbert Xue <p>An injector can also {@link #injectMembers(Object) inject the dependencies} of 1325*dc5640d1SHerbert Xue already-constructed instances. This can be used to interoperate with objects created by other 1326*dc5640d1SHerbert Xue frameworks or services. 1327*dc5640d1SHerbert Xue 1328*dc5640d1SHerbert Xue <p>Injectors can be {@link #createChildInjector(Iterable) hierarchical}. Child injectors inherit 1329*dc5640d1SHerbert Xue the configuration of their parent injectors, but the converse does not hold. 1330*dc5640d1SHerbert Xue 1331*dc5640d1SHerbert Xue <p>The injector's {@link #getBindings() internal bindings} are available for introspection. This 1332*dc5640d1SHerbert Xue enables tools and extensions to operate on an injector reflectively. 1333*dc5640d1SHerbert Xue 1334*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 1335*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]> 1336*dc5640d1SHerbert Xue </doc> 1337*dc5640d1SHerbert Xue </interface> 1338*dc5640d1SHerbert Xue <!-- end interface com.google.inject.Injector --> 1339*dc5640d1SHerbert Xue <!-- start class com.google.inject.Key --> 1340*dc5640d1SHerbert Xue <class name="Key" extends="java.lang.Object" 1341*dc5640d1SHerbert Xue abstract="false" 1342*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1343*dc5640d1SHerbert Xue deprecated="not deprecated"> 1344*dc5640d1SHerbert Xue <constructor name="Key" type="java.lang.Class<? extends java.lang.annotation.Annotation>" 1345*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 1346*dc5640d1SHerbert Xue deprecated="not deprecated"> 1347*dc5640d1SHerbert Xue <doc> 1348*dc5640d1SHerbert Xue <![CDATA[Constructs a new key. Derives the type from this class's type parameter. 1349*dc5640d1SHerbert Xue 1350*dc5640d1SHerbert Xue <p>Clients create an empty anonymous subclass. Doing so embeds the type 1351*dc5640d1SHerbert Xue parameter in the anonymous class's type hierarchy so we can reconstitute it 1352*dc5640d1SHerbert Xue at runtime despite erasure. 1353*dc5640d1SHerbert Xue 1354*dc5640d1SHerbert Xue <p>Example usage for a binding of type {@code Foo} annotated with 1355*dc5640d1SHerbert Xue {@code @Bar}: 1356*dc5640d1SHerbert Xue 1357*dc5640d1SHerbert Xue <p>{@code new Key<Foo>(Bar.class) {}}.]]> 1358*dc5640d1SHerbert Xue </doc> 1359*dc5640d1SHerbert Xue </constructor> 1360*dc5640d1SHerbert Xue <constructor name="Key" type="java.lang.annotation.Annotation" 1361*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 1362*dc5640d1SHerbert Xue deprecated="not deprecated"> 1363*dc5640d1SHerbert Xue <doc> 1364*dc5640d1SHerbert Xue <![CDATA[Constructs a new key. Derives the type from this class's type parameter. 1365*dc5640d1SHerbert Xue 1366*dc5640d1SHerbert Xue <p>Clients create an empty anonymous subclass. Doing so embeds the type 1367*dc5640d1SHerbert Xue parameter in the anonymous class's type hierarchy so we can reconstitute it 1368*dc5640d1SHerbert Xue at runtime despite erasure. 1369*dc5640d1SHerbert Xue 1370*dc5640d1SHerbert Xue <p>Example usage for a binding of type {@code Foo} annotated with 1371*dc5640d1SHerbert Xue {@code @Bar}: 1372*dc5640d1SHerbert Xue 1373*dc5640d1SHerbert Xue <p>{@code new Key<Foo>(new Bar()) {}}.]]> 1374*dc5640d1SHerbert Xue </doc> 1375*dc5640d1SHerbert Xue </constructor> 1376*dc5640d1SHerbert Xue <constructor name="Key" 1377*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 1378*dc5640d1SHerbert Xue deprecated="not deprecated"> 1379*dc5640d1SHerbert Xue <doc> 1380*dc5640d1SHerbert Xue <![CDATA[Constructs a new key. Derives the type from this class's type parameter. 1381*dc5640d1SHerbert Xue 1382*dc5640d1SHerbert Xue <p>Clients create an empty anonymous subclass. Doing so embeds the type 1383*dc5640d1SHerbert Xue parameter in the anonymous class's type hierarchy so we can reconstitute it 1384*dc5640d1SHerbert Xue at runtime despite erasure. 1385*dc5640d1SHerbert Xue 1386*dc5640d1SHerbert Xue <p>Example usage for a binding of type {@code Foo}: 1387*dc5640d1SHerbert Xue 1388*dc5640d1SHerbert Xue <p>{@code new Key<Foo>() {}}.]]> 1389*dc5640d1SHerbert Xue </doc> 1390*dc5640d1SHerbert Xue </constructor> 1391*dc5640d1SHerbert Xue <method name="getTypeLiteral" return="com.google.inject.TypeLiteral<T>" 1392*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1393*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1394*dc5640d1SHerbert Xue deprecated="not deprecated"> 1395*dc5640d1SHerbert Xue <doc> 1396*dc5640d1SHerbert Xue <![CDATA[Gets the key type.]]> 1397*dc5640d1SHerbert Xue </doc> 1398*dc5640d1SHerbert Xue </method> 1399*dc5640d1SHerbert Xue <method name="getAnnotationType" return="java.lang.Class<? extends java.lang.annotation.Annotation>" 1400*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1401*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1402*dc5640d1SHerbert Xue deprecated="not deprecated"> 1403*dc5640d1SHerbert Xue <doc> 1404*dc5640d1SHerbert Xue <![CDATA[Gets the annotation type.]]> 1405*dc5640d1SHerbert Xue </doc> 1406*dc5640d1SHerbert Xue </method> 1407*dc5640d1SHerbert Xue <method name="getAnnotation" return="java.lang.annotation.Annotation" 1408*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1409*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1410*dc5640d1SHerbert Xue deprecated="not deprecated"> 1411*dc5640d1SHerbert Xue <doc> 1412*dc5640d1SHerbert Xue <![CDATA[Gets the annotation.]]> 1413*dc5640d1SHerbert Xue </doc> 1414*dc5640d1SHerbert Xue </method> 1415*dc5640d1SHerbert Xue <method name="equals" return="boolean" 1416*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1417*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1418*dc5640d1SHerbert Xue deprecated="not deprecated"> 1419*dc5640d1SHerbert Xue <param name="o" type="java.lang.Object"/> 1420*dc5640d1SHerbert Xue </method> 1421*dc5640d1SHerbert Xue <method name="hashCode" return="int" 1422*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1423*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1424*dc5640d1SHerbert Xue deprecated="not deprecated"> 1425*dc5640d1SHerbert Xue </method> 1426*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 1427*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1428*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1429*dc5640d1SHerbert Xue deprecated="not deprecated"> 1430*dc5640d1SHerbert Xue </method> 1431*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<T>" 1432*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1433*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1434*dc5640d1SHerbert Xue deprecated="not deprecated"> 1435*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1436*dc5640d1SHerbert Xue <doc> 1437*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type.]]> 1438*dc5640d1SHerbert Xue </doc> 1439*dc5640d1SHerbert Xue </method> 1440*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<T>" 1441*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1442*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1443*dc5640d1SHerbert Xue deprecated="not deprecated"> 1444*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1445*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 1446*dc5640d1SHerbert Xue <doc> 1447*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type and an annotation type.]]> 1448*dc5640d1SHerbert Xue </doc> 1449*dc5640d1SHerbert Xue </method> 1450*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<T>" 1451*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1452*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1453*dc5640d1SHerbert Xue deprecated="not deprecated"> 1454*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1455*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 1456*dc5640d1SHerbert Xue <doc> 1457*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type and an annotation.]]> 1458*dc5640d1SHerbert Xue </doc> 1459*dc5640d1SHerbert Xue </method> 1460*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<?>" 1461*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1462*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1463*dc5640d1SHerbert Xue deprecated="not deprecated"> 1464*dc5640d1SHerbert Xue <param name="type" type="java.lang.reflect.Type"/> 1465*dc5640d1SHerbert Xue <doc> 1466*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type.]]> 1467*dc5640d1SHerbert Xue </doc> 1468*dc5640d1SHerbert Xue </method> 1469*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<?>" 1470*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1471*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1472*dc5640d1SHerbert Xue deprecated="not deprecated"> 1473*dc5640d1SHerbert Xue <param name="type" type="java.lang.reflect.Type"/> 1474*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 1475*dc5640d1SHerbert Xue <doc> 1476*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type and an annotation type.]]> 1477*dc5640d1SHerbert Xue </doc> 1478*dc5640d1SHerbert Xue </method> 1479*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<?>" 1480*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1481*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1482*dc5640d1SHerbert Xue deprecated="not deprecated"> 1483*dc5640d1SHerbert Xue <param name="type" type="java.lang.reflect.Type"/> 1484*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 1485*dc5640d1SHerbert Xue <doc> 1486*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type and an annotation.]]> 1487*dc5640d1SHerbert Xue </doc> 1488*dc5640d1SHerbert Xue </method> 1489*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<T>" 1490*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1491*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1492*dc5640d1SHerbert Xue deprecated="not deprecated"> 1493*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1494*dc5640d1SHerbert Xue <doc> 1495*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type.]]> 1496*dc5640d1SHerbert Xue </doc> 1497*dc5640d1SHerbert Xue </method> 1498*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<T>" 1499*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1500*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1501*dc5640d1SHerbert Xue deprecated="not deprecated"> 1502*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1503*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 1504*dc5640d1SHerbert Xue <doc> 1505*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type and an annotation type.]]> 1506*dc5640d1SHerbert Xue </doc> 1507*dc5640d1SHerbert Xue </method> 1508*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<T>" 1509*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1510*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1511*dc5640d1SHerbert Xue deprecated="not deprecated"> 1512*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1513*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 1514*dc5640d1SHerbert Xue <doc> 1515*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type and an annotation.]]> 1516*dc5640d1SHerbert Xue </doc> 1517*dc5640d1SHerbert Xue </method> 1518*dc5640d1SHerbert Xue <doc> 1519*dc5640d1SHerbert Xue <![CDATA[Binding key consisting of an injection type and an optional annotation. 1520*dc5640d1SHerbert Xue Matches the type and annotation at a point of injection. 1521*dc5640d1SHerbert Xue 1522*dc5640d1SHerbert Xue <p>For example, {@code Key.get(Service.class, Transactional.class)} will 1523*dc5640d1SHerbert Xue match: 1524*dc5640d1SHerbert Xue 1525*dc5640d1SHerbert Xue <pre> 1526*dc5640d1SHerbert Xue {@literal @}Inject 1527*dc5640d1SHerbert Xue public void setService({@literal @}Transactional Service service) { 1528*dc5640d1SHerbert Xue ... 1529*dc5640d1SHerbert Xue } 1530*dc5640d1SHerbert Xue </pre> 1531*dc5640d1SHerbert Xue 1532*dc5640d1SHerbert Xue <p>{@code Key} supports generic types via subclassing just like {@link 1533*dc5640d1SHerbert Xue TypeLiteral}. 1534*dc5640d1SHerbert Xue 1535*dc5640d1SHerbert Xue <p>Keys do not differentiate between primitive types (int, char, etc.) and 1536*dc5640d1SHerbert Xue their correpsonding wrapper types (Integer, Character, etc.). Primitive 1537*dc5640d1SHerbert Xue types will be replaced with their wrapper types when keys are created. 1538*dc5640d1SHerbert Xue 1539*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 1540*dc5640d1SHerbert Xue </doc> 1541*dc5640d1SHerbert Xue </class> 1542*dc5640d1SHerbert Xue <!-- end class com.google.inject.Key --> 1543*dc5640d1SHerbert Xue <!-- start interface com.google.inject.MembersInjector --> 1544*dc5640d1SHerbert Xue <interface name="MembersInjector" abstract="true" 1545*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1546*dc5640d1SHerbert Xue deprecated="not deprecated"> 1547*dc5640d1SHerbert Xue <method name="injectMembers" 1548*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1549*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1550*dc5640d1SHerbert Xue deprecated="not deprecated"> 1551*dc5640d1SHerbert Xue <param name="instance" type="T"/> 1552*dc5640d1SHerbert Xue <doc> 1553*dc5640d1SHerbert Xue <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or 1554*dc5640d1SHerbert Xue absence of an injectable constructor. 1555*dc5640d1SHerbert Xue 1556*dc5640d1SHerbert Xue <p>Whenever Guice creates an instance, it performs this injection automatically (after first 1557*dc5640d1SHerbert Xue performing constructor injection), so if you're able to let Guice create all your objects for 1558*dc5640d1SHerbert Xue you, you'll never need to use this method. 1559*dc5640d1SHerbert Xue 1560*dc5640d1SHerbert Xue @param instance to inject members on. May be {@code null}.]]> 1561*dc5640d1SHerbert Xue </doc> 1562*dc5640d1SHerbert Xue </method> 1563*dc5640d1SHerbert Xue <doc> 1564*dc5640d1SHerbert Xue <![CDATA[Injects dependencies into the fields and methods on instances of type {@code T}. Ignores the 1565*dc5640d1SHerbert Xue presence or absence of an injectable constructor. 1566*dc5640d1SHerbert Xue 1567*dc5640d1SHerbert Xue @param <T> type to inject members of 1568*dc5640d1SHerbert Xue 1569*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 1570*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 1571*dc5640d1SHerbert Xue @since 2.0]]> 1572*dc5640d1SHerbert Xue </doc> 1573*dc5640d1SHerbert Xue </interface> 1574*dc5640d1SHerbert Xue <!-- end interface com.google.inject.MembersInjector --> 1575*dc5640d1SHerbert Xue <!-- start interface com.google.inject.Module --> 1576*dc5640d1SHerbert Xue <interface name="Module" abstract="true" 1577*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1578*dc5640d1SHerbert Xue deprecated="not deprecated"> 1579*dc5640d1SHerbert Xue <method name="configure" 1580*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1581*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1582*dc5640d1SHerbert Xue deprecated="not deprecated"> 1583*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 1584*dc5640d1SHerbert Xue <doc> 1585*dc5640d1SHerbert Xue <![CDATA[Contributes bindings and other configurations for this module to {@code binder}. 1586*dc5640d1SHerbert Xue 1587*dc5640d1SHerbert Xue <p><strong>Do not invoke this method directly</strong> to install submodules. Instead use 1588*dc5640d1SHerbert Xue {@link Binder#install(Module)}, which ensures that {@link Provides provider methods} are 1589*dc5640d1SHerbert Xue discovered.]]> 1590*dc5640d1SHerbert Xue </doc> 1591*dc5640d1SHerbert Xue </method> 1592*dc5640d1SHerbert Xue <doc> 1593*dc5640d1SHerbert Xue <![CDATA[A module contributes configuration information, typically interface 1594*dc5640d1SHerbert Xue bindings, which will be used to create an {@link Injector}. A Guice-based 1595*dc5640d1SHerbert Xue application is ultimately composed of little more than a set of 1596*dc5640d1SHerbert Xue {@code Module}s and some bootstrapping code. 1597*dc5640d1SHerbert Xue 1598*dc5640d1SHerbert Xue <p>Your Module classes can use a more streamlined syntax by extending 1599*dc5640d1SHerbert Xue {@link AbstractModule} rather than implementing this interface directly. 1600*dc5640d1SHerbert Xue 1601*dc5640d1SHerbert Xue <p>In addition to the bindings configured via {@link #configure}, bindings 1602*dc5640d1SHerbert Xue will be created for all methods annotated with {@literal @}{@link Provides}. 1603*dc5640d1SHerbert Xue Use scope and binding annotations on these methods to configure the 1604*dc5640d1SHerbert Xue bindings.]]> 1605*dc5640d1SHerbert Xue </doc> 1606*dc5640d1SHerbert Xue </interface> 1607*dc5640d1SHerbert Xue <!-- end interface com.google.inject.Module --> 1608*dc5640d1SHerbert Xue <!-- start class com.google.inject.OutOfScopeException --> 1609*dc5640d1SHerbert Xue <class name="OutOfScopeException" extends="java.lang.RuntimeException" 1610*dc5640d1SHerbert Xue abstract="false" 1611*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1612*dc5640d1SHerbert Xue deprecated="not deprecated"> 1613*dc5640d1SHerbert Xue <constructor name="OutOfScopeException" type="java.lang.String" 1614*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1615*dc5640d1SHerbert Xue deprecated="not deprecated"> 1616*dc5640d1SHerbert Xue </constructor> 1617*dc5640d1SHerbert Xue <constructor name="OutOfScopeException" type="java.lang.String, java.lang.Throwable" 1618*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1619*dc5640d1SHerbert Xue deprecated="not deprecated"> 1620*dc5640d1SHerbert Xue </constructor> 1621*dc5640d1SHerbert Xue <constructor name="OutOfScopeException" type="java.lang.Throwable" 1622*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1623*dc5640d1SHerbert Xue deprecated="not deprecated"> 1624*dc5640d1SHerbert Xue </constructor> 1625*dc5640d1SHerbert Xue <doc> 1626*dc5640d1SHerbert Xue <![CDATA[Thrown from {@link Provider#get} when an attempt is made to access a scoped 1627*dc5640d1SHerbert Xue object while the scope in question is not currently active. 1628*dc5640d1SHerbert Xue 1629*dc5640d1SHerbert Xue @author [email protected] (Kevin Bourrillion) 1630*dc5640d1SHerbert Xue @since 2.0]]> 1631*dc5640d1SHerbert Xue </doc> 1632*dc5640d1SHerbert Xue </class> 1633*dc5640d1SHerbert Xue <!-- end class com.google.inject.OutOfScopeException --> 1634*dc5640d1SHerbert Xue <!-- start interface com.google.inject.PrivateBinder --> 1635*dc5640d1SHerbert Xue <interface name="PrivateBinder" abstract="true" 1636*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1637*dc5640d1SHerbert Xue deprecated="not deprecated"> 1638*dc5640d1SHerbert Xue <implements name="com.google.inject.Binder"/> 1639*dc5640d1SHerbert Xue <method name="expose" 1640*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1641*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1642*dc5640d1SHerbert Xue deprecated="not deprecated"> 1643*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 1644*dc5640d1SHerbert Xue <doc> 1645*dc5640d1SHerbert Xue <![CDATA[Makes the binding for {@code key} available to the enclosing environment]]> 1646*dc5640d1SHerbert Xue </doc> 1647*dc5640d1SHerbert Xue </method> 1648*dc5640d1SHerbert Xue <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 1649*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1650*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1651*dc5640d1SHerbert Xue deprecated="not deprecated"> 1652*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<?>"/> 1653*dc5640d1SHerbert Xue <doc> 1654*dc5640d1SHerbert Xue <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link 1655*dc5640d1SHerbert Xue com.google.inject.binder.AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 1656*dc5640d1SHerbert Xue binding annotation.]]> 1657*dc5640d1SHerbert Xue </doc> 1658*dc5640d1SHerbert Xue </method> 1659*dc5640d1SHerbert Xue <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 1660*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1661*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1662*dc5640d1SHerbert Xue deprecated="not deprecated"> 1663*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<?>"/> 1664*dc5640d1SHerbert Xue <doc> 1665*dc5640d1SHerbert Xue <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link 1666*dc5640d1SHerbert Xue AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 1667*dc5640d1SHerbert Xue binding annotation.]]> 1668*dc5640d1SHerbert Xue </doc> 1669*dc5640d1SHerbert Xue </method> 1670*dc5640d1SHerbert Xue <method name="withSource" return="com.google.inject.PrivateBinder" 1671*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1672*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1673*dc5640d1SHerbert Xue deprecated="not deprecated"> 1674*dc5640d1SHerbert Xue <param name="source" type="java.lang.Object"/> 1675*dc5640d1SHerbert Xue </method> 1676*dc5640d1SHerbert Xue <method name="skipSources" return="com.google.inject.PrivateBinder" 1677*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1678*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1679*dc5640d1SHerbert Xue deprecated="not deprecated"> 1680*dc5640d1SHerbert Xue <param name="classesToSkip" type="java.lang.Class[]"/> 1681*dc5640d1SHerbert Xue </method> 1682*dc5640d1SHerbert Xue <doc> 1683*dc5640d1SHerbert Xue <![CDATA[Returns a binder whose configuration information is hidden from its environment by default. See 1684*dc5640d1SHerbert Xue {@link com.google.inject.PrivateModule PrivateModule} for details. 1685*dc5640d1SHerbert Xue 1686*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 1687*dc5640d1SHerbert Xue @since 2.0]]> 1688*dc5640d1SHerbert Xue </doc> 1689*dc5640d1SHerbert Xue </interface> 1690*dc5640d1SHerbert Xue <!-- end interface com.google.inject.PrivateBinder --> 1691*dc5640d1SHerbert Xue <!-- start class com.google.inject.PrivateModule --> 1692*dc5640d1SHerbert Xue <class name="PrivateModule" extends="java.lang.Object" 1693*dc5640d1SHerbert Xue abstract="true" 1694*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1695*dc5640d1SHerbert Xue deprecated="not deprecated"> 1696*dc5640d1SHerbert Xue <implements name="com.google.inject.Module"/> 1697*dc5640d1SHerbert Xue <constructor name="PrivateModule" 1698*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1699*dc5640d1SHerbert Xue deprecated="not deprecated"> 1700*dc5640d1SHerbert Xue </constructor> 1701*dc5640d1SHerbert Xue <method name="configure" 1702*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="true" 1703*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1704*dc5640d1SHerbert Xue deprecated="not deprecated"> 1705*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 1706*dc5640d1SHerbert Xue </method> 1707*dc5640d1SHerbert Xue <method name="configure" 1708*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1709*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 1710*dc5640d1SHerbert Xue deprecated="not deprecated"> 1711*dc5640d1SHerbert Xue <doc> 1712*dc5640d1SHerbert Xue <![CDATA[Creates bindings and other configurations private to this module. Use {@link #expose(Class) 1713*dc5640d1SHerbert Xue expose()} to make the bindings in this module available externally.]]> 1714*dc5640d1SHerbert Xue </doc> 1715*dc5640d1SHerbert Xue </method> 1716*dc5640d1SHerbert Xue <method name="expose" 1717*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1718*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1719*dc5640d1SHerbert Xue deprecated="not deprecated"> 1720*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 1721*dc5640d1SHerbert Xue <doc> 1722*dc5640d1SHerbert Xue <![CDATA[Makes the binding for {@code key} available to other modules and the injector.]]> 1723*dc5640d1SHerbert Xue </doc> 1724*dc5640d1SHerbert Xue </method> 1725*dc5640d1SHerbert Xue <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 1726*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1727*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1728*dc5640d1SHerbert Xue deprecated="not deprecated"> 1729*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<?>"/> 1730*dc5640d1SHerbert Xue <doc> 1731*dc5640d1SHerbert Xue <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link 1732*dc5640d1SHerbert Xue AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 1733*dc5640d1SHerbert Xue binding annotation.]]> 1734*dc5640d1SHerbert Xue </doc> 1735*dc5640d1SHerbert Xue </method> 1736*dc5640d1SHerbert Xue <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 1737*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1738*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1739*dc5640d1SHerbert Xue deprecated="not deprecated"> 1740*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<?>"/> 1741*dc5640d1SHerbert Xue <doc> 1742*dc5640d1SHerbert Xue <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link 1743*dc5640d1SHerbert Xue AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 1744*dc5640d1SHerbert Xue binding annotation.]]> 1745*dc5640d1SHerbert Xue </doc> 1746*dc5640d1SHerbert Xue </method> 1747*dc5640d1SHerbert Xue <method name="binder" return="com.google.inject.PrivateBinder" 1748*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1749*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1750*dc5640d1SHerbert Xue deprecated="not deprecated"> 1751*dc5640d1SHerbert Xue <doc> 1752*dc5640d1SHerbert Xue <![CDATA[Returns the current binder.]]> 1753*dc5640d1SHerbert Xue </doc> 1754*dc5640d1SHerbert Xue </method> 1755*dc5640d1SHerbert Xue <method name="bindScope" 1756*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1757*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1758*dc5640d1SHerbert Xue deprecated="not deprecated"> 1759*dc5640d1SHerbert Xue <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 1760*dc5640d1SHerbert Xue <param name="scope" type="com.google.inject.Scope"/> 1761*dc5640d1SHerbert Xue <doc> 1762*dc5640d1SHerbert Xue <![CDATA[@see Binder#bindScope(Class, Scope)]]> 1763*dc5640d1SHerbert Xue </doc> 1764*dc5640d1SHerbert Xue </method> 1765*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder<T>" 1766*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1767*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1768*dc5640d1SHerbert Xue deprecated="not deprecated"> 1769*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 1770*dc5640d1SHerbert Xue <doc> 1771*dc5640d1SHerbert Xue <![CDATA[@see Binder#bind(Key)]]> 1772*dc5640d1SHerbert Xue </doc> 1773*dc5640d1SHerbert Xue </method> 1774*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 1775*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1776*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1777*dc5640d1SHerbert Xue deprecated="not deprecated"> 1778*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1779*dc5640d1SHerbert Xue <doc> 1780*dc5640d1SHerbert Xue <![CDATA[@see Binder#bind(TypeLiteral)]]> 1781*dc5640d1SHerbert Xue </doc> 1782*dc5640d1SHerbert Xue </method> 1783*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 1784*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1785*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1786*dc5640d1SHerbert Xue deprecated="not deprecated"> 1787*dc5640d1SHerbert Xue <param name="clazz" type="java.lang.Class<T>"/> 1788*dc5640d1SHerbert Xue <doc> 1789*dc5640d1SHerbert Xue <![CDATA[@see Binder#bind(Class)]]> 1790*dc5640d1SHerbert Xue </doc> 1791*dc5640d1SHerbert Xue </method> 1792*dc5640d1SHerbert Xue <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder" 1793*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1794*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1795*dc5640d1SHerbert Xue deprecated="not deprecated"> 1796*dc5640d1SHerbert Xue <doc> 1797*dc5640d1SHerbert Xue <![CDATA[@see Binder#bindConstant()]]> 1798*dc5640d1SHerbert Xue </doc> 1799*dc5640d1SHerbert Xue </method> 1800*dc5640d1SHerbert Xue <method name="install" 1801*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1802*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1803*dc5640d1SHerbert Xue deprecated="not deprecated"> 1804*dc5640d1SHerbert Xue <param name="module" type="com.google.inject.Module"/> 1805*dc5640d1SHerbert Xue <doc> 1806*dc5640d1SHerbert Xue <![CDATA[@see Binder#install(Module)]]> 1807*dc5640d1SHerbert Xue </doc> 1808*dc5640d1SHerbert Xue </method> 1809*dc5640d1SHerbert Xue <method name="addError" 1810*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1811*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1812*dc5640d1SHerbert Xue deprecated="not deprecated"> 1813*dc5640d1SHerbert Xue <param name="message" type="java.lang.String"/> 1814*dc5640d1SHerbert Xue <param name="arguments" type="java.lang.Object[]"/> 1815*dc5640d1SHerbert Xue <doc> 1816*dc5640d1SHerbert Xue <![CDATA[@see Binder#addError(String, Object[])]]> 1817*dc5640d1SHerbert Xue </doc> 1818*dc5640d1SHerbert Xue </method> 1819*dc5640d1SHerbert Xue <method name="addError" 1820*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1821*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1822*dc5640d1SHerbert Xue deprecated="not deprecated"> 1823*dc5640d1SHerbert Xue <param name="t" type="java.lang.Throwable"/> 1824*dc5640d1SHerbert Xue <doc> 1825*dc5640d1SHerbert Xue <![CDATA[@see Binder#addError(Throwable)]]> 1826*dc5640d1SHerbert Xue </doc> 1827*dc5640d1SHerbert Xue </method> 1828*dc5640d1SHerbert Xue <method name="addError" 1829*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1830*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1831*dc5640d1SHerbert Xue deprecated="not deprecated"> 1832*dc5640d1SHerbert Xue <param name="message" type="com.google.inject.spi.Message"/> 1833*dc5640d1SHerbert Xue <doc> 1834*dc5640d1SHerbert Xue <![CDATA[@see Binder#addError(Message)]]> 1835*dc5640d1SHerbert Xue </doc> 1836*dc5640d1SHerbert Xue </method> 1837*dc5640d1SHerbert Xue <method name="requestInjection" 1838*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1839*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1840*dc5640d1SHerbert Xue deprecated="not deprecated"> 1841*dc5640d1SHerbert Xue <param name="instance" type="java.lang.Object"/> 1842*dc5640d1SHerbert Xue <doc> 1843*dc5640d1SHerbert Xue <![CDATA[@see Binder#requestInjection(Object)]]> 1844*dc5640d1SHerbert Xue </doc> 1845*dc5640d1SHerbert Xue </method> 1846*dc5640d1SHerbert Xue <method name="requestStaticInjection" 1847*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1848*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1849*dc5640d1SHerbert Xue deprecated="not deprecated"> 1850*dc5640d1SHerbert Xue <param name="types" type="java.lang.Class[]"/> 1851*dc5640d1SHerbert Xue <doc> 1852*dc5640d1SHerbert Xue <![CDATA[@see Binder#requestStaticInjection(Class[])]]> 1853*dc5640d1SHerbert Xue </doc> 1854*dc5640d1SHerbert Xue </method> 1855*dc5640d1SHerbert Xue <method name="bindInterceptor" 1856*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1857*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1858*dc5640d1SHerbert Xue deprecated="not deprecated"> 1859*dc5640d1SHerbert Xue <param name="classMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>"/> 1860*dc5640d1SHerbert Xue <param name="methodMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>"/> 1861*dc5640d1SHerbert Xue <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/> 1862*dc5640d1SHerbert Xue <doc> 1863*dc5640d1SHerbert Xue <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher, com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])]]> 1864*dc5640d1SHerbert Xue </doc> 1865*dc5640d1SHerbert Xue </method> 1866*dc5640d1SHerbert Xue <method name="requireBinding" 1867*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1868*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1869*dc5640d1SHerbert Xue deprecated="not deprecated"> 1870*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 1871*dc5640d1SHerbert Xue <doc> 1872*dc5640d1SHerbert Xue <![CDATA[Instructs Guice to require a binding to the given key.]]> 1873*dc5640d1SHerbert Xue </doc> 1874*dc5640d1SHerbert Xue </method> 1875*dc5640d1SHerbert Xue <method name="requireBinding" 1876*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1877*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1878*dc5640d1SHerbert Xue deprecated="not deprecated"> 1879*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<?>"/> 1880*dc5640d1SHerbert Xue <doc> 1881*dc5640d1SHerbert Xue <![CDATA[Instructs Guice to require a binding to the given type.]]> 1882*dc5640d1SHerbert Xue </doc> 1883*dc5640d1SHerbert Xue </method> 1884*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 1885*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1886*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1887*dc5640d1SHerbert Xue deprecated="not deprecated"> 1888*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 1889*dc5640d1SHerbert Xue <doc> 1890*dc5640d1SHerbert Xue <![CDATA[@see Binder#getProvider(Key)]]> 1891*dc5640d1SHerbert Xue </doc> 1892*dc5640d1SHerbert Xue </method> 1893*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 1894*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1895*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1896*dc5640d1SHerbert Xue deprecated="not deprecated"> 1897*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1898*dc5640d1SHerbert Xue <doc> 1899*dc5640d1SHerbert Xue <![CDATA[@see Binder#getProvider(Class)]]> 1900*dc5640d1SHerbert Xue </doc> 1901*dc5640d1SHerbert Xue </method> 1902*dc5640d1SHerbert Xue <method name="convertToTypes" 1903*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1904*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1905*dc5640d1SHerbert Xue deprecated="not deprecated"> 1906*dc5640d1SHerbert Xue <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> 1907*dc5640d1SHerbert Xue <param name="converter" type="com.google.inject.spi.TypeConverter"/> 1908*dc5640d1SHerbert Xue <doc> 1909*dc5640d1SHerbert Xue <![CDATA[@see Binder#convertToTypes(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeConverter)]]> 1910*dc5640d1SHerbert Xue </doc> 1911*dc5640d1SHerbert Xue </method> 1912*dc5640d1SHerbert Xue <method name="currentStage" return="com.google.inject.Stage" 1913*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1914*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1915*dc5640d1SHerbert Xue deprecated="not deprecated"> 1916*dc5640d1SHerbert Xue <doc> 1917*dc5640d1SHerbert Xue <![CDATA[@see Binder#currentStage()]]> 1918*dc5640d1SHerbert Xue </doc> 1919*dc5640d1SHerbert Xue </method> 1920*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 1921*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1922*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 1923*dc5640d1SHerbert Xue deprecated="not deprecated"> 1924*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1925*dc5640d1SHerbert Xue <doc> 1926*dc5640d1SHerbert Xue <![CDATA[@see Binder#getMembersInjector(Class)]]> 1927*dc5640d1SHerbert Xue </doc> 1928*dc5640d1SHerbert Xue </method> 1929*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 1930*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1931*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 1932*dc5640d1SHerbert Xue deprecated="not deprecated"> 1933*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<T>"/> 1934*dc5640d1SHerbert Xue <doc> 1935*dc5640d1SHerbert Xue <![CDATA[@see Binder#getMembersInjector(TypeLiteral)]]> 1936*dc5640d1SHerbert Xue </doc> 1937*dc5640d1SHerbert Xue </method> 1938*dc5640d1SHerbert Xue <method name="bindListener" 1939*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1940*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 1941*dc5640d1SHerbert Xue deprecated="not deprecated"> 1942*dc5640d1SHerbert Xue <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> 1943*dc5640d1SHerbert Xue <param name="listener" type="com.google.inject.spi.TypeListener"/> 1944*dc5640d1SHerbert Xue <doc> 1945*dc5640d1SHerbert Xue <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeListener)]]> 1946*dc5640d1SHerbert Xue </doc> 1947*dc5640d1SHerbert Xue </method> 1948*dc5640d1SHerbert Xue <doc> 1949*dc5640d1SHerbert Xue <![CDATA[A module whose configuration information is hidden from its environment by default. Only bindings 1950*dc5640d1SHerbert Xue that are explicitly exposed will be available to other modules and to the users of the injector. 1951*dc5640d1SHerbert Xue This module may expose the bindings it creates and the bindings of the modules it installs. 1952*dc5640d1SHerbert Xue 1953*dc5640d1SHerbert Xue <p>A private module can be nested within a regular module or within another private module using 1954*dc5640d1SHerbert Xue {@link Binder#install install()}. Its bindings live in a new environment that inherits bindings, 1955*dc5640d1SHerbert Xue type converters, scopes, and interceptors from the surrounding ("parent") environment. When you 1956*dc5640d1SHerbert Xue nest multiple private modules, the result is a tree of environments where the injector's 1957*dc5640d1SHerbert Xue environment is the root. 1958*dc5640d1SHerbert Xue 1959*dc5640d1SHerbert Xue <p>Guice EDSL bindings can be exposed with {@link #expose(Class) expose()}. {@literal @}{@link 1960*dc5640d1SHerbert Xue com.google.inject.Provides Provides} bindings can be exposed with the {@literal @}{@link 1961*dc5640d1SHerbert Xue Exposed} annotation: 1962*dc5640d1SHerbert Xue 1963*dc5640d1SHerbert Xue <pre> 1964*dc5640d1SHerbert Xue public class FooBarBazModule extends PrivateModule { 1965*dc5640d1SHerbert Xue protected void configure() { 1966*dc5640d1SHerbert Xue bind(Foo.class).to(RealFoo.class); 1967*dc5640d1SHerbert Xue expose(Foo.class); 1968*dc5640d1SHerbert Xue 1969*dc5640d1SHerbert Xue install(new TransactionalBarModule()); 1970*dc5640d1SHerbert Xue expose(Bar.class).annotatedWith(Transactional.class); 1971*dc5640d1SHerbert Xue 1972*dc5640d1SHerbert Xue bind(SomeImplementationDetail.class); 1973*dc5640d1SHerbert Xue install(new MoreImplementationDetailsModule()); 1974*dc5640d1SHerbert Xue } 1975*dc5640d1SHerbert Xue 1976*dc5640d1SHerbert Xue {@literal @}Provides {@literal @}Exposed 1977*dc5640d1SHerbert Xue public Baz provideBaz() { 1978*dc5640d1SHerbert Xue return new SuperBaz(); 1979*dc5640d1SHerbert Xue } 1980*dc5640d1SHerbert Xue } 1981*dc5640d1SHerbert Xue </pre> 1982*dc5640d1SHerbert Xue 1983*dc5640d1SHerbert Xue <p>Private modules are implemented using {@link Injector#createChildInjector(Module[]) parent 1984*dc5640d1SHerbert Xue injectors}. When it can satisfy their dependencies, just-in-time bindings will be created in the 1985*dc5640d1SHerbert Xue root environment. Such bindings are shared among all environments in the tree. 1986*dc5640d1SHerbert Xue 1987*dc5640d1SHerbert Xue <p>The scope of a binding is constrained to its environment. A singleton bound in a private 1988*dc5640d1SHerbert Xue module will be unique to its environment. But a binding for the same type in a different private 1989*dc5640d1SHerbert Xue module will yield a different instance. 1990*dc5640d1SHerbert Xue 1991*dc5640d1SHerbert Xue <p>A shared binding that injects the {@code Injector} gets the root injector, which only has 1992*dc5640d1SHerbert Xue access to bindings in the root environment. An explicit binding that injects the {@code Injector} 1993*dc5640d1SHerbert Xue gets access to all bindings in the child environment. 1994*dc5640d1SHerbert Xue 1995*dc5640d1SHerbert Xue <p>To promote a just-in-time binding to an explicit binding, bind it: 1996*dc5640d1SHerbert Xue <pre> 1997*dc5640d1SHerbert Xue bind(FooImpl.class); 1998*dc5640d1SHerbert Xue </pre> 1999*dc5640d1SHerbert Xue 2000*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 2001*dc5640d1SHerbert Xue @since 2.0]]> 2002*dc5640d1SHerbert Xue </doc> 2003*dc5640d1SHerbert Xue </class> 2004*dc5640d1SHerbert Xue <!-- end class com.google.inject.PrivateModule --> 2005*dc5640d1SHerbert Xue <!-- start class com.google.inject.ProvidedBy --> 2006*dc5640d1SHerbert Xue <class name="ProvidedBy" abstract="true" 2007*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2008*dc5640d1SHerbert Xue deprecated="not deprecated"> 2009*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 2010*dc5640d1SHerbert Xue <doc> 2011*dc5640d1SHerbert Xue <![CDATA[A pointer to the default provider type for a type. 2012*dc5640d1SHerbert Xue 2013*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2014*dc5640d1SHerbert Xue </doc> 2015*dc5640d1SHerbert Xue </class> 2016*dc5640d1SHerbert Xue <!-- end class com.google.inject.ProvidedBy --> 2017*dc5640d1SHerbert Xue <!-- start interface com.google.inject.Provider --> 2018*dc5640d1SHerbert Xue <interface name="Provider" abstract="true" 2019*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2020*dc5640d1SHerbert Xue deprecated="not deprecated"> 2021*dc5640d1SHerbert Xue <method name="get" return="T" 2022*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2023*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2024*dc5640d1SHerbert Xue deprecated="not deprecated"> 2025*dc5640d1SHerbert Xue <doc> 2026*dc5640d1SHerbert Xue <![CDATA[Provides an instance of {@code T}. Must never return {@code null}. 2027*dc5640d1SHerbert Xue 2028*dc5640d1SHerbert Xue @throws OutOfScopeException when an attempt is made to access a scoped object while the scope 2029*dc5640d1SHerbert Xue in question is not currently active 2030*dc5640d1SHerbert Xue @throws ProvisionException if an instance cannot be provided. Such exceptions include messages 2031*dc5640d1SHerbert Xue and throwables to describe why provision failed.]]> 2032*dc5640d1SHerbert Xue </doc> 2033*dc5640d1SHerbert Xue </method> 2034*dc5640d1SHerbert Xue <doc> 2035*dc5640d1SHerbert Xue <![CDATA[An object capable of providing instances of type {@code T}. Providers are used in numerous ways 2036*dc5640d1SHerbert Xue by Guice: 2037*dc5640d1SHerbert Xue 2038*dc5640d1SHerbert Xue <ul> 2039*dc5640d1SHerbert Xue <li>When the default means for obtaining instances (an injectable or parameterless constructor) 2040*dc5640d1SHerbert Xue is insufficient for a particular binding, the module can specify a custom {@code Provider} 2041*dc5640d1SHerbert Xue instead, to control exactly how Guice creates or obtains instances for the binding. 2042*dc5640d1SHerbert Xue 2043*dc5640d1SHerbert Xue <li>An implementation class may always choose to have a {@code Provider<T>} instance injected, 2044*dc5640d1SHerbert Xue rather than having a {@code T} injected directly. This may give you access to multiple 2045*dc5640d1SHerbert Xue instances, instances you wish to safely mutate and discard, instances which are out of scope 2046*dc5640d1SHerbert Xue (e.g. using a {@code @RequestScoped} object from within a {@code @SessionScoped} object), or 2047*dc5640d1SHerbert Xue instances that will be initialized lazily. 2048*dc5640d1SHerbert Xue 2049*dc5640d1SHerbert Xue <li>A custom {@link Scope} is implemented as a decorator of {@code Provider<T>}, which decides 2050*dc5640d1SHerbert Xue when to delegate to the backing provider and when to provide the instance some other way. 2051*dc5640d1SHerbert Xue 2052*dc5640d1SHerbert Xue <li>The {@link Injector} offers access to the {@code Provider<T>} it uses to fulfill requests 2053*dc5640d1SHerbert Xue for a given key, via the {@link Injector#getProvider} methods. 2054*dc5640d1SHerbert Xue </ul> 2055*dc5640d1SHerbert Xue 2056*dc5640d1SHerbert Xue @param <T> the type of object this provides 2057*dc5640d1SHerbert Xue 2058*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2059*dc5640d1SHerbert Xue </doc> 2060*dc5640d1SHerbert Xue </interface> 2061*dc5640d1SHerbert Xue <!-- end interface com.google.inject.Provider --> 2062*dc5640d1SHerbert Xue <!-- start class com.google.inject.Provides --> 2063*dc5640d1SHerbert Xue <class name="Provides" abstract="true" 2064*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2065*dc5640d1SHerbert Xue deprecated="not deprecated"> 2066*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 2067*dc5640d1SHerbert Xue <doc> 2068*dc5640d1SHerbert Xue <![CDATA[Annotates methods of a {@link Module} to create a provider method binding. The method's return 2069*dc5640d1SHerbert Xue type is bound to it's returned value. Guice will pass dependencies to the method as parameters. 2070*dc5640d1SHerbert Xue 2071*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 2072*dc5640d1SHerbert Xue @since 2.0]]> 2073*dc5640d1SHerbert Xue </doc> 2074*dc5640d1SHerbert Xue </class> 2075*dc5640d1SHerbert Xue <!-- end class com.google.inject.Provides --> 2076*dc5640d1SHerbert Xue <!-- start class com.google.inject.ProvisionException --> 2077*dc5640d1SHerbert Xue <class name="ProvisionException" extends="java.lang.RuntimeException" 2078*dc5640d1SHerbert Xue abstract="false" 2079*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2080*dc5640d1SHerbert Xue deprecated="not deprecated"> 2081*dc5640d1SHerbert Xue <constructor name="ProvisionException" type="java.lang.Iterable<com.google.inject.spi.Message>" 2082*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2083*dc5640d1SHerbert Xue deprecated="not deprecated"> 2084*dc5640d1SHerbert Xue <doc> 2085*dc5640d1SHerbert Xue <![CDATA[Creates a ConfigurationException containing {@code messages}.]]> 2086*dc5640d1SHerbert Xue </doc> 2087*dc5640d1SHerbert Xue </constructor> 2088*dc5640d1SHerbert Xue <constructor name="ProvisionException" type="java.lang.String, java.lang.Throwable" 2089*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2090*dc5640d1SHerbert Xue deprecated="not deprecated"> 2091*dc5640d1SHerbert Xue </constructor> 2092*dc5640d1SHerbert Xue <constructor name="ProvisionException" type="java.lang.String" 2093*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2094*dc5640d1SHerbert Xue deprecated="not deprecated"> 2095*dc5640d1SHerbert Xue </constructor> 2096*dc5640d1SHerbert Xue <method name="getErrorMessages" return="java.util.Collection<com.google.inject.spi.Message>" 2097*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2098*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2099*dc5640d1SHerbert Xue deprecated="not deprecated"> 2100*dc5640d1SHerbert Xue <doc> 2101*dc5640d1SHerbert Xue <![CDATA[Returns messages for the errors that caused this exception.]]> 2102*dc5640d1SHerbert Xue </doc> 2103*dc5640d1SHerbert Xue </method> 2104*dc5640d1SHerbert Xue <method name="getMessage" return="java.lang.String" 2105*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2106*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2107*dc5640d1SHerbert Xue deprecated="not deprecated"> 2108*dc5640d1SHerbert Xue </method> 2109*dc5640d1SHerbert Xue <doc> 2110*dc5640d1SHerbert Xue <![CDATA[Indicates that there was a runtime failure while providing an instance. 2111*dc5640d1SHerbert Xue 2112*dc5640d1SHerbert Xue @author [email protected] (Kevin Bourrillion) 2113*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 2114*dc5640d1SHerbert Xue @since 2.0]]> 2115*dc5640d1SHerbert Xue </doc> 2116*dc5640d1SHerbert Xue </class> 2117*dc5640d1SHerbert Xue <!-- end class com.google.inject.ProvisionException --> 2118*dc5640d1SHerbert Xue <!-- start interface com.google.inject.Scope --> 2119*dc5640d1SHerbert Xue <interface name="Scope" abstract="true" 2120*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2121*dc5640d1SHerbert Xue deprecated="not deprecated"> 2122*dc5640d1SHerbert Xue <method name="scope" return="com.google.inject.Provider<T>" 2123*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2124*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2125*dc5640d1SHerbert Xue deprecated="not deprecated"> 2126*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 2127*dc5640d1SHerbert Xue <param name="unscoped" type="com.google.inject.Provider<T>"/> 2128*dc5640d1SHerbert Xue <doc> 2129*dc5640d1SHerbert Xue <![CDATA[Scopes a provider. The returned provider returns objects from this scope. 2130*dc5640d1SHerbert Xue If an object does not exist in this scope, the provider can use the given 2131*dc5640d1SHerbert Xue unscoped provider to retrieve one. 2132*dc5640d1SHerbert Xue 2133*dc5640d1SHerbert Xue <p>Scope implementations are strongly encouraged to override 2134*dc5640d1SHerbert Xue {@link Object#toString} in the returned provider and include the backing 2135*dc5640d1SHerbert Xue provider's {@code toString()} output. 2136*dc5640d1SHerbert Xue 2137*dc5640d1SHerbert Xue @param key binding key 2138*dc5640d1SHerbert Xue @param unscoped locates an instance when one doesn't already exist in this 2139*dc5640d1SHerbert Xue scope. 2140*dc5640d1SHerbert Xue @return a new provider which only delegates to the given unscoped provider 2141*dc5640d1SHerbert Xue when an instance of the requested object doesn't already exist in this 2142*dc5640d1SHerbert Xue scope]]> 2143*dc5640d1SHerbert Xue </doc> 2144*dc5640d1SHerbert Xue </method> 2145*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 2146*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2147*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2148*dc5640d1SHerbert Xue deprecated="not deprecated"> 2149*dc5640d1SHerbert Xue <doc> 2150*dc5640d1SHerbert Xue <![CDATA[A short but useful description of this scope. For comparison, the standard 2151*dc5640d1SHerbert Xue scopes that ship with guice use the descriptions 2152*dc5640d1SHerbert Xue {@code "Scopes.SINGLETON"}, {@code "ServletScopes.SESSION"} and 2153*dc5640d1SHerbert Xue {@code "ServletScopes.REQUEST"}.]]> 2154*dc5640d1SHerbert Xue </doc> 2155*dc5640d1SHerbert Xue </method> 2156*dc5640d1SHerbert Xue <doc> 2157*dc5640d1SHerbert Xue <![CDATA[A scope is a level of visibility that instances provided by Guice may have. 2158*dc5640d1SHerbert Xue By default, an instance created by the {@link Injector} has <i>no scope</i>, 2159*dc5640d1SHerbert Xue meaning it has no state from the framework's perspective -- the 2160*dc5640d1SHerbert Xue {@code Injector} creates it, injects it once into the class that required it, 2161*dc5640d1SHerbert Xue and then immediately forgets it. Associating a scope with a particular 2162*dc5640d1SHerbert Xue binding allows the created instance to be "remembered" and possibly used 2163*dc5640d1SHerbert Xue again for other injections. 2164*dc5640d1SHerbert Xue 2165*dc5640d1SHerbert Xue <p>An example of a scope is {@link Scopes#SINGLETON}. 2166*dc5640d1SHerbert Xue 2167*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2168*dc5640d1SHerbert Xue </doc> 2169*dc5640d1SHerbert Xue </interface> 2170*dc5640d1SHerbert Xue <!-- end interface com.google.inject.Scope --> 2171*dc5640d1SHerbert Xue <!-- start class com.google.inject.ScopeAnnotation --> 2172*dc5640d1SHerbert Xue <class name="ScopeAnnotation" abstract="true" 2173*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2174*dc5640d1SHerbert Xue deprecated="not deprecated"> 2175*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 2176*dc5640d1SHerbert Xue <doc> 2177*dc5640d1SHerbert Xue <![CDATA[Annotates annotations which are used for scoping. Only one such annotation 2178*dc5640d1SHerbert Xue may apply to a single implementation class. You must also annotate scope 2179*dc5640d1SHerbert Xue annotations with {@code @Retention(RUNTIME)}. For example: 2180*dc5640d1SHerbert Xue 2181*dc5640d1SHerbert Xue <pre> 2182*dc5640d1SHerbert Xue {@code @}Retention(RUNTIME) 2183*dc5640d1SHerbert Xue {@code @}Target(TYPE) 2184*dc5640d1SHerbert Xue {@code @}ScopeAnnotation 2185*dc5640d1SHerbert Xue public {@code @}interface SessionScoped {} 2186*dc5640d1SHerbert Xue </pre> 2187*dc5640d1SHerbert Xue 2188*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2189*dc5640d1SHerbert Xue </doc> 2190*dc5640d1SHerbert Xue </class> 2191*dc5640d1SHerbert Xue <!-- end class com.google.inject.ScopeAnnotation --> 2192*dc5640d1SHerbert Xue <!-- start class com.google.inject.Scopes --> 2193*dc5640d1SHerbert Xue <class name="Scopes" extends="java.lang.Object" 2194*dc5640d1SHerbert Xue abstract="false" 2195*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2196*dc5640d1SHerbert Xue deprecated="not deprecated"> 2197*dc5640d1SHerbert Xue <field name="SINGLETON" type="com.google.inject.Scope" 2198*dc5640d1SHerbert Xue transient="false" volatile="false" 2199*dc5640d1SHerbert Xue static="true" final="true" visibility="public" 2200*dc5640d1SHerbert Xue deprecated="not deprecated"> 2201*dc5640d1SHerbert Xue <doc> 2202*dc5640d1SHerbert Xue <![CDATA[One instance per {@link Injector}. Also see {@code @}{@link Singleton}.]]> 2203*dc5640d1SHerbert Xue </doc> 2204*dc5640d1SHerbert Xue </field> 2205*dc5640d1SHerbert Xue <field name="NO_SCOPE" type="com.google.inject.Scope" 2206*dc5640d1SHerbert Xue transient="false" volatile="false" 2207*dc5640d1SHerbert Xue static="true" final="true" visibility="public" 2208*dc5640d1SHerbert Xue deprecated="not deprecated"> 2209*dc5640d1SHerbert Xue <doc> 2210*dc5640d1SHerbert Xue <![CDATA[No scope; the same as not applying any scope at all. Each time the 2211*dc5640d1SHerbert Xue Injector obtains an instance of an object with "no scope", it injects this 2212*dc5640d1SHerbert Xue instance then immediately forgets it. When the next request for the same 2213*dc5640d1SHerbert Xue binding arrives it will need to obtain the instance over again. 2214*dc5640d1SHerbert Xue 2215*dc5640d1SHerbert Xue <p>This exists only in case a class has been annotated with a scope 2216*dc5640d1SHerbert Xue annotation such as {@link Singleton @Singleton}, and you need to override 2217*dc5640d1SHerbert Xue this to "no scope" in your binding. 2218*dc5640d1SHerbert Xue 2219*dc5640d1SHerbert Xue @since 2.0]]> 2220*dc5640d1SHerbert Xue </doc> 2221*dc5640d1SHerbert Xue </field> 2222*dc5640d1SHerbert Xue <doc> 2223*dc5640d1SHerbert Xue <![CDATA[Built-in scope implementations. 2224*dc5640d1SHerbert Xue 2225*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2226*dc5640d1SHerbert Xue </doc> 2227*dc5640d1SHerbert Xue </class> 2228*dc5640d1SHerbert Xue <!-- end class com.google.inject.Scopes --> 2229*dc5640d1SHerbert Xue <!-- start class com.google.inject.Singleton --> 2230*dc5640d1SHerbert Xue <class name="Singleton" abstract="true" 2231*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2232*dc5640d1SHerbert Xue deprecated="not deprecated"> 2233*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 2234*dc5640d1SHerbert Xue <doc> 2235*dc5640d1SHerbert Xue <![CDATA[Apply this to implementation classes when you want only one instance 2236*dc5640d1SHerbert Xue (per {@link Injector}) to be reused for all injections for that binding. 2237*dc5640d1SHerbert Xue 2238*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2239*dc5640d1SHerbert Xue </doc> 2240*dc5640d1SHerbert Xue </class> 2241*dc5640d1SHerbert Xue <!-- end class com.google.inject.Singleton --> 2242*dc5640d1SHerbert Xue <!-- start class com.google.inject.Stage --> 2243*dc5640d1SHerbert Xue <class name="Stage" extends="java.lang.Enum<com.google.inject.Stage>" 2244*dc5640d1SHerbert Xue abstract="false" 2245*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2246*dc5640d1SHerbert Xue deprecated="not deprecated"> 2247*dc5640d1SHerbert Xue <method name="values" return="com.google.inject.Stage[]" 2248*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2249*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 2250*dc5640d1SHerbert Xue deprecated="not deprecated"> 2251*dc5640d1SHerbert Xue </method> 2252*dc5640d1SHerbert Xue <method name="valueOf" return="com.google.inject.Stage" 2253*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2254*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 2255*dc5640d1SHerbert Xue deprecated="not deprecated"> 2256*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 2257*dc5640d1SHerbert Xue </method> 2258*dc5640d1SHerbert Xue <doc> 2259*dc5640d1SHerbert Xue <![CDATA[The stage we're running in. 2260*dc5640d1SHerbert Xue 2261*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2262*dc5640d1SHerbert Xue </doc> 2263*dc5640d1SHerbert Xue </class> 2264*dc5640d1SHerbert Xue <!-- end class com.google.inject.Stage --> 2265*dc5640d1SHerbert Xue <!-- start class com.google.inject.TypeLiteral --> 2266*dc5640d1SHerbert Xue <class name="TypeLiteral" extends="java.lang.Object" 2267*dc5640d1SHerbert Xue abstract="false" 2268*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2269*dc5640d1SHerbert Xue deprecated="not deprecated"> 2270*dc5640d1SHerbert Xue <constructor name="TypeLiteral" 2271*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 2272*dc5640d1SHerbert Xue deprecated="not deprecated"> 2273*dc5640d1SHerbert Xue <doc> 2274*dc5640d1SHerbert Xue <![CDATA[Constructs a new type literal. Derives represented class from type 2275*dc5640d1SHerbert Xue parameter. 2276*dc5640d1SHerbert Xue 2277*dc5640d1SHerbert Xue <p>Clients create an empty anonymous subclass. Doing so embeds the type 2278*dc5640d1SHerbert Xue parameter in the anonymous class's type hierarchy so we can reconstitute it 2279*dc5640d1SHerbert Xue at runtime despite erasure.]]> 2280*dc5640d1SHerbert Xue </doc> 2281*dc5640d1SHerbert Xue </constructor> 2282*dc5640d1SHerbert Xue <method name="getRawType" return="java.lang.Class<? super T>" 2283*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2284*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2285*dc5640d1SHerbert Xue deprecated="not deprecated"> 2286*dc5640d1SHerbert Xue <doc> 2287*dc5640d1SHerbert Xue <![CDATA[Returns the raw (non-generic) type for this type. 2288*dc5640d1SHerbert Xue 2289*dc5640d1SHerbert Xue @since 2.0]]> 2290*dc5640d1SHerbert Xue </doc> 2291*dc5640d1SHerbert Xue </method> 2292*dc5640d1SHerbert Xue <method name="getType" return="java.lang.reflect.Type" 2293*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2294*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2295*dc5640d1SHerbert Xue deprecated="not deprecated"> 2296*dc5640d1SHerbert Xue <doc> 2297*dc5640d1SHerbert Xue <![CDATA[Gets underlying {@code Type} instance.]]> 2298*dc5640d1SHerbert Xue </doc> 2299*dc5640d1SHerbert Xue </method> 2300*dc5640d1SHerbert Xue <method name="hashCode" return="int" 2301*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2302*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2303*dc5640d1SHerbert Xue deprecated="not deprecated"> 2304*dc5640d1SHerbert Xue </method> 2305*dc5640d1SHerbert Xue <method name="equals" return="boolean" 2306*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2307*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2308*dc5640d1SHerbert Xue deprecated="not deprecated"> 2309*dc5640d1SHerbert Xue <param name="o" type="java.lang.Object"/> 2310*dc5640d1SHerbert Xue </method> 2311*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 2312*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2313*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2314*dc5640d1SHerbert Xue deprecated="not deprecated"> 2315*dc5640d1SHerbert Xue </method> 2316*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.TypeLiteral<?>" 2317*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2318*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 2319*dc5640d1SHerbert Xue deprecated="not deprecated"> 2320*dc5640d1SHerbert Xue <param name="type" type="java.lang.reflect.Type"/> 2321*dc5640d1SHerbert Xue <doc> 2322*dc5640d1SHerbert Xue <![CDATA[Gets type literal for the given {@code Type} instance.]]> 2323*dc5640d1SHerbert Xue </doc> 2324*dc5640d1SHerbert Xue </method> 2325*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.TypeLiteral<T>" 2326*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2327*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 2328*dc5640d1SHerbert Xue deprecated="not deprecated"> 2329*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 2330*dc5640d1SHerbert Xue <doc> 2331*dc5640d1SHerbert Xue <![CDATA[Gets type literal for the given {@code Class} instance.]]> 2332*dc5640d1SHerbert Xue </doc> 2333*dc5640d1SHerbert Xue </method> 2334*dc5640d1SHerbert Xue <method name="getSupertype" return="com.google.inject.TypeLiteral<?>" 2335*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2336*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2337*dc5640d1SHerbert Xue deprecated="not deprecated"> 2338*dc5640d1SHerbert Xue <param name="supertype" type="java.lang.Class<?>"/> 2339*dc5640d1SHerbert Xue <doc> 2340*dc5640d1SHerbert Xue <![CDATA[Returns the generic form of {@code supertype}. For example, if this is {@code 2341*dc5640d1SHerbert Xue ArrayList<String>}, this returns {@code Iterable<String>} given the input {@code 2342*dc5640d1SHerbert Xue Iterable.class}. 2343*dc5640d1SHerbert Xue 2344*dc5640d1SHerbert Xue @param supertype a superclass of, or interface implemented by, this. 2345*dc5640d1SHerbert Xue @since 2.0]]> 2346*dc5640d1SHerbert Xue </doc> 2347*dc5640d1SHerbert Xue </method> 2348*dc5640d1SHerbert Xue <method name="getFieldType" return="com.google.inject.TypeLiteral<?>" 2349*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2350*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2351*dc5640d1SHerbert Xue deprecated="not deprecated"> 2352*dc5640d1SHerbert Xue <param name="field" type="java.lang.reflect.Field"/> 2353*dc5640d1SHerbert Xue <doc> 2354*dc5640d1SHerbert Xue <![CDATA[Returns the resolved generic type of {@code field}. 2355*dc5640d1SHerbert Xue 2356*dc5640d1SHerbert Xue @param field a field defined by this or any superclass. 2357*dc5640d1SHerbert Xue @since 2.0]]> 2358*dc5640d1SHerbert Xue </doc> 2359*dc5640d1SHerbert Xue </method> 2360*dc5640d1SHerbert Xue <method name="getParameterTypes" return="java.util.List<com.google.inject.TypeLiteral<?>>" 2361*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2362*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2363*dc5640d1SHerbert Xue deprecated="not deprecated"> 2364*dc5640d1SHerbert Xue <param name="methodOrConstructor" type="java.lang.reflect.Member"/> 2365*dc5640d1SHerbert Xue <doc> 2366*dc5640d1SHerbert Xue <![CDATA[Returns the resolved generic parameter types of {@code methodOrConstructor}. 2367*dc5640d1SHerbert Xue 2368*dc5640d1SHerbert Xue @param methodOrConstructor a method or constructor defined by this or any supertype. 2369*dc5640d1SHerbert Xue @since 2.0]]> 2370*dc5640d1SHerbert Xue </doc> 2371*dc5640d1SHerbert Xue </method> 2372*dc5640d1SHerbert Xue <method name="getExceptionTypes" return="java.util.List<com.google.inject.TypeLiteral<?>>" 2373*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2374*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2375*dc5640d1SHerbert Xue deprecated="not deprecated"> 2376*dc5640d1SHerbert Xue <param name="methodOrConstructor" type="java.lang.reflect.Member"/> 2377*dc5640d1SHerbert Xue <doc> 2378*dc5640d1SHerbert Xue <![CDATA[Returns the resolved generic exception types thrown by {@code constructor}. 2379*dc5640d1SHerbert Xue 2380*dc5640d1SHerbert Xue @param methodOrConstructor a method or constructor defined by this or any supertype. 2381*dc5640d1SHerbert Xue @since 2.0]]> 2382*dc5640d1SHerbert Xue </doc> 2383*dc5640d1SHerbert Xue </method> 2384*dc5640d1SHerbert Xue <method name="getReturnType" return="com.google.inject.TypeLiteral<?>" 2385*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2386*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2387*dc5640d1SHerbert Xue deprecated="not deprecated"> 2388*dc5640d1SHerbert Xue <param name="method" type="java.lang.reflect.Method"/> 2389*dc5640d1SHerbert Xue <doc> 2390*dc5640d1SHerbert Xue <![CDATA[Returns the resolved generic return type of {@code method}. 2391*dc5640d1SHerbert Xue 2392*dc5640d1SHerbert Xue @param method a method defined by this or any supertype. 2393*dc5640d1SHerbert Xue @since 2.0]]> 2394*dc5640d1SHerbert Xue </doc> 2395*dc5640d1SHerbert Xue </method> 2396*dc5640d1SHerbert Xue <doc> 2397*dc5640d1SHerbert Xue <![CDATA[Represents a generic type {@code T}. Java doesn't yet provide a way to 2398*dc5640d1SHerbert Xue represent generic types, so this class does. Forces clients to create a 2399*dc5640d1SHerbert Xue subclass of this class which enables retrieval the type information even at 2400*dc5640d1SHerbert Xue runtime. 2401*dc5640d1SHerbert Xue 2402*dc5640d1SHerbert Xue <p>For example, to create a type literal for {@code List<String>}, you can 2403*dc5640d1SHerbert Xue create an empty anonymous inner class: 2404*dc5640d1SHerbert Xue 2405*dc5640d1SHerbert Xue <p> 2406*dc5640d1SHerbert Xue {@code TypeLiteral<List<String>> list = new TypeLiteral<List<String>>() {};} 2407*dc5640d1SHerbert Xue 2408*dc5640d1SHerbert Xue <p>This syntax cannot be used to create type literals that have wildcard 2409*dc5640d1SHerbert Xue parameters, such as {@code Class<?>} or {@code List<? extends CharSequence>}. 2410*dc5640d1SHerbert Xue Such type literals must be constructed programatically, either by {@link 2411*dc5640d1SHerbert Xue Method#getGenericReturnType extracting types from members} or by using the 2412*dc5640d1SHerbert Xue {@link Types} factory class. 2413*dc5640d1SHerbert Xue 2414*dc5640d1SHerbert Xue <p>Along with modeling generic types, this class can resolve type parameters. 2415*dc5640d1SHerbert Xue For example, to figure out what type {@code keySet()} returns on a {@code 2416*dc5640d1SHerbert Xue Map<Integer, String>}, use this code:<pre> {@code 2417*dc5640d1SHerbert Xue 2418*dc5640d1SHerbert Xue TypeLiteral<Map<Integer, String>> mapType 2419*dc5640d1SHerbert Xue = new TypeLiteral<Map<Integer, String>>() {}; 2420*dc5640d1SHerbert Xue TypeLiteral<?> keySetType 2421*dc5640d1SHerbert Xue = mapType.getReturnType(Map.class.getMethod("keySet")); 2422*dc5640d1SHerbert Xue System.out.println(keySetType); // prints "Set<Integer>"}</pre> 2423*dc5640d1SHerbert Xue 2424*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 2425*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]> 2426*dc5640d1SHerbert Xue </doc> 2427*dc5640d1SHerbert Xue </class> 2428*dc5640d1SHerbert Xue <!-- end class com.google.inject.TypeLiteral --> 2429*dc5640d1SHerbert Xue</package> 2430*dc5640d1SHerbert Xue<package name="com.google.inject.assistedinject"> 2431*dc5640d1SHerbert Xue <!-- start class com.google.inject.assistedinject.Assisted --> 2432*dc5640d1SHerbert Xue <class name="Assisted" abstract="true" 2433*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2434*dc5640d1SHerbert Xue deprecated="not deprecated"> 2435*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 2436*dc5640d1SHerbert Xue <doc> 2437*dc5640d1SHerbert Xue <![CDATA[Annotates an injected parameter or field whose value comes from an argument to a factory method. 2438*dc5640d1SHerbert Xue 2439*dc5640d1SHerbert Xue @author [email protected] (Jerome Mourits) 2440*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]> 2441*dc5640d1SHerbert Xue </doc> 2442*dc5640d1SHerbert Xue </class> 2443*dc5640d1SHerbert Xue <!-- end class com.google.inject.assistedinject.Assisted --> 2444*dc5640d1SHerbert Xue <!-- start class com.google.inject.assistedinject.AssistedInject --> 2445*dc5640d1SHerbert Xue <class name="AssistedInject" abstract="true" 2446*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2447*dc5640d1SHerbert Xue deprecated="{@link FactoryProvider} now works better with the standard {@literal @Inject} 2448*dc5640d1SHerbert Xue annotation. When using that annotation, parameters are matched by name and type rather than 2449*dc5640d1SHerbert Xue by position. In addition, values that use the standard {@literal @Inject} constructor 2450*dc5640d1SHerbert Xue annotation are eligible for method interception."> 2451*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 2452*dc5640d1SHerbert Xue <doc> 2453*dc5640d1SHerbert Xue <![CDATA[<p>Constructors annotated with {@code @AssistedInject} indicate that they can be instantiated by 2454*dc5640d1SHerbert Xue the {@link FactoryProvider}. Each constructor must exactly match one corresponding factory method 2455*dc5640d1SHerbert Xue within the factory interface. 2456*dc5640d1SHerbert Xue 2457*dc5640d1SHerbert Xue <p>Constructor parameters must be either supplied by the factory interface and marked with 2458*dc5640d1SHerbert Xue <code>@Assisted</code>, or they must be injectable. 2459*dc5640d1SHerbert Xue 2460*dc5640d1SHerbert Xue @deprecated {@link FactoryProvider} now works better with the standard {@literal @Inject} 2461*dc5640d1SHerbert Xue annotation. When using that annotation, parameters are matched by name and type rather than 2462*dc5640d1SHerbert Xue by position. In addition, values that use the standard {@literal @Inject} constructor 2463*dc5640d1SHerbert Xue annotation are eligible for method interception. 2464*dc5640d1SHerbert Xue 2465*dc5640d1SHerbert Xue @author [email protected] (Jerome Mourits) 2466*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]> 2467*dc5640d1SHerbert Xue </doc> 2468*dc5640d1SHerbert Xue </class> 2469*dc5640d1SHerbert Xue <!-- end class com.google.inject.assistedinject.AssistedInject --> 2470*dc5640d1SHerbert Xue <!-- start class com.google.inject.assistedinject.FactoryProvider --> 2471*dc5640d1SHerbert Xue <class name="FactoryProvider" extends="java.lang.Object" 2472*dc5640d1SHerbert Xue abstract="false" 2473*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2474*dc5640d1SHerbert Xue deprecated="not deprecated"> 2475*dc5640d1SHerbert Xue <implements name="com.google.inject.Provider<F>"/> 2476*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 2477*dc5640d1SHerbert Xue <method name="newFactory" return="com.google.inject.Provider<F>" 2478*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2479*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 2480*dc5640d1SHerbert Xue deprecated="not deprecated"> 2481*dc5640d1SHerbert Xue <param name="factoryType" type="java.lang.Class<F>"/> 2482*dc5640d1SHerbert Xue <param name="implementationType" type="java.lang.Class<?>"/> 2483*dc5640d1SHerbert Xue </method> 2484*dc5640d1SHerbert Xue <method name="newFactory" return="com.google.inject.Provider<F>" 2485*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2486*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 2487*dc5640d1SHerbert Xue deprecated="not deprecated"> 2488*dc5640d1SHerbert Xue <param name="factoryType" type="com.google.inject.TypeLiteral<F>"/> 2489*dc5640d1SHerbert Xue <param name="implementationType" type="com.google.inject.TypeLiteral<?>"/> 2490*dc5640d1SHerbert Xue </method> 2491*dc5640d1SHerbert Xue <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 2492*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2493*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2494*dc5640d1SHerbert Xue deprecated="not deprecated"> 2495*dc5640d1SHerbert Xue </method> 2496*dc5640d1SHerbert Xue <method name="get" return="F" 2497*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2498*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2499*dc5640d1SHerbert Xue deprecated="not deprecated"> 2500*dc5640d1SHerbert Xue </method> 2501*dc5640d1SHerbert Xue <doc> 2502*dc5640d1SHerbert Xue <![CDATA[Provides a factory that combines the caller's arguments with injector-supplied values to 2503*dc5640d1SHerbert Xue construct objects. 2504*dc5640d1SHerbert Xue 2505*dc5640d1SHerbert Xue <h3>Defining a factory</h3> 2506*dc5640d1SHerbert Xue Create an interface whose methods return the constructed type, or any of its supertypes. The 2507*dc5640d1SHerbert Xue method's parameters are the arguments required to build the constructed type. 2508*dc5640d1SHerbert Xue <pre>public interface PaymentFactory { 2509*dc5640d1SHerbert Xue Payment create(Date startDate, Money amount); 2510*dc5640d1SHerbert Xue }</pre> 2511*dc5640d1SHerbert Xue You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i> 2512*dc5640d1SHerbert Xue or <i>newPayment</i>. 2513*dc5640d1SHerbert Xue 2514*dc5640d1SHerbert Xue <h3>Creating a type that accepts factory parameters</h3> 2515*dc5640d1SHerbert Xue {@code constructedType} is a concrete class with an {@literal @}{@link Inject}-annotated 2516*dc5640d1SHerbert Xue constructor. In addition to injector-supplied parameters, the constructor should have 2517*dc5640d1SHerbert Xue parameters that match each of the factory method's parameters. Each factory-supplied parameter 2518*dc5640d1SHerbert Xue requires an {@literal @}{@link Assisted} annotation. This serves to document that the parameter 2519*dc5640d1SHerbert Xue is not bound by your application's modules. 2520*dc5640d1SHerbert Xue <pre>public class RealPayment implements Payment { 2521*dc5640d1SHerbert Xue {@literal @}Inject 2522*dc5640d1SHerbert Xue public RealPayment( 2523*dc5640d1SHerbert Xue CreditService creditService, 2524*dc5640d1SHerbert Xue AuthService authService, 2525*dc5640d1SHerbert Xue <strong>{@literal @}Assisted Date startDate</strong>, 2526*dc5640d1SHerbert Xue <strong>{@literal @}Assisted Money amount</strong>) { 2527*dc5640d1SHerbert Xue ... 2528*dc5640d1SHerbert Xue } 2529*dc5640d1SHerbert Xue }</pre> 2530*dc5640d1SHerbert Xue Any parameter that permits a null value should also be annotated {@code @Nullable}. 2531*dc5640d1SHerbert Xue 2532*dc5640d1SHerbert Xue <h3>Configuring factories</h3> 2533*dc5640d1SHerbert Xue In your {@link com.google.inject.Module module}, bind the factory interface to the returned 2534*dc5640d1SHerbert Xue factory: 2535*dc5640d1SHerbert Xue <pre>bind(PaymentFactory.class).toProvider( 2536*dc5640d1SHerbert Xue FactoryProvider.newFactory(PaymentFactory.class, RealPayment.class));</pre> 2537*dc5640d1SHerbert Xue As a side-effect of this binding, Guice will inject the factory to initialize it for use. The 2538*dc5640d1SHerbert Xue factory cannot be used until the injector has been initialized. 2539*dc5640d1SHerbert Xue 2540*dc5640d1SHerbert Xue <h3>Using the factory</h3> 2541*dc5640d1SHerbert Xue Inject your factory into your application classes. When you use the factory, your arguments 2542*dc5640d1SHerbert Xue will be combined with values from the injector to construct an instance. 2543*dc5640d1SHerbert Xue <pre>public class PaymentAction { 2544*dc5640d1SHerbert Xue {@literal @}Inject private PaymentFactory paymentFactory; 2545*dc5640d1SHerbert Xue 2546*dc5640d1SHerbert Xue public void doPayment(Money amount) { 2547*dc5640d1SHerbert Xue Payment payment = paymentFactory.create(new Date(), amount); 2548*dc5640d1SHerbert Xue payment.apply(); 2549*dc5640d1SHerbert Xue } 2550*dc5640d1SHerbert Xue }</pre> 2551*dc5640d1SHerbert Xue 2552*dc5640d1SHerbert Xue <h3>Making parameter types distinct</h3> 2553*dc5640d1SHerbert Xue The types of the factory method's parameters must be distinct. To use multiple parameters of 2554*dc5640d1SHerbert Xue the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the 2555*dc5640d1SHerbert Xue parameters. The names must be applied to the factory method's parameters: 2556*dc5640d1SHerbert Xue 2557*dc5640d1SHerbert Xue <pre>public interface PaymentFactory { 2558*dc5640d1SHerbert Xue Payment create( 2559*dc5640d1SHerbert Xue <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 2560*dc5640d1SHerbert Xue <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 2561*dc5640d1SHerbert Xue Money amount); 2562*dc5640d1SHerbert Xue } </pre> 2563*dc5640d1SHerbert Xue ...and to the concrete type's constructor parameters: 2564*dc5640d1SHerbert Xue <pre>public class RealPayment implements Payment { 2565*dc5640d1SHerbert Xue {@literal @}Inject 2566*dc5640d1SHerbert Xue public RealPayment( 2567*dc5640d1SHerbert Xue CreditService creditService, 2568*dc5640d1SHerbert Xue AuthService authService, 2569*dc5640d1SHerbert Xue <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 2570*dc5640d1SHerbert Xue <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 2571*dc5640d1SHerbert Xue <strong>{@literal @}Assisted</strong> Money amount) { 2572*dc5640d1SHerbert Xue ... 2573*dc5640d1SHerbert Xue } 2574*dc5640d1SHerbert Xue }</pre> 2575*dc5640d1SHerbert Xue 2576*dc5640d1SHerbert Xue <h3>Values are created by Guice</h3> 2577*dc5640d1SHerbert Xue Returned factories use child injectors to create values. The values are eligible for method 2578*dc5640d1SHerbert Xue interception. In addition, {@literal @}{@literal Inject} members will be injected before they are 2579*dc5640d1SHerbert Xue returned. 2580*dc5640d1SHerbert Xue 2581*dc5640d1SHerbert Xue <h3>Backwards compatibility using {@literal @}AssistedInject</h3> 2582*dc5640d1SHerbert Xue Instead of the {@literal @}Inject annotation, you may annotate the constructed classes with 2583*dc5640d1SHerbert Xue {@literal @}{@link AssistedInject}. This triggers a limited backwards-compatability mode. 2584*dc5640d1SHerbert Xue 2585*dc5640d1SHerbert Xue <p>Instead of matching factory method arguments to constructor parameters using their names, the 2586*dc5640d1SHerbert Xue <strong>parameters are matched by their order</strong>. The first factory method argument is 2587*dc5640d1SHerbert Xue used for the first {@literal @}Assisted constructor parameter, etc.. Annotation names have no 2588*dc5640d1SHerbert Xue effect. 2589*dc5640d1SHerbert Xue 2590*dc5640d1SHerbert Xue <p>Returned values are <strong>not created by Guice</strong>. These types are not eligible for 2591*dc5640d1SHerbert Xue method interception. They do receive post-construction member injection. 2592*dc5640d1SHerbert Xue 2593*dc5640d1SHerbert Xue @param <F> The factory interface 2594*dc5640d1SHerbert Xue 2595*dc5640d1SHerbert Xue @author [email protected] (Jerome Mourits) 2596*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 2597*dc5640d1SHerbert Xue @author [email protected] (Daniel Martin)]]> 2598*dc5640d1SHerbert Xue </doc> 2599*dc5640d1SHerbert Xue </class> 2600*dc5640d1SHerbert Xue <!-- end class com.google.inject.assistedinject.FactoryProvider --> 2601*dc5640d1SHerbert Xue</package> 2602*dc5640d1SHerbert Xue<package name="com.google.inject.binder"> 2603*dc5640d1SHerbert Xue <!-- start interface com.google.inject.binder.AnnotatedBindingBuilder --> 2604*dc5640d1SHerbert Xue <interface name="AnnotatedBindingBuilder" abstract="true" 2605*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2606*dc5640d1SHerbert Xue deprecated="not deprecated"> 2607*dc5640d1SHerbert Xue <implements name="com.google.inject.binder.LinkedBindingBuilder<T>"/> 2608*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder<T>" 2609*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2610*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2611*dc5640d1SHerbert Xue deprecated="not deprecated"> 2612*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 2613*dc5640d1SHerbert Xue <doc> 2614*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 2615*dc5640d1SHerbert Xue </doc> 2616*dc5640d1SHerbert Xue </method> 2617*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder<T>" 2618*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2619*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2620*dc5640d1SHerbert Xue deprecated="not deprecated"> 2621*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 2622*dc5640d1SHerbert Xue <doc> 2623*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 2624*dc5640d1SHerbert Xue </doc> 2625*dc5640d1SHerbert Xue </method> 2626*dc5640d1SHerbert Xue <doc> 2627*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 2628*dc5640d1SHerbert Xue 2629*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2630*dc5640d1SHerbert Xue </doc> 2631*dc5640d1SHerbert Xue </interface> 2632*dc5640d1SHerbert Xue <!-- end interface com.google.inject.binder.AnnotatedBindingBuilder --> 2633*dc5640d1SHerbert Xue <!-- start interface com.google.inject.binder.AnnotatedConstantBindingBuilder --> 2634*dc5640d1SHerbert Xue <interface name="AnnotatedConstantBindingBuilder" abstract="true" 2635*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2636*dc5640d1SHerbert Xue deprecated="not deprecated"> 2637*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder" 2638*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2639*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2640*dc5640d1SHerbert Xue deprecated="not deprecated"> 2641*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 2642*dc5640d1SHerbert Xue <doc> 2643*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 2644*dc5640d1SHerbert Xue </doc> 2645*dc5640d1SHerbert Xue </method> 2646*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder" 2647*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2648*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2649*dc5640d1SHerbert Xue deprecated="not deprecated"> 2650*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 2651*dc5640d1SHerbert Xue <doc> 2652*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 2653*dc5640d1SHerbert Xue </doc> 2654*dc5640d1SHerbert Xue </method> 2655*dc5640d1SHerbert Xue <doc> 2656*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 2657*dc5640d1SHerbert Xue 2658*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2659*dc5640d1SHerbert Xue </doc> 2660*dc5640d1SHerbert Xue </interface> 2661*dc5640d1SHerbert Xue <!-- end interface com.google.inject.binder.AnnotatedConstantBindingBuilder --> 2662*dc5640d1SHerbert Xue <!-- start interface com.google.inject.binder.AnnotatedElementBuilder --> 2663*dc5640d1SHerbert Xue <interface name="AnnotatedElementBuilder" abstract="true" 2664*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2665*dc5640d1SHerbert Xue deprecated="not deprecated"> 2666*dc5640d1SHerbert Xue <method name="annotatedWith" 2667*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2668*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2669*dc5640d1SHerbert Xue deprecated="not deprecated"> 2670*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 2671*dc5640d1SHerbert Xue <doc> 2672*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 2673*dc5640d1SHerbert Xue </doc> 2674*dc5640d1SHerbert Xue </method> 2675*dc5640d1SHerbert Xue <method name="annotatedWith" 2676*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2677*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2678*dc5640d1SHerbert Xue deprecated="not deprecated"> 2679*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 2680*dc5640d1SHerbert Xue <doc> 2681*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 2682*dc5640d1SHerbert Xue </doc> 2683*dc5640d1SHerbert Xue </method> 2684*dc5640d1SHerbert Xue <doc> 2685*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 2686*dc5640d1SHerbert Xue 2687*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 2688*dc5640d1SHerbert Xue @since 2.0]]> 2689*dc5640d1SHerbert Xue </doc> 2690*dc5640d1SHerbert Xue </interface> 2691*dc5640d1SHerbert Xue <!-- end interface com.google.inject.binder.AnnotatedElementBuilder --> 2692*dc5640d1SHerbert Xue <!-- start interface com.google.inject.binder.ConstantBindingBuilder --> 2693*dc5640d1SHerbert Xue <interface name="ConstantBindingBuilder" abstract="true" 2694*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2695*dc5640d1SHerbert Xue deprecated="not deprecated"> 2696*dc5640d1SHerbert Xue <method name="to" 2697*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2698*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2699*dc5640d1SHerbert Xue deprecated="not deprecated"> 2700*dc5640d1SHerbert Xue <param name="value" type="java.lang.String"/> 2701*dc5640d1SHerbert Xue <doc> 2702*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 2703*dc5640d1SHerbert Xue </doc> 2704*dc5640d1SHerbert Xue </method> 2705*dc5640d1SHerbert Xue <method name="to" 2706*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2707*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2708*dc5640d1SHerbert Xue deprecated="not deprecated"> 2709*dc5640d1SHerbert Xue <param name="value" type="int"/> 2710*dc5640d1SHerbert Xue <doc> 2711*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 2712*dc5640d1SHerbert Xue </doc> 2713*dc5640d1SHerbert Xue </method> 2714*dc5640d1SHerbert Xue <method name="to" 2715*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2716*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2717*dc5640d1SHerbert Xue deprecated="not deprecated"> 2718*dc5640d1SHerbert Xue <param name="value" type="long"/> 2719*dc5640d1SHerbert Xue <doc> 2720*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 2721*dc5640d1SHerbert Xue </doc> 2722*dc5640d1SHerbert Xue </method> 2723*dc5640d1SHerbert Xue <method name="to" 2724*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2725*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2726*dc5640d1SHerbert Xue deprecated="not deprecated"> 2727*dc5640d1SHerbert Xue <param name="value" type="boolean"/> 2728*dc5640d1SHerbert Xue <doc> 2729*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 2730*dc5640d1SHerbert Xue </doc> 2731*dc5640d1SHerbert Xue </method> 2732*dc5640d1SHerbert Xue <method name="to" 2733*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2734*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2735*dc5640d1SHerbert Xue deprecated="not deprecated"> 2736*dc5640d1SHerbert Xue <param name="value" type="double"/> 2737*dc5640d1SHerbert Xue <doc> 2738*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 2739*dc5640d1SHerbert Xue </doc> 2740*dc5640d1SHerbert Xue </method> 2741*dc5640d1SHerbert Xue <method name="to" 2742*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2743*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2744*dc5640d1SHerbert Xue deprecated="not deprecated"> 2745*dc5640d1SHerbert Xue <param name="value" type="float"/> 2746*dc5640d1SHerbert Xue <doc> 2747*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 2748*dc5640d1SHerbert Xue </doc> 2749*dc5640d1SHerbert Xue </method> 2750*dc5640d1SHerbert Xue <method name="to" 2751*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2752*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2753*dc5640d1SHerbert Xue deprecated="not deprecated"> 2754*dc5640d1SHerbert Xue <param name="value" type="short"/> 2755*dc5640d1SHerbert Xue <doc> 2756*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 2757*dc5640d1SHerbert Xue </doc> 2758*dc5640d1SHerbert Xue </method> 2759*dc5640d1SHerbert Xue <method name="to" 2760*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2761*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2762*dc5640d1SHerbert Xue deprecated="not deprecated"> 2763*dc5640d1SHerbert Xue <param name="value" type="char"/> 2764*dc5640d1SHerbert Xue <doc> 2765*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 2766*dc5640d1SHerbert Xue </doc> 2767*dc5640d1SHerbert Xue </method> 2768*dc5640d1SHerbert Xue <method name="to" 2769*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2770*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2771*dc5640d1SHerbert Xue deprecated="not deprecated"> 2772*dc5640d1SHerbert Xue <param name="value" type="java.lang.Class<?>"/> 2773*dc5640d1SHerbert Xue <doc> 2774*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 2775*dc5640d1SHerbert Xue </doc> 2776*dc5640d1SHerbert Xue </method> 2777*dc5640d1SHerbert Xue <method name="to" 2778*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2779*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2780*dc5640d1SHerbert Xue deprecated="not deprecated"> 2781*dc5640d1SHerbert Xue <param name="value" type="E extends java.lang.Enum<E>"/> 2782*dc5640d1SHerbert Xue <doc> 2783*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 2784*dc5640d1SHerbert Xue </doc> 2785*dc5640d1SHerbert Xue </method> 2786*dc5640d1SHerbert Xue <doc> 2787*dc5640d1SHerbert Xue <![CDATA[Binds to a constant value.]]> 2788*dc5640d1SHerbert Xue </doc> 2789*dc5640d1SHerbert Xue </interface> 2790*dc5640d1SHerbert Xue <!-- end interface com.google.inject.binder.ConstantBindingBuilder --> 2791*dc5640d1SHerbert Xue <!-- start interface com.google.inject.binder.LinkedBindingBuilder --> 2792*dc5640d1SHerbert Xue <interface name="LinkedBindingBuilder" abstract="true" 2793*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2794*dc5640d1SHerbert Xue deprecated="not deprecated"> 2795*dc5640d1SHerbert Xue <implements name="com.google.inject.binder.ScopedBindingBuilder"/> 2796*dc5640d1SHerbert Xue <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 2797*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2798*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2799*dc5640d1SHerbert Xue deprecated="not deprecated"> 2800*dc5640d1SHerbert Xue <param name="implementation" type="java.lang.Class<? extends T>"/> 2801*dc5640d1SHerbert Xue <doc> 2802*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 2803*dc5640d1SHerbert Xue </doc> 2804*dc5640d1SHerbert Xue </method> 2805*dc5640d1SHerbert Xue <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 2806*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2807*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2808*dc5640d1SHerbert Xue deprecated="not deprecated"> 2809*dc5640d1SHerbert Xue <param name="implementation" type="com.google.inject.TypeLiteral<? extends T>"/> 2810*dc5640d1SHerbert Xue <doc> 2811*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 2812*dc5640d1SHerbert Xue </doc> 2813*dc5640d1SHerbert Xue </method> 2814*dc5640d1SHerbert Xue <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 2815*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2816*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2817*dc5640d1SHerbert Xue deprecated="not deprecated"> 2818*dc5640d1SHerbert Xue <param name="targetKey" type="com.google.inject.Key<? extends T>"/> 2819*dc5640d1SHerbert Xue <doc> 2820*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 2821*dc5640d1SHerbert Xue </doc> 2822*dc5640d1SHerbert Xue </method> 2823*dc5640d1SHerbert Xue <method name="toInstance" 2824*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2825*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2826*dc5640d1SHerbert Xue deprecated="not deprecated"> 2827*dc5640d1SHerbert Xue <param name="instance" type="T"/> 2828*dc5640d1SHerbert Xue <doc> 2829*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 2830*dc5640d1SHerbert Xue 2831*dc5640d1SHerbert Xue @see com.google.inject.Injector#injectMembers]]> 2832*dc5640d1SHerbert Xue </doc> 2833*dc5640d1SHerbert Xue </method> 2834*dc5640d1SHerbert Xue <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 2835*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2836*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2837*dc5640d1SHerbert Xue deprecated="not deprecated"> 2838*dc5640d1SHerbert Xue <param name="provider" type="com.google.inject.Provider<? extends T>"/> 2839*dc5640d1SHerbert Xue <doc> 2840*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 2841*dc5640d1SHerbert Xue 2842*dc5640d1SHerbert Xue @see com.google.inject.Injector#injectMembers]]> 2843*dc5640d1SHerbert Xue </doc> 2844*dc5640d1SHerbert Xue </method> 2845*dc5640d1SHerbert Xue <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 2846*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2847*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2848*dc5640d1SHerbert Xue deprecated="not deprecated"> 2849*dc5640d1SHerbert Xue <param name="providerType" type="java.lang.Class<? extends com.google.inject.Provider<? extends T>>"/> 2850*dc5640d1SHerbert Xue <doc> 2851*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 2852*dc5640d1SHerbert Xue </doc> 2853*dc5640d1SHerbert Xue </method> 2854*dc5640d1SHerbert Xue <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 2855*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2856*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2857*dc5640d1SHerbert Xue deprecated="not deprecated"> 2858*dc5640d1SHerbert Xue <param name="providerKey" type="com.google.inject.Key<? extends com.google.inject.Provider<? extends T>>"/> 2859*dc5640d1SHerbert Xue <doc> 2860*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 2861*dc5640d1SHerbert Xue </doc> 2862*dc5640d1SHerbert Xue </method> 2863*dc5640d1SHerbert Xue <doc> 2864*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 2865*dc5640d1SHerbert Xue 2866*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2867*dc5640d1SHerbert Xue </doc> 2868*dc5640d1SHerbert Xue </interface> 2869*dc5640d1SHerbert Xue <!-- end interface com.google.inject.binder.LinkedBindingBuilder --> 2870*dc5640d1SHerbert Xue <!-- start interface com.google.inject.binder.ScopedBindingBuilder --> 2871*dc5640d1SHerbert Xue <interface name="ScopedBindingBuilder" abstract="true" 2872*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2873*dc5640d1SHerbert Xue deprecated="not deprecated"> 2874*dc5640d1SHerbert Xue <method name="in" 2875*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2876*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2877*dc5640d1SHerbert Xue deprecated="not deprecated"> 2878*dc5640d1SHerbert Xue <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 2879*dc5640d1SHerbert Xue <doc> 2880*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 2881*dc5640d1SHerbert Xue </doc> 2882*dc5640d1SHerbert Xue </method> 2883*dc5640d1SHerbert Xue <method name="in" 2884*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2885*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2886*dc5640d1SHerbert Xue deprecated="not deprecated"> 2887*dc5640d1SHerbert Xue <param name="scope" type="com.google.inject.Scope"/> 2888*dc5640d1SHerbert Xue <doc> 2889*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 2890*dc5640d1SHerbert Xue </doc> 2891*dc5640d1SHerbert Xue </method> 2892*dc5640d1SHerbert Xue <method name="asEagerSingleton" 2893*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2894*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2895*dc5640d1SHerbert Xue deprecated="not deprecated"> 2896*dc5640d1SHerbert Xue <doc> 2897*dc5640d1SHerbert Xue <![CDATA[Instructs the {@link com.google.inject.Injector} to eagerly initialize this 2898*dc5640d1SHerbert Xue singleton-scoped binding upon creation. Useful for application 2899*dc5640d1SHerbert Xue initialization logic. See the EDSL examples at 2900*dc5640d1SHerbert Xue {@link com.google.inject.Binder}.]]> 2901*dc5640d1SHerbert Xue </doc> 2902*dc5640d1SHerbert Xue </method> 2903*dc5640d1SHerbert Xue <doc> 2904*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 2905*dc5640d1SHerbert Xue 2906*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2907*dc5640d1SHerbert Xue </doc> 2908*dc5640d1SHerbert Xue </interface> 2909*dc5640d1SHerbert Xue <!-- end interface com.google.inject.binder.ScopedBindingBuilder --> 2910*dc5640d1SHerbert Xue</package> 2911*dc5640d1SHerbert Xue<package name="com.google.inject.jndi"> 2912*dc5640d1SHerbert Xue <!-- start class com.google.inject.jndi.JndiIntegration --> 2913*dc5640d1SHerbert Xue <class name="JndiIntegration" extends="java.lang.Object" 2914*dc5640d1SHerbert Xue abstract="false" 2915*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2916*dc5640d1SHerbert Xue deprecated="not deprecated"> 2917*dc5640d1SHerbert Xue <method name="fromJndi" return="com.google.inject.Provider<T>" 2918*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2919*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 2920*dc5640d1SHerbert Xue deprecated="not deprecated"> 2921*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 2922*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 2923*dc5640d1SHerbert Xue <doc> 2924*dc5640d1SHerbert Xue <![CDATA[Creates a provider which looks up objects in JNDI using the given name. 2925*dc5640d1SHerbert Xue Example usage: 2926*dc5640d1SHerbert Xue 2927*dc5640d1SHerbert Xue <pre> 2928*dc5640d1SHerbert Xue bind(DataSource.class).toProvider(fromJndi(DataSource.class, "java:...")); 2929*dc5640d1SHerbert Xue </pre>]]> 2930*dc5640d1SHerbert Xue </doc> 2931*dc5640d1SHerbert Xue </method> 2932*dc5640d1SHerbert Xue <doc> 2933*dc5640d1SHerbert Xue <![CDATA[Integrates Guice with JNDI. Requires a binding to 2934*dc5640d1SHerbert Xue {@link javax.naming.Context}. 2935*dc5640d1SHerbert Xue 2936*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2937*dc5640d1SHerbert Xue </doc> 2938*dc5640d1SHerbert Xue </class> 2939*dc5640d1SHerbert Xue <!-- end class com.google.inject.jndi.JndiIntegration --> 2940*dc5640d1SHerbert Xue</package> 2941*dc5640d1SHerbert Xue<package name="com.google.inject.matcher"> 2942*dc5640d1SHerbert Xue <!-- start class com.google.inject.matcher.AbstractMatcher --> 2943*dc5640d1SHerbert Xue <class name="AbstractMatcher" extends="java.lang.Object" 2944*dc5640d1SHerbert Xue abstract="true" 2945*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2946*dc5640d1SHerbert Xue deprecated="not deprecated"> 2947*dc5640d1SHerbert Xue <implements name="com.google.inject.matcher.Matcher<T>"/> 2948*dc5640d1SHerbert Xue <constructor name="AbstractMatcher" 2949*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2950*dc5640d1SHerbert Xue deprecated="not deprecated"> 2951*dc5640d1SHerbert Xue </constructor> 2952*dc5640d1SHerbert Xue <method name="and" return="com.google.inject.matcher.Matcher<T>" 2953*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2954*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2955*dc5640d1SHerbert Xue deprecated="not deprecated"> 2956*dc5640d1SHerbert Xue <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 2957*dc5640d1SHerbert Xue </method> 2958*dc5640d1SHerbert Xue <method name="or" return="com.google.inject.matcher.Matcher<T>" 2959*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2960*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2961*dc5640d1SHerbert Xue deprecated="not deprecated"> 2962*dc5640d1SHerbert Xue <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 2963*dc5640d1SHerbert Xue </method> 2964*dc5640d1SHerbert Xue <doc> 2965*dc5640d1SHerbert Xue <![CDATA[Implements {@code and()} and {@code or()}. 2966*dc5640d1SHerbert Xue 2967*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2968*dc5640d1SHerbert Xue </doc> 2969*dc5640d1SHerbert Xue </class> 2970*dc5640d1SHerbert Xue <!-- end class com.google.inject.matcher.AbstractMatcher --> 2971*dc5640d1SHerbert Xue <!-- start interface com.google.inject.matcher.Matcher --> 2972*dc5640d1SHerbert Xue <interface name="Matcher" abstract="true" 2973*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2974*dc5640d1SHerbert Xue deprecated="not deprecated"> 2975*dc5640d1SHerbert Xue <method name="matches" return="boolean" 2976*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2977*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2978*dc5640d1SHerbert Xue deprecated="not deprecated"> 2979*dc5640d1SHerbert Xue <param name="t" type="T"/> 2980*dc5640d1SHerbert Xue <doc> 2981*dc5640d1SHerbert Xue <![CDATA[Returns {@code true} if this matches {@code t}, {@code false} otherwise.]]> 2982*dc5640d1SHerbert Xue </doc> 2983*dc5640d1SHerbert Xue </method> 2984*dc5640d1SHerbert Xue <method name="and" return="com.google.inject.matcher.Matcher<T>" 2985*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2986*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2987*dc5640d1SHerbert Xue deprecated="not deprecated"> 2988*dc5640d1SHerbert Xue <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 2989*dc5640d1SHerbert Xue <doc> 2990*dc5640d1SHerbert Xue <![CDATA[Returns a new matcher which returns {@code true} if both this and the 2991*dc5640d1SHerbert Xue given matcher return {@code true}.]]> 2992*dc5640d1SHerbert Xue </doc> 2993*dc5640d1SHerbert Xue </method> 2994*dc5640d1SHerbert Xue <method name="or" return="com.google.inject.matcher.Matcher<T>" 2995*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2996*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2997*dc5640d1SHerbert Xue deprecated="not deprecated"> 2998*dc5640d1SHerbert Xue <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 2999*dc5640d1SHerbert Xue <doc> 3000*dc5640d1SHerbert Xue <![CDATA[Returns a new matcher which returns {@code true} if either this or the 3001*dc5640d1SHerbert Xue given matcher return {@code true}.]]> 3002*dc5640d1SHerbert Xue </doc> 3003*dc5640d1SHerbert Xue </method> 3004*dc5640d1SHerbert Xue <doc> 3005*dc5640d1SHerbert Xue <![CDATA[Returns {@code true} or {@code false} for a given input. 3006*dc5640d1SHerbert Xue 3007*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 3008*dc5640d1SHerbert Xue </doc> 3009*dc5640d1SHerbert Xue </interface> 3010*dc5640d1SHerbert Xue <!-- end interface com.google.inject.matcher.Matcher --> 3011*dc5640d1SHerbert Xue <!-- start class com.google.inject.matcher.Matchers --> 3012*dc5640d1SHerbert Xue <class name="Matchers" extends="java.lang.Object" 3013*dc5640d1SHerbert Xue abstract="false" 3014*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3015*dc5640d1SHerbert Xue deprecated="not deprecated"> 3016*dc5640d1SHerbert Xue <method name="any" return="com.google.inject.matcher.Matcher<java.lang.Object>" 3017*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3018*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3019*dc5640d1SHerbert Xue deprecated="not deprecated"> 3020*dc5640d1SHerbert Xue <doc> 3021*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches any input.]]> 3022*dc5640d1SHerbert Xue </doc> 3023*dc5640d1SHerbert Xue </method> 3024*dc5640d1SHerbert Xue <method name="not" return="com.google.inject.matcher.Matcher<T>" 3025*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3026*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3027*dc5640d1SHerbert Xue deprecated="not deprecated"> 3028*dc5640d1SHerbert Xue <param name="p" type="com.google.inject.matcher.Matcher<? super T>"/> 3029*dc5640d1SHerbert Xue <doc> 3030*dc5640d1SHerbert Xue <![CDATA[Inverts the given matcher.]]> 3031*dc5640d1SHerbert Xue </doc> 3032*dc5640d1SHerbert Xue </method> 3033*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.matcher.Matcher<java.lang.reflect.AnnotatedElement>" 3034*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3035*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3036*dc5640d1SHerbert Xue deprecated="not deprecated"> 3037*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3038*dc5640d1SHerbert Xue <doc> 3039*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches elements (methods, classes, etc.) 3040*dc5640d1SHerbert Xue with a given annotation.]]> 3041*dc5640d1SHerbert Xue </doc> 3042*dc5640d1SHerbert Xue </method> 3043*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.matcher.Matcher<java.lang.reflect.AnnotatedElement>" 3044*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3045*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3046*dc5640d1SHerbert Xue deprecated="not deprecated"> 3047*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 3048*dc5640d1SHerbert Xue <doc> 3049*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches elements (methods, classes, etc.) 3050*dc5640d1SHerbert Xue with a given annotation.]]> 3051*dc5640d1SHerbert Xue </doc> 3052*dc5640d1SHerbert Xue </method> 3053*dc5640d1SHerbert Xue <method name="subclassesOf" return="com.google.inject.matcher.Matcher<java.lang.Class>" 3054*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3055*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3056*dc5640d1SHerbert Xue deprecated="not deprecated"> 3057*dc5640d1SHerbert Xue <param name="superclass" type="java.lang.Class<?>"/> 3058*dc5640d1SHerbert Xue <doc> 3059*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches subclasses of the given type (as well as 3060*dc5640d1SHerbert Xue the given type).]]> 3061*dc5640d1SHerbert Xue </doc> 3062*dc5640d1SHerbert Xue </method> 3063*dc5640d1SHerbert Xue <method name="only" return="com.google.inject.matcher.Matcher<java.lang.Object>" 3064*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3065*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3066*dc5640d1SHerbert Xue deprecated="not deprecated"> 3067*dc5640d1SHerbert Xue <param name="value" type="java.lang.Object"/> 3068*dc5640d1SHerbert Xue <doc> 3069*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches objects equal to the given object.]]> 3070*dc5640d1SHerbert Xue </doc> 3071*dc5640d1SHerbert Xue </method> 3072*dc5640d1SHerbert Xue <method name="identicalTo" return="com.google.inject.matcher.Matcher<java.lang.Object>" 3073*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3074*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3075*dc5640d1SHerbert Xue deprecated="not deprecated"> 3076*dc5640d1SHerbert Xue <param name="value" type="java.lang.Object"/> 3077*dc5640d1SHerbert Xue <doc> 3078*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches only the given object.]]> 3079*dc5640d1SHerbert Xue </doc> 3080*dc5640d1SHerbert Xue </method> 3081*dc5640d1SHerbert Xue <method name="inPackage" return="com.google.inject.matcher.Matcher<java.lang.Class>" 3082*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3083*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3084*dc5640d1SHerbert Xue deprecated="not deprecated"> 3085*dc5640d1SHerbert Xue <param name="targetPackage" type="java.lang.Package"/> 3086*dc5640d1SHerbert Xue <doc> 3087*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches classes in the given package. Packages are specific to their 3088*dc5640d1SHerbert Xue classloader, so classes with the same package name may not have the same package at runtime.]]> 3089*dc5640d1SHerbert Xue </doc> 3090*dc5640d1SHerbert Xue </method> 3091*dc5640d1SHerbert Xue <method name="inSubpackage" return="com.google.inject.matcher.Matcher<java.lang.Class>" 3092*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3093*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3094*dc5640d1SHerbert Xue deprecated="not deprecated"> 3095*dc5640d1SHerbert Xue <param name="targetPackageName" type="java.lang.String"/> 3096*dc5640d1SHerbert Xue <doc> 3097*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches classes in the given package and its subpackages. Unlike 3098*dc5640d1SHerbert Xue {@link #inPackage(Package) inPackage()}, this matches classes from any classloader. 3099*dc5640d1SHerbert Xue 3100*dc5640d1SHerbert Xue @since 2.0]]> 3101*dc5640d1SHerbert Xue </doc> 3102*dc5640d1SHerbert Xue </method> 3103*dc5640d1SHerbert Xue <method name="returns" return="com.google.inject.matcher.Matcher<java.lang.reflect.Method>" 3104*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3105*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3106*dc5640d1SHerbert Xue deprecated="not deprecated"> 3107*dc5640d1SHerbert Xue <param name="returnType" type="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>"/> 3108*dc5640d1SHerbert Xue <doc> 3109*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches methods with matching return types.]]> 3110*dc5640d1SHerbert Xue </doc> 3111*dc5640d1SHerbert Xue </method> 3112*dc5640d1SHerbert Xue <doc> 3113*dc5640d1SHerbert Xue <![CDATA[Matcher implementations. Supports matching classes and methods. 3114*dc5640d1SHerbert Xue 3115*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 3116*dc5640d1SHerbert Xue </doc> 3117*dc5640d1SHerbert Xue </class> 3118*dc5640d1SHerbert Xue <!-- end class com.google.inject.matcher.Matchers --> 3119*dc5640d1SHerbert Xue</package> 3120*dc5640d1SHerbert Xue<package name="com.google.inject.multibindings"> 3121*dc5640d1SHerbert Xue <!-- start class com.google.inject.multibindings.MapBinder --> 3122*dc5640d1SHerbert Xue <class name="MapBinder" extends="java.lang.Object" 3123*dc5640d1SHerbert Xue abstract="true" 3124*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3125*dc5640d1SHerbert Xue deprecated="not deprecated"> 3126*dc5640d1SHerbert Xue <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 3127*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3128*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3129*dc5640d1SHerbert Xue deprecated="not deprecated"> 3130*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 3131*dc5640d1SHerbert Xue <param name="keyType" type="com.google.inject.TypeLiteral<K>"/> 3132*dc5640d1SHerbert Xue <param name="valueType" type="com.google.inject.TypeLiteral<V>"/> 3133*dc5640d1SHerbert Xue <doc> 3134*dc5640d1SHerbert Xue <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 3135*dc5640d1SHerbert Xue {@link Map} that is itself bound with no binding annotation.]]> 3136*dc5640d1SHerbert Xue </doc> 3137*dc5640d1SHerbert Xue </method> 3138*dc5640d1SHerbert Xue <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 3139*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3140*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3141*dc5640d1SHerbert Xue deprecated="not deprecated"> 3142*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 3143*dc5640d1SHerbert Xue <param name="keyType" type="java.lang.Class<K>"/> 3144*dc5640d1SHerbert Xue <param name="valueType" type="java.lang.Class<V>"/> 3145*dc5640d1SHerbert Xue <doc> 3146*dc5640d1SHerbert Xue <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 3147*dc5640d1SHerbert Xue {@link Map} that is itself bound with no binding annotation.]]> 3148*dc5640d1SHerbert Xue </doc> 3149*dc5640d1SHerbert Xue </method> 3150*dc5640d1SHerbert Xue <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 3151*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3152*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3153*dc5640d1SHerbert Xue deprecated="not deprecated"> 3154*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 3155*dc5640d1SHerbert Xue <param name="keyType" type="com.google.inject.TypeLiteral<K>"/> 3156*dc5640d1SHerbert Xue <param name="valueType" type="com.google.inject.TypeLiteral<V>"/> 3157*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 3158*dc5640d1SHerbert Xue <doc> 3159*dc5640d1SHerbert Xue <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 3160*dc5640d1SHerbert Xue {@link Map} that is itself bound with {@code annotation}.]]> 3161*dc5640d1SHerbert Xue </doc> 3162*dc5640d1SHerbert Xue </method> 3163*dc5640d1SHerbert Xue <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 3164*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3165*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3166*dc5640d1SHerbert Xue deprecated="not deprecated"> 3167*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 3168*dc5640d1SHerbert Xue <param name="keyType" type="java.lang.Class<K>"/> 3169*dc5640d1SHerbert Xue <param name="valueType" type="java.lang.Class<V>"/> 3170*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 3171*dc5640d1SHerbert Xue <doc> 3172*dc5640d1SHerbert Xue <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 3173*dc5640d1SHerbert Xue {@link Map} that is itself bound with {@code annotation}.]]> 3174*dc5640d1SHerbert Xue </doc> 3175*dc5640d1SHerbert Xue </method> 3176*dc5640d1SHerbert Xue <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 3177*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3178*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3179*dc5640d1SHerbert Xue deprecated="not deprecated"> 3180*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 3181*dc5640d1SHerbert Xue <param name="keyType" type="com.google.inject.TypeLiteral<K>"/> 3182*dc5640d1SHerbert Xue <param name="valueType" type="com.google.inject.TypeLiteral<V>"/> 3183*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3184*dc5640d1SHerbert Xue <doc> 3185*dc5640d1SHerbert Xue <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 3186*dc5640d1SHerbert Xue {@link Map} that is itself bound with {@code annotationType}.]]> 3187*dc5640d1SHerbert Xue </doc> 3188*dc5640d1SHerbert Xue </method> 3189*dc5640d1SHerbert Xue <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 3190*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3191*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3192*dc5640d1SHerbert Xue deprecated="not deprecated"> 3193*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 3194*dc5640d1SHerbert Xue <param name="keyType" type="java.lang.Class<K>"/> 3195*dc5640d1SHerbert Xue <param name="valueType" type="java.lang.Class<V>"/> 3196*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3197*dc5640d1SHerbert Xue <doc> 3198*dc5640d1SHerbert Xue <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 3199*dc5640d1SHerbert Xue {@link Map} that is itself bound with {@code annotationType}.]]> 3200*dc5640d1SHerbert Xue </doc> 3201*dc5640d1SHerbert Xue </method> 3202*dc5640d1SHerbert Xue <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder<V>" 3203*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3204*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3205*dc5640d1SHerbert Xue deprecated="not deprecated"> 3206*dc5640d1SHerbert Xue <param name="key" type="K"/> 3207*dc5640d1SHerbert Xue <doc> 3208*dc5640d1SHerbert Xue <![CDATA[Returns a binding builder used to add a new entry in the map. Each 3209*dc5640d1SHerbert Xue key must be distinct (and non-null). Bound providers will be evaluated each 3210*dc5640d1SHerbert Xue time the map is injected. 3211*dc5640d1SHerbert Xue 3212*dc5640d1SHerbert Xue <p>It is an error to call this method without also calling one of the 3213*dc5640d1SHerbert Xue {@code to} methods on the returned binding builder. 3214*dc5640d1SHerbert Xue 3215*dc5640d1SHerbert Xue <p>Scoping elements independently is supported. Use the {@code in} method 3216*dc5640d1SHerbert Xue to specify a binding scope.]]> 3217*dc5640d1SHerbert Xue </doc> 3218*dc5640d1SHerbert Xue </method> 3219*dc5640d1SHerbert Xue <doc> 3220*dc5640d1SHerbert Xue <![CDATA[An API to bind multiple map entries separately, only to later inject them as 3221*dc5640d1SHerbert Xue a complete map. MapBinder is intended for use in your application's module: 3222*dc5640d1SHerbert Xue <pre><code> 3223*dc5640d1SHerbert Xue public class SnacksModule extends AbstractModule { 3224*dc5640d1SHerbert Xue protected void configure() { 3225*dc5640d1SHerbert Xue MapBinder<String, Snack> mapbinder 3226*dc5640d1SHerbert Xue = MapBinder.newMapBinder(binder(), String.class, Snack.class); 3227*dc5640d1SHerbert Xue mapbinder.addBinding("twix").toInstance(new Twix()); 3228*dc5640d1SHerbert Xue mapbinder.addBinding("snickers").toProvider(SnickersProvider.class); 3229*dc5640d1SHerbert Xue mapbinder.addBinding("skittles").to(Skittles.class); 3230*dc5640d1SHerbert Xue } 3231*dc5640d1SHerbert Xue }</code></pre> 3232*dc5640d1SHerbert Xue 3233*dc5640d1SHerbert Xue <p>With this binding, a {@link Map}{@code <String, Snack>} can now be 3234*dc5640d1SHerbert Xue injected: 3235*dc5640d1SHerbert Xue <pre><code> 3236*dc5640d1SHerbert Xue class SnackMachine { 3237*dc5640d1SHerbert Xue {@literal @}Inject 3238*dc5640d1SHerbert Xue public SnackMachine(Map<String, Snack> snacks) { ... } 3239*dc5640d1SHerbert Xue }</code></pre> 3240*dc5640d1SHerbert Xue 3241*dc5640d1SHerbert Xue <p>In addition to binding {@code Map<K, V>}, a mapbinder will also bind 3242*dc5640d1SHerbert Xue {@code Map<K, Provider<V>>} for lazy value provision: 3243*dc5640d1SHerbert Xue <pre><code> 3244*dc5640d1SHerbert Xue class SnackMachine { 3245*dc5640d1SHerbert Xue {@literal @}Inject 3246*dc5640d1SHerbert Xue public SnackMachine(Map<String, Provider<Snack>> snackProviders) { ... } 3247*dc5640d1SHerbert Xue }</code></pre> 3248*dc5640d1SHerbert Xue 3249*dc5640d1SHerbert Xue <p>Creating mapbindings from different modules is supported. For example, it 3250*dc5640d1SHerbert Xue is okay to have both {@code CandyModule} and {@code ChipsModule} both 3251*dc5640d1SHerbert Xue create their own {@code MapBinder<String, Snack>}, and to each contribute 3252*dc5640d1SHerbert Xue bindings to the snacks map. When that map is injected, it will contain 3253*dc5640d1SHerbert Xue entries from both modules. 3254*dc5640d1SHerbert Xue 3255*dc5640d1SHerbert Xue <p>Values are resolved at map injection time. If a value is bound to a 3256*dc5640d1SHerbert Xue provider, that provider's get method will be called each time the map is 3257*dc5640d1SHerbert Xue injected (unless the binding is also scoped, or a map of providers is injected). 3258*dc5640d1SHerbert Xue 3259*dc5640d1SHerbert Xue <p>Annotations are used to create different maps of the same key/value 3260*dc5640d1SHerbert Xue type. Each distinct annotation gets its own independent map. 3261*dc5640d1SHerbert Xue 3262*dc5640d1SHerbert Xue <p><strong>Keys must be distinct.</strong> If the same key is bound more than 3263*dc5640d1SHerbert Xue once, map injection will fail. 3264*dc5640d1SHerbert Xue 3265*dc5640d1SHerbert Xue <p><strong>Keys must be non-null.</strong> {@code addBinding(null)} will 3266*dc5640d1SHerbert Xue throw an unchecked exception. 3267*dc5640d1SHerbert Xue 3268*dc5640d1SHerbert Xue <p><strong>Values must be non-null to use map injection.</strong> If any 3269*dc5640d1SHerbert Xue value is null, map injection will fail (although injecting a map of providers 3270*dc5640d1SHerbert Xue will not). 3271*dc5640d1SHerbert Xue 3272*dc5640d1SHerbert Xue @author [email protected] (David P. Baker)]]> 3273*dc5640d1SHerbert Xue </doc> 3274*dc5640d1SHerbert Xue </class> 3275*dc5640d1SHerbert Xue <!-- end class com.google.inject.multibindings.MapBinder --> 3276*dc5640d1SHerbert Xue <!-- start class com.google.inject.multibindings.Multibinder --> 3277*dc5640d1SHerbert Xue <class name="Multibinder" extends="java.lang.Object" 3278*dc5640d1SHerbert Xue abstract="true" 3279*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3280*dc5640d1SHerbert Xue deprecated="not deprecated"> 3281*dc5640d1SHerbert Xue <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 3282*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3283*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3284*dc5640d1SHerbert Xue deprecated="not deprecated"> 3285*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 3286*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<T>"/> 3287*dc5640d1SHerbert Xue <doc> 3288*dc5640d1SHerbert Xue <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 3289*dc5640d1SHerbert Xue itself bound with no binding annotation.]]> 3290*dc5640d1SHerbert Xue </doc> 3291*dc5640d1SHerbert Xue </method> 3292*dc5640d1SHerbert Xue <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 3293*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3294*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3295*dc5640d1SHerbert Xue deprecated="not deprecated"> 3296*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 3297*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 3298*dc5640d1SHerbert Xue <doc> 3299*dc5640d1SHerbert Xue <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 3300*dc5640d1SHerbert Xue itself bound with no binding annotation.]]> 3301*dc5640d1SHerbert Xue </doc> 3302*dc5640d1SHerbert Xue </method> 3303*dc5640d1SHerbert Xue <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 3304*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3305*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3306*dc5640d1SHerbert Xue deprecated="not deprecated"> 3307*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 3308*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<T>"/> 3309*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 3310*dc5640d1SHerbert Xue <doc> 3311*dc5640d1SHerbert Xue <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 3312*dc5640d1SHerbert Xue itself bound with {@code annotation}.]]> 3313*dc5640d1SHerbert Xue </doc> 3314*dc5640d1SHerbert Xue </method> 3315*dc5640d1SHerbert Xue <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 3316*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3317*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3318*dc5640d1SHerbert Xue deprecated="not deprecated"> 3319*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 3320*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 3321*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 3322*dc5640d1SHerbert Xue <doc> 3323*dc5640d1SHerbert Xue <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 3324*dc5640d1SHerbert Xue itself bound with {@code annotation}.]]> 3325*dc5640d1SHerbert Xue </doc> 3326*dc5640d1SHerbert Xue </method> 3327*dc5640d1SHerbert Xue <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 3328*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3329*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3330*dc5640d1SHerbert Xue deprecated="not deprecated"> 3331*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 3332*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<T>"/> 3333*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3334*dc5640d1SHerbert Xue <doc> 3335*dc5640d1SHerbert Xue <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 3336*dc5640d1SHerbert Xue itself bound with {@code annotationType}.]]> 3337*dc5640d1SHerbert Xue </doc> 3338*dc5640d1SHerbert Xue </method> 3339*dc5640d1SHerbert Xue <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 3340*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3341*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3342*dc5640d1SHerbert Xue deprecated="not deprecated"> 3343*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 3344*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 3345*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3346*dc5640d1SHerbert Xue <doc> 3347*dc5640d1SHerbert Xue <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 3348*dc5640d1SHerbert Xue itself bound with {@code annotationType}.]]> 3349*dc5640d1SHerbert Xue </doc> 3350*dc5640d1SHerbert Xue </method> 3351*dc5640d1SHerbert Xue <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder<T>" 3352*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3353*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3354*dc5640d1SHerbert Xue deprecated="not deprecated"> 3355*dc5640d1SHerbert Xue <doc> 3356*dc5640d1SHerbert Xue <![CDATA[Returns a binding builder used to add a new element in the set. Each 3357*dc5640d1SHerbert Xue bound element must have a distinct value. Bound providers will be 3358*dc5640d1SHerbert Xue evaluated each time the set is injected. 3359*dc5640d1SHerbert Xue 3360*dc5640d1SHerbert Xue <p>It is an error to call this method without also calling one of the 3361*dc5640d1SHerbert Xue {@code to} methods on the returned binding builder. 3362*dc5640d1SHerbert Xue 3363*dc5640d1SHerbert Xue <p>Scoping elements independently is supported. Use the {@code in} method 3364*dc5640d1SHerbert Xue to specify a binding scope.]]> 3365*dc5640d1SHerbert Xue </doc> 3366*dc5640d1SHerbert Xue </method> 3367*dc5640d1SHerbert Xue <doc> 3368*dc5640d1SHerbert Xue <![CDATA[An API to bind multiple values separately, only to later inject them as a 3369*dc5640d1SHerbert Xue complete collection. Multibinder is intended for use in your application's 3370*dc5640d1SHerbert Xue module: 3371*dc5640d1SHerbert Xue <pre><code> 3372*dc5640d1SHerbert Xue public class SnacksModule extends AbstractModule { 3373*dc5640d1SHerbert Xue protected void configure() { 3374*dc5640d1SHerbert Xue Multibinder<Snack> multibinder 3375*dc5640d1SHerbert Xue = Multibinder.newSetBinder(binder(), Snack.class); 3376*dc5640d1SHerbert Xue multibinder.addBinding().toInstance(new Twix()); 3377*dc5640d1SHerbert Xue multibinder.addBinding().toProvider(SnickersProvider.class); 3378*dc5640d1SHerbert Xue multibinder.addBinding().to(Skittles.class); 3379*dc5640d1SHerbert Xue } 3380*dc5640d1SHerbert Xue }</code></pre> 3381*dc5640d1SHerbert Xue 3382*dc5640d1SHerbert Xue <p>With this binding, a {@link Set}{@code <Snack>} can now be injected: 3383*dc5640d1SHerbert Xue <pre><code> 3384*dc5640d1SHerbert Xue class SnackMachine { 3385*dc5640d1SHerbert Xue {@literal @}Inject 3386*dc5640d1SHerbert Xue public SnackMachine(Set<Snack> snacks) { ... } 3387*dc5640d1SHerbert Xue }</code></pre> 3388*dc5640d1SHerbert Xue 3389*dc5640d1SHerbert Xue <p>Create multibindings from different modules is supported. For example, it 3390*dc5640d1SHerbert Xue is okay to have both {@code CandyModule} and {@code ChipsModule} to both 3391*dc5640d1SHerbert Xue create their own {@code Multibinder<Snack>}, and to each contribute bindings 3392*dc5640d1SHerbert Xue to the set of snacks. When that set is injected, it will contain elements 3393*dc5640d1SHerbert Xue from both modules. 3394*dc5640d1SHerbert Xue 3395*dc5640d1SHerbert Xue <p>Elements are resolved at set injection time. If an element is bound to a 3396*dc5640d1SHerbert Xue provider, that provider's get method will be called each time the set is 3397*dc5640d1SHerbert Xue injected (unless the binding is also scoped). 3398*dc5640d1SHerbert Xue 3399*dc5640d1SHerbert Xue <p>Annotations are be used to create different sets of the same element 3400*dc5640d1SHerbert Xue type. Each distinct annotation gets its own independent collection of 3401*dc5640d1SHerbert Xue elements. 3402*dc5640d1SHerbert Xue 3403*dc5640d1SHerbert Xue <p><strong>Elements must be distinct.</strong> If multiple bound elements 3404*dc5640d1SHerbert Xue have the same value, set injection will fail. 3405*dc5640d1SHerbert Xue 3406*dc5640d1SHerbert Xue <p><strong>Elements must be non-null.</strong> If any set element is null, 3407*dc5640d1SHerbert Xue set injection will fail. 3408*dc5640d1SHerbert Xue 3409*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]> 3410*dc5640d1SHerbert Xue </doc> 3411*dc5640d1SHerbert Xue </class> 3412*dc5640d1SHerbert Xue <!-- end class com.google.inject.multibindings.Multibinder --> 3413*dc5640d1SHerbert Xue</package> 3414*dc5640d1SHerbert Xue<package name="com.google.inject.name"> 3415*dc5640d1SHerbert Xue <!-- start class com.google.inject.name.Named --> 3416*dc5640d1SHerbert Xue <class name="Named" abstract="true" 3417*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3418*dc5640d1SHerbert Xue deprecated="not deprecated"> 3419*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 3420*dc5640d1SHerbert Xue <doc> 3421*dc5640d1SHerbert Xue <![CDATA[Annotates named things. 3422*dc5640d1SHerbert Xue 3423*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 3424*dc5640d1SHerbert Xue </doc> 3425*dc5640d1SHerbert Xue </class> 3426*dc5640d1SHerbert Xue <!-- end class com.google.inject.name.Named --> 3427*dc5640d1SHerbert Xue <!-- start class com.google.inject.name.Names --> 3428*dc5640d1SHerbert Xue <class name="Names" extends="java.lang.Object" 3429*dc5640d1SHerbert Xue abstract="false" 3430*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3431*dc5640d1SHerbert Xue deprecated="not deprecated"> 3432*dc5640d1SHerbert Xue <method name="named" return="com.google.inject.name.Named" 3433*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3434*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3435*dc5640d1SHerbert Xue deprecated="not deprecated"> 3436*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 3437*dc5640d1SHerbert Xue <doc> 3438*dc5640d1SHerbert Xue <![CDATA[Creates a {@link Named} annotation with {@code name} as the value.]]> 3439*dc5640d1SHerbert Xue </doc> 3440*dc5640d1SHerbert Xue </method> 3441*dc5640d1SHerbert Xue <method name="bindProperties" 3442*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3443*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3444*dc5640d1SHerbert Xue deprecated="not deprecated"> 3445*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 3446*dc5640d1SHerbert Xue <param name="properties" type="java.util.Map<java.lang.String, java.lang.String>"/> 3447*dc5640d1SHerbert Xue <doc> 3448*dc5640d1SHerbert Xue <![CDATA[Creates a constant binding to {@code @Named(key)} for each entry in 3449*dc5640d1SHerbert Xue {@code properties}.]]> 3450*dc5640d1SHerbert Xue </doc> 3451*dc5640d1SHerbert Xue </method> 3452*dc5640d1SHerbert Xue <method name="bindProperties" 3453*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3454*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3455*dc5640d1SHerbert Xue deprecated="not deprecated"> 3456*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 3457*dc5640d1SHerbert Xue <param name="properties" type="java.util.Properties"/> 3458*dc5640d1SHerbert Xue <doc> 3459*dc5640d1SHerbert Xue <![CDATA[Creates a constant binding to {@code @Named(key)} for each property. This 3460*dc5640d1SHerbert Xue method binds all properties including those inherited from 3461*dc5640d1SHerbert Xue {@link Properties#defaults defaults}.]]> 3462*dc5640d1SHerbert Xue </doc> 3463*dc5640d1SHerbert Xue </method> 3464*dc5640d1SHerbert Xue <doc> 3465*dc5640d1SHerbert Xue <![CDATA[Utility methods for use with {@code @}{@link Named}. 3466*dc5640d1SHerbert Xue 3467*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 3468*dc5640d1SHerbert Xue </doc> 3469*dc5640d1SHerbert Xue </class> 3470*dc5640d1SHerbert Xue <!-- end class com.google.inject.name.Names --> 3471*dc5640d1SHerbert Xue</package> 3472*dc5640d1SHerbert Xue<package name="com.google.inject.servlet"> 3473*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.GuiceFilter --> 3474*dc5640d1SHerbert Xue <class name="GuiceFilter" extends="java.lang.Object" 3475*dc5640d1SHerbert Xue abstract="false" 3476*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3477*dc5640d1SHerbert Xue deprecated="not deprecated"> 3478*dc5640d1SHerbert Xue <constructor name="GuiceFilter" 3479*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3480*dc5640d1SHerbert Xue deprecated="not deprecated"> 3481*dc5640d1SHerbert Xue </constructor> 3482*dc5640d1SHerbert Xue <method name="doFilter" 3483*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3484*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3485*dc5640d1SHerbert Xue deprecated="not deprecated"> 3486*dc5640d1SHerbert Xue <param name="servletRequest" type="ServletRequest"/> 3487*dc5640d1SHerbert Xue <param name="servletResponse" type="ServletResponse"/> 3488*dc5640d1SHerbert Xue <param name="filterChain" type="FilterChain"/> 3489*dc5640d1SHerbert Xue <exception name="IOException" type="java.io.IOException"/> 3490*dc5640d1SHerbert Xue <exception name="ServletException" type="ServletException"/> 3491*dc5640d1SHerbert Xue </method> 3492*dc5640d1SHerbert Xue <method name="init" 3493*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3494*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3495*dc5640d1SHerbert Xue deprecated="not deprecated"> 3496*dc5640d1SHerbert Xue <param name="filterConfig" type="FilterConfig"/> 3497*dc5640d1SHerbert Xue <exception name="ServletException" type="ServletException"/> 3498*dc5640d1SHerbert Xue </method> 3499*dc5640d1SHerbert Xue <method name="destroy" 3500*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3501*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3502*dc5640d1SHerbert Xue deprecated="not deprecated"> 3503*dc5640d1SHerbert Xue </method> 3504*dc5640d1SHerbert Xue <doc> 3505*dc5640d1SHerbert Xue <![CDATA[<p> 3506*dc5640d1SHerbert Xue Apply this filter in web.xml above all other filters (typically), to all requests where you plan 3507*dc5640d1SHerbert Xue to use servlet scopes. This is also needed in order to dispatch requests to injectable filters 3508*dc5640d1SHerbert Xue and servlets: 3509*dc5640d1SHerbert Xue <pre> 3510*dc5640d1SHerbert Xue <filter> 3511*dc5640d1SHerbert Xue <filter-name>guiceFilter</filter-name> 3512*dc5640d1SHerbert Xue <filter-class><b>com.google.inject.servlet.GuiceFilter</b></filter-class> 3513*dc5640d1SHerbert Xue </filter> 3514*dc5640d1SHerbert Xue 3515*dc5640d1SHerbert Xue <filter-mapping> 3516*dc5640d1SHerbert Xue <filter-name>guiceFilter</filter-name> 3517*dc5640d1SHerbert Xue <url-pattern>/*</url-pattern> 3518*dc5640d1SHerbert Xue </filter-mapping> 3519*dc5640d1SHerbert Xue </pre> 3520*dc5640d1SHerbert Xue 3521*dc5640d1SHerbert Xue This filter must appear before every filter that makes use of Guice injection or servlet 3522*dc5640d1SHerbert Xue scopes functionality. Typically, you will only register this filter in web.xml and register 3523*dc5640d1SHerbert Xue any other filters (and servlets) using a {@link ServletModule}. 3524*dc5640d1SHerbert Xue 3525*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 3526*dc5640d1SHerbert Xue @author [email protected] (Dhanji R. Prasanna)]]> 3527*dc5640d1SHerbert Xue </doc> 3528*dc5640d1SHerbert Xue </class> 3529*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.GuiceFilter --> 3530*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.GuiceServletContextListener --> 3531*dc5640d1SHerbert Xue <class name="GuiceServletContextListener" extends="java.lang.Object" 3532*dc5640d1SHerbert Xue abstract="true" 3533*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3534*dc5640d1SHerbert Xue deprecated="not deprecated"> 3535*dc5640d1SHerbert Xue <constructor name="GuiceServletContextListener" 3536*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3537*dc5640d1SHerbert Xue deprecated="not deprecated"> 3538*dc5640d1SHerbert Xue </constructor> 3539*dc5640d1SHerbert Xue <method name="contextInitialized" 3540*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3541*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3542*dc5640d1SHerbert Xue deprecated="not deprecated"> 3543*dc5640d1SHerbert Xue <param name="servletContextEvent" type="ServletContextEvent"/> 3544*dc5640d1SHerbert Xue </method> 3545*dc5640d1SHerbert Xue <method name="contextDestroyed" 3546*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3547*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3548*dc5640d1SHerbert Xue deprecated="not deprecated"> 3549*dc5640d1SHerbert Xue <param name="servletContextEvent" type="ServletContextEvent"/> 3550*dc5640d1SHerbert Xue </method> 3551*dc5640d1SHerbert Xue <method name="getInjector" return="com.google.inject.Injector" 3552*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3553*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 3554*dc5640d1SHerbert Xue deprecated="not deprecated"> 3555*dc5640d1SHerbert Xue <doc> 3556*dc5640d1SHerbert Xue <![CDATA[Override this method to create (or otherwise obtain a reference to) your 3557*dc5640d1SHerbert Xue injector.]]> 3558*dc5640d1SHerbert Xue </doc> 3559*dc5640d1SHerbert Xue </method> 3560*dc5640d1SHerbert Xue <doc> 3561*dc5640d1SHerbert Xue <![CDATA[As of Guice 2.0 you can still use (your subclasses of) {@code GuiceServletContextListener} 3562*dc5640d1SHerbert Xue class as a logical place to create and configure your injector. This will ensure the injector 3563*dc5640d1SHerbert Xue is created when the web application is deployed. 3564*dc5640d1SHerbert Xue 3565*dc5640d1SHerbert Xue @author Kevin Bourrillion ([email protected]) 3566*dc5640d1SHerbert Xue @since 2.0]]> 3567*dc5640d1SHerbert Xue </doc> 3568*dc5640d1SHerbert Xue </class> 3569*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.GuiceServletContextListener --> 3570*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.RequestParameters --> 3571*dc5640d1SHerbert Xue <class name="RequestParameters" abstract="true" 3572*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3573*dc5640d1SHerbert Xue deprecated="not deprecated"> 3574*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 3575*dc5640d1SHerbert Xue <doc> 3576*dc5640d1SHerbert Xue <![CDATA[Apply this to field or parameters of type {@code Map<String, String[]>} 3577*dc5640d1SHerbert Xue when you want the HTTP request parameter map to be injected. 3578*dc5640d1SHerbert Xue 3579*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 3580*dc5640d1SHerbert Xue </doc> 3581*dc5640d1SHerbert Xue </class> 3582*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.RequestParameters --> 3583*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.RequestScoped --> 3584*dc5640d1SHerbert Xue <class name="RequestScoped" abstract="true" 3585*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3586*dc5640d1SHerbert Xue deprecated="not deprecated"> 3587*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 3588*dc5640d1SHerbert Xue <doc> 3589*dc5640d1SHerbert Xue <![CDATA[Apply this to implementation classes when you want one instance per request. 3590*dc5640d1SHerbert Xue 3591*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 3592*dc5640d1SHerbert Xue </doc> 3593*dc5640d1SHerbert Xue </class> 3594*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.RequestScoped --> 3595*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.ServletModule --> 3596*dc5640d1SHerbert Xue <class name="ServletModule" extends="com.google.inject.AbstractModule" 3597*dc5640d1SHerbert Xue abstract="false" 3598*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3599*dc5640d1SHerbert Xue deprecated="not deprecated"> 3600*dc5640d1SHerbert Xue <constructor name="ServletModule" 3601*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3602*dc5640d1SHerbert Xue deprecated="not deprecated"> 3603*dc5640d1SHerbert Xue </constructor> 3604*dc5640d1SHerbert Xue <method name="configure" 3605*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3606*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 3607*dc5640d1SHerbert Xue deprecated="not deprecated"> 3608*dc5640d1SHerbert Xue </method> 3609*dc5640d1SHerbert Xue <method name="configureServlets" 3610*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3611*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 3612*dc5640d1SHerbert Xue deprecated="not deprecated"> 3613*dc5640d1SHerbert Xue <doc> 3614*dc5640d1SHerbert Xue <![CDATA[<h3>Servlet Mapping EDSL</h3> 3615*dc5640d1SHerbert Xue 3616*dc5640d1SHerbert Xue <p> Part of the EDSL builder language for configuring servlets 3617*dc5640d1SHerbert Xue and filters with guice-servlet. Think of this as an in-code replacement for web.xml. 3618*dc5640d1SHerbert Xue Filters and servlets are configured here using simple java method calls. Here is a typical 3619*dc5640d1SHerbert Xue example of registering a filter when creating your Guice injector: 3620*dc5640d1SHerbert Xue 3621*dc5640d1SHerbert Xue <pre> 3622*dc5640d1SHerbert Xue Guice.createInjector(..., new ServletModule() { 3623*dc5640d1SHerbert Xue 3624*dc5640d1SHerbert Xue {@literal @}Override 3625*dc5640d1SHerbert Xue protected void configureServlets() { 3626*dc5640d1SHerbert Xue <b>serve("*.html").with(MyServlet.class)</b> 3627*dc5640d1SHerbert Xue } 3628*dc5640d1SHerbert Xue } 3629*dc5640d1SHerbert Xue </pre> 3630*dc5640d1SHerbert Xue 3631*dc5640d1SHerbert Xue This registers a servlet (subclass of {@code HttpServlet}) called {@code MyServlet} to service 3632*dc5640d1SHerbert Xue any web pages ending in {@code .html}. You can also use a path-style syntax to register 3633*dc5640d1SHerbert Xue servlets: 3634*dc5640d1SHerbert Xue 3635*dc5640d1SHerbert Xue <pre> 3636*dc5640d1SHerbert Xue <b>serve("/my/*").with(MyServlet.class)</b> 3637*dc5640d1SHerbert Xue </pre> 3638*dc5640d1SHerbert Xue 3639*dc5640d1SHerbert Xue Every servlet (or filter) is required to be a singleton. If you cannot annotate the class 3640*dc5640d1SHerbert Xue directly, you should add a separate {@code bind(..).in(Singleton.class)} rule elsewhere in 3641*dc5640d1SHerbert Xue your module. Mapping a servlet that is bound under any other scope is an error. 3642*dc5640d1SHerbert Xue 3643*dc5640d1SHerbert Xue <p> 3644*dc5640d1SHerbert Xue <h4>Dispatch Order</h4> 3645*dc5640d1SHerbert Xue You are free to register as many servlets and filters as you like this way. They will 3646*dc5640d1SHerbert Xue be compared and dispatched in the order in which the filter methods are called: 3647*dc5640d1SHerbert Xue 3648*dc5640d1SHerbert Xue <pre> 3649*dc5640d1SHerbert Xue 3650*dc5640d1SHerbert Xue Guice.createInjector(..., new ServletModule() { 3651*dc5640d1SHerbert Xue 3652*dc5640d1SHerbert Xue {@literal @}Override 3653*dc5640d1SHerbert Xue protected void configureServlets() { 3654*dc5640d1SHerbert Xue filter("/*").through(MyFilter.class); 3655*dc5640d1SHerbert Xue filter("*.css").through(MyCssFilter.class); 3656*dc5640d1SHerbert Xue // etc.. 3657*dc5640d1SHerbert Xue 3658*dc5640d1SHerbert Xue serve("*.html").with(MyServlet.class); 3659*dc5640d1SHerbert Xue serve("/my/*").with(MyServlet.class); 3660*dc5640d1SHerbert Xue // etc.. 3661*dc5640d1SHerbert Xue } 3662*dc5640d1SHerbert Xue } 3663*dc5640d1SHerbert Xue </pre> 3664*dc5640d1SHerbert Xue This will traverse down the list of rules in lexical order. For example, a url 3665*dc5640d1SHerbert Xue "{@code /my/file.js}" (after it runs through the matching filters) will first 3666*dc5640d1SHerbert Xue be compared against the servlet mapping: 3667*dc5640d1SHerbert Xue 3668*dc5640d1SHerbert Xue <pre> 3669*dc5640d1SHerbert Xue serve("*.html").with(MyServlet.class); 3670*dc5640d1SHerbert Xue </pre> 3671*dc5640d1SHerbert Xue And failing that, it will descend to the next servlet mapping: 3672*dc5640d1SHerbert Xue 3673*dc5640d1SHerbert Xue <pre> 3674*dc5640d1SHerbert Xue serve("/my/*").with(MyServlet.class); 3675*dc5640d1SHerbert Xue </pre> 3676*dc5640d1SHerbert Xue 3677*dc5640d1SHerbert Xue Since this rule matches, Guice Servlet will dispatch to {@code MyServlet}. These 3678*dc5640d1SHerbert Xue two mapping rules can also be written in more compact form using varargs syntax: 3679*dc5640d1SHerbert Xue 3680*dc5640d1SHerbert Xue <pre> 3681*dc5640d1SHerbert Xue serve(<b>"*.html", "/my/*"</b>).with(MyServlet.class); 3682*dc5640d1SHerbert Xue </pre> 3683*dc5640d1SHerbert Xue 3684*dc5640d1SHerbert Xue This way you can map several URI patterns to the same servlet. A similar syntax is 3685*dc5640d1SHerbert Xue also available for filter mappings. 3686*dc5640d1SHerbert Xue 3687*dc5640d1SHerbert Xue <p> 3688*dc5640d1SHerbert Xue <h4>Regular Expressions</h4> 3689*dc5640d1SHerbert Xue You can also map servlets (or filters) to URIs using regular expressions: 3690*dc5640d1SHerbert Xue <pre> 3691*dc5640d1SHerbert Xue <b>serveRegex("(.)*ajax(.)*").with(MyAjaxServlet.class)</b> 3692*dc5640d1SHerbert Xue </pre> 3693*dc5640d1SHerbert Xue 3694*dc5640d1SHerbert Xue This will map any URI containing the text "ajax" in it to {@code MyAjaxServlet}. Such as: 3695*dc5640d1SHerbert Xue <ul> 3696*dc5640d1SHerbert Xue <li>http://www.google.com/ajax.html</li> 3697*dc5640d1SHerbert Xue <li>http://www.google.com/content/ajax/index</li> 3698*dc5640d1SHerbert Xue <li>http://www.google.com/it/is_totally_ajaxian</li> 3699*dc5640d1SHerbert Xue </ul> 3700*dc5640d1SHerbert Xue 3701*dc5640d1SHerbert Xue 3702*dc5640d1SHerbert Xue <h3>Initialization Parameters</h3> 3703*dc5640d1SHerbert Xue 3704*dc5640d1SHerbert Xue Servlets (and filters) allow you to pass in init params 3705*dc5640d1SHerbert Xue using the {@code <init-param>} tag in web.xml. You can similarly pass in parameters to 3706*dc5640d1SHerbert Xue Servlets and filters registered in Guice-servlet using a {@link java.util.Map} of parameter 3707*dc5640d1SHerbert Xue name/value pairs. For example, to initialize {@code MyServlet} with two parameters 3708*dc5640d1SHerbert Xue ({@code name="Dhanji", site="google.com"}) you could write: 3709*dc5640d1SHerbert Xue 3710*dc5640d1SHerbert Xue <pre> 3711*dc5640d1SHerbert Xue Map<String, String> params = new HashMap<String, String>(); 3712*dc5640d1SHerbert Xue params.put("name", "Dhanji"); 3713*dc5640d1SHerbert Xue params.put("site", "google.com"); 3714*dc5640d1SHerbert Xue 3715*dc5640d1SHerbert Xue ... 3716*dc5640d1SHerbert Xue serve("/*").with(MyServlet.class, <b>params</b>) 3717*dc5640d1SHerbert Xue </pre> 3718*dc5640d1SHerbert Xue 3719*dc5640d1SHerbert Xue <p> 3720*dc5640d1SHerbert Xue <h3>Binding Keys</h3> 3721*dc5640d1SHerbert Xue 3722*dc5640d1SHerbert Xue You can also bind keys rather than classes. This lets you hide 3723*dc5640d1SHerbert Xue implementations with package-local visbility and expose them using 3724*dc5640d1SHerbert Xue only a Guice module and an annotation: 3725*dc5640d1SHerbert Xue 3726*dc5640d1SHerbert Xue <pre> 3727*dc5640d1SHerbert Xue ... 3728*dc5640d1SHerbert Xue filter("/*").through(<b>Key.get(Filter.class, Fave.class)</b>); 3729*dc5640d1SHerbert Xue </pre> 3730*dc5640d1SHerbert Xue 3731*dc5640d1SHerbert Xue Where {@code Filter.class} refers to the Servlet API interface and {@code Fave.class} is a 3732*dc5640d1SHerbert Xue custom binding annotation. Elsewhere (in one of your own modules) you can bind this 3733*dc5640d1SHerbert Xue filter's implementation: 3734*dc5640d1SHerbert Xue 3735*dc5640d1SHerbert Xue <pre> 3736*dc5640d1SHerbert Xue bind(Filter.class)<b>.annotatedWith(Fave.class)</b>.to(MyFilterImpl.class); 3737*dc5640d1SHerbert Xue </pre> 3738*dc5640d1SHerbert Xue 3739*dc5640d1SHerbert Xue See {@link com.google.inject.Binder} for more information on binding syntax. 3740*dc5640d1SHerbert Xue 3741*dc5640d1SHerbert Xue <p> 3742*dc5640d1SHerbert Xue <h3>Multiple Modules</h3> 3743*dc5640d1SHerbert Xue 3744*dc5640d1SHerbert Xue It is sometimes useful to capture servlet and filter mappings from multiple different 3745*dc5640d1SHerbert Xue modules. This is essential if you want to package and offer drop-in Guice plugins that 3746*dc5640d1SHerbert Xue provide servlet functionality. 3747*dc5640d1SHerbert Xue 3748*dc5640d1SHerbert Xue <p> 3749*dc5640d1SHerbert Xue Guice Servlet allows you to register several instances of {@code ServletModule} to your 3750*dc5640d1SHerbert Xue injector. The order in which these modules are installed determines the dispatch order 3751*dc5640d1SHerbert Xue of filters and the precedence order of servlets. For example, if you had two servlet modules, 3752*dc5640d1SHerbert Xue {@code RpcModule} and {@code WebServiceModule} and they each contained a filter that mapped 3753*dc5640d1SHerbert Xue to the same URI pattern, {@code "/*"}: 3754*dc5640d1SHerbert Xue 3755*dc5640d1SHerbert Xue <p> 3756*dc5640d1SHerbert Xue In {@code RpcModule}: 3757*dc5640d1SHerbert Xue <pre> 3758*dc5640d1SHerbert Xue filter("/*").through(RpcFilter.class); 3759*dc5640d1SHerbert Xue </pre> 3760*dc5640d1SHerbert Xue 3761*dc5640d1SHerbert Xue In {@code WebServiceModule}: 3762*dc5640d1SHerbert Xue <pre> 3763*dc5640d1SHerbert Xue filter("/*").through(WebServiceFilter.class); 3764*dc5640d1SHerbert Xue </pre> 3765*dc5640d1SHerbert Xue 3766*dc5640d1SHerbert Xue Then the order in which these filters are dispatched is determined by the order in which 3767*dc5640d1SHerbert Xue the modules are installed: 3768*dc5640d1SHerbert Xue 3769*dc5640d1SHerbert Xue <pre> 3770*dc5640d1SHerbert Xue <b>install(new WebServiceModule());</b> 3771*dc5640d1SHerbert Xue install(new RpcModule()); 3772*dc5640d1SHerbert Xue </pre> 3773*dc5640d1SHerbert Xue 3774*dc5640d1SHerbert Xue In the case shown above {@code WebServiceFilter} will run first. 3775*dc5640d1SHerbert Xue 3776*dc5640d1SHerbert Xue @since 2.0]]> 3777*dc5640d1SHerbert Xue </doc> 3778*dc5640d1SHerbert Xue </method> 3779*dc5640d1SHerbert Xue <method name="filter" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder" 3780*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3781*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 3782*dc5640d1SHerbert Xue deprecated="not deprecated"> 3783*dc5640d1SHerbert Xue <param name="urlPattern" type="java.lang.String"/> 3784*dc5640d1SHerbert Xue <param name="morePatterns" type="java.lang.String[]"/> 3785*dc5640d1SHerbert Xue <doc> 3786*dc5640d1SHerbert Xue <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc. 3787*dc5640d1SHerbert Xue @since 2.0]]> 3788*dc5640d1SHerbert Xue </doc> 3789*dc5640d1SHerbert Xue </method> 3790*dc5640d1SHerbert Xue <method name="filterRegex" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder" 3791*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3792*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 3793*dc5640d1SHerbert Xue deprecated="not deprecated"> 3794*dc5640d1SHerbert Xue <param name="regex" type="java.lang.String"/> 3795*dc5640d1SHerbert Xue <param name="regexes" type="java.lang.String[]"/> 3796*dc5640d1SHerbert Xue <doc> 3797*dc5640d1SHerbert Xue <![CDATA[@param regex Any Java-style regular expression. 3798*dc5640d1SHerbert Xue @since 2.0]]> 3799*dc5640d1SHerbert Xue </doc> 3800*dc5640d1SHerbert Xue </method> 3801*dc5640d1SHerbert Xue <method name="serve" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder" 3802*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3803*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 3804*dc5640d1SHerbert Xue deprecated="not deprecated"> 3805*dc5640d1SHerbert Xue <param name="urlPattern" type="java.lang.String"/> 3806*dc5640d1SHerbert Xue <param name="morePatterns" type="java.lang.String[]"/> 3807*dc5640d1SHerbert Xue <doc> 3808*dc5640d1SHerbert Xue <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc. 3809*dc5640d1SHerbert Xue @since 2.0]]> 3810*dc5640d1SHerbert Xue </doc> 3811*dc5640d1SHerbert Xue </method> 3812*dc5640d1SHerbert Xue <method name="serveRegex" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder" 3813*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3814*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 3815*dc5640d1SHerbert Xue deprecated="not deprecated"> 3816*dc5640d1SHerbert Xue <param name="regex" type="java.lang.String"/> 3817*dc5640d1SHerbert Xue <param name="regexes" type="java.lang.String[]"/> 3818*dc5640d1SHerbert Xue <doc> 3819*dc5640d1SHerbert Xue <![CDATA[@param regex Any Java-style regular expression. 3820*dc5640d1SHerbert Xue @since 2.0]]> 3821*dc5640d1SHerbert Xue </doc> 3822*dc5640d1SHerbert Xue </method> 3823*dc5640d1SHerbert Xue <doc> 3824*dc5640d1SHerbert Xue <![CDATA[Configures the servlet scopes and creates bindings for the servlet API 3825*dc5640d1SHerbert Xue objects so you can inject the request, response, session, etc. 3826*dc5640d1SHerbert Xue 3827*dc5640d1SHerbert Xue <p> 3828*dc5640d1SHerbert Xue You should subclass this module to register servlets and 3829*dc5640d1SHerbert Xue filters in the {@link #configureServlets()} method. 3830*dc5640d1SHerbert Xue 3831*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 3832*dc5640d1SHerbert Xue @author [email protected] (Dhanji R. Prasanna)]]> 3833*dc5640d1SHerbert Xue </doc> 3834*dc5640d1SHerbert Xue </class> 3835*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.ServletModule --> 3836*dc5640d1SHerbert Xue <!-- start interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder --> 3837*dc5640d1SHerbert Xue <interface name="ServletModule.FilterKeyBindingBuilder" abstract="true" 3838*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3839*dc5640d1SHerbert Xue deprecated="not deprecated"> 3840*dc5640d1SHerbert Xue <method name="through" 3841*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3842*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3843*dc5640d1SHerbert Xue deprecated="not deprecated"> 3844*dc5640d1SHerbert Xue <param name="filterKey" type="java.lang.Class<? extends Filter>"/> 3845*dc5640d1SHerbert Xue </method> 3846*dc5640d1SHerbert Xue <method name="through" 3847*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3848*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3849*dc5640d1SHerbert Xue deprecated="not deprecated"> 3850*dc5640d1SHerbert Xue <param name="filterKey" type="com.google.inject.Key<? extends Filter>"/> 3851*dc5640d1SHerbert Xue </method> 3852*dc5640d1SHerbert Xue <method name="through" 3853*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3854*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3855*dc5640d1SHerbert Xue deprecated="not deprecated"> 3856*dc5640d1SHerbert Xue <param name="dummyFilterClass" type="java.lang.Class<? extends Filter>"/> 3857*dc5640d1SHerbert Xue <param name="contextParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 3858*dc5640d1SHerbert Xue </method> 3859*dc5640d1SHerbert Xue <method name="through" 3860*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3861*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3862*dc5640d1SHerbert Xue deprecated="not deprecated"> 3863*dc5640d1SHerbert Xue <param name="dummyFilterClass" type="com.google.inject.Key<? extends Filter>"/> 3864*dc5640d1SHerbert Xue <param name="contextParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 3865*dc5640d1SHerbert Xue </method> 3866*dc5640d1SHerbert Xue <doc> 3867*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()} 3868*dc5640d1SHerbert Xue 3869*dc5640d1SHerbert Xue @since 2.0]]> 3870*dc5640d1SHerbert Xue </doc> 3871*dc5640d1SHerbert Xue </interface> 3872*dc5640d1SHerbert Xue <!-- end interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder --> 3873*dc5640d1SHerbert Xue <!-- start interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder --> 3874*dc5640d1SHerbert Xue <interface name="ServletModule.ServletKeyBindingBuilder" abstract="true" 3875*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3876*dc5640d1SHerbert Xue deprecated="not deprecated"> 3877*dc5640d1SHerbert Xue <method name="with" 3878*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3879*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3880*dc5640d1SHerbert Xue deprecated="not deprecated"> 3881*dc5640d1SHerbert Xue <param name="servletKey" type="java.lang.Class<? extends HttpServlet>"/> 3882*dc5640d1SHerbert Xue </method> 3883*dc5640d1SHerbert Xue <method name="with" 3884*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3885*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3886*dc5640d1SHerbert Xue deprecated="not deprecated"> 3887*dc5640d1SHerbert Xue <param name="servletKey" type="com.google.inject.Key<? extends HttpServlet>"/> 3888*dc5640d1SHerbert Xue </method> 3889*dc5640d1SHerbert Xue <method name="with" 3890*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3891*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3892*dc5640d1SHerbert Xue deprecated="not deprecated"> 3893*dc5640d1SHerbert Xue <param name="servletKey" type="java.lang.Class<? extends HttpServlet>"/> 3894*dc5640d1SHerbert Xue <param name="contextParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 3895*dc5640d1SHerbert Xue </method> 3896*dc5640d1SHerbert Xue <method name="with" 3897*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3898*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3899*dc5640d1SHerbert Xue deprecated="not deprecated"> 3900*dc5640d1SHerbert Xue <param name="servletKey" type="com.google.inject.Key<? extends HttpServlet>"/> 3901*dc5640d1SHerbert Xue <param name="contextParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 3902*dc5640d1SHerbert Xue </method> 3903*dc5640d1SHerbert Xue <doc> 3904*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()} 3905*dc5640d1SHerbert Xue 3906*dc5640d1SHerbert Xue @since 2.0]]> 3907*dc5640d1SHerbert Xue </doc> 3908*dc5640d1SHerbert Xue </interface> 3909*dc5640d1SHerbert Xue <!-- end interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder --> 3910*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.ServletScopes --> 3911*dc5640d1SHerbert Xue <class name="ServletScopes" extends="java.lang.Object" 3912*dc5640d1SHerbert Xue abstract="false" 3913*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3914*dc5640d1SHerbert Xue deprecated="not deprecated"> 3915*dc5640d1SHerbert Xue <field name="REQUEST" type="com.google.inject.Scope" 3916*dc5640d1SHerbert Xue transient="false" volatile="false" 3917*dc5640d1SHerbert Xue static="true" final="true" visibility="public" 3918*dc5640d1SHerbert Xue deprecated="not deprecated"> 3919*dc5640d1SHerbert Xue <doc> 3920*dc5640d1SHerbert Xue <![CDATA[HTTP servlet request scope.]]> 3921*dc5640d1SHerbert Xue </doc> 3922*dc5640d1SHerbert Xue </field> 3923*dc5640d1SHerbert Xue <field name="SESSION" type="com.google.inject.Scope" 3924*dc5640d1SHerbert Xue transient="false" volatile="false" 3925*dc5640d1SHerbert Xue static="true" final="true" visibility="public" 3926*dc5640d1SHerbert Xue deprecated="not deprecated"> 3927*dc5640d1SHerbert Xue <doc> 3928*dc5640d1SHerbert Xue <![CDATA[HTTP session scope.]]> 3929*dc5640d1SHerbert Xue </doc> 3930*dc5640d1SHerbert Xue </field> 3931*dc5640d1SHerbert Xue <doc> 3932*dc5640d1SHerbert Xue <![CDATA[Servlet scopes. 3933*dc5640d1SHerbert Xue 3934*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 3935*dc5640d1SHerbert Xue </doc> 3936*dc5640d1SHerbert Xue </class> 3937*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.ServletScopes --> 3938*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.SessionScoped --> 3939*dc5640d1SHerbert Xue <class name="SessionScoped" abstract="true" 3940*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3941*dc5640d1SHerbert Xue deprecated="not deprecated"> 3942*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 3943*dc5640d1SHerbert Xue <doc> 3944*dc5640d1SHerbert Xue <![CDATA[Apply this to implementation classes when you want one instance per session. 3945*dc5640d1SHerbert Xue 3946*dc5640d1SHerbert Xue @see com.google.inject.Scopes#SINGLETON 3947*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 3948*dc5640d1SHerbert Xue </doc> 3949*dc5640d1SHerbert Xue </class> 3950*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.SessionScoped --> 3951*dc5640d1SHerbert Xue</package> 3952*dc5640d1SHerbert Xue<package name="com.google.inject.spi"> 3953*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.BindingScopingVisitor --> 3954*dc5640d1SHerbert Xue <interface name="BindingScopingVisitor" abstract="true" 3955*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3956*dc5640d1SHerbert Xue deprecated="not deprecated"> 3957*dc5640d1SHerbert Xue <method name="visitEagerSingleton" return="V" 3958*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3959*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3960*dc5640d1SHerbert Xue deprecated="not deprecated"> 3961*dc5640d1SHerbert Xue <doc> 3962*dc5640d1SHerbert Xue <![CDATA[Visit an eager singleton or single instance. This scope strategy is found on both module and 3963*dc5640d1SHerbert Xue injector bindings.]]> 3964*dc5640d1SHerbert Xue </doc> 3965*dc5640d1SHerbert Xue </method> 3966*dc5640d1SHerbert Xue <method name="visitScope" return="V" 3967*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3968*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3969*dc5640d1SHerbert Xue deprecated="not deprecated"> 3970*dc5640d1SHerbert Xue <param name="scope" type="com.google.inject.Scope"/> 3971*dc5640d1SHerbert Xue <doc> 3972*dc5640d1SHerbert Xue <![CDATA[Visit a scope instance. This scope strategy is found on both module and injector bindings.]]> 3973*dc5640d1SHerbert Xue </doc> 3974*dc5640d1SHerbert Xue </method> 3975*dc5640d1SHerbert Xue <method name="visitScopeAnnotation" return="V" 3976*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3977*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3978*dc5640d1SHerbert Xue deprecated="not deprecated"> 3979*dc5640d1SHerbert Xue <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3980*dc5640d1SHerbert Xue <doc> 3981*dc5640d1SHerbert Xue <![CDATA[Visit a scope annotation. This scope strategy is found only on module bindings. The instance 3982*dc5640d1SHerbert Xue that implements this scope is registered by {@link com.google.inject.Binder#bindScope(Class, 3983*dc5640d1SHerbert Xue Scope) Binder.bindScope()}.]]> 3984*dc5640d1SHerbert Xue </doc> 3985*dc5640d1SHerbert Xue </method> 3986*dc5640d1SHerbert Xue <method name="visitNoScoping" return="V" 3987*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3988*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3989*dc5640d1SHerbert Xue deprecated="not deprecated"> 3990*dc5640d1SHerbert Xue <doc> 3991*dc5640d1SHerbert Xue <![CDATA[Visit an unspecified or unscoped strategy. On a module, this strategy indicates that the 3992*dc5640d1SHerbert Xue injector should use scoping annotations to find a scope. On an injector, it indicates that 3993*dc5640d1SHerbert Xue no scope is applied to the binding. An unscoped binding will behave like a scoped one when it 3994*dc5640d1SHerbert Xue is linked to a scoped binding.]]> 3995*dc5640d1SHerbert Xue </doc> 3996*dc5640d1SHerbert Xue </method> 3997*dc5640d1SHerbert Xue <doc> 3998*dc5640d1SHerbert Xue <![CDATA[Visits each of the strategies used to scope an injection. 3999*dc5640d1SHerbert Xue 4000*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with 4001*dc5640d1SHerbert Xue {@code return null} if no return type is needed. 4002*dc5640d1SHerbert Xue @since 2.0]]> 4003*dc5640d1SHerbert Xue </doc> 4004*dc5640d1SHerbert Xue </interface> 4005*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.BindingScopingVisitor --> 4006*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.BindingTargetVisitor --> 4007*dc5640d1SHerbert Xue <interface name="BindingTargetVisitor" abstract="true" 4008*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4009*dc5640d1SHerbert Xue deprecated="not deprecated"> 4010*dc5640d1SHerbert Xue <method name="visit" return="V" 4011*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4012*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4013*dc5640d1SHerbert Xue deprecated="not deprecated"> 4014*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.InstanceBinding<? extends T>"/> 4015*dc5640d1SHerbert Xue <doc> 4016*dc5640d1SHerbert Xue <![CDATA[Visit a instance binding. The same instance is returned for every injection. This target is 4017*dc5640d1SHerbert Xue found in both module and injector bindings.]]> 4018*dc5640d1SHerbert Xue </doc> 4019*dc5640d1SHerbert Xue </method> 4020*dc5640d1SHerbert Xue <method name="visit" return="V" 4021*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4022*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4023*dc5640d1SHerbert Xue deprecated="not deprecated"> 4024*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding<? extends T>"/> 4025*dc5640d1SHerbert Xue <doc> 4026*dc5640d1SHerbert Xue <![CDATA[Visit a provider instance binding. The provider's {@code get} method is invoked to resolve 4027*dc5640d1SHerbert Xue injections. This target is found in both module and injector bindings.]]> 4028*dc5640d1SHerbert Xue </doc> 4029*dc5640d1SHerbert Xue </method> 4030*dc5640d1SHerbert Xue <method name="visit" return="V" 4031*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4032*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4033*dc5640d1SHerbert Xue deprecated="not deprecated"> 4034*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProviderKeyBinding<? extends T>"/> 4035*dc5640d1SHerbert Xue <doc> 4036*dc5640d1SHerbert Xue <![CDATA[Visit a provider key binding. To resolve injections, the provider key is first resolved, then 4037*dc5640d1SHerbert Xue that provider's {@code get} method is invoked. This target is found in both module and injector 4038*dc5640d1SHerbert Xue bindings.]]> 4039*dc5640d1SHerbert Xue </doc> 4040*dc5640d1SHerbert Xue </method> 4041*dc5640d1SHerbert Xue <method name="visit" return="V" 4042*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4043*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4044*dc5640d1SHerbert Xue deprecated="not deprecated"> 4045*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.LinkedKeyBinding<? extends T>"/> 4046*dc5640d1SHerbert Xue <doc> 4047*dc5640d1SHerbert Xue <![CDATA[Visit a linked key binding. The other key's binding is used to resolve injections. This 4048*dc5640d1SHerbert Xue target is found in both module and injector bindings.]]> 4049*dc5640d1SHerbert Xue </doc> 4050*dc5640d1SHerbert Xue </method> 4051*dc5640d1SHerbert Xue <method name="visit" return="V" 4052*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4053*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4054*dc5640d1SHerbert Xue deprecated="not deprecated"> 4055*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ExposedBinding<? extends T>"/> 4056*dc5640d1SHerbert Xue <doc> 4057*dc5640d1SHerbert Xue <![CDATA[Visit a binding to a key exposed from an enclosed private environment. This target is only 4058*dc5640d1SHerbert Xue found in injector bindings.]]> 4059*dc5640d1SHerbert Xue </doc> 4060*dc5640d1SHerbert Xue </method> 4061*dc5640d1SHerbert Xue <method name="visit" return="V" 4062*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4063*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4064*dc5640d1SHerbert Xue deprecated="not deprecated"> 4065*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.UntargettedBinding<? extends T>"/> 4066*dc5640d1SHerbert Xue <doc> 4067*dc5640d1SHerbert Xue <![CDATA[Visit an untargetted binding. This target is found only on module bindings. It indicates 4068*dc5640d1SHerbert Xue that the injector should use its implicit binding strategies to resolve injections.]]> 4069*dc5640d1SHerbert Xue </doc> 4070*dc5640d1SHerbert Xue </method> 4071*dc5640d1SHerbert Xue <method name="visit" return="V" 4072*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4073*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4074*dc5640d1SHerbert Xue deprecated="not deprecated"> 4075*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ConstructorBinding<? extends T>"/> 4076*dc5640d1SHerbert Xue <doc> 4077*dc5640d1SHerbert Xue <![CDATA[Visit a constructor binding. To resolve injections, an instance is instantiated by invoking 4078*dc5640d1SHerbert Xue {@code constructor}. This target is found only on injector bindings.]]> 4079*dc5640d1SHerbert Xue </doc> 4080*dc5640d1SHerbert Xue </method> 4081*dc5640d1SHerbert Xue <method name="visit" return="V" 4082*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4083*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4084*dc5640d1SHerbert Xue deprecated="not deprecated"> 4085*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding<? extends T>"/> 4086*dc5640d1SHerbert Xue <doc> 4087*dc5640d1SHerbert Xue <![CDATA[Visit a binding created from converting a bound instance to a new type. The source binding 4088*dc5640d1SHerbert Xue has the same binding annotation but a different type. This target is found only on injector 4089*dc5640d1SHerbert Xue bindings.]]> 4090*dc5640d1SHerbert Xue </doc> 4091*dc5640d1SHerbert Xue </method> 4092*dc5640d1SHerbert Xue <method name="visit" return="V" 4093*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4094*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4095*dc5640d1SHerbert Xue deprecated="not deprecated"> 4096*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProviderBinding<? extends T>"/> 4097*dc5640d1SHerbert Xue <doc> 4098*dc5640d1SHerbert Xue <![CDATA[Visit a binding to a {@link com.google.inject.Provider} that delegates to the binding for the 4099*dc5640d1SHerbert Xue provided type. This target is found only on injector bindings.]]> 4100*dc5640d1SHerbert Xue </doc> 4101*dc5640d1SHerbert Xue </method> 4102*dc5640d1SHerbert Xue <doc> 4103*dc5640d1SHerbert Xue <![CDATA[Visits each of the strategies used to find an instance to satisfy an injection. 4104*dc5640d1SHerbert Xue 4105*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with 4106*dc5640d1SHerbert Xue {@code return null} if no return type is needed. 4107*dc5640d1SHerbert Xue @since 2.0]]> 4108*dc5640d1SHerbert Xue </doc> 4109*dc5640d1SHerbert Xue </interface> 4110*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.BindingTargetVisitor --> 4111*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ConstructorBinding --> 4112*dc5640d1SHerbert Xue <interface name="ConstructorBinding" abstract="true" 4113*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4114*dc5640d1SHerbert Xue deprecated="not deprecated"> 4115*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 4116*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 4117*dc5640d1SHerbert Xue <method name="getConstructor" return="com.google.inject.spi.InjectionPoint" 4118*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4119*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4120*dc5640d1SHerbert Xue deprecated="not deprecated"> 4121*dc5640d1SHerbert Xue <doc> 4122*dc5640d1SHerbert Xue <![CDATA[Gets the constructor this binding injects.]]> 4123*dc5640d1SHerbert Xue </doc> 4124*dc5640d1SHerbert Xue </method> 4125*dc5640d1SHerbert Xue <method name="getInjectableMembers" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 4126*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4127*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4128*dc5640d1SHerbert Xue deprecated="not deprecated"> 4129*dc5640d1SHerbert Xue <doc> 4130*dc5640d1SHerbert Xue <![CDATA[Returns all instance method and field injection points on {@code type}. 4131*dc5640d1SHerbert Xue 4132*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All 4133*dc5640d1SHerbert Xue fields are returned and then all methods. Within the fields, supertype fields are returned 4134*dc5640d1SHerbert Xue before subtype fields. Similarly, supertype methods are returned before subtype methods.]]> 4135*dc5640d1SHerbert Xue </doc> 4136*dc5640d1SHerbert Xue </method> 4137*dc5640d1SHerbert Xue <method name="getMethodInterceptors" return="java.util.Map<java.lang.reflect.Method, java.util.List<org.aopalliance.intercept.MethodInterceptor>>" 4138*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4139*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4140*dc5640d1SHerbert Xue deprecated="not deprecated"> 4141*dc5640d1SHerbert Xue <doc> 4142*dc5640d1SHerbert Xue <![CDATA[Returns the interceptors applied to each method, in the order that they will be applied. 4143*dc5640d1SHerbert Xue 4144*dc5640d1SHerbert Xue @return a possibly empty map]]> 4145*dc5640d1SHerbert Xue </doc> 4146*dc5640d1SHerbert Xue </method> 4147*dc5640d1SHerbert Xue <doc> 4148*dc5640d1SHerbert Xue <![CDATA[A binding to the constructor of a concrete clss. To resolve injections, an instance is 4149*dc5640d1SHerbert Xue instantiated by invoking the constructor. 4150*dc5640d1SHerbert Xue 4151*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 4152*dc5640d1SHerbert Xue @since 2.0]]> 4153*dc5640d1SHerbert Xue </doc> 4154*dc5640d1SHerbert Xue </interface> 4155*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ConstructorBinding --> 4156*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ConvertedConstantBinding --> 4157*dc5640d1SHerbert Xue <interface name="ConvertedConstantBinding" abstract="true" 4158*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4159*dc5640d1SHerbert Xue deprecated="not deprecated"> 4160*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 4161*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 4162*dc5640d1SHerbert Xue <method name="getValue" return="T" 4163*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4164*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4165*dc5640d1SHerbert Xue deprecated="not deprecated"> 4166*dc5640d1SHerbert Xue <doc> 4167*dc5640d1SHerbert Xue <![CDATA[Returns the converted value.]]> 4168*dc5640d1SHerbert Xue </doc> 4169*dc5640d1SHerbert Xue </method> 4170*dc5640d1SHerbert Xue <method name="getSourceKey" return="com.google.inject.Key<java.lang.String>" 4171*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4172*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4173*dc5640d1SHerbert Xue deprecated="not deprecated"> 4174*dc5640d1SHerbert Xue <doc> 4175*dc5640d1SHerbert Xue <![CDATA[Returns the key for the source binding. That binding can e retrieved from an injector using 4176*dc5640d1SHerbert Xue {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]> 4177*dc5640d1SHerbert Xue </doc> 4178*dc5640d1SHerbert Xue </method> 4179*dc5640d1SHerbert Xue <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 4180*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4181*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4182*dc5640d1SHerbert Xue deprecated="not deprecated"> 4183*dc5640d1SHerbert Xue <doc> 4184*dc5640d1SHerbert Xue <![CDATA[Returns a singleton set containing only the converted key.]]> 4185*dc5640d1SHerbert Xue </doc> 4186*dc5640d1SHerbert Xue </method> 4187*dc5640d1SHerbert Xue <doc> 4188*dc5640d1SHerbert Xue <![CDATA[A binding created from converting a bound instance to a new type. The source binding has the same 4189*dc5640d1SHerbert Xue binding annotation but a different type. 4190*dc5640d1SHerbert Xue 4191*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 4192*dc5640d1SHerbert Xue @since 2.0]]> 4193*dc5640d1SHerbert Xue </doc> 4194*dc5640d1SHerbert Xue </interface> 4195*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ConvertedConstantBinding --> 4196*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.DefaultBindingScopingVisitor --> 4197*dc5640d1SHerbert Xue <class name="DefaultBindingScopingVisitor" extends="java.lang.Object" 4198*dc5640d1SHerbert Xue abstract="false" 4199*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4200*dc5640d1SHerbert Xue deprecated="not deprecated"> 4201*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.BindingScopingVisitor<V>"/> 4202*dc5640d1SHerbert Xue <constructor name="DefaultBindingScopingVisitor" 4203*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4204*dc5640d1SHerbert Xue deprecated="not deprecated"> 4205*dc5640d1SHerbert Xue </constructor> 4206*dc5640d1SHerbert Xue <method name="visitOther" return="V" 4207*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4208*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 4209*dc5640d1SHerbert Xue deprecated="not deprecated"> 4210*dc5640d1SHerbert Xue <doc> 4211*dc5640d1SHerbert Xue <![CDATA[Default visit implementation. Returns {@code null}.]]> 4212*dc5640d1SHerbert Xue </doc> 4213*dc5640d1SHerbert Xue </method> 4214*dc5640d1SHerbert Xue <method name="visitEagerSingleton" return="V" 4215*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4216*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4217*dc5640d1SHerbert Xue deprecated="not deprecated"> 4218*dc5640d1SHerbert Xue </method> 4219*dc5640d1SHerbert Xue <method name="visitScope" return="V" 4220*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4221*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4222*dc5640d1SHerbert Xue deprecated="not deprecated"> 4223*dc5640d1SHerbert Xue <param name="scope" type="com.google.inject.Scope"/> 4224*dc5640d1SHerbert Xue </method> 4225*dc5640d1SHerbert Xue <method name="visitScopeAnnotation" return="V" 4226*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4227*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4228*dc5640d1SHerbert Xue deprecated="not deprecated"> 4229*dc5640d1SHerbert Xue <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 4230*dc5640d1SHerbert Xue </method> 4231*dc5640d1SHerbert Xue <method name="visitNoScoping" return="V" 4232*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4233*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4234*dc5640d1SHerbert Xue deprecated="not deprecated"> 4235*dc5640d1SHerbert Xue </method> 4236*dc5640d1SHerbert Xue <doc> 4237*dc5640d1SHerbert Xue <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to 4238*dc5640d1SHerbert Xue {@link #visitOther()}, returning its result. 4239*dc5640d1SHerbert Xue 4240*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with 4241*dc5640d1SHerbert Xue {@code return null} if no return type is needed. 4242*dc5640d1SHerbert Xue 4243*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 4244*dc5640d1SHerbert Xue @since 2.0]]> 4245*dc5640d1SHerbert Xue </doc> 4246*dc5640d1SHerbert Xue </class> 4247*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.DefaultBindingScopingVisitor --> 4248*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.DefaultBindingTargetVisitor --> 4249*dc5640d1SHerbert Xue <class name="DefaultBindingTargetVisitor" extends="java.lang.Object" 4250*dc5640d1SHerbert Xue abstract="true" 4251*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4252*dc5640d1SHerbert Xue deprecated="not deprecated"> 4253*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 4254*dc5640d1SHerbert Xue <constructor name="DefaultBindingTargetVisitor" 4255*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4256*dc5640d1SHerbert Xue deprecated="not deprecated"> 4257*dc5640d1SHerbert Xue </constructor> 4258*dc5640d1SHerbert Xue <method name="visitOther" return="V" 4259*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4260*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 4261*dc5640d1SHerbert Xue deprecated="not deprecated"> 4262*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.Binding<? extends T>"/> 4263*dc5640d1SHerbert Xue <doc> 4264*dc5640d1SHerbert Xue <![CDATA[Default visit implementation. Returns {@code null}.]]> 4265*dc5640d1SHerbert Xue </doc> 4266*dc5640d1SHerbert Xue </method> 4267*dc5640d1SHerbert Xue <method name="visit" return="V" 4268*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4269*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4270*dc5640d1SHerbert Xue deprecated="not deprecated"> 4271*dc5640d1SHerbert Xue <param name="instanceBinding" type="com.google.inject.spi.InstanceBinding<? extends T>"/> 4272*dc5640d1SHerbert Xue </method> 4273*dc5640d1SHerbert Xue <method name="visit" return="V" 4274*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4275*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4276*dc5640d1SHerbert Xue deprecated="not deprecated"> 4277*dc5640d1SHerbert Xue <param name="providerInstanceBinding" type="com.google.inject.spi.ProviderInstanceBinding<? extends T>"/> 4278*dc5640d1SHerbert Xue </method> 4279*dc5640d1SHerbert Xue <method name="visit" return="V" 4280*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4281*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4282*dc5640d1SHerbert Xue deprecated="not deprecated"> 4283*dc5640d1SHerbert Xue <param name="providerKeyBinding" type="com.google.inject.spi.ProviderKeyBinding<? extends T>"/> 4284*dc5640d1SHerbert Xue </method> 4285*dc5640d1SHerbert Xue <method name="visit" return="V" 4286*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4287*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4288*dc5640d1SHerbert Xue deprecated="not deprecated"> 4289*dc5640d1SHerbert Xue <param name="linkedKeyBinding" type="com.google.inject.spi.LinkedKeyBinding<? extends T>"/> 4290*dc5640d1SHerbert Xue </method> 4291*dc5640d1SHerbert Xue <method name="visit" return="V" 4292*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4293*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4294*dc5640d1SHerbert Xue deprecated="not deprecated"> 4295*dc5640d1SHerbert Xue <param name="exposedBinding" type="com.google.inject.spi.ExposedBinding<? extends T>"/> 4296*dc5640d1SHerbert Xue </method> 4297*dc5640d1SHerbert Xue <method name="visit" return="V" 4298*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4299*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4300*dc5640d1SHerbert Xue deprecated="not deprecated"> 4301*dc5640d1SHerbert Xue <param name="untargettedBinding" type="com.google.inject.spi.UntargettedBinding<? extends T>"/> 4302*dc5640d1SHerbert Xue </method> 4303*dc5640d1SHerbert Xue <method name="visit" return="V" 4304*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4305*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4306*dc5640d1SHerbert Xue deprecated="not deprecated"> 4307*dc5640d1SHerbert Xue <param name="constructorBinding" type="com.google.inject.spi.ConstructorBinding<? extends T>"/> 4308*dc5640d1SHerbert Xue </method> 4309*dc5640d1SHerbert Xue <method name="visit" return="V" 4310*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4311*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4312*dc5640d1SHerbert Xue deprecated="not deprecated"> 4313*dc5640d1SHerbert Xue <param name="convertedConstantBinding" type="com.google.inject.spi.ConvertedConstantBinding<? extends T>"/> 4314*dc5640d1SHerbert Xue </method> 4315*dc5640d1SHerbert Xue <method name="visit" return="V" 4316*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4317*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4318*dc5640d1SHerbert Xue deprecated="not deprecated"> 4319*dc5640d1SHerbert Xue <param name="providerBinding" type="com.google.inject.spi.ProviderBinding<? extends T>"/> 4320*dc5640d1SHerbert Xue </method> 4321*dc5640d1SHerbert Xue <doc> 4322*dc5640d1SHerbert Xue <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to {@link 4323*dc5640d1SHerbert Xue #visitOther(Binding)}, returning its result. 4324*dc5640d1SHerbert Xue 4325*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with 4326*dc5640d1SHerbert Xue {@code return null} if no return type is needed. 4327*dc5640d1SHerbert Xue 4328*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 4329*dc5640d1SHerbert Xue @since 2.0]]> 4330*dc5640d1SHerbert Xue </doc> 4331*dc5640d1SHerbert Xue </class> 4332*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.DefaultBindingTargetVisitor --> 4333*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.DefaultElementVisitor --> 4334*dc5640d1SHerbert Xue <class name="DefaultElementVisitor" extends="java.lang.Object" 4335*dc5640d1SHerbert Xue abstract="true" 4336*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4337*dc5640d1SHerbert Xue deprecated="not deprecated"> 4338*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.ElementVisitor<V>"/> 4339*dc5640d1SHerbert Xue <constructor name="DefaultElementVisitor" 4340*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4341*dc5640d1SHerbert Xue deprecated="not deprecated"> 4342*dc5640d1SHerbert Xue </constructor> 4343*dc5640d1SHerbert Xue <method name="visitOther" return="V" 4344*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4345*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 4346*dc5640d1SHerbert Xue deprecated="not deprecated"> 4347*dc5640d1SHerbert Xue <param name="element" type="com.google.inject.spi.Element"/> 4348*dc5640d1SHerbert Xue <doc> 4349*dc5640d1SHerbert Xue <![CDATA[Default visit implementation. Returns {@code null}.]]> 4350*dc5640d1SHerbert Xue </doc> 4351*dc5640d1SHerbert Xue </method> 4352*dc5640d1SHerbert Xue <method name="visit" return="V" 4353*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4354*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4355*dc5640d1SHerbert Xue deprecated="not deprecated"> 4356*dc5640d1SHerbert Xue <param name="message" type="com.google.inject.spi.Message"/> 4357*dc5640d1SHerbert Xue </method> 4358*dc5640d1SHerbert Xue <method name="visit" return="V" 4359*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4360*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4361*dc5640d1SHerbert Xue deprecated="not deprecated"> 4362*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.Binding<T>"/> 4363*dc5640d1SHerbert Xue </method> 4364*dc5640d1SHerbert Xue <method name="visit" return="V" 4365*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4366*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4367*dc5640d1SHerbert Xue deprecated="not deprecated"> 4368*dc5640d1SHerbert Xue <param name="interceptorBinding" type="com.google.inject.spi.InterceptorBinding"/> 4369*dc5640d1SHerbert Xue </method> 4370*dc5640d1SHerbert Xue <method name="visit" return="V" 4371*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4372*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4373*dc5640d1SHerbert Xue deprecated="not deprecated"> 4374*dc5640d1SHerbert Xue <param name="scopeBinding" type="com.google.inject.spi.ScopeBinding"/> 4375*dc5640d1SHerbert Xue </method> 4376*dc5640d1SHerbert Xue <method name="visit" return="V" 4377*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4378*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4379*dc5640d1SHerbert Xue deprecated="not deprecated"> 4380*dc5640d1SHerbert Xue <param name="typeConverterBinding" type="com.google.inject.spi.TypeConverterBinding"/> 4381*dc5640d1SHerbert Xue </method> 4382*dc5640d1SHerbert Xue <method name="visit" return="V" 4383*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4384*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4385*dc5640d1SHerbert Xue deprecated="not deprecated"> 4386*dc5640d1SHerbert Xue <param name="providerLookup" type="com.google.inject.spi.ProviderLookup<T>"/> 4387*dc5640d1SHerbert Xue </method> 4388*dc5640d1SHerbert Xue <method name="visit" return="V" 4389*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4390*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4391*dc5640d1SHerbert Xue deprecated="not deprecated"> 4392*dc5640d1SHerbert Xue <param name="injectionRequest" type="com.google.inject.spi.InjectionRequest"/> 4393*dc5640d1SHerbert Xue </method> 4394*dc5640d1SHerbert Xue <method name="visit" return="V" 4395*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4396*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4397*dc5640d1SHerbert Xue deprecated="not deprecated"> 4398*dc5640d1SHerbert Xue <param name="staticInjectionRequest" type="com.google.inject.spi.StaticInjectionRequest"/> 4399*dc5640d1SHerbert Xue </method> 4400*dc5640d1SHerbert Xue <method name="visit" return="V" 4401*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4402*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4403*dc5640d1SHerbert Xue deprecated="not deprecated"> 4404*dc5640d1SHerbert Xue <param name="privateElements" type="com.google.inject.spi.PrivateElements"/> 4405*dc5640d1SHerbert Xue </method> 4406*dc5640d1SHerbert Xue <method name="visit" return="V" 4407*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4408*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4409*dc5640d1SHerbert Xue deprecated="not deprecated"> 4410*dc5640d1SHerbert Xue <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup<T>"/> 4411*dc5640d1SHerbert Xue </method> 4412*dc5640d1SHerbert Xue <method name="visit" return="V" 4413*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4414*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4415*dc5640d1SHerbert Xue deprecated="not deprecated"> 4416*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/> 4417*dc5640d1SHerbert Xue </method> 4418*dc5640d1SHerbert Xue <doc> 4419*dc5640d1SHerbert Xue <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to 4420*dc5640d1SHerbert Xue {@link #visitOther(Element)}, returning its result. 4421*dc5640d1SHerbert Xue 4422*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with 4423*dc5640d1SHerbert Xue {@code return null} if no return type is needed. 4424*dc5640d1SHerbert Xue 4425*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 4426*dc5640d1SHerbert Xue @since 2.0]]> 4427*dc5640d1SHerbert Xue </doc> 4428*dc5640d1SHerbert Xue </class> 4429*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.DefaultElementVisitor --> 4430*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.Dependency --> 4431*dc5640d1SHerbert Xue <class name="Dependency" extends="java.lang.Object" 4432*dc5640d1SHerbert Xue abstract="false" 4433*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 4434*dc5640d1SHerbert Xue deprecated="not deprecated"> 4435*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.spi.Dependency<T>" 4436*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4437*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4438*dc5640d1SHerbert Xue deprecated="not deprecated"> 4439*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 4440*dc5640d1SHerbert Xue <doc> 4441*dc5640d1SHerbert Xue <![CDATA[Returns a new dependency that is not attached to an injection point. The returned dependency is 4442*dc5640d1SHerbert Xue nullable.]]> 4443*dc5640d1SHerbert Xue </doc> 4444*dc5640d1SHerbert Xue </method> 4445*dc5640d1SHerbert Xue <method name="forInjectionPoints" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 4446*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4447*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4448*dc5640d1SHerbert Xue deprecated="not deprecated"> 4449*dc5640d1SHerbert Xue <param name="injectionPoints" type="java.util.Set<com.google.inject.spi.InjectionPoint>"/> 4450*dc5640d1SHerbert Xue <doc> 4451*dc5640d1SHerbert Xue <![CDATA[Returns the dependencies from the given injection points.]]> 4452*dc5640d1SHerbert Xue </doc> 4453*dc5640d1SHerbert Xue </method> 4454*dc5640d1SHerbert Xue <method name="getKey" return="com.google.inject.Key<T>" 4455*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4456*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4457*dc5640d1SHerbert Xue deprecated="not deprecated"> 4458*dc5640d1SHerbert Xue <doc> 4459*dc5640d1SHerbert Xue <![CDATA[Returns the key to the binding that satisfies this dependency.]]> 4460*dc5640d1SHerbert Xue </doc> 4461*dc5640d1SHerbert Xue </method> 4462*dc5640d1SHerbert Xue <method name="isNullable" return="boolean" 4463*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4464*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4465*dc5640d1SHerbert Xue deprecated="not deprecated"> 4466*dc5640d1SHerbert Xue <doc> 4467*dc5640d1SHerbert Xue <![CDATA[Returns true if null is a legal value for this dependency.]]> 4468*dc5640d1SHerbert Xue </doc> 4469*dc5640d1SHerbert Xue </method> 4470*dc5640d1SHerbert Xue <method name="getInjectionPoint" return="com.google.inject.spi.InjectionPoint" 4471*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4472*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4473*dc5640d1SHerbert Xue deprecated="not deprecated"> 4474*dc5640d1SHerbert Xue <doc> 4475*dc5640d1SHerbert Xue <![CDATA[Returns the injection point to which this dependency belongs, or null if this dependency isn't 4476*dc5640d1SHerbert Xue attached to a particular injection point.]]> 4477*dc5640d1SHerbert Xue </doc> 4478*dc5640d1SHerbert Xue </method> 4479*dc5640d1SHerbert Xue <method name="getParameterIndex" return="int" 4480*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4481*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4482*dc5640d1SHerbert Xue deprecated="not deprecated"> 4483*dc5640d1SHerbert Xue <doc> 4484*dc5640d1SHerbert Xue <![CDATA[Returns the index of this dependency in the injection point's parameter list, or {@code -1} if 4485*dc5640d1SHerbert Xue this dependency does not belong to a parameter list. Only method and constuctor dependencies 4486*dc5640d1SHerbert Xue are elements in a parameter list.]]> 4487*dc5640d1SHerbert Xue </doc> 4488*dc5640d1SHerbert Xue </method> 4489*dc5640d1SHerbert Xue <method name="hashCode" return="int" 4490*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4491*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4492*dc5640d1SHerbert Xue deprecated="not deprecated"> 4493*dc5640d1SHerbert Xue </method> 4494*dc5640d1SHerbert Xue <method name="equals" return="boolean" 4495*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4496*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4497*dc5640d1SHerbert Xue deprecated="not deprecated"> 4498*dc5640d1SHerbert Xue <param name="o" type="java.lang.Object"/> 4499*dc5640d1SHerbert Xue </method> 4500*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 4501*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4502*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4503*dc5640d1SHerbert Xue deprecated="not deprecated"> 4504*dc5640d1SHerbert Xue </method> 4505*dc5640d1SHerbert Xue <doc> 4506*dc5640d1SHerbert Xue <![CDATA[A variable that can be resolved by an injector. 4507*dc5640d1SHerbert Xue 4508*dc5640d1SHerbert Xue <p>Use {@link #get} to build a freestanding dependency, or {@link InjectionPoint} to build one 4509*dc5640d1SHerbert Xue that's attached to a constructor, method or field. 4510*dc5640d1SHerbert Xue 4511*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 4512*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 4513*dc5640d1SHerbert Xue @since 2.0]]> 4514*dc5640d1SHerbert Xue </doc> 4515*dc5640d1SHerbert Xue </class> 4516*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.Dependency --> 4517*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.Element --> 4518*dc5640d1SHerbert Xue <interface name="Element" abstract="true" 4519*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4520*dc5640d1SHerbert Xue deprecated="not deprecated"> 4521*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 4522*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4523*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4524*dc5640d1SHerbert Xue deprecated="not deprecated"> 4525*dc5640d1SHerbert Xue <doc> 4526*dc5640d1SHerbert Xue <![CDATA[Returns an arbitrary object containing information about the "place" where this element was 4527*dc5640d1SHerbert Xue configured. Used by Guice in the production of descriptive error messages. 4528*dc5640d1SHerbert Xue 4529*dc5640d1SHerbert Xue <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good 4530*dc5640d1SHerbert Xue example. Tools should simply call {@code toString()} on the source object if the type is 4531*dc5640d1SHerbert Xue unfamiliar.]]> 4532*dc5640d1SHerbert Xue </doc> 4533*dc5640d1SHerbert Xue </method> 4534*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 4535*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4536*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4537*dc5640d1SHerbert Xue deprecated="not deprecated"> 4538*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 4539*dc5640d1SHerbert Xue <doc> 4540*dc5640d1SHerbert Xue <![CDATA[Accepts an element visitor. Invokes the visitor method specific to this element's type. 4541*dc5640d1SHerbert Xue 4542*dc5640d1SHerbert Xue @param visitor to call back on]]> 4543*dc5640d1SHerbert Xue </doc> 4544*dc5640d1SHerbert Xue </method> 4545*dc5640d1SHerbert Xue <method name="applyTo" 4546*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4547*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4548*dc5640d1SHerbert Xue deprecated="not deprecated"> 4549*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 4550*dc5640d1SHerbert Xue <doc> 4551*dc5640d1SHerbert Xue <![CDATA[Writes this module element to the given binder (optional operation). 4552*dc5640d1SHerbert Xue 4553*dc5640d1SHerbert Xue @param binder to apply configuration element to 4554*dc5640d1SHerbert Xue @throws UnsupportedOperationException if the {@code applyTo} method is not supported by this 4555*dc5640d1SHerbert Xue element.]]> 4556*dc5640d1SHerbert Xue </doc> 4557*dc5640d1SHerbert Xue </method> 4558*dc5640d1SHerbert Xue <doc> 4559*dc5640d1SHerbert Xue <![CDATA[A core component of a module or injector. 4560*dc5640d1SHerbert Xue 4561*dc5640d1SHerbert Xue <p>The elements of a module can be inspected, validated and rewritten. Use {@link 4562*dc5640d1SHerbert Xue Elements#getElements(com.google.inject.Module[]) Elements.getElements()} to read the elements 4563*dc5640d1SHerbert Xue from a module, and {@link Elements#getModule(Iterable) Elements.getModule()} to rewrite them. 4564*dc5640d1SHerbert Xue This can be used for static analysis and generation of Guice modules. 4565*dc5640d1SHerbert Xue 4566*dc5640d1SHerbert Xue <p>The elements of an injector can be inspected and exercised. Use {@link 4567*dc5640d1SHerbert Xue com.google.inject.Injector#getBindings Injector.getBindings()} to reflect on Guice injectors. 4568*dc5640d1SHerbert Xue 4569*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 4570*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 4571*dc5640d1SHerbert Xue @since 2.0]]> 4572*dc5640d1SHerbert Xue </doc> 4573*dc5640d1SHerbert Xue </interface> 4574*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.Element --> 4575*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.Elements --> 4576*dc5640d1SHerbert Xue <class name="Elements" extends="java.lang.Object" 4577*dc5640d1SHerbert Xue abstract="false" 4578*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 4579*dc5640d1SHerbert Xue deprecated="not deprecated"> 4580*dc5640d1SHerbert Xue <constructor name="Elements" 4581*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4582*dc5640d1SHerbert Xue deprecated="not deprecated"> 4583*dc5640d1SHerbert Xue </constructor> 4584*dc5640d1SHerbert Xue <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 4585*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4586*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4587*dc5640d1SHerbert Xue deprecated="not deprecated"> 4588*dc5640d1SHerbert Xue <param name="modules" type="com.google.inject.Module[]"/> 4589*dc5640d1SHerbert Xue <doc> 4590*dc5640d1SHerbert Xue <![CDATA[Records the elements executed by {@code modules}.]]> 4591*dc5640d1SHerbert Xue </doc> 4592*dc5640d1SHerbert Xue </method> 4593*dc5640d1SHerbert Xue <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 4594*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4595*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4596*dc5640d1SHerbert Xue deprecated="not deprecated"> 4597*dc5640d1SHerbert Xue <param name="stage" type="com.google.inject.Stage"/> 4598*dc5640d1SHerbert Xue <param name="modules" type="com.google.inject.Module[]"/> 4599*dc5640d1SHerbert Xue <doc> 4600*dc5640d1SHerbert Xue <![CDATA[Records the elements executed by {@code modules}.]]> 4601*dc5640d1SHerbert Xue </doc> 4602*dc5640d1SHerbert Xue </method> 4603*dc5640d1SHerbert Xue <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 4604*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4605*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4606*dc5640d1SHerbert Xue deprecated="not deprecated"> 4607*dc5640d1SHerbert Xue <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 4608*dc5640d1SHerbert Xue <doc> 4609*dc5640d1SHerbert Xue <![CDATA[Records the elements executed by {@code modules}.]]> 4610*dc5640d1SHerbert Xue </doc> 4611*dc5640d1SHerbert Xue </method> 4612*dc5640d1SHerbert Xue <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 4613*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4614*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4615*dc5640d1SHerbert Xue deprecated="not deprecated"> 4616*dc5640d1SHerbert Xue <param name="stage" type="com.google.inject.Stage"/> 4617*dc5640d1SHerbert Xue <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 4618*dc5640d1SHerbert Xue <doc> 4619*dc5640d1SHerbert Xue <![CDATA[Records the elements executed by {@code modules}.]]> 4620*dc5640d1SHerbert Xue </doc> 4621*dc5640d1SHerbert Xue </method> 4622*dc5640d1SHerbert Xue <method name="getModule" return="com.google.inject.Module" 4623*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4624*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4625*dc5640d1SHerbert Xue deprecated="not deprecated"> 4626*dc5640d1SHerbert Xue <param name="elements" type="java.lang.Iterable<? extends com.google.inject.spi.Element>"/> 4627*dc5640d1SHerbert Xue <doc> 4628*dc5640d1SHerbert Xue <![CDATA[Returns the module composed of {@code elements}.]]> 4629*dc5640d1SHerbert Xue </doc> 4630*dc5640d1SHerbert Xue </method> 4631*dc5640d1SHerbert Xue <doc> 4632*dc5640d1SHerbert Xue <![CDATA[Exposes elements of a module so they can be inspected, validated or {@link 4633*dc5640d1SHerbert Xue Element#applyTo(Binder) rewritten}. 4634*dc5640d1SHerbert Xue 4635*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 4636*dc5640d1SHerbert Xue @since 2.0]]> 4637*dc5640d1SHerbert Xue </doc> 4638*dc5640d1SHerbert Xue </class> 4639*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.Elements --> 4640*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ElementVisitor --> 4641*dc5640d1SHerbert Xue <interface name="ElementVisitor" abstract="true" 4642*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4643*dc5640d1SHerbert Xue deprecated="not deprecated"> 4644*dc5640d1SHerbert Xue <method name="visit" return="V" 4645*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4646*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4647*dc5640d1SHerbert Xue deprecated="not deprecated"> 4648*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.Binding<T>"/> 4649*dc5640d1SHerbert Xue <doc> 4650*dc5640d1SHerbert Xue <![CDATA[Visit a mapping from a key (type and optional annotation) to the strategy for getting 4651*dc5640d1SHerbert Xue instances of the type.]]> 4652*dc5640d1SHerbert Xue </doc> 4653*dc5640d1SHerbert Xue </method> 4654*dc5640d1SHerbert Xue <method name="visit" return="V" 4655*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4656*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4657*dc5640d1SHerbert Xue deprecated="not deprecated"> 4658*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.InterceptorBinding"/> 4659*dc5640d1SHerbert Xue <doc> 4660*dc5640d1SHerbert Xue <![CDATA[Visit a registration of interceptors for matching methods of matching classes.]]> 4661*dc5640d1SHerbert Xue </doc> 4662*dc5640d1SHerbert Xue </method> 4663*dc5640d1SHerbert Xue <method name="visit" return="V" 4664*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4665*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4666*dc5640d1SHerbert Xue deprecated="not deprecated"> 4667*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ScopeBinding"/> 4668*dc5640d1SHerbert Xue <doc> 4669*dc5640d1SHerbert Xue <![CDATA[Visit a registration of a scope annotation with the scope that implements it.]]> 4670*dc5640d1SHerbert Xue </doc> 4671*dc5640d1SHerbert Xue </method> 4672*dc5640d1SHerbert Xue <method name="visit" return="V" 4673*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4674*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4675*dc5640d1SHerbert Xue deprecated="not deprecated"> 4676*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.TypeConverterBinding"/> 4677*dc5640d1SHerbert Xue <doc> 4678*dc5640d1SHerbert Xue <![CDATA[Visit a registration of type converters for matching target types.]]> 4679*dc5640d1SHerbert Xue </doc> 4680*dc5640d1SHerbert Xue </method> 4681*dc5640d1SHerbert Xue <method name="visit" return="V" 4682*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4683*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4684*dc5640d1SHerbert Xue deprecated="not deprecated"> 4685*dc5640d1SHerbert Xue <param name="request" type="com.google.inject.spi.InjectionRequest"/> 4686*dc5640d1SHerbert Xue <doc> 4687*dc5640d1SHerbert Xue <![CDATA[Visit a request to inject the instance fields and methods of an instance.]]> 4688*dc5640d1SHerbert Xue </doc> 4689*dc5640d1SHerbert Xue </method> 4690*dc5640d1SHerbert Xue <method name="visit" return="V" 4691*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4692*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4693*dc5640d1SHerbert Xue deprecated="not deprecated"> 4694*dc5640d1SHerbert Xue <param name="request" type="com.google.inject.spi.StaticInjectionRequest"/> 4695*dc5640d1SHerbert Xue <doc> 4696*dc5640d1SHerbert Xue <![CDATA[Visit a request to inject the static fields and methods of type.]]> 4697*dc5640d1SHerbert Xue </doc> 4698*dc5640d1SHerbert Xue </method> 4699*dc5640d1SHerbert Xue <method name="visit" return="V" 4700*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4701*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4702*dc5640d1SHerbert Xue deprecated="not deprecated"> 4703*dc5640d1SHerbert Xue <param name="lookup" type="com.google.inject.spi.ProviderLookup<T>"/> 4704*dc5640d1SHerbert Xue <doc> 4705*dc5640d1SHerbert Xue <![CDATA[Visit a lookup of the provider for a type.]]> 4706*dc5640d1SHerbert Xue </doc> 4707*dc5640d1SHerbert Xue </method> 4708*dc5640d1SHerbert Xue <method name="visit" return="V" 4709*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4710*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4711*dc5640d1SHerbert Xue deprecated="not deprecated"> 4712*dc5640d1SHerbert Xue <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup<T>"/> 4713*dc5640d1SHerbert Xue <doc> 4714*dc5640d1SHerbert Xue <![CDATA[Visit a lookup of the members injector.]]> 4715*dc5640d1SHerbert Xue </doc> 4716*dc5640d1SHerbert Xue </method> 4717*dc5640d1SHerbert Xue <method name="visit" return="V" 4718*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4719*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4720*dc5640d1SHerbert Xue deprecated="not deprecated"> 4721*dc5640d1SHerbert Xue <param name="message" type="com.google.inject.spi.Message"/> 4722*dc5640d1SHerbert Xue <doc> 4723*dc5640d1SHerbert Xue <![CDATA[Visit an error message and the context in which it occured.]]> 4724*dc5640d1SHerbert Xue </doc> 4725*dc5640d1SHerbert Xue </method> 4726*dc5640d1SHerbert Xue <method name="visit" return="V" 4727*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4728*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4729*dc5640d1SHerbert Xue deprecated="not deprecated"> 4730*dc5640d1SHerbert Xue <param name="elements" type="com.google.inject.spi.PrivateElements"/> 4731*dc5640d1SHerbert Xue <doc> 4732*dc5640d1SHerbert Xue <![CDATA[Visit a collection of configuration elements for a {@linkplain com.google.inject.PrivateBinder 4733*dc5640d1SHerbert Xue private binder}.]]> 4734*dc5640d1SHerbert Xue </doc> 4735*dc5640d1SHerbert Xue </method> 4736*dc5640d1SHerbert Xue <method name="visit" return="V" 4737*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4738*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4739*dc5640d1SHerbert Xue deprecated="not deprecated"> 4740*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/> 4741*dc5640d1SHerbert Xue <doc> 4742*dc5640d1SHerbert Xue <![CDATA[Visit an injectable type listener binding.]]> 4743*dc5640d1SHerbert Xue </doc> 4744*dc5640d1SHerbert Xue </method> 4745*dc5640d1SHerbert Xue <doc> 4746*dc5640d1SHerbert Xue <![CDATA[Visit elements. 4747*dc5640d1SHerbert Xue 4748*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with 4749*dc5640d1SHerbert Xue {@code return null} if no return type is needed. 4750*dc5640d1SHerbert Xue 4751*dc5640d1SHerbert Xue @since 2.0]]> 4752*dc5640d1SHerbert Xue </doc> 4753*dc5640d1SHerbert Xue </interface> 4754*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ElementVisitor --> 4755*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ExposedBinding --> 4756*dc5640d1SHerbert Xue <interface name="ExposedBinding" abstract="true" 4757*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4758*dc5640d1SHerbert Xue deprecated="not deprecated"> 4759*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 4760*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 4761*dc5640d1SHerbert Xue <method name="getPrivateElements" return="com.google.inject.spi.PrivateElements" 4762*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4763*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4764*dc5640d1SHerbert Xue deprecated="not deprecated"> 4765*dc5640d1SHerbert Xue <doc> 4766*dc5640d1SHerbert Xue <![CDATA[Returns the enclosed environment that holds the original binding.]]> 4767*dc5640d1SHerbert Xue </doc> 4768*dc5640d1SHerbert Xue </method> 4769*dc5640d1SHerbert Xue <method name="applyTo" 4770*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4771*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4772*dc5640d1SHerbert Xue deprecated="not deprecated"> 4773*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 4774*dc5640d1SHerbert Xue <doc> 4775*dc5640d1SHerbert Xue <![CDATA[Unsupported. Always throws {@link UnsupportedOperationException}.]]> 4776*dc5640d1SHerbert Xue </doc> 4777*dc5640d1SHerbert Xue </method> 4778*dc5640d1SHerbert Xue <doc> 4779*dc5640d1SHerbert Xue <![CDATA[A binding to a key exposed from an enclosed private environment. 4780*dc5640d1SHerbert Xue 4781*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 4782*dc5640d1SHerbert Xue @since 2.0]]> 4783*dc5640d1SHerbert Xue </doc> 4784*dc5640d1SHerbert Xue </interface> 4785*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ExposedBinding --> 4786*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.HasDependencies --> 4787*dc5640d1SHerbert Xue <interface name="HasDependencies" abstract="true" 4788*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4789*dc5640d1SHerbert Xue deprecated="not deprecated"> 4790*dc5640d1SHerbert Xue <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 4791*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4792*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4793*dc5640d1SHerbert Xue deprecated="not deprecated"> 4794*dc5640d1SHerbert Xue <doc> 4795*dc5640d1SHerbert Xue <![CDATA[Returns the known dependencies for this type. If this has dependencies whose values are not 4796*dc5640d1SHerbert Xue known statically, a dependency for the {@link com.google.inject.Injector Injector} will be 4797*dc5640d1SHerbert Xue included in the returned set. 4798*dc5640d1SHerbert Xue 4799*dc5640d1SHerbert Xue @return a possibly empty set]]> 4800*dc5640d1SHerbert Xue </doc> 4801*dc5640d1SHerbert Xue </method> 4802*dc5640d1SHerbert Xue <doc> 4803*dc5640d1SHerbert Xue <![CDATA[Implemented by {@link com.google.inject.Binding bindings}, {@link com.google.inject.Provider 4804*dc5640d1SHerbert Xue providers} and instances that expose their dependencies explicitly. 4805*dc5640d1SHerbert Xue 4806*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 4807*dc5640d1SHerbert Xue @since 2.0]]> 4808*dc5640d1SHerbert Xue </doc> 4809*dc5640d1SHerbert Xue </interface> 4810*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.HasDependencies --> 4811*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.InjectionListener --> 4812*dc5640d1SHerbert Xue <interface name="InjectionListener" abstract="true" 4813*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4814*dc5640d1SHerbert Xue deprecated="not deprecated"> 4815*dc5640d1SHerbert Xue <method name="afterInjection" 4816*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4817*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4818*dc5640d1SHerbert Xue deprecated="not deprecated"> 4819*dc5640d1SHerbert Xue <param name="injectee" type="I"/> 4820*dc5640d1SHerbert Xue <doc> 4821*dc5640d1SHerbert Xue <![CDATA[Invoked by Guice after it injects the fields and methods of instance. 4822*dc5640d1SHerbert Xue 4823*dc5640d1SHerbert Xue @param injectee instance that Guice injected dependencies into]]> 4824*dc5640d1SHerbert Xue </doc> 4825*dc5640d1SHerbert Xue </method> 4826*dc5640d1SHerbert Xue <doc> 4827*dc5640d1SHerbert Xue <![CDATA[Listens for injections into instances of type {@code I}. Useful for performing further 4828*dc5640d1SHerbert Xue injections, post-injection initialization, and more. 4829*dc5640d1SHerbert Xue 4830*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 4831*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 4832*dc5640d1SHerbert Xue @since 2.0]]> 4833*dc5640d1SHerbert Xue </doc> 4834*dc5640d1SHerbert Xue </interface> 4835*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.InjectionListener --> 4836*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.InjectionPoint --> 4837*dc5640d1SHerbert Xue <class name="InjectionPoint" extends="java.lang.Object" 4838*dc5640d1SHerbert Xue abstract="false" 4839*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 4840*dc5640d1SHerbert Xue deprecated="not deprecated"> 4841*dc5640d1SHerbert Xue <method name="getMember" return="java.lang.reflect.Member" 4842*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4843*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4844*dc5640d1SHerbert Xue deprecated="not deprecated"> 4845*dc5640d1SHerbert Xue <doc> 4846*dc5640d1SHerbert Xue <![CDATA[Returns the injected constructor, field, or method.]]> 4847*dc5640d1SHerbert Xue </doc> 4848*dc5640d1SHerbert Xue </method> 4849*dc5640d1SHerbert Xue <method name="getDependencies" return="java.util.List<com.google.inject.spi.Dependency<?>>" 4850*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4851*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4852*dc5640d1SHerbert Xue deprecated="not deprecated"> 4853*dc5640d1SHerbert Xue <doc> 4854*dc5640d1SHerbert Xue <![CDATA[Returns the dependencies for this injection point. If the injection point is for a method or 4855*dc5640d1SHerbert Xue constructor, the dependencies will correspond to that member's parameters. Field injection 4856*dc5640d1SHerbert Xue points always have a single dependency for the field itself. 4857*dc5640d1SHerbert Xue 4858*dc5640d1SHerbert Xue @return a possibly-empty list]]> 4859*dc5640d1SHerbert Xue </doc> 4860*dc5640d1SHerbert Xue </method> 4861*dc5640d1SHerbert Xue <method name="isOptional" return="boolean" 4862*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4863*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4864*dc5640d1SHerbert Xue deprecated="not deprecated"> 4865*dc5640d1SHerbert Xue <doc> 4866*dc5640d1SHerbert Xue <![CDATA[Returns true if this injection point shall be skipped if the injector cannot resolve bindings 4867*dc5640d1SHerbert Xue for all required dependencies. Both explicit bindings (as specified in a module), and implicit 4868*dc5640d1SHerbert Xue bindings ({@literal @}{@link com.google.inject.ImplementedBy ImplementedBy}, default 4869*dc5640d1SHerbert Xue constructors etc.) may be used to satisfy optional injection points.]]> 4870*dc5640d1SHerbert Xue </doc> 4871*dc5640d1SHerbert Xue </method> 4872*dc5640d1SHerbert Xue <method name="equals" return="boolean" 4873*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4874*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4875*dc5640d1SHerbert Xue deprecated="not deprecated"> 4876*dc5640d1SHerbert Xue <param name="o" type="java.lang.Object"/> 4877*dc5640d1SHerbert Xue </method> 4878*dc5640d1SHerbert Xue <method name="hashCode" return="int" 4879*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4880*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4881*dc5640d1SHerbert Xue deprecated="not deprecated"> 4882*dc5640d1SHerbert Xue </method> 4883*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 4884*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4885*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4886*dc5640d1SHerbert Xue deprecated="not deprecated"> 4887*dc5640d1SHerbert Xue </method> 4888*dc5640d1SHerbert Xue <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint" 4889*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4890*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4891*dc5640d1SHerbert Xue deprecated="not deprecated"> 4892*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<?>"/> 4893*dc5640d1SHerbert Xue <doc> 4894*dc5640d1SHerbert Xue <![CDATA[Returns a new injection point for the injectable constructor of {@code type}. 4895*dc5640d1SHerbert Xue 4896*dc5640d1SHerbert Xue @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject}, 4897*dc5640d1SHerbert Xue or a no-arguments constructor that is not private. 4898*dc5640d1SHerbert Xue @throws ConfigurationException if there is no injectable constructor, more than one injectable 4899*dc5640d1SHerbert Xue constructor, or if parameters of the injectable constructor are malformed, such as a 4900*dc5640d1SHerbert Xue parameter with multiple binding annotations.]]> 4901*dc5640d1SHerbert Xue </doc> 4902*dc5640d1SHerbert Xue </method> 4903*dc5640d1SHerbert Xue <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint" 4904*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4905*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4906*dc5640d1SHerbert Xue deprecated="not deprecated"> 4907*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<?>"/> 4908*dc5640d1SHerbert Xue <doc> 4909*dc5640d1SHerbert Xue <![CDATA[Returns a new injection point for the injectable constructor of {@code type}. 4910*dc5640d1SHerbert Xue 4911*dc5640d1SHerbert Xue @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject}, 4912*dc5640d1SHerbert Xue or a no-arguments constructor that is not private. 4913*dc5640d1SHerbert Xue @throws ConfigurationException if there is no injectable constructor, more than one injectable 4914*dc5640d1SHerbert Xue constructor, or if parameters of the injectable constructor are malformed, such as a 4915*dc5640d1SHerbert Xue parameter with multiple binding annotations.]]> 4916*dc5640d1SHerbert Xue </doc> 4917*dc5640d1SHerbert Xue </method> 4918*dc5640d1SHerbert Xue <method name="forStaticMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 4919*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4920*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4921*dc5640d1SHerbert Xue deprecated="not deprecated"> 4922*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral"/> 4923*dc5640d1SHerbert Xue <doc> 4924*dc5640d1SHerbert Xue <![CDATA[Returns all static method and field injection points on {@code type}. 4925*dc5640d1SHerbert Xue 4926*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All 4927*dc5640d1SHerbert Xue fields are returned and then all methods. Within the fields, supertype fields are returned 4928*dc5640d1SHerbert Xue before subtype fields. Similarly, supertype methods are returned before subtype methods. 4929*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 4930*dc5640d1SHerbert Xue a field with multiple binding annotations. The exception's {@link 4931*dc5640d1SHerbert Xue ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 4932*dc5640d1SHerbert Xue of the valid injection points.]]> 4933*dc5640d1SHerbert Xue </doc> 4934*dc5640d1SHerbert Xue </method> 4935*dc5640d1SHerbert Xue <method name="forStaticMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 4936*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4937*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4938*dc5640d1SHerbert Xue deprecated="not deprecated"> 4939*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<?>"/> 4940*dc5640d1SHerbert Xue <doc> 4941*dc5640d1SHerbert Xue <![CDATA[Returns all static method and field injection points on {@code type}. 4942*dc5640d1SHerbert Xue 4943*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All 4944*dc5640d1SHerbert Xue fields are returned and then all methods. Within the fields, supertype fields are returned 4945*dc5640d1SHerbert Xue before subtype fields. Similarly, supertype methods are returned before subtype methods. 4946*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 4947*dc5640d1SHerbert Xue a field with multiple binding annotations. The exception's {@link 4948*dc5640d1SHerbert Xue ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 4949*dc5640d1SHerbert Xue of the valid injection points.]]> 4950*dc5640d1SHerbert Xue </doc> 4951*dc5640d1SHerbert Xue </method> 4952*dc5640d1SHerbert Xue <method name="forInstanceMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 4953*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4954*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4955*dc5640d1SHerbert Xue deprecated="not deprecated"> 4956*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<?>"/> 4957*dc5640d1SHerbert Xue <doc> 4958*dc5640d1SHerbert Xue <![CDATA[Returns all instance method and field injection points on {@code type}. 4959*dc5640d1SHerbert Xue 4960*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All 4961*dc5640d1SHerbert Xue fields are returned and then all methods. Within the fields, supertype fields are returned 4962*dc5640d1SHerbert Xue before subtype fields. Similarly, supertype methods are returned before subtype methods. 4963*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 4964*dc5640d1SHerbert Xue a field with multiple binding annotations. The exception's {@link 4965*dc5640d1SHerbert Xue ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 4966*dc5640d1SHerbert Xue of the valid injection points.]]> 4967*dc5640d1SHerbert Xue </doc> 4968*dc5640d1SHerbert Xue </method> 4969*dc5640d1SHerbert Xue <method name="forInstanceMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 4970*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4971*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4972*dc5640d1SHerbert Xue deprecated="not deprecated"> 4973*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<?>"/> 4974*dc5640d1SHerbert Xue <doc> 4975*dc5640d1SHerbert Xue <![CDATA[Returns all instance method and field injection points on {@code type}. 4976*dc5640d1SHerbert Xue 4977*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All 4978*dc5640d1SHerbert Xue fields are returned and then all methods. Within the fields, supertype fields are returned 4979*dc5640d1SHerbert Xue before subtype fields. Similarly, supertype methods are returned before subtype methods. 4980*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 4981*dc5640d1SHerbert Xue a field with multiple binding annotations. The exception's {@link 4982*dc5640d1SHerbert Xue ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 4983*dc5640d1SHerbert Xue of the valid injection points.]]> 4984*dc5640d1SHerbert Xue </doc> 4985*dc5640d1SHerbert Xue </method> 4986*dc5640d1SHerbert Xue <doc> 4987*dc5640d1SHerbert Xue <![CDATA[A constructor, field or method that can receive injections. Typically this is a member with the 4988*dc5640d1SHerbert Xue {@literal @}{@link Inject} annotation. For non-private, no argument constructors, the member may 4989*dc5640d1SHerbert Xue omit the annotation. 4990*dc5640d1SHerbert Xue 4991*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 4992*dc5640d1SHerbert Xue @since 2.0]]> 4993*dc5640d1SHerbert Xue </doc> 4994*dc5640d1SHerbert Xue </class> 4995*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.InjectionPoint --> 4996*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.InjectionRequest --> 4997*dc5640d1SHerbert Xue <class name="InjectionRequest" extends="java.lang.Object" 4998*dc5640d1SHerbert Xue abstract="false" 4999*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 5000*dc5640d1SHerbert Xue deprecated="not deprecated"> 5001*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 5002*dc5640d1SHerbert Xue <constructor name="InjectionRequest" type="java.lang.Object, com.google.inject.TypeLiteral<T>, T" 5003*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5004*dc5640d1SHerbert Xue deprecated="not deprecated"> 5005*dc5640d1SHerbert Xue </constructor> 5006*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 5007*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5008*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5009*dc5640d1SHerbert Xue deprecated="not deprecated"> 5010*dc5640d1SHerbert Xue </method> 5011*dc5640d1SHerbert Xue <method name="getInstance" return="T" 5012*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5013*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5014*dc5640d1SHerbert Xue deprecated="not deprecated"> 5015*dc5640d1SHerbert Xue </method> 5016*dc5640d1SHerbert Xue <method name="getType" return="com.google.inject.TypeLiteral<T>" 5017*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5018*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5019*dc5640d1SHerbert Xue deprecated="not deprecated"> 5020*dc5640d1SHerbert Xue </method> 5021*dc5640d1SHerbert Xue <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 5022*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5023*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5024*dc5640d1SHerbert Xue deprecated="not deprecated"> 5025*dc5640d1SHerbert Xue <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/> 5026*dc5640d1SHerbert Xue <doc> 5027*dc5640d1SHerbert Xue <![CDATA[Returns the instance methods and fields of {@code instance} that will be injected to fulfill 5028*dc5640d1SHerbert Xue this request. 5029*dc5640d1SHerbert Xue 5030*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All 5031*dc5640d1SHerbert Xue fields are returned and then all methods. Within the fields, supertype fields are returned 5032*dc5640d1SHerbert Xue before subtype fields. Similarly, supertype methods are returned before subtype methods. 5033*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on the class of {@code 5034*dc5640d1SHerbert Xue instance}, such as a field with multiple binding annotations. The exception's {@link 5035*dc5640d1SHerbert Xue ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 5036*dc5640d1SHerbert Xue of the valid injection points.]]> 5037*dc5640d1SHerbert Xue </doc> 5038*dc5640d1SHerbert Xue </method> 5039*dc5640d1SHerbert Xue <method name="acceptVisitor" return="R" 5040*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5041*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5042*dc5640d1SHerbert Xue deprecated="not deprecated"> 5043*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<R>"/> 5044*dc5640d1SHerbert Xue </method> 5045*dc5640d1SHerbert Xue <method name="applyTo" 5046*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5047*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5048*dc5640d1SHerbert Xue deprecated="not deprecated"> 5049*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5050*dc5640d1SHerbert Xue </method> 5051*dc5640d1SHerbert Xue <doc> 5052*dc5640d1SHerbert Xue <![CDATA[A request to inject the instance fields and methods of an instance. Requests are created 5053*dc5640d1SHerbert Xue explicitly in a module using {@link com.google.inject.Binder#requestInjection(Object) 5054*dc5640d1SHerbert Xue requestInjection()} statements: 5055*dc5640d1SHerbert Xue <pre> 5056*dc5640d1SHerbert Xue requestInjection(serviceInstance);</pre> 5057*dc5640d1SHerbert Xue 5058*dc5640d1SHerbert Xue @author [email protected] (Mike Ward) 5059*dc5640d1SHerbert Xue @since 2.0]]> 5060*dc5640d1SHerbert Xue </doc> 5061*dc5640d1SHerbert Xue </class> 5062*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.InjectionRequest --> 5063*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.InstanceBinding --> 5064*dc5640d1SHerbert Xue <interface name="InstanceBinding" abstract="true" 5065*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5066*dc5640d1SHerbert Xue deprecated="not deprecated"> 5067*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 5068*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 5069*dc5640d1SHerbert Xue <method name="getInstance" return="T" 5070*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5071*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5072*dc5640d1SHerbert Xue deprecated="not deprecated"> 5073*dc5640d1SHerbert Xue <doc> 5074*dc5640d1SHerbert Xue <![CDATA[Returns the user-supplied instance.]]> 5075*dc5640d1SHerbert Xue </doc> 5076*dc5640d1SHerbert Xue </method> 5077*dc5640d1SHerbert Xue <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 5078*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5079*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5080*dc5640d1SHerbert Xue deprecated="not deprecated"> 5081*dc5640d1SHerbert Xue <doc> 5082*dc5640d1SHerbert Xue <![CDATA[Returns the field and method injection points of the instance, injected at injector-creation 5083*dc5640d1SHerbert Xue time only. 5084*dc5640d1SHerbert Xue 5085*dc5640d1SHerbert Xue @return a possibly empty set]]> 5086*dc5640d1SHerbert Xue </doc> 5087*dc5640d1SHerbert Xue </method> 5088*dc5640d1SHerbert Xue <doc> 5089*dc5640d1SHerbert Xue <![CDATA[A binding to a single instance. The same instance is returned for every injection. 5090*dc5640d1SHerbert Xue 5091*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 5092*dc5640d1SHerbert Xue @since 2.0]]> 5093*dc5640d1SHerbert Xue </doc> 5094*dc5640d1SHerbert Xue </interface> 5095*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.InstanceBinding --> 5096*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.InterceptorBinding --> 5097*dc5640d1SHerbert Xue <class name="InterceptorBinding" extends="java.lang.Object" 5098*dc5640d1SHerbert Xue abstract="false" 5099*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 5100*dc5640d1SHerbert Xue deprecated="not deprecated"> 5101*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 5102*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 5103*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5104*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5105*dc5640d1SHerbert Xue deprecated="not deprecated"> 5106*dc5640d1SHerbert Xue </method> 5107*dc5640d1SHerbert Xue <method name="getClassMatcher" return="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>" 5108*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5109*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5110*dc5640d1SHerbert Xue deprecated="not deprecated"> 5111*dc5640d1SHerbert Xue </method> 5112*dc5640d1SHerbert Xue <method name="getMethodMatcher" return="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>" 5113*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5114*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5115*dc5640d1SHerbert Xue deprecated="not deprecated"> 5116*dc5640d1SHerbert Xue </method> 5117*dc5640d1SHerbert Xue <method name="getInterceptors" return="java.util.List<MethodInterceptor>" 5118*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5119*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5120*dc5640d1SHerbert Xue deprecated="not deprecated"> 5121*dc5640d1SHerbert Xue </method> 5122*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 5123*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5124*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5125*dc5640d1SHerbert Xue deprecated="not deprecated"> 5126*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 5127*dc5640d1SHerbert Xue </method> 5128*dc5640d1SHerbert Xue <method name="applyTo" 5129*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5130*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5131*dc5640d1SHerbert Xue deprecated="not deprecated"> 5132*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5133*dc5640d1SHerbert Xue </method> 5134*dc5640d1SHerbert Xue <doc> 5135*dc5640d1SHerbert Xue <![CDATA[Registration of interceptors for matching methods of matching classes. Instances are created 5136*dc5640d1SHerbert Xue explicitly in a module using {@link com.google.inject.Binder#bindInterceptor( 5137*dc5640d1SHerbert Xue Matcher, Matcher, MethodInterceptor[]) bindInterceptor()} statements: 5138*dc5640d1SHerbert Xue <pre> 5139*dc5640d1SHerbert Xue bindInterceptor(Matchers.subclassesOf(MyAction.class), 5140*dc5640d1SHerbert Xue Matchers.annotatedWith(Transactional.class), 5141*dc5640d1SHerbert Xue new MyTransactionInterceptor());</pre> 5142*dc5640d1SHerbert Xue 5143*dc5640d1SHerbert Xue or from an injectable type listener using {@link TypeEncounter#bindInterceptor(Matcher, 5144*dc5640d1SHerbert Xue org.aopalliance.intercept.MethodInterceptor[]) TypeEncounter.bindInterceptor()}. 5145*dc5640d1SHerbert Xue 5146*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 5147*dc5640d1SHerbert Xue @since 2.0]]> 5148*dc5640d1SHerbert Xue </doc> 5149*dc5640d1SHerbert Xue </class> 5150*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.InterceptorBinding --> 5151*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.LinkedKeyBinding --> 5152*dc5640d1SHerbert Xue <interface name="LinkedKeyBinding" abstract="true" 5153*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5154*dc5640d1SHerbert Xue deprecated="not deprecated"> 5155*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 5156*dc5640d1SHerbert Xue <method name="getLinkedKey" return="com.google.inject.Key<? extends T>" 5157*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5158*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5159*dc5640d1SHerbert Xue deprecated="not deprecated"> 5160*dc5640d1SHerbert Xue <doc> 5161*dc5640d1SHerbert Xue <![CDATA[Returns the linked key used to resolve injections. That binding can be retrieved from an 5162*dc5640d1SHerbert Xue injector using {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]> 5163*dc5640d1SHerbert Xue </doc> 5164*dc5640d1SHerbert Xue </method> 5165*dc5640d1SHerbert Xue <doc> 5166*dc5640d1SHerbert Xue <![CDATA[A binding to a linked key. The other key's binding is used to resolve injections. 5167*dc5640d1SHerbert Xue 5168*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 5169*dc5640d1SHerbert Xue @since 2.0]]> 5170*dc5640d1SHerbert Xue </doc> 5171*dc5640d1SHerbert Xue </interface> 5172*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.LinkedKeyBinding --> 5173*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.MembersInjectorLookup --> 5174*dc5640d1SHerbert Xue <class name="MembersInjectorLookup" extends="java.lang.Object" 5175*dc5640d1SHerbert Xue abstract="false" 5176*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 5177*dc5640d1SHerbert Xue deprecated="not deprecated"> 5178*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 5179*dc5640d1SHerbert Xue <constructor name="MembersInjectorLookup" type="java.lang.Object, com.google.inject.TypeLiteral<T>" 5180*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5181*dc5640d1SHerbert Xue deprecated="not deprecated"> 5182*dc5640d1SHerbert Xue </constructor> 5183*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 5184*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5185*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5186*dc5640d1SHerbert Xue deprecated="not deprecated"> 5187*dc5640d1SHerbert Xue </method> 5188*dc5640d1SHerbert Xue <method name="getType" return="com.google.inject.TypeLiteral<T>" 5189*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5190*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5191*dc5640d1SHerbert Xue deprecated="not deprecated"> 5192*dc5640d1SHerbert Xue <doc> 5193*dc5640d1SHerbert Xue <![CDATA[Gets the type containing the members to be injected.]]> 5194*dc5640d1SHerbert Xue </doc> 5195*dc5640d1SHerbert Xue </method> 5196*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 5197*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5198*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5199*dc5640d1SHerbert Xue deprecated="not deprecated"> 5200*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 5201*dc5640d1SHerbert Xue </method> 5202*dc5640d1SHerbert Xue <method name="initializeDelegate" 5203*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5204*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5205*dc5640d1SHerbert Xue deprecated="not deprecated"> 5206*dc5640d1SHerbert Xue <param name="delegate" type="com.google.inject.MembersInjector<T>"/> 5207*dc5640d1SHerbert Xue <doc> 5208*dc5640d1SHerbert Xue <![CDATA[Sets the actual members injector. 5209*dc5640d1SHerbert Xue 5210*dc5640d1SHerbert Xue @throws IllegalStateException if the delegate is already set]]> 5211*dc5640d1SHerbert Xue </doc> 5212*dc5640d1SHerbert Xue </method> 5213*dc5640d1SHerbert Xue <method name="applyTo" 5214*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5215*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5216*dc5640d1SHerbert Xue deprecated="not deprecated"> 5217*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5218*dc5640d1SHerbert Xue </method> 5219*dc5640d1SHerbert Xue <method name="getDelegate" return="com.google.inject.MembersInjector<T>" 5220*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5221*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5222*dc5640d1SHerbert Xue deprecated="not deprecated"> 5223*dc5640d1SHerbert Xue <doc> 5224*dc5640d1SHerbert Xue <![CDATA[Returns the delegate members injector, or {@code null} if it has not yet been initialized. 5225*dc5640d1SHerbert Xue The delegate will be initialized when this element is processed, or otherwise used to create 5226*dc5640d1SHerbert Xue an injector.]]> 5227*dc5640d1SHerbert Xue </doc> 5228*dc5640d1SHerbert Xue </method> 5229*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 5230*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5231*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5232*dc5640d1SHerbert Xue deprecated="not deprecated"> 5233*dc5640d1SHerbert Xue <doc> 5234*dc5640d1SHerbert Xue <![CDATA[Returns the looked up members injector. The result is not valid until this lookup has been 5235*dc5640d1SHerbert Xue initialized, which usually happens when the injector is created. The members injector will 5236*dc5640d1SHerbert Xue throw an {@code IllegalStateException} if you try to use it beforehand.]]> 5237*dc5640d1SHerbert Xue </doc> 5238*dc5640d1SHerbert Xue </method> 5239*dc5640d1SHerbert Xue <doc> 5240*dc5640d1SHerbert Xue <![CDATA[A lookup of the members injector for a type. Lookups are created explicitly in a module using 5241*dc5640d1SHerbert Xue {@link com.google.inject.Binder#getMembersInjector(Class) getMembersInjector()} statements: 5242*dc5640d1SHerbert Xue <pre> 5243*dc5640d1SHerbert Xue MembersInjector<PaymentService> membersInjector 5244*dc5640d1SHerbert Xue = getMembersInjector(PaymentService.class);</pre> 5245*dc5640d1SHerbert Xue 5246*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 5247*dc5640d1SHerbert Xue @since 2.0]]> 5248*dc5640d1SHerbert Xue </doc> 5249*dc5640d1SHerbert Xue </class> 5250*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.MembersInjectorLookup --> 5251*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.Message --> 5252*dc5640d1SHerbert Xue <class name="Message" extends="java.lang.Object" 5253*dc5640d1SHerbert Xue abstract="false" 5254*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 5255*dc5640d1SHerbert Xue deprecated="not deprecated"> 5256*dc5640d1SHerbert Xue <implements name="java.io.Serializable"/> 5257*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 5258*dc5640d1SHerbert Xue <constructor name="Message" type="java.util.List<java.lang.Object>, java.lang.String, java.lang.Throwable" 5259*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5260*dc5640d1SHerbert Xue deprecated="not deprecated"> 5261*dc5640d1SHerbert Xue <doc> 5262*dc5640d1SHerbert Xue <![CDATA[@since 2.0]]> 5263*dc5640d1SHerbert Xue </doc> 5264*dc5640d1SHerbert Xue </constructor> 5265*dc5640d1SHerbert Xue <constructor name="Message" type="java.lang.Object, java.lang.String" 5266*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5267*dc5640d1SHerbert Xue deprecated="not deprecated"> 5268*dc5640d1SHerbert Xue </constructor> 5269*dc5640d1SHerbert Xue <constructor name="Message" type="java.lang.String" 5270*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5271*dc5640d1SHerbert Xue deprecated="not deprecated"> 5272*dc5640d1SHerbert Xue </constructor> 5273*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.String" 5274*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5275*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5276*dc5640d1SHerbert Xue deprecated="not deprecated"> 5277*dc5640d1SHerbert Xue </method> 5278*dc5640d1SHerbert Xue <method name="getSources" return="java.util.List<java.lang.Object>" 5279*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5280*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5281*dc5640d1SHerbert Xue deprecated="not deprecated"> 5282*dc5640d1SHerbert Xue <doc> 5283*dc5640d1SHerbert Xue <![CDATA[@since 2.0]]> 5284*dc5640d1SHerbert Xue </doc> 5285*dc5640d1SHerbert Xue </method> 5286*dc5640d1SHerbert Xue <method name="getMessage" return="java.lang.String" 5287*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5288*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5289*dc5640d1SHerbert Xue deprecated="not deprecated"> 5290*dc5640d1SHerbert Xue <doc> 5291*dc5640d1SHerbert Xue <![CDATA[Gets the error message text.]]> 5292*dc5640d1SHerbert Xue </doc> 5293*dc5640d1SHerbert Xue </method> 5294*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 5295*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5296*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5297*dc5640d1SHerbert Xue deprecated="not deprecated"> 5298*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 5299*dc5640d1SHerbert Xue <doc> 5300*dc5640d1SHerbert Xue <![CDATA[@since 2.0]]> 5301*dc5640d1SHerbert Xue </doc> 5302*dc5640d1SHerbert Xue </method> 5303*dc5640d1SHerbert Xue <method name="getCause" return="java.lang.Throwable" 5304*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5305*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5306*dc5640d1SHerbert Xue deprecated="not deprecated"> 5307*dc5640d1SHerbert Xue <doc> 5308*dc5640d1SHerbert Xue <![CDATA[Returns the throwable that caused this message, or {@code null} if this 5309*dc5640d1SHerbert Xue message was not caused by a throwable. 5310*dc5640d1SHerbert Xue 5311*dc5640d1SHerbert Xue @since 2.0]]> 5312*dc5640d1SHerbert Xue </doc> 5313*dc5640d1SHerbert Xue </method> 5314*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 5315*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5316*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5317*dc5640d1SHerbert Xue deprecated="not deprecated"> 5318*dc5640d1SHerbert Xue </method> 5319*dc5640d1SHerbert Xue <method name="hashCode" return="int" 5320*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5321*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5322*dc5640d1SHerbert Xue deprecated="not deprecated"> 5323*dc5640d1SHerbert Xue </method> 5324*dc5640d1SHerbert Xue <method name="equals" return="boolean" 5325*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5326*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5327*dc5640d1SHerbert Xue deprecated="not deprecated"> 5328*dc5640d1SHerbert Xue <param name="o" type="java.lang.Object"/> 5329*dc5640d1SHerbert Xue </method> 5330*dc5640d1SHerbert Xue <method name="applyTo" 5331*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5332*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5333*dc5640d1SHerbert Xue deprecated="not deprecated"> 5334*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5335*dc5640d1SHerbert Xue <doc> 5336*dc5640d1SHerbert Xue <![CDATA[@since 2.0]]> 5337*dc5640d1SHerbert Xue </doc> 5338*dc5640d1SHerbert Xue </method> 5339*dc5640d1SHerbert Xue <doc> 5340*dc5640d1SHerbert Xue <![CDATA[An error message and the context in which it occured. Messages are usually created internally by 5341*dc5640d1SHerbert Xue Guice and its extensions. Messages can be created explicitly in a module using {@link 5342*dc5640d1SHerbert Xue com.google.inject.Binder#addError(Throwable) addError()} statements: 5343*dc5640d1SHerbert Xue <pre> 5344*dc5640d1SHerbert Xue try { 5345*dc5640d1SHerbert Xue bindPropertiesFromFile(); 5346*dc5640d1SHerbert Xue } catch (IOException e) { 5347*dc5640d1SHerbert Xue addError(e); 5348*dc5640d1SHerbert Xue }</pre> 5349*dc5640d1SHerbert Xue 5350*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 5351*dc5640d1SHerbert Xue </doc> 5352*dc5640d1SHerbert Xue </class> 5353*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.Message --> 5354*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.PrivateElements --> 5355*dc5640d1SHerbert Xue <interface name="PrivateElements" abstract="true" 5356*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5357*dc5640d1SHerbert Xue deprecated="not deprecated"> 5358*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 5359*dc5640d1SHerbert Xue <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 5360*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5361*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5362*dc5640d1SHerbert Xue deprecated="not deprecated"> 5363*dc5640d1SHerbert Xue <doc> 5364*dc5640d1SHerbert Xue <![CDATA[Returns the configuration information in this private environment.]]> 5365*dc5640d1SHerbert Xue </doc> 5366*dc5640d1SHerbert Xue </method> 5367*dc5640d1SHerbert Xue <method name="getInjector" return="com.google.inject.Injector" 5368*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5369*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5370*dc5640d1SHerbert Xue deprecated="not deprecated"> 5371*dc5640d1SHerbert Xue <doc> 5372*dc5640d1SHerbert Xue <![CDATA[Returns the child injector that hosts these private elements, or null if the elements haven't 5373*dc5640d1SHerbert Xue been used to create an injector.]]> 5374*dc5640d1SHerbert Xue </doc> 5375*dc5640d1SHerbert Xue </method> 5376*dc5640d1SHerbert Xue <method name="getExposedKeys" return="java.util.Set<com.google.inject.Key<?>>" 5377*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5378*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5379*dc5640d1SHerbert Xue deprecated="not deprecated"> 5380*dc5640d1SHerbert Xue <doc> 5381*dc5640d1SHerbert Xue <![CDATA[Returns the unique exposed keys for these private elements.]]> 5382*dc5640d1SHerbert Xue </doc> 5383*dc5640d1SHerbert Xue </method> 5384*dc5640d1SHerbert Xue <method name="getExposedSource" return="java.lang.Object" 5385*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5386*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5387*dc5640d1SHerbert Xue deprecated="not deprecated"> 5388*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 5389*dc5640d1SHerbert Xue <doc> 5390*dc5640d1SHerbert Xue <![CDATA[Returns an arbitrary object containing information about the "place" where this key was 5391*dc5640d1SHerbert Xue exposed. Used by Guice in the production of descriptive error messages. 5392*dc5640d1SHerbert Xue 5393*dc5640d1SHerbert Xue <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good 5394*dc5640d1SHerbert Xue example. Tools should simply call {@code toString()} on the source object if the type is 5395*dc5640d1SHerbert Xue unfamiliar. 5396*dc5640d1SHerbert Xue 5397*dc5640d1SHerbert Xue @param key one of the keys exposed by this module.]]> 5398*dc5640d1SHerbert Xue </doc> 5399*dc5640d1SHerbert Xue </method> 5400*dc5640d1SHerbert Xue <doc> 5401*dc5640d1SHerbert Xue <![CDATA[A private collection of elements that are hidden from the enclosing injector or module by 5402*dc5640d1SHerbert Xue default. See {@link com.google.inject.PrivateModule PrivateModule} for details. 5403*dc5640d1SHerbert Xue 5404*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 5405*dc5640d1SHerbert Xue @since 2.0]]> 5406*dc5640d1SHerbert Xue </doc> 5407*dc5640d1SHerbert Xue </interface> 5408*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.PrivateElements --> 5409*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ProviderBinding --> 5410*dc5640d1SHerbert Xue <interface name="ProviderBinding" abstract="true" 5411*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5412*dc5640d1SHerbert Xue deprecated="not deprecated"> 5413*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 5414*dc5640d1SHerbert Xue <method name="getProvidedKey" return="com.google.inject.Key<?>" 5415*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5416*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5417*dc5640d1SHerbert Xue deprecated="not deprecated"> 5418*dc5640d1SHerbert Xue <doc> 5419*dc5640d1SHerbert Xue <![CDATA[Returns the key whose binding is used to {@link Provider#get provide instances}. That binding 5420*dc5640d1SHerbert Xue can be retrieved from an injector using {@link com.google.inject.Injector#getBinding(Key) 5421*dc5640d1SHerbert Xue Injector.getBinding(providedKey)}]]> 5422*dc5640d1SHerbert Xue </doc> 5423*dc5640d1SHerbert Xue </method> 5424*dc5640d1SHerbert Xue <doc> 5425*dc5640d1SHerbert Xue <![CDATA[A binding to a {@link Provider} that delegates to the binding for the provided type. This binding 5426*dc5640d1SHerbert Xue is used whenever a {@code Provider<T>} is injected (as opposed to injecting {@code T} directly). 5427*dc5640d1SHerbert Xue 5428*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 5429*dc5640d1SHerbert Xue @since 2.0]]> 5430*dc5640d1SHerbert Xue </doc> 5431*dc5640d1SHerbert Xue </interface> 5432*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ProviderBinding --> 5433*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ProviderInstanceBinding --> 5434*dc5640d1SHerbert Xue <interface name="ProviderInstanceBinding" abstract="true" 5435*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5436*dc5640d1SHerbert Xue deprecated="not deprecated"> 5437*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 5438*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 5439*dc5640d1SHerbert Xue <method name="getProviderInstance" return="com.google.inject.Provider<? extends T>" 5440*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5441*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5442*dc5640d1SHerbert Xue deprecated="not deprecated"> 5443*dc5640d1SHerbert Xue <doc> 5444*dc5640d1SHerbert Xue <![CDATA[Returns the user-supplied, unscoped provider.]]> 5445*dc5640d1SHerbert Xue </doc> 5446*dc5640d1SHerbert Xue </method> 5447*dc5640d1SHerbert Xue <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 5448*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5449*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5450*dc5640d1SHerbert Xue deprecated="not deprecated"> 5451*dc5640d1SHerbert Xue <doc> 5452*dc5640d1SHerbert Xue <![CDATA[Returns the field and method injection points of the provider, injected at injector-creation 5453*dc5640d1SHerbert Xue time only. 5454*dc5640d1SHerbert Xue 5455*dc5640d1SHerbert Xue @return a possibly empty set]]> 5456*dc5640d1SHerbert Xue </doc> 5457*dc5640d1SHerbert Xue </method> 5458*dc5640d1SHerbert Xue <doc> 5459*dc5640d1SHerbert Xue <![CDATA[A binding to a provider instance. The provider's {@code get} method is invoked to resolve 5460*dc5640d1SHerbert Xue injections. 5461*dc5640d1SHerbert Xue 5462*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 5463*dc5640d1SHerbert Xue @since 2.0]]> 5464*dc5640d1SHerbert Xue </doc> 5465*dc5640d1SHerbert Xue </interface> 5466*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ProviderInstanceBinding --> 5467*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ProviderKeyBinding --> 5468*dc5640d1SHerbert Xue <interface name="ProviderKeyBinding" abstract="true" 5469*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5470*dc5640d1SHerbert Xue deprecated="not deprecated"> 5471*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 5472*dc5640d1SHerbert Xue <method name="getProviderKey" return="com.google.inject.Key<? extends com.google.inject.Provider<? extends T>>" 5473*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5474*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5475*dc5640d1SHerbert Xue deprecated="not deprecated"> 5476*dc5640d1SHerbert Xue <doc> 5477*dc5640d1SHerbert Xue <![CDATA[Returns the key used to resolve the provider's binding. That binding can be retrieved from an 5478*dc5640d1SHerbert Xue injector using {@link com.google.inject.Injector#getBinding(Key) 5479*dc5640d1SHerbert Xue Injector.getBinding(providerKey)}]]> 5480*dc5640d1SHerbert Xue </doc> 5481*dc5640d1SHerbert Xue </method> 5482*dc5640d1SHerbert Xue <doc> 5483*dc5640d1SHerbert Xue <![CDATA[A binding to a provider key. To resolve injections, the provider key is first resolved, then that 5484*dc5640d1SHerbert Xue provider's {@code get} method is invoked. 5485*dc5640d1SHerbert Xue 5486*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 5487*dc5640d1SHerbert Xue @since 2.0]]> 5488*dc5640d1SHerbert Xue </doc> 5489*dc5640d1SHerbert Xue </interface> 5490*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ProviderKeyBinding --> 5491*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.ProviderLookup --> 5492*dc5640d1SHerbert Xue <class name="ProviderLookup" extends="java.lang.Object" 5493*dc5640d1SHerbert Xue abstract="false" 5494*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 5495*dc5640d1SHerbert Xue deprecated="not deprecated"> 5496*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 5497*dc5640d1SHerbert Xue <constructor name="ProviderLookup" type="java.lang.Object, com.google.inject.Key<T>" 5498*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5499*dc5640d1SHerbert Xue deprecated="not deprecated"> 5500*dc5640d1SHerbert Xue </constructor> 5501*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 5502*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5503*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5504*dc5640d1SHerbert Xue deprecated="not deprecated"> 5505*dc5640d1SHerbert Xue </method> 5506*dc5640d1SHerbert Xue <method name="getKey" return="com.google.inject.Key<T>" 5507*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5508*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5509*dc5640d1SHerbert Xue deprecated="not deprecated"> 5510*dc5640d1SHerbert Xue </method> 5511*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 5512*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5513*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5514*dc5640d1SHerbert Xue deprecated="not deprecated"> 5515*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 5516*dc5640d1SHerbert Xue </method> 5517*dc5640d1SHerbert Xue <method name="initializeDelegate" 5518*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5519*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5520*dc5640d1SHerbert Xue deprecated="not deprecated"> 5521*dc5640d1SHerbert Xue <param name="delegate" type="com.google.inject.Provider<T>"/> 5522*dc5640d1SHerbert Xue <doc> 5523*dc5640d1SHerbert Xue <![CDATA[Sets the actual provider. 5524*dc5640d1SHerbert Xue 5525*dc5640d1SHerbert Xue @throws IllegalStateException if the delegate is already set]]> 5526*dc5640d1SHerbert Xue </doc> 5527*dc5640d1SHerbert Xue </method> 5528*dc5640d1SHerbert Xue <method name="applyTo" 5529*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5530*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5531*dc5640d1SHerbert Xue deprecated="not deprecated"> 5532*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5533*dc5640d1SHerbert Xue </method> 5534*dc5640d1SHerbert Xue <method name="getDelegate" return="com.google.inject.Provider<T>" 5535*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5536*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5537*dc5640d1SHerbert Xue deprecated="not deprecated"> 5538*dc5640d1SHerbert Xue <doc> 5539*dc5640d1SHerbert Xue <![CDATA[Returns the delegate provider, or {@code null} if it has not yet been initialized. The delegate 5540*dc5640d1SHerbert Xue will be initialized when this element is processed, or otherwise used to create an injector.]]> 5541*dc5640d1SHerbert Xue </doc> 5542*dc5640d1SHerbert Xue </method> 5543*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 5544*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5545*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5546*dc5640d1SHerbert Xue deprecated="not deprecated"> 5547*dc5640d1SHerbert Xue <doc> 5548*dc5640d1SHerbert Xue <![CDATA[Returns the looked up provider. The result is not valid until this lookup has been initialized, 5549*dc5640d1SHerbert Xue which usually happens when the injector is created. The provider will throw an {@code 5550*dc5640d1SHerbert Xue IllegalStateException} if you try to use it beforehand.]]> 5551*dc5640d1SHerbert Xue </doc> 5552*dc5640d1SHerbert Xue </method> 5553*dc5640d1SHerbert Xue <doc> 5554*dc5640d1SHerbert Xue <![CDATA[A lookup of the provider for a type. Lookups are created explicitly in a module using 5555*dc5640d1SHerbert Xue {@link com.google.inject.Binder#getProvider(Class) getProvider()} statements: 5556*dc5640d1SHerbert Xue <pre> 5557*dc5640d1SHerbert Xue Provider<PaymentService> paymentServiceProvider 5558*dc5640d1SHerbert Xue = getProvider(PaymentService.class);</pre> 5559*dc5640d1SHerbert Xue 5560*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 5561*dc5640d1SHerbert Xue @since 2.0]]> 5562*dc5640d1SHerbert Xue </doc> 5563*dc5640d1SHerbert Xue </class> 5564*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.ProviderLookup --> 5565*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ProviderWithDependencies --> 5566*dc5640d1SHerbert Xue <interface name="ProviderWithDependencies" abstract="true" 5567*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5568*dc5640d1SHerbert Xue deprecated="not deprecated"> 5569*dc5640d1SHerbert Xue <implements name="com.google.inject.Provider<T>"/> 5570*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 5571*dc5640d1SHerbert Xue <doc> 5572*dc5640d1SHerbert Xue <![CDATA[A provider with dependencies on other injected types. If a {@link Provider} has dependencies that 5573*dc5640d1SHerbert Xue aren't specified in injections, this interface should be used to expose all dependencies. 5574*dc5640d1SHerbert Xue 5575*dc5640d1SHerbert Xue @since 2.0]]> 5576*dc5640d1SHerbert Xue </doc> 5577*dc5640d1SHerbert Xue </interface> 5578*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ProviderWithDependencies --> 5579*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.ScopeBinding --> 5580*dc5640d1SHerbert Xue <class name="ScopeBinding" extends="java.lang.Object" 5581*dc5640d1SHerbert Xue abstract="false" 5582*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 5583*dc5640d1SHerbert Xue deprecated="not deprecated"> 5584*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 5585*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 5586*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5587*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5588*dc5640d1SHerbert Xue deprecated="not deprecated"> 5589*dc5640d1SHerbert Xue </method> 5590*dc5640d1SHerbert Xue <method name="getAnnotationType" return="java.lang.Class<? extends java.lang.annotation.Annotation>" 5591*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5592*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5593*dc5640d1SHerbert Xue deprecated="not deprecated"> 5594*dc5640d1SHerbert Xue </method> 5595*dc5640d1SHerbert Xue <method name="getScope" return="com.google.inject.Scope" 5596*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5597*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5598*dc5640d1SHerbert Xue deprecated="not deprecated"> 5599*dc5640d1SHerbert Xue </method> 5600*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 5601*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5602*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5603*dc5640d1SHerbert Xue deprecated="not deprecated"> 5604*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 5605*dc5640d1SHerbert Xue </method> 5606*dc5640d1SHerbert Xue <method name="applyTo" 5607*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5608*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5609*dc5640d1SHerbert Xue deprecated="not deprecated"> 5610*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5611*dc5640d1SHerbert Xue </method> 5612*dc5640d1SHerbert Xue <doc> 5613*dc5640d1SHerbert Xue <![CDATA[Registration of a scope annotation with the scope that implements it. Instances are created 5614*dc5640d1SHerbert Xue explicitly in a module using {@link com.google.inject.Binder#bindScope(Class, Scope) bindScope()} 5615*dc5640d1SHerbert Xue statements: 5616*dc5640d1SHerbert Xue <pre> 5617*dc5640d1SHerbert Xue Scope recordScope = new RecordScope(); 5618*dc5640d1SHerbert Xue bindScope(RecordScoped.class, new RecordScope());</pre> 5619*dc5640d1SHerbert Xue 5620*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 5621*dc5640d1SHerbert Xue @since 2.0]]> 5622*dc5640d1SHerbert Xue </doc> 5623*dc5640d1SHerbert Xue </class> 5624*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.ScopeBinding --> 5625*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.StaticInjectionRequest --> 5626*dc5640d1SHerbert Xue <class name="StaticInjectionRequest" extends="java.lang.Object" 5627*dc5640d1SHerbert Xue abstract="false" 5628*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 5629*dc5640d1SHerbert Xue deprecated="not deprecated"> 5630*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 5631*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 5632*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5633*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5634*dc5640d1SHerbert Xue deprecated="not deprecated"> 5635*dc5640d1SHerbert Xue </method> 5636*dc5640d1SHerbert Xue <method name="getType" return="java.lang.Class<?>" 5637*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5638*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5639*dc5640d1SHerbert Xue deprecated="not deprecated"> 5640*dc5640d1SHerbert Xue </method> 5641*dc5640d1SHerbert Xue <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 5642*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5643*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5644*dc5640d1SHerbert Xue deprecated="not deprecated"> 5645*dc5640d1SHerbert Xue <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/> 5646*dc5640d1SHerbert Xue <doc> 5647*dc5640d1SHerbert Xue <![CDATA[Returns the static methods and fields of {@code type} that will be injected to fulfill this 5648*dc5640d1SHerbert Xue request. 5649*dc5640d1SHerbert Xue 5650*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All 5651*dc5640d1SHerbert Xue fields are returned and then all methods. Within the fields, supertype fields are returned 5652*dc5640d1SHerbert Xue before subtype fields. Similarly, supertype methods are returned before subtype methods. 5653*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 5654*dc5640d1SHerbert Xue a field with multiple binding annotations. The exception's {@link 5655*dc5640d1SHerbert Xue ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 5656*dc5640d1SHerbert Xue of the valid injection points.]]> 5657*dc5640d1SHerbert Xue </doc> 5658*dc5640d1SHerbert Xue </method> 5659*dc5640d1SHerbert Xue <method name="applyTo" 5660*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5661*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5662*dc5640d1SHerbert Xue deprecated="not deprecated"> 5663*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5664*dc5640d1SHerbert Xue </method> 5665*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 5666*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5667*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5668*dc5640d1SHerbert Xue deprecated="not deprecated"> 5669*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 5670*dc5640d1SHerbert Xue </method> 5671*dc5640d1SHerbert Xue <doc> 5672*dc5640d1SHerbert Xue <![CDATA[A request to inject the static fields and methods of a type. Requests are created 5673*dc5640d1SHerbert Xue explicitly in a module using {@link com.google.inject.Binder#requestStaticInjection(Class[]) 5674*dc5640d1SHerbert Xue requestStaticInjection()} statements: 5675*dc5640d1SHerbert Xue <pre> 5676*dc5640d1SHerbert Xue requestStaticInjection(MyLegacyService.class);</pre> 5677*dc5640d1SHerbert Xue 5678*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 5679*dc5640d1SHerbert Xue @since 2.0]]> 5680*dc5640d1SHerbert Xue </doc> 5681*dc5640d1SHerbert Xue </class> 5682*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.StaticInjectionRequest --> 5683*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.TypeConverter --> 5684*dc5640d1SHerbert Xue <interface name="TypeConverter" abstract="true" 5685*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5686*dc5640d1SHerbert Xue deprecated="not deprecated"> 5687*dc5640d1SHerbert Xue <method name="convert" return="java.lang.Object" 5688*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5689*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5690*dc5640d1SHerbert Xue deprecated="not deprecated"> 5691*dc5640d1SHerbert Xue <param name="value" type="java.lang.String"/> 5692*dc5640d1SHerbert Xue <param name="toType" type="com.google.inject.TypeLiteral<?>"/> 5693*dc5640d1SHerbert Xue <doc> 5694*dc5640d1SHerbert Xue <![CDATA[Converts a string value. Throws an exception if a conversion error occurs.]]> 5695*dc5640d1SHerbert Xue </doc> 5696*dc5640d1SHerbert Xue </method> 5697*dc5640d1SHerbert Xue <doc> 5698*dc5640d1SHerbert Xue <![CDATA[Converts constant string values to a different type. 5699*dc5640d1SHerbert Xue 5700*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 5701*dc5640d1SHerbert Xue @since 2.0]]> 5702*dc5640d1SHerbert Xue </doc> 5703*dc5640d1SHerbert Xue </interface> 5704*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.TypeConverter --> 5705*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.TypeConverterBinding --> 5706*dc5640d1SHerbert Xue <class name="TypeConverterBinding" extends="java.lang.Object" 5707*dc5640d1SHerbert Xue abstract="false" 5708*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 5709*dc5640d1SHerbert Xue deprecated="not deprecated"> 5710*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 5711*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 5712*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5713*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5714*dc5640d1SHerbert Xue deprecated="not deprecated"> 5715*dc5640d1SHerbert Xue </method> 5716*dc5640d1SHerbert Xue <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>" 5717*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5718*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5719*dc5640d1SHerbert Xue deprecated="not deprecated"> 5720*dc5640d1SHerbert Xue </method> 5721*dc5640d1SHerbert Xue <method name="getTypeConverter" return="com.google.inject.spi.TypeConverter" 5722*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5723*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5724*dc5640d1SHerbert Xue deprecated="not deprecated"> 5725*dc5640d1SHerbert Xue </method> 5726*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 5727*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5728*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5729*dc5640d1SHerbert Xue deprecated="not deprecated"> 5730*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 5731*dc5640d1SHerbert Xue </method> 5732*dc5640d1SHerbert Xue <method name="applyTo" 5733*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5734*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5735*dc5640d1SHerbert Xue deprecated="not deprecated"> 5736*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5737*dc5640d1SHerbert Xue </method> 5738*dc5640d1SHerbert Xue <doc> 5739*dc5640d1SHerbert Xue <![CDATA[Registration of type converters for matching target types. Instances are created 5740*dc5640d1SHerbert Xue explicitly in a module using {@link com.google.inject.Binder#convertToTypes(Matcher, 5741*dc5640d1SHerbert Xue TypeConverter) convertToTypes()} statements: 5742*dc5640d1SHerbert Xue <pre> 5743*dc5640d1SHerbert Xue convertToTypes(Matchers.only(DateTime.class), new DateTimeConverter());</pre> 5744*dc5640d1SHerbert Xue 5745*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 5746*dc5640d1SHerbert Xue @since 2.0]]> 5747*dc5640d1SHerbert Xue </doc> 5748*dc5640d1SHerbert Xue </class> 5749*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.TypeConverterBinding --> 5750*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.TypeEncounter --> 5751*dc5640d1SHerbert Xue <interface name="TypeEncounter" abstract="true" 5752*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5753*dc5640d1SHerbert Xue deprecated="not deprecated"> 5754*dc5640d1SHerbert Xue <method name="addError" 5755*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5756*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5757*dc5640d1SHerbert Xue deprecated="not deprecated"> 5758*dc5640d1SHerbert Xue <param name="message" type="java.lang.String"/> 5759*dc5640d1SHerbert Xue <param name="arguments" type="java.lang.Object[]"/> 5760*dc5640d1SHerbert Xue <doc> 5761*dc5640d1SHerbert Xue <![CDATA[Records an error message for type {@code I} which will be presented to the user at a later 5762*dc5640d1SHerbert Xue time. Unlike throwing an exception, this enable us to continue configuring the Injector and 5763*dc5640d1SHerbert Xue discover more errors. Uses {@link String#format(String, Object[])} to insert the arguments 5764*dc5640d1SHerbert Xue into the message.]]> 5765*dc5640d1SHerbert Xue </doc> 5766*dc5640d1SHerbert Xue </method> 5767*dc5640d1SHerbert Xue <method name="addError" 5768*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5769*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5770*dc5640d1SHerbert Xue deprecated="not deprecated"> 5771*dc5640d1SHerbert Xue <param name="t" type="java.lang.Throwable"/> 5772*dc5640d1SHerbert Xue <doc> 5773*dc5640d1SHerbert Xue <![CDATA[Records an exception for type {@code I}, the full details of which will be logged, and the 5774*dc5640d1SHerbert Xue message of which will be presented to the user at a later time. If your type listener calls 5775*dc5640d1SHerbert Xue something that you worry may fail, you should catch the exception and pass it to this method.]]> 5776*dc5640d1SHerbert Xue </doc> 5777*dc5640d1SHerbert Xue </method> 5778*dc5640d1SHerbert Xue <method name="addError" 5779*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5780*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5781*dc5640d1SHerbert Xue deprecated="not deprecated"> 5782*dc5640d1SHerbert Xue <param name="message" type="com.google.inject.spi.Message"/> 5783*dc5640d1SHerbert Xue <doc> 5784*dc5640d1SHerbert Xue <![CDATA[Records an error message to be presented to the user at a later time.]]> 5785*dc5640d1SHerbert Xue </doc> 5786*dc5640d1SHerbert Xue </method> 5787*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 5788*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5789*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5790*dc5640d1SHerbert Xue deprecated="not deprecated"> 5791*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 5792*dc5640d1SHerbert Xue <doc> 5793*dc5640d1SHerbert Xue <![CDATA[Returns the provider used to obtain instances for the given injection key. The returned 5794*dc5640d1SHerbert Xue provider will not be valid until the injector has been created. The provider will throw an 5795*dc5640d1SHerbert Xue {@code IllegalStateException} if you try to use it beforehand.]]> 5796*dc5640d1SHerbert Xue </doc> 5797*dc5640d1SHerbert Xue </method> 5798*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 5799*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5800*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5801*dc5640d1SHerbert Xue deprecated="not deprecated"> 5802*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 5803*dc5640d1SHerbert Xue <doc> 5804*dc5640d1SHerbert Xue <![CDATA[Returns the provider used to obtain instances for the given injection type. The returned 5805*dc5640d1SHerbert Xue provider will not be valid until the injetor has been created. The provider will throw an 5806*dc5640d1SHerbert Xue {@code IllegalStateException} if you try to use it beforehand.]]> 5807*dc5640d1SHerbert Xue </doc> 5808*dc5640d1SHerbert Xue </method> 5809*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 5810*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5811*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5812*dc5640d1SHerbert Xue deprecated="not deprecated"> 5813*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 5814*dc5640d1SHerbert Xue <doc> 5815*dc5640d1SHerbert Xue <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 5816*dc5640d1SHerbert Xue of the given type {@code T}. The returned members injector will not be valid until the main 5817*dc5640d1SHerbert Xue injector has been created. The members injector will throw an {@code IllegalStateException} 5818*dc5640d1SHerbert Xue if you try to use it beforehand. 5819*dc5640d1SHerbert Xue 5820*dc5640d1SHerbert Xue @param typeLiteral type to get members injector for]]> 5821*dc5640d1SHerbert Xue </doc> 5822*dc5640d1SHerbert Xue </method> 5823*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 5824*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5825*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5826*dc5640d1SHerbert Xue deprecated="not deprecated"> 5827*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 5828*dc5640d1SHerbert Xue <doc> 5829*dc5640d1SHerbert Xue <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 5830*dc5640d1SHerbert Xue of the given type {@code T}. The returned members injector will not be valid until the main 5831*dc5640d1SHerbert Xue injector has been created. The members injector will throw an {@code IllegalStateException} 5832*dc5640d1SHerbert Xue if you try to use it beforehand. 5833*dc5640d1SHerbert Xue 5834*dc5640d1SHerbert Xue @param type type to get members injector for]]> 5835*dc5640d1SHerbert Xue </doc> 5836*dc5640d1SHerbert Xue </method> 5837*dc5640d1SHerbert Xue <method name="register" 5838*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5839*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5840*dc5640d1SHerbert Xue deprecated="not deprecated"> 5841*dc5640d1SHerbert Xue <param name="membersInjector" type="com.google.inject.MembersInjector<? super I>"/> 5842*dc5640d1SHerbert Xue <doc> 5843*dc5640d1SHerbert Xue <![CDATA[Registers a members injector for type {@code I}. Guice will use the members injector after its 5844*dc5640d1SHerbert Xue performed its own injections on an instance of {@code I}.]]> 5845*dc5640d1SHerbert Xue </doc> 5846*dc5640d1SHerbert Xue </method> 5847*dc5640d1SHerbert Xue <method name="register" 5848*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5849*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5850*dc5640d1SHerbert Xue deprecated="not deprecated"> 5851*dc5640d1SHerbert Xue <param name="listener" type="com.google.inject.spi.InjectionListener<? super I>"/> 5852*dc5640d1SHerbert Xue <doc> 5853*dc5640d1SHerbert Xue <![CDATA[Registers an injection listener for type {@code I}. Guice will notify the listener after all 5854*dc5640d1SHerbert Xue injections have been performed on an instance of {@code I}.]]> 5855*dc5640d1SHerbert Xue </doc> 5856*dc5640d1SHerbert Xue </method> 5857*dc5640d1SHerbert Xue <method name="bindInterceptor" 5858*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5859*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5860*dc5640d1SHerbert Xue deprecated="not deprecated"> 5861*dc5640d1SHerbert Xue <param name="methodMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>"/> 5862*dc5640d1SHerbert Xue <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/> 5863*dc5640d1SHerbert Xue <doc> 5864*dc5640d1SHerbert Xue <![CDATA[Binds method interceptor[s] to methods matched in type {@code I} and its supertypes. A 5865*dc5640d1SHerbert Xue method is eligible for interception if: 5866*dc5640d1SHerbert Xue 5867*dc5640d1SHerbert Xue <ul> 5868*dc5640d1SHerbert Xue <li>Guice created the instance the method is on</li> 5869*dc5640d1SHerbert Xue <li>Neither the enclosing type nor the method is final</li> 5870*dc5640d1SHerbert Xue <li>And the method is package-private or more accessible</li> 5871*dc5640d1SHerbert Xue </ul> 5872*dc5640d1SHerbert Xue 5873*dc5640d1SHerbert Xue @param methodMatcher matches methods the interceptor should apply to. For 5874*dc5640d1SHerbert Xue example: {@code annotatedWith(Transactional.class)}. 5875*dc5640d1SHerbert Xue @param interceptors to bind]]> 5876*dc5640d1SHerbert Xue </doc> 5877*dc5640d1SHerbert Xue </method> 5878*dc5640d1SHerbert Xue <doc> 5879*dc5640d1SHerbert Xue <![CDATA[Context of an injectable type encounter. Enables reporting errors, registering injection 5880*dc5640d1SHerbert Xue listeners and binding method interceptors for injectable type {@code I}. It is an error to use 5881*dc5640d1SHerbert Xue an encounter after the {@link TypeListener#hear(TypeLiteral, TypeEncounter) hear()} method has 5882*dc5640d1SHerbert Xue returned. 5883*dc5640d1SHerbert Xue 5884*dc5640d1SHerbert Xue @param <I> the injectable type encountered 5885*dc5640d1SHerbert Xue @since 2.0]]> 5886*dc5640d1SHerbert Xue </doc> 5887*dc5640d1SHerbert Xue </interface> 5888*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.TypeEncounter --> 5889*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.TypeListener --> 5890*dc5640d1SHerbert Xue <interface name="TypeListener" abstract="true" 5891*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5892*dc5640d1SHerbert Xue deprecated="not deprecated"> 5893*dc5640d1SHerbert Xue <method name="hear" 5894*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5895*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5896*dc5640d1SHerbert Xue deprecated="not deprecated"> 5897*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<I>"/> 5898*dc5640d1SHerbert Xue <param name="encounter" type="com.google.inject.spi.TypeEncounter<I>"/> 5899*dc5640d1SHerbert Xue <doc> 5900*dc5640d1SHerbert Xue <![CDATA[Invoked when Guice encounters a new type eligible for constructor or members injection. 5901*dc5640d1SHerbert Xue Called during injector creation (or afterwords if Guice encounters a type at run time and 5902*dc5640d1SHerbert Xue creates a JIT binding). 5903*dc5640d1SHerbert Xue 5904*dc5640d1SHerbert Xue @param type encountered by Guice 5905*dc5640d1SHerbert Xue @param encounter context of this encounter, enables reporting errors, registering injection 5906*dc5640d1SHerbert Xue listeners and binding method interceptors for {@code type}. 5907*dc5640d1SHerbert Xue 5908*dc5640d1SHerbert Xue @param <I> the injectable type]]> 5909*dc5640d1SHerbert Xue </doc> 5910*dc5640d1SHerbert Xue </method> 5911*dc5640d1SHerbert Xue <doc> 5912*dc5640d1SHerbert Xue <![CDATA[Listens for Guice to encounter injectable types. If a given type has its constructor injected in 5913*dc5640d1SHerbert Xue one situation but only its methods and fields injected in another, Guice will notify this 5914*dc5640d1SHerbert Xue listener once. 5915*dc5640d1SHerbert Xue 5916*dc5640d1SHerbert Xue <p>Useful for extra type checking, {@linkplain TypeEncounter#register(InjectionListener) 5917*dc5640d1SHerbert Xue registering injection listeners}, and {@linkplain TypeEncounter#bindInterceptor( 5918*dc5640d1SHerbert Xue com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[]) 5919*dc5640d1SHerbert Xue binding method interceptors}. 5920*dc5640d1SHerbert Xue 5921*dc5640d1SHerbert Xue @since 2.0]]> 5922*dc5640d1SHerbert Xue </doc> 5923*dc5640d1SHerbert Xue </interface> 5924*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.TypeListener --> 5925*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.TypeListenerBinding --> 5926*dc5640d1SHerbert Xue <class name="TypeListenerBinding" extends="java.lang.Object" 5927*dc5640d1SHerbert Xue abstract="false" 5928*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 5929*dc5640d1SHerbert Xue deprecated="not deprecated"> 5930*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 5931*dc5640d1SHerbert Xue <method name="getListener" return="com.google.inject.spi.TypeListener" 5932*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5933*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5934*dc5640d1SHerbert Xue deprecated="not deprecated"> 5935*dc5640d1SHerbert Xue <doc> 5936*dc5640d1SHerbert Xue <![CDATA[Returns the registered listener.]]> 5937*dc5640d1SHerbert Xue </doc> 5938*dc5640d1SHerbert Xue </method> 5939*dc5640d1SHerbert Xue <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>" 5940*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5941*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5942*dc5640d1SHerbert Xue deprecated="not deprecated"> 5943*dc5640d1SHerbert Xue <doc> 5944*dc5640d1SHerbert Xue <![CDATA[Returns the type matcher which chooses which types the listener should be notified of.]]> 5945*dc5640d1SHerbert Xue </doc> 5946*dc5640d1SHerbert Xue </method> 5947*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 5948*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5949*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5950*dc5640d1SHerbert Xue deprecated="not deprecated"> 5951*dc5640d1SHerbert Xue </method> 5952*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 5953*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5954*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5955*dc5640d1SHerbert Xue deprecated="not deprecated"> 5956*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 5957*dc5640d1SHerbert Xue </method> 5958*dc5640d1SHerbert Xue <method name="applyTo" 5959*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5960*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5961*dc5640d1SHerbert Xue deprecated="not deprecated"> 5962*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5963*dc5640d1SHerbert Xue </method> 5964*dc5640d1SHerbert Xue <doc> 5965*dc5640d1SHerbert Xue <![CDATA[Binds types (picked using a Matcher) to an type listener. Registrations are created explicitly in 5966*dc5640d1SHerbert Xue a module using {@link com.google.inject.Binder#bindListener(Matcher, TypeListener)} statements: 5967*dc5640d1SHerbert Xue 5968*dc5640d1SHerbert Xue <pre> 5969*dc5640d1SHerbert Xue register(only(new TypeLiteral<PaymentService<CreditCard>>() {}), listener);</pre> 5970*dc5640d1SHerbert Xue 5971*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 5972*dc5640d1SHerbert Xue @since 2.0]]> 5973*dc5640d1SHerbert Xue </doc> 5974*dc5640d1SHerbert Xue </class> 5975*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.TypeListenerBinding --> 5976*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.UntargettedBinding --> 5977*dc5640d1SHerbert Xue <interface name="UntargettedBinding" abstract="true" 5978*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5979*dc5640d1SHerbert Xue deprecated="not deprecated"> 5980*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 5981*dc5640d1SHerbert Xue <doc> 5982*dc5640d1SHerbert Xue <![CDATA[An untargetted binding. This binding indicates that the injector should use its implicit binding 5983*dc5640d1SHerbert Xue strategies to resolve injections. 5984*dc5640d1SHerbert Xue 5985*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 5986*dc5640d1SHerbert Xue @since 2.0]]> 5987*dc5640d1SHerbert Xue </doc> 5988*dc5640d1SHerbert Xue </interface> 5989*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.UntargettedBinding --> 5990*dc5640d1SHerbert Xue</package> 5991*dc5640d1SHerbert Xue<package name="com.google.inject.spring"> 5992*dc5640d1SHerbert Xue <!-- start class com.google.inject.spring.SpringIntegration --> 5993*dc5640d1SHerbert Xue <class name="SpringIntegration" extends="java.lang.Object" 5994*dc5640d1SHerbert Xue abstract="false" 5995*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5996*dc5640d1SHerbert Xue deprecated="not deprecated"> 5997*dc5640d1SHerbert Xue <method name="fromSpring" return="com.google.inject.Provider<T>" 5998*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5999*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6000*dc5640d1SHerbert Xue deprecated="not deprecated"> 6001*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 6002*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 6003*dc5640d1SHerbert Xue <doc> 6004*dc5640d1SHerbert Xue <![CDATA[Creates a provider which looks up objects from Spring using the given name. 6005*dc5640d1SHerbert Xue Expects a binding to {@link 6006*dc5640d1SHerbert Xue org.springframework.beans.factory.BeanFactory}. Example usage: 6007*dc5640d1SHerbert Xue 6008*dc5640d1SHerbert Xue <pre> 6009*dc5640d1SHerbert Xue bind(DataSource.class) 6010*dc5640d1SHerbert Xue .toProvider(fromSpring(DataSource.class, "dataSource")); 6011*dc5640d1SHerbert Xue </pre>]]> 6012*dc5640d1SHerbert Xue </doc> 6013*dc5640d1SHerbert Xue </method> 6014*dc5640d1SHerbert Xue <method name="bindAll" 6015*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6016*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6017*dc5640d1SHerbert Xue deprecated="not deprecated"> 6018*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 6019*dc5640d1SHerbert Xue <param name="beanFactory" type="ListableBeanFactory"/> 6020*dc5640d1SHerbert Xue <doc> 6021*dc5640d1SHerbert Xue <![CDATA[Binds all Spring beans from the given factory by name. For a Spring bean 6022*dc5640d1SHerbert Xue named "foo", this method creates a binding to the bean's type and 6023*dc5640d1SHerbert Xue {@code @Named("foo")}. 6024*dc5640d1SHerbert Xue 6025*dc5640d1SHerbert Xue @see com.google.inject.name.Named 6026*dc5640d1SHerbert Xue @see com.google.inject.name.Names#named(String)]]> 6027*dc5640d1SHerbert Xue </doc> 6028*dc5640d1SHerbert Xue </method> 6029*dc5640d1SHerbert Xue <doc> 6030*dc5640d1SHerbert Xue <![CDATA[Integrates Guice with Spring. 6031*dc5640d1SHerbert Xue 6032*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 6033*dc5640d1SHerbert Xue </doc> 6034*dc5640d1SHerbert Xue </class> 6035*dc5640d1SHerbert Xue <!-- end class com.google.inject.spring.SpringIntegration --> 6036*dc5640d1SHerbert Xue</package> 6037*dc5640d1SHerbert Xue<package name="com.google.inject.struts2"> 6038*dc5640d1SHerbert Xue <!-- start class com.google.inject.struts2.GuiceObjectFactory --> 6039*dc5640d1SHerbert Xue <class name="GuiceObjectFactory" extends="ObjectFactory" 6040*dc5640d1SHerbert Xue abstract="false" 6041*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6042*dc5640d1SHerbert Xue deprecated="not deprecated"> 6043*dc5640d1SHerbert Xue <constructor name="GuiceObjectFactory" 6044*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6045*dc5640d1SHerbert Xue deprecated="not deprecated"> 6046*dc5640d1SHerbert Xue </constructor> 6047*dc5640d1SHerbert Xue <method name="isNoArgConstructorRequired" return="boolean" 6048*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6049*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6050*dc5640d1SHerbert Xue deprecated="not deprecated"> 6051*dc5640d1SHerbert Xue </method> 6052*dc5640d1SHerbert Xue <method name="getClassInstance" return="java.lang.Class" 6053*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6054*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6055*dc5640d1SHerbert Xue deprecated="not deprecated"> 6056*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 6057*dc5640d1SHerbert Xue <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/> 6058*dc5640d1SHerbert Xue </method> 6059*dc5640d1SHerbert Xue <method name="buildBean" return="java.lang.Object" 6060*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6061*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6062*dc5640d1SHerbert Xue deprecated="not deprecated"> 6063*dc5640d1SHerbert Xue <param name="clazz" type="java.lang.Class"/> 6064*dc5640d1SHerbert Xue <param name="extraContext" type="java.util.Map"/> 6065*dc5640d1SHerbert Xue </method> 6066*dc5640d1SHerbert Xue <method name="buildInterceptor" return="Interceptor" 6067*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6068*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6069*dc5640d1SHerbert Xue deprecated="not deprecated"> 6070*dc5640d1SHerbert Xue <param name="interceptorConfig" type="InterceptorConfig"/> 6071*dc5640d1SHerbert Xue <param name="interceptorRefParams" type="java.util.Map"/> 6072*dc5640d1SHerbert Xue <exception name="ConfigurationException" type="ConfigurationException"/> 6073*dc5640d1SHerbert Xue </method> 6074*dc5640d1SHerbert Xue </class> 6075*dc5640d1SHerbert Xue <!-- end class com.google.inject.struts2.GuiceObjectFactory --> 6076*dc5640d1SHerbert Xue</package> 6077*dc5640d1SHerbert Xue<package name="com.google.inject.throwingproviders"> 6078*dc5640d1SHerbert Xue <!-- start interface com.google.inject.throwingproviders.ThrowingProvider --> 6079*dc5640d1SHerbert Xue <interface name="ThrowingProvider" abstract="true" 6080*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6081*dc5640d1SHerbert Xue deprecated="not deprecated"> 6082*dc5640d1SHerbert Xue <method name="get" return="T" 6083*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6084*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6085*dc5640d1SHerbert Xue deprecated="not deprecated"> 6086*dc5640d1SHerbert Xue <exception name="Exception" type="java.lang.Exception"/> 6087*dc5640d1SHerbert Xue </method> 6088*dc5640d1SHerbert Xue <doc> 6089*dc5640d1SHerbert Xue <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws 6090*dc5640d1SHerbert Xue a checked Exception. Users may not inject {@code T} directly. 6091*dc5640d1SHerbert Xue 6092*dc5640d1SHerbert Xue <p>This interface must be extended to use application-specific exception types. 6093*dc5640d1SHerbert Xue Such subinterfaces may not define new methods: 6094*dc5640d1SHerbert Xue <pre> 6095*dc5640d1SHerbert Xue public interface RemoteProvider<T> extends ThrowingProvider<T, RemoteException> { } 6096*dc5640d1SHerbert Xue </pre> 6097*dc5640d1SHerbert Xue 6098*dc5640d1SHerbert Xue <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned 6099*dc5640d1SHerbert Xue or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get} 6100*dc5640d1SHerbert Xue will invoked at most once within each scope. 6101*dc5640d1SHerbert Xue 6102*dc5640d1SHerbert Xue @author [email protected] (Jerome Mourits) 6103*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]> 6104*dc5640d1SHerbert Xue </doc> 6105*dc5640d1SHerbert Xue </interface> 6106*dc5640d1SHerbert Xue <!-- end interface com.google.inject.throwingproviders.ThrowingProvider --> 6107*dc5640d1SHerbert Xue <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder --> 6108*dc5640d1SHerbert Xue <class name="ThrowingProviderBinder" extends="java.lang.Object" 6109*dc5640d1SHerbert Xue abstract="false" 6110*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6111*dc5640d1SHerbert Xue deprecated="not deprecated"> 6112*dc5640d1SHerbert Xue <method name="create" return="com.google.inject.throwingproviders.ThrowingProviderBinder" 6113*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6114*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6115*dc5640d1SHerbert Xue deprecated="not deprecated"> 6116*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 6117*dc5640d1SHerbert Xue </method> 6118*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P>" 6119*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6120*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6121*dc5640d1SHerbert Xue deprecated="not deprecated"> 6122*dc5640d1SHerbert Xue <param name="interfaceType" type="java.lang.Class<P>"/> 6123*dc5640d1SHerbert Xue <param name="valueType" type="java.lang.reflect.Type"/> 6124*dc5640d1SHerbert Xue </method> 6125*dc5640d1SHerbert Xue <doc> 6126*dc5640d1SHerbert Xue <![CDATA[<p>Builds a binding for a {@link ThrowingProvider} using a fluent API: 6127*dc5640d1SHerbert Xue <pre><code>ThrowingProviderBinder.create(binder()) 6128*dc5640d1SHerbert Xue .bind(RemoteProvider.class, Customer.class) 6129*dc5640d1SHerbert Xue .to(RemoteCustomerProvider.class) 6130*dc5640d1SHerbert Xue .in(RequestScope.class); 6131*dc5640d1SHerbert Xue </code></pre> 6132*dc5640d1SHerbert Xue 6133*dc5640d1SHerbert Xue @author [email protected] (Jerome Mourits) 6134*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]> 6135*dc5640d1SHerbert Xue </doc> 6136*dc5640d1SHerbert Xue </class> 6137*dc5640d1SHerbert Xue <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder --> 6138*dc5640d1SHerbert Xue <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder --> 6139*dc5640d1SHerbert Xue <class name="ThrowingProviderBinder.SecondaryBinder" extends="java.lang.Object" 6140*dc5640d1SHerbert Xue abstract="false" 6141*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6142*dc5640d1SHerbert Xue deprecated="not deprecated"> 6143*dc5640d1SHerbert Xue <constructor name="ThrowingProviderBinder.SecondaryBinder" type="java.lang.Class<P>, java.lang.reflect.Type" 6144*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6145*dc5640d1SHerbert Xue deprecated="not deprecated"> 6146*dc5640d1SHerbert Xue </constructor> 6147*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P>" 6148*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6149*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6150*dc5640d1SHerbert Xue deprecated="not deprecated"> 6151*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 6152*dc5640d1SHerbert Xue </method> 6153*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P>" 6154*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6155*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6156*dc5640d1SHerbert Xue deprecated="not deprecated"> 6157*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 6158*dc5640d1SHerbert Xue </method> 6159*dc5640d1SHerbert Xue <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 6160*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6161*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6162*dc5640d1SHerbert Xue deprecated="not deprecated"> 6163*dc5640d1SHerbert Xue <param name="target" type="P extends com.google.inject.throwingproviders.ThrowingProvider"/> 6164*dc5640d1SHerbert Xue </method> 6165*dc5640d1SHerbert Xue <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 6166*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6167*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6168*dc5640d1SHerbert Xue deprecated="not deprecated"> 6169*dc5640d1SHerbert Xue <param name="targetType" type="java.lang.Class<? extends P>"/> 6170*dc5640d1SHerbert Xue </method> 6171*dc5640d1SHerbert Xue <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 6172*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6173*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6174*dc5640d1SHerbert Xue deprecated="not deprecated"> 6175*dc5640d1SHerbert Xue <param name="targetKey" type="com.google.inject.Key<? extends P>"/> 6176*dc5640d1SHerbert Xue </method> 6177*dc5640d1SHerbert Xue </class> 6178*dc5640d1SHerbert Xue <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder --> 6179*dc5640d1SHerbert Xue</package> 6180*dc5640d1SHerbert Xue<package name="com.google.inject.tools.jmx"> 6181*dc5640d1SHerbert Xue <!-- start interface com.google.inject.tools.jmx.ManagedBindingMBean --> 6182*dc5640d1SHerbert Xue <interface name="ManagedBindingMBean" abstract="true" 6183*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6184*dc5640d1SHerbert Xue deprecated="not deprecated"> 6185*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.String" 6186*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6187*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6188*dc5640d1SHerbert Xue deprecated="not deprecated"> 6189*dc5640d1SHerbert Xue <doc> 6190*dc5640d1SHerbert Xue <![CDATA[Gets the source of this binding.]]> 6191*dc5640d1SHerbert Xue </doc> 6192*dc5640d1SHerbert Xue </method> 6193*dc5640d1SHerbert Xue <method name="getProvider" return="java.lang.String" 6194*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6195*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6196*dc5640d1SHerbert Xue deprecated="not deprecated"> 6197*dc5640d1SHerbert Xue <doc> 6198*dc5640d1SHerbert Xue <![CDATA[Gets the provider to which this binding is bound.]]> 6199*dc5640d1SHerbert Xue </doc> 6200*dc5640d1SHerbert Xue </method> 6201*dc5640d1SHerbert Xue <method name="getKey" return="java.lang.String" 6202*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6203*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6204*dc5640d1SHerbert Xue deprecated="not deprecated"> 6205*dc5640d1SHerbert Xue <doc> 6206*dc5640d1SHerbert Xue <![CDATA[Gets the binding key.]]> 6207*dc5640d1SHerbert Xue </doc> 6208*dc5640d1SHerbert Xue </method> 6209*dc5640d1SHerbert Xue <doc> 6210*dc5640d1SHerbert Xue <![CDATA[JMX interface to bindings. 6211*dc5640d1SHerbert Xue 6212*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 6213*dc5640d1SHerbert Xue </doc> 6214*dc5640d1SHerbert Xue </interface> 6215*dc5640d1SHerbert Xue <!-- end interface com.google.inject.tools.jmx.ManagedBindingMBean --> 6216*dc5640d1SHerbert Xue <!-- start class com.google.inject.tools.jmx.Manager --> 6217*dc5640d1SHerbert Xue <class name="Manager" extends="java.lang.Object" 6218*dc5640d1SHerbert Xue abstract="false" 6219*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6220*dc5640d1SHerbert Xue deprecated="not deprecated"> 6221*dc5640d1SHerbert Xue <constructor name="Manager" 6222*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6223*dc5640d1SHerbert Xue deprecated="not deprecated"> 6224*dc5640d1SHerbert Xue </constructor> 6225*dc5640d1SHerbert Xue <method name="manage" 6226*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6227*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6228*dc5640d1SHerbert Xue deprecated="not deprecated"> 6229*dc5640d1SHerbert Xue <param name="domain" type="java.lang.String"/> 6230*dc5640d1SHerbert Xue <param name="injector" type="com.google.inject.Injector"/> 6231*dc5640d1SHerbert Xue <doc> 6232*dc5640d1SHerbert Xue <![CDATA[Registers all the bindings of an Injector with the platform MBean server. 6233*dc5640d1SHerbert Xue Consider using the name of your root {@link Module} class as the domain.]]> 6234*dc5640d1SHerbert Xue </doc> 6235*dc5640d1SHerbert Xue </method> 6236*dc5640d1SHerbert Xue <method name="manage" 6237*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6238*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6239*dc5640d1SHerbert Xue deprecated="not deprecated"> 6240*dc5640d1SHerbert Xue <param name="server" type="javax.management.MBeanServer"/> 6241*dc5640d1SHerbert Xue <param name="domain" type="java.lang.String"/> 6242*dc5640d1SHerbert Xue <param name="injector" type="com.google.inject.Injector"/> 6243*dc5640d1SHerbert Xue <doc> 6244*dc5640d1SHerbert Xue <![CDATA[Registers all the bindings of an Injector with the given MBean server. 6245*dc5640d1SHerbert Xue Consider using the name of your root {@link Module} class as the domain.]]> 6246*dc5640d1SHerbert Xue </doc> 6247*dc5640d1SHerbert Xue </method> 6248*dc5640d1SHerbert Xue <method name="main" 6249*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6250*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6251*dc5640d1SHerbert Xue deprecated="not deprecated"> 6252*dc5640d1SHerbert Xue <param name="args" type="java.lang.String[]"/> 6253*dc5640d1SHerbert Xue <exception name="Exception" type="java.lang.Exception"/> 6254*dc5640d1SHerbert Xue <doc> 6255*dc5640d1SHerbert Xue <![CDATA[Run with no arguments for usage instructions.]]> 6256*dc5640d1SHerbert Xue </doc> 6257*dc5640d1SHerbert Xue </method> 6258*dc5640d1SHerbert Xue <doc> 6259*dc5640d1SHerbert Xue <![CDATA[Provides a JMX interface to Guice. 6260*dc5640d1SHerbert Xue 6261*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 6262*dc5640d1SHerbert Xue </doc> 6263*dc5640d1SHerbert Xue </class> 6264*dc5640d1SHerbert Xue <!-- end class com.google.inject.tools.jmx.Manager --> 6265*dc5640d1SHerbert Xue</package> 6266*dc5640d1SHerbert Xue<package name="com.google.inject.util"> 6267*dc5640d1SHerbert Xue <!-- start class com.google.inject.util.Modules --> 6268*dc5640d1SHerbert Xue <class name="Modules" extends="java.lang.Object" 6269*dc5640d1SHerbert Xue abstract="false" 6270*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 6271*dc5640d1SHerbert Xue deprecated="not deprecated"> 6272*dc5640d1SHerbert Xue <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder" 6273*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6274*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6275*dc5640d1SHerbert Xue deprecated="not deprecated"> 6276*dc5640d1SHerbert Xue <param name="modules" type="com.google.inject.Module[]"/> 6277*dc5640d1SHerbert Xue <doc> 6278*dc5640d1SHerbert Xue <![CDATA[Returns a builder that creates a module that overlays override modules over the given 6279*dc5640d1SHerbert Xue modules. If a key is bound in both sets of modules, only the binding from the override modules 6280*dc5640d1SHerbert Xue is kept. This can be used to replace the bindings of a production module with test bindings: 6281*dc5640d1SHerbert Xue <pre> 6282*dc5640d1SHerbert Xue Module functionalTestModule 6283*dc5640d1SHerbert Xue = Modules.override(new ProductionModule()).with(new TestModule()); 6284*dc5640d1SHerbert Xue </pre> 6285*dc5640d1SHerbert Xue 6286*dc5640d1SHerbert Xue <p>Prefer to write smaller modules that can be reused and tested without overrides. 6287*dc5640d1SHerbert Xue 6288*dc5640d1SHerbert Xue @param modules the modules whose bindings are open to be overridden]]> 6289*dc5640d1SHerbert Xue </doc> 6290*dc5640d1SHerbert Xue </method> 6291*dc5640d1SHerbert Xue <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder" 6292*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6293*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6294*dc5640d1SHerbert Xue deprecated="not deprecated"> 6295*dc5640d1SHerbert Xue <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 6296*dc5640d1SHerbert Xue <doc> 6297*dc5640d1SHerbert Xue <![CDATA[Returns a builder that creates a module that overlays override modules over the given 6298*dc5640d1SHerbert Xue modules. If a key is bound in both sets of modules, only the binding from the override modules 6299*dc5640d1SHerbert Xue is kept. This can be used to replace the bindings of a production module with test bindings: 6300*dc5640d1SHerbert Xue <pre> 6301*dc5640d1SHerbert Xue Module functionalTestModule 6302*dc5640d1SHerbert Xue = Modules.override(getProductionModules()).with(getTestModules()); 6303*dc5640d1SHerbert Xue </pre> 6304*dc5640d1SHerbert Xue 6305*dc5640d1SHerbert Xue <p>Prefer to write smaller modules that can be reused and tested without overrides. 6306*dc5640d1SHerbert Xue 6307*dc5640d1SHerbert Xue @param modules the modules whose bindings are open to be overridden]]> 6308*dc5640d1SHerbert Xue </doc> 6309*dc5640d1SHerbert Xue </method> 6310*dc5640d1SHerbert Xue <method name="combine" return="com.google.inject.Module" 6311*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6312*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6313*dc5640d1SHerbert Xue deprecated="not deprecated"> 6314*dc5640d1SHerbert Xue <param name="modules" type="com.google.inject.Module[]"/> 6315*dc5640d1SHerbert Xue <doc> 6316*dc5640d1SHerbert Xue <![CDATA[Returns a new module that installs all of {@code modules}.]]> 6317*dc5640d1SHerbert Xue </doc> 6318*dc5640d1SHerbert Xue </method> 6319*dc5640d1SHerbert Xue <method name="combine" return="com.google.inject.Module" 6320*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6321*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6322*dc5640d1SHerbert Xue deprecated="not deprecated"> 6323*dc5640d1SHerbert Xue <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 6324*dc5640d1SHerbert Xue <doc> 6325*dc5640d1SHerbert Xue <![CDATA[Returns a new module that installs all of {@code modules}.]]> 6326*dc5640d1SHerbert Xue </doc> 6327*dc5640d1SHerbert Xue </method> 6328*dc5640d1SHerbert Xue <field name="EMPTY_MODULE" type="com.google.inject.Module" 6329*dc5640d1SHerbert Xue transient="false" volatile="false" 6330*dc5640d1SHerbert Xue static="true" final="true" visibility="public" 6331*dc5640d1SHerbert Xue deprecated="not deprecated"> 6332*dc5640d1SHerbert Xue </field> 6333*dc5640d1SHerbert Xue <doc> 6334*dc5640d1SHerbert Xue <![CDATA[Static utility methods for creating and working with instances of {@link Module}. 6335*dc5640d1SHerbert Xue 6336*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 6337*dc5640d1SHerbert Xue @since 2.0]]> 6338*dc5640d1SHerbert Xue </doc> 6339*dc5640d1SHerbert Xue </class> 6340*dc5640d1SHerbert Xue <!-- end class com.google.inject.util.Modules --> 6341*dc5640d1SHerbert Xue <!-- start interface com.google.inject.util.Modules.OverriddenModuleBuilder --> 6342*dc5640d1SHerbert Xue <interface name="Modules.OverriddenModuleBuilder" abstract="true" 6343*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6344*dc5640d1SHerbert Xue deprecated="not deprecated"> 6345*dc5640d1SHerbert Xue <method name="with" return="com.google.inject.Module" 6346*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6347*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6348*dc5640d1SHerbert Xue deprecated="not deprecated"> 6349*dc5640d1SHerbert Xue <param name="overrides" type="com.google.inject.Module[]"/> 6350*dc5640d1SHerbert Xue <doc> 6351*dc5640d1SHerbert Xue <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]> 6352*dc5640d1SHerbert Xue </doc> 6353*dc5640d1SHerbert Xue </method> 6354*dc5640d1SHerbert Xue <method name="with" return="com.google.inject.Module" 6355*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6356*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6357*dc5640d1SHerbert Xue deprecated="not deprecated"> 6358*dc5640d1SHerbert Xue <param name="overrides" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 6359*dc5640d1SHerbert Xue <doc> 6360*dc5640d1SHerbert Xue <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]> 6361*dc5640d1SHerbert Xue </doc> 6362*dc5640d1SHerbert Xue </method> 6363*dc5640d1SHerbert Xue <doc> 6364*dc5640d1SHerbert Xue <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]> 6365*dc5640d1SHerbert Xue </doc> 6366*dc5640d1SHerbert Xue </interface> 6367*dc5640d1SHerbert Xue <!-- end interface com.google.inject.util.Modules.OverriddenModuleBuilder --> 6368*dc5640d1SHerbert Xue <!-- start class com.google.inject.util.Providers --> 6369*dc5640d1SHerbert Xue <class name="Providers" extends="java.lang.Object" 6370*dc5640d1SHerbert Xue abstract="false" 6371*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 6372*dc5640d1SHerbert Xue deprecated="not deprecated"> 6373*dc5640d1SHerbert Xue <method name="of" return="com.google.inject.Provider<T>" 6374*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6375*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6376*dc5640d1SHerbert Xue deprecated="not deprecated"> 6377*dc5640d1SHerbert Xue <param name="instance" type="T"/> 6378*dc5640d1SHerbert Xue <doc> 6379*dc5640d1SHerbert Xue <![CDATA[Returns a provider which always provides {@code instance}. This should not 6380*dc5640d1SHerbert Xue be necessary to use in your application, but is helpful for several types 6381*dc5640d1SHerbert Xue of unit tests. 6382*dc5640d1SHerbert Xue 6383*dc5640d1SHerbert Xue @param instance the instance that should always be provided. This is also 6384*dc5640d1SHerbert Xue permitted to be null, to enable aggressive testing, although in real 6385*dc5640d1SHerbert Xue life a Guice-supplied Provider will never return null.]]> 6386*dc5640d1SHerbert Xue </doc> 6387*dc5640d1SHerbert Xue </method> 6388*dc5640d1SHerbert Xue <doc> 6389*dc5640d1SHerbert Xue <![CDATA[Static utility methods for creating and working with instances of 6390*dc5640d1SHerbert Xue {@link Provider}. 6391*dc5640d1SHerbert Xue 6392*dc5640d1SHerbert Xue @author Kevin Bourrillion ([email protected]) 6393*dc5640d1SHerbert Xue @since 2.0]]> 6394*dc5640d1SHerbert Xue </doc> 6395*dc5640d1SHerbert Xue </class> 6396*dc5640d1SHerbert Xue <!-- end class com.google.inject.util.Providers --> 6397*dc5640d1SHerbert Xue <!-- start class com.google.inject.util.Types --> 6398*dc5640d1SHerbert Xue <class name="Types" extends="java.lang.Object" 6399*dc5640d1SHerbert Xue abstract="false" 6400*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 6401*dc5640d1SHerbert Xue deprecated="not deprecated"> 6402*dc5640d1SHerbert Xue <method name="newParameterizedType" return="java.lang.reflect.ParameterizedType" 6403*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6404*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6405*dc5640d1SHerbert Xue deprecated="not deprecated"> 6406*dc5640d1SHerbert Xue <param name="rawType" type="java.lang.reflect.Type"/> 6407*dc5640d1SHerbert Xue <param name="typeArguments" type="java.lang.reflect.Type[]"/> 6408*dc5640d1SHerbert Xue <doc> 6409*dc5640d1SHerbert Xue <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to 6410*dc5640d1SHerbert Xue {@code rawType}. The returned type does not have an owner type. 6411*dc5640d1SHerbert Xue 6412*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]> 6413*dc5640d1SHerbert Xue </doc> 6414*dc5640d1SHerbert Xue </method> 6415*dc5640d1SHerbert Xue <method name="newParameterizedTypeWithOwner" return="java.lang.reflect.ParameterizedType" 6416*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6417*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6418*dc5640d1SHerbert Xue deprecated="not deprecated"> 6419*dc5640d1SHerbert Xue <param name="ownerType" type="java.lang.reflect.Type"/> 6420*dc5640d1SHerbert Xue <param name="rawType" type="java.lang.reflect.Type"/> 6421*dc5640d1SHerbert Xue <param name="typeArguments" type="java.lang.reflect.Type[]"/> 6422*dc5640d1SHerbert Xue <doc> 6423*dc5640d1SHerbert Xue <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to 6424*dc5640d1SHerbert Xue {@code rawType} and enclosed by {@code ownerType}. 6425*dc5640d1SHerbert Xue 6426*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]> 6427*dc5640d1SHerbert Xue </doc> 6428*dc5640d1SHerbert Xue </method> 6429*dc5640d1SHerbert Xue <method name="arrayOf" return="java.lang.reflect.GenericArrayType" 6430*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6431*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6432*dc5640d1SHerbert Xue deprecated="not deprecated"> 6433*dc5640d1SHerbert Xue <param name="componentType" type="java.lang.reflect.Type"/> 6434*dc5640d1SHerbert Xue <doc> 6435*dc5640d1SHerbert Xue <![CDATA[Returns an array type whose elements are all instances of 6436*dc5640d1SHerbert Xue {@code componentType}. 6437*dc5640d1SHerbert Xue 6438*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} generic array type.]]> 6439*dc5640d1SHerbert Xue </doc> 6440*dc5640d1SHerbert Xue </method> 6441*dc5640d1SHerbert Xue <method name="subtypeOf" return="java.lang.reflect.WildcardType" 6442*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6443*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6444*dc5640d1SHerbert Xue deprecated="not deprecated"> 6445*dc5640d1SHerbert Xue <param name="bound" type="java.lang.reflect.Type"/> 6446*dc5640d1SHerbert Xue <doc> 6447*dc5640d1SHerbert Xue <![CDATA[Returns a type that represents an unknown type that extends {@code bound}. 6448*dc5640d1SHerbert Xue For example, if {@code bound} is {@code CharSequence.class}, this returns 6449*dc5640d1SHerbert Xue {@code ? extends CharSequence}. If {@code bound} is {@code Object.class}, 6450*dc5640d1SHerbert Xue this returns {@code ?}, which is shorthand for {@code ? extends Object}.]]> 6451*dc5640d1SHerbert Xue </doc> 6452*dc5640d1SHerbert Xue </method> 6453*dc5640d1SHerbert Xue <method name="supertypeOf" return="java.lang.reflect.WildcardType" 6454*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6455*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6456*dc5640d1SHerbert Xue deprecated="not deprecated"> 6457*dc5640d1SHerbert Xue <param name="bound" type="java.lang.reflect.Type"/> 6458*dc5640d1SHerbert Xue <doc> 6459*dc5640d1SHerbert Xue <![CDATA[Returns a type that represents an unknown supertype of {@code bound}. For 6460*dc5640d1SHerbert Xue example, if {@code bound} is {@code String.class}, this returns {@code ? 6461*dc5640d1SHerbert Xue super String}.]]> 6462*dc5640d1SHerbert Xue </doc> 6463*dc5640d1SHerbert Xue </method> 6464*dc5640d1SHerbert Xue <method name="listOf" return="java.lang.reflect.ParameterizedType" 6465*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6466*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6467*dc5640d1SHerbert Xue deprecated="not deprecated"> 6468*dc5640d1SHerbert Xue <param name="elementType" type="java.lang.reflect.Type"/> 6469*dc5640d1SHerbert Xue <doc> 6470*dc5640d1SHerbert Xue <![CDATA[Returns a type modelling a {@link List} whose elements are of type 6471*dc5640d1SHerbert Xue {@code elementType}. 6472*dc5640d1SHerbert Xue 6473*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]> 6474*dc5640d1SHerbert Xue </doc> 6475*dc5640d1SHerbert Xue </method> 6476*dc5640d1SHerbert Xue <method name="setOf" return="java.lang.reflect.ParameterizedType" 6477*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6478*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6479*dc5640d1SHerbert Xue deprecated="not deprecated"> 6480*dc5640d1SHerbert Xue <param name="elementType" type="java.lang.reflect.Type"/> 6481*dc5640d1SHerbert Xue <doc> 6482*dc5640d1SHerbert Xue <![CDATA[Returns a type modelling a {@link Set} whose elements are of type 6483*dc5640d1SHerbert Xue {@code elementType}. 6484*dc5640d1SHerbert Xue 6485*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]> 6486*dc5640d1SHerbert Xue </doc> 6487*dc5640d1SHerbert Xue </method> 6488*dc5640d1SHerbert Xue <method name="mapOf" return="java.lang.reflect.ParameterizedType" 6489*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6490*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6491*dc5640d1SHerbert Xue deprecated="not deprecated"> 6492*dc5640d1SHerbert Xue <param name="keyType" type="java.lang.reflect.Type"/> 6493*dc5640d1SHerbert Xue <param name="valueType" type="java.lang.reflect.Type"/> 6494*dc5640d1SHerbert Xue <doc> 6495*dc5640d1SHerbert Xue <![CDATA[Returns a type modelling a {@link Map} whose keys are of type 6496*dc5640d1SHerbert Xue {@code keyType} and whose values are of type {@code valueType}. 6497*dc5640d1SHerbert Xue 6498*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]> 6499*dc5640d1SHerbert Xue </doc> 6500*dc5640d1SHerbert Xue </method> 6501*dc5640d1SHerbert Xue <method name="providerOf" return="java.lang.reflect.ParameterizedType" 6502*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6503*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6504*dc5640d1SHerbert Xue deprecated="not deprecated"> 6505*dc5640d1SHerbert Xue <param name="providedType" type="java.lang.reflect.Type"/> 6506*dc5640d1SHerbert Xue <doc> 6507*dc5640d1SHerbert Xue <![CDATA[Returns a type modelling a {@link Provider} that provides elements of type 6508*dc5640d1SHerbert Xue {@code elementType}. 6509*dc5640d1SHerbert Xue 6510*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]> 6511*dc5640d1SHerbert Xue </doc> 6512*dc5640d1SHerbert Xue </method> 6513*dc5640d1SHerbert Xue <doc> 6514*dc5640d1SHerbert Xue <![CDATA[Static methods for working with types. 6515*dc5640d1SHerbert Xue 6516*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 6517*dc5640d1SHerbert Xue @since 2.0]]> 6518*dc5640d1SHerbert Xue </doc> 6519*dc5640d1SHerbert Xue </class> 6520*dc5640d1SHerbert Xue <!-- end class com.google.inject.util.Types --> 6521*dc5640d1SHerbert Xue</package> 6522*dc5640d1SHerbert Xue 6523*dc5640d1SHerbert Xue</api> 6524