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 Thu Mar 24 21:41:19 EDT 2011 --> 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="3.0" 10*dc5640d1SHerbert Xue jdversion="1.1.1"> 11*dc5640d1SHerbert Xue 12*dc5640d1SHerbert Xue<!-- Command line arguments = -doclet jdiff.JDiff -docletpath C:\Documents and Settings\Sam Berlin\workspace\guice\lib\build\jdiff\jdiff.jar;C:\Documents and Settings\Sam Berlin\workspace\guice\lib\build\jdiff\xerces.jar -classpath C:\Documents and Settings\Sam Berlin\workspace\guice\lib\javax.inject.jar;C:\Documents and Settings\Sam Berlin\workspace\guice\lib\aopalliance.jar -apidir build/docs/latest-api-diffs -apiname 3.0 --> 13*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 provider 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 <method name="requireExplicitBindings" 585*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 586*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 587*dc5640d1SHerbert Xue deprecated="not deprecated"> 588*dc5640d1SHerbert Xue <doc> 589*dc5640d1SHerbert Xue <![CDATA[Instructs the Injector that bindings must be listed in a Module in order to 590*dc5640d1SHerbert Xue be injected. Classes that are not explicitly bound in a module cannot be 591*dc5640d1SHerbert Xue injected. Bindings created through a linked binding ( 592*dc5640d1SHerbert Xue <code>bind(Foo.class).to(FooImpl.class)</code>) are allowed, but the 593*dc5640d1SHerbert Xue implicit binding (<code>FooImpl</code>) cannot be directly injected unless 594*dc5640d1SHerbert Xue it is also explicitly bound (<code>bind(FooImpl.class)</code>). 595*dc5640d1SHerbert Xue <p> 596*dc5640d1SHerbert Xue Tools can still retrieve bindings for implicit bindings (bindings created 597*dc5640d1SHerbert Xue through a linked binding) if explicit bindings are required, however 598*dc5640d1SHerbert Xue {@link Binding#getProvider} will fail. 599*dc5640d1SHerbert Xue <p> 600*dc5640d1SHerbert Xue By default, explicit bindings are not required. 601*dc5640d1SHerbert Xue <p> 602*dc5640d1SHerbert Xue If a parent injector requires explicit bindings, then all child injectors 603*dc5640d1SHerbert Xue (and private modules within that injector) also require explicit bindings. 604*dc5640d1SHerbert Xue If a parent does not require explicit bindings, a child injector or private 605*dc5640d1SHerbert Xue module may optionally declare itself as requiring explicit bindings. If it 606*dc5640d1SHerbert Xue does, the behavior is limited only to that child or any grandchildren. No 607*dc5640d1SHerbert Xue siblings of the child will require explicit bindings. 608*dc5640d1SHerbert Xue <p> 609*dc5640d1SHerbert Xue If the parent did not require explicit bindings but the child does, it is 610*dc5640d1SHerbert Xue possible that a linked binding in the child may add a JIT binding to the 611*dc5640d1SHerbert Xue parent. The child will not be allowed to reference the target binding 612*dc5640d1SHerbert Xue directly, but the parent and other children of the parent may be able to. 613*dc5640d1SHerbert Xue 614*dc5640d1SHerbert Xue @since 3.0]]> 615*dc5640d1SHerbert Xue </doc> 616*dc5640d1SHerbert Xue </method> 617*dc5640d1SHerbert Xue <method name="disableCircularProxies" 618*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 619*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 620*dc5640d1SHerbert Xue deprecated="not deprecated"> 621*dc5640d1SHerbert Xue <doc> 622*dc5640d1SHerbert Xue <![CDATA[Prevents Guice from constructing a {@link Proxy} when a circular dependency 623*dc5640d1SHerbert Xue is found. By default, circular proxies are not disabled. 624*dc5640d1SHerbert Xue <p> 625*dc5640d1SHerbert Xue If a parent injector disables circular proxies, then all child injectors 626*dc5640d1SHerbert Xue (and private modules within that injector) also disable circular proxies. 627*dc5640d1SHerbert Xue If a parent does not disable circular proxies, a child injector or private 628*dc5640d1SHerbert Xue module may optionally declare itself as disabling circular proxies. If it 629*dc5640d1SHerbert Xue does, the behavior is limited only to that child or any grandchildren. No 630*dc5640d1SHerbert Xue siblings of the child will disable circular proxies. 631*dc5640d1SHerbert Xue 632*dc5640d1SHerbert Xue @since 3.0]]> 633*dc5640d1SHerbert Xue </doc> 634*dc5640d1SHerbert Xue </method> 635*dc5640d1SHerbert Xue <doc> 636*dc5640d1SHerbert Xue <![CDATA[Collects configuration information (primarily <i>bindings</i>) which will be 637*dc5640d1SHerbert Xue used to create an {@link Injector}. Guice provides this object to your 638*dc5640d1SHerbert Xue application's {@link Module} implementors so they may each contribute 639*dc5640d1SHerbert Xue their own bindings and other registrations. 640*dc5640d1SHerbert Xue 641*dc5640d1SHerbert Xue <h3>The Guice Binding EDSL</h3> 642*dc5640d1SHerbert Xue 643*dc5640d1SHerbert Xue Guice uses an <i>embedded domain-specific language</i>, or EDSL, to help you 644*dc5640d1SHerbert Xue create bindings simply and readably. This approach is great for overall 645*dc5640d1SHerbert Xue usability, but it does come with a small cost: <b>it is difficult to 646*dc5640d1SHerbert Xue learn how to use the Binding EDSL by reading 647*dc5640d1SHerbert Xue method-level javadocs</b>. Instead, you should consult the series of 648*dc5640d1SHerbert Xue examples below. To save space, these examples omit the opening 649*dc5640d1SHerbert Xue {@code binder}, just as you will if your module extends 650*dc5640d1SHerbert Xue {@link AbstractModule}. 651*dc5640d1SHerbert Xue 652*dc5640d1SHerbert Xue <pre> 653*dc5640d1SHerbert Xue bind(ServiceImpl.class);</pre> 654*dc5640d1SHerbert Xue 655*dc5640d1SHerbert Xue This statement does essentially nothing; it "binds the {@code ServiceImpl} 656*dc5640d1SHerbert Xue class to itself" and does not change Guice's default behavior. You may still 657*dc5640d1SHerbert Xue want to use this if you prefer your {@link Module} class to serve as an 658*dc5640d1SHerbert Xue explicit <i>manifest</i> for the services it provides. Also, in rare cases, 659*dc5640d1SHerbert Xue Guice may be unable to validate a binding at injector creation time unless it 660*dc5640d1SHerbert Xue is given explicitly. 661*dc5640d1SHerbert Xue 662*dc5640d1SHerbert Xue <pre> 663*dc5640d1SHerbert Xue bind(Service.class).to(ServiceImpl.class);</pre> 664*dc5640d1SHerbert Xue 665*dc5640d1SHerbert Xue Specifies that a request for a {@code Service} instance with no binding 666*dc5640d1SHerbert Xue annotations should be treated as if it were a request for a 667*dc5640d1SHerbert Xue {@code ServiceImpl} instance. This <i>overrides</i> the function of any 668*dc5640d1SHerbert Xue {@link ImplementedBy @ImplementedBy} or {@link ProvidedBy @ProvidedBy} 669*dc5640d1SHerbert Xue annotations found on {@code Service}, since Guice will have already 670*dc5640d1SHerbert Xue "moved on" to {@code ServiceImpl} before it reaches the point when it starts 671*dc5640d1SHerbert Xue looking for these annotations. 672*dc5640d1SHerbert Xue 673*dc5640d1SHerbert Xue <pre> 674*dc5640d1SHerbert Xue bind(Service.class).toProvider(ServiceProvider.class);</pre> 675*dc5640d1SHerbert Xue 676*dc5640d1SHerbert Xue In this example, {@code ServiceProvider} must extend or implement 677*dc5640d1SHerbert Xue {@code Provider<Service>}. This binding specifies that Guice should resolve 678*dc5640d1SHerbert Xue an unannotated injection request for {@code Service} by first resolving an 679*dc5640d1SHerbert Xue instance of {@code ServiceProvider} in the regular way, then calling 680*dc5640d1SHerbert Xue {@link Provider#get get()} on the resulting Provider instance to obtain the 681*dc5640d1SHerbert Xue {@code Service} instance. 682*dc5640d1SHerbert Xue 683*dc5640d1SHerbert Xue <p>The {@link Provider} you use here does not have to be a "factory"; that 684*dc5640d1SHerbert Xue is, a provider which always <i>creates</i> each instance it provides. 685*dc5640d1SHerbert Xue However, this is generally a good practice to follow. You can then use 686*dc5640d1SHerbert Xue Guice's concept of {@link Scope scopes} to guide when creation should happen 687*dc5640d1SHerbert Xue -- "letting Guice work for you". 688*dc5640d1SHerbert Xue 689*dc5640d1SHerbert Xue <pre> 690*dc5640d1SHerbert Xue bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class);</pre> 691*dc5640d1SHerbert Xue 692*dc5640d1SHerbert Xue Like the previous example, but only applies to injection requests that use 693*dc5640d1SHerbert Xue the binding annotation {@code @Red}. If your module also includes bindings 694*dc5640d1SHerbert Xue for particular <i>values</i> of the {@code @Red} annotation (see below), 695*dc5640d1SHerbert Xue then this binding will serve as a "catch-all" for any values of {@code @Red} 696*dc5640d1SHerbert Xue that have no exact match in the bindings. 697*dc5640d1SHerbert Xue 698*dc5640d1SHerbert Xue <pre> 699*dc5640d1SHerbert Xue bind(ServiceImpl.class).in(Singleton.class); 700*dc5640d1SHerbert Xue // or, alternatively 701*dc5640d1SHerbert Xue bind(ServiceImpl.class).in(Scopes.SINGLETON);</pre> 702*dc5640d1SHerbert Xue 703*dc5640d1SHerbert Xue Either of these statements places the {@code ServiceImpl} class into 704*dc5640d1SHerbert Xue singleton scope. Guice will create only one instance of {@code ServiceImpl} 705*dc5640d1SHerbert Xue and will reuse it for all injection requests of this type. Note that it is 706*dc5640d1SHerbert Xue still possible to bind another instance of {@code ServiceImpl} if the second 707*dc5640d1SHerbert Xue binding is qualified by an annotation as in the previous example. Guice is 708*dc5640d1SHerbert Xue not overly concerned with <i>preventing</i> you from creating multiple 709*dc5640d1SHerbert Xue instances of your "singletons", only with <i>enabling</i> your application to 710*dc5640d1SHerbert Xue share only one instance if that's all you tell Guice you need. 711*dc5640d1SHerbert Xue 712*dc5640d1SHerbert Xue <p><b>Note:</b> a scope specified in this way <i>overrides</i> any scope that 713*dc5640d1SHerbert Xue was specified with an annotation on the {@code ServiceImpl} class. 714*dc5640d1SHerbert Xue 715*dc5640d1SHerbert Xue <p>Besides {@link Singleton}/{@link Scopes#SINGLETON}, there are 716*dc5640d1SHerbert Xue servlet-specific scopes available in 717*dc5640d1SHerbert Xue {@code com.google.inject.servlet.ServletScopes}, and your Modules can 718*dc5640d1SHerbert Xue contribute their own custom scopes for use here as well. 719*dc5640d1SHerbert Xue 720*dc5640d1SHerbert Xue <pre> 721*dc5640d1SHerbert Xue bind(new TypeLiteral<PaymentService<CreditCard>>() {}) 722*dc5640d1SHerbert Xue .to(CreditCardPaymentService.class);</pre> 723*dc5640d1SHerbert Xue 724*dc5640d1SHerbert Xue This admittedly odd construct is the way to bind a parameterized type. It 725*dc5640d1SHerbert Xue tells Guice how to honor an injection request for an element of type 726*dc5640d1SHerbert Xue {@code PaymentService<CreditCard>}. The class 727*dc5640d1SHerbert Xue {@code CreditCardPaymentService} must implement the 728*dc5640d1SHerbert Xue {@code PaymentService<CreditCard>} interface. Guice cannot currently bind or 729*dc5640d1SHerbert Xue inject a generic type, such as {@code Set<E>}; all type parameters must be 730*dc5640d1SHerbert Xue fully specified. 731*dc5640d1SHerbert Xue 732*dc5640d1SHerbert Xue <pre> 733*dc5640d1SHerbert Xue bind(Service.class).toInstance(new ServiceImpl()); 734*dc5640d1SHerbert Xue // or, alternatively 735*dc5640d1SHerbert Xue bind(Service.class).toInstance(SomeLegacyRegistry.getService());</pre> 736*dc5640d1SHerbert Xue 737*dc5640d1SHerbert Xue In this example, your module itself, <i>not Guice</i>, takes responsibility 738*dc5640d1SHerbert Xue for obtaining a {@code ServiceImpl} instance, then asks Guice to always use 739*dc5640d1SHerbert Xue this single instance to fulfill all {@code Service} injection requests. When 740*dc5640d1SHerbert Xue the {@link Injector} is created, it will automatically perform field 741*dc5640d1SHerbert Xue and method injection for this instance, but any injectable constructor on 742*dc5640d1SHerbert Xue {@code ServiceImpl} is simply ignored. Note that using this approach results 743*dc5640d1SHerbert Xue in "eager loading" behavior that you can't control. 744*dc5640d1SHerbert Xue 745*dc5640d1SHerbert Xue <pre> 746*dc5640d1SHerbert Xue bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre> 747*dc5640d1SHerbert Xue 748*dc5640d1SHerbert Xue Sets up a constant binding. Constant injections must always be annotated. 749*dc5640d1SHerbert Xue When a constant binding's value is a string, it is eligile for conversion to 750*dc5640d1SHerbert Xue all primitive types, to {@link Enum#valueOf(Class, String) all enums}, and to 751*dc5640d1SHerbert Xue {@link Class#forName class literals}. Conversions for other types can be 752*dc5640d1SHerbert Xue configured using {@link #convertToTypes(Matcher, TypeConverter) 753*dc5640d1SHerbert Xue convertToTypes()}. 754*dc5640d1SHerbert Xue 755*dc5640d1SHerbert Xue <pre> 756*dc5640d1SHerbert Xue {@literal @}Color("red") Color red; // A member variable (field) 757*dc5640d1SHerbert Xue . . . 758*dc5640d1SHerbert Xue red = MyModule.class.getDeclaredField("red").getAnnotation(Color.class); 759*dc5640d1SHerbert Xue bind(Service.class).annotatedWith(red).to(RedService.class);</pre> 760*dc5640d1SHerbert Xue 761*dc5640d1SHerbert Xue If your binding annotation has parameters you can apply different bindings to 762*dc5640d1SHerbert Xue different specific values of your annotation. Getting your hands on the 763*dc5640d1SHerbert Xue right instance of the annotation is a bit of a pain -- one approach, shown 764*dc5640d1SHerbert Xue above, is to apply a prototype annotation to a field in your module class, so 765*dc5640d1SHerbert Xue that you can read this annotation instance and give it to Guice. 766*dc5640d1SHerbert Xue 767*dc5640d1SHerbert Xue <pre> 768*dc5640d1SHerbert Xue bind(Service.class) 769*dc5640d1SHerbert Xue .annotatedWith(Names.named("blue")) 770*dc5640d1SHerbert Xue .to(BlueService.class);</pre> 771*dc5640d1SHerbert Xue 772*dc5640d1SHerbert Xue Differentiating by names is a common enough use case that we provided a 773*dc5640d1SHerbert Xue standard annotation, {@link com.google.inject.name.Named @Named}. Because of 774*dc5640d1SHerbert Xue Guice's library support, binding by name is quite easier than in the 775*dc5640d1SHerbert Xue arbitrary binding annotation case we just saw. However, remember that these 776*dc5640d1SHerbert Xue names will live in a single flat namespace with all the other names used in 777*dc5640d1SHerbert Xue your application. 778*dc5640d1SHerbert Xue 779*dc5640d1SHerbert Xue <pre> 780*dc5640d1SHerbert Xue Constructor<T> loneCtor = getLoneCtorFromServiceImplViaReflection(); 781*dc5640d1SHerbert Xue bind(ServiceImpl.class) 782*dc5640d1SHerbert Xue .toConstructor(loneCtor);</pre> 783*dc5640d1SHerbert Xue 784*dc5640d1SHerbert Xue In this example, we directly tell Guice which constructor to use in a concrete 785*dc5640d1SHerbert Xue class implementation. It means that we do not need to place {@literal @}Inject 786*dc5640d1SHerbert Xue on any of the constructors and that Guice treats the provided constructor as though 787*dc5640d1SHerbert Xue it were annotated so. It is useful for cases where you cannot modify existing 788*dc5640d1SHerbert Xue classes and is a bit simpler than using a {@link Provider}. 789*dc5640d1SHerbert Xue 790*dc5640d1SHerbert Xue <p>The above list of examples is far from exhaustive. If you can think of 791*dc5640d1SHerbert Xue how the concepts of one example might coexist with the concepts from another, 792*dc5640d1SHerbert Xue you can most likely weave the two together. If the two concepts make no 793*dc5640d1SHerbert Xue sense with each other, you most likely won't be able to do it. In a few 794*dc5640d1SHerbert Xue cases Guice will let something bogus slip by, and will then inform you of 795*dc5640d1SHerbert Xue the problems at runtime, as soon as you try to create your Injector. 796*dc5640d1SHerbert Xue 797*dc5640d1SHerbert Xue <p>The other methods of Binder such as {@link #bindScope}, 798*dc5640d1SHerbert Xue {@link #bindInterceptor}, {@link #install}, {@link #requestStaticInjection}, 799*dc5640d1SHerbert Xue {@link #addError} and {@link #currentStage} are not part of the Binding EDSL; 800*dc5640d1SHerbert Xue you can learn how to use these in the usual way, from the method 801*dc5640d1SHerbert Xue documentation. 802*dc5640d1SHerbert Xue 803*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 804*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 805*dc5640d1SHerbert Xue @author [email protected] (Kevin Bourrillion)]]> 806*dc5640d1SHerbert Xue </doc> 807*dc5640d1SHerbert Xue </interface> 808*dc5640d1SHerbert Xue <!-- end interface com.google.inject.Binder --> 809*dc5640d1SHerbert Xue <!-- start interface com.google.inject.Binding --> 810*dc5640d1SHerbert Xue <interface name="Binding" abstract="true" 811*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 812*dc5640d1SHerbert Xue deprecated="not deprecated"> 813*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 814*dc5640d1SHerbert Xue <method name="getKey" return="com.google.inject.Key<T>" 815*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 816*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 817*dc5640d1SHerbert Xue deprecated="not deprecated"> 818*dc5640d1SHerbert Xue <doc> 819*dc5640d1SHerbert Xue <![CDATA[Returns the key for this binding.]]> 820*dc5640d1SHerbert Xue </doc> 821*dc5640d1SHerbert Xue </method> 822*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 823*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 824*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 825*dc5640d1SHerbert Xue deprecated="not deprecated"> 826*dc5640d1SHerbert Xue <doc> 827*dc5640d1SHerbert Xue <![CDATA[Returns the scoped provider guice uses to fulfill requests for this 828*dc5640d1SHerbert Xue binding. 829*dc5640d1SHerbert Xue 830*dc5640d1SHerbert Xue @throws UnsupportedOperationException when invoked on a {@link Binding} 831*dc5640d1SHerbert Xue created via {@link com.google.inject.spi.Elements#getElements}. This 832*dc5640d1SHerbert Xue method is only supported on {@link Binding}s returned from an injector.]]> 833*dc5640d1SHerbert Xue </doc> 834*dc5640d1SHerbert Xue </method> 835*dc5640d1SHerbert Xue <method name="acceptTargetVisitor" return="V" 836*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 837*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 838*dc5640d1SHerbert Xue deprecated="not deprecated"> 839*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor<? super T, V>"/> 840*dc5640d1SHerbert Xue <doc> 841*dc5640d1SHerbert Xue <![CDATA[Accepts a target visitor. Invokes the visitor method specific to this binding's target. 842*dc5640d1SHerbert Xue 843*dc5640d1SHerbert Xue @param visitor to call back on 844*dc5640d1SHerbert Xue @since 2.0]]> 845*dc5640d1SHerbert Xue </doc> 846*dc5640d1SHerbert Xue </method> 847*dc5640d1SHerbert Xue <method name="acceptScopingVisitor" return="V" 848*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 849*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 850*dc5640d1SHerbert Xue deprecated="not deprecated"> 851*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.BindingScopingVisitor<V>"/> 852*dc5640d1SHerbert Xue <doc> 853*dc5640d1SHerbert Xue <![CDATA[Accepts a scoping visitor. Invokes the visitor method specific to this binding's scoping. 854*dc5640d1SHerbert Xue 855*dc5640d1SHerbert Xue @param visitor to call back on 856*dc5640d1SHerbert Xue @since 2.0]]> 857*dc5640d1SHerbert Xue </doc> 858*dc5640d1SHerbert Xue </method> 859*dc5640d1SHerbert Xue <doc> 860*dc5640d1SHerbert Xue <![CDATA[A mapping from a key (type and optional annotation) to the strategy for getting instances of the 861*dc5640d1SHerbert Xue type. This interface is part of the introspection API and is intended primarily for use by 862*dc5640d1SHerbert Xue tools. 863*dc5640d1SHerbert Xue 864*dc5640d1SHerbert Xue <p>Bindings are created in several ways: 865*dc5640d1SHerbert Xue <ul> 866*dc5640d1SHerbert Xue <li>Explicitly in a module, via {@code bind()} and {@code bindConstant()} 867*dc5640d1SHerbert Xue statements: 868*dc5640d1SHerbert Xue <pre> 869*dc5640d1SHerbert Xue bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class); 870*dc5640d1SHerbert Xue bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre></li> 871*dc5640d1SHerbert Xue <li>Implicitly by the Injector by following a type's {@link ImplementedBy 872*dc5640d1SHerbert Xue pointer} {@link ProvidedBy annotations} or by using its {@link Inject annotated} or 873*dc5640d1SHerbert Xue default constructor.</li> 874*dc5640d1SHerbert Xue <li>By converting a bound instance to a different type.</li> 875*dc5640d1SHerbert Xue <li>For {@link Provider providers}, by delegating to the binding for the provided type.</li> 876*dc5640d1SHerbert Xue </ul> 877*dc5640d1SHerbert Xue 878*dc5640d1SHerbert Xue 879*dc5640d1SHerbert Xue <p>They exist on both modules and on injectors, and their behaviour is different for each: 880*dc5640d1SHerbert Xue <ul> 881*dc5640d1SHerbert Xue <li><strong>Module bindings</strong> are incomplete and cannot be used to provide instances. 882*dc5640d1SHerbert Xue This is because the applicable scopes and interceptors may not be known until an injector 883*dc5640d1SHerbert Xue is created. From a tool's perspective, module bindings are like the injector's source 884*dc5640d1SHerbert Xue code. They can be inspected or rewritten, but this analysis must be done statically.</li> 885*dc5640d1SHerbert Xue <li><strong>Injector bindings</strong> are complete and valid and can be used to provide 886*dc5640d1SHerbert Xue instances. From a tools' perspective, injector bindings are like reflection for an 887*dc5640d1SHerbert Xue injector. They have full runtime information, including the complete graph of injections 888*dc5640d1SHerbert Xue necessary to satisfy a binding.</li> 889*dc5640d1SHerbert Xue </ul> 890*dc5640d1SHerbert Xue 891*dc5640d1SHerbert Xue @param <T> the bound type. The injected is always assignable to this type. 892*dc5640d1SHerbert Xue 893*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 894*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]> 895*dc5640d1SHerbert Xue </doc> 896*dc5640d1SHerbert Xue </interface> 897*dc5640d1SHerbert Xue <!-- end interface com.google.inject.Binding --> 898*dc5640d1SHerbert Xue <!-- start class com.google.inject.BindingAnnotation --> 899*dc5640d1SHerbert Xue <class name="BindingAnnotation" abstract="true" 900*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 901*dc5640d1SHerbert Xue deprecated="not deprecated"> 902*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 903*dc5640d1SHerbert Xue <doc> 904*dc5640d1SHerbert Xue <![CDATA[Annotates annotations which are used for binding. Only one such annotation 905*dc5640d1SHerbert Xue may apply to a single injection point. You must also annotate binder 906*dc5640d1SHerbert Xue annotations with {@code @Retention(RUNTIME)}. For example: 907*dc5640d1SHerbert Xue 908*dc5640d1SHerbert Xue <pre> 909*dc5640d1SHerbert Xue {@code @}Retention(RUNTIME) 910*dc5640d1SHerbert Xue {@code @}Target({ FIELD, PARAMETER, METHOD }) 911*dc5640d1SHerbert Xue {@code @}BindingAnnotation 912*dc5640d1SHerbert Xue public {@code @}interface Transactional {} 913*dc5640d1SHerbert Xue </pre> 914*dc5640d1SHerbert Xue 915*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 916*dc5640d1SHerbert Xue </doc> 917*dc5640d1SHerbert Xue </class> 918*dc5640d1SHerbert Xue <!-- end class com.google.inject.BindingAnnotation --> 919*dc5640d1SHerbert Xue <!-- start class com.google.inject.ConfigurationException --> 920*dc5640d1SHerbert Xue <class name="ConfigurationException" extends="java.lang.RuntimeException" 921*dc5640d1SHerbert Xue abstract="false" 922*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 923*dc5640d1SHerbert Xue deprecated="not deprecated"> 924*dc5640d1SHerbert Xue <constructor name="ConfigurationException" type="java.lang.Iterable<com.google.inject.spi.Message>" 925*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 926*dc5640d1SHerbert Xue deprecated="not deprecated"> 927*dc5640d1SHerbert Xue <doc> 928*dc5640d1SHerbert Xue <![CDATA[Creates a ConfigurationException containing {@code messages}.]]> 929*dc5640d1SHerbert Xue </doc> 930*dc5640d1SHerbert Xue </constructor> 931*dc5640d1SHerbert Xue <method name="withPartialValue" return="com.google.inject.ConfigurationException" 932*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 933*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 934*dc5640d1SHerbert Xue deprecated="not deprecated"> 935*dc5640d1SHerbert Xue <param name="partialValue" type="java.lang.Object"/> 936*dc5640d1SHerbert Xue <doc> 937*dc5640d1SHerbert Xue <![CDATA[Returns a copy of this configuration exception with the specified partial value.]]> 938*dc5640d1SHerbert Xue </doc> 939*dc5640d1SHerbert Xue </method> 940*dc5640d1SHerbert Xue <method name="getErrorMessages" return="java.util.Collection<com.google.inject.spi.Message>" 941*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 942*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 943*dc5640d1SHerbert Xue deprecated="not deprecated"> 944*dc5640d1SHerbert Xue <doc> 945*dc5640d1SHerbert Xue <![CDATA[Returns messages for the errors that caused this exception.]]> 946*dc5640d1SHerbert Xue </doc> 947*dc5640d1SHerbert Xue </method> 948*dc5640d1SHerbert Xue <method name="getPartialValue" return="E" 949*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 950*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 951*dc5640d1SHerbert Xue deprecated="not deprecated"> 952*dc5640d1SHerbert Xue <doc> 953*dc5640d1SHerbert Xue <![CDATA[Returns a value that was only partially computed due to this exception. The caller can use 954*dc5640d1SHerbert Xue this while collecting additional configuration problems. 955*dc5640d1SHerbert Xue 956*dc5640d1SHerbert Xue @return the partial value, or {@code null} if none was set. The type of the partial value is 957*dc5640d1SHerbert Xue specified by the throwing method.]]> 958*dc5640d1SHerbert Xue </doc> 959*dc5640d1SHerbert Xue </method> 960*dc5640d1SHerbert Xue <method name="getMessage" return="java.lang.String" 961*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 962*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 963*dc5640d1SHerbert Xue deprecated="not deprecated"> 964*dc5640d1SHerbert Xue </method> 965*dc5640d1SHerbert Xue <doc> 966*dc5640d1SHerbert Xue <![CDATA[Thrown when a programming error such as a misplaced annotation, illegal binding, or unsupported 967*dc5640d1SHerbert Xue scope is found. Clients should catch this exception, log it, and stop execution. 968*dc5640d1SHerbert Xue 969*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 970*dc5640d1SHerbert Xue @since 2.0]]> 971*dc5640d1SHerbert Xue </doc> 972*dc5640d1SHerbert Xue </class> 973*dc5640d1SHerbert Xue <!-- end class com.google.inject.ConfigurationException --> 974*dc5640d1SHerbert Xue <!-- start class com.google.inject.CreationException --> 975*dc5640d1SHerbert Xue <class name="CreationException" extends="java.lang.RuntimeException" 976*dc5640d1SHerbert Xue abstract="false" 977*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 978*dc5640d1SHerbert Xue deprecated="not deprecated"> 979*dc5640d1SHerbert Xue <constructor name="CreationException" type="java.util.Collection<com.google.inject.spi.Message>" 980*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 981*dc5640d1SHerbert Xue deprecated="not deprecated"> 982*dc5640d1SHerbert Xue <doc> 983*dc5640d1SHerbert Xue <![CDATA[Creates a CreationException containing {@code messages}.]]> 984*dc5640d1SHerbert Xue </doc> 985*dc5640d1SHerbert Xue </constructor> 986*dc5640d1SHerbert Xue <method name="getErrorMessages" return="java.util.Collection<com.google.inject.spi.Message>" 987*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 988*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 989*dc5640d1SHerbert Xue deprecated="not deprecated"> 990*dc5640d1SHerbert Xue <doc> 991*dc5640d1SHerbert Xue <![CDATA[Returns messages for the errors that caused this exception.]]> 992*dc5640d1SHerbert Xue </doc> 993*dc5640d1SHerbert Xue </method> 994*dc5640d1SHerbert Xue <method name="getMessage" return="java.lang.String" 995*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 996*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 997*dc5640d1SHerbert Xue deprecated="not deprecated"> 998*dc5640d1SHerbert Xue </method> 999*dc5640d1SHerbert Xue <doc> 1000*dc5640d1SHerbert Xue <![CDATA[Thrown when errors occur while creating a {@link Injector}. Includes a list of encountered 1001*dc5640d1SHerbert Xue errors. Clients should catch this exception, log it, and stop execution. 1002*dc5640d1SHerbert Xue 1003*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 1004*dc5640d1SHerbert Xue </doc> 1005*dc5640d1SHerbert Xue </class> 1006*dc5640d1SHerbert Xue <!-- end class com.google.inject.CreationException --> 1007*dc5640d1SHerbert Xue <!-- start class com.google.inject.Exposed --> 1008*dc5640d1SHerbert Xue <class name="Exposed" abstract="true" 1009*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1010*dc5640d1SHerbert Xue deprecated="not deprecated"> 1011*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 1012*dc5640d1SHerbert Xue <doc> 1013*dc5640d1SHerbert Xue <![CDATA[Acccompanies a {@literal @}{@link com.google.inject.Provides Provides} method annotation in a 1014*dc5640d1SHerbert Xue private module to indicate that the provided binding is exposed. 1015*dc5640d1SHerbert Xue 1016*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 1017*dc5640d1SHerbert Xue @since 2.0]]> 1018*dc5640d1SHerbert Xue </doc> 1019*dc5640d1SHerbert Xue </class> 1020*dc5640d1SHerbert Xue <!-- end class com.google.inject.Exposed --> 1021*dc5640d1SHerbert Xue <!-- start class com.google.inject.Guice --> 1022*dc5640d1SHerbert Xue <class name="Guice" extends="java.lang.Object" 1023*dc5640d1SHerbert Xue abstract="false" 1024*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1025*dc5640d1SHerbert Xue deprecated="not deprecated"> 1026*dc5640d1SHerbert Xue <method name="createInjector" return="com.google.inject.Injector" 1027*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1028*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1029*dc5640d1SHerbert Xue deprecated="not deprecated"> 1030*dc5640d1SHerbert Xue <param name="modules" type="com.google.inject.Module[]"/> 1031*dc5640d1SHerbert Xue <doc> 1032*dc5640d1SHerbert Xue <![CDATA[Creates an injector for the given set of modules. 1033*dc5640d1SHerbert Xue 1034*dc5640d1SHerbert Xue @throws CreationException if one or more errors occur during injector 1035*dc5640d1SHerbert Xue construction]]> 1036*dc5640d1SHerbert Xue </doc> 1037*dc5640d1SHerbert Xue </method> 1038*dc5640d1SHerbert Xue <method name="createInjector" return="com.google.inject.Injector" 1039*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1040*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1041*dc5640d1SHerbert Xue deprecated="not deprecated"> 1042*dc5640d1SHerbert Xue <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 1043*dc5640d1SHerbert Xue <doc> 1044*dc5640d1SHerbert Xue <![CDATA[Creates an injector for the given set of modules. 1045*dc5640d1SHerbert Xue 1046*dc5640d1SHerbert Xue @throws CreationException if one or more errors occur during injector 1047*dc5640d1SHerbert Xue creation]]> 1048*dc5640d1SHerbert Xue </doc> 1049*dc5640d1SHerbert Xue </method> 1050*dc5640d1SHerbert Xue <method name="createInjector" return="com.google.inject.Injector" 1051*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1052*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1053*dc5640d1SHerbert Xue deprecated="not deprecated"> 1054*dc5640d1SHerbert Xue <param name="stage" type="com.google.inject.Stage"/> 1055*dc5640d1SHerbert Xue <param name="modules" type="com.google.inject.Module[]"/> 1056*dc5640d1SHerbert Xue <doc> 1057*dc5640d1SHerbert Xue <![CDATA[Creates an injector for the given set of modules, in a given development 1058*dc5640d1SHerbert Xue stage. 1059*dc5640d1SHerbert Xue 1060*dc5640d1SHerbert Xue @throws CreationException if one or more errors occur during injector 1061*dc5640d1SHerbert Xue creation.]]> 1062*dc5640d1SHerbert Xue </doc> 1063*dc5640d1SHerbert Xue </method> 1064*dc5640d1SHerbert Xue <method name="createInjector" return="com.google.inject.Injector" 1065*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1066*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1067*dc5640d1SHerbert Xue deprecated="not deprecated"> 1068*dc5640d1SHerbert Xue <param name="stage" type="com.google.inject.Stage"/> 1069*dc5640d1SHerbert Xue <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 1070*dc5640d1SHerbert Xue <doc> 1071*dc5640d1SHerbert Xue <![CDATA[Creates an injector for the given set of modules, in a given development 1072*dc5640d1SHerbert Xue stage. 1073*dc5640d1SHerbert Xue 1074*dc5640d1SHerbert Xue @throws CreationException if one or more errors occur during injector 1075*dc5640d1SHerbert Xue construction]]> 1076*dc5640d1SHerbert Xue </doc> 1077*dc5640d1SHerbert Xue </method> 1078*dc5640d1SHerbert Xue <doc> 1079*dc5640d1SHerbert Xue <![CDATA[The entry point to the Guice framework. Creates {@link Injector}s from 1080*dc5640d1SHerbert Xue {@link Module}s. 1081*dc5640d1SHerbert Xue 1082*dc5640d1SHerbert Xue <p>Guice supports a model of development that draws clear boundaries between 1083*dc5640d1SHerbert Xue APIs, Implementations of these APIs, Modules which configure these 1084*dc5640d1SHerbert Xue implementations, and finally Applications which consist of a collection of 1085*dc5640d1SHerbert Xue Modules. It is the Application, which typically defines your {@code main()} 1086*dc5640d1SHerbert Xue method, that bootstraps the Guice Injector using the {@code Guice} class, as 1087*dc5640d1SHerbert Xue in this example: 1088*dc5640d1SHerbert Xue <pre> 1089*dc5640d1SHerbert Xue public class FooApplication { 1090*dc5640d1SHerbert Xue public static void main(String[] args) { 1091*dc5640d1SHerbert Xue Injector injector = Guice.createInjector( 1092*dc5640d1SHerbert Xue new ModuleA(), 1093*dc5640d1SHerbert Xue new ModuleB(), 1094*dc5640d1SHerbert Xue . . . 1095*dc5640d1SHerbert Xue new FooApplicationFlagsModule(args) 1096*dc5640d1SHerbert Xue ); 1097*dc5640d1SHerbert Xue 1098*dc5640d1SHerbert Xue // Now just bootstrap the application and you're done 1099*dc5640d1SHerbert Xue FooStarter starter = injector.getInstance(FooStarter.class); 1100*dc5640d1SHerbert Xue starter.runApplication(); 1101*dc5640d1SHerbert Xue } 1102*dc5640d1SHerbert Xue } 1103*dc5640d1SHerbert Xue </pre>]]> 1104*dc5640d1SHerbert Xue </doc> 1105*dc5640d1SHerbert Xue </class> 1106*dc5640d1SHerbert Xue <!-- end class com.google.inject.Guice --> 1107*dc5640d1SHerbert Xue <!-- start class com.google.inject.ImplementedBy --> 1108*dc5640d1SHerbert Xue <class name="ImplementedBy" abstract="true" 1109*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1110*dc5640d1SHerbert Xue deprecated="not deprecated"> 1111*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 1112*dc5640d1SHerbert Xue <doc> 1113*dc5640d1SHerbert Xue <![CDATA[A pointer to the default implementation of a type. 1114*dc5640d1SHerbert Xue 1115*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 1116*dc5640d1SHerbert Xue </doc> 1117*dc5640d1SHerbert Xue </class> 1118*dc5640d1SHerbert Xue <!-- end class com.google.inject.ImplementedBy --> 1119*dc5640d1SHerbert Xue <!-- start class com.google.inject.Inject --> 1120*dc5640d1SHerbert Xue <class name="Inject" abstract="true" 1121*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1122*dc5640d1SHerbert Xue deprecated="not deprecated"> 1123*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 1124*dc5640d1SHerbert Xue <doc> 1125*dc5640d1SHerbert Xue <![CDATA[Annotates members of your implementation class (constructors, methods 1126*dc5640d1SHerbert Xue and fields) into which the {@link Injector} should inject values. 1127*dc5640d1SHerbert Xue The Injector fulfills injection requests for: 1128*dc5640d1SHerbert Xue 1129*dc5640d1SHerbert Xue <ul> 1130*dc5640d1SHerbert Xue <li>Every instance it constructs. The class being constructed must have 1131*dc5640d1SHerbert Xue exactly one of its constructors marked with {@code @Inject} or must have a 1132*dc5640d1SHerbert Xue constructor taking no parameters. The Injector then proceeds to perform 1133*dc5640d1SHerbert Xue method and field injections. 1134*dc5640d1SHerbert Xue 1135*dc5640d1SHerbert Xue <li>Pre-constructed instances passed to {@link Injector#injectMembers}, 1136*dc5640d1SHerbert Xue {@link com.google.inject.binder.LinkedBindingBuilder#toInstance(Object)} and 1137*dc5640d1SHerbert Xue {@link com.google.inject.binder.LinkedBindingBuilder#toProvider(Provider)}. 1138*dc5640d1SHerbert Xue In this case all constructors are, of course, ignored. 1139*dc5640d1SHerbert Xue 1140*dc5640d1SHerbert Xue <li>Static fields and methods of classes which any {@link Module} has 1141*dc5640d1SHerbert Xue specifically requested static injection for, using 1142*dc5640d1SHerbert Xue {@link Binder#requestStaticInjection}. 1143*dc5640d1SHerbert Xue </ul> 1144*dc5640d1SHerbert Xue 1145*dc5640d1SHerbert Xue In all cases, a member can be injected regardless of its Java access 1146*dc5640d1SHerbert Xue specifier (private, default, protected, public). 1147*dc5640d1SHerbert Xue 1148*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 1149*dc5640d1SHerbert Xue </doc> 1150*dc5640d1SHerbert Xue </class> 1151*dc5640d1SHerbert Xue <!-- end class com.google.inject.Inject --> 1152*dc5640d1SHerbert Xue <!-- start interface com.google.inject.Injector --> 1153*dc5640d1SHerbert Xue <interface name="Injector" abstract="true" 1154*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1155*dc5640d1SHerbert Xue deprecated="not deprecated"> 1156*dc5640d1SHerbert Xue <method name="injectMembers" 1157*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1158*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1159*dc5640d1SHerbert Xue deprecated="not deprecated"> 1160*dc5640d1SHerbert Xue <param name="instance" type="java.lang.Object"/> 1161*dc5640d1SHerbert Xue <doc> 1162*dc5640d1SHerbert Xue <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or 1163*dc5640d1SHerbert Xue absence of an injectable constructor. 1164*dc5640d1SHerbert Xue 1165*dc5640d1SHerbert Xue <p>Whenever Guice creates an instance, it performs this injection automatically (after first 1166*dc5640d1SHerbert Xue performing constructor injection), so if you're able to let Guice create all your objects for 1167*dc5640d1SHerbert Xue you, you'll never need to use this method. 1168*dc5640d1SHerbert Xue 1169*dc5640d1SHerbert Xue @param instance to inject members on 1170*dc5640d1SHerbert Xue 1171*dc5640d1SHerbert Xue @see Binder#getMembersInjector(Class) for a preferred alternative that supports checks before 1172*dc5640d1SHerbert Xue run time]]> 1173*dc5640d1SHerbert Xue </doc> 1174*dc5640d1SHerbert Xue </method> 1175*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 1176*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1177*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1178*dc5640d1SHerbert Xue deprecated="not deprecated"> 1179*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1180*dc5640d1SHerbert Xue <doc> 1181*dc5640d1SHerbert Xue <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 1182*dc5640d1SHerbert Xue of the given type {@code T}. 1183*dc5640d1SHerbert Xue 1184*dc5640d1SHerbert Xue @param typeLiteral type to get members injector for 1185*dc5640d1SHerbert Xue @see Binder#getMembersInjector(TypeLiteral) for an alternative that offers up front error 1186*dc5640d1SHerbert Xue detection 1187*dc5640d1SHerbert Xue @since 2.0]]> 1188*dc5640d1SHerbert Xue </doc> 1189*dc5640d1SHerbert Xue </method> 1190*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<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="java.lang.Class<T>"/> 1195*dc5640d1SHerbert Xue <doc> 1196*dc5640d1SHerbert Xue <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 1197*dc5640d1SHerbert Xue of the given type {@code T}. When feasible, use {@link Binder#getMembersInjector(TypeLiteral)} 1198*dc5640d1SHerbert Xue instead to get increased up front error detection. 1199*dc5640d1SHerbert Xue 1200*dc5640d1SHerbert Xue @param type type to get members injector for 1201*dc5640d1SHerbert Xue @see Binder#getMembersInjector(Class) for an alternative that offers up front error 1202*dc5640d1SHerbert Xue detection 1203*dc5640d1SHerbert Xue @since 2.0]]> 1204*dc5640d1SHerbert Xue </doc> 1205*dc5640d1SHerbert Xue </method> 1206*dc5640d1SHerbert Xue <method name="getBindings" return="java.util.Map<com.google.inject.Key<?>, com.google.inject.Binding<?>>" 1207*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1208*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1209*dc5640d1SHerbert Xue deprecated="not deprecated"> 1210*dc5640d1SHerbert Xue <doc> 1211*dc5640d1SHerbert Xue <![CDATA[Returns this injector's <strong>explicit</strong> bindings. 1212*dc5640d1SHerbert Xue 1213*dc5640d1SHerbert Xue <p>The returned map does not include bindings inherited from a {@link #getParent() parent 1214*dc5640d1SHerbert Xue injector}, should one exist. The returned map is guaranteed to iterate (for example, with 1215*dc5640d1SHerbert Xue its {@link Map#entrySet()} iterator) in the order of insertion. In other words, the order in 1216*dc5640d1SHerbert Xue which bindings appear in user Modules. 1217*dc5640d1SHerbert Xue 1218*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]> 1219*dc5640d1SHerbert Xue </doc> 1220*dc5640d1SHerbert Xue </method> 1221*dc5640d1SHerbert Xue <method name="getAllBindings" return="java.util.Map<com.google.inject.Key<?>, com.google.inject.Binding<?>>" 1222*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1223*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1224*dc5640d1SHerbert Xue deprecated="not deprecated"> 1225*dc5640d1SHerbert Xue <doc> 1226*dc5640d1SHerbert Xue <![CDATA[Returns a snapshot of this injector's bindings, <strong>both explicit and 1227*dc5640d1SHerbert Xue just-in-time</strong>. The returned map is immutable; it contains only the bindings that were 1228*dc5640d1SHerbert Xue present when {@code getAllBindings()} was invoked. Subsequent calls may return a map with 1229*dc5640d1SHerbert Xue additional just-in-time bindings. 1230*dc5640d1SHerbert Xue 1231*dc5640d1SHerbert Xue <p>The returned map does not include bindings inherited from a {@link #getParent() parent 1232*dc5640d1SHerbert Xue injector}, should one exist. 1233*dc5640d1SHerbert Xue 1234*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1235*dc5640d1SHerbert Xue 1236*dc5640d1SHerbert Xue @since 3.0]]> 1237*dc5640d1SHerbert Xue </doc> 1238*dc5640d1SHerbert Xue </method> 1239*dc5640d1SHerbert Xue <method name="getBinding" return="com.google.inject.Binding<T>" 1240*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1241*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1242*dc5640d1SHerbert Xue deprecated="not deprecated"> 1243*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 1244*dc5640d1SHerbert Xue <doc> 1245*dc5640d1SHerbert Xue <![CDATA[Returns the binding for the given injection key. This will be an explicit bindings if the key 1246*dc5640d1SHerbert Xue was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will 1247*dc5640d1SHerbert Xue be created if necessary. 1248*dc5640d1SHerbert Xue 1249*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1250*dc5640d1SHerbert Xue 1251*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the binding.]]> 1252*dc5640d1SHerbert Xue </doc> 1253*dc5640d1SHerbert Xue </method> 1254*dc5640d1SHerbert Xue <method name="getBinding" return="com.google.inject.Binding<T>" 1255*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1256*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1257*dc5640d1SHerbert Xue deprecated="not deprecated"> 1258*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1259*dc5640d1SHerbert Xue <doc> 1260*dc5640d1SHerbert Xue <![CDATA[Returns the binding for the given type. This will be an explicit bindings if the injection key 1261*dc5640d1SHerbert Xue was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will 1262*dc5640d1SHerbert Xue be created if necessary. 1263*dc5640d1SHerbert Xue 1264*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1265*dc5640d1SHerbert Xue 1266*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the binding. 1267*dc5640d1SHerbert Xue @since 2.0]]> 1268*dc5640d1SHerbert Xue </doc> 1269*dc5640d1SHerbert Xue </method> 1270*dc5640d1SHerbert Xue <method name="getExistingBinding" return="com.google.inject.Binding<T>" 1271*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1272*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1273*dc5640d1SHerbert Xue deprecated="not deprecated"> 1274*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 1275*dc5640d1SHerbert Xue <doc> 1276*dc5640d1SHerbert Xue <![CDATA[Returns the binding if it already exists, or null if does not exist. Unlike 1277*dc5640d1SHerbert Xue {@link #getBinding(Key)}, this does not attempt to create just-in-time bindings 1278*dc5640d1SHerbert Xue for keys that aren't bound. 1279*dc5640d1SHerbert Xue 1280*dc5640d1SHerbert Xue <p> This method is part of the Guice SPI and is intended for use by tools and extensions. 1281*dc5640d1SHerbert Xue 1282*dc5640d1SHerbert Xue @since 3.0]]> 1283*dc5640d1SHerbert Xue </doc> 1284*dc5640d1SHerbert Xue </method> 1285*dc5640d1SHerbert Xue <method name="findBindingsByType" return="java.util.List<com.google.inject.Binding<T>>" 1286*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1287*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1288*dc5640d1SHerbert Xue deprecated="not deprecated"> 1289*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<T>"/> 1290*dc5640d1SHerbert Xue <doc> 1291*dc5640d1SHerbert Xue <![CDATA[Returns all explicit bindings for {@code type}. 1292*dc5640d1SHerbert Xue 1293*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]> 1294*dc5640d1SHerbert Xue </doc> 1295*dc5640d1SHerbert Xue </method> 1296*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 1297*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1298*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1299*dc5640d1SHerbert Xue deprecated="not deprecated"> 1300*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 1301*dc5640d1SHerbert Xue <doc> 1302*dc5640d1SHerbert Xue <![CDATA[Returns the provider used to obtain instances for the given injection key. When feasible, avoid 1303*dc5640d1SHerbert Xue using this method, in favor of having Guice inject your dependencies ahead of time. 1304*dc5640d1SHerbert Xue 1305*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the provider. 1306*dc5640d1SHerbert Xue @see Binder#getProvider(Key) for an alternative that offers up front error detection]]> 1307*dc5640d1SHerbert Xue </doc> 1308*dc5640d1SHerbert Xue </method> 1309*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 1310*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1311*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1312*dc5640d1SHerbert Xue deprecated="not deprecated"> 1313*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1314*dc5640d1SHerbert Xue <doc> 1315*dc5640d1SHerbert Xue <![CDATA[Returns the provider used to obtain instances for the given type. When feasible, avoid 1316*dc5640d1SHerbert Xue using this method, in favor of having Guice inject your dependencies ahead of time. 1317*dc5640d1SHerbert Xue 1318*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the provider. 1319*dc5640d1SHerbert Xue @see Binder#getProvider(Class) for an alternative that offers up front error detection]]> 1320*dc5640d1SHerbert Xue </doc> 1321*dc5640d1SHerbert Xue </method> 1322*dc5640d1SHerbert Xue <method name="getInstance" return="T" 1323*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1324*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1325*dc5640d1SHerbert Xue deprecated="not deprecated"> 1326*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 1327*dc5640d1SHerbert Xue <doc> 1328*dc5640d1SHerbert Xue <![CDATA[Returns the appropriate instance for the given injection key; equivalent to {@code 1329*dc5640d1SHerbert Xue getProvider(key).get()}. When feasible, avoid using this method, in favor of having Guice 1330*dc5640d1SHerbert Xue inject your dependencies ahead of time. 1331*dc5640d1SHerbert Xue 1332*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the provider. 1333*dc5640d1SHerbert Xue @throws ProvisionException if there was a runtime failure while providing an instance.]]> 1334*dc5640d1SHerbert Xue </doc> 1335*dc5640d1SHerbert Xue </method> 1336*dc5640d1SHerbert Xue <method name="getInstance" return="T" 1337*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1338*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1339*dc5640d1SHerbert Xue deprecated="not deprecated"> 1340*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1341*dc5640d1SHerbert Xue <doc> 1342*dc5640d1SHerbert Xue <![CDATA[Returns the appropriate instance for the given injection type; equivalent to {@code 1343*dc5640d1SHerbert Xue getProvider(type).get()}. When feasible, avoid using this method, in favor of having Guice 1344*dc5640d1SHerbert Xue inject your dependencies ahead of time. 1345*dc5640d1SHerbert Xue 1346*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the provider. 1347*dc5640d1SHerbert Xue @throws ProvisionException if there was a runtime failure while providing an instance.]]> 1348*dc5640d1SHerbert Xue </doc> 1349*dc5640d1SHerbert Xue </method> 1350*dc5640d1SHerbert Xue <method name="getParent" return="com.google.inject.Injector" 1351*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1352*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1353*dc5640d1SHerbert Xue deprecated="not deprecated"> 1354*dc5640d1SHerbert Xue <doc> 1355*dc5640d1SHerbert Xue <![CDATA[Returns this injector's parent, or {@code null} if this is a top-level injector. 1356*dc5640d1SHerbert Xue 1357*dc5640d1SHerbert Xue @since 2.0]]> 1358*dc5640d1SHerbert Xue </doc> 1359*dc5640d1SHerbert Xue </method> 1360*dc5640d1SHerbert Xue <method name="createChildInjector" return="com.google.inject.Injector" 1361*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1362*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1363*dc5640d1SHerbert Xue deprecated="not deprecated"> 1364*dc5640d1SHerbert Xue <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 1365*dc5640d1SHerbert Xue <doc> 1366*dc5640d1SHerbert Xue <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes, 1367*dc5640d1SHerbert Xue interceptors and type converters are inherited -- they are visible to the child injector. 1368*dc5640d1SHerbert Xue Elements of the child injector are not visible to its parent. 1369*dc5640d1SHerbert Xue 1370*dc5640d1SHerbert Xue <p>Just-in-time bindings created for child injectors will be created in an ancestor injector 1371*dc5640d1SHerbert Xue whenever possible. This allows for scoped instances to be shared between injectors. Use 1372*dc5640d1SHerbert Xue explicit bindings to prevent bindings from being shared with the parent injector. Optional 1373*dc5640d1SHerbert Xue injections in just-in-time bindings (created in the parent injector) may be silently 1374*dc5640d1SHerbert Xue ignored if the optional dependencies are from the child injector. 1375*dc5640d1SHerbert Xue 1376*dc5640d1SHerbert Xue <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time 1377*dc5640d1SHerbert Xue bindings. The lone exception is the key for {@code Injector.class}, which is bound by each 1378*dc5640d1SHerbert Xue injector to itself. 1379*dc5640d1SHerbert Xue 1380*dc5640d1SHerbert Xue @since 2.0]]> 1381*dc5640d1SHerbert Xue </doc> 1382*dc5640d1SHerbert Xue </method> 1383*dc5640d1SHerbert Xue <method name="createChildInjector" return="com.google.inject.Injector" 1384*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1385*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1386*dc5640d1SHerbert Xue deprecated="not deprecated"> 1387*dc5640d1SHerbert Xue <param name="modules" type="com.google.inject.Module[]"/> 1388*dc5640d1SHerbert Xue <doc> 1389*dc5640d1SHerbert Xue <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes, 1390*dc5640d1SHerbert Xue interceptors and type converters are inherited -- they are visible to the child injector. 1391*dc5640d1SHerbert Xue Elements of the child injector are not visible to its parent. 1392*dc5640d1SHerbert Xue 1393*dc5640d1SHerbert Xue <p>Just-in-time bindings created for child injectors will be created in an ancestor injector 1394*dc5640d1SHerbert Xue whenever possible. This allows for scoped instances to be shared between injectors. Use 1395*dc5640d1SHerbert Xue explicit bindings to prevent bindings from being shared with the parent injector. 1396*dc5640d1SHerbert Xue 1397*dc5640d1SHerbert Xue <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time 1398*dc5640d1SHerbert Xue bindings. The lone exception is the key for {@code Injector.class}, which is bound by each 1399*dc5640d1SHerbert Xue injector to itself. 1400*dc5640d1SHerbert Xue 1401*dc5640d1SHerbert Xue @since 2.0]]> 1402*dc5640d1SHerbert Xue </doc> 1403*dc5640d1SHerbert Xue </method> 1404*dc5640d1SHerbert Xue <method name="getScopeBindings" return="java.util.Map<java.lang.Class<? extends java.lang.annotation.Annotation>, com.google.inject.Scope>" 1405*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1406*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1407*dc5640d1SHerbert Xue deprecated="not deprecated"> 1408*dc5640d1SHerbert Xue <doc> 1409*dc5640d1SHerbert Xue <![CDATA[Returns a map containing all scopes in the injector. The maps keys are scoping annotations 1410*dc5640d1SHerbert Xue like {@code Singleton.class}, and the values are scope instances, such as {@code 1411*dc5640d1SHerbert Xue Scopes.SINGLETON}. The returned map is immutable. 1412*dc5640d1SHerbert Xue 1413*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1414*dc5640d1SHerbert Xue 1415*dc5640d1SHerbert Xue @since 3.0]]> 1416*dc5640d1SHerbert Xue </doc> 1417*dc5640d1SHerbert Xue </method> 1418*dc5640d1SHerbert Xue <method name="getTypeConverterBindings" return="java.util.Set<com.google.inject.spi.TypeConverterBinding>" 1419*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1420*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1421*dc5640d1SHerbert Xue deprecated="not deprecated"> 1422*dc5640d1SHerbert Xue <doc> 1423*dc5640d1SHerbert Xue <![CDATA[Returns a set containing all type converter bindings in the injector. The returned set is 1424*dc5640d1SHerbert Xue immutable. 1425*dc5640d1SHerbert Xue 1426*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1427*dc5640d1SHerbert Xue 1428*dc5640d1SHerbert Xue @since 3.0]]> 1429*dc5640d1SHerbert Xue </doc> 1430*dc5640d1SHerbert Xue </method> 1431*dc5640d1SHerbert Xue <doc> 1432*dc5640d1SHerbert Xue <![CDATA[Builds the graphs of objects that make up your application. The injector tracks the dependencies 1433*dc5640d1SHerbert Xue for each type and uses bindings to inject them. This is the core of Guice, although you rarely 1434*dc5640d1SHerbert Xue interact with it directly. This "behind-the-scenes" operation is what distinguishes dependency 1435*dc5640d1SHerbert Xue injection from its cousin, the service locator pattern. 1436*dc5640d1SHerbert Xue 1437*dc5640d1SHerbert Xue <p>Contains several default bindings: 1438*dc5640d1SHerbert Xue 1439*dc5640d1SHerbert Xue <ul> 1440*dc5640d1SHerbert Xue <li>This {@link Injector} instance itself 1441*dc5640d1SHerbert Xue <li>A {@code Provider<T>} for each binding of type {@code T} 1442*dc5640d1SHerbert Xue <li>The {@link java.util.logging.Logger} for the class being injected 1443*dc5640d1SHerbert Xue <li>The {@link Stage} in which the Injector was created 1444*dc5640d1SHerbert Xue </ul> 1445*dc5640d1SHerbert Xue 1446*dc5640d1SHerbert Xue Injectors are created using the facade class {@link Guice}. 1447*dc5640d1SHerbert Xue 1448*dc5640d1SHerbert Xue <p>An injector can also {@link #injectMembers(Object) inject the dependencies} of 1449*dc5640d1SHerbert Xue already-constructed instances. This can be used to interoperate with objects created by other 1450*dc5640d1SHerbert Xue frameworks or services. 1451*dc5640d1SHerbert Xue 1452*dc5640d1SHerbert Xue <p>Injectors can be {@link #createChildInjector(Iterable) hierarchical}. Child injectors inherit 1453*dc5640d1SHerbert Xue the configuration of their parent injectors, but the converse does not hold. 1454*dc5640d1SHerbert Xue 1455*dc5640d1SHerbert Xue <p>The injector's {@link #getBindings() internal bindings} are available for introspection. This 1456*dc5640d1SHerbert Xue enables tools and extensions to operate on an injector reflectively. 1457*dc5640d1SHerbert Xue 1458*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 1459*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]> 1460*dc5640d1SHerbert Xue </doc> 1461*dc5640d1SHerbert Xue </interface> 1462*dc5640d1SHerbert Xue <!-- end interface com.google.inject.Injector --> 1463*dc5640d1SHerbert Xue <!-- start class com.google.inject.Key --> 1464*dc5640d1SHerbert Xue <class name="Key" extends="java.lang.Object" 1465*dc5640d1SHerbert Xue abstract="false" 1466*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1467*dc5640d1SHerbert Xue deprecated="not deprecated"> 1468*dc5640d1SHerbert Xue <constructor name="Key" type="java.lang.Class<? extends java.lang.annotation.Annotation>" 1469*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 1470*dc5640d1SHerbert Xue deprecated="not deprecated"> 1471*dc5640d1SHerbert Xue <doc> 1472*dc5640d1SHerbert Xue <![CDATA[Constructs a new key. Derives the type from this class's type parameter. 1473*dc5640d1SHerbert Xue 1474*dc5640d1SHerbert Xue <p>Clients create an empty anonymous subclass. Doing so embeds the type 1475*dc5640d1SHerbert Xue parameter in the anonymous class's type hierarchy so we can reconstitute it 1476*dc5640d1SHerbert Xue at runtime despite erasure. 1477*dc5640d1SHerbert Xue 1478*dc5640d1SHerbert Xue <p>Example usage for a binding of type {@code Foo} annotated with 1479*dc5640d1SHerbert Xue {@code @Bar}: 1480*dc5640d1SHerbert Xue 1481*dc5640d1SHerbert Xue <p>{@code new Key<Foo>(Bar.class) {}}.]]> 1482*dc5640d1SHerbert Xue </doc> 1483*dc5640d1SHerbert Xue </constructor> 1484*dc5640d1SHerbert Xue <constructor name="Key" type="java.lang.annotation.Annotation" 1485*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 1486*dc5640d1SHerbert Xue deprecated="not deprecated"> 1487*dc5640d1SHerbert Xue <doc> 1488*dc5640d1SHerbert Xue <![CDATA[Constructs a new key. Derives the type from this class's type parameter. 1489*dc5640d1SHerbert Xue 1490*dc5640d1SHerbert Xue <p>Clients create an empty anonymous subclass. Doing so embeds the type 1491*dc5640d1SHerbert Xue parameter in the anonymous class's type hierarchy so we can reconstitute it 1492*dc5640d1SHerbert Xue at runtime despite erasure. 1493*dc5640d1SHerbert Xue 1494*dc5640d1SHerbert Xue <p>Example usage for a binding of type {@code Foo} annotated with 1495*dc5640d1SHerbert Xue {@code @Bar}: 1496*dc5640d1SHerbert Xue 1497*dc5640d1SHerbert Xue <p>{@code new Key<Foo>(new Bar()) {}}.]]> 1498*dc5640d1SHerbert Xue </doc> 1499*dc5640d1SHerbert Xue </constructor> 1500*dc5640d1SHerbert Xue <constructor name="Key" 1501*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 1502*dc5640d1SHerbert Xue deprecated="not deprecated"> 1503*dc5640d1SHerbert Xue <doc> 1504*dc5640d1SHerbert Xue <![CDATA[Constructs a new key. Derives the type from this class's type parameter. 1505*dc5640d1SHerbert Xue 1506*dc5640d1SHerbert Xue <p>Clients create an empty anonymous subclass. Doing so embeds the type 1507*dc5640d1SHerbert Xue parameter in the anonymous class's type hierarchy so we can reconstitute it 1508*dc5640d1SHerbert Xue at runtime despite erasure. 1509*dc5640d1SHerbert Xue 1510*dc5640d1SHerbert Xue <p>Example usage for a binding of type {@code Foo}: 1511*dc5640d1SHerbert Xue 1512*dc5640d1SHerbert Xue <p>{@code new Key<Foo>() {}}.]]> 1513*dc5640d1SHerbert Xue </doc> 1514*dc5640d1SHerbert Xue </constructor> 1515*dc5640d1SHerbert Xue <method name="getTypeLiteral" return="com.google.inject.TypeLiteral<T>" 1516*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1517*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1518*dc5640d1SHerbert Xue deprecated="not deprecated"> 1519*dc5640d1SHerbert Xue <doc> 1520*dc5640d1SHerbert Xue <![CDATA[Gets the key type.]]> 1521*dc5640d1SHerbert Xue </doc> 1522*dc5640d1SHerbert Xue </method> 1523*dc5640d1SHerbert Xue <method name="getAnnotationType" return="java.lang.Class<? extends java.lang.annotation.Annotation>" 1524*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1525*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1526*dc5640d1SHerbert Xue deprecated="not deprecated"> 1527*dc5640d1SHerbert Xue <doc> 1528*dc5640d1SHerbert Xue <![CDATA[Gets the annotation type.]]> 1529*dc5640d1SHerbert Xue </doc> 1530*dc5640d1SHerbert Xue </method> 1531*dc5640d1SHerbert Xue <method name="getAnnotation" return="java.lang.annotation.Annotation" 1532*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1533*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1534*dc5640d1SHerbert Xue deprecated="not deprecated"> 1535*dc5640d1SHerbert Xue <doc> 1536*dc5640d1SHerbert Xue <![CDATA[Gets the annotation.]]> 1537*dc5640d1SHerbert Xue </doc> 1538*dc5640d1SHerbert Xue </method> 1539*dc5640d1SHerbert Xue <method name="equals" return="boolean" 1540*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1541*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1542*dc5640d1SHerbert Xue deprecated="not deprecated"> 1543*dc5640d1SHerbert Xue <param name="o" type="java.lang.Object"/> 1544*dc5640d1SHerbert Xue </method> 1545*dc5640d1SHerbert Xue <method name="hashCode" return="int" 1546*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1547*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1548*dc5640d1SHerbert Xue deprecated="not deprecated"> 1549*dc5640d1SHerbert Xue </method> 1550*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 1551*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1552*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1553*dc5640d1SHerbert Xue deprecated="not deprecated"> 1554*dc5640d1SHerbert Xue </method> 1555*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<T>" 1556*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1557*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1558*dc5640d1SHerbert Xue deprecated="not deprecated"> 1559*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1560*dc5640d1SHerbert Xue <doc> 1561*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type.]]> 1562*dc5640d1SHerbert Xue </doc> 1563*dc5640d1SHerbert Xue </method> 1564*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<T>" 1565*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1566*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1567*dc5640d1SHerbert Xue deprecated="not deprecated"> 1568*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1569*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 1570*dc5640d1SHerbert Xue <doc> 1571*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type and an annotation type.]]> 1572*dc5640d1SHerbert Xue </doc> 1573*dc5640d1SHerbert Xue </method> 1574*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<T>" 1575*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1576*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1577*dc5640d1SHerbert Xue deprecated="not deprecated"> 1578*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1579*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 1580*dc5640d1SHerbert Xue <doc> 1581*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type and an annotation.]]> 1582*dc5640d1SHerbert Xue </doc> 1583*dc5640d1SHerbert Xue </method> 1584*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<?>" 1585*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1586*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1587*dc5640d1SHerbert Xue deprecated="not deprecated"> 1588*dc5640d1SHerbert Xue <param name="type" type="java.lang.reflect.Type"/> 1589*dc5640d1SHerbert Xue <doc> 1590*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type.]]> 1591*dc5640d1SHerbert Xue </doc> 1592*dc5640d1SHerbert Xue </method> 1593*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<?>" 1594*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1595*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1596*dc5640d1SHerbert Xue deprecated="not deprecated"> 1597*dc5640d1SHerbert Xue <param name="type" type="java.lang.reflect.Type"/> 1598*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 1599*dc5640d1SHerbert Xue <doc> 1600*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type and an annotation type.]]> 1601*dc5640d1SHerbert Xue </doc> 1602*dc5640d1SHerbert Xue </method> 1603*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<?>" 1604*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1605*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1606*dc5640d1SHerbert Xue deprecated="not deprecated"> 1607*dc5640d1SHerbert Xue <param name="type" type="java.lang.reflect.Type"/> 1608*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 1609*dc5640d1SHerbert Xue <doc> 1610*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type and an annotation.]]> 1611*dc5640d1SHerbert Xue </doc> 1612*dc5640d1SHerbert Xue </method> 1613*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<T>" 1614*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1615*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1616*dc5640d1SHerbert Xue deprecated="not deprecated"> 1617*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1618*dc5640d1SHerbert Xue <doc> 1619*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type.]]> 1620*dc5640d1SHerbert Xue </doc> 1621*dc5640d1SHerbert Xue </method> 1622*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<T>" 1623*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1624*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1625*dc5640d1SHerbert Xue deprecated="not deprecated"> 1626*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1627*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 1628*dc5640d1SHerbert Xue <doc> 1629*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type and an annotation type.]]> 1630*dc5640d1SHerbert Xue </doc> 1631*dc5640d1SHerbert Xue </method> 1632*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<T>" 1633*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1634*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1635*dc5640d1SHerbert Xue deprecated="not deprecated"> 1636*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1637*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 1638*dc5640d1SHerbert Xue <doc> 1639*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type and an annotation.]]> 1640*dc5640d1SHerbert Xue </doc> 1641*dc5640d1SHerbert Xue </method> 1642*dc5640d1SHerbert Xue <method name="ofType" return="com.google.inject.Key<T>" 1643*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1644*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1645*dc5640d1SHerbert Xue deprecated="not deprecated"> 1646*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1647*dc5640d1SHerbert Xue <doc> 1648*dc5640d1SHerbert Xue <![CDATA[Returns a new key of the specified type with the same annotation as this 1649*dc5640d1SHerbert Xue key. 1650*dc5640d1SHerbert Xue 1651*dc5640d1SHerbert Xue @since 3.0]]> 1652*dc5640d1SHerbert Xue </doc> 1653*dc5640d1SHerbert Xue </method> 1654*dc5640d1SHerbert Xue <method name="ofType" return="com.google.inject.Key<?>" 1655*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1656*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1657*dc5640d1SHerbert Xue deprecated="not deprecated"> 1658*dc5640d1SHerbert Xue <param name="type" type="java.lang.reflect.Type"/> 1659*dc5640d1SHerbert Xue <doc> 1660*dc5640d1SHerbert Xue <![CDATA[Returns a new key of the specified type with the same annotation as this 1661*dc5640d1SHerbert Xue key. 1662*dc5640d1SHerbert Xue 1663*dc5640d1SHerbert Xue @since 3.0]]> 1664*dc5640d1SHerbert Xue </doc> 1665*dc5640d1SHerbert Xue </method> 1666*dc5640d1SHerbert Xue <method name="ofType" return="com.google.inject.Key<T>" 1667*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1668*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1669*dc5640d1SHerbert Xue deprecated="not deprecated"> 1670*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<T>"/> 1671*dc5640d1SHerbert Xue <doc> 1672*dc5640d1SHerbert Xue <![CDATA[Returns a new key of the specified type with the same annotation as this 1673*dc5640d1SHerbert Xue key. 1674*dc5640d1SHerbert Xue 1675*dc5640d1SHerbert Xue @since 3.0]]> 1676*dc5640d1SHerbert Xue </doc> 1677*dc5640d1SHerbert Xue </method> 1678*dc5640d1SHerbert Xue <method name="hasAttributes" return="boolean" 1679*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1680*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1681*dc5640d1SHerbert Xue deprecated="not deprecated"> 1682*dc5640d1SHerbert Xue <doc> 1683*dc5640d1SHerbert Xue <![CDATA[Returns true if this key has annotation attributes. 1684*dc5640d1SHerbert Xue 1685*dc5640d1SHerbert Xue @since 3.0]]> 1686*dc5640d1SHerbert Xue </doc> 1687*dc5640d1SHerbert Xue </method> 1688*dc5640d1SHerbert Xue <method name="withoutAttributes" return="com.google.inject.Key<T>" 1689*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1690*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1691*dc5640d1SHerbert Xue deprecated="not deprecated"> 1692*dc5640d1SHerbert Xue <doc> 1693*dc5640d1SHerbert Xue <![CDATA[Returns this key without annotation attributes, i.e. with only the 1694*dc5640d1SHerbert Xue annotation type. 1695*dc5640d1SHerbert Xue 1696*dc5640d1SHerbert Xue @since 3.0]]> 1697*dc5640d1SHerbert Xue </doc> 1698*dc5640d1SHerbert Xue </method> 1699*dc5640d1SHerbert Xue <doc> 1700*dc5640d1SHerbert Xue <![CDATA[Binding key consisting of an injection type and an optional annotation. 1701*dc5640d1SHerbert Xue Matches the type and annotation at a point of injection. 1702*dc5640d1SHerbert Xue 1703*dc5640d1SHerbert Xue <p>For example, {@code Key.get(Service.class, Transactional.class)} will 1704*dc5640d1SHerbert Xue match: 1705*dc5640d1SHerbert Xue 1706*dc5640d1SHerbert Xue <pre> 1707*dc5640d1SHerbert Xue {@literal @}Inject 1708*dc5640d1SHerbert Xue public void setService({@literal @}Transactional Service service) { 1709*dc5640d1SHerbert Xue ... 1710*dc5640d1SHerbert Xue } 1711*dc5640d1SHerbert Xue </pre> 1712*dc5640d1SHerbert Xue 1713*dc5640d1SHerbert Xue <p>{@code Key} supports generic types via subclassing just like {@link 1714*dc5640d1SHerbert Xue TypeLiteral}. 1715*dc5640d1SHerbert Xue 1716*dc5640d1SHerbert Xue <p>Keys do not differentiate between primitive types (int, char, etc.) and 1717*dc5640d1SHerbert Xue their correpsonding wrapper types (Integer, Character, etc.). Primitive 1718*dc5640d1SHerbert Xue types will be replaced with their wrapper types when keys are created. 1719*dc5640d1SHerbert Xue 1720*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 1721*dc5640d1SHerbert Xue </doc> 1722*dc5640d1SHerbert Xue </class> 1723*dc5640d1SHerbert Xue <!-- end class com.google.inject.Key --> 1724*dc5640d1SHerbert Xue <!-- start interface com.google.inject.MembersInjector --> 1725*dc5640d1SHerbert Xue <interface name="MembersInjector" abstract="true" 1726*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1727*dc5640d1SHerbert Xue deprecated="not deprecated"> 1728*dc5640d1SHerbert Xue <method name="injectMembers" 1729*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1730*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1731*dc5640d1SHerbert Xue deprecated="not deprecated"> 1732*dc5640d1SHerbert Xue <param name="instance" type="T"/> 1733*dc5640d1SHerbert Xue <doc> 1734*dc5640d1SHerbert Xue <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or 1735*dc5640d1SHerbert Xue absence of an injectable constructor. 1736*dc5640d1SHerbert Xue 1737*dc5640d1SHerbert Xue <p>Whenever Guice creates an instance, it performs this injection automatically (after first 1738*dc5640d1SHerbert Xue performing constructor injection), so if you're able to let Guice create all your objects for 1739*dc5640d1SHerbert Xue you, you'll never need to use this method. 1740*dc5640d1SHerbert Xue 1741*dc5640d1SHerbert Xue @param instance to inject members on. May be {@code null}.]]> 1742*dc5640d1SHerbert Xue </doc> 1743*dc5640d1SHerbert Xue </method> 1744*dc5640d1SHerbert Xue <doc> 1745*dc5640d1SHerbert Xue <![CDATA[Injects dependencies into the fields and methods on instances of type {@code T}. Ignores the 1746*dc5640d1SHerbert Xue presence or absence of an injectable constructor. 1747*dc5640d1SHerbert Xue 1748*dc5640d1SHerbert Xue @param <T> type to inject members of 1749*dc5640d1SHerbert Xue 1750*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 1751*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 1752*dc5640d1SHerbert Xue @since 2.0]]> 1753*dc5640d1SHerbert Xue </doc> 1754*dc5640d1SHerbert Xue </interface> 1755*dc5640d1SHerbert Xue <!-- end interface com.google.inject.MembersInjector --> 1756*dc5640d1SHerbert Xue <!-- start interface com.google.inject.Module --> 1757*dc5640d1SHerbert Xue <interface name="Module" abstract="true" 1758*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1759*dc5640d1SHerbert Xue deprecated="not deprecated"> 1760*dc5640d1SHerbert Xue <method name="configure" 1761*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1762*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1763*dc5640d1SHerbert Xue deprecated="not deprecated"> 1764*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 1765*dc5640d1SHerbert Xue <doc> 1766*dc5640d1SHerbert Xue <![CDATA[Contributes bindings and other configurations for this module to {@code binder}. 1767*dc5640d1SHerbert Xue 1768*dc5640d1SHerbert Xue <p><strong>Do not invoke this method directly</strong> to install submodules. Instead use 1769*dc5640d1SHerbert Xue {@link Binder#install(Module)}, which ensures that {@link Provides provider methods} are 1770*dc5640d1SHerbert Xue discovered.]]> 1771*dc5640d1SHerbert Xue </doc> 1772*dc5640d1SHerbert Xue </method> 1773*dc5640d1SHerbert Xue <doc> 1774*dc5640d1SHerbert Xue <![CDATA[A module contributes configuration information, typically interface 1775*dc5640d1SHerbert Xue bindings, which will be used to create an {@link Injector}. A Guice-based 1776*dc5640d1SHerbert Xue application is ultimately composed of little more than a set of 1777*dc5640d1SHerbert Xue {@code Module}s and some bootstrapping code. 1778*dc5640d1SHerbert Xue 1779*dc5640d1SHerbert Xue <p>Your Module classes can use a more streamlined syntax by extending 1780*dc5640d1SHerbert Xue {@link AbstractModule} rather than implementing this interface directly. 1781*dc5640d1SHerbert Xue 1782*dc5640d1SHerbert Xue <p>In addition to the bindings configured via {@link #configure}, bindings 1783*dc5640d1SHerbert Xue will be created for all methods annotated with {@literal @}{@link Provides}. 1784*dc5640d1SHerbert Xue Use scope and binding annotations on these methods to configure the 1785*dc5640d1SHerbert Xue bindings.]]> 1786*dc5640d1SHerbert Xue </doc> 1787*dc5640d1SHerbert Xue </interface> 1788*dc5640d1SHerbert Xue <!-- end interface com.google.inject.Module --> 1789*dc5640d1SHerbert Xue <!-- start class com.google.inject.OutOfScopeException --> 1790*dc5640d1SHerbert Xue <class name="OutOfScopeException" extends="java.lang.RuntimeException" 1791*dc5640d1SHerbert Xue abstract="false" 1792*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1793*dc5640d1SHerbert Xue deprecated="not deprecated"> 1794*dc5640d1SHerbert Xue <constructor name="OutOfScopeException" type="java.lang.String" 1795*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1796*dc5640d1SHerbert Xue deprecated="not deprecated"> 1797*dc5640d1SHerbert Xue </constructor> 1798*dc5640d1SHerbert Xue <constructor name="OutOfScopeException" type="java.lang.String, java.lang.Throwable" 1799*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1800*dc5640d1SHerbert Xue deprecated="not deprecated"> 1801*dc5640d1SHerbert Xue </constructor> 1802*dc5640d1SHerbert Xue <constructor name="OutOfScopeException" type="java.lang.Throwable" 1803*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1804*dc5640d1SHerbert Xue deprecated="not deprecated"> 1805*dc5640d1SHerbert Xue </constructor> 1806*dc5640d1SHerbert Xue <doc> 1807*dc5640d1SHerbert Xue <![CDATA[Thrown from {@link Provider#get} when an attempt is made to access a scoped 1808*dc5640d1SHerbert Xue object while the scope in question is not currently active. 1809*dc5640d1SHerbert Xue 1810*dc5640d1SHerbert Xue @author [email protected] (Kevin Bourrillion) 1811*dc5640d1SHerbert Xue @since 2.0]]> 1812*dc5640d1SHerbert Xue </doc> 1813*dc5640d1SHerbert Xue </class> 1814*dc5640d1SHerbert Xue <!-- end class com.google.inject.OutOfScopeException --> 1815*dc5640d1SHerbert Xue <!-- start interface com.google.inject.PrivateBinder --> 1816*dc5640d1SHerbert Xue <interface name="PrivateBinder" abstract="true" 1817*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1818*dc5640d1SHerbert Xue deprecated="not deprecated"> 1819*dc5640d1SHerbert Xue <implements name="com.google.inject.Binder"/> 1820*dc5640d1SHerbert Xue <method name="expose" 1821*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1822*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1823*dc5640d1SHerbert Xue deprecated="not deprecated"> 1824*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 1825*dc5640d1SHerbert Xue <doc> 1826*dc5640d1SHerbert Xue <![CDATA[Makes the binding for {@code key} available to the enclosing environment]]> 1827*dc5640d1SHerbert Xue </doc> 1828*dc5640d1SHerbert Xue </method> 1829*dc5640d1SHerbert Xue <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 1830*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1831*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1832*dc5640d1SHerbert Xue deprecated="not deprecated"> 1833*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<?>"/> 1834*dc5640d1SHerbert Xue <doc> 1835*dc5640d1SHerbert Xue <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link 1836*dc5640d1SHerbert Xue com.google.inject.binder.AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 1837*dc5640d1SHerbert Xue binding annotation.]]> 1838*dc5640d1SHerbert Xue </doc> 1839*dc5640d1SHerbert Xue </method> 1840*dc5640d1SHerbert Xue <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 1841*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1842*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1843*dc5640d1SHerbert Xue deprecated="not deprecated"> 1844*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<?>"/> 1845*dc5640d1SHerbert Xue <doc> 1846*dc5640d1SHerbert Xue <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link 1847*dc5640d1SHerbert Xue AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 1848*dc5640d1SHerbert Xue binding annotation.]]> 1849*dc5640d1SHerbert Xue </doc> 1850*dc5640d1SHerbert Xue </method> 1851*dc5640d1SHerbert Xue <method name="withSource" return="com.google.inject.PrivateBinder" 1852*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1853*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1854*dc5640d1SHerbert Xue deprecated="not deprecated"> 1855*dc5640d1SHerbert Xue <param name="source" type="java.lang.Object"/> 1856*dc5640d1SHerbert Xue </method> 1857*dc5640d1SHerbert Xue <method name="skipSources" return="com.google.inject.PrivateBinder" 1858*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1859*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1860*dc5640d1SHerbert Xue deprecated="not deprecated"> 1861*dc5640d1SHerbert Xue <param name="classesToSkip" type="java.lang.Class[]"/> 1862*dc5640d1SHerbert Xue </method> 1863*dc5640d1SHerbert Xue <doc> 1864*dc5640d1SHerbert Xue <![CDATA[Returns a binder whose configuration information is hidden from its environment by default. See 1865*dc5640d1SHerbert Xue {@link com.google.inject.PrivateModule PrivateModule} for details. 1866*dc5640d1SHerbert Xue 1867*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 1868*dc5640d1SHerbert Xue @since 2.0]]> 1869*dc5640d1SHerbert Xue </doc> 1870*dc5640d1SHerbert Xue </interface> 1871*dc5640d1SHerbert Xue <!-- end interface com.google.inject.PrivateBinder --> 1872*dc5640d1SHerbert Xue <!-- start class com.google.inject.PrivateModule --> 1873*dc5640d1SHerbert Xue <class name="PrivateModule" extends="java.lang.Object" 1874*dc5640d1SHerbert Xue abstract="true" 1875*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1876*dc5640d1SHerbert Xue deprecated="not deprecated"> 1877*dc5640d1SHerbert Xue <implements name="com.google.inject.Module"/> 1878*dc5640d1SHerbert Xue <constructor name="PrivateModule" 1879*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1880*dc5640d1SHerbert Xue deprecated="not deprecated"> 1881*dc5640d1SHerbert Xue </constructor> 1882*dc5640d1SHerbert Xue <method name="configure" 1883*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="true" 1884*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1885*dc5640d1SHerbert Xue deprecated="not deprecated"> 1886*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 1887*dc5640d1SHerbert Xue </method> 1888*dc5640d1SHerbert Xue <method name="configure" 1889*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1890*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 1891*dc5640d1SHerbert Xue deprecated="not deprecated"> 1892*dc5640d1SHerbert Xue <doc> 1893*dc5640d1SHerbert Xue <![CDATA[Creates bindings and other configurations private to this module. Use {@link #expose(Class) 1894*dc5640d1SHerbert Xue expose()} to make the bindings in this module available externally.]]> 1895*dc5640d1SHerbert Xue </doc> 1896*dc5640d1SHerbert Xue </method> 1897*dc5640d1SHerbert Xue <method name="expose" 1898*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1899*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1900*dc5640d1SHerbert Xue deprecated="not deprecated"> 1901*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 1902*dc5640d1SHerbert Xue <doc> 1903*dc5640d1SHerbert Xue <![CDATA[Makes the binding for {@code key} available to other modules and the injector.]]> 1904*dc5640d1SHerbert Xue </doc> 1905*dc5640d1SHerbert Xue </method> 1906*dc5640d1SHerbert Xue <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 1907*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1908*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1909*dc5640d1SHerbert Xue deprecated="not deprecated"> 1910*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<?>"/> 1911*dc5640d1SHerbert Xue <doc> 1912*dc5640d1SHerbert Xue <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link 1913*dc5640d1SHerbert Xue AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 1914*dc5640d1SHerbert Xue binding annotation.]]> 1915*dc5640d1SHerbert Xue </doc> 1916*dc5640d1SHerbert Xue </method> 1917*dc5640d1SHerbert Xue <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 1918*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1919*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1920*dc5640d1SHerbert Xue deprecated="not deprecated"> 1921*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<?>"/> 1922*dc5640d1SHerbert Xue <doc> 1923*dc5640d1SHerbert Xue <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link 1924*dc5640d1SHerbert Xue AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 1925*dc5640d1SHerbert Xue binding annotation.]]> 1926*dc5640d1SHerbert Xue </doc> 1927*dc5640d1SHerbert Xue </method> 1928*dc5640d1SHerbert Xue <method name="binder" return="com.google.inject.PrivateBinder" 1929*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1930*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1931*dc5640d1SHerbert Xue deprecated="not deprecated"> 1932*dc5640d1SHerbert Xue <doc> 1933*dc5640d1SHerbert Xue <![CDATA[Returns the current binder.]]> 1934*dc5640d1SHerbert Xue </doc> 1935*dc5640d1SHerbert Xue </method> 1936*dc5640d1SHerbert Xue <method name="bindScope" 1937*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1938*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1939*dc5640d1SHerbert Xue deprecated="not deprecated"> 1940*dc5640d1SHerbert Xue <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 1941*dc5640d1SHerbert Xue <param name="scope" type="com.google.inject.Scope"/> 1942*dc5640d1SHerbert Xue <doc> 1943*dc5640d1SHerbert Xue <![CDATA[@see Binder#bindScope(Class, Scope)]]> 1944*dc5640d1SHerbert Xue </doc> 1945*dc5640d1SHerbert Xue </method> 1946*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder<T>" 1947*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1948*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1949*dc5640d1SHerbert Xue deprecated="not deprecated"> 1950*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 1951*dc5640d1SHerbert Xue <doc> 1952*dc5640d1SHerbert Xue <![CDATA[@see Binder#bind(Key)]]> 1953*dc5640d1SHerbert Xue </doc> 1954*dc5640d1SHerbert Xue </method> 1955*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 1956*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1957*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1958*dc5640d1SHerbert Xue deprecated="not deprecated"> 1959*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1960*dc5640d1SHerbert Xue <doc> 1961*dc5640d1SHerbert Xue <![CDATA[@see Binder#bind(TypeLiteral)]]> 1962*dc5640d1SHerbert Xue </doc> 1963*dc5640d1SHerbert Xue </method> 1964*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 1965*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1966*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1967*dc5640d1SHerbert Xue deprecated="not deprecated"> 1968*dc5640d1SHerbert Xue <param name="clazz" type="java.lang.Class<T>"/> 1969*dc5640d1SHerbert Xue <doc> 1970*dc5640d1SHerbert Xue <![CDATA[@see Binder#bind(Class)]]> 1971*dc5640d1SHerbert Xue </doc> 1972*dc5640d1SHerbert Xue </method> 1973*dc5640d1SHerbert Xue <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder" 1974*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1975*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1976*dc5640d1SHerbert Xue deprecated="not deprecated"> 1977*dc5640d1SHerbert Xue <doc> 1978*dc5640d1SHerbert Xue <![CDATA[@see Binder#bindConstant()]]> 1979*dc5640d1SHerbert Xue </doc> 1980*dc5640d1SHerbert Xue </method> 1981*dc5640d1SHerbert Xue <method name="install" 1982*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1983*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1984*dc5640d1SHerbert Xue deprecated="not deprecated"> 1985*dc5640d1SHerbert Xue <param name="module" type="com.google.inject.Module"/> 1986*dc5640d1SHerbert Xue <doc> 1987*dc5640d1SHerbert Xue <![CDATA[@see Binder#install(Module)]]> 1988*dc5640d1SHerbert Xue </doc> 1989*dc5640d1SHerbert Xue </method> 1990*dc5640d1SHerbert Xue <method name="addError" 1991*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1992*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1993*dc5640d1SHerbert Xue deprecated="not deprecated"> 1994*dc5640d1SHerbert Xue <param name="message" type="java.lang.String"/> 1995*dc5640d1SHerbert Xue <param name="arguments" type="java.lang.Object[]"/> 1996*dc5640d1SHerbert Xue <doc> 1997*dc5640d1SHerbert Xue <![CDATA[@see Binder#addError(String, Object[])]]> 1998*dc5640d1SHerbert Xue </doc> 1999*dc5640d1SHerbert Xue </method> 2000*dc5640d1SHerbert Xue <method name="addError" 2001*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2002*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2003*dc5640d1SHerbert Xue deprecated="not deprecated"> 2004*dc5640d1SHerbert Xue <param name="t" type="java.lang.Throwable"/> 2005*dc5640d1SHerbert Xue <doc> 2006*dc5640d1SHerbert Xue <![CDATA[@see Binder#addError(Throwable)]]> 2007*dc5640d1SHerbert Xue </doc> 2008*dc5640d1SHerbert Xue </method> 2009*dc5640d1SHerbert Xue <method name="addError" 2010*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2011*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2012*dc5640d1SHerbert Xue deprecated="not deprecated"> 2013*dc5640d1SHerbert Xue <param name="message" type="com.google.inject.spi.Message"/> 2014*dc5640d1SHerbert Xue <doc> 2015*dc5640d1SHerbert Xue <![CDATA[@see Binder#addError(Message)]]> 2016*dc5640d1SHerbert Xue </doc> 2017*dc5640d1SHerbert Xue </method> 2018*dc5640d1SHerbert Xue <method name="requestInjection" 2019*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2020*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2021*dc5640d1SHerbert Xue deprecated="not deprecated"> 2022*dc5640d1SHerbert Xue <param name="instance" type="java.lang.Object"/> 2023*dc5640d1SHerbert Xue <doc> 2024*dc5640d1SHerbert Xue <![CDATA[@see Binder#requestInjection(Object)]]> 2025*dc5640d1SHerbert Xue </doc> 2026*dc5640d1SHerbert Xue </method> 2027*dc5640d1SHerbert Xue <method name="requestStaticInjection" 2028*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2029*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2030*dc5640d1SHerbert Xue deprecated="not deprecated"> 2031*dc5640d1SHerbert Xue <param name="types" type="java.lang.Class[]"/> 2032*dc5640d1SHerbert Xue <doc> 2033*dc5640d1SHerbert Xue <![CDATA[@see Binder#requestStaticInjection(Class[])]]> 2034*dc5640d1SHerbert Xue </doc> 2035*dc5640d1SHerbert Xue </method> 2036*dc5640d1SHerbert Xue <method name="bindInterceptor" 2037*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2038*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2039*dc5640d1SHerbert Xue deprecated="not deprecated"> 2040*dc5640d1SHerbert Xue <param name="classMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>"/> 2041*dc5640d1SHerbert Xue <param name="methodMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>"/> 2042*dc5640d1SHerbert Xue <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/> 2043*dc5640d1SHerbert Xue <doc> 2044*dc5640d1SHerbert Xue <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher, com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])]]> 2045*dc5640d1SHerbert Xue </doc> 2046*dc5640d1SHerbert Xue </method> 2047*dc5640d1SHerbert Xue <method name="requireBinding" 2048*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2049*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2050*dc5640d1SHerbert Xue deprecated="not deprecated"> 2051*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 2052*dc5640d1SHerbert Xue <doc> 2053*dc5640d1SHerbert Xue <![CDATA[Instructs Guice to require a binding to the given key.]]> 2054*dc5640d1SHerbert Xue </doc> 2055*dc5640d1SHerbert Xue </method> 2056*dc5640d1SHerbert Xue <method name="requireBinding" 2057*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2058*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2059*dc5640d1SHerbert Xue deprecated="not deprecated"> 2060*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<?>"/> 2061*dc5640d1SHerbert Xue <doc> 2062*dc5640d1SHerbert Xue <![CDATA[Instructs Guice to require a binding to the given type.]]> 2063*dc5640d1SHerbert Xue </doc> 2064*dc5640d1SHerbert Xue </method> 2065*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 2066*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2067*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2068*dc5640d1SHerbert Xue deprecated="not deprecated"> 2069*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 2070*dc5640d1SHerbert Xue <doc> 2071*dc5640d1SHerbert Xue <![CDATA[@see Binder#getProvider(Key)]]> 2072*dc5640d1SHerbert Xue </doc> 2073*dc5640d1SHerbert Xue </method> 2074*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 2075*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2076*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2077*dc5640d1SHerbert Xue deprecated="not deprecated"> 2078*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 2079*dc5640d1SHerbert Xue <doc> 2080*dc5640d1SHerbert Xue <![CDATA[@see Binder#getProvider(Class)]]> 2081*dc5640d1SHerbert Xue </doc> 2082*dc5640d1SHerbert Xue </method> 2083*dc5640d1SHerbert Xue <method name="convertToTypes" 2084*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2085*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2086*dc5640d1SHerbert Xue deprecated="not deprecated"> 2087*dc5640d1SHerbert Xue <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> 2088*dc5640d1SHerbert Xue <param name="converter" type="com.google.inject.spi.TypeConverter"/> 2089*dc5640d1SHerbert Xue <doc> 2090*dc5640d1SHerbert Xue <![CDATA[@see Binder#convertToTypes(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeConverter)]]> 2091*dc5640d1SHerbert Xue </doc> 2092*dc5640d1SHerbert Xue </method> 2093*dc5640d1SHerbert Xue <method name="currentStage" return="com.google.inject.Stage" 2094*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2095*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2096*dc5640d1SHerbert Xue deprecated="not deprecated"> 2097*dc5640d1SHerbert Xue <doc> 2098*dc5640d1SHerbert Xue <![CDATA[@see Binder#currentStage()]]> 2099*dc5640d1SHerbert Xue </doc> 2100*dc5640d1SHerbert Xue </method> 2101*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 2102*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2103*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 2104*dc5640d1SHerbert Xue deprecated="not deprecated"> 2105*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 2106*dc5640d1SHerbert Xue <doc> 2107*dc5640d1SHerbert Xue <![CDATA[@see Binder#getMembersInjector(Class)]]> 2108*dc5640d1SHerbert Xue </doc> 2109*dc5640d1SHerbert Xue </method> 2110*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 2111*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2112*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 2113*dc5640d1SHerbert Xue deprecated="not deprecated"> 2114*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<T>"/> 2115*dc5640d1SHerbert Xue <doc> 2116*dc5640d1SHerbert Xue <![CDATA[@see Binder#getMembersInjector(TypeLiteral)]]> 2117*dc5640d1SHerbert Xue </doc> 2118*dc5640d1SHerbert Xue </method> 2119*dc5640d1SHerbert Xue <method name="bindListener" 2120*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2121*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 2122*dc5640d1SHerbert Xue deprecated="not deprecated"> 2123*dc5640d1SHerbert Xue <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> 2124*dc5640d1SHerbert Xue <param name="listener" type="com.google.inject.spi.TypeListener"/> 2125*dc5640d1SHerbert Xue <doc> 2126*dc5640d1SHerbert Xue <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeListener)]]> 2127*dc5640d1SHerbert Xue </doc> 2128*dc5640d1SHerbert Xue </method> 2129*dc5640d1SHerbert Xue <doc> 2130*dc5640d1SHerbert Xue <![CDATA[A module whose configuration information is hidden from its environment by default. Only bindings 2131*dc5640d1SHerbert Xue that are explicitly exposed will be available to other modules and to the users of the injector. 2132*dc5640d1SHerbert Xue This module may expose the bindings it creates and the bindings of the modules it installs. 2133*dc5640d1SHerbert Xue 2134*dc5640d1SHerbert Xue <p>A private module can be nested within a regular module or within another private module using 2135*dc5640d1SHerbert Xue {@link Binder#install install()}. Its bindings live in a new environment that inherits bindings, 2136*dc5640d1SHerbert Xue type converters, scopes, and interceptors from the surrounding ("parent") environment. When you 2137*dc5640d1SHerbert Xue nest multiple private modules, the result is a tree of environments where the injector's 2138*dc5640d1SHerbert Xue environment is the root. 2139*dc5640d1SHerbert Xue 2140*dc5640d1SHerbert Xue <p>Guice EDSL bindings can be exposed with {@link #expose(Class) expose()}. {@literal @}{@link 2141*dc5640d1SHerbert Xue com.google.inject.Provides Provides} bindings can be exposed with the {@literal @}{@link 2142*dc5640d1SHerbert Xue Exposed} annotation: 2143*dc5640d1SHerbert Xue 2144*dc5640d1SHerbert Xue <pre> 2145*dc5640d1SHerbert Xue public class FooBarBazModule extends PrivateModule { 2146*dc5640d1SHerbert Xue protected void configure() { 2147*dc5640d1SHerbert Xue bind(Foo.class).to(RealFoo.class); 2148*dc5640d1SHerbert Xue expose(Foo.class); 2149*dc5640d1SHerbert Xue 2150*dc5640d1SHerbert Xue install(new TransactionalBarModule()); 2151*dc5640d1SHerbert Xue expose(Bar.class).annotatedWith(Transactional.class); 2152*dc5640d1SHerbert Xue 2153*dc5640d1SHerbert Xue bind(SomeImplementationDetail.class); 2154*dc5640d1SHerbert Xue install(new MoreImplementationDetailsModule()); 2155*dc5640d1SHerbert Xue } 2156*dc5640d1SHerbert Xue 2157*dc5640d1SHerbert Xue {@literal @}Provides {@literal @}Exposed 2158*dc5640d1SHerbert Xue public Baz provideBaz() { 2159*dc5640d1SHerbert Xue return new SuperBaz(); 2160*dc5640d1SHerbert Xue } 2161*dc5640d1SHerbert Xue } 2162*dc5640d1SHerbert Xue </pre> 2163*dc5640d1SHerbert Xue 2164*dc5640d1SHerbert Xue <p>Private modules are implemented using {@link Injector#createChildInjector(Module[]) parent 2165*dc5640d1SHerbert Xue injectors}. When it can satisfy their dependencies, just-in-time bindings will be created in the 2166*dc5640d1SHerbert Xue root environment. Such bindings are shared among all environments in the tree. 2167*dc5640d1SHerbert Xue 2168*dc5640d1SHerbert Xue <p>The scope of a binding is constrained to its environment. A singleton bound in a private 2169*dc5640d1SHerbert Xue module will be unique to its environment. But a binding for the same type in a different private 2170*dc5640d1SHerbert Xue module will yield a different instance. 2171*dc5640d1SHerbert Xue 2172*dc5640d1SHerbert Xue <p>A shared binding that injects the {@code Injector} gets the root injector, which only has 2173*dc5640d1SHerbert Xue access to bindings in the root environment. An explicit binding that injects the {@code Injector} 2174*dc5640d1SHerbert Xue gets access to all bindings in the child environment. 2175*dc5640d1SHerbert Xue 2176*dc5640d1SHerbert Xue <p>To promote a just-in-time binding to an explicit binding, bind it: 2177*dc5640d1SHerbert Xue <pre> 2178*dc5640d1SHerbert Xue bind(FooImpl.class); 2179*dc5640d1SHerbert Xue </pre> 2180*dc5640d1SHerbert Xue 2181*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 2182*dc5640d1SHerbert Xue @since 2.0]]> 2183*dc5640d1SHerbert Xue </doc> 2184*dc5640d1SHerbert Xue </class> 2185*dc5640d1SHerbert Xue <!-- end class com.google.inject.PrivateModule --> 2186*dc5640d1SHerbert Xue <!-- start class com.google.inject.ProvidedBy --> 2187*dc5640d1SHerbert Xue <class name="ProvidedBy" abstract="true" 2188*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2189*dc5640d1SHerbert Xue deprecated="not deprecated"> 2190*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 2191*dc5640d1SHerbert Xue <doc> 2192*dc5640d1SHerbert Xue <![CDATA[A pointer to the default provider type for a type. 2193*dc5640d1SHerbert Xue 2194*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2195*dc5640d1SHerbert Xue </doc> 2196*dc5640d1SHerbert Xue </class> 2197*dc5640d1SHerbert Xue <!-- end class com.google.inject.ProvidedBy --> 2198*dc5640d1SHerbert Xue <!-- start interface com.google.inject.Provider --> 2199*dc5640d1SHerbert Xue <interface name="Provider" abstract="true" 2200*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2201*dc5640d1SHerbert Xue deprecated="not deprecated"> 2202*dc5640d1SHerbert Xue <implements name="javax.inject.Provider<T>"/> 2203*dc5640d1SHerbert Xue <method name="get" return="T" 2204*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2205*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2206*dc5640d1SHerbert Xue deprecated="not deprecated"> 2207*dc5640d1SHerbert Xue <doc> 2208*dc5640d1SHerbert Xue <![CDATA[Provides an instance of {@code T}. Must never return {@code null}. 2209*dc5640d1SHerbert Xue 2210*dc5640d1SHerbert Xue @throws OutOfScopeException when an attempt is made to access a scoped object while the scope 2211*dc5640d1SHerbert Xue in question is not currently active 2212*dc5640d1SHerbert Xue @throws ProvisionException if an instance cannot be provided. Such exceptions include messages 2213*dc5640d1SHerbert Xue and throwables to describe why provision failed.]]> 2214*dc5640d1SHerbert Xue </doc> 2215*dc5640d1SHerbert Xue </method> 2216*dc5640d1SHerbert Xue <doc> 2217*dc5640d1SHerbert Xue <![CDATA[An object capable of providing instances of type {@code T}. Providers are used in numerous ways 2218*dc5640d1SHerbert Xue by Guice: 2219*dc5640d1SHerbert Xue 2220*dc5640d1SHerbert Xue <ul> 2221*dc5640d1SHerbert Xue <li>When the default means for obtaining instances (an injectable or parameterless constructor) 2222*dc5640d1SHerbert Xue is insufficient for a particular binding, the module can specify a custom {@code Provider} 2223*dc5640d1SHerbert Xue instead, to control exactly how Guice creates or obtains instances for the binding. 2224*dc5640d1SHerbert Xue 2225*dc5640d1SHerbert Xue <li>An implementation class may always choose to have a {@code Provider<T>} instance injected, 2226*dc5640d1SHerbert Xue rather than having a {@code T} injected directly. This may give you access to multiple 2227*dc5640d1SHerbert Xue instances, instances you wish to safely mutate and discard, instances which are out of scope 2228*dc5640d1SHerbert Xue (e.g. using a {@code @RequestScoped} object from within a {@code @SessionScoped} object), or 2229*dc5640d1SHerbert Xue instances that will be initialized lazily. 2230*dc5640d1SHerbert Xue 2231*dc5640d1SHerbert Xue <li>A custom {@link Scope} is implemented as a decorator of {@code Provider<T>}, which decides 2232*dc5640d1SHerbert Xue when to delegate to the backing provider and when to provide the instance some other way. 2233*dc5640d1SHerbert Xue 2234*dc5640d1SHerbert Xue <li>The {@link Injector} offers access to the {@code Provider<T>} it uses to fulfill requests 2235*dc5640d1SHerbert Xue for a given key, via the {@link Injector#getProvider} methods. 2236*dc5640d1SHerbert Xue </ul> 2237*dc5640d1SHerbert Xue 2238*dc5640d1SHerbert Xue @param <T> the type of object this provides 2239*dc5640d1SHerbert Xue 2240*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2241*dc5640d1SHerbert Xue </doc> 2242*dc5640d1SHerbert Xue </interface> 2243*dc5640d1SHerbert Xue <!-- end interface com.google.inject.Provider --> 2244*dc5640d1SHerbert Xue <!-- start class com.google.inject.Provides --> 2245*dc5640d1SHerbert Xue <class name="Provides" abstract="true" 2246*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2247*dc5640d1SHerbert Xue deprecated="not deprecated"> 2248*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 2249*dc5640d1SHerbert Xue <doc> 2250*dc5640d1SHerbert Xue <![CDATA[Annotates methods of a {@link Module} to create a provider method binding. The method's return 2251*dc5640d1SHerbert Xue type is bound to it's returned value. Guice will pass dependencies to the method as parameters. 2252*dc5640d1SHerbert Xue 2253*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 2254*dc5640d1SHerbert Xue @since 2.0]]> 2255*dc5640d1SHerbert Xue </doc> 2256*dc5640d1SHerbert Xue </class> 2257*dc5640d1SHerbert Xue <!-- end class com.google.inject.Provides --> 2258*dc5640d1SHerbert Xue <!-- start class com.google.inject.ProvisionException --> 2259*dc5640d1SHerbert Xue <class name="ProvisionException" extends="java.lang.RuntimeException" 2260*dc5640d1SHerbert Xue abstract="false" 2261*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2262*dc5640d1SHerbert Xue deprecated="not deprecated"> 2263*dc5640d1SHerbert Xue <constructor name="ProvisionException" type="java.lang.Iterable<com.google.inject.spi.Message>" 2264*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2265*dc5640d1SHerbert Xue deprecated="not deprecated"> 2266*dc5640d1SHerbert Xue <doc> 2267*dc5640d1SHerbert Xue <![CDATA[Creates a ProvisionException containing {@code messages}.]]> 2268*dc5640d1SHerbert Xue </doc> 2269*dc5640d1SHerbert Xue </constructor> 2270*dc5640d1SHerbert Xue <constructor name="ProvisionException" type="java.lang.String, java.lang.Throwable" 2271*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2272*dc5640d1SHerbert Xue deprecated="not deprecated"> 2273*dc5640d1SHerbert Xue </constructor> 2274*dc5640d1SHerbert Xue <constructor name="ProvisionException" type="java.lang.String" 2275*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2276*dc5640d1SHerbert Xue deprecated="not deprecated"> 2277*dc5640d1SHerbert Xue </constructor> 2278*dc5640d1SHerbert Xue <method name="getErrorMessages" return="java.util.Collection<com.google.inject.spi.Message>" 2279*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2280*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2281*dc5640d1SHerbert Xue deprecated="not deprecated"> 2282*dc5640d1SHerbert Xue <doc> 2283*dc5640d1SHerbert Xue <![CDATA[Returns messages for the errors that caused this exception.]]> 2284*dc5640d1SHerbert Xue </doc> 2285*dc5640d1SHerbert Xue </method> 2286*dc5640d1SHerbert Xue <method name="getMessage" return="java.lang.String" 2287*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2288*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2289*dc5640d1SHerbert Xue deprecated="not deprecated"> 2290*dc5640d1SHerbert Xue </method> 2291*dc5640d1SHerbert Xue <doc> 2292*dc5640d1SHerbert Xue <![CDATA[Indicates that there was a runtime failure while providing an instance. 2293*dc5640d1SHerbert Xue 2294*dc5640d1SHerbert Xue @author [email protected] (Kevin Bourrillion) 2295*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 2296*dc5640d1SHerbert Xue @since 2.0]]> 2297*dc5640d1SHerbert Xue </doc> 2298*dc5640d1SHerbert Xue </class> 2299*dc5640d1SHerbert Xue <!-- end class com.google.inject.ProvisionException --> 2300*dc5640d1SHerbert Xue <!-- start interface com.google.inject.Scope --> 2301*dc5640d1SHerbert Xue <interface name="Scope" abstract="true" 2302*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2303*dc5640d1SHerbert Xue deprecated="not deprecated"> 2304*dc5640d1SHerbert Xue <method name="scope" return="com.google.inject.Provider<T>" 2305*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2306*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2307*dc5640d1SHerbert Xue deprecated="not deprecated"> 2308*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 2309*dc5640d1SHerbert Xue <param name="unscoped" type="com.google.inject.Provider<T>"/> 2310*dc5640d1SHerbert Xue <doc> 2311*dc5640d1SHerbert Xue <![CDATA[Scopes a provider. The returned provider returns objects from this scope. 2312*dc5640d1SHerbert Xue If an object does not exist in this scope, the provider can use the given 2313*dc5640d1SHerbert Xue unscoped provider to retrieve one. 2314*dc5640d1SHerbert Xue 2315*dc5640d1SHerbert Xue <p>Scope implementations are strongly encouraged to override 2316*dc5640d1SHerbert Xue {@link Object#toString} in the returned provider and include the backing 2317*dc5640d1SHerbert Xue provider's {@code toString()} output. 2318*dc5640d1SHerbert Xue 2319*dc5640d1SHerbert Xue @param key binding key 2320*dc5640d1SHerbert Xue @param unscoped locates an instance when one doesn't already exist in this 2321*dc5640d1SHerbert Xue scope. 2322*dc5640d1SHerbert Xue @return a new provider which only delegates to the given unscoped provider 2323*dc5640d1SHerbert Xue when an instance of the requested object doesn't already exist in this 2324*dc5640d1SHerbert Xue scope]]> 2325*dc5640d1SHerbert Xue </doc> 2326*dc5640d1SHerbert Xue </method> 2327*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 2328*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2329*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2330*dc5640d1SHerbert Xue deprecated="not deprecated"> 2331*dc5640d1SHerbert Xue <doc> 2332*dc5640d1SHerbert Xue <![CDATA[A short but useful description of this scope. For comparison, the standard 2333*dc5640d1SHerbert Xue scopes that ship with guice use the descriptions 2334*dc5640d1SHerbert Xue {@code "Scopes.SINGLETON"}, {@code "ServletScopes.SESSION"} and 2335*dc5640d1SHerbert Xue {@code "ServletScopes.REQUEST"}.]]> 2336*dc5640d1SHerbert Xue </doc> 2337*dc5640d1SHerbert Xue </method> 2338*dc5640d1SHerbert Xue <doc> 2339*dc5640d1SHerbert Xue <![CDATA[A scope is a level of visibility that instances provided by Guice may have. 2340*dc5640d1SHerbert Xue By default, an instance created by the {@link Injector} has <i>no scope</i>, 2341*dc5640d1SHerbert Xue meaning it has no state from the framework's perspective -- the 2342*dc5640d1SHerbert Xue {@code Injector} creates it, injects it once into the class that required it, 2343*dc5640d1SHerbert Xue and then immediately forgets it. Associating a scope with a particular 2344*dc5640d1SHerbert Xue binding allows the created instance to be "remembered" and possibly used 2345*dc5640d1SHerbert Xue again for other injections. 2346*dc5640d1SHerbert Xue 2347*dc5640d1SHerbert Xue <p>An example of a scope is {@link Scopes#SINGLETON}. 2348*dc5640d1SHerbert Xue 2349*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2350*dc5640d1SHerbert Xue </doc> 2351*dc5640d1SHerbert Xue </interface> 2352*dc5640d1SHerbert Xue <!-- end interface com.google.inject.Scope --> 2353*dc5640d1SHerbert Xue <!-- start class com.google.inject.ScopeAnnotation --> 2354*dc5640d1SHerbert Xue <class name="ScopeAnnotation" abstract="true" 2355*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2356*dc5640d1SHerbert Xue deprecated="not deprecated"> 2357*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 2358*dc5640d1SHerbert Xue <doc> 2359*dc5640d1SHerbert Xue <![CDATA[Annotates annotations which are used for scoping. Only one such annotation 2360*dc5640d1SHerbert Xue may apply to a single implementation class. You must also annotate scope 2361*dc5640d1SHerbert Xue annotations with {@code @Retention(RUNTIME)}. For example: 2362*dc5640d1SHerbert Xue 2363*dc5640d1SHerbert Xue <pre> 2364*dc5640d1SHerbert Xue {@code @}Retention(RUNTIME) 2365*dc5640d1SHerbert Xue {@code @}Target(TYPE, METHOD) 2366*dc5640d1SHerbert Xue {@code @}ScopeAnnotation 2367*dc5640d1SHerbert Xue public {@code @}interface SessionScoped {} 2368*dc5640d1SHerbert Xue </pre> 2369*dc5640d1SHerbert Xue 2370*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2371*dc5640d1SHerbert Xue </doc> 2372*dc5640d1SHerbert Xue </class> 2373*dc5640d1SHerbert Xue <!-- end class com.google.inject.ScopeAnnotation --> 2374*dc5640d1SHerbert Xue <!-- start class com.google.inject.Scopes --> 2375*dc5640d1SHerbert Xue <class name="Scopes" extends="java.lang.Object" 2376*dc5640d1SHerbert Xue abstract="false" 2377*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2378*dc5640d1SHerbert Xue deprecated="not deprecated"> 2379*dc5640d1SHerbert Xue <method name="isSingleton" return="boolean" 2380*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2381*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 2382*dc5640d1SHerbert Xue deprecated="not deprecated"> 2383*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.Binding<?>"/> 2384*dc5640d1SHerbert Xue <doc> 2385*dc5640d1SHerbert Xue <![CDATA[Returns true if {@code binding} is singleton-scoped. If the binding is a {@link 2386*dc5640d1SHerbert Xue com.google.inject.spi.LinkedKeyBinding linked key binding} and belongs to an injector (ie. it 2387*dc5640d1SHerbert Xue was retrieved via {@link Injector#getBinding Injector.getBinding()}), then this method will 2388*dc5640d1SHerbert Xue also true if the target binding is singleton-scoped. 2389*dc5640d1SHerbert Xue 2390*dc5640d1SHerbert Xue @since 3.0]]> 2391*dc5640d1SHerbert Xue </doc> 2392*dc5640d1SHerbert Xue </method> 2393*dc5640d1SHerbert Xue <field name="SINGLETON" type="com.google.inject.Scope" 2394*dc5640d1SHerbert Xue transient="false" volatile="false" 2395*dc5640d1SHerbert Xue static="true" final="true" visibility="public" 2396*dc5640d1SHerbert Xue deprecated="not deprecated"> 2397*dc5640d1SHerbert Xue <doc> 2398*dc5640d1SHerbert Xue <![CDATA[One instance per {@link Injector}. Also see {@code @}{@link Singleton}.]]> 2399*dc5640d1SHerbert Xue </doc> 2400*dc5640d1SHerbert Xue </field> 2401*dc5640d1SHerbert Xue <field name="NO_SCOPE" type="com.google.inject.Scope" 2402*dc5640d1SHerbert Xue transient="false" volatile="false" 2403*dc5640d1SHerbert Xue static="true" final="true" visibility="public" 2404*dc5640d1SHerbert Xue deprecated="not deprecated"> 2405*dc5640d1SHerbert Xue <doc> 2406*dc5640d1SHerbert Xue <![CDATA[No scope; the same as not applying any scope at all. Each time the 2407*dc5640d1SHerbert Xue Injector obtains an instance of an object with "no scope", it injects this 2408*dc5640d1SHerbert Xue instance then immediately forgets it. When the next request for the same 2409*dc5640d1SHerbert Xue binding arrives it will need to obtain the instance over again. 2410*dc5640d1SHerbert Xue 2411*dc5640d1SHerbert Xue <p>This exists only in case a class has been annotated with a scope 2412*dc5640d1SHerbert Xue annotation such as {@link Singleton @Singleton}, and you need to override 2413*dc5640d1SHerbert Xue this to "no scope" in your binding. 2414*dc5640d1SHerbert Xue 2415*dc5640d1SHerbert Xue @since 2.0]]> 2416*dc5640d1SHerbert Xue </doc> 2417*dc5640d1SHerbert Xue </field> 2418*dc5640d1SHerbert Xue <doc> 2419*dc5640d1SHerbert Xue <![CDATA[Built-in scope implementations. 2420*dc5640d1SHerbert Xue 2421*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2422*dc5640d1SHerbert Xue </doc> 2423*dc5640d1SHerbert Xue </class> 2424*dc5640d1SHerbert Xue <!-- end class com.google.inject.Scopes --> 2425*dc5640d1SHerbert Xue <!-- start class com.google.inject.Singleton --> 2426*dc5640d1SHerbert Xue <class name="Singleton" abstract="true" 2427*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2428*dc5640d1SHerbert Xue deprecated="not deprecated"> 2429*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 2430*dc5640d1SHerbert Xue <doc> 2431*dc5640d1SHerbert Xue <![CDATA[Apply this to implementation classes when you want only one instance 2432*dc5640d1SHerbert Xue (per {@link Injector}) to be reused for all injections for that binding. 2433*dc5640d1SHerbert Xue 2434*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2435*dc5640d1SHerbert Xue </doc> 2436*dc5640d1SHerbert Xue </class> 2437*dc5640d1SHerbert Xue <!-- end class com.google.inject.Singleton --> 2438*dc5640d1SHerbert Xue <!-- start class com.google.inject.Stage --> 2439*dc5640d1SHerbert Xue <class name="Stage" extends="java.lang.Enum<com.google.inject.Stage>" 2440*dc5640d1SHerbert Xue abstract="false" 2441*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2442*dc5640d1SHerbert Xue deprecated="not deprecated"> 2443*dc5640d1SHerbert Xue <method name="values" return="com.google.inject.Stage[]" 2444*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2445*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 2446*dc5640d1SHerbert Xue deprecated="not deprecated"> 2447*dc5640d1SHerbert Xue </method> 2448*dc5640d1SHerbert Xue <method name="valueOf" return="com.google.inject.Stage" 2449*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2450*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 2451*dc5640d1SHerbert Xue deprecated="not deprecated"> 2452*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 2453*dc5640d1SHerbert Xue </method> 2454*dc5640d1SHerbert Xue <doc> 2455*dc5640d1SHerbert Xue <![CDATA[The stage we're running in. 2456*dc5640d1SHerbert Xue 2457*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2458*dc5640d1SHerbert Xue </doc> 2459*dc5640d1SHerbert Xue </class> 2460*dc5640d1SHerbert Xue <!-- end class com.google.inject.Stage --> 2461*dc5640d1SHerbert Xue <!-- start class com.google.inject.TypeLiteral --> 2462*dc5640d1SHerbert Xue <class name="TypeLiteral" extends="java.lang.Object" 2463*dc5640d1SHerbert Xue abstract="false" 2464*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2465*dc5640d1SHerbert Xue deprecated="not deprecated"> 2466*dc5640d1SHerbert Xue <constructor name="TypeLiteral" 2467*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 2468*dc5640d1SHerbert Xue deprecated="not deprecated"> 2469*dc5640d1SHerbert Xue <doc> 2470*dc5640d1SHerbert Xue <![CDATA[Constructs a new type literal. Derives represented class from type 2471*dc5640d1SHerbert Xue parameter. 2472*dc5640d1SHerbert Xue 2473*dc5640d1SHerbert Xue <p>Clients create an empty anonymous subclass. Doing so embeds the type 2474*dc5640d1SHerbert Xue parameter in the anonymous class's type hierarchy so we can reconstitute it 2475*dc5640d1SHerbert Xue at runtime despite erasure.]]> 2476*dc5640d1SHerbert Xue </doc> 2477*dc5640d1SHerbert Xue </constructor> 2478*dc5640d1SHerbert Xue <method name="getRawType" return="java.lang.Class<? super T>" 2479*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2480*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2481*dc5640d1SHerbert Xue deprecated="not deprecated"> 2482*dc5640d1SHerbert Xue <doc> 2483*dc5640d1SHerbert Xue <![CDATA[Returns the raw (non-generic) type for this type. 2484*dc5640d1SHerbert Xue 2485*dc5640d1SHerbert Xue @since 2.0]]> 2486*dc5640d1SHerbert Xue </doc> 2487*dc5640d1SHerbert Xue </method> 2488*dc5640d1SHerbert Xue <method name="getType" return="java.lang.reflect.Type" 2489*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2490*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2491*dc5640d1SHerbert Xue deprecated="not deprecated"> 2492*dc5640d1SHerbert Xue <doc> 2493*dc5640d1SHerbert Xue <![CDATA[Gets underlying {@code Type} instance.]]> 2494*dc5640d1SHerbert Xue </doc> 2495*dc5640d1SHerbert Xue </method> 2496*dc5640d1SHerbert Xue <method name="hashCode" return="int" 2497*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2498*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2499*dc5640d1SHerbert Xue deprecated="not deprecated"> 2500*dc5640d1SHerbert Xue </method> 2501*dc5640d1SHerbert Xue <method name="equals" return="boolean" 2502*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2503*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2504*dc5640d1SHerbert Xue deprecated="not deprecated"> 2505*dc5640d1SHerbert Xue <param name="o" type="java.lang.Object"/> 2506*dc5640d1SHerbert Xue </method> 2507*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 2508*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2509*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2510*dc5640d1SHerbert Xue deprecated="not deprecated"> 2511*dc5640d1SHerbert Xue </method> 2512*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.TypeLiteral<?>" 2513*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2514*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 2515*dc5640d1SHerbert Xue deprecated="not deprecated"> 2516*dc5640d1SHerbert Xue <param name="type" type="java.lang.reflect.Type"/> 2517*dc5640d1SHerbert Xue <doc> 2518*dc5640d1SHerbert Xue <![CDATA[Gets type literal for the given {@code Type} instance.]]> 2519*dc5640d1SHerbert Xue </doc> 2520*dc5640d1SHerbert Xue </method> 2521*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.TypeLiteral<T>" 2522*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2523*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 2524*dc5640d1SHerbert Xue deprecated="not deprecated"> 2525*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 2526*dc5640d1SHerbert Xue <doc> 2527*dc5640d1SHerbert Xue <![CDATA[Gets type literal for the given {@code Class} instance.]]> 2528*dc5640d1SHerbert Xue </doc> 2529*dc5640d1SHerbert Xue </method> 2530*dc5640d1SHerbert Xue <method name="getSupertype" return="com.google.inject.TypeLiteral<?>" 2531*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2532*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2533*dc5640d1SHerbert Xue deprecated="not deprecated"> 2534*dc5640d1SHerbert Xue <param name="supertype" type="java.lang.Class<?>"/> 2535*dc5640d1SHerbert Xue <doc> 2536*dc5640d1SHerbert Xue <![CDATA[Returns the generic form of {@code supertype}. For example, if this is {@code 2537*dc5640d1SHerbert Xue ArrayList<String>}, this returns {@code Iterable<String>} given the input {@code 2538*dc5640d1SHerbert Xue Iterable.class}. 2539*dc5640d1SHerbert Xue 2540*dc5640d1SHerbert Xue @param supertype a superclass of, or interface implemented by, this. 2541*dc5640d1SHerbert Xue @since 2.0]]> 2542*dc5640d1SHerbert Xue </doc> 2543*dc5640d1SHerbert Xue </method> 2544*dc5640d1SHerbert Xue <method name="getFieldType" return="com.google.inject.TypeLiteral<?>" 2545*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2546*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2547*dc5640d1SHerbert Xue deprecated="not deprecated"> 2548*dc5640d1SHerbert Xue <param name="field" type="java.lang.reflect.Field"/> 2549*dc5640d1SHerbert Xue <doc> 2550*dc5640d1SHerbert Xue <![CDATA[Returns the resolved generic type of {@code field}. 2551*dc5640d1SHerbert Xue 2552*dc5640d1SHerbert Xue @param field a field defined by this or any superclass. 2553*dc5640d1SHerbert Xue @since 2.0]]> 2554*dc5640d1SHerbert Xue </doc> 2555*dc5640d1SHerbert Xue </method> 2556*dc5640d1SHerbert Xue <method name="getParameterTypes" return="java.util.List<com.google.inject.TypeLiteral<?>>" 2557*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2558*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2559*dc5640d1SHerbert Xue deprecated="not deprecated"> 2560*dc5640d1SHerbert Xue <param name="methodOrConstructor" type="java.lang.reflect.Member"/> 2561*dc5640d1SHerbert Xue <doc> 2562*dc5640d1SHerbert Xue <![CDATA[Returns the resolved generic parameter types of {@code methodOrConstructor}. 2563*dc5640d1SHerbert Xue 2564*dc5640d1SHerbert Xue @param methodOrConstructor a method or constructor defined by this or any supertype. 2565*dc5640d1SHerbert Xue @since 2.0]]> 2566*dc5640d1SHerbert Xue </doc> 2567*dc5640d1SHerbert Xue </method> 2568*dc5640d1SHerbert Xue <method name="getExceptionTypes" return="java.util.List<com.google.inject.TypeLiteral<?>>" 2569*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2570*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2571*dc5640d1SHerbert Xue deprecated="not deprecated"> 2572*dc5640d1SHerbert Xue <param name="methodOrConstructor" type="java.lang.reflect.Member"/> 2573*dc5640d1SHerbert Xue <doc> 2574*dc5640d1SHerbert Xue <![CDATA[Returns the resolved generic exception types thrown by {@code constructor}. 2575*dc5640d1SHerbert Xue 2576*dc5640d1SHerbert Xue @param methodOrConstructor a method or constructor defined by this or any supertype. 2577*dc5640d1SHerbert Xue @since 2.0]]> 2578*dc5640d1SHerbert Xue </doc> 2579*dc5640d1SHerbert Xue </method> 2580*dc5640d1SHerbert Xue <method name="getReturnType" return="com.google.inject.TypeLiteral<?>" 2581*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2582*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2583*dc5640d1SHerbert Xue deprecated="not deprecated"> 2584*dc5640d1SHerbert Xue <param name="method" type="java.lang.reflect.Method"/> 2585*dc5640d1SHerbert Xue <doc> 2586*dc5640d1SHerbert Xue <![CDATA[Returns the resolved generic return type of {@code method}. 2587*dc5640d1SHerbert Xue 2588*dc5640d1SHerbert Xue @param method a method defined by this or any supertype. 2589*dc5640d1SHerbert Xue @since 2.0]]> 2590*dc5640d1SHerbert Xue </doc> 2591*dc5640d1SHerbert Xue </method> 2592*dc5640d1SHerbert Xue <doc> 2593*dc5640d1SHerbert Xue <![CDATA[Represents a generic type {@code T}. Java doesn't yet provide a way to 2594*dc5640d1SHerbert Xue represent generic types, so this class does. Forces clients to create a 2595*dc5640d1SHerbert Xue subclass of this class which enables retrieval the type information even at 2596*dc5640d1SHerbert Xue runtime. 2597*dc5640d1SHerbert Xue 2598*dc5640d1SHerbert Xue <p>For example, to create a type literal for {@code List<String>}, you can 2599*dc5640d1SHerbert Xue create an empty anonymous inner class: 2600*dc5640d1SHerbert Xue 2601*dc5640d1SHerbert Xue <p> 2602*dc5640d1SHerbert Xue {@code TypeLiteral<List<String>> list = new TypeLiteral<List<String>>() {};} 2603*dc5640d1SHerbert Xue 2604*dc5640d1SHerbert Xue <p>Along with modeling generic types, this class can resolve type parameters. 2605*dc5640d1SHerbert Xue For example, to figure out what type {@code keySet()} returns on a {@code 2606*dc5640d1SHerbert Xue Map<Integer, String>}, use this code:<pre> {@code 2607*dc5640d1SHerbert Xue 2608*dc5640d1SHerbert Xue TypeLiteral<Map<Integer, String>> mapType 2609*dc5640d1SHerbert Xue = new TypeLiteral<Map<Integer, String>>() {}; 2610*dc5640d1SHerbert Xue TypeLiteral<?> keySetType 2611*dc5640d1SHerbert Xue = mapType.getReturnType(Map.class.getMethod("keySet")); 2612*dc5640d1SHerbert Xue System.out.println(keySetType); // prints "Set<Integer>"}</pre> 2613*dc5640d1SHerbert Xue 2614*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 2615*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]> 2616*dc5640d1SHerbert Xue </doc> 2617*dc5640d1SHerbert Xue </class> 2618*dc5640d1SHerbert Xue <!-- end class com.google.inject.TypeLiteral --> 2619*dc5640d1SHerbert Xue</package> 2620*dc5640d1SHerbert Xue<package name="com.google.inject.assistedinject"> 2621*dc5640d1SHerbert Xue <!-- start class com.google.inject.assistedinject.Assisted --> 2622*dc5640d1SHerbert Xue <class name="Assisted" abstract="true" 2623*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2624*dc5640d1SHerbert Xue deprecated="not deprecated"> 2625*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 2626*dc5640d1SHerbert Xue <doc> 2627*dc5640d1SHerbert Xue <![CDATA[Annotates an injected parameter or field whose value comes from an argument to a factory method. 2628*dc5640d1SHerbert Xue 2629*dc5640d1SHerbert Xue @author [email protected] (Jerome Mourits) 2630*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]> 2631*dc5640d1SHerbert Xue </doc> 2632*dc5640d1SHerbert Xue </class> 2633*dc5640d1SHerbert Xue <!-- end class com.google.inject.assistedinject.Assisted --> 2634*dc5640d1SHerbert Xue <!-- start class com.google.inject.assistedinject.AssistedInject --> 2635*dc5640d1SHerbert Xue <class name="AssistedInject" abstract="true" 2636*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2637*dc5640d1SHerbert Xue deprecated="not deprecated"> 2638*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 2639*dc5640d1SHerbert Xue <doc> 2640*dc5640d1SHerbert Xue <![CDATA[<p> 2641*dc5640d1SHerbert Xue When used in tandem with {@link FactoryModuleBuilder}, constructors annotated with 2642*dc5640d1SHerbert Xue {@code @AssistedInject} indicate that multiple constructors can be injected, each with different 2643*dc5640d1SHerbert Xue parameters. AssistedInject annotations should not be mixed with {@literal @}{@link Inject} 2644*dc5640d1SHerbert Xue annotations. The assisted parameters must exactly match one corresponding factory method within 2645*dc5640d1SHerbert Xue the factory interface, but the parameters do not need to be in the same order. Constructors 2646*dc5640d1SHerbert Xue annotated with AssistedInject <b>are</b> created by Guice and receive all the benefits 2647*dc5640d1SHerbert Xue (such as AOP). 2648*dc5640d1SHerbert Xue 2649*dc5640d1SHerbert Xue <p> 2650*dc5640d1SHerbert Xue <strong>Obsolete Usage:</strong> When used in tandem with {@link FactoryProvider}, constructors 2651*dc5640d1SHerbert Xue annotated with {@code @AssistedInject} trigger a "backwards compatibility mode". The assisted 2652*dc5640d1SHerbert Xue parameters must exactly match one corresponding factory method within the factory interface and 2653*dc5640d1SHerbert Xue all must be in the same order as listed in the factory. In this backwards compatable mode, 2654*dc5640d1SHerbert Xue constructors annotated with AssistedInject <b>are not</b> created by Guice and thus receive 2655*dc5640d1SHerbert Xue none of the benefits. 2656*dc5640d1SHerbert Xue 2657*dc5640d1SHerbert Xue <p> 2658*dc5640d1SHerbert Xue Constructor parameters must be either supplied by the factory interface and marked with 2659*dc5640d1SHerbert Xue <code>@Assisted</code>, or they must be injectable. 2660*dc5640d1SHerbert Xue 2661*dc5640d1SHerbert Xue @author [email protected] (Jerome Mourits) 2662*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]> 2663*dc5640d1SHerbert Xue </doc> 2664*dc5640d1SHerbert Xue </class> 2665*dc5640d1SHerbert Xue <!-- end class com.google.inject.assistedinject.AssistedInject --> 2666*dc5640d1SHerbert Xue <!-- start interface com.google.inject.assistedinject.AssistedInjectBinding --> 2667*dc5640d1SHerbert Xue <interface name="AssistedInjectBinding" abstract="true" 2668*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2669*dc5640d1SHerbert Xue deprecated="not deprecated"> 2670*dc5640d1SHerbert Xue <method name="getKey" return="com.google.inject.Key<T>" 2671*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2672*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2673*dc5640d1SHerbert Xue deprecated="not deprecated"> 2674*dc5640d1SHerbert Xue <doc> 2675*dc5640d1SHerbert Xue <![CDATA[Returns the {@link Key} for the factory binding.]]> 2676*dc5640d1SHerbert Xue </doc> 2677*dc5640d1SHerbert Xue </method> 2678*dc5640d1SHerbert Xue <method name="getAssistedMethods" return="java.util.Collection<com.google.inject.assistedinject.AssistedMethod>" 2679*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2680*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2681*dc5640d1SHerbert Xue deprecated="not deprecated"> 2682*dc5640d1SHerbert Xue <doc> 2683*dc5640d1SHerbert Xue <![CDATA[Returns an {@link AssistedMethod} for each method in the factory.]]> 2684*dc5640d1SHerbert Xue </doc> 2685*dc5640d1SHerbert Xue </method> 2686*dc5640d1SHerbert Xue <doc> 2687*dc5640d1SHerbert Xue <![CDATA[A binding for a factory created by FactoryModuleBuilder. 2688*dc5640d1SHerbert Xue 2689*dc5640d1SHerbert Xue @param <T> The fully qualified type of the factory. 2690*dc5640d1SHerbert Xue 2691*dc5640d1SHerbert Xue @since 3.0 2692*dc5640d1SHerbert Xue @author [email protected] (Ramakrishna Rajanna)]]> 2693*dc5640d1SHerbert Xue </doc> 2694*dc5640d1SHerbert Xue </interface> 2695*dc5640d1SHerbert Xue <!-- end interface com.google.inject.assistedinject.AssistedInjectBinding --> 2696*dc5640d1SHerbert Xue <!-- start interface com.google.inject.assistedinject.AssistedInjectTargetVisitor --> 2697*dc5640d1SHerbert Xue <interface name="AssistedInjectTargetVisitor" abstract="true" 2698*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2699*dc5640d1SHerbert Xue deprecated="not deprecated"> 2700*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 2701*dc5640d1SHerbert Xue <method name="visit" return="V" 2702*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2703*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2704*dc5640d1SHerbert Xue deprecated="not deprecated"> 2705*dc5640d1SHerbert Xue <param name="assistedInjectBinding" type="com.google.inject.assistedinject.AssistedInjectBinding<? extends T>"/> 2706*dc5640d1SHerbert Xue <doc> 2707*dc5640d1SHerbert Xue <![CDATA[Visits an {@link AssistedInjectBinding} created through {@link FactoryModuleBuilder}.]]> 2708*dc5640d1SHerbert Xue </doc> 2709*dc5640d1SHerbert Xue </method> 2710*dc5640d1SHerbert Xue <doc> 2711*dc5640d1SHerbert Xue <![CDATA[A visitor for the AssistedInject extension. 2712*dc5640d1SHerbert Xue <p> 2713*dc5640d1SHerbert Xue If your {@link BindingTargetVisitor} implements this interface, bindings created by using 2714*dc5640d1SHerbert Xue {@link FactoryModuleBuilder} will be visited through this interface. 2715*dc5640d1SHerbert Xue 2716*dc5640d1SHerbert Xue @since 3.0 2717*dc5640d1SHerbert Xue @author [email protected] (Ramakrishna Rajanna)]]> 2718*dc5640d1SHerbert Xue </doc> 2719*dc5640d1SHerbert Xue </interface> 2720*dc5640d1SHerbert Xue <!-- end interface com.google.inject.assistedinject.AssistedInjectTargetVisitor --> 2721*dc5640d1SHerbert Xue <!-- start interface com.google.inject.assistedinject.AssistedMethod --> 2722*dc5640d1SHerbert Xue <interface name="AssistedMethod" abstract="true" 2723*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2724*dc5640d1SHerbert Xue deprecated="not deprecated"> 2725*dc5640d1SHerbert Xue <method name="getFactoryMethod" return="java.lang.reflect.Method" 2726*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2727*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2728*dc5640d1SHerbert Xue deprecated="not deprecated"> 2729*dc5640d1SHerbert Xue <doc> 2730*dc5640d1SHerbert Xue <![CDATA[Returns the factory method that is being assisted.]]> 2731*dc5640d1SHerbert Xue </doc> 2732*dc5640d1SHerbert Xue </method> 2733*dc5640d1SHerbert Xue <method name="getImplementationType" return="com.google.inject.TypeLiteral<?>" 2734*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2735*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2736*dc5640d1SHerbert Xue deprecated="not deprecated"> 2737*dc5640d1SHerbert Xue <doc> 2738*dc5640d1SHerbert Xue <![CDATA[Returns the implementation type that will be created when the method is 2739*dc5640d1SHerbert Xue used.]]> 2740*dc5640d1SHerbert Xue </doc> 2741*dc5640d1SHerbert Xue </method> 2742*dc5640d1SHerbert Xue <method name="getImplementationConstructor" return="java.lang.reflect.Constructor<?>" 2743*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2744*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2745*dc5640d1SHerbert Xue deprecated="not deprecated"> 2746*dc5640d1SHerbert Xue <doc> 2747*dc5640d1SHerbert Xue <![CDATA[Returns the constructor that will be used to construct instances of the 2748*dc5640d1SHerbert Xue implementation.]]> 2749*dc5640d1SHerbert Xue </doc> 2750*dc5640d1SHerbert Xue </method> 2751*dc5640d1SHerbert Xue <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 2752*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2753*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2754*dc5640d1SHerbert Xue deprecated="not deprecated"> 2755*dc5640d1SHerbert Xue <doc> 2756*dc5640d1SHerbert Xue <![CDATA[Returns all non-assisted dependencies required to construct and inject 2757*dc5640d1SHerbert Xue the implementation.]]> 2758*dc5640d1SHerbert Xue </doc> 2759*dc5640d1SHerbert Xue </method> 2760*dc5640d1SHerbert Xue <doc> 2761*dc5640d1SHerbert Xue <![CDATA[Details about how a method in an assisted inject factory will be assisted. 2762*dc5640d1SHerbert Xue 2763*dc5640d1SHerbert Xue @since 3.0 2764*dc5640d1SHerbert Xue @author [email protected] (Ramakrishna Rajanna)]]> 2765*dc5640d1SHerbert Xue </doc> 2766*dc5640d1SHerbert Xue </interface> 2767*dc5640d1SHerbert Xue <!-- end interface com.google.inject.assistedinject.AssistedMethod --> 2768*dc5640d1SHerbert Xue <!-- start class com.google.inject.assistedinject.FactoryModuleBuilder --> 2769*dc5640d1SHerbert Xue <class name="FactoryModuleBuilder" extends="java.lang.Object" 2770*dc5640d1SHerbert Xue abstract="false" 2771*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2772*dc5640d1SHerbert Xue deprecated="not deprecated"> 2773*dc5640d1SHerbert Xue <constructor name="FactoryModuleBuilder" 2774*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2775*dc5640d1SHerbert Xue deprecated="not deprecated"> 2776*dc5640d1SHerbert Xue </constructor> 2777*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 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="source" type="java.lang.Class<T>"/> 2782*dc5640d1SHerbert Xue <param name="target" type="java.lang.Class<? extends T>"/> 2783*dc5640d1SHerbert Xue <doc> 2784*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2785*dc5640d1SHerbert Xue </doc> 2786*dc5640d1SHerbert Xue </method> 2787*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2788*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2789*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2790*dc5640d1SHerbert Xue deprecated="not deprecated"> 2791*dc5640d1SHerbert Xue <param name="source" type="java.lang.Class<T>"/> 2792*dc5640d1SHerbert Xue <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2793*dc5640d1SHerbert Xue <doc> 2794*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2795*dc5640d1SHerbert Xue </doc> 2796*dc5640d1SHerbert Xue </method> 2797*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2798*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2799*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2800*dc5640d1SHerbert Xue deprecated="not deprecated"> 2801*dc5640d1SHerbert Xue <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2802*dc5640d1SHerbert Xue <param name="target" type="java.lang.Class<? extends T>"/> 2803*dc5640d1SHerbert Xue <doc> 2804*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2805*dc5640d1SHerbert Xue </doc> 2806*dc5640d1SHerbert Xue </method> 2807*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2808*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2809*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2810*dc5640d1SHerbert Xue deprecated="not deprecated"> 2811*dc5640d1SHerbert Xue <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2812*dc5640d1SHerbert Xue <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2813*dc5640d1SHerbert Xue <doc> 2814*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2815*dc5640d1SHerbert Xue </doc> 2816*dc5640d1SHerbert Xue </method> 2817*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2818*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2819*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2820*dc5640d1SHerbert Xue deprecated="not deprecated"> 2821*dc5640d1SHerbert Xue <param name="source" type="java.lang.Class<T>"/> 2822*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 2823*dc5640d1SHerbert Xue <param name="target" type="java.lang.Class<? extends T>"/> 2824*dc5640d1SHerbert Xue <doc> 2825*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2826*dc5640d1SHerbert Xue </doc> 2827*dc5640d1SHerbert Xue </method> 2828*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2829*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2830*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2831*dc5640d1SHerbert Xue deprecated="not deprecated"> 2832*dc5640d1SHerbert Xue <param name="source" type="java.lang.Class<T>"/> 2833*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 2834*dc5640d1SHerbert Xue <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2835*dc5640d1SHerbert Xue <doc> 2836*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2837*dc5640d1SHerbert Xue </doc> 2838*dc5640d1SHerbert Xue </method> 2839*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2840*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2841*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2842*dc5640d1SHerbert Xue deprecated="not deprecated"> 2843*dc5640d1SHerbert Xue <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2844*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 2845*dc5640d1SHerbert Xue <param name="target" type="java.lang.Class<? extends T>"/> 2846*dc5640d1SHerbert Xue <doc> 2847*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2848*dc5640d1SHerbert Xue </doc> 2849*dc5640d1SHerbert Xue </method> 2850*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2851*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2852*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2853*dc5640d1SHerbert Xue deprecated="not deprecated"> 2854*dc5640d1SHerbert Xue <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2855*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 2856*dc5640d1SHerbert Xue <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2857*dc5640d1SHerbert Xue <doc> 2858*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2859*dc5640d1SHerbert Xue </doc> 2860*dc5640d1SHerbert Xue </method> 2861*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2862*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2863*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2864*dc5640d1SHerbert Xue deprecated="not deprecated"> 2865*dc5640d1SHerbert Xue <param name="source" type="java.lang.Class<T>"/> 2866*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 2867*dc5640d1SHerbert Xue <param name="target" type="java.lang.Class<? extends T>"/> 2868*dc5640d1SHerbert Xue <doc> 2869*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2870*dc5640d1SHerbert Xue </doc> 2871*dc5640d1SHerbert Xue </method> 2872*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2873*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2874*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2875*dc5640d1SHerbert Xue deprecated="not deprecated"> 2876*dc5640d1SHerbert Xue <param name="source" type="java.lang.Class<T>"/> 2877*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 2878*dc5640d1SHerbert Xue <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2879*dc5640d1SHerbert Xue <doc> 2880*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2881*dc5640d1SHerbert Xue </doc> 2882*dc5640d1SHerbert Xue </method> 2883*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 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="source" type="com.google.inject.TypeLiteral<T>"/> 2888*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 2889*dc5640d1SHerbert Xue <param name="target" type="java.lang.Class<? extends T>"/> 2890*dc5640d1SHerbert Xue <doc> 2891*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2892*dc5640d1SHerbert Xue </doc> 2893*dc5640d1SHerbert Xue </method> 2894*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2895*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2896*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2897*dc5640d1SHerbert Xue deprecated="not deprecated"> 2898*dc5640d1SHerbert Xue <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2899*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 2900*dc5640d1SHerbert Xue <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2901*dc5640d1SHerbert Xue <doc> 2902*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2903*dc5640d1SHerbert Xue </doc> 2904*dc5640d1SHerbert Xue </method> 2905*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2906*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2907*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2908*dc5640d1SHerbert Xue deprecated="not deprecated"> 2909*dc5640d1SHerbert Xue <param name="source" type="com.google.inject.Key<T>"/> 2910*dc5640d1SHerbert Xue <param name="target" type="java.lang.Class<? extends T>"/> 2911*dc5640d1SHerbert Xue <doc> 2912*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2913*dc5640d1SHerbert Xue </doc> 2914*dc5640d1SHerbert Xue </method> 2915*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2916*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2917*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2918*dc5640d1SHerbert Xue deprecated="not deprecated"> 2919*dc5640d1SHerbert Xue <param name="source" type="com.google.inject.Key<T>"/> 2920*dc5640d1SHerbert Xue <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2921*dc5640d1SHerbert Xue <doc> 2922*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2923*dc5640d1SHerbert Xue </doc> 2924*dc5640d1SHerbert Xue </method> 2925*dc5640d1SHerbert Xue <method name="build" return="com.google.inject.Module" 2926*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2927*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2928*dc5640d1SHerbert Xue deprecated="not deprecated"> 2929*dc5640d1SHerbert Xue <param name="factoryInterface" type="java.lang.Class<F>"/> 2930*dc5640d1SHerbert Xue <doc> 2931*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2932*dc5640d1SHerbert Xue </doc> 2933*dc5640d1SHerbert Xue </method> 2934*dc5640d1SHerbert Xue <method name="build" return="com.google.inject.Module" 2935*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2936*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2937*dc5640d1SHerbert Xue deprecated="not deprecated"> 2938*dc5640d1SHerbert Xue <param name="factoryInterface" type="com.google.inject.TypeLiteral<F>"/> 2939*dc5640d1SHerbert Xue <doc> 2940*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2941*dc5640d1SHerbert Xue </doc> 2942*dc5640d1SHerbert Xue </method> 2943*dc5640d1SHerbert Xue <method name="build" return="com.google.inject.Module" 2944*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2945*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2946*dc5640d1SHerbert Xue deprecated="not deprecated"> 2947*dc5640d1SHerbert Xue <param name="factoryInterface" type="com.google.inject.Key<F>"/> 2948*dc5640d1SHerbert Xue </method> 2949*dc5640d1SHerbert Xue <doc> 2950*dc5640d1SHerbert Xue <![CDATA[Provides a factory that combines the caller's arguments with injector-supplied values to 2951*dc5640d1SHerbert Xue construct objects. 2952*dc5640d1SHerbert Xue 2953*dc5640d1SHerbert Xue <h3>Defining a factory</h3> 2954*dc5640d1SHerbert Xue Create an interface whose methods return the constructed type, or any of its supertypes. The 2955*dc5640d1SHerbert Xue method's parameters are the arguments required to build the constructed type. 2956*dc5640d1SHerbert Xue 2957*dc5640d1SHerbert Xue <pre>public interface PaymentFactory { 2958*dc5640d1SHerbert Xue Payment create(Date startDate, Money amount); 2959*dc5640d1SHerbert Xue }</pre> 2960*dc5640d1SHerbert Xue 2961*dc5640d1SHerbert Xue You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i> 2962*dc5640d1SHerbert Xue or <i>newPayment</i>. 2963*dc5640d1SHerbert Xue 2964*dc5640d1SHerbert Xue <h3>Creating a type that accepts factory parameters</h3> 2965*dc5640d1SHerbert Xue {@code constructedType} is a concrete class with an {@literal @}{@link com.google.inject.Inject 2966*dc5640d1SHerbert Xue Inject}-annotated constructor. In addition to injector-supplied parameters, the constructor 2967*dc5640d1SHerbert Xue should have parameters that match each of the factory method's parameters. Each factory-supplied 2968*dc5640d1SHerbert Xue parameter requires an {@literal @}{@link Assisted} annotation. This serves to document that the 2969*dc5640d1SHerbert Xue parameter is not bound by your application's modules. 2970*dc5640d1SHerbert Xue 2971*dc5640d1SHerbert Xue <pre>public class RealPayment implements Payment { 2972*dc5640d1SHerbert Xue {@literal @}Inject 2973*dc5640d1SHerbert Xue public RealPayment( 2974*dc5640d1SHerbert Xue CreditService creditService, 2975*dc5640d1SHerbert Xue AuthService authService, 2976*dc5640d1SHerbert Xue <strong>{@literal @}Assisted Date startDate</strong>, 2977*dc5640d1SHerbert Xue <strong>{@literal @}Assisted Money amount</strong>) { 2978*dc5640d1SHerbert Xue ... 2979*dc5640d1SHerbert Xue } 2980*dc5640d1SHerbert Xue }</pre> 2981*dc5640d1SHerbert Xue 2982*dc5640d1SHerbert Xue <h3>Multiple factory methods for the same type</h3> 2983*dc5640d1SHerbert Xue If the factory contains many methods that return the same type, you can create multiple 2984*dc5640d1SHerbert Xue constructors in your concrete class, each constructor marked with with 2985*dc5640d1SHerbert Xue {@literal @}{@link AssistedInject}, in order to match the different parameters types of the 2986*dc5640d1SHerbert Xue factory methods. 2987*dc5640d1SHerbert Xue 2988*dc5640d1SHerbert Xue <pre>public interface PaymentFactory { 2989*dc5640d1SHerbert Xue Payment create(Date startDate, Money amount); 2990*dc5640d1SHerbert Xue Payment createWithoutDate(Money amount); 2991*dc5640d1SHerbert Xue } 2992*dc5640d1SHerbert Xue 2993*dc5640d1SHerbert Xue public class RealPayment implements Payment { 2994*dc5640d1SHerbert Xue {@literal @}AssistedInject 2995*dc5640d1SHerbert Xue public RealPayment( 2996*dc5640d1SHerbert Xue CreditService creditService, 2997*dc5640d1SHerbert Xue AuthService authService, 2998*dc5640d1SHerbert Xue <strong>{@literal @}Assisted Date startDate</strong>, 2999*dc5640d1SHerbert Xue <strong>{@literal @}Assisted Money amount</strong>) { 3000*dc5640d1SHerbert Xue ... 3001*dc5640d1SHerbert Xue } 3002*dc5640d1SHerbert Xue 3003*dc5640d1SHerbert Xue {@literal @}AssistedInject 3004*dc5640d1SHerbert Xue public RealPayment( 3005*dc5640d1SHerbert Xue CreditService creditService, 3006*dc5640d1SHerbert Xue AuthService authService, 3007*dc5640d1SHerbert Xue <strong>{@literal @}Assisted Money amount</strong>) { 3008*dc5640d1SHerbert Xue ... 3009*dc5640d1SHerbert Xue } 3010*dc5640d1SHerbert Xue }</pre> 3011*dc5640d1SHerbert Xue 3012*dc5640d1SHerbert Xue <h3>Configuring simple factories</h3> 3013*dc5640d1SHerbert Xue In your {@link Module module}, install a {@code FactoryModuleBuilder} that creates the 3014*dc5640d1SHerbert Xue factory: 3015*dc5640d1SHerbert Xue 3016*dc5640d1SHerbert Xue <pre>install(new FactoryModuleBuilder() 3017*dc5640d1SHerbert Xue .implement(Payment.class, RealPayment.class) 3018*dc5640d1SHerbert Xue .build(PaymentFactory.class);</pre> 3019*dc5640d1SHerbert Xue 3020*dc5640d1SHerbert Xue As a side-effect of this binding, Guice will inject the factory to initialize it for use. The 3021*dc5640d1SHerbert Xue factory cannot be used until the injector has been initialized. 3022*dc5640d1SHerbert Xue 3023*dc5640d1SHerbert Xue <h3>Configuring complex factories</h3> 3024*dc5640d1SHerbert Xue Factories can create an arbitrary number of objects, one per each method. Each factory 3025*dc5640d1SHerbert Xue method can be configured using <code>.implement</code>. 3026*dc5640d1SHerbert Xue 3027*dc5640d1SHerbert Xue <pre>public interface OrderFactory { 3028*dc5640d1SHerbert Xue Payment create(Date startDate, Money amount); 3029*dc5640d1SHerbert Xue Shipment create(Customer customer, Item item); 3030*dc5640d1SHerbert Xue Receipt create(Payment payment, Shipment shipment); 3031*dc5640d1SHerbert Xue } 3032*dc5640d1SHerbert Xue 3033*dc5640d1SHerbert Xue [...] 3034*dc5640d1SHerbert Xue 3035*dc5640d1SHerbert Xue install(new FactoryModuleBuilder() 3036*dc5640d1SHerbert Xue .implement(Payment.class, RealPayment.class) 3037*dc5640d1SHerbert Xue // excluding .implement for Shipment means the implementation class 3038*dc5640d1SHerbert Xue // will be 'Shipment' itself, which is legal if it's not an interface. 3039*dc5640d1SHerbert Xue .implement(Receipt.class, RealReceipt.class) 3040*dc5640d1SHerbert Xue .build(OrderFactory.class);</pre> 3041*dc5640d1SHerbert Xue </pre> 3042*dc5640d1SHerbert Xue 3043*dc5640d1SHerbert Xue <h3>Using the factory</h3> 3044*dc5640d1SHerbert Xue Inject your factory into your application classes. When you use the factory, your arguments 3045*dc5640d1SHerbert Xue will be combined with values from the injector to construct an instance. 3046*dc5640d1SHerbert Xue 3047*dc5640d1SHerbert Xue <pre>public class PaymentAction { 3048*dc5640d1SHerbert Xue {@literal @}Inject private PaymentFactory paymentFactory; 3049*dc5640d1SHerbert Xue 3050*dc5640d1SHerbert Xue public void doPayment(Money amount) { 3051*dc5640d1SHerbert Xue Payment payment = paymentFactory.create(new Date(), amount); 3052*dc5640d1SHerbert Xue payment.apply(); 3053*dc5640d1SHerbert Xue } 3054*dc5640d1SHerbert Xue }</pre> 3055*dc5640d1SHerbert Xue 3056*dc5640d1SHerbert Xue <h3>Making parameter types distinct</h3> 3057*dc5640d1SHerbert Xue The types of the factory method's parameters must be distinct. To use multiple parameters of 3058*dc5640d1SHerbert Xue the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the 3059*dc5640d1SHerbert Xue parameters. The names must be applied to the factory method's parameters: 3060*dc5640d1SHerbert Xue 3061*dc5640d1SHerbert Xue <pre>public interface PaymentFactory { 3062*dc5640d1SHerbert Xue Payment create( 3063*dc5640d1SHerbert Xue <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 3064*dc5640d1SHerbert Xue <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 3065*dc5640d1SHerbert Xue Money amount); 3066*dc5640d1SHerbert Xue } </pre> 3067*dc5640d1SHerbert Xue 3068*dc5640d1SHerbert Xue ...and to the concrete type's constructor parameters: 3069*dc5640d1SHerbert Xue 3070*dc5640d1SHerbert Xue <pre>public class RealPayment implements Payment { 3071*dc5640d1SHerbert Xue {@literal @}Inject 3072*dc5640d1SHerbert Xue public RealPayment( 3073*dc5640d1SHerbert Xue CreditService creditService, 3074*dc5640d1SHerbert Xue AuthService authService, 3075*dc5640d1SHerbert Xue <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 3076*dc5640d1SHerbert Xue <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 3077*dc5640d1SHerbert Xue <strong>{@literal @}Assisted</strong> Money amount) { 3078*dc5640d1SHerbert Xue ... 3079*dc5640d1SHerbert Xue } 3080*dc5640d1SHerbert Xue }</pre> 3081*dc5640d1SHerbert Xue 3082*dc5640d1SHerbert Xue <h3>Values are created by Guice</h3> 3083*dc5640d1SHerbert Xue Returned factories use child injectors to create values. The values are eligible for method 3084*dc5640d1SHerbert Xue interception. In addition, {@literal @}{@literal Inject} members will be injected before they are 3085*dc5640d1SHerbert Xue returned. 3086*dc5640d1SHerbert Xue 3087*dc5640d1SHerbert Xue <h3>More configuration options</h3> 3088*dc5640d1SHerbert Xue In addition to simply specifying an implementation class for any returned type, factories' return 3089*dc5640d1SHerbert Xue values can be automatic or can be configured to use annotations: 3090*dc5640d1SHerbert Xue <p/> 3091*dc5640d1SHerbert Xue If you just want to return the types specified in the factory, do not configure any 3092*dc5640d1SHerbert Xue implementations: 3093*dc5640d1SHerbert Xue 3094*dc5640d1SHerbert Xue <pre>public interface FruitFactory { 3095*dc5640d1SHerbert Xue Apple getApple(Color color); 3096*dc5640d1SHerbert Xue } 3097*dc5640d1SHerbert Xue ... 3098*dc5640d1SHerbert Xue protected void configure() { 3099*dc5640d1SHerbert Xue install(new FactoryModuleBuilder().build(FruitFactory.class)); 3100*dc5640d1SHerbert Xue }</pre> 3101*dc5640d1SHerbert Xue 3102*dc5640d1SHerbert Xue Note that any type returned by the factory in this manner needs to be an implementation class. 3103*dc5640d1SHerbert Xue <p/> 3104*dc5640d1SHerbert Xue To return two different implementations for the same interface from your factory, use binding 3105*dc5640d1SHerbert Xue annotations on your return types: 3106*dc5640d1SHerbert Xue 3107*dc5640d1SHerbert Xue <pre>interface CarFactory { 3108*dc5640d1SHerbert Xue {@literal @}Named("fast") Car getFastCar(Color color); 3109*dc5640d1SHerbert Xue {@literal @}Named("clean") Car getCleanCar(Color color); 3110*dc5640d1SHerbert Xue } 3111*dc5640d1SHerbert Xue ... 3112*dc5640d1SHerbert Xue protected void configure() { 3113*dc5640d1SHerbert Xue install(new FactoryModuleBuilder() 3114*dc5640d1SHerbert Xue .implement(Car.class, Names.named("fast"), Porsche.class) 3115*dc5640d1SHerbert Xue .implement(Car.class, Names.named("clean"), Prius.class) 3116*dc5640d1SHerbert Xue .build(CarFactory.class)); 3117*dc5640d1SHerbert Xue }</pre> 3118*dc5640d1SHerbert Xue 3119*dc5640d1SHerbert Xue <h3>Implementation limitations</h3> 3120*dc5640d1SHerbert Xue As a limitation of the implementation, it is prohibited to declare a factory method that 3121*dc5640d1SHerbert Xue accepts a {@code Provider} as one of its arguments. 3122*dc5640d1SHerbert Xue 3123*dc5640d1SHerbert Xue @since 3.0 3124*dc5640d1SHerbert Xue @author [email protected] (Peter Schmitt)]]> 3125*dc5640d1SHerbert Xue </doc> 3126*dc5640d1SHerbert Xue </class> 3127*dc5640d1SHerbert Xue <!-- end class com.google.inject.assistedinject.FactoryModuleBuilder --> 3128*dc5640d1SHerbert Xue <!-- start class com.google.inject.assistedinject.FactoryProvider --> 3129*dc5640d1SHerbert Xue <class name="FactoryProvider" extends="java.lang.Object" 3130*dc5640d1SHerbert Xue abstract="false" 3131*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3132*dc5640d1SHerbert Xue deprecated="use {@link FactoryModuleBuilder} instead."> 3133*dc5640d1SHerbert Xue <implements name="com.google.inject.Provider<F>"/> 3134*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 3135*dc5640d1SHerbert Xue <method name="newFactory" return="com.google.inject.Provider<F>" 3136*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3137*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3138*dc5640d1SHerbert Xue deprecated="not deprecated"> 3139*dc5640d1SHerbert Xue <param name="factoryType" type="java.lang.Class<F>"/> 3140*dc5640d1SHerbert Xue <param name="implementationType" type="java.lang.Class<?>"/> 3141*dc5640d1SHerbert Xue </method> 3142*dc5640d1SHerbert Xue <method name="newFactory" return="com.google.inject.Provider<F>" 3143*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3144*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3145*dc5640d1SHerbert Xue deprecated="not deprecated"> 3146*dc5640d1SHerbert Xue <param name="factoryType" type="com.google.inject.TypeLiteral<F>"/> 3147*dc5640d1SHerbert Xue <param name="implementationType" type="com.google.inject.TypeLiteral<?>"/> 3148*dc5640d1SHerbert Xue </method> 3149*dc5640d1SHerbert Xue <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 3150*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3151*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3152*dc5640d1SHerbert Xue deprecated="not deprecated"> 3153*dc5640d1SHerbert Xue </method> 3154*dc5640d1SHerbert Xue <method name="get" return="F" 3155*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3156*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3157*dc5640d1SHerbert Xue deprecated="not deprecated"> 3158*dc5640d1SHerbert Xue </method> 3159*dc5640d1SHerbert Xue <doc> 3160*dc5640d1SHerbert Xue <![CDATA[<strong>Obsolete.</strong> Prefer {@link FactoryModuleBuilder} for its more concise API and 3161*dc5640d1SHerbert Xue additional capability. 3162*dc5640d1SHerbert Xue 3163*dc5640d1SHerbert Xue <p>Provides a factory that combines the caller's arguments with injector-supplied values to 3164*dc5640d1SHerbert Xue construct objects. 3165*dc5640d1SHerbert Xue 3166*dc5640d1SHerbert Xue <h3>Defining a factory</h3> 3167*dc5640d1SHerbert Xue Create an interface whose methods return the constructed type, or any of its supertypes. The 3168*dc5640d1SHerbert Xue method's parameters are the arguments required to build the constructed type. 3169*dc5640d1SHerbert Xue <pre>public interface PaymentFactory { 3170*dc5640d1SHerbert Xue Payment create(Date startDate, Money amount); 3171*dc5640d1SHerbert Xue }</pre> 3172*dc5640d1SHerbert Xue You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i> 3173*dc5640d1SHerbert Xue or <i>newPayment</i>. 3174*dc5640d1SHerbert Xue 3175*dc5640d1SHerbert Xue <h3>Creating a type that accepts factory parameters</h3> 3176*dc5640d1SHerbert Xue {@code constructedType} is a concrete class with an {@literal @}{@link Inject}-annotated 3177*dc5640d1SHerbert Xue constructor. In addition to injector-supplied parameters, the constructor should have 3178*dc5640d1SHerbert Xue parameters that match each of the factory method's parameters. Each factory-supplied parameter 3179*dc5640d1SHerbert Xue requires an {@literal @}{@link Assisted} annotation. This serves to document that the parameter 3180*dc5640d1SHerbert Xue is not bound by your application's modules. 3181*dc5640d1SHerbert Xue <pre>public class RealPayment implements Payment { 3182*dc5640d1SHerbert Xue {@literal @}Inject 3183*dc5640d1SHerbert Xue public RealPayment( 3184*dc5640d1SHerbert Xue CreditService creditService, 3185*dc5640d1SHerbert Xue AuthService authService, 3186*dc5640d1SHerbert Xue <strong>{@literal @}Assisted Date startDate</strong>, 3187*dc5640d1SHerbert Xue <strong>{@literal @}Assisted Money amount</strong>) { 3188*dc5640d1SHerbert Xue ... 3189*dc5640d1SHerbert Xue } 3190*dc5640d1SHerbert Xue }</pre> 3191*dc5640d1SHerbert Xue Any parameter that permits a null value should also be annotated {@code @Nullable}. 3192*dc5640d1SHerbert Xue 3193*dc5640d1SHerbert Xue <h3>Configuring factories</h3> 3194*dc5640d1SHerbert Xue In your {@link com.google.inject.Module module}, bind the factory interface to the returned 3195*dc5640d1SHerbert Xue factory: 3196*dc5640d1SHerbert Xue <pre>bind(PaymentFactory.class).toProvider( 3197*dc5640d1SHerbert Xue FactoryProvider.newFactory(PaymentFactory.class, RealPayment.class));</pre> 3198*dc5640d1SHerbert Xue As a side-effect of this binding, Guice will inject the factory to initialize it for use. The 3199*dc5640d1SHerbert Xue factory cannot be used until the injector has been initialized. 3200*dc5640d1SHerbert Xue 3201*dc5640d1SHerbert Xue <h3>Using the factory</h3> 3202*dc5640d1SHerbert Xue Inject your factory into your application classes. When you use the factory, your arguments 3203*dc5640d1SHerbert Xue will be combined with values from the injector to construct an instance. 3204*dc5640d1SHerbert Xue <pre>public class PaymentAction { 3205*dc5640d1SHerbert Xue {@literal @}Inject private PaymentFactory paymentFactory; 3206*dc5640d1SHerbert Xue 3207*dc5640d1SHerbert Xue public void doPayment(Money amount) { 3208*dc5640d1SHerbert Xue Payment payment = paymentFactory.create(new Date(), amount); 3209*dc5640d1SHerbert Xue payment.apply(); 3210*dc5640d1SHerbert Xue } 3211*dc5640d1SHerbert Xue }</pre> 3212*dc5640d1SHerbert Xue 3213*dc5640d1SHerbert Xue <h3>Making parameter types distinct</h3> 3214*dc5640d1SHerbert Xue The types of the factory method's parameters must be distinct. To use multiple parameters of 3215*dc5640d1SHerbert Xue the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the 3216*dc5640d1SHerbert Xue parameters. The names must be applied to the factory method's parameters: 3217*dc5640d1SHerbert Xue 3218*dc5640d1SHerbert Xue <pre>public interface PaymentFactory { 3219*dc5640d1SHerbert Xue Payment create( 3220*dc5640d1SHerbert Xue <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 3221*dc5640d1SHerbert Xue <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 3222*dc5640d1SHerbert Xue Money amount); 3223*dc5640d1SHerbert Xue } </pre> 3224*dc5640d1SHerbert Xue ...and to the concrete type's constructor parameters: 3225*dc5640d1SHerbert Xue <pre>public class RealPayment implements Payment { 3226*dc5640d1SHerbert Xue {@literal @}Inject 3227*dc5640d1SHerbert Xue public RealPayment( 3228*dc5640d1SHerbert Xue CreditService creditService, 3229*dc5640d1SHerbert Xue AuthService authService, 3230*dc5640d1SHerbert Xue <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 3231*dc5640d1SHerbert Xue <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 3232*dc5640d1SHerbert Xue <strong>{@literal @}Assisted</strong> Money amount) { 3233*dc5640d1SHerbert Xue ... 3234*dc5640d1SHerbert Xue } 3235*dc5640d1SHerbert Xue }</pre> 3236*dc5640d1SHerbert Xue 3237*dc5640d1SHerbert Xue <h3>Values are created by Guice</h3> 3238*dc5640d1SHerbert Xue Returned factories use child injectors to create values. The values are eligible for method 3239*dc5640d1SHerbert Xue interception. In addition, {@literal @}{@literal Inject} members will be injected before they are 3240*dc5640d1SHerbert Xue returned. 3241*dc5640d1SHerbert Xue 3242*dc5640d1SHerbert Xue <h3>Backwards compatibility using {@literal @}AssistedInject</h3> 3243*dc5640d1SHerbert Xue Instead of the {@literal @}Inject annotation, you may annotate the constructed classes with 3244*dc5640d1SHerbert Xue {@literal @}{@link AssistedInject}. This triggers a limited backwards-compatability mode. 3245*dc5640d1SHerbert Xue 3246*dc5640d1SHerbert Xue <p>Instead of matching factory method arguments to constructor parameters using their names, the 3247*dc5640d1SHerbert Xue <strong>parameters are matched by their order</strong>. The first factory method argument is 3248*dc5640d1SHerbert Xue used for the first {@literal @}Assisted constructor parameter, etc.. Annotation names have no 3249*dc5640d1SHerbert Xue effect. 3250*dc5640d1SHerbert Xue 3251*dc5640d1SHerbert Xue <p>Returned values are <strong>not created by Guice</strong>. These types are not eligible for 3252*dc5640d1SHerbert Xue method interception. They do receive post-construction member injection. 3253*dc5640d1SHerbert Xue 3254*dc5640d1SHerbert Xue @param <F> The factory interface 3255*dc5640d1SHerbert Xue 3256*dc5640d1SHerbert Xue @author [email protected] (Jerome Mourits) 3257*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 3258*dc5640d1SHerbert Xue @author [email protected] (Daniel Martin) 3259*dc5640d1SHerbert Xue 3260*dc5640d1SHerbert Xue @deprecated use {@link FactoryModuleBuilder} instead.]]> 3261*dc5640d1SHerbert Xue </doc> 3262*dc5640d1SHerbert Xue </class> 3263*dc5640d1SHerbert Xue <!-- end class com.google.inject.assistedinject.FactoryProvider --> 3264*dc5640d1SHerbert Xue</package> 3265*dc5640d1SHerbert Xue<package name="com.google.inject.binder"> 3266*dc5640d1SHerbert Xue <!-- start interface com.google.inject.binder.AnnotatedBindingBuilder --> 3267*dc5640d1SHerbert Xue <interface name="AnnotatedBindingBuilder" abstract="true" 3268*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3269*dc5640d1SHerbert Xue deprecated="not deprecated"> 3270*dc5640d1SHerbert Xue <implements name="com.google.inject.binder.LinkedBindingBuilder<T>"/> 3271*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder<T>" 3272*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3273*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3274*dc5640d1SHerbert Xue deprecated="not deprecated"> 3275*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3276*dc5640d1SHerbert Xue <doc> 3277*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3278*dc5640d1SHerbert Xue </doc> 3279*dc5640d1SHerbert Xue </method> 3280*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder<T>" 3281*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3282*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3283*dc5640d1SHerbert Xue deprecated="not deprecated"> 3284*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 3285*dc5640d1SHerbert Xue <doc> 3286*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3287*dc5640d1SHerbert Xue </doc> 3288*dc5640d1SHerbert Xue </method> 3289*dc5640d1SHerbert Xue <doc> 3290*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3291*dc5640d1SHerbert Xue 3292*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 3293*dc5640d1SHerbert Xue </doc> 3294*dc5640d1SHerbert Xue </interface> 3295*dc5640d1SHerbert Xue <!-- end interface com.google.inject.binder.AnnotatedBindingBuilder --> 3296*dc5640d1SHerbert Xue <!-- start interface com.google.inject.binder.AnnotatedConstantBindingBuilder --> 3297*dc5640d1SHerbert Xue <interface name="AnnotatedConstantBindingBuilder" abstract="true" 3298*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3299*dc5640d1SHerbert Xue deprecated="not deprecated"> 3300*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder" 3301*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3302*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3303*dc5640d1SHerbert Xue deprecated="not deprecated"> 3304*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3305*dc5640d1SHerbert Xue <doc> 3306*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3307*dc5640d1SHerbert Xue </doc> 3308*dc5640d1SHerbert Xue </method> 3309*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder" 3310*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3311*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3312*dc5640d1SHerbert Xue deprecated="not deprecated"> 3313*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 3314*dc5640d1SHerbert Xue <doc> 3315*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3316*dc5640d1SHerbert Xue </doc> 3317*dc5640d1SHerbert Xue </method> 3318*dc5640d1SHerbert Xue <doc> 3319*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3320*dc5640d1SHerbert Xue 3321*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 3322*dc5640d1SHerbert Xue </doc> 3323*dc5640d1SHerbert Xue </interface> 3324*dc5640d1SHerbert Xue <!-- end interface com.google.inject.binder.AnnotatedConstantBindingBuilder --> 3325*dc5640d1SHerbert Xue <!-- start interface com.google.inject.binder.AnnotatedElementBuilder --> 3326*dc5640d1SHerbert Xue <interface name="AnnotatedElementBuilder" abstract="true" 3327*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3328*dc5640d1SHerbert Xue deprecated="not deprecated"> 3329*dc5640d1SHerbert Xue <method name="annotatedWith" 3330*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3331*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3332*dc5640d1SHerbert Xue deprecated="not deprecated"> 3333*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3334*dc5640d1SHerbert Xue <doc> 3335*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3336*dc5640d1SHerbert Xue </doc> 3337*dc5640d1SHerbert Xue </method> 3338*dc5640d1SHerbert Xue <method name="annotatedWith" 3339*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3340*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3341*dc5640d1SHerbert Xue deprecated="not deprecated"> 3342*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 3343*dc5640d1SHerbert Xue <doc> 3344*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3345*dc5640d1SHerbert Xue </doc> 3346*dc5640d1SHerbert Xue </method> 3347*dc5640d1SHerbert Xue <doc> 3348*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3349*dc5640d1SHerbert Xue 3350*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 3351*dc5640d1SHerbert Xue @since 2.0]]> 3352*dc5640d1SHerbert Xue </doc> 3353*dc5640d1SHerbert Xue </interface> 3354*dc5640d1SHerbert Xue <!-- end interface com.google.inject.binder.AnnotatedElementBuilder --> 3355*dc5640d1SHerbert Xue <!-- start interface com.google.inject.binder.ConstantBindingBuilder --> 3356*dc5640d1SHerbert Xue <interface name="ConstantBindingBuilder" abstract="true" 3357*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3358*dc5640d1SHerbert Xue deprecated="not deprecated"> 3359*dc5640d1SHerbert Xue <method name="to" 3360*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3361*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3362*dc5640d1SHerbert Xue deprecated="not deprecated"> 3363*dc5640d1SHerbert Xue <param name="value" type="java.lang.String"/> 3364*dc5640d1SHerbert Xue <doc> 3365*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 3366*dc5640d1SHerbert Xue </doc> 3367*dc5640d1SHerbert Xue </method> 3368*dc5640d1SHerbert Xue <method name="to" 3369*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3370*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3371*dc5640d1SHerbert Xue deprecated="not deprecated"> 3372*dc5640d1SHerbert Xue <param name="value" type="int"/> 3373*dc5640d1SHerbert Xue <doc> 3374*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 3375*dc5640d1SHerbert Xue </doc> 3376*dc5640d1SHerbert Xue </method> 3377*dc5640d1SHerbert Xue <method name="to" 3378*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3379*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3380*dc5640d1SHerbert Xue deprecated="not deprecated"> 3381*dc5640d1SHerbert Xue <param name="value" type="long"/> 3382*dc5640d1SHerbert Xue <doc> 3383*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 3384*dc5640d1SHerbert Xue </doc> 3385*dc5640d1SHerbert Xue </method> 3386*dc5640d1SHerbert Xue <method name="to" 3387*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3388*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3389*dc5640d1SHerbert Xue deprecated="not deprecated"> 3390*dc5640d1SHerbert Xue <param name="value" type="boolean"/> 3391*dc5640d1SHerbert Xue <doc> 3392*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 3393*dc5640d1SHerbert Xue </doc> 3394*dc5640d1SHerbert Xue </method> 3395*dc5640d1SHerbert Xue <method name="to" 3396*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3397*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3398*dc5640d1SHerbert Xue deprecated="not deprecated"> 3399*dc5640d1SHerbert Xue <param name="value" type="double"/> 3400*dc5640d1SHerbert Xue <doc> 3401*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 3402*dc5640d1SHerbert Xue </doc> 3403*dc5640d1SHerbert Xue </method> 3404*dc5640d1SHerbert Xue <method name="to" 3405*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3406*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3407*dc5640d1SHerbert Xue deprecated="not deprecated"> 3408*dc5640d1SHerbert Xue <param name="value" type="float"/> 3409*dc5640d1SHerbert Xue <doc> 3410*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 3411*dc5640d1SHerbert Xue </doc> 3412*dc5640d1SHerbert Xue </method> 3413*dc5640d1SHerbert Xue <method name="to" 3414*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3415*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3416*dc5640d1SHerbert Xue deprecated="not deprecated"> 3417*dc5640d1SHerbert Xue <param name="value" type="short"/> 3418*dc5640d1SHerbert Xue <doc> 3419*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 3420*dc5640d1SHerbert Xue </doc> 3421*dc5640d1SHerbert Xue </method> 3422*dc5640d1SHerbert Xue <method name="to" 3423*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3424*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3425*dc5640d1SHerbert Xue deprecated="not deprecated"> 3426*dc5640d1SHerbert Xue <param name="value" type="char"/> 3427*dc5640d1SHerbert Xue <doc> 3428*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 3429*dc5640d1SHerbert Xue </doc> 3430*dc5640d1SHerbert Xue </method> 3431*dc5640d1SHerbert Xue <method name="to" 3432*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3433*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3434*dc5640d1SHerbert Xue deprecated="not deprecated"> 3435*dc5640d1SHerbert Xue <param name="value" type="byte"/> 3436*dc5640d1SHerbert Xue <doc> 3437*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value. 3438*dc5640d1SHerbert Xue 3439*dc5640d1SHerbert Xue @since 3.0]]> 3440*dc5640d1SHerbert Xue </doc> 3441*dc5640d1SHerbert Xue </method> 3442*dc5640d1SHerbert Xue <method name="to" 3443*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3444*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3445*dc5640d1SHerbert Xue deprecated="not deprecated"> 3446*dc5640d1SHerbert Xue <param name="value" type="java.lang.Class<?>"/> 3447*dc5640d1SHerbert Xue <doc> 3448*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 3449*dc5640d1SHerbert Xue </doc> 3450*dc5640d1SHerbert Xue </method> 3451*dc5640d1SHerbert Xue <method name="to" 3452*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3453*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3454*dc5640d1SHerbert Xue deprecated="not deprecated"> 3455*dc5640d1SHerbert Xue <param name="value" type="E extends java.lang.Enum<E>"/> 3456*dc5640d1SHerbert Xue <doc> 3457*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 3458*dc5640d1SHerbert Xue </doc> 3459*dc5640d1SHerbert Xue </method> 3460*dc5640d1SHerbert Xue <doc> 3461*dc5640d1SHerbert Xue <![CDATA[Binds to a constant value.]]> 3462*dc5640d1SHerbert Xue </doc> 3463*dc5640d1SHerbert Xue </interface> 3464*dc5640d1SHerbert Xue <!-- end interface com.google.inject.binder.ConstantBindingBuilder --> 3465*dc5640d1SHerbert Xue <!-- start interface com.google.inject.binder.LinkedBindingBuilder --> 3466*dc5640d1SHerbert Xue <interface name="LinkedBindingBuilder" abstract="true" 3467*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3468*dc5640d1SHerbert Xue deprecated="not deprecated"> 3469*dc5640d1SHerbert Xue <implements name="com.google.inject.binder.ScopedBindingBuilder"/> 3470*dc5640d1SHerbert Xue <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 3471*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3472*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3473*dc5640d1SHerbert Xue deprecated="not deprecated"> 3474*dc5640d1SHerbert Xue <param name="implementation" type="java.lang.Class<? extends T>"/> 3475*dc5640d1SHerbert Xue <doc> 3476*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3477*dc5640d1SHerbert Xue </doc> 3478*dc5640d1SHerbert Xue </method> 3479*dc5640d1SHerbert Xue <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 3480*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3481*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3482*dc5640d1SHerbert Xue deprecated="not deprecated"> 3483*dc5640d1SHerbert Xue <param name="implementation" type="com.google.inject.TypeLiteral<? extends T>"/> 3484*dc5640d1SHerbert Xue <doc> 3485*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3486*dc5640d1SHerbert Xue </doc> 3487*dc5640d1SHerbert Xue </method> 3488*dc5640d1SHerbert Xue <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 3489*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3490*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3491*dc5640d1SHerbert Xue deprecated="not deprecated"> 3492*dc5640d1SHerbert Xue <param name="targetKey" type="com.google.inject.Key<? extends T>"/> 3493*dc5640d1SHerbert Xue <doc> 3494*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3495*dc5640d1SHerbert Xue </doc> 3496*dc5640d1SHerbert Xue </method> 3497*dc5640d1SHerbert Xue <method name="toInstance" 3498*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3499*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3500*dc5640d1SHerbert Xue deprecated="not deprecated"> 3501*dc5640d1SHerbert Xue <param name="instance" type="T"/> 3502*dc5640d1SHerbert Xue <doc> 3503*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3504*dc5640d1SHerbert Xue 3505*dc5640d1SHerbert Xue @see com.google.inject.Injector#injectMembers]]> 3506*dc5640d1SHerbert Xue </doc> 3507*dc5640d1SHerbert Xue </method> 3508*dc5640d1SHerbert Xue <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3509*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3510*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3511*dc5640d1SHerbert Xue deprecated="not deprecated"> 3512*dc5640d1SHerbert Xue <param name="provider" type="com.google.inject.Provider<? extends T>"/> 3513*dc5640d1SHerbert Xue <doc> 3514*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3515*dc5640d1SHerbert Xue 3516*dc5640d1SHerbert Xue @see com.google.inject.Injector#injectMembers]]> 3517*dc5640d1SHerbert Xue </doc> 3518*dc5640d1SHerbert Xue </method> 3519*dc5640d1SHerbert Xue <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3520*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3521*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3522*dc5640d1SHerbert Xue deprecated="not deprecated"> 3523*dc5640d1SHerbert Xue <param name="providerType" type="java.lang.Class<? extends javax.inject.Provider<? extends T>>"/> 3524*dc5640d1SHerbert Xue <doc> 3525*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3526*dc5640d1SHerbert Xue </doc> 3527*dc5640d1SHerbert Xue </method> 3528*dc5640d1SHerbert Xue <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3529*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3530*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3531*dc5640d1SHerbert Xue deprecated="not deprecated"> 3532*dc5640d1SHerbert Xue <param name="providerType" type="com.google.inject.TypeLiteral<? extends javax.inject.Provider<? extends T>>"/> 3533*dc5640d1SHerbert Xue <doc> 3534*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3535*dc5640d1SHerbert Xue </doc> 3536*dc5640d1SHerbert Xue </method> 3537*dc5640d1SHerbert Xue <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3538*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3539*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3540*dc5640d1SHerbert Xue deprecated="not deprecated"> 3541*dc5640d1SHerbert Xue <param name="providerKey" type="com.google.inject.Key<? extends javax.inject.Provider<? extends T>>"/> 3542*dc5640d1SHerbert Xue <doc> 3543*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3544*dc5640d1SHerbert Xue </doc> 3545*dc5640d1SHerbert Xue </method> 3546*dc5640d1SHerbert Xue <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder" 3547*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3548*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3549*dc5640d1SHerbert Xue deprecated="not deprecated"> 3550*dc5640d1SHerbert Xue <param name="constructor" type="java.lang.reflect.Constructor<S>"/> 3551*dc5640d1SHerbert Xue <doc> 3552*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3553*dc5640d1SHerbert Xue 3554*dc5640d1SHerbert Xue @since 3.0]]> 3555*dc5640d1SHerbert Xue </doc> 3556*dc5640d1SHerbert Xue </method> 3557*dc5640d1SHerbert Xue <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder" 3558*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3559*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3560*dc5640d1SHerbert Xue deprecated="not deprecated"> 3561*dc5640d1SHerbert Xue <param name="constructor" type="java.lang.reflect.Constructor<S>"/> 3562*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<? extends S>"/> 3563*dc5640d1SHerbert Xue <doc> 3564*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3565*dc5640d1SHerbert Xue 3566*dc5640d1SHerbert Xue @since 3.0]]> 3567*dc5640d1SHerbert Xue </doc> 3568*dc5640d1SHerbert Xue </method> 3569*dc5640d1SHerbert Xue <doc> 3570*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3571*dc5640d1SHerbert Xue 3572*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 3573*dc5640d1SHerbert Xue </doc> 3574*dc5640d1SHerbert Xue </interface> 3575*dc5640d1SHerbert Xue <!-- end interface com.google.inject.binder.LinkedBindingBuilder --> 3576*dc5640d1SHerbert Xue <!-- start interface com.google.inject.binder.ScopedBindingBuilder --> 3577*dc5640d1SHerbert Xue <interface name="ScopedBindingBuilder" abstract="true" 3578*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3579*dc5640d1SHerbert Xue deprecated="not deprecated"> 3580*dc5640d1SHerbert Xue <method name="in" 3581*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3582*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3583*dc5640d1SHerbert Xue deprecated="not deprecated"> 3584*dc5640d1SHerbert Xue <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3585*dc5640d1SHerbert Xue <doc> 3586*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3587*dc5640d1SHerbert Xue </doc> 3588*dc5640d1SHerbert Xue </method> 3589*dc5640d1SHerbert Xue <method name="in" 3590*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3591*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3592*dc5640d1SHerbert Xue deprecated="not deprecated"> 3593*dc5640d1SHerbert Xue <param name="scope" type="com.google.inject.Scope"/> 3594*dc5640d1SHerbert Xue <doc> 3595*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3596*dc5640d1SHerbert Xue </doc> 3597*dc5640d1SHerbert Xue </method> 3598*dc5640d1SHerbert Xue <method name="asEagerSingleton" 3599*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3600*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3601*dc5640d1SHerbert Xue deprecated="not deprecated"> 3602*dc5640d1SHerbert Xue <doc> 3603*dc5640d1SHerbert Xue <![CDATA[Instructs the {@link com.google.inject.Injector} to eagerly initialize this 3604*dc5640d1SHerbert Xue singleton-scoped binding upon creation. Useful for application 3605*dc5640d1SHerbert Xue initialization logic. See the EDSL examples at 3606*dc5640d1SHerbert Xue {@link com.google.inject.Binder}.]]> 3607*dc5640d1SHerbert Xue </doc> 3608*dc5640d1SHerbert Xue </method> 3609*dc5640d1SHerbert Xue <doc> 3610*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3611*dc5640d1SHerbert Xue 3612*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 3613*dc5640d1SHerbert Xue </doc> 3614*dc5640d1SHerbert Xue </interface> 3615*dc5640d1SHerbert Xue <!-- end interface com.google.inject.binder.ScopedBindingBuilder --> 3616*dc5640d1SHerbert Xue</package> 3617*dc5640d1SHerbert Xue<package name="com.google.inject.grapher"> 3618*dc5640d1SHerbert Xue <!-- start interface com.google.inject.grapher.BindingEdge --> 3619*dc5640d1SHerbert Xue <interface name="BindingEdge" abstract="true" 3620*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3621*dc5640d1SHerbert Xue deprecated="not deprecated"> 3622*dc5640d1SHerbert Xue <method name="setType" 3623*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3624*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3625*dc5640d1SHerbert Xue deprecated="not deprecated"> 3626*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.grapher.BindingEdge.Type"/> 3627*dc5640d1SHerbert Xue </method> 3628*dc5640d1SHerbert Xue <doc> 3629*dc5640d1SHerbert Xue <![CDATA[Interface for an edge that connects an interface to the type or instance 3630*dc5640d1SHerbert Xue that is bound to implement it. 3631*dc5640d1SHerbert Xue 3632*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins) 3633*dc5640d1SHerbert Xue 3634*dc5640d1SHerbert Xue @param <K> The type for node IDs.]]> 3635*dc5640d1SHerbert Xue </doc> 3636*dc5640d1SHerbert Xue </interface> 3637*dc5640d1SHerbert Xue <!-- end interface com.google.inject.grapher.BindingEdge --> 3638*dc5640d1SHerbert Xue <!-- start interface com.google.inject.grapher.BindingEdge.Factory --> 3639*dc5640d1SHerbert Xue <interface name="BindingEdge.Factory" abstract="true" 3640*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3641*dc5640d1SHerbert Xue deprecated="not deprecated"> 3642*dc5640d1SHerbert Xue <method name="newBindingEdge" return="T extends com.google.inject.grapher.BindingEdge<K>" 3643*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3644*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3645*dc5640d1SHerbert Xue deprecated="not deprecated"> 3646*dc5640d1SHerbert Xue <param name="fromId" type="K"/> 3647*dc5640d1SHerbert Xue <param name="toId" type="K"/> 3648*dc5640d1SHerbert Xue <doc> 3649*dc5640d1SHerbert Xue <![CDATA[Creates a new {@link BindingEdge} instance and adds it to the graph. 3650*dc5640d1SHerbert Xue 3651*dc5640d1SHerbert Xue @param fromId Node ID for the interface node. 3652*dc5640d1SHerbert Xue @param toId Node ID for the implementation (class or instance) node. 3653*dc5640d1SHerbert Xue @return The newly created and added {@link BindingEdge}.]]> 3654*dc5640d1SHerbert Xue </doc> 3655*dc5640d1SHerbert Xue </method> 3656*dc5640d1SHerbert Xue <doc> 3657*dc5640d1SHerbert Xue <![CDATA[Factory interface for {@link BindingEdge}s. Renderer implementations will 3658*dc5640d1SHerbert Xue need to provide an implementation for this. 3659*dc5640d1SHerbert Xue 3660*dc5640d1SHerbert Xue @param <K> The type for node IDs. 3661*dc5640d1SHerbert Xue @param <T> The {@link BindingEdge} sub-type that this factory provides.]]> 3662*dc5640d1SHerbert Xue </doc> 3663*dc5640d1SHerbert Xue </interface> 3664*dc5640d1SHerbert Xue <!-- end interface com.google.inject.grapher.BindingEdge.Factory --> 3665*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.BindingEdge.Type --> 3666*dc5640d1SHerbert Xue <class name="BindingEdge.Type" extends="java.lang.Enum<com.google.inject.grapher.BindingEdge.Type>" 3667*dc5640d1SHerbert Xue abstract="false" 3668*dc5640d1SHerbert Xue static="true" final="true" visibility="public" 3669*dc5640d1SHerbert Xue deprecated="not deprecated"> 3670*dc5640d1SHerbert Xue <method name="values" return="com.google.inject.grapher.BindingEdge.Type[]" 3671*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3672*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3673*dc5640d1SHerbert Xue deprecated="not deprecated"> 3674*dc5640d1SHerbert Xue </method> 3675*dc5640d1SHerbert Xue <method name="valueOf" return="com.google.inject.grapher.BindingEdge.Type" 3676*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3677*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3678*dc5640d1SHerbert Xue deprecated="not deprecated"> 3679*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 3680*dc5640d1SHerbert Xue </method> 3681*dc5640d1SHerbert Xue <doc> 3682*dc5640d1SHerbert Xue <![CDATA[Classification for what kind of binding this edge represents.]]> 3683*dc5640d1SHerbert Xue </doc> 3684*dc5640d1SHerbert Xue </class> 3685*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.BindingEdge.Type --> 3686*dc5640d1SHerbert Xue <!-- start interface com.google.inject.grapher.DependencyEdge --> 3687*dc5640d1SHerbert Xue <interface name="DependencyEdge" abstract="true" 3688*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3689*dc5640d1SHerbert Xue deprecated="not deprecated"> 3690*dc5640d1SHerbert Xue <doc> 3691*dc5640d1SHerbert Xue <![CDATA[Interface for an edge from a class or {@link InjectionPoint} to the 3692*dc5640d1SHerbert Xue interface node that will satisfy the dependency. 3693*dc5640d1SHerbert Xue 3694*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins) 3695*dc5640d1SHerbert Xue 3696*dc5640d1SHerbert Xue @param <K> The type for node IDs.]]> 3697*dc5640d1SHerbert Xue </doc> 3698*dc5640d1SHerbert Xue </interface> 3699*dc5640d1SHerbert Xue <!-- end interface com.google.inject.grapher.DependencyEdge --> 3700*dc5640d1SHerbert Xue <!-- start interface com.google.inject.grapher.DependencyEdge.Factory --> 3701*dc5640d1SHerbert Xue <interface name="DependencyEdge.Factory" abstract="true" 3702*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3703*dc5640d1SHerbert Xue deprecated="not deprecated"> 3704*dc5640d1SHerbert Xue <method name="newDependencyEdge" return="T extends com.google.inject.grapher.DependencyEdge<K>" 3705*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3706*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3707*dc5640d1SHerbert Xue deprecated="not deprecated"> 3708*dc5640d1SHerbert Xue <param name="fromId" type="K"/> 3709*dc5640d1SHerbert Xue <param name="fromPoint" type="com.google.inject.spi.InjectionPoint"/> 3710*dc5640d1SHerbert Xue <param name="toId" type="K"/> 3711*dc5640d1SHerbert Xue <doc> 3712*dc5640d1SHerbert Xue <![CDATA[Creates a new {@link DependencyEdge} and adds it to the graph. 3713*dc5640d1SHerbert Xue 3714*dc5640d1SHerbert Xue @param fromId The ID for the class or instance node that has the 3715*dc5640d1SHerbert Xue dependency. 3716*dc5640d1SHerbert Xue @param fromPoint The point where the dependency will be 3717*dc5640d1SHerbert Xue {@literal @}{@link Inject}ed. 3718*dc5640d1SHerbert Xue @param toId The ID for the interface node that satisfies the dependency.]]> 3719*dc5640d1SHerbert Xue </doc> 3720*dc5640d1SHerbert Xue </method> 3721*dc5640d1SHerbert Xue <doc> 3722*dc5640d1SHerbert Xue <![CDATA[Factory interface for {@link DependencyEdge}s. Renderer implementations 3723*dc5640d1SHerbert Xue will need to provide an implementation for this. 3724*dc5640d1SHerbert Xue 3725*dc5640d1SHerbert Xue @param <K> The type for node IDs. 3726*dc5640d1SHerbert Xue @param <T> The {@link DependencyEdge} sub-type that this factory provides.]]> 3727*dc5640d1SHerbert Xue </doc> 3728*dc5640d1SHerbert Xue </interface> 3729*dc5640d1SHerbert Xue <!-- end interface com.google.inject.grapher.DependencyEdge.Factory --> 3730*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.GrapherModule --> 3731*dc5640d1SHerbert Xue <class name="GrapherModule" extends="com.google.inject.AbstractModule" 3732*dc5640d1SHerbert Xue abstract="false" 3733*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3734*dc5640d1SHerbert Xue deprecated="not deprecated"> 3735*dc5640d1SHerbert Xue <constructor name="GrapherModule" 3736*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3737*dc5640d1SHerbert Xue deprecated="not deprecated"> 3738*dc5640d1SHerbert Xue </constructor> 3739*dc5640d1SHerbert Xue <method name="configure" 3740*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3741*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 3742*dc5640d1SHerbert Xue deprecated="not deprecated"> 3743*dc5640d1SHerbert Xue </method> 3744*dc5640d1SHerbert Xue <doc> 3745*dc5640d1SHerbert Xue <![CDATA[Module for the common bindings for {@link InjectorGrapher}. You will also 3746*dc5640d1SHerbert Xue need to bind a {@link Module} that satisfies the {@link Renderer} 3747*dc5640d1SHerbert Xue dependency. 3748*dc5640d1SHerbert Xue <p> 3749*dc5640d1SHerbert Xue If you want to use subtypes of the node and edge classes, or a different 3750*dc5640d1SHerbert Xue node ID type, you will need to override the {@link GraphingVisitor} binding 3751*dc5640d1SHerbert Xue to specify the new type parameters. 3752*dc5640d1SHerbert Xue 3753*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 3754*dc5640d1SHerbert Xue </doc> 3755*dc5640d1SHerbert Xue </class> 3756*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.GrapherModule --> 3757*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.GraphingVisitor --> 3758*dc5640d1SHerbert Xue <class name="GraphingVisitor" extends="java.lang.Object" 3759*dc5640d1SHerbert Xue abstract="false" 3760*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3761*dc5640d1SHerbert Xue deprecated="not deprecated"> 3762*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.BindingTargetVisitor<java.lang.Object, java.lang.Void>"/> 3763*dc5640d1SHerbert Xue <constructor name="GraphingVisitor" type="com.google.inject.grapher.NodeIdFactory<K>, com.google.inject.grapher.InterfaceNode.Factory<K, N>, com.google.inject.grapher.ImplementationNode.Factory<K, M>, com.google.inject.grapher.BindingEdge.Factory<K, B>, com.google.inject.grapher.DependencyEdge.Factory<K, D>, com.google.inject.grapher.NodeAliasFactory<K>" 3764*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3765*dc5640d1SHerbert Xue deprecated="not deprecated"> 3766*dc5640d1SHerbert Xue </constructor> 3767*dc5640d1SHerbert Xue <method name="getClassNodeId" return="K" 3768*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3769*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 3770*dc5640d1SHerbert Xue deprecated="not deprecated"> 3771*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.Binding<?>"/> 3772*dc5640d1SHerbert Xue <doc> 3773*dc5640d1SHerbert Xue <![CDATA[Helper method to return the standard node ID for the {@link Binding}'s 3774*dc5640d1SHerbert Xue {@link Key}. 3775*dc5640d1SHerbert Xue 3776*dc5640d1SHerbert Xue @see NodeIdFactory#getClassNodeId(Key)]]> 3777*dc5640d1SHerbert Xue </doc> 3778*dc5640d1SHerbert Xue </method> 3779*dc5640d1SHerbert Xue <method name="getInstanceNodeId" return="K" 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="binding" type="com.google.inject.Binding<?>"/> 3784*dc5640d1SHerbert Xue <doc> 3785*dc5640d1SHerbert Xue <![CDATA[Helper method to return the instance node ID for the {@link Binding}'s 3786*dc5640d1SHerbert Xue {@link Key}. 3787*dc5640d1SHerbert Xue 3788*dc5640d1SHerbert Xue @see NodeIdFactory#getInstanceNodeId(Key)]]> 3789*dc5640d1SHerbert Xue </doc> 3790*dc5640d1SHerbert Xue </method> 3791*dc5640d1SHerbert Xue <method name="newInterfaceNode" return="N extends com.google.inject.grapher.InterfaceNode<K>" 3792*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3793*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 3794*dc5640d1SHerbert Xue deprecated="not deprecated"> 3795*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.Binding<?>"/> 3796*dc5640d1SHerbert Xue <doc> 3797*dc5640d1SHerbert Xue <![CDATA[Creates and returns a new {@link InterfaceNode} object for the given 3798*dc5640d1SHerbert Xue {@link Binding}.]]> 3799*dc5640d1SHerbert Xue </doc> 3800*dc5640d1SHerbert Xue </method> 3801*dc5640d1SHerbert Xue <method name="newClassImplementationNode" return="M extends com.google.inject.grapher.ImplementationNode<K>" 3802*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3803*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 3804*dc5640d1SHerbert Xue deprecated="not deprecated"> 3805*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.Binding<?>"/> 3806*dc5640d1SHerbert Xue <param name="constructorInjectionPoint" type="com.google.inject.spi.InjectionPoint"/> 3807*dc5640d1SHerbert Xue <param name="memberInjectionPoints" type="java.util.Collection<com.google.inject.spi.InjectionPoint>"/> 3808*dc5640d1SHerbert Xue <doc> 3809*dc5640d1SHerbert Xue <![CDATA[Creates and returns a new {@link ImplementationNode} for the given 3810*dc5640d1SHerbert Xue {@link Binding}, where the {@link Binding} is for a class that Guice 3811*dc5640d1SHerbert Xue will instantiate, rather than a specific instance.]]> 3812*dc5640d1SHerbert Xue </doc> 3813*dc5640d1SHerbert Xue </method> 3814*dc5640d1SHerbert Xue <method name="newInstanceImplementationNode" return="M extends com.google.inject.grapher.ImplementationNode<K>" 3815*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3816*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 3817*dc5640d1SHerbert Xue deprecated="not deprecated"> 3818*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.Binding<?>"/> 3819*dc5640d1SHerbert Xue <param name="instance" type="java.lang.Object"/> 3820*dc5640d1SHerbert Xue <doc> 3821*dc5640d1SHerbert Xue <![CDATA[Creates and returns a new {@link ImplementationNode} for the given 3822*dc5640d1SHerbert Xue {@link Binding}, where the {@link Binding} is for an instance, rather than 3823*dc5640d1SHerbert Xue a class.]]> 3824*dc5640d1SHerbert Xue </doc> 3825*dc5640d1SHerbert Xue </method> 3826*dc5640d1SHerbert Xue <method name="newBindingEdge" return="B extends com.google.inject.grapher.BindingEdge<K>" 3827*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3828*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 3829*dc5640d1SHerbert Xue deprecated="not deprecated"> 3830*dc5640d1SHerbert Xue <param name="nodeId" type="K"/> 3831*dc5640d1SHerbert Xue <param name="toId" type="K"/> 3832*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.grapher.BindingEdge.Type"/> 3833*dc5640d1SHerbert Xue <doc> 3834*dc5640d1SHerbert Xue <![CDATA[Creates a new {@link BindingEdge} from the given node to the specified 3835*dc5640d1SHerbert Xue node. 3836*dc5640d1SHerbert Xue 3837*dc5640d1SHerbert Xue @param nodeId ID of the {@link InterfaceNode} that binds to the other. 3838*dc5640d1SHerbert Xue @param toId The node ID of a class or instance that is bound. 3839*dc5640d1SHerbert Xue @param type The {@link BindingEdge.Type} of this binding. 3840*dc5640d1SHerbert Xue @return The newly-created and added {@link BindingEdge}.]]> 3841*dc5640d1SHerbert Xue </doc> 3842*dc5640d1SHerbert Xue </method> 3843*dc5640d1SHerbert Xue <method name="newDependencyEdges" return="java.util.Collection<D>" 3844*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3845*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 3846*dc5640d1SHerbert Xue deprecated="not deprecated"> 3847*dc5640d1SHerbert Xue <param name="nodeId" type="K"/> 3848*dc5640d1SHerbert Xue <param name="node" type="M extends com.google.inject.grapher.ImplementationNode<K>"/> 3849*dc5640d1SHerbert Xue <param name="dependencies" type="java.util.Collection<com.google.inject.spi.Dependency<?>>"/> 3850*dc5640d1SHerbert Xue <doc> 3851*dc5640d1SHerbert Xue <![CDATA[Adds {@link DependencyEdge}s to the graph for each of the provided 3852*dc5640d1SHerbert Xue {@link Dependency}s. These will be from the given node ID to the 3853*dc5640d1SHerbert Xue {@link Dependency}'s {@link Key}. 3854*dc5640d1SHerbert Xue <p> 3855*dc5640d1SHerbert Xue If a {@link Dependency} has an associated {@link InjectionPoint}, its 3856*dc5640d1SHerbert Xue member will be added to the given {@link ImplementationNode} and the edge 3857*dc5640d1SHerbert Xue will start at the {@link Member}. 3858*dc5640d1SHerbert Xue 3859*dc5640d1SHerbert Xue @see #newDependencyEdge(Object, InjectionPoint, Dependency) 3860*dc5640d1SHerbert Xue 3861*dc5640d1SHerbert Xue @param nodeId ID of the node that should be the tail of the 3862*dc5640d1SHerbert Xue {@link DependencyEdge}s. 3863*dc5640d1SHerbert Xue @param node An {@link ImplementationNode} to add {@link Member}s to. 3864*dc5640d1SHerbert Xue @param dependencies {@link Collection} of {@link Dependency}s from the 3865*dc5640d1SHerbert Xue {@link Binding}. 3866*dc5640d1SHerbert Xue @return A {@link Collection} of the {@link DependencyEdge}s that were 3867*dc5640d1SHerbert Xue added to the graph.]]> 3868*dc5640d1SHerbert Xue </doc> 3869*dc5640d1SHerbert Xue </method> 3870*dc5640d1SHerbert Xue <method name="newDependencyEdge" return="D extends com.google.inject.grapher.DependencyEdge<K>" 3871*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3872*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 3873*dc5640d1SHerbert Xue deprecated="not deprecated"> 3874*dc5640d1SHerbert Xue <param name="nodeId" type="K"/> 3875*dc5640d1SHerbert Xue <param name="injectionPoint" type="com.google.inject.spi.InjectionPoint"/> 3876*dc5640d1SHerbert Xue <param name="dependency" type="com.google.inject.spi.Dependency<?>"/> 3877*dc5640d1SHerbert Xue <doc> 3878*dc5640d1SHerbert Xue <![CDATA[Creates a new {@link DependencyEdge} from the given node to a 3879*dc5640d1SHerbert Xue {@link Dependency}. 3880*dc5640d1SHerbert Xue <p> 3881*dc5640d1SHerbert Xue This method takes more comprehensive parameters than strictly necessary 3882*dc5640d1SHerbert Xue in case they would be useful to overriding implementations. 3883*dc5640d1SHerbert Xue 3884*dc5640d1SHerbert Xue @param nodeId ID of the {@link ImplementationNode} where the edges will start. 3885*dc5640d1SHerbert Xue @param injectionPoint The {@link InjectionPoint} that gave rise to this 3886*dc5640d1SHerbert Xue {@link Dependency}, if one exists. Used to figure out which 3887*dc5640d1SHerbert Xue {@link Member} the edge should point from. 3888*dc5640d1SHerbert Xue @param dependency The {@link Dependency} to represent with this edge. 3889*dc5640d1SHerbert Xue @return The newly-created and added {@link DependencyEdge}.]]> 3890*dc5640d1SHerbert Xue </doc> 3891*dc5640d1SHerbert Xue </method> 3892*dc5640d1SHerbert Xue <method name="visit" return="java.lang.Void" 3893*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3894*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3895*dc5640d1SHerbert Xue deprecated="not deprecated"> 3896*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ConstructorBinding<?>"/> 3897*dc5640d1SHerbert Xue <doc> 3898*dc5640d1SHerbert Xue <![CDATA[Visitor for {@link ConstructorBinding}s. These are for classes that Guice 3899*dc5640d1SHerbert Xue will instantiate to satisfy injection requests. We create a new 3900*dc5640d1SHerbert Xue {@link ImplementationNode} for the class, then add edges to everything 3901*dc5640d1SHerbert Xue that it depends on to be instantiated. 3902*dc5640d1SHerbert Xue 3903*dc5640d1SHerbert Xue @see #newClassImplementationNode(Binding, InjectionPoint, Collection) 3904*dc5640d1SHerbert Xue @see #newDependencyEdges(Object, ImplementationNode, Collection)]]> 3905*dc5640d1SHerbert Xue </doc> 3906*dc5640d1SHerbert Xue </method> 3907*dc5640d1SHerbert Xue <method name="visit" return="java.lang.Void" 3908*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3909*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3910*dc5640d1SHerbert Xue deprecated="not deprecated"> 3911*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding<?>"/> 3912*dc5640d1SHerbert Xue <doc> 3913*dc5640d1SHerbert Xue <![CDATA[Visitor for {@link ConvertedConstantBinding}. The {@link Binding}'s 3914*dc5640d1SHerbert Xue {@link Key} will be of an annotated primitive type, and the value of 3915*dc5640d1SHerbert Xue {@link ConvertedConstantBinding#getSourceKey()} will be of a 3916*dc5640d1SHerbert Xue {@link String} with the same annotation. 3917*dc5640d1SHerbert Xue <p> 3918*dc5640d1SHerbert Xue We render this as an {@link InterfaceNode} that has a 3919*dc5640d1SHerbert Xue {@link BindingEdge} to the source {@link Key}. That will then be rendered 3920*dc5640d1SHerbert Xue by {@link #visit(InstanceBinding)} as an {@link InterfaceNode} 3921*dc5640d1SHerbert Xue with a {@link BindingEdge} to the {@link String} instance. 3922*dc5640d1SHerbert Xue 3923*dc5640d1SHerbert Xue @see #newInterfaceNode(Binding) 3924*dc5640d1SHerbert Xue @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type)]]> 3925*dc5640d1SHerbert Xue </doc> 3926*dc5640d1SHerbert Xue </method> 3927*dc5640d1SHerbert Xue <method name="visit" return="java.lang.Void" 3928*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3929*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3930*dc5640d1SHerbert Xue deprecated="not deprecated"> 3931*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ExposedBinding<?>"/> 3932*dc5640d1SHerbert Xue <doc> 3933*dc5640d1SHerbert Xue <![CDATA[Currently not displayed on the graph.]]> 3934*dc5640d1SHerbert Xue </doc> 3935*dc5640d1SHerbert Xue </method> 3936*dc5640d1SHerbert Xue <method name="visit" return="java.lang.Void" 3937*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3938*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3939*dc5640d1SHerbert Xue deprecated="not deprecated"> 3940*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.InstanceBinding<?>"/> 3941*dc5640d1SHerbert Xue <doc> 3942*dc5640d1SHerbert Xue <![CDATA[Visitor for {@link InstanceBinding}. We render two nodes in this case: a 3943*dc5640d1SHerbert Xue {@link InterfaceNode} for the binding's {@link Key}, and then an 3944*dc5640d1SHerbert Xue {@link ImplementationNode} for the instance {@link Object} itself. We run 3945*dc5640d1SHerbert Xue a binding node between them. 3946*dc5640d1SHerbert Xue <p> 3947*dc5640d1SHerbert Xue We then render any {@link DependencyEdge}s that the instance may have, 3948*dc5640d1SHerbert Xue which come either from {@link InjectionPoint}s (method and field) on the 3949*dc5640d1SHerbert Xue instance, or on {@link Dependency}s the instance declares through the 3950*dc5640d1SHerbert Xue {@link HasDependencies} interface. 3951*dc5640d1SHerbert Xue 3952*dc5640d1SHerbert Xue @see #newInterfaceNode(Binding) 3953*dc5640d1SHerbert Xue @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type) 3954*dc5640d1SHerbert Xue @see #newInstanceImplementationNode(Binding, Object) 3955*dc5640d1SHerbert Xue @see #newDependencyEdges(Object, ImplementationNode, java.util.Collection)]]> 3956*dc5640d1SHerbert Xue </doc> 3957*dc5640d1SHerbert Xue </method> 3958*dc5640d1SHerbert Xue <method name="visit" return="java.lang.Void" 3959*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3960*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3961*dc5640d1SHerbert Xue deprecated="not deprecated"> 3962*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.LinkedKeyBinding<?>"/> 3963*dc5640d1SHerbert Xue <doc> 3964*dc5640d1SHerbert Xue <![CDATA[Visitor for {@link LinkedKeyBinding}. This is the standard {@link Binding} 3965*dc5640d1SHerbert Xue you get from binding an interface class to an implementation class. We 3966*dc5640d1SHerbert Xue create an {@link InterfaceNode}, then draw a {@link BindingEdge} to the 3967*dc5640d1SHerbert Xue node of the implementing class. 3968*dc5640d1SHerbert Xue 3969*dc5640d1SHerbert Xue @see #newInterfaceNode(Binding) 3970*dc5640d1SHerbert Xue @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type)]]> 3971*dc5640d1SHerbert Xue </doc> 3972*dc5640d1SHerbert Xue </method> 3973*dc5640d1SHerbert Xue <method name="visit" return="java.lang.Void" 3974*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3975*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3976*dc5640d1SHerbert Xue deprecated="not deprecated"> 3977*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProviderBinding<?>"/> 3978*dc5640d1SHerbert Xue <doc> 3979*dc5640d1SHerbert Xue <![CDATA[Visitor for {@link ProviderBinding}. These {@link Binding}s arise from an 3980*dc5640d1SHerbert Xue {@link InjectionPoint} for the {@link Provider} interface. Since this 3981*dc5640d1SHerbert Xue isn't tremendously interesting information, we don't render this binding 3982*dc5640d1SHerbert Xue on the graph, and instead let the {@link DependencyEdge} go straight from 3983*dc5640d1SHerbert Xue the {@link InjectionPoint} to the node specified by 3984*dc5640d1SHerbert Xue {@link ProviderBinding#getProvidedKey()}. 3985*dc5640d1SHerbert Xue 3986*dc5640d1SHerbert Xue @see NodeAliasFactory#newAlias(Object, Object)]]> 3987*dc5640d1SHerbert Xue </doc> 3988*dc5640d1SHerbert Xue </method> 3989*dc5640d1SHerbert Xue <method name="visit" return="java.lang.Void" 3990*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3991*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3992*dc5640d1SHerbert Xue deprecated="not deprecated"> 3993*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding<?>"/> 3994*dc5640d1SHerbert Xue <doc> 3995*dc5640d1SHerbert Xue <![CDATA[Same as {@link #visit(InstanceBinding)}, but the 3996*dc5640d1SHerbert Xue {@link BindingEdge} is {@link BindingEdge.Type#PROVIDER}. 3997*dc5640d1SHerbert Xue 3998*dc5640d1SHerbert Xue @see #newInterfaceNode(Binding) 3999*dc5640d1SHerbert Xue @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type) 4000*dc5640d1SHerbert Xue @see #newInstanceImplementationNode(Binding, Object) 4001*dc5640d1SHerbert Xue @see #newDependencyEdges(Object, ImplementationNode, java.util.Collection)]]> 4002*dc5640d1SHerbert Xue </doc> 4003*dc5640d1SHerbert Xue </method> 4004*dc5640d1SHerbert Xue <method name="visit" return="java.lang.Void" 4005*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4006*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4007*dc5640d1SHerbert Xue deprecated="not deprecated"> 4008*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProviderKeyBinding<?>"/> 4009*dc5640d1SHerbert Xue <doc> 4010*dc5640d1SHerbert Xue <![CDATA[Same as {@link #visit(LinkedKeyBinding)}, but the 4011*dc5640d1SHerbert Xue {@link BindingEdge} is {@link BindingEdge.Type#PROVIDER}. 4012*dc5640d1SHerbert Xue 4013*dc5640d1SHerbert Xue @see #newInterfaceNode(Binding) 4014*dc5640d1SHerbert Xue @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type)]]> 4015*dc5640d1SHerbert Xue </doc> 4016*dc5640d1SHerbert Xue </method> 4017*dc5640d1SHerbert Xue <method name="visit" return="java.lang.Void" 4018*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4019*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4020*dc5640d1SHerbert Xue deprecated="not deprecated"> 4021*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.UntargettedBinding<?>"/> 4022*dc5640d1SHerbert Xue <doc> 4023*dc5640d1SHerbert Xue <![CDATA[Currently not displayed on the graph.]]> 4024*dc5640d1SHerbert Xue </doc> 4025*dc5640d1SHerbert Xue </method> 4026*dc5640d1SHerbert Xue <doc> 4027*dc5640d1SHerbert Xue <![CDATA[{@link BindingTargetVisitor} that adds nodes and edges to the graph based on 4028*dc5640d1SHerbert Xue the visited {@link Binding}. 4029*dc5640d1SHerbert Xue <p> 4030*dc5640d1SHerbert Xue This class is parameterized over the four graph element types 4031*dc5640d1SHerbert Xue ({@link InterfaceNode}, {@link ImplementationNode}, {@link BindingEdge}, and 4032*dc5640d1SHerbert Xue {@link DependencyEdge}) so that you can extend those interfaces and also 4033*dc5640d1SHerbert Xue extend this class, and the helper methods will all return your new types. 4034*dc5640d1SHerbert Xue 4035*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins) 4036*dc5640d1SHerbert Xue 4037*dc5640d1SHerbert Xue @param <K> The type for node IDs. 4038*dc5640d1SHerbert Xue @param <N> Type for {@link InterfaceNode}s. 4039*dc5640d1SHerbert Xue @param <M> Type for {@link ImplementationNode}.s 4040*dc5640d1SHerbert Xue @param <B> Type for {@link BindingEdge}s. 4041*dc5640d1SHerbert Xue @param <D> Type for {@link DependencyEdge}s.]]> 4042*dc5640d1SHerbert Xue </doc> 4043*dc5640d1SHerbert Xue </class> 4044*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.GraphingVisitor --> 4045*dc5640d1SHerbert Xue <!-- start interface com.google.inject.grapher.ImplementationNode --> 4046*dc5640d1SHerbert Xue <interface name="ImplementationNode" abstract="true" 4047*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4048*dc5640d1SHerbert Xue deprecated="not deprecated"> 4049*dc5640d1SHerbert Xue <method name="setClassKey" 4050*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4051*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4052*dc5640d1SHerbert Xue deprecated="not deprecated"> 4053*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 4054*dc5640d1SHerbert Xue <doc> 4055*dc5640d1SHerbert Xue <![CDATA[Sets the {@link Key} that this node is for. Used when the node is 4056*dc5640d1SHerbert Xue representing a class that Guice will instantiate.]]> 4057*dc5640d1SHerbert Xue </doc> 4058*dc5640d1SHerbert Xue </method> 4059*dc5640d1SHerbert Xue <method name="setInstance" 4060*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4061*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4062*dc5640d1SHerbert Xue deprecated="not deprecated"> 4063*dc5640d1SHerbert Xue <param name="instance" type="java.lang.Object"/> 4064*dc5640d1SHerbert Xue <doc> 4065*dc5640d1SHerbert Xue <![CDATA[Sets the {@link Object} that's the already-created instance. Used when 4066*dc5640d1SHerbert Xue this node is represeting the instance instead of a class.]]> 4067*dc5640d1SHerbert Xue </doc> 4068*dc5640d1SHerbert Xue </method> 4069*dc5640d1SHerbert Xue <method name="setSource" 4070*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4071*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4072*dc5640d1SHerbert Xue deprecated="not deprecated"> 4073*dc5640d1SHerbert Xue <param name="source" type="java.lang.Object"/> 4074*dc5640d1SHerbert Xue </method> 4075*dc5640d1SHerbert Xue <method name="addMember" 4076*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4077*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4078*dc5640d1SHerbert Xue deprecated="not deprecated"> 4079*dc5640d1SHerbert Xue <param name="member" type="java.lang.reflect.Member"/> 4080*dc5640d1SHerbert Xue </method> 4081*dc5640d1SHerbert Xue <doc> 4082*dc5640d1SHerbert Xue <![CDATA[Node for classes and instances that have {@link Dependency}s and are 4083*dc5640d1SHerbert Xue bound to {@link InterfaceNode}s. These nodes will often have fields for 4084*dc5640d1SHerbert Xue {@link Member}s that are {@link InjectionPoint}s. 4085*dc5640d1SHerbert Xue 4086*dc5640d1SHerbert Xue @see DependencyEdge 4087*dc5640d1SHerbert Xue 4088*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins) 4089*dc5640d1SHerbert Xue 4090*dc5640d1SHerbert Xue @param <K> The type for node IDs.]]> 4091*dc5640d1SHerbert Xue </doc> 4092*dc5640d1SHerbert Xue </interface> 4093*dc5640d1SHerbert Xue <!-- end interface com.google.inject.grapher.ImplementationNode --> 4094*dc5640d1SHerbert Xue <!-- start interface com.google.inject.grapher.ImplementationNode.Factory --> 4095*dc5640d1SHerbert Xue <interface name="ImplementationNode.Factory" abstract="true" 4096*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4097*dc5640d1SHerbert Xue deprecated="not deprecated"> 4098*dc5640d1SHerbert Xue <method name="newImplementationNode" return="T extends com.google.inject.grapher.ImplementationNode<K>" 4099*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4100*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4101*dc5640d1SHerbert Xue deprecated="not deprecated"> 4102*dc5640d1SHerbert Xue <param name="nodeId" type="K"/> 4103*dc5640d1SHerbert Xue <doc> 4104*dc5640d1SHerbert Xue <![CDATA[Creates a new {@link ImplementationNode} and adds it to the graph. 4105*dc5640d1SHerbert Xue 4106*dc5640d1SHerbert Xue @param nodeId ID for the node. 4107*dc5640d1SHerbert Xue @return The new {@link ImplementationNode} instance.]]> 4108*dc5640d1SHerbert Xue </doc> 4109*dc5640d1SHerbert Xue </method> 4110*dc5640d1SHerbert Xue <doc> 4111*dc5640d1SHerbert Xue <![CDATA[Factory interface for {@link ImplementationNode}s. Renderer 4112*dc5640d1SHerbert Xue implementations will need to provide an implementation for this. 4113*dc5640d1SHerbert Xue 4114*dc5640d1SHerbert Xue @param <K> The type for node IDs. 4115*dc5640d1SHerbert Xue @param <T> The {@link ImplementationNode} sub-type that this factory 4116*dc5640d1SHerbert Xue provides.]]> 4117*dc5640d1SHerbert Xue </doc> 4118*dc5640d1SHerbert Xue </interface> 4119*dc5640d1SHerbert Xue <!-- end interface com.google.inject.grapher.ImplementationNode.Factory --> 4120*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.InjectorGrapher --> 4121*dc5640d1SHerbert Xue <class name="InjectorGrapher" extends="java.lang.Object" 4122*dc5640d1SHerbert Xue abstract="false" 4123*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4124*dc5640d1SHerbert Xue deprecated="not deprecated"> 4125*dc5640d1SHerbert Xue <constructor name="InjectorGrapher" type="com.google.inject.spi.BindingTargetVisitor<java.lang.Object, java.util.Collection<com.google.inject.Key<?>>>, com.google.inject.spi.BindingTargetVisitor<java.lang.Object, java.lang.Void>, com.google.inject.grapher.Renderer" 4126*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4127*dc5640d1SHerbert Xue deprecated="not deprecated"> 4128*dc5640d1SHerbert Xue </constructor> 4129*dc5640d1SHerbert Xue <method name="of" return="com.google.inject.grapher.InjectorGrapher" 4130*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4131*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4132*dc5640d1SHerbert Xue deprecated="not deprecated"> 4133*dc5640d1SHerbert Xue <param name="injector" type="com.google.inject.Injector"/> 4134*dc5640d1SHerbert Xue <doc> 4135*dc5640d1SHerbert Xue <![CDATA[Sets the {@link Injector} to graph.]]> 4136*dc5640d1SHerbert Xue </doc> 4137*dc5640d1SHerbert Xue </method> 4138*dc5640d1SHerbert Xue <method name="rootedAt" return="com.google.inject.grapher.InjectorGrapher" 4139*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4140*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4141*dc5640d1SHerbert Xue deprecated="not deprecated"> 4142*dc5640d1SHerbert Xue <param name="classes" type="java.lang.Class[]"/> 4143*dc5640d1SHerbert Xue <doc> 4144*dc5640d1SHerbert Xue <![CDATA[Sets an initial group of {@link Class}es to use as the starting point for 4145*dc5640d1SHerbert Xue the graph. The graph will be of these classes and their transitive 4146*dc5640d1SHerbert Xue dependencies and bindings.]]> 4147*dc5640d1SHerbert Xue </doc> 4148*dc5640d1SHerbert Xue </method> 4149*dc5640d1SHerbert Xue <method name="rootedAt" return="com.google.inject.grapher.InjectorGrapher" 4150*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4151*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4152*dc5640d1SHerbert Xue deprecated="not deprecated"> 4153*dc5640d1SHerbert Xue <param name="keys" type="com.google.inject.Key[]"/> 4154*dc5640d1SHerbert Xue <doc> 4155*dc5640d1SHerbert Xue <![CDATA[Sets an initial group of {@link Key}s to use as the starting point for 4156*dc5640d1SHerbert Xue the graph. The graph will be of these keys and their transitive 4157*dc5640d1SHerbert Xue dependencies and bindings.]]> 4158*dc5640d1SHerbert Xue </doc> 4159*dc5640d1SHerbert Xue </method> 4160*dc5640d1SHerbert Xue <method name="graph" 4161*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4162*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4163*dc5640d1SHerbert Xue deprecated="not deprecated"> 4164*dc5640d1SHerbert Xue <exception name="IOException" type="java.io.IOException"/> 4165*dc5640d1SHerbert Xue <doc> 4166*dc5640d1SHerbert Xue <![CDATA[Renders a graph with the bound {@link Renderer}. The {@link Injector} 4167*dc5640d1SHerbert Xue must have already been specified with {@link #of(Injector)}.]]> 4168*dc5640d1SHerbert Xue </doc> 4169*dc5640d1SHerbert Xue </method> 4170*dc5640d1SHerbert Xue <doc> 4171*dc5640d1SHerbert Xue <![CDATA[Root class for graphing an {@link Injector}. Bound in {@link GrapherModule}. 4172*dc5640d1SHerbert Xue <p> 4173*dc5640d1SHerbert Xue Use {@link #of(Injector)} to specify the {@link Injector} to use, and 4174*dc5640d1SHerbert Xue {@link graph()} to graph the {@link Injector} using the currently-bound 4175*dc5640d1SHerbert Xue {@link Renderer}. 4176*dc5640d1SHerbert Xue <p> 4177*dc5640d1SHerbert Xue By default, this will graph the entire {@link Injector}. Use 4178*dc5640d1SHerbert Xue {@link #rootedAt(Class...)} or {@link #rootedAt(Key...)} to specify an 4179*dc5640d1SHerbert Xue initial set of {@link Class}es or {@link Key}s to use, and this will graph 4180*dc5640d1SHerbert Xue their transitive bindings and dependencies. 4181*dc5640d1SHerbert Xue 4182*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4183*dc5640d1SHerbert Xue </doc> 4184*dc5640d1SHerbert Xue </class> 4185*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.InjectorGrapher --> 4186*dc5640d1SHerbert Xue <!-- start interface com.google.inject.grapher.InterfaceNode --> 4187*dc5640d1SHerbert Xue <interface name="InterfaceNode" abstract="true" 4188*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4189*dc5640d1SHerbert Xue deprecated="not deprecated"> 4190*dc5640d1SHerbert Xue <method name="setKey" 4191*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4192*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4193*dc5640d1SHerbert Xue deprecated="not deprecated"> 4194*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 4195*dc5640d1SHerbert Xue </method> 4196*dc5640d1SHerbert Xue <method name="setSource" 4197*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4198*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4199*dc5640d1SHerbert Xue deprecated="not deprecated"> 4200*dc5640d1SHerbert Xue <param name="source" type="java.lang.Object"/> 4201*dc5640d1SHerbert Xue </method> 4202*dc5640d1SHerbert Xue <doc> 4203*dc5640d1SHerbert Xue <![CDATA[Node for an interface class that has been bound to an implementation class 4204*dc5640d1SHerbert Xue or instance. These nodes are basically defined by a {@link Key}. 4205*dc5640d1SHerbert Xue 4206*dc5640d1SHerbert Xue @see BindingEdge 4207*dc5640d1SHerbert Xue 4208*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins) 4209*dc5640d1SHerbert Xue 4210*dc5640d1SHerbert Xue @param <K> The type for node IDs.]]> 4211*dc5640d1SHerbert Xue </doc> 4212*dc5640d1SHerbert Xue </interface> 4213*dc5640d1SHerbert Xue <!-- end interface com.google.inject.grapher.InterfaceNode --> 4214*dc5640d1SHerbert Xue <!-- start interface com.google.inject.grapher.InterfaceNode.Factory --> 4215*dc5640d1SHerbert Xue <interface name="InterfaceNode.Factory" abstract="true" 4216*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4217*dc5640d1SHerbert Xue deprecated="not deprecated"> 4218*dc5640d1SHerbert Xue <method name="newInterfaceNode" return="T extends com.google.inject.grapher.InterfaceNode<K>" 4219*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4220*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4221*dc5640d1SHerbert Xue deprecated="not deprecated"> 4222*dc5640d1SHerbert Xue <param name="nodeId" type="K"/> 4223*dc5640d1SHerbert Xue <doc> 4224*dc5640d1SHerbert Xue <![CDATA[Creates a new {@link InterfaceNode} and adds it to the graph. 4225*dc5640d1SHerbert Xue 4226*dc5640d1SHerbert Xue @param nodeId ID for the node. 4227*dc5640d1SHerbert Xue @return The new {@link InterfaceNode} instance.]]> 4228*dc5640d1SHerbert Xue </doc> 4229*dc5640d1SHerbert Xue </method> 4230*dc5640d1SHerbert Xue <doc> 4231*dc5640d1SHerbert Xue <![CDATA[Factory interface for {@link InterfaceNode}s. Renderer implementations 4232*dc5640d1SHerbert Xue will need to provide an implementation for this. 4233*dc5640d1SHerbert Xue 4234*dc5640d1SHerbert Xue @param <K> The type for node IDs. 4235*dc5640d1SHerbert Xue @param <T> The {@link InterfaceNode} sub-type that this factory provides.]]> 4236*dc5640d1SHerbert Xue </doc> 4237*dc5640d1SHerbert Xue </interface> 4238*dc5640d1SHerbert Xue <!-- end interface com.google.inject.grapher.InterfaceNode.Factory --> 4239*dc5640d1SHerbert Xue <!-- start interface com.google.inject.grapher.NameFactory --> 4240*dc5640d1SHerbert Xue <interface name="NameFactory" abstract="true" 4241*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4242*dc5640d1SHerbert Xue deprecated="not deprecated"> 4243*dc5640d1SHerbert Xue <method name="getMemberName" return="java.lang.String" 4244*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4245*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4246*dc5640d1SHerbert Xue deprecated="not deprecated"> 4247*dc5640d1SHerbert Xue <param name="member" type="java.lang.reflect.Member"/> 4248*dc5640d1SHerbert Xue </method> 4249*dc5640d1SHerbert Xue <method name="getClassName" return="java.lang.String" 4250*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4251*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4252*dc5640d1SHerbert Xue deprecated="not deprecated"> 4253*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 4254*dc5640d1SHerbert Xue </method> 4255*dc5640d1SHerbert Xue <method name="getInstanceName" return="java.lang.String" 4256*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4257*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4258*dc5640d1SHerbert Xue deprecated="not deprecated"> 4259*dc5640d1SHerbert Xue <param name="instance" type="java.lang.Object"/> 4260*dc5640d1SHerbert Xue </method> 4261*dc5640d1SHerbert Xue <method name="getAnnotationName" return="java.lang.String" 4262*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4263*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4264*dc5640d1SHerbert Xue deprecated="not deprecated"> 4265*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 4266*dc5640d1SHerbert Xue </method> 4267*dc5640d1SHerbert Xue <method name="getSourceName" return="java.lang.String" 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="source" type="java.lang.Object"/> 4272*dc5640d1SHerbert Xue </method> 4273*dc5640d1SHerbert Xue <doc> 4274*dc5640d1SHerbert Xue <![CDATA[Interface for a service that provides nice {@link String}s that we can 4275*dc5640d1SHerbert Xue display in the graph for the types that come up in {@link Binding}s. 4276*dc5640d1SHerbert Xue 4277*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4278*dc5640d1SHerbert Xue </doc> 4279*dc5640d1SHerbert Xue </interface> 4280*dc5640d1SHerbert Xue <!-- end interface com.google.inject.grapher.NameFactory --> 4281*dc5640d1SHerbert Xue <!-- start interface com.google.inject.grapher.NodeAliasFactory --> 4282*dc5640d1SHerbert Xue <interface name="NodeAliasFactory" abstract="true" 4283*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4284*dc5640d1SHerbert Xue deprecated="not deprecated"> 4285*dc5640d1SHerbert Xue <method name="newAlias" 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="fromId" type="K"/> 4290*dc5640d1SHerbert Xue <param name="toId" type="K"/> 4291*dc5640d1SHerbert Xue <doc> 4292*dc5640d1SHerbert Xue <![CDATA[Makes edges that would point to {@code fromId} point to 4293*dc5640d1SHerbert Xue {@code toId} instead.]]> 4294*dc5640d1SHerbert Xue </doc> 4295*dc5640d1SHerbert Xue </method> 4296*dc5640d1SHerbert Xue <doc> 4297*dc5640d1SHerbert Xue <![CDATA[Factory for aliasing one node ID to another. Used when we don't want to 4298*dc5640d1SHerbert Xue render {@link Key}s from {@link Binding}s that are not interesting. 4299*dc5640d1SHerbert Xue 4300*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4301*dc5640d1SHerbert Xue </doc> 4302*dc5640d1SHerbert Xue </interface> 4303*dc5640d1SHerbert Xue <!-- end interface com.google.inject.grapher.NodeAliasFactory --> 4304*dc5640d1SHerbert Xue <!-- start interface com.google.inject.grapher.NodeIdFactory --> 4305*dc5640d1SHerbert Xue <interface name="NodeIdFactory" abstract="true" 4306*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4307*dc5640d1SHerbert Xue deprecated="not deprecated"> 4308*dc5640d1SHerbert Xue <method name="getClassNodeId" return="K" 4309*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4310*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4311*dc5640d1SHerbert Xue deprecated="not deprecated"> 4312*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 4313*dc5640d1SHerbert Xue </method> 4314*dc5640d1SHerbert Xue <method name="getInstanceNodeId" return="K" 4315*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4316*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4317*dc5640d1SHerbert Xue deprecated="not deprecated"> 4318*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 4319*dc5640d1SHerbert Xue </method> 4320*dc5640d1SHerbert Xue <doc> 4321*dc5640d1SHerbert Xue <![CDATA[Factory for abstract identifiers for elements on the graph. Most graph nodes 4322*dc5640d1SHerbert Xue will correspond directly to {@link Key}s, but we do this for additional 4323*dc5640d1SHerbert Xue flexibility and because instances do not have separate {@link Key}s from the 4324*dc5640d1SHerbert Xue interfaces they are bound to. 4325*dc5640d1SHerbert Xue <p> 4326*dc5640d1SHerbert Xue Node IDs are treated as opaque values by {@link GraphingVisitor} and the 4327*dc5640d1SHerbert Xue other classes in this package. 4328*dc5640d1SHerbert Xue 4329*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins) 4330*dc5640d1SHerbert Xue 4331*dc5640d1SHerbert Xue @param <K> The type for node IDs.]]> 4332*dc5640d1SHerbert Xue </doc> 4333*dc5640d1SHerbert Xue </interface> 4334*dc5640d1SHerbert Xue <!-- end interface com.google.inject.grapher.NodeIdFactory --> 4335*dc5640d1SHerbert Xue <!-- start interface com.google.inject.grapher.Renderer --> 4336*dc5640d1SHerbert Xue <interface name="Renderer" abstract="true" 4337*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4338*dc5640d1SHerbert Xue deprecated="not deprecated"> 4339*dc5640d1SHerbert Xue <method name="render" 4340*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4341*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4342*dc5640d1SHerbert Xue deprecated="not deprecated"> 4343*dc5640d1SHerbert Xue <exception name="IOException" type="java.io.IOException"/> 4344*dc5640d1SHerbert Xue </method> 4345*dc5640d1SHerbert Xue <doc> 4346*dc5640d1SHerbert Xue <![CDATA[Interface for the service that renders the graph. It is assumed that the 4347*dc5640d1SHerbert Xue implementations for {@link BindingEdge.Factory}, 4348*dc5640d1SHerbert Xue {@link ImplementationNode.Factory}, etc. will have direct access to the 4349*dc5640d1SHerbert Xue internals of the {@link Renderer} implementation, so the only external 4350*dc5640d1SHerbert Xue interface needed is the {@link #render()} call that {@link InjectorGrapher} 4351*dc5640d1SHerbert Xue calls when it's done. 4352*dc5640d1SHerbert Xue 4353*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4354*dc5640d1SHerbert Xue </doc> 4355*dc5640d1SHerbert Xue </interface> 4356*dc5640d1SHerbert Xue <!-- end interface com.google.inject.grapher.Renderer --> 4357*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.ShortNameFactory --> 4358*dc5640d1SHerbert Xue <class name="ShortNameFactory" extends="java.lang.Object" 4359*dc5640d1SHerbert Xue abstract="false" 4360*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4361*dc5640d1SHerbert Xue deprecated="not deprecated"> 4362*dc5640d1SHerbert Xue <implements name="com.google.inject.grapher.NameFactory"/> 4363*dc5640d1SHerbert Xue <constructor name="ShortNameFactory" 4364*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4365*dc5640d1SHerbert Xue deprecated="not deprecated"> 4366*dc5640d1SHerbert Xue </constructor> 4367*dc5640d1SHerbert Xue <method name="getMemberName" return="java.lang.String" 4368*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4369*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4370*dc5640d1SHerbert Xue deprecated="not deprecated"> 4371*dc5640d1SHerbert Xue <param name="member" type="java.lang.reflect.Member"/> 4372*dc5640d1SHerbert Xue </method> 4373*dc5640d1SHerbert Xue <method name="getAnnotationName" return="java.lang.String" 4374*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4375*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4376*dc5640d1SHerbert Xue deprecated="not deprecated"> 4377*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 4378*dc5640d1SHerbert Xue </method> 4379*dc5640d1SHerbert Xue <method name="getClassName" return="java.lang.String" 4380*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4381*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4382*dc5640d1SHerbert Xue deprecated="not deprecated"> 4383*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 4384*dc5640d1SHerbert Xue </method> 4385*dc5640d1SHerbert Xue <method name="getInstanceName" return="java.lang.String" 4386*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4387*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4388*dc5640d1SHerbert Xue deprecated="not deprecated"> 4389*dc5640d1SHerbert Xue <param name="instance" type="java.lang.Object"/> 4390*dc5640d1SHerbert Xue </method> 4391*dc5640d1SHerbert Xue <method name="getSourceName" return="java.lang.String" 4392*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4393*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4394*dc5640d1SHerbert Xue deprecated="not deprecated"> 4395*dc5640d1SHerbert Xue <param name="source" type="java.lang.Object"/> 4396*dc5640d1SHerbert Xue <doc> 4397*dc5640d1SHerbert Xue <![CDATA[Returns a name for a Guice "source" object. This will typically be either 4398*dc5640d1SHerbert Xue a {@link StackTraceElement} for when the binding is made to the instance, 4399*dc5640d1SHerbert Xue or a {@link Method} when a provider method is used.]]> 4400*dc5640d1SHerbert Xue </doc> 4401*dc5640d1SHerbert Xue </method> 4402*dc5640d1SHerbert Xue <method name="getFileString" return="java.lang.String" 4403*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4404*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 4405*dc5640d1SHerbert Xue deprecated="not deprecated"> 4406*dc5640d1SHerbert Xue <param name="stackTraceElement" type="java.lang.StackTraceElement"/> 4407*dc5640d1SHerbert Xue </method> 4408*dc5640d1SHerbert Xue <method name="getMethodString" return="java.lang.String" 4409*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4410*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 4411*dc5640d1SHerbert Xue deprecated="not deprecated"> 4412*dc5640d1SHerbert Xue <param name="method" type="java.lang.reflect.Method"/> 4413*dc5640d1SHerbert Xue </method> 4414*dc5640d1SHerbert Xue <doc> 4415*dc5640d1SHerbert Xue <![CDATA[Reasonable implementation for {@link NameFactory}. Mostly takes various 4416*dc5640d1SHerbert Xue {@link Object#toString()}s and strips package names out of them so that 4417*dc5640d1SHerbert Xue they'll fit on the graph. 4418*dc5640d1SHerbert Xue 4419*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4420*dc5640d1SHerbert Xue </doc> 4421*dc5640d1SHerbert Xue </class> 4422*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.ShortNameFactory --> 4423*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.StringNodeIdFactory --> 4424*dc5640d1SHerbert Xue <class name="StringNodeIdFactory" extends="java.lang.Object" 4425*dc5640d1SHerbert Xue abstract="false" 4426*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4427*dc5640d1SHerbert Xue deprecated="not deprecated"> 4428*dc5640d1SHerbert Xue <implements name="com.google.inject.grapher.NodeIdFactory<java.lang.String>"/> 4429*dc5640d1SHerbert Xue <constructor name="StringNodeIdFactory" 4430*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4431*dc5640d1SHerbert Xue deprecated="not deprecated"> 4432*dc5640d1SHerbert Xue </constructor> 4433*dc5640d1SHerbert Xue <method name="getClassNodeId" return="java.lang.String" 4434*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4435*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4436*dc5640d1SHerbert Xue deprecated="not deprecated"> 4437*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 4438*dc5640d1SHerbert Xue </method> 4439*dc5640d1SHerbert Xue <method name="getInstanceNodeId" return="java.lang.String" 4440*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4441*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4442*dc5640d1SHerbert Xue deprecated="not deprecated"> 4443*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 4444*dc5640d1SHerbert Xue </method> 4445*dc5640d1SHerbert Xue <doc> 4446*dc5640d1SHerbert Xue <![CDATA[{@link IdFactory} implementation that for {@link String} node IDs. The IDs 4447*dc5640d1SHerbert Xue are comprised of letters, numbers and underscores. 4448*dc5640d1SHerbert Xue 4449*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4450*dc5640d1SHerbert Xue </doc> 4451*dc5640d1SHerbert Xue </class> 4452*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.StringNodeIdFactory --> 4453*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.TransitiveDependencyVisitor --> 4454*dc5640d1SHerbert Xue <class name="TransitiveDependencyVisitor" extends="java.lang.Object" 4455*dc5640d1SHerbert Xue abstract="false" 4456*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4457*dc5640d1SHerbert Xue deprecated="not deprecated"> 4458*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.BindingTargetVisitor<java.lang.Object, java.util.Collection<com.google.inject.Key<?>>>"/> 4459*dc5640d1SHerbert Xue <constructor name="TransitiveDependencyVisitor" 4460*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4461*dc5640d1SHerbert Xue deprecated="not deprecated"> 4462*dc5640d1SHerbert Xue </constructor> 4463*dc5640d1SHerbert Xue <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4464*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4465*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4466*dc5640d1SHerbert Xue deprecated="not deprecated"> 4467*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ConstructorBinding<?>"/> 4468*dc5640d1SHerbert Xue </method> 4469*dc5640d1SHerbert Xue <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4470*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4471*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4472*dc5640d1SHerbert Xue deprecated="not deprecated"> 4473*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding<?>"/> 4474*dc5640d1SHerbert Xue </method> 4475*dc5640d1SHerbert Xue <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4476*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4477*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4478*dc5640d1SHerbert Xue deprecated="not deprecated"> 4479*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ExposedBinding<?>"/> 4480*dc5640d1SHerbert Xue </method> 4481*dc5640d1SHerbert Xue <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4482*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4483*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4484*dc5640d1SHerbert Xue deprecated="not deprecated"> 4485*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.InstanceBinding<?>"/> 4486*dc5640d1SHerbert Xue </method> 4487*dc5640d1SHerbert Xue <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4488*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4489*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4490*dc5640d1SHerbert Xue deprecated="not deprecated"> 4491*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.LinkedKeyBinding<?>"/> 4492*dc5640d1SHerbert Xue </method> 4493*dc5640d1SHerbert Xue <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4494*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4495*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4496*dc5640d1SHerbert Xue deprecated="not deprecated"> 4497*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProviderBinding<?>"/> 4498*dc5640d1SHerbert Xue </method> 4499*dc5640d1SHerbert Xue <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4500*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4501*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4502*dc5640d1SHerbert Xue deprecated="not deprecated"> 4503*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding<?>"/> 4504*dc5640d1SHerbert Xue </method> 4505*dc5640d1SHerbert Xue <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4506*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4507*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4508*dc5640d1SHerbert Xue deprecated="not deprecated"> 4509*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProviderKeyBinding<?>"/> 4510*dc5640d1SHerbert Xue </method> 4511*dc5640d1SHerbert Xue <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4512*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4513*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4514*dc5640d1SHerbert Xue deprecated="not deprecated"> 4515*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.UntargettedBinding<?>"/> 4516*dc5640d1SHerbert Xue </method> 4517*dc5640d1SHerbert Xue <doc> 4518*dc5640d1SHerbert Xue <![CDATA[{@link BindingTargetVisitor} that returns a {@link Collection} of the 4519*dc5640d1SHerbert Xue {@link Key}s of each {@link Binding}'s dependencies. Used by 4520*dc5640d1SHerbert Xue {@link InjectorGropher} to walk the dependency graph from a starting set of 4521*dc5640d1SHerbert Xue {@link Binding}s. 4522*dc5640d1SHerbert Xue 4523*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4524*dc5640d1SHerbert Xue </doc> 4525*dc5640d1SHerbert Xue </class> 4526*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.TransitiveDependencyVisitor --> 4527*dc5640d1SHerbert Xue</package> 4528*dc5640d1SHerbert Xue<package name="com.google.inject.grapher.graphviz"> 4529*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.ArrowType --> 4530*dc5640d1SHerbert Xue <class name="ArrowType" extends="java.lang.Enum<com.google.inject.grapher.graphviz.ArrowType>" 4531*dc5640d1SHerbert Xue abstract="false" 4532*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 4533*dc5640d1SHerbert Xue deprecated="not deprecated"> 4534*dc5640d1SHerbert Xue <method name="values" return="com.google.inject.grapher.graphviz.ArrowType[]" 4535*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4536*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4537*dc5640d1SHerbert Xue deprecated="not deprecated"> 4538*dc5640d1SHerbert Xue </method> 4539*dc5640d1SHerbert Xue <method name="valueOf" return="com.google.inject.grapher.graphviz.ArrowType" 4540*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4541*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4542*dc5640d1SHerbert Xue deprecated="not deprecated"> 4543*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 4544*dc5640d1SHerbert Xue </method> 4545*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 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 </method> 4550*dc5640d1SHerbert Xue <doc> 4551*dc5640d1SHerbert Xue <![CDATA[Arrow symbols that are available from Graphviz. These can be composed by 4552*dc5640d1SHerbert Xue concatenation to make double arrows and such. 4553*dc5640d1SHerbert Xue <p> 4554*dc5640d1SHerbert Xue See: http://www.graphviz.org/doc/info/arrows.html 4555*dc5640d1SHerbert Xue 4556*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4557*dc5640d1SHerbert Xue </doc> 4558*dc5640d1SHerbert Xue </class> 4559*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.ArrowType --> 4560*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.BindingEdgeFactory --> 4561*dc5640d1SHerbert Xue <class name="BindingEdgeFactory" extends="java.lang.Object" 4562*dc5640d1SHerbert Xue abstract="false" 4563*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4564*dc5640d1SHerbert Xue deprecated="not deprecated"> 4565*dc5640d1SHerbert Xue <implements name="com.google.inject.grapher.BindingEdge.Factory<java.lang.String, com.google.inject.grapher.BindingEdge<java.lang.String>>"/> 4566*dc5640d1SHerbert Xue <constructor name="BindingEdgeFactory" type="com.google.inject.grapher.graphviz.GraphvizRenderer" 4567*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4568*dc5640d1SHerbert Xue deprecated="not deprecated"> 4569*dc5640d1SHerbert Xue </constructor> 4570*dc5640d1SHerbert Xue <method name="newBindingEdge" return="com.google.inject.grapher.BindingEdge<java.lang.String>" 4571*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4572*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4573*dc5640d1SHerbert Xue deprecated="not deprecated"> 4574*dc5640d1SHerbert Xue <param name="fromId" type="java.lang.String"/> 4575*dc5640d1SHerbert Xue <param name="toId" type="java.lang.String"/> 4576*dc5640d1SHerbert Xue </method> 4577*dc5640d1SHerbert Xue <method name="newAdaptor" return="com.google.inject.grapher.graphviz.BindingEdgeFactory.GraphvizEdgeAdaptor" 4578*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4579*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 4580*dc5640d1SHerbert Xue deprecated="not deprecated"> 4581*dc5640d1SHerbert Xue <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/> 4582*dc5640d1SHerbert Xue </method> 4583*dc5640d1SHerbert Xue <doc> 4584*dc5640d1SHerbert Xue <![CDATA[Graphviz-specific implementation of {@link BindingEdge.Factory}. Uses a 4585*dc5640d1SHerbert Xue {@link GraphvizEdgeAdaptor} to delegate to a {@link GraphvizEdge}. 4586*dc5640d1SHerbert Xue 4587*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4588*dc5640d1SHerbert Xue </doc> 4589*dc5640d1SHerbert Xue </class> 4590*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.BindingEdgeFactory --> 4591*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.BindingEdgeFactory.GraphvizEdgeAdaptor --> 4592*dc5640d1SHerbert Xue <class name="BindingEdgeFactory.GraphvizEdgeAdaptor" extends="java.lang.Object" 4593*dc5640d1SHerbert Xue abstract="false" 4594*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 4595*dc5640d1SHerbert Xue deprecated="not deprecated"> 4596*dc5640d1SHerbert Xue <implements name="com.google.inject.grapher.BindingEdge<java.lang.String>"/> 4597*dc5640d1SHerbert Xue <constructor name="BindingEdgeFactory.GraphvizEdgeAdaptor" type="com.google.inject.grapher.graphviz.GraphvizEdge" 4598*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4599*dc5640d1SHerbert Xue deprecated="not deprecated"> 4600*dc5640d1SHerbert Xue </constructor> 4601*dc5640d1SHerbert Xue <method name="setType" 4602*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4603*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4604*dc5640d1SHerbert Xue deprecated="not deprecated"> 4605*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.grapher.BindingEdge.Type"/> 4606*dc5640d1SHerbert Xue </method> 4607*dc5640d1SHerbert Xue <field name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge" 4608*dc5640d1SHerbert Xue transient="false" volatile="false" 4609*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 4610*dc5640d1SHerbert Xue deprecated="not deprecated"> 4611*dc5640d1SHerbert Xue </field> 4612*dc5640d1SHerbert Xue <doc> 4613*dc5640d1SHerbert Xue <![CDATA[Adaptor class that converts {@link BindingEdge} methods to display 4614*dc5640d1SHerbert Xue operations on a {@link GraphvizEdge}.]]> 4615*dc5640d1SHerbert Xue </doc> 4616*dc5640d1SHerbert Xue </class> 4617*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.BindingEdgeFactory.GraphvizEdgeAdaptor --> 4618*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.CompassPoint --> 4619*dc5640d1SHerbert Xue <class name="CompassPoint" extends="java.lang.Enum<com.google.inject.grapher.graphviz.CompassPoint>" 4620*dc5640d1SHerbert Xue abstract="false" 4621*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 4622*dc5640d1SHerbert Xue deprecated="not deprecated"> 4623*dc5640d1SHerbert Xue <method name="values" return="com.google.inject.grapher.graphviz.CompassPoint[]" 4624*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4625*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4626*dc5640d1SHerbert Xue deprecated="not deprecated"> 4627*dc5640d1SHerbert Xue </method> 4628*dc5640d1SHerbert Xue <method name="valueOf" return="com.google.inject.grapher.graphviz.CompassPoint" 4629*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4630*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4631*dc5640d1SHerbert Xue deprecated="not deprecated"> 4632*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 4633*dc5640d1SHerbert Xue </method> 4634*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 4635*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4636*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4637*dc5640d1SHerbert Xue deprecated="not deprecated"> 4638*dc5640d1SHerbert Xue </method> 4639*dc5640d1SHerbert Xue <doc> 4640*dc5640d1SHerbert Xue <![CDATA[Enum for the "compass point" values used to control where edge 4641*dc5640d1SHerbert Xue end points appear on the graph. 4642*dc5640d1SHerbert Xue <p> 4643*dc5640d1SHerbert Xue See: http://www.graphviz.org/doc/info/attrs.html#k:portPos 4644*dc5640d1SHerbert Xue 4645*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4646*dc5640d1SHerbert Xue </doc> 4647*dc5640d1SHerbert Xue </class> 4648*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.CompassPoint --> 4649*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.DependencyEdgeFactory --> 4650*dc5640d1SHerbert Xue <class name="DependencyEdgeFactory" extends="java.lang.Object" 4651*dc5640d1SHerbert Xue abstract="false" 4652*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4653*dc5640d1SHerbert Xue deprecated="not deprecated"> 4654*dc5640d1SHerbert Xue <implements name="com.google.inject.grapher.DependencyEdge.Factory<java.lang.String, com.google.inject.grapher.DependencyEdge<java.lang.String>>"/> 4655*dc5640d1SHerbert Xue <constructor name="DependencyEdgeFactory" type="com.google.inject.grapher.graphviz.GraphvizRenderer, com.google.inject.grapher.graphviz.PortIdFactory" 4656*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4657*dc5640d1SHerbert Xue deprecated="not deprecated"> 4658*dc5640d1SHerbert Xue </constructor> 4659*dc5640d1SHerbert Xue <method name="newDependencyEdge" return="com.google.inject.grapher.DependencyEdge<java.lang.String>" 4660*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4661*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4662*dc5640d1SHerbert Xue deprecated="not deprecated"> 4663*dc5640d1SHerbert Xue <param name="fromId" type="java.lang.String"/> 4664*dc5640d1SHerbert Xue <param name="fromPoint" type="com.google.inject.spi.InjectionPoint"/> 4665*dc5640d1SHerbert Xue <param name="toId" type="java.lang.String"/> 4666*dc5640d1SHerbert Xue </method> 4667*dc5640d1SHerbert Xue <method name="newAdaptor" return="com.google.inject.grapher.graphviz.DependencyEdgeFactory.GraphvizEdgeAdaptor" 4668*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4669*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 4670*dc5640d1SHerbert Xue deprecated="not deprecated"> 4671*dc5640d1SHerbert Xue <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/> 4672*dc5640d1SHerbert Xue </method> 4673*dc5640d1SHerbert Xue <doc> 4674*dc5640d1SHerbert Xue <![CDATA[Graphviz-specific implementation of {@link DependencyEdge.Factory}. Uses a 4675*dc5640d1SHerbert Xue {@link GraphvizEdgeAdaptor} to delegate to a {@link GraphvizEdge}. 4676*dc5640d1SHerbert Xue 4677*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4678*dc5640d1SHerbert Xue </doc> 4679*dc5640d1SHerbert Xue </class> 4680*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.DependencyEdgeFactory --> 4681*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.DependencyEdgeFactory.GraphvizEdgeAdaptor --> 4682*dc5640d1SHerbert Xue <class name="DependencyEdgeFactory.GraphvizEdgeAdaptor" extends="java.lang.Object" 4683*dc5640d1SHerbert Xue abstract="false" 4684*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 4685*dc5640d1SHerbert Xue deprecated="not deprecated"> 4686*dc5640d1SHerbert Xue <implements name="com.google.inject.grapher.DependencyEdge<java.lang.String>"/> 4687*dc5640d1SHerbert Xue <constructor name="DependencyEdgeFactory.GraphvizEdgeAdaptor" type="com.google.inject.grapher.graphviz.GraphvizEdge" 4688*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4689*dc5640d1SHerbert Xue deprecated="not deprecated"> 4690*dc5640d1SHerbert Xue </constructor> 4691*dc5640d1SHerbert Xue <field name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge" 4692*dc5640d1SHerbert Xue transient="false" volatile="false" 4693*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 4694*dc5640d1SHerbert Xue deprecated="not deprecated"> 4695*dc5640d1SHerbert Xue </field> 4696*dc5640d1SHerbert Xue <doc> 4697*dc5640d1SHerbert Xue <![CDATA[Adaptor class that converts {@link DependencyEdge} methods to display 4698*dc5640d1SHerbert Xue operations on a {@link GraphvizEdge}.]]> 4699*dc5640d1SHerbert Xue </doc> 4700*dc5640d1SHerbert Xue </class> 4701*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.DependencyEdgeFactory.GraphvizEdgeAdaptor --> 4702*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.EdgeStyle --> 4703*dc5640d1SHerbert Xue <class name="EdgeStyle" extends="java.lang.Enum<com.google.inject.grapher.graphviz.EdgeStyle>" 4704*dc5640d1SHerbert Xue abstract="false" 4705*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 4706*dc5640d1SHerbert Xue deprecated="not deprecated"> 4707*dc5640d1SHerbert Xue <method name="values" return="com.google.inject.grapher.graphviz.EdgeStyle[]" 4708*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4709*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4710*dc5640d1SHerbert Xue deprecated="not deprecated"> 4711*dc5640d1SHerbert Xue </method> 4712*dc5640d1SHerbert Xue <method name="valueOf" return="com.google.inject.grapher.graphviz.EdgeStyle" 4713*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4714*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4715*dc5640d1SHerbert Xue deprecated="not deprecated"> 4716*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 4717*dc5640d1SHerbert Xue </method> 4718*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 4719*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4720*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4721*dc5640d1SHerbert Xue deprecated="not deprecated"> 4722*dc5640d1SHerbert Xue </method> 4723*dc5640d1SHerbert Xue <doc> 4724*dc5640d1SHerbert Xue <![CDATA[Styles for edges. 4725*dc5640d1SHerbert Xue <p> 4726*dc5640d1SHerbert Xue See: http://www.graphviz.org/doc/info/attrs.html#k:style 4727*dc5640d1SHerbert Xue 4728*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4729*dc5640d1SHerbert Xue </doc> 4730*dc5640d1SHerbert Xue </class> 4731*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.EdgeStyle --> 4732*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.GraphvizEdge --> 4733*dc5640d1SHerbert Xue <class name="GraphvizEdge" extends="java.lang.Object" 4734*dc5640d1SHerbert Xue abstract="false" 4735*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4736*dc5640d1SHerbert Xue deprecated="not deprecated"> 4737*dc5640d1SHerbert Xue <constructor name="GraphvizEdge" type="java.lang.String, java.lang.String" 4738*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4739*dc5640d1SHerbert Xue deprecated="not deprecated"> 4740*dc5640d1SHerbert Xue </constructor> 4741*dc5640d1SHerbert Xue <method name="getHeadNodeId" return="java.lang.String" 4742*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4743*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4744*dc5640d1SHerbert Xue deprecated="not deprecated"> 4745*dc5640d1SHerbert Xue </method> 4746*dc5640d1SHerbert Xue <method name="getHeadPortId" return="java.lang.String" 4747*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4748*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4749*dc5640d1SHerbert Xue deprecated="not deprecated"> 4750*dc5640d1SHerbert Xue </method> 4751*dc5640d1SHerbert Xue <method name="setHeadPortId" 4752*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4753*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4754*dc5640d1SHerbert Xue deprecated="not deprecated"> 4755*dc5640d1SHerbert Xue <param name="headPortId" type="java.lang.String"/> 4756*dc5640d1SHerbert Xue </method> 4757*dc5640d1SHerbert Xue <method name="getHeadCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint" 4758*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4759*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4760*dc5640d1SHerbert Xue deprecated="not deprecated"> 4761*dc5640d1SHerbert Xue </method> 4762*dc5640d1SHerbert Xue <method name="setHeadCompassPoint" 4763*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4764*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4765*dc5640d1SHerbert Xue deprecated="not deprecated"> 4766*dc5640d1SHerbert Xue <param name="headCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/> 4767*dc5640d1SHerbert Xue </method> 4768*dc5640d1SHerbert Xue <method name="getArrowHead" return="java.util.List<com.google.inject.grapher.graphviz.ArrowType>" 4769*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4770*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4771*dc5640d1SHerbert Xue deprecated="not deprecated"> 4772*dc5640d1SHerbert Xue </method> 4773*dc5640d1SHerbert Xue <method name="setArrowHead" 4774*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4775*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4776*dc5640d1SHerbert Xue deprecated="not deprecated"> 4777*dc5640d1SHerbert Xue <param name="arrowHead" type="java.util.List<com.google.inject.grapher.graphviz.ArrowType>"/> 4778*dc5640d1SHerbert Xue </method> 4779*dc5640d1SHerbert Xue <method name="getTailNodeId" return="java.lang.String" 4780*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4781*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4782*dc5640d1SHerbert Xue deprecated="not deprecated"> 4783*dc5640d1SHerbert Xue </method> 4784*dc5640d1SHerbert Xue <method name="getTailPortId" return="java.lang.String" 4785*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4786*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4787*dc5640d1SHerbert Xue deprecated="not deprecated"> 4788*dc5640d1SHerbert Xue </method> 4789*dc5640d1SHerbert Xue <method name="setTailPortId" 4790*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4791*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4792*dc5640d1SHerbert Xue deprecated="not deprecated"> 4793*dc5640d1SHerbert Xue <param name="tailPortId" type="java.lang.String"/> 4794*dc5640d1SHerbert Xue </method> 4795*dc5640d1SHerbert Xue <method name="getTailCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint" 4796*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4797*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4798*dc5640d1SHerbert Xue deprecated="not deprecated"> 4799*dc5640d1SHerbert Xue </method> 4800*dc5640d1SHerbert Xue <method name="setTailCompassPoint" 4801*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4802*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4803*dc5640d1SHerbert Xue deprecated="not deprecated"> 4804*dc5640d1SHerbert Xue <param name="tailCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/> 4805*dc5640d1SHerbert Xue </method> 4806*dc5640d1SHerbert Xue <method name="getArrowTail" return="java.util.List<com.google.inject.grapher.graphviz.ArrowType>" 4807*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4808*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4809*dc5640d1SHerbert Xue deprecated="not deprecated"> 4810*dc5640d1SHerbert Xue </method> 4811*dc5640d1SHerbert Xue <method name="setArrowTail" 4812*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4813*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4814*dc5640d1SHerbert Xue deprecated="not deprecated"> 4815*dc5640d1SHerbert Xue <param name="arrowTail" type="java.util.List<com.google.inject.grapher.graphviz.ArrowType>"/> 4816*dc5640d1SHerbert Xue </method> 4817*dc5640d1SHerbert Xue <method name="getStyle" return="com.google.inject.grapher.graphviz.EdgeStyle" 4818*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4819*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4820*dc5640d1SHerbert Xue deprecated="not deprecated"> 4821*dc5640d1SHerbert Xue </method> 4822*dc5640d1SHerbert Xue <method name="setStyle" 4823*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4824*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4825*dc5640d1SHerbert Xue deprecated="not deprecated"> 4826*dc5640d1SHerbert Xue <param name="style" type="com.google.inject.grapher.graphviz.EdgeStyle"/> 4827*dc5640d1SHerbert Xue </method> 4828*dc5640d1SHerbert Xue <doc> 4829*dc5640d1SHerbert Xue <![CDATA[Data object to encapsulate the attributes of Graphviz edges that we're 4830*dc5640d1SHerbert Xue interested in drawing. 4831*dc5640d1SHerbert Xue 4832*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4833*dc5640d1SHerbert Xue </doc> 4834*dc5640d1SHerbert Xue </class> 4835*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.GraphvizEdge --> 4836*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.GraphvizModule --> 4837*dc5640d1SHerbert Xue <class name="GraphvizModule" extends="com.google.inject.AbstractModule" 4838*dc5640d1SHerbert Xue abstract="false" 4839*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4840*dc5640d1SHerbert Xue deprecated="not deprecated"> 4841*dc5640d1SHerbert Xue <constructor name="GraphvizModule" 4842*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4843*dc5640d1SHerbert Xue deprecated="not deprecated"> 4844*dc5640d1SHerbert Xue </constructor> 4845*dc5640d1SHerbert Xue <method name="configure" 4846*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4847*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 4848*dc5640d1SHerbert Xue deprecated="not deprecated"> 4849*dc5640d1SHerbert Xue </method> 4850*dc5640d1SHerbert Xue <doc> 4851*dc5640d1SHerbert Xue <![CDATA[Module that provides {@link GraphvizRenderer} as the {@link Renderer} and 4852*dc5640d1SHerbert Xue binds the other Graphviz factories. 4853*dc5640d1SHerbert Xue 4854*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4855*dc5640d1SHerbert Xue </doc> 4856*dc5640d1SHerbert Xue </class> 4857*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.GraphvizModule --> 4858*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.GraphvizNode --> 4859*dc5640d1SHerbert Xue <class name="GraphvizNode" extends="java.lang.Object" 4860*dc5640d1SHerbert Xue abstract="false" 4861*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4862*dc5640d1SHerbert Xue deprecated="not deprecated"> 4863*dc5640d1SHerbert Xue <constructor name="GraphvizNode" type="java.lang.String" 4864*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4865*dc5640d1SHerbert Xue deprecated="not deprecated"> 4866*dc5640d1SHerbert Xue </constructor> 4867*dc5640d1SHerbert Xue <method name="getNodeId" return="java.lang.String" 4868*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4869*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4870*dc5640d1SHerbert Xue deprecated="not deprecated"> 4871*dc5640d1SHerbert Xue </method> 4872*dc5640d1SHerbert Xue <method name="getShape" return="com.google.inject.grapher.graphviz.NodeShape" 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 </method> 4877*dc5640d1SHerbert Xue <method name="setShape" 4878*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4879*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4880*dc5640d1SHerbert Xue deprecated="not deprecated"> 4881*dc5640d1SHerbert Xue <param name="shape" type="com.google.inject.grapher.graphviz.NodeShape"/> 4882*dc5640d1SHerbert Xue </method> 4883*dc5640d1SHerbert Xue <method name="getStyle" return="com.google.inject.grapher.graphviz.NodeStyle" 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="setStyle" 4889*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4890*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4891*dc5640d1SHerbert Xue deprecated="not deprecated"> 4892*dc5640d1SHerbert Xue <param name="style" type="com.google.inject.grapher.graphviz.NodeStyle"/> 4893*dc5640d1SHerbert Xue </method> 4894*dc5640d1SHerbert Xue <method name="getTitle" return="java.lang.String" 4895*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4896*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4897*dc5640d1SHerbert Xue deprecated="not deprecated"> 4898*dc5640d1SHerbert Xue </method> 4899*dc5640d1SHerbert Xue <method name="setTitle" 4900*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4901*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4902*dc5640d1SHerbert Xue deprecated="not deprecated"> 4903*dc5640d1SHerbert Xue <param name="title" type="java.lang.String"/> 4904*dc5640d1SHerbert Xue </method> 4905*dc5640d1SHerbert Xue <method name="getSubtitles" return="java.util.List<java.lang.String>" 4906*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4907*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4908*dc5640d1SHerbert Xue deprecated="not deprecated"> 4909*dc5640d1SHerbert Xue </method> 4910*dc5640d1SHerbert Xue <method name="addSubtitle" 4911*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4912*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4913*dc5640d1SHerbert Xue deprecated="not deprecated"> 4914*dc5640d1SHerbert Xue <param name="position" type="int"/> 4915*dc5640d1SHerbert Xue <param name="subtitle" type="java.lang.String"/> 4916*dc5640d1SHerbert Xue </method> 4917*dc5640d1SHerbert Xue <method name="getHeaderTextColor" return="java.lang.String" 4918*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4919*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4920*dc5640d1SHerbert Xue deprecated="not deprecated"> 4921*dc5640d1SHerbert Xue </method> 4922*dc5640d1SHerbert Xue <method name="setHeaderTextColor" 4923*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4924*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4925*dc5640d1SHerbert Xue deprecated="not deprecated"> 4926*dc5640d1SHerbert Xue <param name="headerTextColor" type="java.lang.String"/> 4927*dc5640d1SHerbert Xue </method> 4928*dc5640d1SHerbert Xue <method name="getHeaderBackgroundColor" return="java.lang.String" 4929*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4930*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4931*dc5640d1SHerbert Xue deprecated="not deprecated"> 4932*dc5640d1SHerbert Xue </method> 4933*dc5640d1SHerbert Xue <method name="setHeaderBackgroundColor" 4934*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4935*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4936*dc5640d1SHerbert Xue deprecated="not deprecated"> 4937*dc5640d1SHerbert Xue <param name="headerBackgroundColor" type="java.lang.String"/> 4938*dc5640d1SHerbert Xue </method> 4939*dc5640d1SHerbert Xue <method name="addField" 4940*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4941*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4942*dc5640d1SHerbert Xue deprecated="not deprecated"> 4943*dc5640d1SHerbert Xue <param name="portId" type="java.lang.String"/> 4944*dc5640d1SHerbert Xue <param name="title" type="java.lang.String"/> 4945*dc5640d1SHerbert Xue </method> 4946*dc5640d1SHerbert Xue <method name="getFields" return="java.util.Map<java.lang.String, java.lang.String>" 4947*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4948*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4949*dc5640d1SHerbert Xue deprecated="not deprecated"> 4950*dc5640d1SHerbert Xue </method> 4951*dc5640d1SHerbert Xue <doc> 4952*dc5640d1SHerbert Xue <![CDATA[Data object to encapsulate the attributes of Graphviz nodes that we're 4953*dc5640d1SHerbert Xue interested in drawing. 4954*dc5640d1SHerbert Xue 4955*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4956*dc5640d1SHerbert Xue </doc> 4957*dc5640d1SHerbert Xue </class> 4958*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.GraphvizNode --> 4959*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.GraphvizRenderer --> 4960*dc5640d1SHerbert Xue <class name="GraphvizRenderer" extends="java.lang.Object" 4961*dc5640d1SHerbert Xue abstract="false" 4962*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4963*dc5640d1SHerbert Xue deprecated="not deprecated"> 4964*dc5640d1SHerbert Xue <implements name="com.google.inject.grapher.Renderer"/> 4965*dc5640d1SHerbert Xue <implements name="com.google.inject.grapher.NodeAliasFactory<java.lang.String>"/> 4966*dc5640d1SHerbert Xue <constructor name="GraphvizRenderer" 4967*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4968*dc5640d1SHerbert Xue deprecated="not deprecated"> 4969*dc5640d1SHerbert Xue </constructor> 4970*dc5640d1SHerbert Xue <method name="setOut" return="com.google.inject.grapher.graphviz.GraphvizRenderer" 4971*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4972*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4973*dc5640d1SHerbert Xue deprecated="not deprecated"> 4974*dc5640d1SHerbert Xue <param name="out" type="java.io.PrintWriter"/> 4975*dc5640d1SHerbert Xue </method> 4976*dc5640d1SHerbert Xue <method name="setRankdir" return="com.google.inject.grapher.graphviz.GraphvizRenderer" 4977*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4978*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4979*dc5640d1SHerbert Xue deprecated="not deprecated"> 4980*dc5640d1SHerbert Xue <param name="rankdir" type="java.lang.String"/> 4981*dc5640d1SHerbert Xue </method> 4982*dc5640d1SHerbert Xue <method name="addNode" 4983*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4984*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4985*dc5640d1SHerbert Xue deprecated="not deprecated"> 4986*dc5640d1SHerbert Xue <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/> 4987*dc5640d1SHerbert Xue </method> 4988*dc5640d1SHerbert Xue <method name="addEdge" 4989*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4990*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4991*dc5640d1SHerbert Xue deprecated="not deprecated"> 4992*dc5640d1SHerbert Xue <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/> 4993*dc5640d1SHerbert Xue </method> 4994*dc5640d1SHerbert Xue <method name="newAlias" 4995*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4996*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4997*dc5640d1SHerbert Xue deprecated="not deprecated"> 4998*dc5640d1SHerbert Xue <param name="fromId" type="java.lang.String"/> 4999*dc5640d1SHerbert Xue <param name="toId" type="java.lang.String"/> 5000*dc5640d1SHerbert Xue </method> 5001*dc5640d1SHerbert Xue <method name="resolveAlias" return="java.lang.String" 5002*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5003*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5004*dc5640d1SHerbert Xue deprecated="not deprecated"> 5005*dc5640d1SHerbert Xue <param name="id" type="java.lang.String"/> 5006*dc5640d1SHerbert Xue </method> 5007*dc5640d1SHerbert Xue <method name="render" 5008*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5009*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5010*dc5640d1SHerbert Xue deprecated="not deprecated"> 5011*dc5640d1SHerbert Xue </method> 5012*dc5640d1SHerbert Xue <method name="getGraphAttributes" return="java.util.Map<java.lang.String, java.lang.String>" 5013*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5014*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5015*dc5640d1SHerbert Xue deprecated="not deprecated"> 5016*dc5640d1SHerbert Xue </method> 5017*dc5640d1SHerbert Xue <method name="start" 5018*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5019*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5020*dc5640d1SHerbert Xue deprecated="not deprecated"> 5021*dc5640d1SHerbert Xue </method> 5022*dc5640d1SHerbert Xue <method name="finish" 5023*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5024*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5025*dc5640d1SHerbert Xue deprecated="not deprecated"> 5026*dc5640d1SHerbert Xue </method> 5027*dc5640d1SHerbert Xue <method name="renderNode" 5028*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5029*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5030*dc5640d1SHerbert Xue deprecated="not deprecated"> 5031*dc5640d1SHerbert Xue <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/> 5032*dc5640d1SHerbert Xue </method> 5033*dc5640d1SHerbert Xue <method name="getNodeAttributes" return="java.util.Map<java.lang.String, java.lang.String>" 5034*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5035*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5036*dc5640d1SHerbert Xue deprecated="not deprecated"> 5037*dc5640d1SHerbert Xue <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/> 5038*dc5640d1SHerbert Xue </method> 5039*dc5640d1SHerbert Xue <method name="getNodeLabel" return="java.lang.String" 5040*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5041*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5042*dc5640d1SHerbert Xue deprecated="not deprecated"> 5043*dc5640d1SHerbert Xue <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/> 5044*dc5640d1SHerbert Xue <doc> 5045*dc5640d1SHerbert Xue <![CDATA[Creates the "label" for a node. This is a string of HTML that defines a 5046*dc5640d1SHerbert Xue table with a heading at the top and (in the case of 5047*dc5640d1SHerbert Xue {@link ImplementationNode}s) rows for each of the member fields.]]> 5048*dc5640d1SHerbert Xue </doc> 5049*dc5640d1SHerbert Xue </method> 5050*dc5640d1SHerbert Xue <method name="renderEdge" 5051*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5052*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5053*dc5640d1SHerbert Xue deprecated="not deprecated"> 5054*dc5640d1SHerbert Xue <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/> 5055*dc5640d1SHerbert Xue </method> 5056*dc5640d1SHerbert Xue <method name="getEdgeAttributes" return="java.util.Map<java.lang.String, java.lang.String>" 5057*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5058*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5059*dc5640d1SHerbert Xue deprecated="not deprecated"> 5060*dc5640d1SHerbert Xue <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/> 5061*dc5640d1SHerbert Xue </method> 5062*dc5640d1SHerbert Xue <method name="getArrowString" return="java.lang.String" 5063*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5064*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5065*dc5640d1SHerbert Xue deprecated="not deprecated"> 5066*dc5640d1SHerbert Xue <param name="arrows" type="java.util.List<com.google.inject.grapher.graphviz.ArrowType>"/> 5067*dc5640d1SHerbert Xue <doc> 5068*dc5640d1SHerbert Xue <![CDATA[Turns a {@link List} of {@link ArrowType}s into a {@link String} that 5069*dc5640d1SHerbert Xue represents combining them. With Graphviz, that just means concatenating 5070*dc5640d1SHerbert Xue them.]]> 5071*dc5640d1SHerbert Xue </doc> 5072*dc5640d1SHerbert Xue </method> 5073*dc5640d1SHerbert Xue <method name="getEdgeEndPoint" return="java.lang.String" 5074*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5075*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5076*dc5640d1SHerbert Xue deprecated="not deprecated"> 5077*dc5640d1SHerbert Xue <param name="nodeId" type="java.lang.String"/> 5078*dc5640d1SHerbert Xue <param name="portId" type="java.lang.String"/> 5079*dc5640d1SHerbert Xue <param name="compassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/> 5080*dc5640d1SHerbert Xue </method> 5081*dc5640d1SHerbert Xue <method name="htmlEscape" return="java.lang.String" 5082*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5083*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5084*dc5640d1SHerbert Xue deprecated="not deprecated"> 5085*dc5640d1SHerbert Xue <param name="str" type="java.lang.String"/> 5086*dc5640d1SHerbert Xue </method> 5087*dc5640d1SHerbert Xue <doc> 5088*dc5640d1SHerbert Xue <![CDATA[{@link Renderer} implementation that writes out a Graphviz DOT file of the 5089*dc5640d1SHerbert Xue graph. Bound in {@link GraphvizModule}. 5090*dc5640d1SHerbert Xue <p> 5091*dc5640d1SHerbert Xue Specify the {@link PrintWriter} to output to with 5092*dc5640d1SHerbert Xue {@link #setOut(PrintWriter)}. 5093*dc5640d1SHerbert Xue 5094*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 5095*dc5640d1SHerbert Xue </doc> 5096*dc5640d1SHerbert Xue </class> 5097*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.GraphvizRenderer --> 5098*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.ImplementationNodeFactory --> 5099*dc5640d1SHerbert Xue <class name="ImplementationNodeFactory" extends="java.lang.Object" 5100*dc5640d1SHerbert Xue abstract="false" 5101*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5102*dc5640d1SHerbert Xue deprecated="not deprecated"> 5103*dc5640d1SHerbert Xue <implements name="com.google.inject.grapher.ImplementationNode.Factory<java.lang.String, com.google.inject.grapher.ImplementationNode<java.lang.String>>"/> 5104*dc5640d1SHerbert Xue <constructor name="ImplementationNodeFactory" type="com.google.inject.grapher.graphviz.GraphvizRenderer, com.google.inject.grapher.NameFactory, com.google.inject.grapher.graphviz.PortIdFactory" 5105*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5106*dc5640d1SHerbert Xue deprecated="not deprecated"> 5107*dc5640d1SHerbert Xue </constructor> 5108*dc5640d1SHerbert Xue <method name="newImplementationNode" return="com.google.inject.grapher.ImplementationNode<java.lang.String>" 5109*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5110*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5111*dc5640d1SHerbert Xue deprecated="not deprecated"> 5112*dc5640d1SHerbert Xue <param name="nodeId" type="java.lang.String"/> 5113*dc5640d1SHerbert Xue </method> 5114*dc5640d1SHerbert Xue <method name="newAdaptor" return="com.google.inject.grapher.graphviz.ImplementationNodeFactory.GraphvizNodeAdaptor" 5115*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5116*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5117*dc5640d1SHerbert Xue deprecated="not deprecated"> 5118*dc5640d1SHerbert Xue <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/> 5119*dc5640d1SHerbert Xue </method> 5120*dc5640d1SHerbert Xue <doc> 5121*dc5640d1SHerbert Xue <![CDATA[Graphviz-specific implementation of {@link ImplementationNode.Factory}. Uses 5122*dc5640d1SHerbert Xue a {@link GraphvizEdgeAdaptor} to delegate to a {@link GraphvizNode}. 5123*dc5640d1SHerbert Xue 5124*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 5125*dc5640d1SHerbert Xue </doc> 5126*dc5640d1SHerbert Xue </class> 5127*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.ImplementationNodeFactory --> 5128*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.ImplementationNodeFactory.GraphvizNodeAdaptor --> 5129*dc5640d1SHerbert Xue <class name="ImplementationNodeFactory.GraphvizNodeAdaptor" extends="java.lang.Object" 5130*dc5640d1SHerbert Xue abstract="false" 5131*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5132*dc5640d1SHerbert Xue deprecated="not deprecated"> 5133*dc5640d1SHerbert Xue <implements name="com.google.inject.grapher.ImplementationNode<java.lang.String>"/> 5134*dc5640d1SHerbert Xue <constructor name="ImplementationNodeFactory.GraphvizNodeAdaptor" type="com.google.inject.grapher.graphviz.GraphvizNode" 5135*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5136*dc5640d1SHerbert Xue deprecated="not deprecated"> 5137*dc5640d1SHerbert Xue </constructor> 5138*dc5640d1SHerbert Xue <method name="setClassKey" 5139*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5140*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5141*dc5640d1SHerbert Xue deprecated="not deprecated"> 5142*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 5143*dc5640d1SHerbert Xue </method> 5144*dc5640d1SHerbert Xue <method name="setInstance" 5145*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5146*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5147*dc5640d1SHerbert Xue deprecated="not deprecated"> 5148*dc5640d1SHerbert Xue <param name="instance" type="java.lang.Object"/> 5149*dc5640d1SHerbert Xue </method> 5150*dc5640d1SHerbert Xue <method name="setSource" 5151*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5152*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5153*dc5640d1SHerbert Xue deprecated="not deprecated"> 5154*dc5640d1SHerbert Xue <param name="source" type="java.lang.Object"/> 5155*dc5640d1SHerbert Xue </method> 5156*dc5640d1SHerbert Xue <method name="addMember" 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 <param name="member" type="java.lang.reflect.Member"/> 5161*dc5640d1SHerbert Xue </method> 5162*dc5640d1SHerbert Xue <field name="node" type="com.google.inject.grapher.graphviz.GraphvizNode" 5163*dc5640d1SHerbert Xue transient="false" volatile="false" 5164*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 5165*dc5640d1SHerbert Xue deprecated="not deprecated"> 5166*dc5640d1SHerbert Xue </field> 5167*dc5640d1SHerbert Xue <doc> 5168*dc5640d1SHerbert Xue <![CDATA[Adaptor class that converts {@link ImplementationNode} methods to display 5169*dc5640d1SHerbert Xue operations on a {@link GraphvizNode}.]]> 5170*dc5640d1SHerbert Xue </doc> 5171*dc5640d1SHerbert Xue </class> 5172*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.ImplementationNodeFactory.GraphvizNodeAdaptor --> 5173*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.InterfaceNodeFactory --> 5174*dc5640d1SHerbert Xue <class name="InterfaceNodeFactory" extends="java.lang.Object" 5175*dc5640d1SHerbert Xue abstract="false" 5176*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5177*dc5640d1SHerbert Xue deprecated="not deprecated"> 5178*dc5640d1SHerbert Xue <implements name="com.google.inject.grapher.InterfaceNode.Factory<java.lang.String, com.google.inject.grapher.InterfaceNode<java.lang.String>>"/> 5179*dc5640d1SHerbert Xue <constructor name="InterfaceNodeFactory" type="com.google.inject.grapher.graphviz.GraphvizRenderer, com.google.inject.grapher.NameFactory" 5180*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5181*dc5640d1SHerbert Xue deprecated="not deprecated"> 5182*dc5640d1SHerbert Xue </constructor> 5183*dc5640d1SHerbert Xue <method name="newInterfaceNode" return="com.google.inject.grapher.InterfaceNode<java.lang.String>" 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 <param name="nodeId" type="java.lang.String"/> 5188*dc5640d1SHerbert Xue </method> 5189*dc5640d1SHerbert Xue <doc> 5190*dc5640d1SHerbert Xue <![CDATA[Graphviz-specific implementation of {@link InterfaceNode.Factory}. Uses 5191*dc5640d1SHerbert Xue a {@link GraphvizEdgeAdaptor} to delegate to a {@link GraphvizNode}. 5192*dc5640d1SHerbert Xue 5193*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 5194*dc5640d1SHerbert Xue </doc> 5195*dc5640d1SHerbert Xue </class> 5196*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.InterfaceNodeFactory --> 5197*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.InterfaceNodeFactory.GraphvizNodeAdaptor --> 5198*dc5640d1SHerbert Xue <class name="InterfaceNodeFactory.GraphvizNodeAdaptor" extends="java.lang.Object" 5199*dc5640d1SHerbert Xue abstract="false" 5200*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5201*dc5640d1SHerbert Xue deprecated="not deprecated"> 5202*dc5640d1SHerbert Xue <implements name="com.google.inject.grapher.InterfaceNode<java.lang.String>"/> 5203*dc5640d1SHerbert Xue <constructor name="InterfaceNodeFactory.GraphvizNodeAdaptor" type="com.google.inject.grapher.graphviz.GraphvizNode" 5204*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5205*dc5640d1SHerbert Xue deprecated="not deprecated"> 5206*dc5640d1SHerbert Xue </constructor> 5207*dc5640d1SHerbert Xue <method name="setKey" 5208*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5209*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5210*dc5640d1SHerbert Xue deprecated="not deprecated"> 5211*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 5212*dc5640d1SHerbert Xue </method> 5213*dc5640d1SHerbert Xue <method name="setSource" 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="source" type="java.lang.Object"/> 5218*dc5640d1SHerbert Xue </method> 5219*dc5640d1SHerbert Xue <field name="node" type="com.google.inject.grapher.graphviz.GraphvizNode" 5220*dc5640d1SHerbert Xue transient="false" volatile="false" 5221*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 5222*dc5640d1SHerbert Xue deprecated="not deprecated"> 5223*dc5640d1SHerbert Xue </field> 5224*dc5640d1SHerbert Xue <doc> 5225*dc5640d1SHerbert Xue <![CDATA[Adaptor class that converts {@link InterfaceNode} methods to display 5226*dc5640d1SHerbert Xue operations on a {@link GraphvizNode}.]]> 5227*dc5640d1SHerbert Xue </doc> 5228*dc5640d1SHerbert Xue </class> 5229*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.InterfaceNodeFactory.GraphvizNodeAdaptor --> 5230*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.NodeShape --> 5231*dc5640d1SHerbert Xue <class name="NodeShape" extends="java.lang.Enum<com.google.inject.grapher.graphviz.NodeShape>" 5232*dc5640d1SHerbert Xue abstract="false" 5233*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 5234*dc5640d1SHerbert Xue deprecated="not deprecated"> 5235*dc5640d1SHerbert Xue <method name="values" return="com.google.inject.grapher.graphviz.NodeShape[]" 5236*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5237*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5238*dc5640d1SHerbert Xue deprecated="not deprecated"> 5239*dc5640d1SHerbert Xue </method> 5240*dc5640d1SHerbert Xue <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeShape" 5241*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5242*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5243*dc5640d1SHerbert Xue deprecated="not deprecated"> 5244*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 5245*dc5640d1SHerbert Xue </method> 5246*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 5247*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5248*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5249*dc5640d1SHerbert Xue deprecated="not deprecated"> 5250*dc5640d1SHerbert Xue </method> 5251*dc5640d1SHerbert Xue <doc> 5252*dc5640d1SHerbert Xue <![CDATA[Enum for the shapes that are most interesting for Guice graphing. 5253*dc5640d1SHerbert Xue <p> 5254*dc5640d1SHerbert Xue See: http://www.graphviz.org/doc/info/shapes.html 5255*dc5640d1SHerbert Xue 5256*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 5257*dc5640d1SHerbert Xue </doc> 5258*dc5640d1SHerbert Xue </class> 5259*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.NodeShape --> 5260*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.NodeStyle --> 5261*dc5640d1SHerbert Xue <class name="NodeStyle" extends="java.lang.Enum<com.google.inject.grapher.graphviz.NodeStyle>" 5262*dc5640d1SHerbert Xue abstract="false" 5263*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 5264*dc5640d1SHerbert Xue deprecated="not deprecated"> 5265*dc5640d1SHerbert Xue <method name="values" return="com.google.inject.grapher.graphviz.NodeStyle[]" 5266*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5267*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5268*dc5640d1SHerbert Xue deprecated="not deprecated"> 5269*dc5640d1SHerbert Xue </method> 5270*dc5640d1SHerbert Xue <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeStyle" 5271*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5272*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5273*dc5640d1SHerbert Xue deprecated="not deprecated"> 5274*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 5275*dc5640d1SHerbert Xue </method> 5276*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 5277*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5278*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5279*dc5640d1SHerbert Xue deprecated="not deprecated"> 5280*dc5640d1SHerbert Xue </method> 5281*dc5640d1SHerbert Xue <doc> 5282*dc5640d1SHerbert Xue <![CDATA[Styles for nodes. Similar to {@link EdgeStyle} but with a few more options. 5283*dc5640d1SHerbert Xue <p> 5284*dc5640d1SHerbert Xue See: http://www.graphviz.org/doc/info/attrs.html#k:style 5285*dc5640d1SHerbert Xue 5286*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 5287*dc5640d1SHerbert Xue </doc> 5288*dc5640d1SHerbert Xue </class> 5289*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.NodeStyle --> 5290*dc5640d1SHerbert Xue <!-- start interface com.google.inject.grapher.graphviz.PortIdFactory --> 5291*dc5640d1SHerbert Xue <interface name="PortIdFactory" abstract="true" 5292*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5293*dc5640d1SHerbert Xue deprecated="not deprecated"> 5294*dc5640d1SHerbert Xue <method name="getPortId" return="java.lang.String" 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="member" type="java.lang.reflect.Member"/> 5299*dc5640d1SHerbert Xue </method> 5300*dc5640d1SHerbert Xue <doc> 5301*dc5640d1SHerbert Xue <![CDATA[Interface for a service that returns Graphviz port IDs, used for naming the 5302*dc5640d1SHerbert Xue rows in {@link ImplementationNode}-displaying {@link GraphvizNode}s. 5303*dc5640d1SHerbert Xue Implemented by {@link StringNodeIdFactory}. 5304*dc5640d1SHerbert Xue 5305*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 5306*dc5640d1SHerbert Xue </doc> 5307*dc5640d1SHerbert Xue </interface> 5308*dc5640d1SHerbert Xue <!-- end interface com.google.inject.grapher.graphviz.PortIdFactory --> 5309*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.PortIdFactoryImpl --> 5310*dc5640d1SHerbert Xue <class name="PortIdFactoryImpl" extends="java.lang.Object" 5311*dc5640d1SHerbert Xue abstract="false" 5312*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5313*dc5640d1SHerbert Xue deprecated="not deprecated"> 5314*dc5640d1SHerbert Xue <implements name="com.google.inject.grapher.graphviz.PortIdFactory"/> 5315*dc5640d1SHerbert Xue <constructor name="PortIdFactoryImpl" 5316*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5317*dc5640d1SHerbert Xue deprecated="not deprecated"> 5318*dc5640d1SHerbert Xue </constructor> 5319*dc5640d1SHerbert Xue <method name="getPortId" return="java.lang.String" 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 <param name="member" type="java.lang.reflect.Member"/> 5324*dc5640d1SHerbert Xue </method> 5325*dc5640d1SHerbert Xue <doc> 5326*dc5640d1SHerbert Xue <![CDATA[Implementation of {@link PortIdFactory}. Bound in {@link GraphvizModule}. 5327*dc5640d1SHerbert Xue 5328*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 5329*dc5640d1SHerbert Xue </doc> 5330*dc5640d1SHerbert Xue </class> 5331*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.PortIdFactoryImpl --> 5332*dc5640d1SHerbert Xue</package> 5333*dc5640d1SHerbert Xue<package name="com.google.inject.jndi"> 5334*dc5640d1SHerbert Xue <!-- start class com.google.inject.jndi.JndiIntegration --> 5335*dc5640d1SHerbert Xue <class name="JndiIntegration" extends="java.lang.Object" 5336*dc5640d1SHerbert Xue abstract="false" 5337*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5338*dc5640d1SHerbert Xue deprecated="not deprecated"> 5339*dc5640d1SHerbert Xue <method name="fromJndi" return="com.google.inject.Provider<T>" 5340*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5341*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5342*dc5640d1SHerbert Xue deprecated="not deprecated"> 5343*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 5344*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 5345*dc5640d1SHerbert Xue <doc> 5346*dc5640d1SHerbert Xue <![CDATA[Creates a provider which looks up objects in JNDI using the given name. 5347*dc5640d1SHerbert Xue Example usage: 5348*dc5640d1SHerbert Xue 5349*dc5640d1SHerbert Xue <pre> 5350*dc5640d1SHerbert Xue bind(DataSource.class).toProvider(fromJndi(DataSource.class, "java:...")); 5351*dc5640d1SHerbert Xue </pre>]]> 5352*dc5640d1SHerbert Xue </doc> 5353*dc5640d1SHerbert Xue </method> 5354*dc5640d1SHerbert Xue <doc> 5355*dc5640d1SHerbert Xue <![CDATA[Integrates Guice with JNDI. Requires a binding to 5356*dc5640d1SHerbert Xue {@link javax.naming.Context}. 5357*dc5640d1SHerbert Xue 5358*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 5359*dc5640d1SHerbert Xue </doc> 5360*dc5640d1SHerbert Xue </class> 5361*dc5640d1SHerbert Xue <!-- end class com.google.inject.jndi.JndiIntegration --> 5362*dc5640d1SHerbert Xue</package> 5363*dc5640d1SHerbert Xue<package name="com.google.inject.matcher"> 5364*dc5640d1SHerbert Xue <!-- start class com.google.inject.matcher.AbstractMatcher --> 5365*dc5640d1SHerbert Xue <class name="AbstractMatcher" extends="java.lang.Object" 5366*dc5640d1SHerbert Xue abstract="true" 5367*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5368*dc5640d1SHerbert Xue deprecated="not deprecated"> 5369*dc5640d1SHerbert Xue <implements name="com.google.inject.matcher.Matcher<T>"/> 5370*dc5640d1SHerbert Xue <constructor name="AbstractMatcher" 5371*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5372*dc5640d1SHerbert Xue deprecated="not deprecated"> 5373*dc5640d1SHerbert Xue </constructor> 5374*dc5640d1SHerbert Xue <method name="and" return="com.google.inject.matcher.Matcher<T>" 5375*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5376*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5377*dc5640d1SHerbert Xue deprecated="not deprecated"> 5378*dc5640d1SHerbert Xue <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 5379*dc5640d1SHerbert Xue </method> 5380*dc5640d1SHerbert Xue <method name="or" return="com.google.inject.matcher.Matcher<T>" 5381*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5382*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5383*dc5640d1SHerbert Xue deprecated="not deprecated"> 5384*dc5640d1SHerbert Xue <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 5385*dc5640d1SHerbert Xue </method> 5386*dc5640d1SHerbert Xue <doc> 5387*dc5640d1SHerbert Xue <![CDATA[Implements {@code and()} and {@code or()}. 5388*dc5640d1SHerbert Xue 5389*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 5390*dc5640d1SHerbert Xue </doc> 5391*dc5640d1SHerbert Xue </class> 5392*dc5640d1SHerbert Xue <!-- end class com.google.inject.matcher.AbstractMatcher --> 5393*dc5640d1SHerbert Xue <!-- start interface com.google.inject.matcher.Matcher --> 5394*dc5640d1SHerbert Xue <interface name="Matcher" abstract="true" 5395*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5396*dc5640d1SHerbert Xue deprecated="not deprecated"> 5397*dc5640d1SHerbert Xue <method name="matches" return="boolean" 5398*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5399*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5400*dc5640d1SHerbert Xue deprecated="not deprecated"> 5401*dc5640d1SHerbert Xue <param name="t" type="T"/> 5402*dc5640d1SHerbert Xue <doc> 5403*dc5640d1SHerbert Xue <![CDATA[Returns {@code true} if this matches {@code t}, {@code false} otherwise.]]> 5404*dc5640d1SHerbert Xue </doc> 5405*dc5640d1SHerbert Xue </method> 5406*dc5640d1SHerbert Xue <method name="and" return="com.google.inject.matcher.Matcher<T>" 5407*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5408*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5409*dc5640d1SHerbert Xue deprecated="not deprecated"> 5410*dc5640d1SHerbert Xue <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 5411*dc5640d1SHerbert Xue <doc> 5412*dc5640d1SHerbert Xue <![CDATA[Returns a new matcher which returns {@code true} if both this and the 5413*dc5640d1SHerbert Xue given matcher return {@code true}.]]> 5414*dc5640d1SHerbert Xue </doc> 5415*dc5640d1SHerbert Xue </method> 5416*dc5640d1SHerbert Xue <method name="or" return="com.google.inject.matcher.Matcher<T>" 5417*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5418*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5419*dc5640d1SHerbert Xue deprecated="not deprecated"> 5420*dc5640d1SHerbert Xue <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 5421*dc5640d1SHerbert Xue <doc> 5422*dc5640d1SHerbert Xue <![CDATA[Returns a new matcher which returns {@code true} if either this or the 5423*dc5640d1SHerbert Xue given matcher return {@code true}.]]> 5424*dc5640d1SHerbert Xue </doc> 5425*dc5640d1SHerbert Xue </method> 5426*dc5640d1SHerbert Xue <doc> 5427*dc5640d1SHerbert Xue <![CDATA[Returns {@code true} or {@code false} for a given input. 5428*dc5640d1SHerbert Xue 5429*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 5430*dc5640d1SHerbert Xue </doc> 5431*dc5640d1SHerbert Xue </interface> 5432*dc5640d1SHerbert Xue <!-- end interface com.google.inject.matcher.Matcher --> 5433*dc5640d1SHerbert Xue <!-- start class com.google.inject.matcher.Matchers --> 5434*dc5640d1SHerbert Xue <class name="Matchers" extends="java.lang.Object" 5435*dc5640d1SHerbert Xue abstract="false" 5436*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5437*dc5640d1SHerbert Xue deprecated="not deprecated"> 5438*dc5640d1SHerbert Xue <method name="any" return="com.google.inject.matcher.Matcher<java.lang.Object>" 5439*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5440*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5441*dc5640d1SHerbert Xue deprecated="not deprecated"> 5442*dc5640d1SHerbert Xue <doc> 5443*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches any input.]]> 5444*dc5640d1SHerbert Xue </doc> 5445*dc5640d1SHerbert Xue </method> 5446*dc5640d1SHerbert Xue <method name="not" return="com.google.inject.matcher.Matcher<T>" 5447*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5448*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5449*dc5640d1SHerbert Xue deprecated="not deprecated"> 5450*dc5640d1SHerbert Xue <param name="p" type="com.google.inject.matcher.Matcher<? super T>"/> 5451*dc5640d1SHerbert Xue <doc> 5452*dc5640d1SHerbert Xue <![CDATA[Inverts the given matcher.]]> 5453*dc5640d1SHerbert Xue </doc> 5454*dc5640d1SHerbert Xue </method> 5455*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.matcher.Matcher<java.lang.reflect.AnnotatedElement>" 5456*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5457*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5458*dc5640d1SHerbert Xue deprecated="not deprecated"> 5459*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5460*dc5640d1SHerbert Xue <doc> 5461*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches elements (methods, classes, etc.) 5462*dc5640d1SHerbert Xue with a given annotation.]]> 5463*dc5640d1SHerbert Xue </doc> 5464*dc5640d1SHerbert Xue </method> 5465*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.matcher.Matcher<java.lang.reflect.AnnotatedElement>" 5466*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5467*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5468*dc5640d1SHerbert Xue deprecated="not deprecated"> 5469*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 5470*dc5640d1SHerbert Xue <doc> 5471*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches elements (methods, classes, etc.) 5472*dc5640d1SHerbert Xue with a given annotation.]]> 5473*dc5640d1SHerbert Xue </doc> 5474*dc5640d1SHerbert Xue </method> 5475*dc5640d1SHerbert Xue <method name="subclassesOf" return="com.google.inject.matcher.Matcher<java.lang.Class>" 5476*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5477*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5478*dc5640d1SHerbert Xue deprecated="not deprecated"> 5479*dc5640d1SHerbert Xue <param name="superclass" type="java.lang.Class<?>"/> 5480*dc5640d1SHerbert Xue <doc> 5481*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches subclasses of the given type (as well as 5482*dc5640d1SHerbert Xue the given type).]]> 5483*dc5640d1SHerbert Xue </doc> 5484*dc5640d1SHerbert Xue </method> 5485*dc5640d1SHerbert Xue <method name="only" return="com.google.inject.matcher.Matcher<java.lang.Object>" 5486*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5487*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5488*dc5640d1SHerbert Xue deprecated="not deprecated"> 5489*dc5640d1SHerbert Xue <param name="value" type="java.lang.Object"/> 5490*dc5640d1SHerbert Xue <doc> 5491*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches objects equal to the given object.]]> 5492*dc5640d1SHerbert Xue </doc> 5493*dc5640d1SHerbert Xue </method> 5494*dc5640d1SHerbert Xue <method name="identicalTo" return="com.google.inject.matcher.Matcher<java.lang.Object>" 5495*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5496*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5497*dc5640d1SHerbert Xue deprecated="not deprecated"> 5498*dc5640d1SHerbert Xue <param name="value" type="java.lang.Object"/> 5499*dc5640d1SHerbert Xue <doc> 5500*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches only the given object.]]> 5501*dc5640d1SHerbert Xue </doc> 5502*dc5640d1SHerbert Xue </method> 5503*dc5640d1SHerbert Xue <method name="inPackage" return="com.google.inject.matcher.Matcher<java.lang.Class>" 5504*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5505*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5506*dc5640d1SHerbert Xue deprecated="not deprecated"> 5507*dc5640d1SHerbert Xue <param name="targetPackage" type="java.lang.Package"/> 5508*dc5640d1SHerbert Xue <doc> 5509*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches classes in the given package. Packages are specific to their 5510*dc5640d1SHerbert Xue classloader, so classes with the same package name may not have the same package at runtime.]]> 5511*dc5640d1SHerbert Xue </doc> 5512*dc5640d1SHerbert Xue </method> 5513*dc5640d1SHerbert Xue <method name="inSubpackage" return="com.google.inject.matcher.Matcher<java.lang.Class>" 5514*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5515*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5516*dc5640d1SHerbert Xue deprecated="not deprecated"> 5517*dc5640d1SHerbert Xue <param name="targetPackageName" type="java.lang.String"/> 5518*dc5640d1SHerbert Xue <doc> 5519*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches classes in the given package and its subpackages. Unlike 5520*dc5640d1SHerbert Xue {@link #inPackage(Package) inPackage()}, this matches classes from any classloader. 5521*dc5640d1SHerbert Xue 5522*dc5640d1SHerbert Xue @since 2.0]]> 5523*dc5640d1SHerbert Xue </doc> 5524*dc5640d1SHerbert Xue </method> 5525*dc5640d1SHerbert Xue <method name="returns" return="com.google.inject.matcher.Matcher<java.lang.reflect.Method>" 5526*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5527*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5528*dc5640d1SHerbert Xue deprecated="not deprecated"> 5529*dc5640d1SHerbert Xue <param name="returnType" type="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>"/> 5530*dc5640d1SHerbert Xue <doc> 5531*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches methods with matching return types.]]> 5532*dc5640d1SHerbert Xue </doc> 5533*dc5640d1SHerbert Xue </method> 5534*dc5640d1SHerbert Xue <doc> 5535*dc5640d1SHerbert Xue <![CDATA[Matcher implementations. Supports matching classes and methods. 5536*dc5640d1SHerbert Xue 5537*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 5538*dc5640d1SHerbert Xue </doc> 5539*dc5640d1SHerbert Xue </class> 5540*dc5640d1SHerbert Xue <!-- end class com.google.inject.matcher.Matchers --> 5541*dc5640d1SHerbert Xue</package> 5542*dc5640d1SHerbert Xue<package name="com.google.inject.multibindings"> 5543*dc5640d1SHerbert Xue <!-- start class com.google.inject.multibindings.MapBinder --> 5544*dc5640d1SHerbert Xue <class name="MapBinder" extends="java.lang.Object" 5545*dc5640d1SHerbert Xue abstract="true" 5546*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5547*dc5640d1SHerbert Xue deprecated="not deprecated"> 5548*dc5640d1SHerbert Xue <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5549*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5550*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5551*dc5640d1SHerbert Xue deprecated="not deprecated"> 5552*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5553*dc5640d1SHerbert Xue <param name="keyType" type="com.google.inject.TypeLiteral<K>"/> 5554*dc5640d1SHerbert Xue <param name="valueType" type="com.google.inject.TypeLiteral<V>"/> 5555*dc5640d1SHerbert Xue <doc> 5556*dc5640d1SHerbert Xue <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5557*dc5640d1SHerbert Xue {@link Map} that is itself bound with no binding annotation.]]> 5558*dc5640d1SHerbert Xue </doc> 5559*dc5640d1SHerbert Xue </method> 5560*dc5640d1SHerbert Xue <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5561*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5562*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5563*dc5640d1SHerbert Xue deprecated="not deprecated"> 5564*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5565*dc5640d1SHerbert Xue <param name="keyType" type="java.lang.Class<K>"/> 5566*dc5640d1SHerbert Xue <param name="valueType" type="java.lang.Class<V>"/> 5567*dc5640d1SHerbert Xue <doc> 5568*dc5640d1SHerbert Xue <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5569*dc5640d1SHerbert Xue {@link Map} that is itself bound with no binding annotation.]]> 5570*dc5640d1SHerbert Xue </doc> 5571*dc5640d1SHerbert Xue </method> 5572*dc5640d1SHerbert Xue <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5573*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5574*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5575*dc5640d1SHerbert Xue deprecated="not deprecated"> 5576*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5577*dc5640d1SHerbert Xue <param name="keyType" type="com.google.inject.TypeLiteral<K>"/> 5578*dc5640d1SHerbert Xue <param name="valueType" type="com.google.inject.TypeLiteral<V>"/> 5579*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 5580*dc5640d1SHerbert Xue <doc> 5581*dc5640d1SHerbert Xue <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5582*dc5640d1SHerbert Xue {@link Map} that is itself bound with {@code annotation}.]]> 5583*dc5640d1SHerbert Xue </doc> 5584*dc5640d1SHerbert Xue </method> 5585*dc5640d1SHerbert Xue <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5586*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5587*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5588*dc5640d1SHerbert Xue deprecated="not deprecated"> 5589*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5590*dc5640d1SHerbert Xue <param name="keyType" type="java.lang.Class<K>"/> 5591*dc5640d1SHerbert Xue <param name="valueType" type="java.lang.Class<V>"/> 5592*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 5593*dc5640d1SHerbert Xue <doc> 5594*dc5640d1SHerbert Xue <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5595*dc5640d1SHerbert Xue {@link Map} that is itself bound with {@code annotation}.]]> 5596*dc5640d1SHerbert Xue </doc> 5597*dc5640d1SHerbert Xue </method> 5598*dc5640d1SHerbert Xue <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5599*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5600*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5601*dc5640d1SHerbert Xue deprecated="not deprecated"> 5602*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5603*dc5640d1SHerbert Xue <param name="keyType" type="com.google.inject.TypeLiteral<K>"/> 5604*dc5640d1SHerbert Xue <param name="valueType" type="com.google.inject.TypeLiteral<V>"/> 5605*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5606*dc5640d1SHerbert Xue <doc> 5607*dc5640d1SHerbert Xue <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5608*dc5640d1SHerbert Xue {@link Map} that is itself bound with {@code annotationType}.]]> 5609*dc5640d1SHerbert Xue </doc> 5610*dc5640d1SHerbert Xue </method> 5611*dc5640d1SHerbert Xue <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5612*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5613*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5614*dc5640d1SHerbert Xue deprecated="not deprecated"> 5615*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5616*dc5640d1SHerbert Xue <param name="keyType" type="java.lang.Class<K>"/> 5617*dc5640d1SHerbert Xue <param name="valueType" type="java.lang.Class<V>"/> 5618*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5619*dc5640d1SHerbert Xue <doc> 5620*dc5640d1SHerbert Xue <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5621*dc5640d1SHerbert Xue {@link Map} that is itself bound with {@code annotationType}.]]> 5622*dc5640d1SHerbert Xue </doc> 5623*dc5640d1SHerbert Xue </method> 5624*dc5640d1SHerbert Xue <method name="permitDuplicates" return="com.google.inject.multibindings.MapBinder<K, V>" 5625*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 5626*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5627*dc5640d1SHerbert Xue deprecated="not deprecated"> 5628*dc5640d1SHerbert Xue <doc> 5629*dc5640d1SHerbert Xue <![CDATA[Configures the {@code MapBinder} to handle duplicate entries. 5630*dc5640d1SHerbert Xue <p>When multiple equal keys are bound, the value that gets included in the map is 5631*dc5640d1SHerbert Xue arbitrary. 5632*dc5640d1SHerbert Xue <p>In addition to the {@code Map<K, V>} and {@code Map<K, Provider<V>>} 5633*dc5640d1SHerbert Xue maps that are normally bound, a {@code Map<K, Set<V>>} and 5634*dc5640d1SHerbert Xue {@code Map<K, Set<Provider<V>>>} are <em>also</em> bound, which contain 5635*dc5640d1SHerbert Xue all values bound to each key. 5636*dc5640d1SHerbert Xue <p> 5637*dc5640d1SHerbert Xue When multiple modules contribute elements to the map, this configuration 5638*dc5640d1SHerbert Xue option impacts all of them. 5639*dc5640d1SHerbert Xue 5640*dc5640d1SHerbert Xue @return this map binder 5641*dc5640d1SHerbert Xue @since 3.0]]> 5642*dc5640d1SHerbert Xue </doc> 5643*dc5640d1SHerbert Xue </method> 5644*dc5640d1SHerbert Xue <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder<V>" 5645*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 5646*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5647*dc5640d1SHerbert Xue deprecated="not deprecated"> 5648*dc5640d1SHerbert Xue <param name="key" type="K"/> 5649*dc5640d1SHerbert Xue <doc> 5650*dc5640d1SHerbert Xue <![CDATA[Returns a binding builder used to add a new entry in the map. Each 5651*dc5640d1SHerbert Xue key must be distinct (and non-null). Bound providers will be evaluated each 5652*dc5640d1SHerbert Xue time the map is injected. 5653*dc5640d1SHerbert Xue 5654*dc5640d1SHerbert Xue <p>It is an error to call this method without also calling one of the 5655*dc5640d1SHerbert Xue {@code to} methods on the returned binding builder. 5656*dc5640d1SHerbert Xue 5657*dc5640d1SHerbert Xue <p>Scoping elements independently is supported. Use the {@code in} method 5658*dc5640d1SHerbert Xue to specify a binding scope.]]> 5659*dc5640d1SHerbert Xue </doc> 5660*dc5640d1SHerbert Xue </method> 5661*dc5640d1SHerbert Xue <doc> 5662*dc5640d1SHerbert Xue <![CDATA[An API to bind multiple map entries separately, only to later inject them as 5663*dc5640d1SHerbert Xue a complete map. MapBinder is intended for use in your application's module: 5664*dc5640d1SHerbert Xue <pre><code> 5665*dc5640d1SHerbert Xue public class SnacksModule extends AbstractModule { 5666*dc5640d1SHerbert Xue protected void configure() { 5667*dc5640d1SHerbert Xue MapBinder<String, Snack> mapbinder 5668*dc5640d1SHerbert Xue = MapBinder.newMapBinder(binder(), String.class, Snack.class); 5669*dc5640d1SHerbert Xue mapbinder.addBinding("twix").toInstance(new Twix()); 5670*dc5640d1SHerbert Xue mapbinder.addBinding("snickers").toProvider(SnickersProvider.class); 5671*dc5640d1SHerbert Xue mapbinder.addBinding("skittles").to(Skittles.class); 5672*dc5640d1SHerbert Xue } 5673*dc5640d1SHerbert Xue }</code></pre> 5674*dc5640d1SHerbert Xue 5675*dc5640d1SHerbert Xue <p>With this binding, a {@link Map}{@code <String, Snack>} can now be 5676*dc5640d1SHerbert Xue injected: 5677*dc5640d1SHerbert Xue <pre><code> 5678*dc5640d1SHerbert Xue class SnackMachine { 5679*dc5640d1SHerbert Xue {@literal @}Inject 5680*dc5640d1SHerbert Xue public SnackMachine(Map<String, Snack> snacks) { ... } 5681*dc5640d1SHerbert Xue }</code></pre> 5682*dc5640d1SHerbert Xue 5683*dc5640d1SHerbert Xue <p>In addition to binding {@code Map<K, V>}, a mapbinder will also bind 5684*dc5640d1SHerbert Xue {@code Map<K, Provider<V>>} for lazy value provision: 5685*dc5640d1SHerbert Xue <pre><code> 5686*dc5640d1SHerbert Xue class SnackMachine { 5687*dc5640d1SHerbert Xue {@literal @}Inject 5688*dc5640d1SHerbert Xue public SnackMachine(Map<String, Provider<Snack>> snackProviders) { ... } 5689*dc5640d1SHerbert Xue }</code></pre> 5690*dc5640d1SHerbert Xue 5691*dc5640d1SHerbert Xue <p>Contributing mapbindings from different modules is supported. For example, 5692*dc5640d1SHerbert Xue it is okay to have both {@code CandyModule} and {@code ChipsModule} both 5693*dc5640d1SHerbert Xue create their own {@code MapBinder<String, Snack>}, and to each contribute 5694*dc5640d1SHerbert Xue bindings to the snacks map. When that map is injected, it will contain 5695*dc5640d1SHerbert Xue entries from both modules. 5696*dc5640d1SHerbert Xue 5697*dc5640d1SHerbert Xue <p>The map's iteration order is consistent with the binding order. This is 5698*dc5640d1SHerbert Xue convenient when multiple elements are contributed by the same module because 5699*dc5640d1SHerbert Xue that module can order its bindings appropriately. Avoid relying on the 5700*dc5640d1SHerbert Xue iteration order of elements contributed by different modules, since there is 5701*dc5640d1SHerbert Xue no equivalent mechanism to order modules. 5702*dc5640d1SHerbert Xue 5703*dc5640d1SHerbert Xue <p>The map is unmodifiable. Elements can only be added to the map by 5704*dc5640d1SHerbert Xue configuring the MapBinder. Elements can never be removed from the map. 5705*dc5640d1SHerbert Xue 5706*dc5640d1SHerbert Xue <p>Values are resolved at map injection time. If a value is bound to a 5707*dc5640d1SHerbert Xue provider, that provider's get method will be called each time the map is 5708*dc5640d1SHerbert Xue injected (unless the binding is also scoped, or a map of providers is injected). 5709*dc5640d1SHerbert Xue 5710*dc5640d1SHerbert Xue <p>Annotations are used to create different maps of the same key/value 5711*dc5640d1SHerbert Xue type. Each distinct annotation gets its own independent map. 5712*dc5640d1SHerbert Xue 5713*dc5640d1SHerbert Xue <p><strong>Keys must be distinct.</strong> If the same key is bound more than 5714*dc5640d1SHerbert Xue once, map injection will fail. However, use {@link #permitDuplicates()} in 5715*dc5640d1SHerbert Xue order to allow duplicate keys; extra bindings to {@code Map<K, Set<V>>} and 5716*dc5640d1SHerbert Xue {@code Map<K, Set<Provider<V>>} will be added. 5717*dc5640d1SHerbert Xue 5718*dc5640d1SHerbert Xue <p><strong>Keys must be non-null.</strong> {@code addBinding(null)} will 5719*dc5640d1SHerbert Xue throw an unchecked exception. 5720*dc5640d1SHerbert Xue 5721*dc5640d1SHerbert Xue <p><strong>Values must be non-null to use map injection.</strong> If any 5722*dc5640d1SHerbert Xue value is null, map injection will fail (although injecting a map of providers 5723*dc5640d1SHerbert Xue will not). 5724*dc5640d1SHerbert Xue 5725*dc5640d1SHerbert Xue @author [email protected] (David P. Baker)]]> 5726*dc5640d1SHerbert Xue </doc> 5727*dc5640d1SHerbert Xue </class> 5728*dc5640d1SHerbert Xue <!-- end class com.google.inject.multibindings.MapBinder --> 5729*dc5640d1SHerbert Xue <!-- start interface com.google.inject.multibindings.MapBinderBinding --> 5730*dc5640d1SHerbert Xue <interface name="MapBinderBinding" abstract="true" 5731*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5732*dc5640d1SHerbert Xue deprecated="not deprecated"> 5733*dc5640d1SHerbert Xue <method name="getMapKey" return="com.google.inject.Key<T>" 5734*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5735*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5736*dc5640d1SHerbert Xue deprecated="not deprecated"> 5737*dc5640d1SHerbert Xue <doc> 5738*dc5640d1SHerbert Xue <![CDATA[Returns the {@link Key} for the map.]]> 5739*dc5640d1SHerbert Xue </doc> 5740*dc5640d1SHerbert Xue </method> 5741*dc5640d1SHerbert Xue <method name="getKeyTypeLiteral" return="com.google.inject.TypeLiteral<?>" 5742*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5743*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5744*dc5640d1SHerbert Xue deprecated="not deprecated"> 5745*dc5640d1SHerbert Xue <doc> 5746*dc5640d1SHerbert Xue <![CDATA[Returns the TypeLiteral describing the keys of the map. 5747*dc5640d1SHerbert Xue <p> 5748*dc5640d1SHerbert Xue The TypeLiteral will always match the type Map's generic type. For example, if getMapKey 5749*dc5640d1SHerbert Xue returns a key of <code>Map<String, Snack></code>, then this will always return a 5750*dc5640d1SHerbert Xue <code>TypeLiteral<String></code>.]]> 5751*dc5640d1SHerbert Xue </doc> 5752*dc5640d1SHerbert Xue </method> 5753*dc5640d1SHerbert Xue <method name="getValueTypeLiteral" return="com.google.inject.TypeLiteral<?>" 5754*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5755*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5756*dc5640d1SHerbert Xue deprecated="not deprecated"> 5757*dc5640d1SHerbert Xue <doc> 5758*dc5640d1SHerbert Xue <![CDATA[Returns the TypeLiteral describing the values of the map. 5759*dc5640d1SHerbert Xue <p> 5760*dc5640d1SHerbert Xue The TypeLiteral will always match the type Map's generic type. For example, if getMapKey 5761*dc5640d1SHerbert Xue returns a key of <code>Map<String, Snack></code>, then this will always return a 5762*dc5640d1SHerbert Xue <code>TypeLiteral<Snack></code>.]]> 5763*dc5640d1SHerbert Xue </doc> 5764*dc5640d1SHerbert Xue </method> 5765*dc5640d1SHerbert Xue <method name="getEntries" return="java.util.List<java.util.Map.Entry<?, com.google.inject.Binding<?>>>" 5766*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5767*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5768*dc5640d1SHerbert Xue deprecated="not deprecated"> 5769*dc5640d1SHerbert Xue <doc> 5770*dc5640d1SHerbert Xue <![CDATA[Returns all entries in the Map. The returned list of Map.Entries contains the key and a binding 5771*dc5640d1SHerbert Xue to the value. Duplicate keys or values will exist as separate Map.Entries in the returned list. 5772*dc5640d1SHerbert Xue This is only supported on bindings returned from an injector. This will throw 5773*dc5640d1SHerbert Xue {@link UnsupportedOperationException} if it is called on an element retrieved from 5774*dc5640d1SHerbert Xue {@link Elements#getElements}. 5775*dc5640d1SHerbert Xue <p> 5776*dc5640d1SHerbert Xue The elements will always match the type Map's generic type. For example, if getMapKey returns a 5777*dc5640d1SHerbert Xue key of <code>Map<String, Snack></code>, then this will always return a list of type 5778*dc5640d1SHerbert Xue <code>List<Map.Entry<String, Binding<Snack>>></code>.]]> 5779*dc5640d1SHerbert Xue </doc> 5780*dc5640d1SHerbert Xue </method> 5781*dc5640d1SHerbert Xue <method name="permitsDuplicates" return="boolean" 5782*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5783*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5784*dc5640d1SHerbert Xue deprecated="not deprecated"> 5785*dc5640d1SHerbert Xue <doc> 5786*dc5640d1SHerbert Xue <![CDATA[Returns true if the MapBinder permits duplicates. This is only supported on bindings returned 5787*dc5640d1SHerbert Xue from an injector. This will throw {@link UnsupportedOperationException} if it is called on a 5788*dc5640d1SHerbert Xue MapBinderBinding retrieved from {@link Elements#getElements}.]]> 5789*dc5640d1SHerbert Xue </doc> 5790*dc5640d1SHerbert Xue </method> 5791*dc5640d1SHerbert Xue <method name="containsElement" return="boolean" 5792*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5793*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5794*dc5640d1SHerbert Xue deprecated="not deprecated"> 5795*dc5640d1SHerbert Xue <param name="element" type="com.google.inject.spi.Element"/> 5796*dc5640d1SHerbert Xue <doc> 5797*dc5640d1SHerbert Xue <![CDATA[Returns true if this MapBinder contains the given Element in order to build the map or uses the 5798*dc5640d1SHerbert Xue given Element in order to support building and injecting the map. This will work for 5799*dc5640d1SHerbert Xue MapBinderBindings retrieved from an injector and {@link Elements#getElements}. Usually this is 5800*dc5640d1SHerbert Xue only necessary if you are working with elements retrieved from modules (without an Injector), 5801*dc5640d1SHerbert Xue otherwise {@link #getEntries} and {@link #permitsDuplicates} are better options. 5802*dc5640d1SHerbert Xue <p> 5803*dc5640d1SHerbert Xue If you need to introspect the details of the map, such as the keys, values or if it permits 5804*dc5640d1SHerbert Xue duplicates, it is necessary to pass the elements through an Injector and use 5805*dc5640d1SHerbert Xue {@link #getEntries()} and {@link #permitsDuplicates()}.]]> 5806*dc5640d1SHerbert Xue </doc> 5807*dc5640d1SHerbert Xue </method> 5808*dc5640d1SHerbert Xue <doc> 5809*dc5640d1SHerbert Xue <![CDATA[A binding for a MapBinder. 5810*dc5640d1SHerbert Xue <p> 5811*dc5640d1SHerbert Xue Although MapBinders may be injected through a variety of generic types (Map<K, V>, Map 5812*dc5640d1SHerbert Xue <K, Provider<V>>, Map<K, Set<V>>, Map<K, Set< 5813*dc5640d1SHerbert Xue Provider<V>>, and even Set<Map.Entry<K, Provider<V>>), a 5814*dc5640d1SHerbert Xue MapBinderBinding exists only on the Binding associated with the Map<K, V> key. Other 5815*dc5640d1SHerbert Xue bindings can be validated to be derived from this MapBinderBinding using 5816*dc5640d1SHerbert Xue {@link #containsElement(Element)}. 5817*dc5640d1SHerbert Xue 5818*dc5640d1SHerbert Xue @param <T> The fully qualified type of the map, including Map. For example: 5819*dc5640d1SHerbert Xue <code>MapBinderBinding<Map<String, Snack>></code> 5820*dc5640d1SHerbert Xue 5821*dc5640d1SHerbert Xue @since 3.0 5822*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin)]]> 5823*dc5640d1SHerbert Xue </doc> 5824*dc5640d1SHerbert Xue </interface> 5825*dc5640d1SHerbert Xue <!-- end interface com.google.inject.multibindings.MapBinderBinding --> 5826*dc5640d1SHerbert Xue <!-- start class com.google.inject.multibindings.Multibinder --> 5827*dc5640d1SHerbert Xue <class name="Multibinder" extends="java.lang.Object" 5828*dc5640d1SHerbert Xue abstract="true" 5829*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5830*dc5640d1SHerbert Xue deprecated="not deprecated"> 5831*dc5640d1SHerbert Xue <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5832*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5833*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5834*dc5640d1SHerbert Xue deprecated="not deprecated"> 5835*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5836*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<T>"/> 5837*dc5640d1SHerbert Xue <doc> 5838*dc5640d1SHerbert Xue <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5839*dc5640d1SHerbert Xue itself bound with no binding annotation.]]> 5840*dc5640d1SHerbert Xue </doc> 5841*dc5640d1SHerbert Xue </method> 5842*dc5640d1SHerbert Xue <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5843*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5844*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5845*dc5640d1SHerbert Xue deprecated="not deprecated"> 5846*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5847*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 5848*dc5640d1SHerbert Xue <doc> 5849*dc5640d1SHerbert Xue <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5850*dc5640d1SHerbert Xue itself bound with no binding annotation.]]> 5851*dc5640d1SHerbert Xue </doc> 5852*dc5640d1SHerbert Xue </method> 5853*dc5640d1SHerbert Xue <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5854*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5855*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5856*dc5640d1SHerbert Xue deprecated="not deprecated"> 5857*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5858*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<T>"/> 5859*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 5860*dc5640d1SHerbert Xue <doc> 5861*dc5640d1SHerbert Xue <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5862*dc5640d1SHerbert Xue itself bound with {@code annotation}.]]> 5863*dc5640d1SHerbert Xue </doc> 5864*dc5640d1SHerbert Xue </method> 5865*dc5640d1SHerbert Xue <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5866*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5867*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5868*dc5640d1SHerbert Xue deprecated="not deprecated"> 5869*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5870*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 5871*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 5872*dc5640d1SHerbert Xue <doc> 5873*dc5640d1SHerbert Xue <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5874*dc5640d1SHerbert Xue itself bound with {@code annotation}.]]> 5875*dc5640d1SHerbert Xue </doc> 5876*dc5640d1SHerbert Xue </method> 5877*dc5640d1SHerbert Xue <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5878*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5879*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5880*dc5640d1SHerbert Xue deprecated="not deprecated"> 5881*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5882*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<T>"/> 5883*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5884*dc5640d1SHerbert Xue <doc> 5885*dc5640d1SHerbert Xue <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5886*dc5640d1SHerbert Xue itself bound with {@code annotationType}.]]> 5887*dc5640d1SHerbert Xue </doc> 5888*dc5640d1SHerbert Xue </method> 5889*dc5640d1SHerbert Xue <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5890*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5891*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5892*dc5640d1SHerbert Xue deprecated="not deprecated"> 5893*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5894*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 5895*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5896*dc5640d1SHerbert Xue <doc> 5897*dc5640d1SHerbert Xue <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5898*dc5640d1SHerbert Xue itself bound with {@code annotationType}.]]> 5899*dc5640d1SHerbert Xue </doc> 5900*dc5640d1SHerbert Xue </method> 5901*dc5640d1SHerbert Xue <method name="permitDuplicates" return="com.google.inject.multibindings.Multibinder<T>" 5902*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 5903*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5904*dc5640d1SHerbert Xue deprecated="not deprecated"> 5905*dc5640d1SHerbert Xue <doc> 5906*dc5640d1SHerbert Xue <![CDATA[Configures the bound set to silently discard duplicate elements. When multiple equal values are 5907*dc5640d1SHerbert Xue bound, the one that gets included is arbitrary. When multiple modules contribute elements to 5908*dc5640d1SHerbert Xue the set, this configuration option impacts all of them. 5909*dc5640d1SHerbert Xue 5910*dc5640d1SHerbert Xue @return this multibinder 5911*dc5640d1SHerbert Xue @since 3.0]]> 5912*dc5640d1SHerbert Xue </doc> 5913*dc5640d1SHerbert Xue </method> 5914*dc5640d1SHerbert Xue <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder<T>" 5915*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 5916*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5917*dc5640d1SHerbert Xue deprecated="not deprecated"> 5918*dc5640d1SHerbert Xue <doc> 5919*dc5640d1SHerbert Xue <![CDATA[Returns a binding builder used to add a new element in the set. Each 5920*dc5640d1SHerbert Xue bound element must have a distinct value. Bound providers will be 5921*dc5640d1SHerbert Xue evaluated each time the set is injected. 5922*dc5640d1SHerbert Xue 5923*dc5640d1SHerbert Xue <p>It is an error to call this method without also calling one of the 5924*dc5640d1SHerbert Xue {@code to} methods on the returned binding builder. 5925*dc5640d1SHerbert Xue 5926*dc5640d1SHerbert Xue <p>Scoping elements independently is supported. Use the {@code in} method 5927*dc5640d1SHerbert Xue to specify a binding scope.]]> 5928*dc5640d1SHerbert Xue </doc> 5929*dc5640d1SHerbert Xue </method> 5930*dc5640d1SHerbert Xue <doc> 5931*dc5640d1SHerbert Xue <![CDATA[An API to bind multiple values separately, only to later inject them as a 5932*dc5640d1SHerbert Xue complete collection. Multibinder is intended for use in your application's 5933*dc5640d1SHerbert Xue module: 5934*dc5640d1SHerbert Xue <pre><code> 5935*dc5640d1SHerbert Xue public class SnacksModule extends AbstractModule { 5936*dc5640d1SHerbert Xue protected void configure() { 5937*dc5640d1SHerbert Xue Multibinder<Snack> multibinder 5938*dc5640d1SHerbert Xue = Multibinder.newSetBinder(binder(), Snack.class); 5939*dc5640d1SHerbert Xue multibinder.addBinding().toInstance(new Twix()); 5940*dc5640d1SHerbert Xue multibinder.addBinding().toProvider(SnickersProvider.class); 5941*dc5640d1SHerbert Xue multibinder.addBinding().to(Skittles.class); 5942*dc5640d1SHerbert Xue } 5943*dc5640d1SHerbert Xue }</code></pre> 5944*dc5640d1SHerbert Xue 5945*dc5640d1SHerbert Xue <p>With this binding, a {@link Set}{@code <Snack>} can now be injected: 5946*dc5640d1SHerbert Xue <pre><code> 5947*dc5640d1SHerbert Xue class SnackMachine { 5948*dc5640d1SHerbert Xue {@literal @}Inject 5949*dc5640d1SHerbert Xue public SnackMachine(Set<Snack> snacks) { ... } 5950*dc5640d1SHerbert Xue }</code></pre> 5951*dc5640d1SHerbert Xue 5952*dc5640d1SHerbert Xue <p>Contributing multibindings from different modules is supported. For 5953*dc5640d1SHerbert Xue example, it is okay to have both {@code CandyModule} and {@code ChipsModule} 5954*dc5640d1SHerbert Xue to both create their own {@code Multibinder<Snack>}, and to each contribute 5955*dc5640d1SHerbert Xue bindings to the set of snacks. When that set is injected, it will contain 5956*dc5640d1SHerbert Xue elements from both modules. 5957*dc5640d1SHerbert Xue 5958*dc5640d1SHerbert Xue <p>The set's iteration order is consistent with the binding order. This is 5959*dc5640d1SHerbert Xue convenient when multiple elements are contributed by the same module because 5960*dc5640d1SHerbert Xue that module can order its bindings appropriately. Avoid relying on the 5961*dc5640d1SHerbert Xue iteration order of elements contributed by different modules, since there is 5962*dc5640d1SHerbert Xue no equivalent mechanism to order modules. 5963*dc5640d1SHerbert Xue 5964*dc5640d1SHerbert Xue <p>The set is unmodifiable. Elements can only be added to the set by 5965*dc5640d1SHerbert Xue configuring the multibinder. Elements can never be removed from the set. 5966*dc5640d1SHerbert Xue 5967*dc5640d1SHerbert Xue <p>Elements are resolved at set injection time. If an element is bound to a 5968*dc5640d1SHerbert Xue provider, that provider's get method will be called each time the set is 5969*dc5640d1SHerbert Xue injected (unless the binding is also scoped). 5970*dc5640d1SHerbert Xue 5971*dc5640d1SHerbert Xue <p>Annotations are be used to create different sets of the same element 5972*dc5640d1SHerbert Xue type. Each distinct annotation gets its own independent collection of 5973*dc5640d1SHerbert Xue elements. 5974*dc5640d1SHerbert Xue 5975*dc5640d1SHerbert Xue <p><strong>Elements must be distinct.</strong> If multiple bound elements 5976*dc5640d1SHerbert Xue have the same value, set injection will fail. 5977*dc5640d1SHerbert Xue 5978*dc5640d1SHerbert Xue <p><strong>Elements must be non-null.</strong> If any set element is null, 5979*dc5640d1SHerbert Xue set injection will fail. 5980*dc5640d1SHerbert Xue 5981*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]> 5982*dc5640d1SHerbert Xue </doc> 5983*dc5640d1SHerbert Xue </class> 5984*dc5640d1SHerbert Xue <!-- end class com.google.inject.multibindings.Multibinder --> 5985*dc5640d1SHerbert Xue <!-- start interface com.google.inject.multibindings.MultibinderBinding --> 5986*dc5640d1SHerbert Xue <interface name="MultibinderBinding" abstract="true" 5987*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5988*dc5640d1SHerbert Xue deprecated="not deprecated"> 5989*dc5640d1SHerbert Xue <method name="getSetKey" return="com.google.inject.Key<T>" 5990*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5991*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5992*dc5640d1SHerbert Xue deprecated="not deprecated"> 5993*dc5640d1SHerbert Xue <doc> 5994*dc5640d1SHerbert Xue <![CDATA[Returns the key for the set.]]> 5995*dc5640d1SHerbert Xue </doc> 5996*dc5640d1SHerbert Xue </method> 5997*dc5640d1SHerbert Xue <method name="getElementTypeLiteral" return="com.google.inject.TypeLiteral<?>" 5998*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5999*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6000*dc5640d1SHerbert Xue deprecated="not deprecated"> 6001*dc5640d1SHerbert Xue <doc> 6002*dc5640d1SHerbert Xue <![CDATA[Returns the TypeLiteral that describes the type of elements in the set. 6003*dc5640d1SHerbert Xue <p> 6004*dc5640d1SHerbert Xue The elements will always match the type Set's generic type. For example, if getSetKey returns a 6005*dc5640d1SHerbert Xue key of <code>Set<String></code>, then this will always return a 6006*dc5640d1SHerbert Xue <code>TypeLiteral<String></code>.]]> 6007*dc5640d1SHerbert Xue </doc> 6008*dc5640d1SHerbert Xue </method> 6009*dc5640d1SHerbert Xue <method name="getElements" return="java.util.List<com.google.inject.Binding<?>>" 6010*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6011*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6012*dc5640d1SHerbert Xue deprecated="not deprecated"> 6013*dc5640d1SHerbert Xue <doc> 6014*dc5640d1SHerbert Xue <![CDATA[Returns all bindings that make up the set. This is only supported on bindings returned from an 6015*dc5640d1SHerbert Xue injector. This will throw {@link UnsupportedOperationException} if it is called on an element 6016*dc5640d1SHerbert Xue retrieved from {@link Elements#getElements}. 6017*dc5640d1SHerbert Xue <p> 6018*dc5640d1SHerbert Xue The elements will always match the type Set's generic type. For example, if getSetKey returns a 6019*dc5640d1SHerbert Xue key of <code>Set<String></code>, then this will always return a list of type 6020*dc5640d1SHerbert Xue <code>List<Binding<String>></code>.]]> 6021*dc5640d1SHerbert Xue </doc> 6022*dc5640d1SHerbert Xue </method> 6023*dc5640d1SHerbert Xue <method name="permitsDuplicates" return="boolean" 6024*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6025*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6026*dc5640d1SHerbert Xue deprecated="not deprecated"> 6027*dc5640d1SHerbert Xue <doc> 6028*dc5640d1SHerbert Xue <![CDATA[Returns true if the multibinder permits duplicates. This is only supported on bindings returned 6029*dc5640d1SHerbert Xue from an injector. This will throw {@link UnsupportedOperationException} if it is called on a 6030*dc5640d1SHerbert Xue MultibinderBinding retrieved from {@link Elements#getElements}.]]> 6031*dc5640d1SHerbert Xue </doc> 6032*dc5640d1SHerbert Xue </method> 6033*dc5640d1SHerbert Xue <method name="containsElement" return="boolean" 6034*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6035*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6036*dc5640d1SHerbert Xue deprecated="not deprecated"> 6037*dc5640d1SHerbert Xue <param name="element" type="com.google.inject.spi.Element"/> 6038*dc5640d1SHerbert Xue <doc> 6039*dc5640d1SHerbert Xue <![CDATA[Returns true if this Multibinder uses the given Element. This will be true for bindings that 6040*dc5640d1SHerbert Xue derive the elements of the set and other bindings that Multibinder uses internally. This will 6041*dc5640d1SHerbert Xue work for MultibinderBindings retrieved from an injector and {@link Elements#getElements}. 6042*dc5640d1SHerbert Xue Usually this is only necessary if you are working with elements retrieved from modules (without 6043*dc5640d1SHerbert Xue an Injector), otherwise {@link #getElements} and {@link #permitsDuplicates} are better options. 6044*dc5640d1SHerbert Xue <p> 6045*dc5640d1SHerbert Xue If you need to introspect the details of the set, such as the values or if it permits 6046*dc5640d1SHerbert Xue duplicates, it is necessary to pass the elements through an Injector and use 6047*dc5640d1SHerbert Xue {@link #getElements()} and {@link #permitsDuplicates()}.]]> 6048*dc5640d1SHerbert Xue </doc> 6049*dc5640d1SHerbert Xue </method> 6050*dc5640d1SHerbert Xue <doc> 6051*dc5640d1SHerbert Xue <![CDATA[A binding for a Multibinder. 6052*dc5640d1SHerbert Xue 6053*dc5640d1SHerbert Xue @param <T> The fully qualified type of the set, including Set. For example: 6054*dc5640d1SHerbert Xue <code>MultibinderBinding<Set<Boolean>></code> 6055*dc5640d1SHerbert Xue 6056*dc5640d1SHerbert Xue @since 3.0 6057*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin)]]> 6058*dc5640d1SHerbert Xue </doc> 6059*dc5640d1SHerbert Xue </interface> 6060*dc5640d1SHerbert Xue <!-- end interface com.google.inject.multibindings.MultibinderBinding --> 6061*dc5640d1SHerbert Xue <!-- start interface com.google.inject.multibindings.MultibindingsTargetVisitor --> 6062*dc5640d1SHerbert Xue <interface name="MultibindingsTargetVisitor" abstract="true" 6063*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6064*dc5640d1SHerbert Xue deprecated="not deprecated"> 6065*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 6066*dc5640d1SHerbert Xue <method name="visit" return="V" 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="multibinding" type="com.google.inject.multibindings.MultibinderBinding<? extends T>"/> 6071*dc5640d1SHerbert Xue <doc> 6072*dc5640d1SHerbert Xue <![CDATA[Visits a binding created through {@link Multibinder}.]]> 6073*dc5640d1SHerbert Xue </doc> 6074*dc5640d1SHerbert Xue </method> 6075*dc5640d1SHerbert Xue <method name="visit" return="V" 6076*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6077*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6078*dc5640d1SHerbert Xue deprecated="not deprecated"> 6079*dc5640d1SHerbert Xue <param name="mapbinding" type="com.google.inject.multibindings.MapBinderBinding<? extends T>"/> 6080*dc5640d1SHerbert Xue <doc> 6081*dc5640d1SHerbert Xue <![CDATA[Visits a binding created through {@link MapBinder}.]]> 6082*dc5640d1SHerbert Xue </doc> 6083*dc5640d1SHerbert Xue </method> 6084*dc5640d1SHerbert Xue <doc> 6085*dc5640d1SHerbert Xue <![CDATA[A visitor for the multibinder extension. 6086*dc5640d1SHerbert Xue <p> 6087*dc5640d1SHerbert Xue If your {@link BindingTargetVisitor} implements this interface, bindings created by using 6088*dc5640d1SHerbert Xue {@link Multibinder} or {@link MapBinder} will be visited through this interface. 6089*dc5640d1SHerbert Xue 6090*dc5640d1SHerbert Xue @since 3.0 6091*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin)]]> 6092*dc5640d1SHerbert Xue </doc> 6093*dc5640d1SHerbert Xue </interface> 6094*dc5640d1SHerbert Xue <!-- end interface com.google.inject.multibindings.MultibindingsTargetVisitor --> 6095*dc5640d1SHerbert Xue</package> 6096*dc5640d1SHerbert Xue<package name="com.google.inject.name"> 6097*dc5640d1SHerbert Xue <!-- start class com.google.inject.name.Named --> 6098*dc5640d1SHerbert Xue <class name="Named" abstract="true" 6099*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6100*dc5640d1SHerbert Xue deprecated="not deprecated"> 6101*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 6102*dc5640d1SHerbert Xue <doc> 6103*dc5640d1SHerbert Xue <![CDATA[Annotates named things. 6104*dc5640d1SHerbert Xue 6105*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 6106*dc5640d1SHerbert Xue </doc> 6107*dc5640d1SHerbert Xue </class> 6108*dc5640d1SHerbert Xue <!-- end class com.google.inject.name.Named --> 6109*dc5640d1SHerbert Xue <!-- start class com.google.inject.name.Names --> 6110*dc5640d1SHerbert Xue <class name="Names" extends="java.lang.Object" 6111*dc5640d1SHerbert Xue abstract="false" 6112*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6113*dc5640d1SHerbert Xue deprecated="not deprecated"> 6114*dc5640d1SHerbert Xue <method name="named" return="com.google.inject.name.Named" 6115*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6116*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6117*dc5640d1SHerbert Xue deprecated="not deprecated"> 6118*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 6119*dc5640d1SHerbert Xue <doc> 6120*dc5640d1SHerbert Xue <![CDATA[Creates a {@link Named} annotation with {@code name} as the value.]]> 6121*dc5640d1SHerbert Xue </doc> 6122*dc5640d1SHerbert Xue </method> 6123*dc5640d1SHerbert Xue <method name="bindProperties" 6124*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6125*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6126*dc5640d1SHerbert Xue deprecated="not deprecated"> 6127*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 6128*dc5640d1SHerbert Xue <param name="properties" type="java.util.Map<java.lang.String, java.lang.String>"/> 6129*dc5640d1SHerbert Xue <doc> 6130*dc5640d1SHerbert Xue <![CDATA[Creates a constant binding to {@code @Named(key)} for each entry in 6131*dc5640d1SHerbert Xue {@code properties}.]]> 6132*dc5640d1SHerbert Xue </doc> 6133*dc5640d1SHerbert Xue </method> 6134*dc5640d1SHerbert Xue <method name="bindProperties" 6135*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6136*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6137*dc5640d1SHerbert Xue deprecated="not deprecated"> 6138*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 6139*dc5640d1SHerbert Xue <param name="properties" type="java.util.Properties"/> 6140*dc5640d1SHerbert Xue <doc> 6141*dc5640d1SHerbert Xue <![CDATA[Creates a constant binding to {@code @Named(key)} for each property. This 6142*dc5640d1SHerbert Xue method binds all properties including those inherited from 6143*dc5640d1SHerbert Xue {@link Properties#defaults defaults}.]]> 6144*dc5640d1SHerbert Xue </doc> 6145*dc5640d1SHerbert Xue </method> 6146*dc5640d1SHerbert Xue <doc> 6147*dc5640d1SHerbert Xue <![CDATA[Utility methods for use with {@code @}{@link Named}. 6148*dc5640d1SHerbert Xue 6149*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 6150*dc5640d1SHerbert Xue </doc> 6151*dc5640d1SHerbert Xue </class> 6152*dc5640d1SHerbert Xue <!-- end class com.google.inject.name.Names --> 6153*dc5640d1SHerbert Xue</package> 6154*dc5640d1SHerbert Xue<package name="com.google.inject.persist"> 6155*dc5640d1SHerbert Xue <!-- start class com.google.inject.persist.PersistFilter --> 6156*dc5640d1SHerbert Xue <class name="PersistFilter" extends="java.lang.Object" 6157*dc5640d1SHerbert Xue abstract="false" 6158*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 6159*dc5640d1SHerbert Xue deprecated="not deprecated"> 6160*dc5640d1SHerbert Xue <constructor name="PersistFilter" type="com.google.inject.persist.UnitOfWork, com.google.inject.persist.PersistService" 6161*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6162*dc5640d1SHerbert Xue deprecated="not deprecated"> 6163*dc5640d1SHerbert Xue </constructor> 6164*dc5640d1SHerbert Xue <method name="init" 6165*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6166*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6167*dc5640d1SHerbert Xue deprecated="not deprecated"> 6168*dc5640d1SHerbert Xue <param name="filterConfig" type="FilterConfig"/> 6169*dc5640d1SHerbert Xue <exception name="ServletException" type="ServletException"/> 6170*dc5640d1SHerbert Xue </method> 6171*dc5640d1SHerbert Xue <method name="destroy" 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 </method> 6176*dc5640d1SHerbert Xue <method name="doFilter" 6177*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6178*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6179*dc5640d1SHerbert Xue deprecated="not deprecated"> 6180*dc5640d1SHerbert Xue <param name="servletRequest" type="ServletRequest"/> 6181*dc5640d1SHerbert Xue <param name="servletResponse" type="ServletResponse"/> 6182*dc5640d1SHerbert Xue <param name="filterChain" type="FilterChain"/> 6183*dc5640d1SHerbert Xue <exception name="IOException" type="java.io.IOException"/> 6184*dc5640d1SHerbert Xue <exception name="ServletException" type="ServletException"/> 6185*dc5640d1SHerbert Xue </method> 6186*dc5640d1SHerbert Xue <doc> 6187*dc5640d1SHerbert Xue <![CDATA[Apply this filter to enable the HTTP Request unit of work and to have 6188*dc5640d1SHerbert Xue guice-persist manage the lifecycle of active units of work. 6189*dc5640d1SHerbert Xue The filter automatically starts and stops the relevant {@link PersistService} 6190*dc5640d1SHerbert Xue upon {@link javax.servlet.Filter#init(javax.servlet.FilterConfig)} and 6191*dc5640d1SHerbert Xue {@link javax.servlet.Filter#destroy()} respectively. 6192*dc5640d1SHerbert Xue 6193*dc5640d1SHerbert Xue <p> To be able to use the open session-in-view pattern (i.e. work per request), 6194*dc5640d1SHerbert Xue register this filter <b>once</b> in your Guice {@code ServletModule}. It is 6195*dc5640d1SHerbert Xue important that you register this filter before any other filter. 6196*dc5640d1SHerbert Xue 6197*dc5640d1SHerbert Xue For multiple providers, you should register this filter once per provider, inside 6198*dc5640d1SHerbert Xue a private module for each persist module installed (this must be the same private 6199*dc5640d1SHerbert Xue module where the specific persist module is itself installed). 6200*dc5640d1SHerbert Xue 6201*dc5640d1SHerbert Xue <p> 6202*dc5640d1SHerbert Xue Example configuration: 6203*dc5640d1SHerbert Xue <pre>{@code 6204*dc5640d1SHerbert Xue public class MyModule extends ServletModule { 6205*dc5640d1SHerbert Xue public void configureServlets() { 6206*dc5640d1SHerbert Xue filter("/*").through(PersistFilter.class); 6207*dc5640d1SHerbert Xue 6208*dc5640d1SHerbert Xue serve("/index.html").with(MyHtmlServlet.class); 6209*dc5640d1SHerbert Xue // Etc. 6210*dc5640d1SHerbert Xue } 6211*dc5640d1SHerbert Xue } 6212*dc5640d1SHerbert Xue }</pre> 6213*dc5640d1SHerbert Xue <p> 6214*dc5640d1SHerbert Xue This filter is thread safe and allows you to create injectors concurrently 6215*dc5640d1SHerbert Xue and deploy multiple guice-persist modules within the same injector, or even 6216*dc5640d1SHerbert Xue multiple injectors with persist modules withing the same JVM or web app. 6217*dc5640d1SHerbert Xue <p> 6218*dc5640d1SHerbert Xue This filter requires the Guice Servlet extension. 6219*dc5640d1SHerbert Xue 6220*dc5640d1SHerbert Xue @author Dhanji R. Prasanna ([email protected])]]> 6221*dc5640d1SHerbert Xue </doc> 6222*dc5640d1SHerbert Xue </class> 6223*dc5640d1SHerbert Xue <!-- end class com.google.inject.persist.PersistFilter --> 6224*dc5640d1SHerbert Xue <!-- start class com.google.inject.persist.PersistModule --> 6225*dc5640d1SHerbert Xue <class name="PersistModule" extends="com.google.inject.AbstractModule" 6226*dc5640d1SHerbert Xue abstract="true" 6227*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6228*dc5640d1SHerbert Xue deprecated="not deprecated"> 6229*dc5640d1SHerbert Xue <constructor name="PersistModule" 6230*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6231*dc5640d1SHerbert Xue deprecated="not deprecated"> 6232*dc5640d1SHerbert Xue </constructor> 6233*dc5640d1SHerbert Xue <method name="configure" 6234*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6235*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 6236*dc5640d1SHerbert Xue deprecated="not deprecated"> 6237*dc5640d1SHerbert Xue </method> 6238*dc5640d1SHerbert Xue <method name="configurePersistence" 6239*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6240*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 6241*dc5640d1SHerbert Xue deprecated="not deprecated"> 6242*dc5640d1SHerbert Xue </method> 6243*dc5640d1SHerbert Xue <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor" 6244*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6245*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 6246*dc5640d1SHerbert Xue deprecated="not deprecated"> 6247*dc5640d1SHerbert Xue </method> 6248*dc5640d1SHerbert Xue <doc> 6249*dc5640d1SHerbert Xue <![CDATA[Install this module to add guice-persist library support for JPA persistence 6250*dc5640d1SHerbert Xue providers. 6251*dc5640d1SHerbert Xue 6252*dc5640d1SHerbert Xue @author [email protected] (Dhanji R. Prasanna)]]> 6253*dc5640d1SHerbert Xue </doc> 6254*dc5640d1SHerbert Xue </class> 6255*dc5640d1SHerbert Xue <!-- end class com.google.inject.persist.PersistModule --> 6256*dc5640d1SHerbert Xue <!-- start interface com.google.inject.persist.PersistService --> 6257*dc5640d1SHerbert Xue <interface name="PersistService" abstract="true" 6258*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6259*dc5640d1SHerbert Xue deprecated="not deprecated"> 6260*dc5640d1SHerbert Xue <method name="start" 6261*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6262*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6263*dc5640d1SHerbert Xue deprecated="not deprecated"> 6264*dc5640d1SHerbert Xue <doc> 6265*dc5640d1SHerbert Xue <![CDATA[Starts the underlying persistence engine and makes guice-persist ready for 6266*dc5640d1SHerbert Xue use. For instance, with JPA, it creates an EntityManagerFactory and may 6267*dc5640d1SHerbert Xue open connection pools. This method must be called by your code prior to 6268*dc5640d1SHerbert Xue using any guice-persist or JPA artifacts. If already started, 6269*dc5640d1SHerbert Xue calling this method does nothing, if already stopped, it also does 6270*dc5640d1SHerbert Xue nothing.]]> 6271*dc5640d1SHerbert Xue </doc> 6272*dc5640d1SHerbert Xue </method> 6273*dc5640d1SHerbert Xue <method name="stop" 6274*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6275*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6276*dc5640d1SHerbert Xue deprecated="not deprecated"> 6277*dc5640d1SHerbert Xue <doc> 6278*dc5640d1SHerbert Xue <![CDATA[Stops the underlying persistence engine. For instance, with JPA, it 6279*dc5640d1SHerbert Xue closes the {@code EntityManagerFactory}. If already stopped, calling this 6280*dc5640d1SHerbert Xue method does nothing. If not yet started, it also does nothing.]]> 6281*dc5640d1SHerbert Xue </doc> 6282*dc5640d1SHerbert Xue </method> 6283*dc5640d1SHerbert Xue <doc> 6284*dc5640d1SHerbert Xue <![CDATA[Persistence provider service. Use this to manage the overall 6285*dc5640d1SHerbert Xue startup and stop of the persistence module(s). 6286*dc5640d1SHerbert Xue 6287*dc5640d1SHerbert Xue TODO(dhanji): Integrate with Service API when appropriate. 6288*dc5640d1SHerbert Xue 6289*dc5640d1SHerbert Xue @author [email protected] (Dhanji R. Prasanna)]]> 6290*dc5640d1SHerbert Xue </doc> 6291*dc5640d1SHerbert Xue </interface> 6292*dc5640d1SHerbert Xue <!-- end interface com.google.inject.persist.PersistService --> 6293*dc5640d1SHerbert Xue <!-- start class com.google.inject.persist.Transactional --> 6294*dc5640d1SHerbert Xue <class name="Transactional" abstract="true" 6295*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6296*dc5640d1SHerbert Xue deprecated="not deprecated"> 6297*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 6298*dc5640d1SHerbert Xue <doc> 6299*dc5640d1SHerbert Xue <![CDATA[<p> Any method or class marked with this annotation will be considered for transactionality. 6300*dc5640d1SHerbert Xue Consult the documentation on http://code.google.com/p/google-guice for detailed semantics. 6301*dc5640d1SHerbert Xue Marking a method {@code @Transactional} will start a new transaction before the method 6302*dc5640d1SHerbert Xue executes and commit it after the method returns. 6303*dc5640d1SHerbert Xue <p> 6304*dc5640d1SHerbert Xue If the method throws an exception, the transaction will be rolled back <em>unless</em> 6305*dc5640d1SHerbert Xue you have specifically requested not to in the {@link #ignore()} clause. 6306*dc5640d1SHerbert Xue <p> 6307*dc5640d1SHerbert Xue Similarly, the set of exceptions that will trigger a rollback can be defined in 6308*dc5640d1SHerbert Xue the {@link #rollbackOn()} clause. By default, only unchecked exceptions trigger a 6309*dc5640d1SHerbert Xue rollback. 6310*dc5640d1SHerbert Xue 6311*dc5640d1SHerbert Xue @author Dhanji R. Prasanna ([email protected])]]> 6312*dc5640d1SHerbert Xue </doc> 6313*dc5640d1SHerbert Xue </class> 6314*dc5640d1SHerbert Xue <!-- end class com.google.inject.persist.Transactional --> 6315*dc5640d1SHerbert Xue <!-- start interface com.google.inject.persist.UnitOfWork --> 6316*dc5640d1SHerbert Xue <interface name="UnitOfWork" abstract="true" 6317*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6318*dc5640d1SHerbert Xue deprecated="not deprecated"> 6319*dc5640d1SHerbert Xue <method name="begin" 6320*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6321*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6322*dc5640d1SHerbert Xue deprecated="not deprecated"> 6323*dc5640d1SHerbert Xue <doc> 6324*dc5640d1SHerbert Xue <![CDATA[Starts a Unit Of Work. Underneath, causes a session to the data layer to be opened. If there 6325*dc5640d1SHerbert Xue is already one open, the invocation will do nothing. In this way, you can define arbitrary 6326*dc5640d1SHerbert Xue units-of-work that nest within one another safely. 6327*dc5640d1SHerbert Xue 6328*dc5640d1SHerbert Xue Transaction semantics are not affected.]]> 6329*dc5640d1SHerbert Xue </doc> 6330*dc5640d1SHerbert Xue </method> 6331*dc5640d1SHerbert Xue <method name="end" 6332*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6333*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6334*dc5640d1SHerbert Xue deprecated="not deprecated"> 6335*dc5640d1SHerbert Xue <doc> 6336*dc5640d1SHerbert Xue <![CDATA[Declares an end to the current Unit of Work. Underneath, causes any open session to the data 6337*dc5640d1SHerbert Xue layer to close. If there is no Unit of work open, then the call returns silently. You can 6338*dc5640d1SHerbert Xue safely invoke end() repeatedly. 6339*dc5640d1SHerbert Xue <p> 6340*dc5640d1SHerbert Xue Transaction semantics are not affected.]]> 6341*dc5640d1SHerbert Xue </doc> 6342*dc5640d1SHerbert Xue </method> 6343*dc5640d1SHerbert Xue <doc> 6344*dc5640d1SHerbert Xue <![CDATA[This interface is used to gain manual control over the unit of work. This is mostly to do 6345*dc5640d1SHerbert Xue work in non-request, non-transactional threads. Or where more fine-grained control over the unit 6346*dc5640d1SHerbert Xue of work is required. Starting and ending a unit of work directly corresponds to opening and 6347*dc5640d1SHerbert Xue closing a {@code Session}, {@code EntityManager} or {@code ObjectContainer} respectively. 6348*dc5640d1SHerbert Xue <p> The 6349*dc5640d1SHerbert Xue Unit of Work referred to by UnitOfWork will always be local to the calling thread. Be careful to 6350*dc5640d1SHerbert Xue end() in a finally block. Neither JPA, nor Hibernate supports threadsafe sessions (reasoning 6351*dc5640d1SHerbert Xue behind thread-locality of Unit of Work semantics). 6352*dc5640d1SHerbert Xue 6353*dc5640d1SHerbert Xue <ul> 6354*dc5640d1SHerbert Xue <li>Using UnitOfWork with the PersistFilter inside a request is not recommended.</li> 6355*dc5640d1SHerbert Xue <li>Using UnitOfWork with session-per-txn strategy is not terribly clever either.</li> 6356*dc5640d1SHerbert Xue <li>Using UnitOfWork with session-per-request strategy but *outside* a request (i.e. in a 6357*dc5640d1SHerbert Xue background or bootstrap thread) is probably a good use case.</li> 6358*dc5640d1SHerbert Xue </ul> 6359*dc5640d1SHerbert Xue 6360*dc5640d1SHerbert Xue @author Dhanji R. Prasanna (dhanji@gmail com)]]> 6361*dc5640d1SHerbert Xue </doc> 6362*dc5640d1SHerbert Xue </interface> 6363*dc5640d1SHerbert Xue <!-- end interface com.google.inject.persist.UnitOfWork --> 6364*dc5640d1SHerbert Xue</package> 6365*dc5640d1SHerbert Xue<package name="com.google.inject.persist.finder"> 6366*dc5640d1SHerbert Xue <!-- start class com.google.inject.persist.finder.DynamicFinder --> 6367*dc5640d1SHerbert Xue <class name="DynamicFinder" extends="java.lang.Object" 6368*dc5640d1SHerbert Xue abstract="false" 6369*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 6370*dc5640d1SHerbert Xue deprecated="not deprecated"> 6371*dc5640d1SHerbert Xue <constructor name="DynamicFinder" type="java.lang.reflect.Method" 6372*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6373*dc5640d1SHerbert Xue deprecated="not deprecated"> 6374*dc5640d1SHerbert Xue </constructor> 6375*dc5640d1SHerbert Xue <method name="from" return="com.google.inject.persist.finder.DynamicFinder" 6376*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6377*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6378*dc5640d1SHerbert Xue deprecated="not deprecated"> 6379*dc5640d1SHerbert Xue <param name="method" type="java.lang.reflect.Method"/> 6380*dc5640d1SHerbert Xue <doc> 6381*dc5640d1SHerbert Xue <![CDATA[Returns some metadata if the method is annotated {@code @Finder} or null. 6382*dc5640d1SHerbert Xue 6383*dc5640d1SHerbert Xue @param method a method you want to test as a dynamic finder]]> 6384*dc5640d1SHerbert Xue </doc> 6385*dc5640d1SHerbert Xue </method> 6386*dc5640d1SHerbert Xue <method name="metadata" return="com.google.inject.persist.finder.Finder" 6387*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6388*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6389*dc5640d1SHerbert Xue deprecated="not deprecated"> 6390*dc5640d1SHerbert Xue </method> 6391*dc5640d1SHerbert Xue <doc> 6392*dc5640d1SHerbert Xue <![CDATA[Utility that helps you introspect dynamic finder methods. 6393*dc5640d1SHerbert Xue 6394*dc5640d1SHerbert Xue @author [email protected] (Dhanji R. Prasanna)]]> 6395*dc5640d1SHerbert Xue </doc> 6396*dc5640d1SHerbert Xue </class> 6397*dc5640d1SHerbert Xue <!-- end class com.google.inject.persist.finder.DynamicFinder --> 6398*dc5640d1SHerbert Xue <!-- start class com.google.inject.persist.finder.Finder --> 6399*dc5640d1SHerbert Xue <class name="Finder" abstract="true" 6400*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6401*dc5640d1SHerbert Xue deprecated="not deprecated"> 6402*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 6403*dc5640d1SHerbert Xue <doc> 6404*dc5640d1SHerbert Xue <![CDATA[Marks a method stub as a dynamic finder. The method is intercepted and replaced with the 6405*dc5640d1SHerbert Xue specified JPAQL query. Provides result auto-boxing and automatic parameter binding. 6406*dc5640d1SHerbert Xue 6407*dc5640d1SHerbert Xue @author Dhanji R. Prasanna ([email protected])]]> 6408*dc5640d1SHerbert Xue </doc> 6409*dc5640d1SHerbert Xue </class> 6410*dc5640d1SHerbert Xue <!-- end class com.google.inject.persist.finder.Finder --> 6411*dc5640d1SHerbert Xue <!-- start class com.google.inject.persist.finder.FirstResult --> 6412*dc5640d1SHerbert Xue <class name="FirstResult" abstract="true" 6413*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6414*dc5640d1SHerbert Xue deprecated="not deprecated"> 6415*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 6416*dc5640d1SHerbert Xue <doc> 6417*dc5640d1SHerbert Xue <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in 6418*dc5640d1SHerbert Xue the index of the first result in the result set you are interested in. 6419*dc5640d1SHerbert Xue Useful for paging result sets. Complemented by {@link MaxResults}. 6420*dc5640d1SHerbert Xue 6421*dc5640d1SHerbert Xue @author Dhanji R. Prasanna ([email protected])]]> 6422*dc5640d1SHerbert Xue </doc> 6423*dc5640d1SHerbert Xue </class> 6424*dc5640d1SHerbert Xue <!-- end class com.google.inject.persist.finder.FirstResult --> 6425*dc5640d1SHerbert Xue <!-- start class com.google.inject.persist.finder.MaxResults --> 6426*dc5640d1SHerbert Xue <class name="MaxResults" abstract="true" 6427*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6428*dc5640d1SHerbert Xue deprecated="not deprecated"> 6429*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 6430*dc5640d1SHerbert Xue <doc> 6431*dc5640d1SHerbert Xue <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in 6432*dc5640d1SHerbert Xue the maximum size of returned result window. Usefule for paging result sets. 6433*dc5640d1SHerbert Xue Complement of {@link FirstResult}. 6434*dc5640d1SHerbert Xue 6435*dc5640d1SHerbert Xue @author Dhanji R. Prasanna ([email protected])]]> 6436*dc5640d1SHerbert Xue </doc> 6437*dc5640d1SHerbert Xue </class> 6438*dc5640d1SHerbert Xue <!-- end class com.google.inject.persist.finder.MaxResults --> 6439*dc5640d1SHerbert Xue</package> 6440*dc5640d1SHerbert Xue<package name="com.google.inject.persist.jpa"> 6441*dc5640d1SHerbert Xue <!-- start class com.google.inject.persist.jpa.JpaPersistModule --> 6442*dc5640d1SHerbert Xue <class name="JpaPersistModule" extends="com.google.inject.persist.PersistModule" 6443*dc5640d1SHerbert Xue abstract="false" 6444*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 6445*dc5640d1SHerbert Xue deprecated="not deprecated"> 6446*dc5640d1SHerbert Xue <constructor name="JpaPersistModule" type="java.lang.String" 6447*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6448*dc5640d1SHerbert Xue deprecated="not deprecated"> 6449*dc5640d1SHerbert Xue </constructor> 6450*dc5640d1SHerbert Xue <method name="configurePersistence" 6451*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6452*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 6453*dc5640d1SHerbert Xue deprecated="not deprecated"> 6454*dc5640d1SHerbert Xue </method> 6455*dc5640d1SHerbert Xue <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor" 6456*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6457*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 6458*dc5640d1SHerbert Xue deprecated="not deprecated"> 6459*dc5640d1SHerbert Xue </method> 6460*dc5640d1SHerbert Xue <method name="properties" return="com.google.inject.persist.jpa.JpaPersistModule" 6461*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6462*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6463*dc5640d1SHerbert Xue deprecated="not deprecated"> 6464*dc5640d1SHerbert Xue <param name="properties" type="java.util.Properties"/> 6465*dc5640d1SHerbert Xue <doc> 6466*dc5640d1SHerbert Xue <![CDATA[Configures the JPA persistence provider with a set of properties. 6467*dc5640d1SHerbert Xue 6468*dc5640d1SHerbert Xue @param properties A set of name value pairs that configure a JPA persistence 6469*dc5640d1SHerbert Xue provider as per the specification.]]> 6470*dc5640d1SHerbert Xue </doc> 6471*dc5640d1SHerbert Xue </method> 6472*dc5640d1SHerbert Xue <method name="addFinder" return="com.google.inject.persist.jpa.JpaPersistModule" 6473*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6474*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6475*dc5640d1SHerbert Xue deprecated="not deprecated"> 6476*dc5640d1SHerbert Xue <param name="iface" type="java.lang.Class<T>"/> 6477*dc5640d1SHerbert Xue <doc> 6478*dc5640d1SHerbert Xue <![CDATA[Adds an interface to this module to use as a dynamic finder. 6479*dc5640d1SHerbert Xue 6480*dc5640d1SHerbert Xue @param iface Any interface type whose methods are all dynamic finders.]]> 6481*dc5640d1SHerbert Xue </doc> 6482*dc5640d1SHerbert Xue </method> 6483*dc5640d1SHerbert Xue <doc> 6484*dc5640d1SHerbert Xue <![CDATA[JPA provider for guice persist. 6485*dc5640d1SHerbert Xue 6486*dc5640d1SHerbert Xue @author [email protected] (Dhanji R. Prasanna)]]> 6487*dc5640d1SHerbert Xue </doc> 6488*dc5640d1SHerbert Xue </class> 6489*dc5640d1SHerbert Xue <!-- end class com.google.inject.persist.jpa.JpaPersistModule --> 6490*dc5640d1SHerbert Xue</package> 6491*dc5640d1SHerbert Xue<package name="com.google.inject.servlet"> 6492*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.GuiceFilter --> 6493*dc5640d1SHerbert Xue <class name="GuiceFilter" extends="java.lang.Object" 6494*dc5640d1SHerbert Xue abstract="false" 6495*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6496*dc5640d1SHerbert Xue deprecated="not deprecated"> 6497*dc5640d1SHerbert Xue <constructor name="GuiceFilter" 6498*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6499*dc5640d1SHerbert Xue deprecated="not deprecated"> 6500*dc5640d1SHerbert Xue </constructor> 6501*dc5640d1SHerbert Xue <method name="doFilter" 6502*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6503*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6504*dc5640d1SHerbert Xue deprecated="not deprecated"> 6505*dc5640d1SHerbert Xue <param name="servletRequest" type="ServletRequest"/> 6506*dc5640d1SHerbert Xue <param name="servletResponse" type="ServletResponse"/> 6507*dc5640d1SHerbert Xue <param name="filterChain" type="FilterChain"/> 6508*dc5640d1SHerbert Xue <exception name="IOException" type="java.io.IOException"/> 6509*dc5640d1SHerbert Xue <exception name="ServletException" type="ServletException"/> 6510*dc5640d1SHerbert Xue </method> 6511*dc5640d1SHerbert Xue <method name="init" 6512*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6513*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6514*dc5640d1SHerbert Xue deprecated="not deprecated"> 6515*dc5640d1SHerbert Xue <param name="filterConfig" type="FilterConfig"/> 6516*dc5640d1SHerbert Xue <exception name="ServletException" type="ServletException"/> 6517*dc5640d1SHerbert Xue </method> 6518*dc5640d1SHerbert Xue <method name="destroy" 6519*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6520*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6521*dc5640d1SHerbert Xue deprecated="not deprecated"> 6522*dc5640d1SHerbert Xue </method> 6523*dc5640d1SHerbert Xue <doc> 6524*dc5640d1SHerbert Xue <![CDATA[<p> 6525*dc5640d1SHerbert Xue Apply this filter in web.xml above all other filters (typically), to all requests where you plan 6526*dc5640d1SHerbert Xue to use servlet scopes. This is also needed in order to dispatch requests to injectable filters 6527*dc5640d1SHerbert Xue and servlets: 6528*dc5640d1SHerbert Xue <pre> 6529*dc5640d1SHerbert Xue <filter> 6530*dc5640d1SHerbert Xue <filter-name>guiceFilter</filter-name> 6531*dc5640d1SHerbert Xue <filter-class><b>com.google.inject.servlet.GuiceFilter</b></filter-class> 6532*dc5640d1SHerbert Xue </filter> 6533*dc5640d1SHerbert Xue 6534*dc5640d1SHerbert Xue <filter-mapping> 6535*dc5640d1SHerbert Xue <filter-name>guiceFilter</filter-name> 6536*dc5640d1SHerbert Xue <url-pattern>/*</url-pattern> 6537*dc5640d1SHerbert Xue </filter-mapping> 6538*dc5640d1SHerbert Xue </pre> 6539*dc5640d1SHerbert Xue 6540*dc5640d1SHerbert Xue This filter must appear before every filter that makes use of Guice injection or servlet 6541*dc5640d1SHerbert Xue scopes functionality. Typically, you will only register this filter in web.xml and register 6542*dc5640d1SHerbert Xue any other filters (and servlets) using a {@link ServletModule}. 6543*dc5640d1SHerbert Xue 6544*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 6545*dc5640d1SHerbert Xue @author [email protected] (Dhanji R. Prasanna)]]> 6546*dc5640d1SHerbert Xue </doc> 6547*dc5640d1SHerbert Xue </class> 6548*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.GuiceFilter --> 6549*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.GuiceServletContextListener --> 6550*dc5640d1SHerbert Xue <class name="GuiceServletContextListener" extends="java.lang.Object" 6551*dc5640d1SHerbert Xue abstract="true" 6552*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6553*dc5640d1SHerbert Xue deprecated="not deprecated"> 6554*dc5640d1SHerbert Xue <constructor name="GuiceServletContextListener" 6555*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6556*dc5640d1SHerbert Xue deprecated="not deprecated"> 6557*dc5640d1SHerbert Xue </constructor> 6558*dc5640d1SHerbert Xue <method name="contextInitialized" 6559*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6560*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6561*dc5640d1SHerbert Xue deprecated="not deprecated"> 6562*dc5640d1SHerbert Xue <param name="servletContextEvent" type="ServletContextEvent"/> 6563*dc5640d1SHerbert Xue </method> 6564*dc5640d1SHerbert Xue <method name="contextDestroyed" 6565*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6566*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6567*dc5640d1SHerbert Xue deprecated="not deprecated"> 6568*dc5640d1SHerbert Xue <param name="servletContextEvent" type="ServletContextEvent"/> 6569*dc5640d1SHerbert Xue </method> 6570*dc5640d1SHerbert Xue <method name="getInjector" return="com.google.inject.Injector" 6571*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6572*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 6573*dc5640d1SHerbert Xue deprecated="not deprecated"> 6574*dc5640d1SHerbert Xue <doc> 6575*dc5640d1SHerbert Xue <![CDATA[Override this method to create (or otherwise obtain a reference to) your 6576*dc5640d1SHerbert Xue injector.]]> 6577*dc5640d1SHerbert Xue </doc> 6578*dc5640d1SHerbert Xue </method> 6579*dc5640d1SHerbert Xue <doc> 6580*dc5640d1SHerbert Xue <![CDATA[As of Guice 2.0 you can still use (your subclasses of) {@code GuiceServletContextListener} 6581*dc5640d1SHerbert Xue class as a logical place to create and configure your injector. This will ensure the injector 6582*dc5640d1SHerbert Xue is created when the web application is deployed. 6583*dc5640d1SHerbert Xue 6584*dc5640d1SHerbert Xue @author Kevin Bourrillion ([email protected]) 6585*dc5640d1SHerbert Xue @since 2.0]]> 6586*dc5640d1SHerbert Xue </doc> 6587*dc5640d1SHerbert Xue </class> 6588*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.GuiceServletContextListener --> 6589*dc5640d1SHerbert Xue <!-- start interface com.google.inject.servlet.InstanceFilterBinding --> 6590*dc5640d1SHerbert Xue <interface name="InstanceFilterBinding" abstract="true" 6591*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6592*dc5640d1SHerbert Xue deprecated="not deprecated"> 6593*dc5640d1SHerbert Xue <implements name="com.google.inject.servlet.ServletModuleBinding"/> 6594*dc5640d1SHerbert Xue <method name="getFilterInstance" return="Filter" 6595*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6596*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6597*dc5640d1SHerbert Xue deprecated="not deprecated"> 6598*dc5640d1SHerbert Xue <doc> 6599*dc5640d1SHerbert Xue <![CDATA[Returns the filter instance that will be used.]]> 6600*dc5640d1SHerbert Xue </doc> 6601*dc5640d1SHerbert Xue </method> 6602*dc5640d1SHerbert Xue <doc> 6603*dc5640d1SHerbert Xue <![CDATA[A binding to a single instance of a filter. 6604*dc5640d1SHerbert Xue 6605*dc5640d1SHerbert Xue @author [email protected] 6606*dc5640d1SHerbert Xue @since 3.0]]> 6607*dc5640d1SHerbert Xue </doc> 6608*dc5640d1SHerbert Xue </interface> 6609*dc5640d1SHerbert Xue <!-- end interface com.google.inject.servlet.InstanceFilterBinding --> 6610*dc5640d1SHerbert Xue <!-- start interface com.google.inject.servlet.InstanceServletBinding --> 6611*dc5640d1SHerbert Xue <interface name="InstanceServletBinding" abstract="true" 6612*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6613*dc5640d1SHerbert Xue deprecated="not deprecated"> 6614*dc5640d1SHerbert Xue <implements name="com.google.inject.servlet.ServletModuleBinding"/> 6615*dc5640d1SHerbert Xue <method name="getServletInstance" return="HttpServlet" 6616*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6617*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6618*dc5640d1SHerbert Xue deprecated="not deprecated"> 6619*dc5640d1SHerbert Xue <doc> 6620*dc5640d1SHerbert Xue <![CDATA[Returns the servlet instance that will be used.]]> 6621*dc5640d1SHerbert Xue </doc> 6622*dc5640d1SHerbert Xue </method> 6623*dc5640d1SHerbert Xue <doc> 6624*dc5640d1SHerbert Xue <![CDATA[A binding to a single instance of a servlet. 6625*dc5640d1SHerbert Xue 6626*dc5640d1SHerbert Xue @author [email protected] 6627*dc5640d1SHerbert Xue @since 3.0]]> 6628*dc5640d1SHerbert Xue </doc> 6629*dc5640d1SHerbert Xue </interface> 6630*dc5640d1SHerbert Xue <!-- end interface com.google.inject.servlet.InstanceServletBinding --> 6631*dc5640d1SHerbert Xue <!-- start interface com.google.inject.servlet.LinkedFilterBinding --> 6632*dc5640d1SHerbert Xue <interface name="LinkedFilterBinding" abstract="true" 6633*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6634*dc5640d1SHerbert Xue deprecated="not deprecated"> 6635*dc5640d1SHerbert Xue <implements name="com.google.inject.servlet.ServletModuleBinding"/> 6636*dc5640d1SHerbert Xue <method name="getLinkedKey" return="com.google.inject.Key<? extends Filter>" 6637*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6638*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6639*dc5640d1SHerbert Xue deprecated="not deprecated"> 6640*dc5640d1SHerbert Xue <doc> 6641*dc5640d1SHerbert Xue <![CDATA[Returns the key used to lookup the filter instance.]]> 6642*dc5640d1SHerbert Xue </doc> 6643*dc5640d1SHerbert Xue </method> 6644*dc5640d1SHerbert Xue <doc> 6645*dc5640d1SHerbert Xue <![CDATA[A linked binding to a filter. 6646*dc5640d1SHerbert Xue 6647*dc5640d1SHerbert Xue @author [email protected] 6648*dc5640d1SHerbert Xue @since 3.0]]> 6649*dc5640d1SHerbert Xue </doc> 6650*dc5640d1SHerbert Xue </interface> 6651*dc5640d1SHerbert Xue <!-- end interface com.google.inject.servlet.LinkedFilterBinding --> 6652*dc5640d1SHerbert Xue <!-- start interface com.google.inject.servlet.LinkedServletBinding --> 6653*dc5640d1SHerbert Xue <interface name="LinkedServletBinding" abstract="true" 6654*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6655*dc5640d1SHerbert Xue deprecated="not deprecated"> 6656*dc5640d1SHerbert Xue <implements name="com.google.inject.servlet.ServletModuleBinding"/> 6657*dc5640d1SHerbert Xue <method name="getLinkedKey" return="com.google.inject.Key<? extends HttpServlet>" 6658*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6659*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6660*dc5640d1SHerbert Xue deprecated="not deprecated"> 6661*dc5640d1SHerbert Xue <doc> 6662*dc5640d1SHerbert Xue <![CDATA[Returns the key used to lookup the servlet instance.]]> 6663*dc5640d1SHerbert Xue </doc> 6664*dc5640d1SHerbert Xue </method> 6665*dc5640d1SHerbert Xue <doc> 6666*dc5640d1SHerbert Xue <![CDATA[A linked binding to a servlet. 6667*dc5640d1SHerbert Xue 6668*dc5640d1SHerbert Xue @author [email protected] 6669*dc5640d1SHerbert Xue @since 3.0]]> 6670*dc5640d1SHerbert Xue </doc> 6671*dc5640d1SHerbert Xue </interface> 6672*dc5640d1SHerbert Xue <!-- end interface com.google.inject.servlet.LinkedServletBinding --> 6673*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.RequestParameters --> 6674*dc5640d1SHerbert Xue <class name="RequestParameters" abstract="true" 6675*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6676*dc5640d1SHerbert Xue deprecated="not deprecated"> 6677*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 6678*dc5640d1SHerbert Xue <doc> 6679*dc5640d1SHerbert Xue <![CDATA[Apply this to field or parameters of type {@code Map<String, String[]>} 6680*dc5640d1SHerbert Xue when you want the HTTP request parameter map to be injected. 6681*dc5640d1SHerbert Xue 6682*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 6683*dc5640d1SHerbert Xue </doc> 6684*dc5640d1SHerbert Xue </class> 6685*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.RequestParameters --> 6686*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.RequestScoped --> 6687*dc5640d1SHerbert Xue <class name="RequestScoped" abstract="true" 6688*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6689*dc5640d1SHerbert Xue deprecated="not deprecated"> 6690*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 6691*dc5640d1SHerbert Xue <doc> 6692*dc5640d1SHerbert Xue <![CDATA[Apply this to implementation classes when you want one instance per request. 6693*dc5640d1SHerbert Xue 6694*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 6695*dc5640d1SHerbert Xue </doc> 6696*dc5640d1SHerbert Xue </class> 6697*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.RequestScoped --> 6698*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.ServletModule --> 6699*dc5640d1SHerbert Xue <class name="ServletModule" extends="com.google.inject.AbstractModule" 6700*dc5640d1SHerbert Xue abstract="false" 6701*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6702*dc5640d1SHerbert Xue deprecated="not deprecated"> 6703*dc5640d1SHerbert Xue <constructor name="ServletModule" 6704*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6705*dc5640d1SHerbert Xue deprecated="not deprecated"> 6706*dc5640d1SHerbert Xue </constructor> 6707*dc5640d1SHerbert Xue <method name="configure" 6708*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6709*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 6710*dc5640d1SHerbert Xue deprecated="not deprecated"> 6711*dc5640d1SHerbert Xue </method> 6712*dc5640d1SHerbert Xue <method name="configureServlets" 6713*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6714*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 6715*dc5640d1SHerbert Xue deprecated="not deprecated"> 6716*dc5640d1SHerbert Xue <doc> 6717*dc5640d1SHerbert Xue <![CDATA[<h3>Servlet Mapping EDSL</h3> 6718*dc5640d1SHerbert Xue 6719*dc5640d1SHerbert Xue <p> Part of the EDSL builder language for configuring servlets 6720*dc5640d1SHerbert Xue and filters with guice-servlet. Think of this as an in-code replacement for web.xml. 6721*dc5640d1SHerbert Xue Filters and servlets are configured here using simple java method calls. Here is a typical 6722*dc5640d1SHerbert Xue example of registering a filter when creating your Guice injector: 6723*dc5640d1SHerbert Xue 6724*dc5640d1SHerbert Xue <pre> 6725*dc5640d1SHerbert Xue Guice.createInjector(..., new ServletModule() { 6726*dc5640d1SHerbert Xue 6727*dc5640d1SHerbert Xue {@literal @}Override 6728*dc5640d1SHerbert Xue protected void configureServlets() { 6729*dc5640d1SHerbert Xue <b>serve("*.html").with(MyServlet.class)</b> 6730*dc5640d1SHerbert Xue } 6731*dc5640d1SHerbert Xue } 6732*dc5640d1SHerbert Xue </pre> 6733*dc5640d1SHerbert Xue 6734*dc5640d1SHerbert Xue This registers a servlet (subclass of {@code HttpServlet}) called {@code MyServlet} to service 6735*dc5640d1SHerbert Xue any web pages ending in {@code .html}. You can also use a path-style syntax to register 6736*dc5640d1SHerbert Xue servlets: 6737*dc5640d1SHerbert Xue 6738*dc5640d1SHerbert Xue <pre> 6739*dc5640d1SHerbert Xue <b>serve("/my/*").with(MyServlet.class)</b> 6740*dc5640d1SHerbert Xue </pre> 6741*dc5640d1SHerbert Xue 6742*dc5640d1SHerbert Xue Every servlet (or filter) is required to be a singleton. If you cannot annotate the class 6743*dc5640d1SHerbert Xue directly, you should add a separate {@code bind(..).in(Singleton.class)} rule elsewhere in 6744*dc5640d1SHerbert Xue your module. Mapping a servlet that is bound under any other scope is an error. 6745*dc5640d1SHerbert Xue 6746*dc5640d1SHerbert Xue <p> 6747*dc5640d1SHerbert Xue <h4>Dispatch Order</h4> 6748*dc5640d1SHerbert Xue You are free to register as many servlets and filters as you like this way. They will 6749*dc5640d1SHerbert Xue be compared and dispatched in the order in which the filter methods are called: 6750*dc5640d1SHerbert Xue 6751*dc5640d1SHerbert Xue <pre> 6752*dc5640d1SHerbert Xue 6753*dc5640d1SHerbert Xue Guice.createInjector(..., new ServletModule() { 6754*dc5640d1SHerbert Xue 6755*dc5640d1SHerbert Xue {@literal @}Override 6756*dc5640d1SHerbert Xue protected void configureServlets() { 6757*dc5640d1SHerbert Xue filter("/*").through(MyFilter.class); 6758*dc5640d1SHerbert Xue filter("*.css").through(MyCssFilter.class); 6759*dc5640d1SHerbert Xue filter("*.jpg").through(new MyJpgFilter()); 6760*dc5640d1SHerbert Xue // etc.. 6761*dc5640d1SHerbert Xue 6762*dc5640d1SHerbert Xue serve("*.html").with(MyServlet.class); 6763*dc5640d1SHerbert Xue serve("/my/*").with(MyServlet.class); 6764*dc5640d1SHerbert Xue serve("*.jpg").with(new MyServlet()); 6765*dc5640d1SHerbert Xue // etc.. 6766*dc5640d1SHerbert Xue } 6767*dc5640d1SHerbert Xue } 6768*dc5640d1SHerbert Xue </pre> 6769*dc5640d1SHerbert Xue This will traverse down the list of rules in lexical order. For example, a url 6770*dc5640d1SHerbert Xue "{@code /my/file.js}" (after it runs through the matching filters) will first 6771*dc5640d1SHerbert Xue be compared against the servlet mapping: 6772*dc5640d1SHerbert Xue 6773*dc5640d1SHerbert Xue <pre> 6774*dc5640d1SHerbert Xue serve("*.html").with(MyServlet.class); 6775*dc5640d1SHerbert Xue </pre> 6776*dc5640d1SHerbert Xue And failing that, it will descend to the next servlet mapping: 6777*dc5640d1SHerbert Xue 6778*dc5640d1SHerbert Xue <pre> 6779*dc5640d1SHerbert Xue serve("/my/*").with(MyServlet.class); 6780*dc5640d1SHerbert Xue </pre> 6781*dc5640d1SHerbert Xue 6782*dc5640d1SHerbert Xue Since this rule matches, Guice Servlet will dispatch to {@code MyServlet}. These 6783*dc5640d1SHerbert Xue two mapping rules can also be written in more compact form using varargs syntax: 6784*dc5640d1SHerbert Xue 6785*dc5640d1SHerbert Xue <pre> 6786*dc5640d1SHerbert Xue serve(<b>"*.html", "/my/*"</b>).with(MyServlet.class); 6787*dc5640d1SHerbert Xue </pre> 6788*dc5640d1SHerbert Xue 6789*dc5640d1SHerbert Xue This way you can map several URI patterns to the same servlet. A similar syntax is 6790*dc5640d1SHerbert Xue also available for filter mappings. 6791*dc5640d1SHerbert Xue 6792*dc5640d1SHerbert Xue <p> 6793*dc5640d1SHerbert Xue <h4>Regular Expressions</h4> 6794*dc5640d1SHerbert Xue You can also map servlets (or filters) to URIs using regular expressions: 6795*dc5640d1SHerbert Xue <pre> 6796*dc5640d1SHerbert Xue <b>serveRegex("(.)*ajax(.)*").with(MyAjaxServlet.class)</b> 6797*dc5640d1SHerbert Xue </pre> 6798*dc5640d1SHerbert Xue 6799*dc5640d1SHerbert Xue This will map any URI containing the text "ajax" in it to {@code MyAjaxServlet}. Such as: 6800*dc5640d1SHerbert Xue <ul> 6801*dc5640d1SHerbert Xue <li>http://www.google.com/ajax.html</li> 6802*dc5640d1SHerbert Xue <li>http://www.google.com/content/ajax/index</li> 6803*dc5640d1SHerbert Xue <li>http://www.google.com/it/is_totally_ajaxian</li> 6804*dc5640d1SHerbert Xue </ul> 6805*dc5640d1SHerbert Xue 6806*dc5640d1SHerbert Xue 6807*dc5640d1SHerbert Xue <h3>Initialization Parameters</h3> 6808*dc5640d1SHerbert Xue 6809*dc5640d1SHerbert Xue Servlets (and filters) allow you to pass in init params 6810*dc5640d1SHerbert Xue using the {@code <init-param>} tag in web.xml. You can similarly pass in parameters to 6811*dc5640d1SHerbert Xue Servlets and filters registered in Guice-servlet using a {@link java.util.Map} of parameter 6812*dc5640d1SHerbert Xue name/value pairs. For example, to initialize {@code MyServlet} with two parameters 6813*dc5640d1SHerbert Xue ({@code name="Dhanji", site="google.com"}) you could write: 6814*dc5640d1SHerbert Xue 6815*dc5640d1SHerbert Xue <pre> 6816*dc5640d1SHerbert Xue Map<String, String> params = new HashMap<String, String>(); 6817*dc5640d1SHerbert Xue params.put("name", "Dhanji"); 6818*dc5640d1SHerbert Xue params.put("site", "google.com"); 6819*dc5640d1SHerbert Xue 6820*dc5640d1SHerbert Xue ... 6821*dc5640d1SHerbert Xue serve("/*").with(MyServlet.class, <b>params</b>) 6822*dc5640d1SHerbert Xue </pre> 6823*dc5640d1SHerbert Xue 6824*dc5640d1SHerbert Xue <p> 6825*dc5640d1SHerbert Xue <h3>Binding Keys</h3> 6826*dc5640d1SHerbert Xue 6827*dc5640d1SHerbert Xue You can also bind keys rather than classes. This lets you hide 6828*dc5640d1SHerbert Xue implementations with package-local visbility and expose them using 6829*dc5640d1SHerbert Xue only a Guice module and an annotation: 6830*dc5640d1SHerbert Xue 6831*dc5640d1SHerbert Xue <pre> 6832*dc5640d1SHerbert Xue ... 6833*dc5640d1SHerbert Xue filter("/*").through(<b>Key.get(Filter.class, Fave.class)</b>); 6834*dc5640d1SHerbert Xue </pre> 6835*dc5640d1SHerbert Xue 6836*dc5640d1SHerbert Xue Where {@code Filter.class} refers to the Servlet API interface and {@code Fave.class} is a 6837*dc5640d1SHerbert Xue custom binding annotation. Elsewhere (in one of your own modules) you can bind this 6838*dc5640d1SHerbert Xue filter's implementation: 6839*dc5640d1SHerbert Xue 6840*dc5640d1SHerbert Xue <pre> 6841*dc5640d1SHerbert Xue bind(Filter.class)<b>.annotatedWith(Fave.class)</b>.to(MyFilterImpl.class); 6842*dc5640d1SHerbert Xue </pre> 6843*dc5640d1SHerbert Xue 6844*dc5640d1SHerbert Xue See {@link com.google.inject.Binder} for more information on binding syntax. 6845*dc5640d1SHerbert Xue 6846*dc5640d1SHerbert Xue <p> 6847*dc5640d1SHerbert Xue <h3>Multiple Modules</h3> 6848*dc5640d1SHerbert Xue 6849*dc5640d1SHerbert Xue It is sometimes useful to capture servlet and filter mappings from multiple different 6850*dc5640d1SHerbert Xue modules. This is essential if you want to package and offer drop-in Guice plugins that 6851*dc5640d1SHerbert Xue provide servlet functionality. 6852*dc5640d1SHerbert Xue 6853*dc5640d1SHerbert Xue <p> 6854*dc5640d1SHerbert Xue Guice Servlet allows you to register several instances of {@code ServletModule} to your 6855*dc5640d1SHerbert Xue injector. The order in which these modules are installed determines the dispatch order 6856*dc5640d1SHerbert Xue of filters and the precedence order of servlets. For example, if you had two servlet modules, 6857*dc5640d1SHerbert Xue {@code RpcModule} and {@code WebServiceModule} and they each contained a filter that mapped 6858*dc5640d1SHerbert Xue to the same URI pattern, {@code "/*"}: 6859*dc5640d1SHerbert Xue 6860*dc5640d1SHerbert Xue <p> 6861*dc5640d1SHerbert Xue In {@code RpcModule}: 6862*dc5640d1SHerbert Xue <pre> 6863*dc5640d1SHerbert Xue filter("/*").through(RpcFilter.class); 6864*dc5640d1SHerbert Xue </pre> 6865*dc5640d1SHerbert Xue 6866*dc5640d1SHerbert Xue In {@code WebServiceModule}: 6867*dc5640d1SHerbert Xue <pre> 6868*dc5640d1SHerbert Xue filter("/*").through(WebServiceFilter.class); 6869*dc5640d1SHerbert Xue </pre> 6870*dc5640d1SHerbert Xue 6871*dc5640d1SHerbert Xue Then the order in which these filters are dispatched is determined by the order in which 6872*dc5640d1SHerbert Xue the modules are installed: 6873*dc5640d1SHerbert Xue 6874*dc5640d1SHerbert Xue <pre> 6875*dc5640d1SHerbert Xue <b>install(new WebServiceModule());</b> 6876*dc5640d1SHerbert Xue install(new RpcModule()); 6877*dc5640d1SHerbert Xue </pre> 6878*dc5640d1SHerbert Xue 6879*dc5640d1SHerbert Xue In the case shown above {@code WebServiceFilter} will run first. 6880*dc5640d1SHerbert Xue 6881*dc5640d1SHerbert Xue @since 2.0]]> 6882*dc5640d1SHerbert Xue </doc> 6883*dc5640d1SHerbert Xue </method> 6884*dc5640d1SHerbert Xue <method name="filter" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder" 6885*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6886*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 6887*dc5640d1SHerbert Xue deprecated="not deprecated"> 6888*dc5640d1SHerbert Xue <param name="urlPattern" type="java.lang.String"/> 6889*dc5640d1SHerbert Xue <param name="morePatterns" type="java.lang.String[]"/> 6890*dc5640d1SHerbert Xue <doc> 6891*dc5640d1SHerbert Xue <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc. 6892*dc5640d1SHerbert Xue @since 2.0]]> 6893*dc5640d1SHerbert Xue </doc> 6894*dc5640d1SHerbert Xue </method> 6895*dc5640d1SHerbert Xue <method name="filterRegex" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder" 6896*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6897*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 6898*dc5640d1SHerbert Xue deprecated="not deprecated"> 6899*dc5640d1SHerbert Xue <param name="regex" type="java.lang.String"/> 6900*dc5640d1SHerbert Xue <param name="regexes" type="java.lang.String[]"/> 6901*dc5640d1SHerbert Xue <doc> 6902*dc5640d1SHerbert Xue <![CDATA[@param regex Any Java-style regular expression. 6903*dc5640d1SHerbert Xue @since 2.0]]> 6904*dc5640d1SHerbert Xue </doc> 6905*dc5640d1SHerbert Xue </method> 6906*dc5640d1SHerbert Xue <method name="serve" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder" 6907*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6908*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 6909*dc5640d1SHerbert Xue deprecated="not deprecated"> 6910*dc5640d1SHerbert Xue <param name="urlPattern" type="java.lang.String"/> 6911*dc5640d1SHerbert Xue <param name="morePatterns" type="java.lang.String[]"/> 6912*dc5640d1SHerbert Xue <doc> 6913*dc5640d1SHerbert Xue <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc. 6914*dc5640d1SHerbert Xue @since 2.0]]> 6915*dc5640d1SHerbert Xue </doc> 6916*dc5640d1SHerbert Xue </method> 6917*dc5640d1SHerbert Xue <method name="serveRegex" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder" 6918*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6919*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 6920*dc5640d1SHerbert Xue deprecated="not deprecated"> 6921*dc5640d1SHerbert Xue <param name="regex" type="java.lang.String"/> 6922*dc5640d1SHerbert Xue <param name="regexes" type="java.lang.String[]"/> 6923*dc5640d1SHerbert Xue <doc> 6924*dc5640d1SHerbert Xue <![CDATA[@param regex Any Java-style regular expression. 6925*dc5640d1SHerbert Xue @since 2.0]]> 6926*dc5640d1SHerbert Xue </doc> 6927*dc5640d1SHerbert Xue </method> 6928*dc5640d1SHerbert Xue <method name="getServletContext" return="ServletContext" 6929*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6930*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 6931*dc5640d1SHerbert Xue deprecated="not deprecated"> 6932*dc5640d1SHerbert Xue <doc> 6933*dc5640d1SHerbert Xue <![CDATA[This method only works if you are using the {@linkplain GuiceServletContextListener} to 6934*dc5640d1SHerbert Xue create your injector. Otherwise, it returns null. 6935*dc5640d1SHerbert Xue @return The current servlet context. 6936*dc5640d1SHerbert Xue @since 3.0]]> 6937*dc5640d1SHerbert Xue </doc> 6938*dc5640d1SHerbert Xue </method> 6939*dc5640d1SHerbert Xue <doc> 6940*dc5640d1SHerbert Xue <![CDATA[Configures the servlet scopes and creates bindings for the servlet API 6941*dc5640d1SHerbert Xue objects so you can inject the request, response, session, etc. 6942*dc5640d1SHerbert Xue 6943*dc5640d1SHerbert Xue <p> 6944*dc5640d1SHerbert Xue You should subclass this module to register servlets and 6945*dc5640d1SHerbert Xue filters in the {@link #configureServlets()} method. 6946*dc5640d1SHerbert Xue 6947*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 6948*dc5640d1SHerbert Xue @author [email protected] (Dhanji R. Prasanna)]]> 6949*dc5640d1SHerbert Xue </doc> 6950*dc5640d1SHerbert Xue </class> 6951*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.ServletModule --> 6952*dc5640d1SHerbert Xue <!-- start interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder --> 6953*dc5640d1SHerbert Xue <interface name="ServletModule.FilterKeyBindingBuilder" abstract="true" 6954*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6955*dc5640d1SHerbert Xue deprecated="not deprecated"> 6956*dc5640d1SHerbert Xue <method name="through" 6957*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6958*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6959*dc5640d1SHerbert Xue deprecated="not deprecated"> 6960*dc5640d1SHerbert Xue <param name="filterKey" type="java.lang.Class<? extends Filter>"/> 6961*dc5640d1SHerbert Xue </method> 6962*dc5640d1SHerbert Xue <method name="through" 6963*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6964*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6965*dc5640d1SHerbert Xue deprecated="not deprecated"> 6966*dc5640d1SHerbert Xue <param name="filterKey" type="com.google.inject.Key<? extends Filter>"/> 6967*dc5640d1SHerbert Xue </method> 6968*dc5640d1SHerbert Xue <method name="through" 6969*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6970*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6971*dc5640d1SHerbert Xue deprecated="not deprecated"> 6972*dc5640d1SHerbert Xue <param name="filter" type="Filter"/> 6973*dc5640d1SHerbert Xue <doc> 6974*dc5640d1SHerbert Xue <![CDATA[@since 3.0]]> 6975*dc5640d1SHerbert Xue </doc> 6976*dc5640d1SHerbert Xue </method> 6977*dc5640d1SHerbert Xue <method name="through" 6978*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6979*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6980*dc5640d1SHerbert Xue deprecated="not deprecated"> 6981*dc5640d1SHerbert Xue <param name="filterKey" type="java.lang.Class<? extends Filter>"/> 6982*dc5640d1SHerbert Xue <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 6983*dc5640d1SHerbert Xue </method> 6984*dc5640d1SHerbert Xue <method name="through" 6985*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6986*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6987*dc5640d1SHerbert Xue deprecated="not deprecated"> 6988*dc5640d1SHerbert Xue <param name="filterKey" type="com.google.inject.Key<? extends Filter>"/> 6989*dc5640d1SHerbert Xue <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 6990*dc5640d1SHerbert Xue </method> 6991*dc5640d1SHerbert Xue <method name="through" 6992*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6993*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6994*dc5640d1SHerbert Xue deprecated="not deprecated"> 6995*dc5640d1SHerbert Xue <param name="filter" type="Filter"/> 6996*dc5640d1SHerbert Xue <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 6997*dc5640d1SHerbert Xue <doc> 6998*dc5640d1SHerbert Xue <![CDATA[@since 3.0]]> 6999*dc5640d1SHerbert Xue </doc> 7000*dc5640d1SHerbert Xue </method> 7001*dc5640d1SHerbert Xue <doc> 7002*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()} 7003*dc5640d1SHerbert Xue 7004*dc5640d1SHerbert Xue @since 2.0]]> 7005*dc5640d1SHerbert Xue </doc> 7006*dc5640d1SHerbert Xue </interface> 7007*dc5640d1SHerbert Xue <!-- end interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder --> 7008*dc5640d1SHerbert Xue <!-- start interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder --> 7009*dc5640d1SHerbert Xue <interface name="ServletModule.ServletKeyBindingBuilder" abstract="true" 7010*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 7011*dc5640d1SHerbert Xue deprecated="not deprecated"> 7012*dc5640d1SHerbert Xue <method name="with" 7013*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7014*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7015*dc5640d1SHerbert Xue deprecated="not deprecated"> 7016*dc5640d1SHerbert Xue <param name="servletKey" type="java.lang.Class<? extends HttpServlet>"/> 7017*dc5640d1SHerbert Xue </method> 7018*dc5640d1SHerbert Xue <method name="with" 7019*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7020*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7021*dc5640d1SHerbert Xue deprecated="not deprecated"> 7022*dc5640d1SHerbert Xue <param name="servletKey" type="com.google.inject.Key<? extends HttpServlet>"/> 7023*dc5640d1SHerbert Xue </method> 7024*dc5640d1SHerbert Xue <method name="with" 7025*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7026*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7027*dc5640d1SHerbert Xue deprecated="not deprecated"> 7028*dc5640d1SHerbert Xue <param name="servlet" type="HttpServlet"/> 7029*dc5640d1SHerbert Xue <doc> 7030*dc5640d1SHerbert Xue <![CDATA[@since 3.0]]> 7031*dc5640d1SHerbert Xue </doc> 7032*dc5640d1SHerbert Xue </method> 7033*dc5640d1SHerbert Xue <method name="with" 7034*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7035*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7036*dc5640d1SHerbert Xue deprecated="not deprecated"> 7037*dc5640d1SHerbert Xue <param name="servletKey" type="java.lang.Class<? extends HttpServlet>"/> 7038*dc5640d1SHerbert Xue <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7039*dc5640d1SHerbert Xue </method> 7040*dc5640d1SHerbert Xue <method name="with" 7041*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7042*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7043*dc5640d1SHerbert Xue deprecated="not deprecated"> 7044*dc5640d1SHerbert Xue <param name="servletKey" type="com.google.inject.Key<? extends HttpServlet>"/> 7045*dc5640d1SHerbert Xue <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7046*dc5640d1SHerbert Xue </method> 7047*dc5640d1SHerbert Xue <method name="with" 7048*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7049*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7050*dc5640d1SHerbert Xue deprecated="not deprecated"> 7051*dc5640d1SHerbert Xue <param name="servlet" type="HttpServlet"/> 7052*dc5640d1SHerbert Xue <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7053*dc5640d1SHerbert Xue <doc> 7054*dc5640d1SHerbert Xue <![CDATA[@since 3.0]]> 7055*dc5640d1SHerbert Xue </doc> 7056*dc5640d1SHerbert Xue </method> 7057*dc5640d1SHerbert Xue <doc> 7058*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()} 7059*dc5640d1SHerbert Xue 7060*dc5640d1SHerbert Xue @since 2.0]]> 7061*dc5640d1SHerbert Xue </doc> 7062*dc5640d1SHerbert Xue </interface> 7063*dc5640d1SHerbert Xue <!-- end interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder --> 7064*dc5640d1SHerbert Xue <!-- start interface com.google.inject.servlet.ServletModuleBinding --> 7065*dc5640d1SHerbert Xue <interface name="ServletModuleBinding" abstract="true" 7066*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7067*dc5640d1SHerbert Xue deprecated="not deprecated"> 7068*dc5640d1SHerbert Xue <method name="getUriPatternType" return="com.google.inject.servlet.UriPatternType" 7069*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7070*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7071*dc5640d1SHerbert Xue deprecated="not deprecated"> 7072*dc5640d1SHerbert Xue <doc> 7073*dc5640d1SHerbert Xue <![CDATA[Returns the pattern type that this binding was created with.]]> 7074*dc5640d1SHerbert Xue </doc> 7075*dc5640d1SHerbert Xue </method> 7076*dc5640d1SHerbert Xue <method name="getPattern" return="java.lang.String" 7077*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7078*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7079*dc5640d1SHerbert Xue deprecated="not deprecated"> 7080*dc5640d1SHerbert Xue <doc> 7081*dc5640d1SHerbert Xue <![CDATA[Returns the pattern used to match against the binding.]]> 7082*dc5640d1SHerbert Xue </doc> 7083*dc5640d1SHerbert Xue </method> 7084*dc5640d1SHerbert Xue <method name="getInitParams" return="java.util.Map<java.lang.String, java.lang.String>" 7085*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7086*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7087*dc5640d1SHerbert Xue deprecated="not deprecated"> 7088*dc5640d1SHerbert Xue <doc> 7089*dc5640d1SHerbert Xue <![CDATA[Returns any context params supplied when creating the binding.]]> 7090*dc5640d1SHerbert Xue </doc> 7091*dc5640d1SHerbert Xue </method> 7092*dc5640d1SHerbert Xue <method name="matchesUri" return="boolean" 7093*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7094*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7095*dc5640d1SHerbert Xue deprecated="not deprecated"> 7096*dc5640d1SHerbert Xue <param name="uri" type="java.lang.String"/> 7097*dc5640d1SHerbert Xue <doc> 7098*dc5640d1SHerbert Xue <![CDATA[Returns true if the given URI will match this binding.]]> 7099*dc5640d1SHerbert Xue </doc> 7100*dc5640d1SHerbert Xue </method> 7101*dc5640d1SHerbert Xue <doc> 7102*dc5640d1SHerbert Xue <![CDATA[A binding created by {@link ServletModule}. 7103*dc5640d1SHerbert Xue 7104*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 7105*dc5640d1SHerbert Xue @since 3.0]]> 7106*dc5640d1SHerbert Xue </doc> 7107*dc5640d1SHerbert Xue </interface> 7108*dc5640d1SHerbert Xue <!-- end interface com.google.inject.servlet.ServletModuleBinding --> 7109*dc5640d1SHerbert Xue <!-- start interface com.google.inject.servlet.ServletModuleTargetVisitor --> 7110*dc5640d1SHerbert Xue <interface name="ServletModuleTargetVisitor" abstract="true" 7111*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7112*dc5640d1SHerbert Xue deprecated="not deprecated"> 7113*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 7114*dc5640d1SHerbert Xue <method name="visit" return="V" 7115*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7116*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7117*dc5640d1SHerbert Xue deprecated="not deprecated"> 7118*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.servlet.LinkedFilterBinding"/> 7119*dc5640d1SHerbert Xue <doc> 7120*dc5640d1SHerbert Xue <![CDATA[Visits a filter binding created by {@link ServletModule#filter}, where 7121*dc5640d1SHerbert Xue {@link FilterKeyBindingBuilder#through} is called with a Class or Key. 7122*dc5640d1SHerbert Xue 7123*dc5640d1SHerbert Xue If multiple patterns were specified, this will be called multiple times.]]> 7124*dc5640d1SHerbert Xue </doc> 7125*dc5640d1SHerbert Xue </method> 7126*dc5640d1SHerbert Xue <method name="visit" return="V" 7127*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7128*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7129*dc5640d1SHerbert Xue deprecated="not deprecated"> 7130*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.servlet.InstanceFilterBinding"/> 7131*dc5640d1SHerbert Xue <doc> 7132*dc5640d1SHerbert Xue <![CDATA[Visits a filter binding created by {@link ServletModule#filter} where 7133*dc5640d1SHerbert Xue {@link FilterKeyBindingBuilder#through} is called with a {@link Filter}. 7134*dc5640d1SHerbert Xue 7135*dc5640d1SHerbert Xue If multiple patterns were specified, this will be called multiple times.]]> 7136*dc5640d1SHerbert Xue </doc> 7137*dc5640d1SHerbert Xue </method> 7138*dc5640d1SHerbert Xue <method name="visit" return="V" 7139*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7140*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7141*dc5640d1SHerbert Xue deprecated="not deprecated"> 7142*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.servlet.LinkedServletBinding"/> 7143*dc5640d1SHerbert Xue <doc> 7144*dc5640d1SHerbert Xue <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where 7145*dc5640d1SHerbert Xue {@link ServletKeyBindingBuilder#with}, is called with a Class or Key. 7146*dc5640d1SHerbert Xue 7147*dc5640d1SHerbert Xue If multiple patterns were specified, this will be called multiple times.]]> 7148*dc5640d1SHerbert Xue </doc> 7149*dc5640d1SHerbert Xue </method> 7150*dc5640d1SHerbert Xue <method name="visit" return="V" 7151*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7152*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7153*dc5640d1SHerbert Xue deprecated="not deprecated"> 7154*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.servlet.InstanceServletBinding"/> 7155*dc5640d1SHerbert Xue <doc> 7156*dc5640d1SHerbert Xue <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where 7157*dc5640d1SHerbert Xue {@link ServletKeyBindingBuilder#with}, is called with an {@link HttpServlet}. 7158*dc5640d1SHerbert Xue 7159*dc5640d1SHerbert Xue If multiple patterns were specified, this will be called multiple times.]]> 7160*dc5640d1SHerbert Xue </doc> 7161*dc5640d1SHerbert Xue </method> 7162*dc5640d1SHerbert Xue <doc> 7163*dc5640d1SHerbert Xue <![CDATA[A visitor for the servlet extension. 7164*dc5640d1SHerbert Xue 7165*dc5640d1SHerbert Xue If your {@link BindingTargetVisitor} implements this interface, bindings created by using 7166*dc5640d1SHerbert Xue {@link ServletModule} will be visited through this interface. 7167*dc5640d1SHerbert Xue 7168*dc5640d1SHerbert Xue @since 3.0 7169*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin)]]> 7170*dc5640d1SHerbert Xue </doc> 7171*dc5640d1SHerbert Xue </interface> 7172*dc5640d1SHerbert Xue <!-- end interface com.google.inject.servlet.ServletModuleTargetVisitor --> 7173*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.ServletScopes --> 7174*dc5640d1SHerbert Xue <class name="ServletScopes" extends="java.lang.Object" 7175*dc5640d1SHerbert Xue abstract="false" 7176*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7177*dc5640d1SHerbert Xue deprecated="not deprecated"> 7178*dc5640d1SHerbert Xue <method name="continueRequest" return="java.util.concurrent.Callable<T>" 7179*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7180*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 7181*dc5640d1SHerbert Xue deprecated="not deprecated"> 7182*dc5640d1SHerbert Xue <param name="callable" type="java.util.concurrent.Callable<T>"/> 7183*dc5640d1SHerbert Xue <param name="seedMap" type="java.util.Map<com.google.inject.Key<?>, java.lang.Object>"/> 7184*dc5640d1SHerbert Xue <doc> 7185*dc5640d1SHerbert Xue <![CDATA[Wraps the given callable in a contextual callable that "continues" the 7186*dc5640d1SHerbert Xue HTTP request in another thread. This acts as a way of transporting 7187*dc5640d1SHerbert Xue request context data from the request processing thread to to worker 7188*dc5640d1SHerbert Xue threads. 7189*dc5640d1SHerbert Xue <p> 7190*dc5640d1SHerbert Xue There are some limitations: 7191*dc5640d1SHerbert Xue <ul> 7192*dc5640d1SHerbert Xue <li>Derived objects (i.e. anything marked @RequestScoped will not be 7193*dc5640d1SHerbert Xue transported.</li> 7194*dc5640d1SHerbert Xue <li>State changes to the HttpServletRequest after this method is called 7195*dc5640d1SHerbert Xue will not be seen in the continued thread.</li> 7196*dc5640d1SHerbert Xue <li>Only the HttpServletRequest, ServletContext and request parameter 7197*dc5640d1SHerbert Xue map are available in the continued thread. The response and session 7198*dc5640d1SHerbert Xue are not available.</li> 7199*dc5640d1SHerbert Xue </ul> 7200*dc5640d1SHerbert Xue 7201*dc5640d1SHerbert Xue @param callable code to be executed in another thread, which depends on 7202*dc5640d1SHerbert Xue the request scope. 7203*dc5640d1SHerbert Xue @param seedMap the initial set of scoped instances for Guice to seed the 7204*dc5640d1SHerbert Xue request scope with. To seed a key with null, use {@code null} as 7205*dc5640d1SHerbert Xue the value. 7206*dc5640d1SHerbert Xue @return a callable that will invoke the given callable, making the request 7207*dc5640d1SHerbert Xue context available to it. 7208*dc5640d1SHerbert Xue @throws OutOfScopeException if this method is called from a non-request 7209*dc5640d1SHerbert Xue thread, or if the request has completed. 7210*dc5640d1SHerbert Xue 7211*dc5640d1SHerbert Xue @since 3.0]]> 7212*dc5640d1SHerbert Xue </doc> 7213*dc5640d1SHerbert Xue </method> 7214*dc5640d1SHerbert Xue <method name="scopeRequest" return="java.util.concurrent.Callable<T>" 7215*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7216*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 7217*dc5640d1SHerbert Xue deprecated="not deprecated"> 7218*dc5640d1SHerbert Xue <param name="callable" type="java.util.concurrent.Callable<T>"/> 7219*dc5640d1SHerbert Xue <param name="seedMap" type="java.util.Map<com.google.inject.Key<?>, java.lang.Object>"/> 7220*dc5640d1SHerbert Xue <doc> 7221*dc5640d1SHerbert Xue <![CDATA[Scopes the given callable inside a request scope. This is not the same 7222*dc5640d1SHerbert Xue as the HTTP request scope, but is used if no HTTP request scope is in 7223*dc5640d1SHerbert Xue progress. In this way, keys can be scoped as @RequestScoped and exist 7224*dc5640d1SHerbert Xue in non-HTTP requests (for example: RPC requests) as well as in HTTP 7225*dc5640d1SHerbert Xue request threads. 7226*dc5640d1SHerbert Xue 7227*dc5640d1SHerbert Xue @param callable code to be executed which depends on the request scope. 7228*dc5640d1SHerbert Xue Typically in another thread, but not necessarily so. 7229*dc5640d1SHerbert Xue @param seedMap the initial set of scoped instances for Guice to seed the 7230*dc5640d1SHerbert Xue request scope with. To seed a key with null, use {@code null} as 7231*dc5640d1SHerbert Xue the value. 7232*dc5640d1SHerbert Xue @return a callable that when called will run inside the a request scope 7233*dc5640d1SHerbert Xue that exposes the instances in the {@code seedMap} as scoped keys. 7234*dc5640d1SHerbert Xue @since 3.0]]> 7235*dc5640d1SHerbert Xue </doc> 7236*dc5640d1SHerbert Xue </method> 7237*dc5640d1SHerbert Xue <field name="REQUEST" type="com.google.inject.Scope" 7238*dc5640d1SHerbert Xue transient="false" volatile="false" 7239*dc5640d1SHerbert Xue static="true" final="true" visibility="public" 7240*dc5640d1SHerbert Xue deprecated="not deprecated"> 7241*dc5640d1SHerbert Xue <doc> 7242*dc5640d1SHerbert Xue <![CDATA[HTTP servlet request scope.]]> 7243*dc5640d1SHerbert Xue </doc> 7244*dc5640d1SHerbert Xue </field> 7245*dc5640d1SHerbert Xue <field name="SESSION" type="com.google.inject.Scope" 7246*dc5640d1SHerbert Xue transient="false" volatile="false" 7247*dc5640d1SHerbert Xue static="true" final="true" visibility="public" 7248*dc5640d1SHerbert Xue deprecated="not deprecated"> 7249*dc5640d1SHerbert Xue <doc> 7250*dc5640d1SHerbert Xue <![CDATA[HTTP session scope.]]> 7251*dc5640d1SHerbert Xue </doc> 7252*dc5640d1SHerbert Xue </field> 7253*dc5640d1SHerbert Xue <doc> 7254*dc5640d1SHerbert Xue <![CDATA[Servlet scopes. 7255*dc5640d1SHerbert Xue 7256*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 7257*dc5640d1SHerbert Xue </doc> 7258*dc5640d1SHerbert Xue </class> 7259*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.ServletScopes --> 7260*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.SessionScoped --> 7261*dc5640d1SHerbert Xue <class name="SessionScoped" abstract="true" 7262*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7263*dc5640d1SHerbert Xue deprecated="not deprecated"> 7264*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 7265*dc5640d1SHerbert Xue <doc> 7266*dc5640d1SHerbert Xue <![CDATA[Apply this to implementation classes when you want one instance per session. 7267*dc5640d1SHerbert Xue 7268*dc5640d1SHerbert Xue @see com.google.inject.Scopes#SINGLETON 7269*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 7270*dc5640d1SHerbert Xue </doc> 7271*dc5640d1SHerbert Xue </class> 7272*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.SessionScoped --> 7273*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.UriPatternType --> 7274*dc5640d1SHerbert Xue <class name="UriPatternType" extends="java.lang.Enum<com.google.inject.servlet.UriPatternType>" 7275*dc5640d1SHerbert Xue abstract="false" 7276*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 7277*dc5640d1SHerbert Xue deprecated="not deprecated"> 7278*dc5640d1SHerbert Xue <method name="values" return="com.google.inject.servlet.UriPatternType[]" 7279*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7280*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 7281*dc5640d1SHerbert Xue deprecated="not deprecated"> 7282*dc5640d1SHerbert Xue </method> 7283*dc5640d1SHerbert Xue <method name="valueOf" return="com.google.inject.servlet.UriPatternType" 7284*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7285*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 7286*dc5640d1SHerbert Xue deprecated="not deprecated"> 7287*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 7288*dc5640d1SHerbert Xue </method> 7289*dc5640d1SHerbert Xue <doc> 7290*dc5640d1SHerbert Xue <![CDATA[An enumeration of the available URI-pattern matching styles 7291*dc5640d1SHerbert Xue 7292*dc5640d1SHerbert Xue @since 3.0]]> 7293*dc5640d1SHerbert Xue </doc> 7294*dc5640d1SHerbert Xue </class> 7295*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.UriPatternType --> 7296*dc5640d1SHerbert Xue</package> 7297*dc5640d1SHerbert Xue<package name="com.google.inject.spi"> 7298*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.BindingScopingVisitor --> 7299*dc5640d1SHerbert Xue <interface name="BindingScopingVisitor" abstract="true" 7300*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7301*dc5640d1SHerbert Xue deprecated="not deprecated"> 7302*dc5640d1SHerbert Xue <method name="visitEagerSingleton" return="V" 7303*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7304*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7305*dc5640d1SHerbert Xue deprecated="not deprecated"> 7306*dc5640d1SHerbert Xue <doc> 7307*dc5640d1SHerbert Xue <![CDATA[Visit an eager singleton or single instance. This scope strategy is found on both module and 7308*dc5640d1SHerbert Xue injector bindings.]]> 7309*dc5640d1SHerbert Xue </doc> 7310*dc5640d1SHerbert Xue </method> 7311*dc5640d1SHerbert Xue <method name="visitScope" return="V" 7312*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7313*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7314*dc5640d1SHerbert Xue deprecated="not deprecated"> 7315*dc5640d1SHerbert Xue <param name="scope" type="com.google.inject.Scope"/> 7316*dc5640d1SHerbert Xue <doc> 7317*dc5640d1SHerbert Xue <![CDATA[Visit a scope instance. This scope strategy is found on both module and injector bindings.]]> 7318*dc5640d1SHerbert Xue </doc> 7319*dc5640d1SHerbert Xue </method> 7320*dc5640d1SHerbert Xue <method name="visitScopeAnnotation" return="V" 7321*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7322*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7323*dc5640d1SHerbert Xue deprecated="not deprecated"> 7324*dc5640d1SHerbert Xue <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 7325*dc5640d1SHerbert Xue <doc> 7326*dc5640d1SHerbert Xue <![CDATA[Visit a scope annotation. This scope strategy is found only on module bindings. The instance 7327*dc5640d1SHerbert Xue that implements this scope is registered by {@link com.google.inject.Binder#bindScope(Class, 7328*dc5640d1SHerbert Xue Scope) Binder.bindScope()}.]]> 7329*dc5640d1SHerbert Xue </doc> 7330*dc5640d1SHerbert Xue </method> 7331*dc5640d1SHerbert Xue <method name="visitNoScoping" return="V" 7332*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7333*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7334*dc5640d1SHerbert Xue deprecated="not deprecated"> 7335*dc5640d1SHerbert Xue <doc> 7336*dc5640d1SHerbert Xue <![CDATA[Visit an unspecified or unscoped strategy. On a module, this strategy indicates that the 7337*dc5640d1SHerbert Xue injector should use scoping annotations to find a scope. On an injector, it indicates that 7338*dc5640d1SHerbert Xue no scope is applied to the binding. An unscoped binding will behave like a scoped one when it 7339*dc5640d1SHerbert Xue is linked to a scoped binding.]]> 7340*dc5640d1SHerbert Xue </doc> 7341*dc5640d1SHerbert Xue </method> 7342*dc5640d1SHerbert Xue <doc> 7343*dc5640d1SHerbert Xue <![CDATA[Visits each of the strategies used to scope an injection. 7344*dc5640d1SHerbert Xue 7345*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with 7346*dc5640d1SHerbert Xue {@code return null} if no return type is needed. 7347*dc5640d1SHerbert Xue @since 2.0]]> 7348*dc5640d1SHerbert Xue </doc> 7349*dc5640d1SHerbert Xue </interface> 7350*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.BindingScopingVisitor --> 7351*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.BindingTargetVisitor --> 7352*dc5640d1SHerbert Xue <interface name="BindingTargetVisitor" abstract="true" 7353*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7354*dc5640d1SHerbert Xue deprecated="not deprecated"> 7355*dc5640d1SHerbert Xue <method name="visit" return="V" 7356*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7357*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7358*dc5640d1SHerbert Xue deprecated="not deprecated"> 7359*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.InstanceBinding<? extends T>"/> 7360*dc5640d1SHerbert Xue <doc> 7361*dc5640d1SHerbert Xue <![CDATA[Visit a instance binding. The same instance is returned for every injection. This target is 7362*dc5640d1SHerbert Xue found in both module and injector bindings.]]> 7363*dc5640d1SHerbert Xue </doc> 7364*dc5640d1SHerbert Xue </method> 7365*dc5640d1SHerbert Xue <method name="visit" return="V" 7366*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7367*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7368*dc5640d1SHerbert Xue deprecated="not deprecated"> 7369*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding<? extends T>"/> 7370*dc5640d1SHerbert Xue <doc> 7371*dc5640d1SHerbert Xue <![CDATA[Visit a provider instance binding. The provider's {@code get} method is invoked to resolve 7372*dc5640d1SHerbert Xue injections. This target is found in both module and injector bindings.]]> 7373*dc5640d1SHerbert Xue </doc> 7374*dc5640d1SHerbert Xue </method> 7375*dc5640d1SHerbert Xue <method name="visit" return="V" 7376*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7377*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7378*dc5640d1SHerbert Xue deprecated="not deprecated"> 7379*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProviderKeyBinding<? extends T>"/> 7380*dc5640d1SHerbert Xue <doc> 7381*dc5640d1SHerbert Xue <![CDATA[Visit a provider key binding. To resolve injections, the provider key is first resolved, then 7382*dc5640d1SHerbert Xue that provider's {@code get} method is invoked. This target is found in both module and injector 7383*dc5640d1SHerbert Xue bindings.]]> 7384*dc5640d1SHerbert Xue </doc> 7385*dc5640d1SHerbert Xue </method> 7386*dc5640d1SHerbert Xue <method name="visit" return="V" 7387*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7388*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7389*dc5640d1SHerbert Xue deprecated="not deprecated"> 7390*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.LinkedKeyBinding<? extends T>"/> 7391*dc5640d1SHerbert Xue <doc> 7392*dc5640d1SHerbert Xue <![CDATA[Visit a linked key binding. The other key's binding is used to resolve injections. This 7393*dc5640d1SHerbert Xue target is found in both module and injector bindings.]]> 7394*dc5640d1SHerbert Xue </doc> 7395*dc5640d1SHerbert Xue </method> 7396*dc5640d1SHerbert Xue <method name="visit" return="V" 7397*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7398*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7399*dc5640d1SHerbert Xue deprecated="not deprecated"> 7400*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ExposedBinding<? extends T>"/> 7401*dc5640d1SHerbert Xue <doc> 7402*dc5640d1SHerbert Xue <![CDATA[Visit a binding to a key exposed from an enclosed private environment. This target is only 7403*dc5640d1SHerbert Xue found in injector bindings.]]> 7404*dc5640d1SHerbert Xue </doc> 7405*dc5640d1SHerbert Xue </method> 7406*dc5640d1SHerbert Xue <method name="visit" return="V" 7407*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7408*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7409*dc5640d1SHerbert Xue deprecated="not deprecated"> 7410*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.UntargettedBinding<? extends T>"/> 7411*dc5640d1SHerbert Xue <doc> 7412*dc5640d1SHerbert Xue <![CDATA[Visit an untargetted binding. This target is found only on module bindings. It indicates 7413*dc5640d1SHerbert Xue that the injector should use its implicit binding strategies to resolve injections.]]> 7414*dc5640d1SHerbert Xue </doc> 7415*dc5640d1SHerbert Xue </method> 7416*dc5640d1SHerbert Xue <method name="visit" return="V" 7417*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7418*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7419*dc5640d1SHerbert Xue deprecated="not deprecated"> 7420*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ConstructorBinding<? extends T>"/> 7421*dc5640d1SHerbert Xue <doc> 7422*dc5640d1SHerbert Xue <![CDATA[Visit a constructor binding. To resolve injections, an instance is instantiated by invoking 7423*dc5640d1SHerbert Xue {@code constructor}. This target is found only on injector bindings.]]> 7424*dc5640d1SHerbert Xue </doc> 7425*dc5640d1SHerbert Xue </method> 7426*dc5640d1SHerbert Xue <method name="visit" return="V" 7427*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7428*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7429*dc5640d1SHerbert Xue deprecated="not deprecated"> 7430*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding<? extends T>"/> 7431*dc5640d1SHerbert Xue <doc> 7432*dc5640d1SHerbert Xue <![CDATA[Visit a binding created from converting a bound instance to a new type. The source binding 7433*dc5640d1SHerbert Xue has the same binding annotation but a different type. This target is found only on injector 7434*dc5640d1SHerbert Xue bindings.]]> 7435*dc5640d1SHerbert Xue </doc> 7436*dc5640d1SHerbert Xue </method> 7437*dc5640d1SHerbert Xue <method name="visit" return="V" 7438*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7439*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7440*dc5640d1SHerbert Xue deprecated="not deprecated"> 7441*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProviderBinding<? extends T>"/> 7442*dc5640d1SHerbert Xue <doc> 7443*dc5640d1SHerbert Xue <![CDATA[Visit a binding to a {@link com.google.inject.Provider} that delegates to the binding for the 7444*dc5640d1SHerbert Xue provided type. This target is found only on injector bindings.]]> 7445*dc5640d1SHerbert Xue </doc> 7446*dc5640d1SHerbert Xue </method> 7447*dc5640d1SHerbert Xue <doc> 7448*dc5640d1SHerbert Xue <![CDATA[Visits each of the strategies used to find an instance to satisfy an injection. 7449*dc5640d1SHerbert Xue 7450*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with 7451*dc5640d1SHerbert Xue {@code return null} if no return type is needed. 7452*dc5640d1SHerbert Xue @since 2.0]]> 7453*dc5640d1SHerbert Xue </doc> 7454*dc5640d1SHerbert Xue </interface> 7455*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.BindingTargetVisitor --> 7456*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ConstructorBinding --> 7457*dc5640d1SHerbert Xue <interface name="ConstructorBinding" abstract="true" 7458*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7459*dc5640d1SHerbert Xue deprecated="not deprecated"> 7460*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 7461*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 7462*dc5640d1SHerbert Xue <method name="getConstructor" return="com.google.inject.spi.InjectionPoint" 7463*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7464*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7465*dc5640d1SHerbert Xue deprecated="not deprecated"> 7466*dc5640d1SHerbert Xue <doc> 7467*dc5640d1SHerbert Xue <![CDATA[Gets the constructor this binding injects.]]> 7468*dc5640d1SHerbert Xue </doc> 7469*dc5640d1SHerbert Xue </method> 7470*dc5640d1SHerbert Xue <method name="getInjectableMembers" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 7471*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7472*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7473*dc5640d1SHerbert Xue deprecated="not deprecated"> 7474*dc5640d1SHerbert Xue <doc> 7475*dc5640d1SHerbert Xue <![CDATA[Returns all instance method and field injection points on {@code type}. 7476*dc5640d1SHerbert Xue 7477*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All 7478*dc5640d1SHerbert Xue fields are returned and then all methods. Within the fields, supertype fields are returned 7479*dc5640d1SHerbert Xue before subtype fields. Similarly, supertype methods are returned before subtype methods.]]> 7480*dc5640d1SHerbert Xue </doc> 7481*dc5640d1SHerbert Xue </method> 7482*dc5640d1SHerbert Xue <method name="getMethodInterceptors" return="java.util.Map<java.lang.reflect.Method, java.util.List<org.aopalliance.intercept.MethodInterceptor>>" 7483*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7484*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7485*dc5640d1SHerbert Xue deprecated="not deprecated"> 7486*dc5640d1SHerbert Xue <doc> 7487*dc5640d1SHerbert Xue <![CDATA[Returns the interceptors applied to each method, in the order that they will be applied. 7488*dc5640d1SHerbert Xue 7489*dc5640d1SHerbert Xue @return a possibly empty map]]> 7490*dc5640d1SHerbert Xue </doc> 7491*dc5640d1SHerbert Xue </method> 7492*dc5640d1SHerbert Xue <doc> 7493*dc5640d1SHerbert Xue <![CDATA[A binding to the constructor of a concrete clss. To resolve injections, an instance is 7494*dc5640d1SHerbert Xue instantiated by invoking the constructor. 7495*dc5640d1SHerbert Xue 7496*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 7497*dc5640d1SHerbert Xue @since 2.0]]> 7498*dc5640d1SHerbert Xue </doc> 7499*dc5640d1SHerbert Xue </interface> 7500*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ConstructorBinding --> 7501*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ConvertedConstantBinding --> 7502*dc5640d1SHerbert Xue <interface name="ConvertedConstantBinding" abstract="true" 7503*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7504*dc5640d1SHerbert Xue deprecated="not deprecated"> 7505*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 7506*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 7507*dc5640d1SHerbert Xue <method name="getValue" return="T" 7508*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7509*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7510*dc5640d1SHerbert Xue deprecated="not deprecated"> 7511*dc5640d1SHerbert Xue <doc> 7512*dc5640d1SHerbert Xue <![CDATA[Returns the converted value.]]> 7513*dc5640d1SHerbert Xue </doc> 7514*dc5640d1SHerbert Xue </method> 7515*dc5640d1SHerbert Xue <method name="getTypeConverterBinding" return="com.google.inject.spi.TypeConverterBinding" 7516*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7517*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7518*dc5640d1SHerbert Xue deprecated="not deprecated"> 7519*dc5640d1SHerbert Xue <doc> 7520*dc5640d1SHerbert Xue <![CDATA[Returns the type converter binding used to convert the constant. 7521*dc5640d1SHerbert Xue 7522*dc5640d1SHerbert Xue @since 3.0]]> 7523*dc5640d1SHerbert Xue </doc> 7524*dc5640d1SHerbert Xue </method> 7525*dc5640d1SHerbert Xue <method name="getSourceKey" return="com.google.inject.Key<java.lang.String>" 7526*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7527*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7528*dc5640d1SHerbert Xue deprecated="not deprecated"> 7529*dc5640d1SHerbert Xue <doc> 7530*dc5640d1SHerbert Xue <![CDATA[Returns the key for the source binding. That binding can e retrieved from an injector using 7531*dc5640d1SHerbert Xue {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]> 7532*dc5640d1SHerbert Xue </doc> 7533*dc5640d1SHerbert Xue </method> 7534*dc5640d1SHerbert Xue <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 7535*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7536*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7537*dc5640d1SHerbert Xue deprecated="not deprecated"> 7538*dc5640d1SHerbert Xue <doc> 7539*dc5640d1SHerbert Xue <![CDATA[Returns a singleton set containing only the converted key.]]> 7540*dc5640d1SHerbert Xue </doc> 7541*dc5640d1SHerbert Xue </method> 7542*dc5640d1SHerbert Xue <doc> 7543*dc5640d1SHerbert Xue <![CDATA[A binding created from converting a bound instance to a new type. The source binding has the same 7544*dc5640d1SHerbert Xue binding annotation but a different type. 7545*dc5640d1SHerbert Xue 7546*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 7547*dc5640d1SHerbert Xue @since 2.0]]> 7548*dc5640d1SHerbert Xue </doc> 7549*dc5640d1SHerbert Xue </interface> 7550*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ConvertedConstantBinding --> 7551*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.DefaultBindingScopingVisitor --> 7552*dc5640d1SHerbert Xue <class name="DefaultBindingScopingVisitor" extends="java.lang.Object" 7553*dc5640d1SHerbert Xue abstract="false" 7554*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7555*dc5640d1SHerbert Xue deprecated="not deprecated"> 7556*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.BindingScopingVisitor<V>"/> 7557*dc5640d1SHerbert Xue <constructor name="DefaultBindingScopingVisitor" 7558*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7559*dc5640d1SHerbert Xue deprecated="not deprecated"> 7560*dc5640d1SHerbert Xue </constructor> 7561*dc5640d1SHerbert Xue <method name="visitOther" return="V" 7562*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7563*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 7564*dc5640d1SHerbert Xue deprecated="not deprecated"> 7565*dc5640d1SHerbert Xue <doc> 7566*dc5640d1SHerbert Xue <![CDATA[Default visit implementation. Returns {@code null}.]]> 7567*dc5640d1SHerbert Xue </doc> 7568*dc5640d1SHerbert Xue </method> 7569*dc5640d1SHerbert Xue <method name="visitEagerSingleton" return="V" 7570*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7571*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7572*dc5640d1SHerbert Xue deprecated="not deprecated"> 7573*dc5640d1SHerbert Xue </method> 7574*dc5640d1SHerbert Xue <method name="visitScope" return="V" 7575*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7576*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7577*dc5640d1SHerbert Xue deprecated="not deprecated"> 7578*dc5640d1SHerbert Xue <param name="scope" type="com.google.inject.Scope"/> 7579*dc5640d1SHerbert Xue </method> 7580*dc5640d1SHerbert Xue <method name="visitScopeAnnotation" return="V" 7581*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7582*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7583*dc5640d1SHerbert Xue deprecated="not deprecated"> 7584*dc5640d1SHerbert Xue <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 7585*dc5640d1SHerbert Xue </method> 7586*dc5640d1SHerbert Xue <method name="visitNoScoping" return="V" 7587*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7588*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7589*dc5640d1SHerbert Xue deprecated="not deprecated"> 7590*dc5640d1SHerbert Xue </method> 7591*dc5640d1SHerbert Xue <doc> 7592*dc5640d1SHerbert Xue <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to 7593*dc5640d1SHerbert Xue {@link #visitOther()}, returning its result. 7594*dc5640d1SHerbert Xue 7595*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with 7596*dc5640d1SHerbert Xue {@code return null} if no return type is needed. 7597*dc5640d1SHerbert Xue 7598*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 7599*dc5640d1SHerbert Xue @since 2.0]]> 7600*dc5640d1SHerbert Xue </doc> 7601*dc5640d1SHerbert Xue </class> 7602*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.DefaultBindingScopingVisitor --> 7603*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.DefaultBindingTargetVisitor --> 7604*dc5640d1SHerbert Xue <class name="DefaultBindingTargetVisitor" extends="java.lang.Object" 7605*dc5640d1SHerbert Xue abstract="true" 7606*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7607*dc5640d1SHerbert Xue deprecated="not deprecated"> 7608*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 7609*dc5640d1SHerbert Xue <constructor name="DefaultBindingTargetVisitor" 7610*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7611*dc5640d1SHerbert Xue deprecated="not deprecated"> 7612*dc5640d1SHerbert Xue </constructor> 7613*dc5640d1SHerbert Xue <method name="visitOther" return="V" 7614*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7615*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 7616*dc5640d1SHerbert Xue deprecated="not deprecated"> 7617*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.Binding<? extends T>"/> 7618*dc5640d1SHerbert Xue <doc> 7619*dc5640d1SHerbert Xue <![CDATA[Default visit implementation. Returns {@code null}.]]> 7620*dc5640d1SHerbert Xue </doc> 7621*dc5640d1SHerbert Xue </method> 7622*dc5640d1SHerbert Xue <method name="visit" return="V" 7623*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7624*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7625*dc5640d1SHerbert Xue deprecated="not deprecated"> 7626*dc5640d1SHerbert Xue <param name="instanceBinding" type="com.google.inject.spi.InstanceBinding<? extends T>"/> 7627*dc5640d1SHerbert Xue </method> 7628*dc5640d1SHerbert Xue <method name="visit" return="V" 7629*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7630*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7631*dc5640d1SHerbert Xue deprecated="not deprecated"> 7632*dc5640d1SHerbert Xue <param name="providerInstanceBinding" type="com.google.inject.spi.ProviderInstanceBinding<? extends T>"/> 7633*dc5640d1SHerbert Xue </method> 7634*dc5640d1SHerbert Xue <method name="visit" return="V" 7635*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7636*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7637*dc5640d1SHerbert Xue deprecated="not deprecated"> 7638*dc5640d1SHerbert Xue <param name="providerKeyBinding" type="com.google.inject.spi.ProviderKeyBinding<? extends T>"/> 7639*dc5640d1SHerbert Xue </method> 7640*dc5640d1SHerbert Xue <method name="visit" return="V" 7641*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7642*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7643*dc5640d1SHerbert Xue deprecated="not deprecated"> 7644*dc5640d1SHerbert Xue <param name="linkedKeyBinding" type="com.google.inject.spi.LinkedKeyBinding<? extends T>"/> 7645*dc5640d1SHerbert Xue </method> 7646*dc5640d1SHerbert Xue <method name="visit" return="V" 7647*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7648*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7649*dc5640d1SHerbert Xue deprecated="not deprecated"> 7650*dc5640d1SHerbert Xue <param name="exposedBinding" type="com.google.inject.spi.ExposedBinding<? extends T>"/> 7651*dc5640d1SHerbert Xue </method> 7652*dc5640d1SHerbert Xue <method name="visit" return="V" 7653*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7654*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7655*dc5640d1SHerbert Xue deprecated="not deprecated"> 7656*dc5640d1SHerbert Xue <param name="untargettedBinding" type="com.google.inject.spi.UntargettedBinding<? extends T>"/> 7657*dc5640d1SHerbert Xue </method> 7658*dc5640d1SHerbert Xue <method name="visit" return="V" 7659*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7660*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7661*dc5640d1SHerbert Xue deprecated="not deprecated"> 7662*dc5640d1SHerbert Xue <param name="constructorBinding" type="com.google.inject.spi.ConstructorBinding<? extends T>"/> 7663*dc5640d1SHerbert Xue </method> 7664*dc5640d1SHerbert Xue <method name="visit" return="V" 7665*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7666*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7667*dc5640d1SHerbert Xue deprecated="not deprecated"> 7668*dc5640d1SHerbert Xue <param name="convertedConstantBinding" type="com.google.inject.spi.ConvertedConstantBinding<? extends T>"/> 7669*dc5640d1SHerbert Xue </method> 7670*dc5640d1SHerbert Xue <method name="visit" return="V" 7671*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7672*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7673*dc5640d1SHerbert Xue deprecated="not deprecated"> 7674*dc5640d1SHerbert Xue <param name="providerBinding" type="com.google.inject.spi.ProviderBinding<? extends T>"/> 7675*dc5640d1SHerbert Xue </method> 7676*dc5640d1SHerbert Xue <doc> 7677*dc5640d1SHerbert Xue <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to {@link 7678*dc5640d1SHerbert Xue #visitOther(Binding)}, returning its result. 7679*dc5640d1SHerbert Xue 7680*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with 7681*dc5640d1SHerbert Xue {@code return null} if no return type is needed. 7682*dc5640d1SHerbert Xue 7683*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 7684*dc5640d1SHerbert Xue @since 2.0]]> 7685*dc5640d1SHerbert Xue </doc> 7686*dc5640d1SHerbert Xue </class> 7687*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.DefaultBindingTargetVisitor --> 7688*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.DefaultElementVisitor --> 7689*dc5640d1SHerbert Xue <class name="DefaultElementVisitor" extends="java.lang.Object" 7690*dc5640d1SHerbert Xue abstract="true" 7691*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7692*dc5640d1SHerbert Xue deprecated="not deprecated"> 7693*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.ElementVisitor<V>"/> 7694*dc5640d1SHerbert Xue <constructor name="DefaultElementVisitor" 7695*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7696*dc5640d1SHerbert Xue deprecated="not deprecated"> 7697*dc5640d1SHerbert Xue </constructor> 7698*dc5640d1SHerbert Xue <method name="visitOther" return="V" 7699*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7700*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 7701*dc5640d1SHerbert Xue deprecated="not deprecated"> 7702*dc5640d1SHerbert Xue <param name="element" type="com.google.inject.spi.Element"/> 7703*dc5640d1SHerbert Xue <doc> 7704*dc5640d1SHerbert Xue <![CDATA[Default visit implementation. Returns {@code null}.]]> 7705*dc5640d1SHerbert Xue </doc> 7706*dc5640d1SHerbert Xue </method> 7707*dc5640d1SHerbert Xue <method name="visit" return="V" 7708*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7709*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7710*dc5640d1SHerbert Xue deprecated="not deprecated"> 7711*dc5640d1SHerbert Xue <param name="message" type="com.google.inject.spi.Message"/> 7712*dc5640d1SHerbert Xue </method> 7713*dc5640d1SHerbert Xue <method name="visit" return="V" 7714*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7715*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7716*dc5640d1SHerbert Xue deprecated="not deprecated"> 7717*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.Binding<T>"/> 7718*dc5640d1SHerbert Xue </method> 7719*dc5640d1SHerbert Xue <method name="visit" return="V" 7720*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7721*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7722*dc5640d1SHerbert Xue deprecated="not deprecated"> 7723*dc5640d1SHerbert Xue <param name="interceptorBinding" type="com.google.inject.spi.InterceptorBinding"/> 7724*dc5640d1SHerbert Xue </method> 7725*dc5640d1SHerbert Xue <method name="visit" return="V" 7726*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7727*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7728*dc5640d1SHerbert Xue deprecated="not deprecated"> 7729*dc5640d1SHerbert Xue <param name="scopeBinding" type="com.google.inject.spi.ScopeBinding"/> 7730*dc5640d1SHerbert Xue </method> 7731*dc5640d1SHerbert Xue <method name="visit" return="V" 7732*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7733*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7734*dc5640d1SHerbert Xue deprecated="not deprecated"> 7735*dc5640d1SHerbert Xue <param name="typeConverterBinding" type="com.google.inject.spi.TypeConverterBinding"/> 7736*dc5640d1SHerbert Xue </method> 7737*dc5640d1SHerbert Xue <method name="visit" return="V" 7738*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7739*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7740*dc5640d1SHerbert Xue deprecated="not deprecated"> 7741*dc5640d1SHerbert Xue <param name="providerLookup" type="com.google.inject.spi.ProviderLookup<T>"/> 7742*dc5640d1SHerbert Xue </method> 7743*dc5640d1SHerbert Xue <method name="visit" return="V" 7744*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7745*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7746*dc5640d1SHerbert Xue deprecated="not deprecated"> 7747*dc5640d1SHerbert Xue <param name="injectionRequest" type="com.google.inject.spi.InjectionRequest<?>"/> 7748*dc5640d1SHerbert Xue </method> 7749*dc5640d1SHerbert Xue <method name="visit" return="V" 7750*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7751*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7752*dc5640d1SHerbert Xue deprecated="not deprecated"> 7753*dc5640d1SHerbert Xue <param name="staticInjectionRequest" type="com.google.inject.spi.StaticInjectionRequest"/> 7754*dc5640d1SHerbert Xue </method> 7755*dc5640d1SHerbert Xue <method name="visit" return="V" 7756*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7757*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7758*dc5640d1SHerbert Xue deprecated="not deprecated"> 7759*dc5640d1SHerbert Xue <param name="privateElements" type="com.google.inject.spi.PrivateElements"/> 7760*dc5640d1SHerbert Xue </method> 7761*dc5640d1SHerbert Xue <method name="visit" return="V" 7762*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7763*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7764*dc5640d1SHerbert Xue deprecated="not deprecated"> 7765*dc5640d1SHerbert Xue <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup<T>"/> 7766*dc5640d1SHerbert Xue </method> 7767*dc5640d1SHerbert Xue <method name="visit" return="V" 7768*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7769*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7770*dc5640d1SHerbert Xue deprecated="not deprecated"> 7771*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/> 7772*dc5640d1SHerbert Xue </method> 7773*dc5640d1SHerbert Xue <method name="visit" return="V" 7774*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7775*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7776*dc5640d1SHerbert Xue deprecated="not deprecated"> 7777*dc5640d1SHerbert Xue <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/> 7778*dc5640d1SHerbert Xue </method> 7779*dc5640d1SHerbert Xue <method name="visit" return="V" 7780*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7781*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7782*dc5640d1SHerbert Xue deprecated="not deprecated"> 7783*dc5640d1SHerbert Xue <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/> 7784*dc5640d1SHerbert Xue </method> 7785*dc5640d1SHerbert Xue <doc> 7786*dc5640d1SHerbert Xue <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to 7787*dc5640d1SHerbert Xue {@link #visitOther(Element)}, returning its result. 7788*dc5640d1SHerbert Xue 7789*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with 7790*dc5640d1SHerbert Xue {@code return null} if no return type is needed. 7791*dc5640d1SHerbert Xue 7792*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 7793*dc5640d1SHerbert Xue @since 2.0]]> 7794*dc5640d1SHerbert Xue </doc> 7795*dc5640d1SHerbert Xue </class> 7796*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.DefaultElementVisitor --> 7797*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.Dependency --> 7798*dc5640d1SHerbert Xue <class name="Dependency" extends="java.lang.Object" 7799*dc5640d1SHerbert Xue abstract="false" 7800*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 7801*dc5640d1SHerbert Xue deprecated="not deprecated"> 7802*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.spi.Dependency<T>" 7803*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7804*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 7805*dc5640d1SHerbert Xue deprecated="not deprecated"> 7806*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 7807*dc5640d1SHerbert Xue <doc> 7808*dc5640d1SHerbert Xue <![CDATA[Returns a new dependency that is not attached to an injection point. The returned dependency is 7809*dc5640d1SHerbert Xue nullable.]]> 7810*dc5640d1SHerbert Xue </doc> 7811*dc5640d1SHerbert Xue </method> 7812*dc5640d1SHerbert Xue <method name="forInjectionPoints" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 7813*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7814*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 7815*dc5640d1SHerbert Xue deprecated="not deprecated"> 7816*dc5640d1SHerbert Xue <param name="injectionPoints" type="java.util.Set<com.google.inject.spi.InjectionPoint>"/> 7817*dc5640d1SHerbert Xue <doc> 7818*dc5640d1SHerbert Xue <![CDATA[Returns the dependencies from the given injection points.]]> 7819*dc5640d1SHerbert Xue </doc> 7820*dc5640d1SHerbert Xue </method> 7821*dc5640d1SHerbert Xue <method name="getKey" return="com.google.inject.Key<T>" 7822*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7823*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7824*dc5640d1SHerbert Xue deprecated="not deprecated"> 7825*dc5640d1SHerbert Xue <doc> 7826*dc5640d1SHerbert Xue <![CDATA[Returns the key to the binding that satisfies this dependency.]]> 7827*dc5640d1SHerbert Xue </doc> 7828*dc5640d1SHerbert Xue </method> 7829*dc5640d1SHerbert Xue <method name="isNullable" return="boolean" 7830*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7831*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7832*dc5640d1SHerbert Xue deprecated="not deprecated"> 7833*dc5640d1SHerbert Xue <doc> 7834*dc5640d1SHerbert Xue <![CDATA[Returns true if null is a legal value for this dependency.]]> 7835*dc5640d1SHerbert Xue </doc> 7836*dc5640d1SHerbert Xue </method> 7837*dc5640d1SHerbert Xue <method name="getInjectionPoint" return="com.google.inject.spi.InjectionPoint" 7838*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7839*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7840*dc5640d1SHerbert Xue deprecated="not deprecated"> 7841*dc5640d1SHerbert Xue <doc> 7842*dc5640d1SHerbert Xue <![CDATA[Returns the injection point to which this dependency belongs, or null if this dependency isn't 7843*dc5640d1SHerbert Xue attached to a particular injection point.]]> 7844*dc5640d1SHerbert Xue </doc> 7845*dc5640d1SHerbert Xue </method> 7846*dc5640d1SHerbert Xue <method name="getParameterIndex" return="int" 7847*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7848*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7849*dc5640d1SHerbert Xue deprecated="not deprecated"> 7850*dc5640d1SHerbert Xue <doc> 7851*dc5640d1SHerbert Xue <![CDATA[Returns the index of this dependency in the injection point's parameter list, or {@code -1} if 7852*dc5640d1SHerbert Xue this dependency does not belong to a parameter list. Only method and constuctor dependencies 7853*dc5640d1SHerbert Xue are elements in a parameter list.]]> 7854*dc5640d1SHerbert Xue </doc> 7855*dc5640d1SHerbert Xue </method> 7856*dc5640d1SHerbert Xue <method name="hashCode" return="int" 7857*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7858*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7859*dc5640d1SHerbert Xue deprecated="not deprecated"> 7860*dc5640d1SHerbert Xue </method> 7861*dc5640d1SHerbert Xue <method name="equals" return="boolean" 7862*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7863*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7864*dc5640d1SHerbert Xue deprecated="not deprecated"> 7865*dc5640d1SHerbert Xue <param name="o" type="java.lang.Object"/> 7866*dc5640d1SHerbert Xue </method> 7867*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 7868*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7869*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7870*dc5640d1SHerbert Xue deprecated="not deprecated"> 7871*dc5640d1SHerbert Xue </method> 7872*dc5640d1SHerbert Xue <doc> 7873*dc5640d1SHerbert Xue <![CDATA[A variable that can be resolved by an injector. 7874*dc5640d1SHerbert Xue 7875*dc5640d1SHerbert Xue <p>Use {@link #get} to build a freestanding dependency, or {@link InjectionPoint} to build one 7876*dc5640d1SHerbert Xue that's attached to a constructor, method or field. 7877*dc5640d1SHerbert Xue 7878*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 7879*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 7880*dc5640d1SHerbert Xue @since 2.0]]> 7881*dc5640d1SHerbert Xue </doc> 7882*dc5640d1SHerbert Xue </class> 7883*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.Dependency --> 7884*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.DisableCircularProxiesOption --> 7885*dc5640d1SHerbert Xue <class name="DisableCircularProxiesOption" extends="java.lang.Object" 7886*dc5640d1SHerbert Xue abstract="false" 7887*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 7888*dc5640d1SHerbert Xue deprecated="not deprecated"> 7889*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 7890*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 7891*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7892*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7893*dc5640d1SHerbert Xue deprecated="not deprecated"> 7894*dc5640d1SHerbert Xue </method> 7895*dc5640d1SHerbert Xue <method name="applyTo" 7896*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7897*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7898*dc5640d1SHerbert Xue deprecated="not deprecated"> 7899*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 7900*dc5640d1SHerbert Xue </method> 7901*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 7902*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7903*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7904*dc5640d1SHerbert Xue deprecated="not deprecated"> 7905*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 7906*dc5640d1SHerbert Xue </method> 7907*dc5640d1SHerbert Xue <doc> 7908*dc5640d1SHerbert Xue <![CDATA[A request to disable circular proxies. 7909*dc5640d1SHerbert Xue 7910*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 7911*dc5640d1SHerbert Xue @since 3.0]]> 7912*dc5640d1SHerbert Xue </doc> 7913*dc5640d1SHerbert Xue </class> 7914*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.DisableCircularProxiesOption --> 7915*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.Element --> 7916*dc5640d1SHerbert Xue <interface name="Element" abstract="true" 7917*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7918*dc5640d1SHerbert Xue deprecated="not deprecated"> 7919*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 7920*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7921*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7922*dc5640d1SHerbert Xue deprecated="not deprecated"> 7923*dc5640d1SHerbert Xue <doc> 7924*dc5640d1SHerbert Xue <![CDATA[Returns an arbitrary object containing information about the "place" where this element was 7925*dc5640d1SHerbert Xue configured. Used by Guice in the production of descriptive error messages. 7926*dc5640d1SHerbert Xue 7927*dc5640d1SHerbert Xue <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good 7928*dc5640d1SHerbert Xue example. Tools should simply call {@code toString()} on the source object if the type is 7929*dc5640d1SHerbert Xue unfamiliar.]]> 7930*dc5640d1SHerbert Xue </doc> 7931*dc5640d1SHerbert Xue </method> 7932*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 7933*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7934*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7935*dc5640d1SHerbert Xue deprecated="not deprecated"> 7936*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 7937*dc5640d1SHerbert Xue <doc> 7938*dc5640d1SHerbert Xue <![CDATA[Accepts an element visitor. Invokes the visitor method specific to this element's type. 7939*dc5640d1SHerbert Xue 7940*dc5640d1SHerbert Xue @param visitor to call back on]]> 7941*dc5640d1SHerbert Xue </doc> 7942*dc5640d1SHerbert Xue </method> 7943*dc5640d1SHerbert Xue <method name="applyTo" 7944*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7945*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7946*dc5640d1SHerbert Xue deprecated="not deprecated"> 7947*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 7948*dc5640d1SHerbert Xue <doc> 7949*dc5640d1SHerbert Xue <![CDATA[Writes this module element to the given binder (optional operation). 7950*dc5640d1SHerbert Xue 7951*dc5640d1SHerbert Xue @param binder to apply configuration element to 7952*dc5640d1SHerbert Xue @throws UnsupportedOperationException if the {@code applyTo} method is not supported by this 7953*dc5640d1SHerbert Xue element.]]> 7954*dc5640d1SHerbert Xue </doc> 7955*dc5640d1SHerbert Xue </method> 7956*dc5640d1SHerbert Xue <doc> 7957*dc5640d1SHerbert Xue <![CDATA[A core component of a module or injector. 7958*dc5640d1SHerbert Xue 7959*dc5640d1SHerbert Xue <p>The elements of a module can be inspected, validated and rewritten. Use {@link 7960*dc5640d1SHerbert Xue Elements#getElements(com.google.inject.Module[]) Elements.getElements()} to read the elements 7961*dc5640d1SHerbert Xue from a module, and {@link Elements#getModule(Iterable) Elements.getModule()} to rewrite them. 7962*dc5640d1SHerbert Xue This can be used for static analysis and generation of Guice modules. 7963*dc5640d1SHerbert Xue 7964*dc5640d1SHerbert Xue <p>The elements of an injector can be inspected and exercised. Use {@link 7965*dc5640d1SHerbert Xue com.google.inject.Injector#getBindings Injector.getBindings()} to reflect on Guice injectors. 7966*dc5640d1SHerbert Xue 7967*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 7968*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 7969*dc5640d1SHerbert Xue @since 2.0]]> 7970*dc5640d1SHerbert Xue </doc> 7971*dc5640d1SHerbert Xue </interface> 7972*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.Element --> 7973*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.Elements --> 7974*dc5640d1SHerbert Xue <class name="Elements" extends="java.lang.Object" 7975*dc5640d1SHerbert Xue abstract="false" 7976*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 7977*dc5640d1SHerbert Xue deprecated="not deprecated"> 7978*dc5640d1SHerbert Xue <constructor name="Elements" 7979*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7980*dc5640d1SHerbert Xue deprecated="not deprecated"> 7981*dc5640d1SHerbert Xue </constructor> 7982*dc5640d1SHerbert Xue <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 7983*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7984*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 7985*dc5640d1SHerbert Xue deprecated="not deprecated"> 7986*dc5640d1SHerbert Xue <param name="modules" type="com.google.inject.Module[]"/> 7987*dc5640d1SHerbert Xue <doc> 7988*dc5640d1SHerbert Xue <![CDATA[Records the elements executed by {@code modules}.]]> 7989*dc5640d1SHerbert Xue </doc> 7990*dc5640d1SHerbert Xue </method> 7991*dc5640d1SHerbert Xue <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 7992*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7993*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 7994*dc5640d1SHerbert Xue deprecated="not deprecated"> 7995*dc5640d1SHerbert Xue <param name="stage" type="com.google.inject.Stage"/> 7996*dc5640d1SHerbert Xue <param name="modules" type="com.google.inject.Module[]"/> 7997*dc5640d1SHerbert Xue <doc> 7998*dc5640d1SHerbert Xue <![CDATA[Records the elements executed by {@code modules}.]]> 7999*dc5640d1SHerbert Xue </doc> 8000*dc5640d1SHerbert Xue </method> 8001*dc5640d1SHerbert Xue <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 8002*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8003*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 8004*dc5640d1SHerbert Xue deprecated="not deprecated"> 8005*dc5640d1SHerbert Xue <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 8006*dc5640d1SHerbert Xue <doc> 8007*dc5640d1SHerbert Xue <![CDATA[Records the elements executed by {@code modules}.]]> 8008*dc5640d1SHerbert Xue </doc> 8009*dc5640d1SHerbert Xue </method> 8010*dc5640d1SHerbert Xue <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 8011*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8012*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 8013*dc5640d1SHerbert Xue deprecated="not deprecated"> 8014*dc5640d1SHerbert Xue <param name="stage" type="com.google.inject.Stage"/> 8015*dc5640d1SHerbert Xue <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 8016*dc5640d1SHerbert Xue <doc> 8017*dc5640d1SHerbert Xue <![CDATA[Records the elements executed by {@code modules}.]]> 8018*dc5640d1SHerbert Xue </doc> 8019*dc5640d1SHerbert Xue </method> 8020*dc5640d1SHerbert Xue <method name="getModule" return="com.google.inject.Module" 8021*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8022*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 8023*dc5640d1SHerbert Xue deprecated="not deprecated"> 8024*dc5640d1SHerbert Xue <param name="elements" type="java.lang.Iterable<? extends com.google.inject.spi.Element>"/> 8025*dc5640d1SHerbert Xue <doc> 8026*dc5640d1SHerbert Xue <![CDATA[Returns the module composed of {@code elements}.]]> 8027*dc5640d1SHerbert Xue </doc> 8028*dc5640d1SHerbert Xue </method> 8029*dc5640d1SHerbert Xue <doc> 8030*dc5640d1SHerbert Xue <![CDATA[Exposes elements of a module so they can be inspected, validated or {@link 8031*dc5640d1SHerbert Xue Element#applyTo(Binder) rewritten}. 8032*dc5640d1SHerbert Xue 8033*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 8034*dc5640d1SHerbert Xue @since 2.0]]> 8035*dc5640d1SHerbert Xue </doc> 8036*dc5640d1SHerbert Xue </class> 8037*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.Elements --> 8038*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ElementVisitor --> 8039*dc5640d1SHerbert Xue <interface name="ElementVisitor" abstract="true" 8040*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8041*dc5640d1SHerbert Xue deprecated="not deprecated"> 8042*dc5640d1SHerbert Xue <method name="visit" return="V" 8043*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8044*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8045*dc5640d1SHerbert Xue deprecated="not deprecated"> 8046*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.Binding<T>"/> 8047*dc5640d1SHerbert Xue <doc> 8048*dc5640d1SHerbert Xue <![CDATA[Visit a mapping from a key (type and optional annotation) to the strategy for getting 8049*dc5640d1SHerbert Xue instances of the type.]]> 8050*dc5640d1SHerbert Xue </doc> 8051*dc5640d1SHerbert Xue </method> 8052*dc5640d1SHerbert Xue <method name="visit" return="V" 8053*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8054*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8055*dc5640d1SHerbert Xue deprecated="not deprecated"> 8056*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.InterceptorBinding"/> 8057*dc5640d1SHerbert Xue <doc> 8058*dc5640d1SHerbert Xue <![CDATA[Visit a registration of interceptors for matching methods of matching classes.]]> 8059*dc5640d1SHerbert Xue </doc> 8060*dc5640d1SHerbert Xue </method> 8061*dc5640d1SHerbert Xue <method name="visit" return="V" 8062*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8063*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8064*dc5640d1SHerbert Xue deprecated="not deprecated"> 8065*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ScopeBinding"/> 8066*dc5640d1SHerbert Xue <doc> 8067*dc5640d1SHerbert Xue <![CDATA[Visit a registration of a scope annotation with the scope that implements it.]]> 8068*dc5640d1SHerbert Xue </doc> 8069*dc5640d1SHerbert Xue </method> 8070*dc5640d1SHerbert Xue <method name="visit" return="V" 8071*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8072*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8073*dc5640d1SHerbert Xue deprecated="not deprecated"> 8074*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.TypeConverterBinding"/> 8075*dc5640d1SHerbert Xue <doc> 8076*dc5640d1SHerbert Xue <![CDATA[Visit a registration of type converters for matching target types.]]> 8077*dc5640d1SHerbert Xue </doc> 8078*dc5640d1SHerbert Xue </method> 8079*dc5640d1SHerbert Xue <method name="visit" return="V" 8080*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8081*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8082*dc5640d1SHerbert Xue deprecated="not deprecated"> 8083*dc5640d1SHerbert Xue <param name="request" type="com.google.inject.spi.InjectionRequest<?>"/> 8084*dc5640d1SHerbert Xue <doc> 8085*dc5640d1SHerbert Xue <![CDATA[Visit a request to inject the instance fields and methods of an instance.]]> 8086*dc5640d1SHerbert Xue </doc> 8087*dc5640d1SHerbert Xue </method> 8088*dc5640d1SHerbert Xue <method name="visit" return="V" 8089*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8090*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8091*dc5640d1SHerbert Xue deprecated="not deprecated"> 8092*dc5640d1SHerbert Xue <param name="request" type="com.google.inject.spi.StaticInjectionRequest"/> 8093*dc5640d1SHerbert Xue <doc> 8094*dc5640d1SHerbert Xue <![CDATA[Visit a request to inject the static fields and methods of type.]]> 8095*dc5640d1SHerbert Xue </doc> 8096*dc5640d1SHerbert Xue </method> 8097*dc5640d1SHerbert Xue <method name="visit" return="V" 8098*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8099*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8100*dc5640d1SHerbert Xue deprecated="not deprecated"> 8101*dc5640d1SHerbert Xue <param name="lookup" type="com.google.inject.spi.ProviderLookup<T>"/> 8102*dc5640d1SHerbert Xue <doc> 8103*dc5640d1SHerbert Xue <![CDATA[Visit a lookup of the provider for a type.]]> 8104*dc5640d1SHerbert Xue </doc> 8105*dc5640d1SHerbert Xue </method> 8106*dc5640d1SHerbert Xue <method name="visit" return="V" 8107*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8108*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8109*dc5640d1SHerbert Xue deprecated="not deprecated"> 8110*dc5640d1SHerbert Xue <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup<T>"/> 8111*dc5640d1SHerbert Xue <doc> 8112*dc5640d1SHerbert Xue <![CDATA[Visit a lookup of the members injector.]]> 8113*dc5640d1SHerbert Xue </doc> 8114*dc5640d1SHerbert Xue </method> 8115*dc5640d1SHerbert Xue <method name="visit" return="V" 8116*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8117*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8118*dc5640d1SHerbert Xue deprecated="not deprecated"> 8119*dc5640d1SHerbert Xue <param name="message" type="com.google.inject.spi.Message"/> 8120*dc5640d1SHerbert Xue <doc> 8121*dc5640d1SHerbert Xue <![CDATA[Visit an error message and the context in which it occured.]]> 8122*dc5640d1SHerbert Xue </doc> 8123*dc5640d1SHerbert Xue </method> 8124*dc5640d1SHerbert Xue <method name="visit" return="V" 8125*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8126*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8127*dc5640d1SHerbert Xue deprecated="not deprecated"> 8128*dc5640d1SHerbert Xue <param name="elements" type="com.google.inject.spi.PrivateElements"/> 8129*dc5640d1SHerbert Xue <doc> 8130*dc5640d1SHerbert Xue <![CDATA[Visit a collection of configuration elements for a {@linkplain com.google.inject.PrivateBinder 8131*dc5640d1SHerbert Xue private binder}.]]> 8132*dc5640d1SHerbert Xue </doc> 8133*dc5640d1SHerbert Xue </method> 8134*dc5640d1SHerbert Xue <method name="visit" return="V" 8135*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8136*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8137*dc5640d1SHerbert Xue deprecated="not deprecated"> 8138*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/> 8139*dc5640d1SHerbert Xue <doc> 8140*dc5640d1SHerbert Xue <![CDATA[Visit an injectable type listener binding.]]> 8141*dc5640d1SHerbert Xue </doc> 8142*dc5640d1SHerbert Xue </method> 8143*dc5640d1SHerbert Xue <method name="visit" return="V" 8144*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8145*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8146*dc5640d1SHerbert Xue deprecated="not deprecated"> 8147*dc5640d1SHerbert Xue <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/> 8148*dc5640d1SHerbert Xue <doc> 8149*dc5640d1SHerbert Xue <![CDATA[Visit a require explicit bindings command. 8150*dc5640d1SHerbert Xue 8151*dc5640d1SHerbert Xue @since 3.0]]> 8152*dc5640d1SHerbert Xue </doc> 8153*dc5640d1SHerbert Xue </method> 8154*dc5640d1SHerbert Xue <method name="visit" return="V" 8155*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8156*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8157*dc5640d1SHerbert Xue deprecated="not deprecated"> 8158*dc5640d1SHerbert Xue <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/> 8159*dc5640d1SHerbert Xue <doc> 8160*dc5640d1SHerbert Xue <![CDATA[Visit a disable circular proxies command. 8161*dc5640d1SHerbert Xue 8162*dc5640d1SHerbert Xue @since 3.0]]> 8163*dc5640d1SHerbert Xue </doc> 8164*dc5640d1SHerbert Xue </method> 8165*dc5640d1SHerbert Xue <doc> 8166*dc5640d1SHerbert Xue <![CDATA[Visit elements. 8167*dc5640d1SHerbert Xue 8168*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with 8169*dc5640d1SHerbert Xue {@code return null} if no return type is needed. 8170*dc5640d1SHerbert Xue 8171*dc5640d1SHerbert Xue @since 2.0]]> 8172*dc5640d1SHerbert Xue </doc> 8173*dc5640d1SHerbert Xue </interface> 8174*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ElementVisitor --> 8175*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ExposedBinding --> 8176*dc5640d1SHerbert Xue <interface name="ExposedBinding" abstract="true" 8177*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8178*dc5640d1SHerbert Xue deprecated="not deprecated"> 8179*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 8180*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 8181*dc5640d1SHerbert Xue <method name="getPrivateElements" return="com.google.inject.spi.PrivateElements" 8182*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8183*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8184*dc5640d1SHerbert Xue deprecated="not deprecated"> 8185*dc5640d1SHerbert Xue <doc> 8186*dc5640d1SHerbert Xue <![CDATA[Returns the enclosed environment that holds the original binding.]]> 8187*dc5640d1SHerbert Xue </doc> 8188*dc5640d1SHerbert Xue </method> 8189*dc5640d1SHerbert Xue <method name="applyTo" 8190*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8191*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8192*dc5640d1SHerbert Xue deprecated="not deprecated"> 8193*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 8194*dc5640d1SHerbert Xue <doc> 8195*dc5640d1SHerbert Xue <![CDATA[Unsupported. Always throws {@link UnsupportedOperationException}.]]> 8196*dc5640d1SHerbert Xue </doc> 8197*dc5640d1SHerbert Xue </method> 8198*dc5640d1SHerbert Xue <doc> 8199*dc5640d1SHerbert Xue <![CDATA[A binding to a key exposed from an enclosed private environment. 8200*dc5640d1SHerbert Xue 8201*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 8202*dc5640d1SHerbert Xue @since 2.0]]> 8203*dc5640d1SHerbert Xue </doc> 8204*dc5640d1SHerbert Xue </interface> 8205*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ExposedBinding --> 8206*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.HasDependencies --> 8207*dc5640d1SHerbert Xue <interface name="HasDependencies" abstract="true" 8208*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8209*dc5640d1SHerbert Xue deprecated="not deprecated"> 8210*dc5640d1SHerbert Xue <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 8211*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8212*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8213*dc5640d1SHerbert Xue deprecated="not deprecated"> 8214*dc5640d1SHerbert Xue <doc> 8215*dc5640d1SHerbert Xue <![CDATA[Returns the known dependencies for this type. If this has dependencies whose values are not 8216*dc5640d1SHerbert Xue known statically, a dependency for the {@link com.google.inject.Injector Injector} will be 8217*dc5640d1SHerbert Xue included in the returned set. 8218*dc5640d1SHerbert Xue 8219*dc5640d1SHerbert Xue @return a possibly empty set]]> 8220*dc5640d1SHerbert Xue </doc> 8221*dc5640d1SHerbert Xue </method> 8222*dc5640d1SHerbert Xue <doc> 8223*dc5640d1SHerbert Xue <![CDATA[Implemented by {@link com.google.inject.Binding bindings}, {@link com.google.inject.Provider 8224*dc5640d1SHerbert Xue providers} and instances that expose their dependencies explicitly. 8225*dc5640d1SHerbert Xue 8226*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 8227*dc5640d1SHerbert Xue @since 2.0]]> 8228*dc5640d1SHerbert Xue </doc> 8229*dc5640d1SHerbert Xue </interface> 8230*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.HasDependencies --> 8231*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.InjectionListener --> 8232*dc5640d1SHerbert Xue <interface name="InjectionListener" abstract="true" 8233*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8234*dc5640d1SHerbert Xue deprecated="not deprecated"> 8235*dc5640d1SHerbert Xue <method name="afterInjection" 8236*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8237*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8238*dc5640d1SHerbert Xue deprecated="not deprecated"> 8239*dc5640d1SHerbert Xue <param name="injectee" type="I"/> 8240*dc5640d1SHerbert Xue <doc> 8241*dc5640d1SHerbert Xue <![CDATA[Invoked by Guice after it injects the fields and methods of instance. 8242*dc5640d1SHerbert Xue 8243*dc5640d1SHerbert Xue @param injectee instance that Guice injected dependencies into]]> 8244*dc5640d1SHerbert Xue </doc> 8245*dc5640d1SHerbert Xue </method> 8246*dc5640d1SHerbert Xue <doc> 8247*dc5640d1SHerbert Xue <![CDATA[Listens for injections into instances of type {@code I}. Useful for performing further 8248*dc5640d1SHerbert Xue injections, post-injection initialization, and more. 8249*dc5640d1SHerbert Xue 8250*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 8251*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 8252*dc5640d1SHerbert Xue @since 2.0]]> 8253*dc5640d1SHerbert Xue </doc> 8254*dc5640d1SHerbert Xue </interface> 8255*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.InjectionListener --> 8256*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.InjectionPoint --> 8257*dc5640d1SHerbert Xue <class name="InjectionPoint" extends="java.lang.Object" 8258*dc5640d1SHerbert Xue abstract="false" 8259*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 8260*dc5640d1SHerbert Xue deprecated="not deprecated"> 8261*dc5640d1SHerbert Xue <method name="getMember" return="java.lang.reflect.Member" 8262*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8263*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8264*dc5640d1SHerbert Xue deprecated="not deprecated"> 8265*dc5640d1SHerbert Xue <doc> 8266*dc5640d1SHerbert Xue <![CDATA[Returns the injected constructor, field, or method.]]> 8267*dc5640d1SHerbert Xue </doc> 8268*dc5640d1SHerbert Xue </method> 8269*dc5640d1SHerbert Xue <method name="getDependencies" return="java.util.List<com.google.inject.spi.Dependency<?>>" 8270*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8271*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8272*dc5640d1SHerbert Xue deprecated="not deprecated"> 8273*dc5640d1SHerbert Xue <doc> 8274*dc5640d1SHerbert Xue <![CDATA[Returns the dependencies for this injection point. If the injection point is for a method or 8275*dc5640d1SHerbert Xue constructor, the dependencies will correspond to that member's parameters. Field injection 8276*dc5640d1SHerbert Xue points always have a single dependency for the field itself. 8277*dc5640d1SHerbert Xue 8278*dc5640d1SHerbert Xue @return a possibly-empty list]]> 8279*dc5640d1SHerbert Xue </doc> 8280*dc5640d1SHerbert Xue </method> 8281*dc5640d1SHerbert Xue <method name="isOptional" return="boolean" 8282*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8283*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8284*dc5640d1SHerbert Xue deprecated="not deprecated"> 8285*dc5640d1SHerbert Xue <doc> 8286*dc5640d1SHerbert Xue <![CDATA[Returns true if this injection point shall be skipped if the injector cannot resolve bindings 8287*dc5640d1SHerbert Xue for all required dependencies. Both explicit bindings (as specified in a module), and implicit 8288*dc5640d1SHerbert Xue bindings ({@literal @}{@link com.google.inject.ImplementedBy ImplementedBy}, default 8289*dc5640d1SHerbert Xue constructors etc.) may be used to satisfy optional injection points.]]> 8290*dc5640d1SHerbert Xue </doc> 8291*dc5640d1SHerbert Xue </method> 8292*dc5640d1SHerbert Xue <method name="isToolable" return="boolean" 8293*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8294*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8295*dc5640d1SHerbert Xue deprecated="not deprecated"> 8296*dc5640d1SHerbert Xue <doc> 8297*dc5640d1SHerbert Xue <![CDATA[Returns true if the element is annotated with {@literal @}{@link Toolable}. 8298*dc5640d1SHerbert Xue 8299*dc5640d1SHerbert Xue @since 3.0]]> 8300*dc5640d1SHerbert Xue </doc> 8301*dc5640d1SHerbert Xue </method> 8302*dc5640d1SHerbert Xue <method name="getDeclaringType" return="com.google.inject.TypeLiteral<?>" 8303*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8304*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8305*dc5640d1SHerbert Xue deprecated="not deprecated"> 8306*dc5640d1SHerbert Xue <doc> 8307*dc5640d1SHerbert Xue <![CDATA[Returns the generic type that defines this injection point. If the member exists on a 8308*dc5640d1SHerbert Xue parameterized type, the result will include more type information than the member's {@link 8309*dc5640d1SHerbert Xue Member#getDeclaringClass() raw declaring class}. 8310*dc5640d1SHerbert Xue 8311*dc5640d1SHerbert Xue @since 3.0]]> 8312*dc5640d1SHerbert Xue </doc> 8313*dc5640d1SHerbert Xue </method> 8314*dc5640d1SHerbert Xue <method name="equals" return="boolean" 8315*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8316*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8317*dc5640d1SHerbert Xue deprecated="not deprecated"> 8318*dc5640d1SHerbert Xue <param name="o" type="java.lang.Object"/> 8319*dc5640d1SHerbert Xue </method> 8320*dc5640d1SHerbert Xue <method name="hashCode" return="int" 8321*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8322*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8323*dc5640d1SHerbert Xue deprecated="not deprecated"> 8324*dc5640d1SHerbert Xue </method> 8325*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 8326*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8327*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8328*dc5640d1SHerbert Xue deprecated="not deprecated"> 8329*dc5640d1SHerbert Xue </method> 8330*dc5640d1SHerbert Xue <method name="forConstructor" return="com.google.inject.spi.InjectionPoint" 8331*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8332*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 8333*dc5640d1SHerbert Xue deprecated="not deprecated"> 8334*dc5640d1SHerbert Xue <param name="constructor" type="java.lang.reflect.Constructor<T>"/> 8335*dc5640d1SHerbert Xue <doc> 8336*dc5640d1SHerbert Xue <![CDATA[Returns a new injection point for the specified constructor. If the declaring type of {@code 8337*dc5640d1SHerbert Xue constructor} is parameterized (such as {@code List<T>}), prefer the overload that includes a 8338*dc5640d1SHerbert Xue type literal. 8339*dc5640d1SHerbert Xue 8340*dc5640d1SHerbert Xue @param constructor any single constructor present on {@code type}. 8341*dc5640d1SHerbert Xue 8342*dc5640d1SHerbert Xue @since 3.0]]> 8343*dc5640d1SHerbert Xue </doc> 8344*dc5640d1SHerbert Xue </method> 8345*dc5640d1SHerbert Xue <method name="forConstructor" return="com.google.inject.spi.InjectionPoint" 8346*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8347*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 8348*dc5640d1SHerbert Xue deprecated="not deprecated"> 8349*dc5640d1SHerbert Xue <param name="constructor" type="java.lang.reflect.Constructor<T>"/> 8350*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<? extends T>"/> 8351*dc5640d1SHerbert Xue <doc> 8352*dc5640d1SHerbert Xue <![CDATA[Returns a new injection point for the specified constructor of {@code type}. 8353*dc5640d1SHerbert Xue 8354*dc5640d1SHerbert Xue @param constructor any single constructor present on {@code type}. 8355*dc5640d1SHerbert Xue @param type the concrete type that defines {@code constructor}. 8356*dc5640d1SHerbert Xue 8357*dc5640d1SHerbert Xue @since 3.0]]> 8358*dc5640d1SHerbert Xue </doc> 8359*dc5640d1SHerbert Xue </method> 8360*dc5640d1SHerbert Xue <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint" 8361*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8362*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 8363*dc5640d1SHerbert Xue deprecated="not deprecated"> 8364*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<?>"/> 8365*dc5640d1SHerbert Xue <doc> 8366*dc5640d1SHerbert Xue <![CDATA[Returns a new injection point for the injectable constructor of {@code type}. 8367*dc5640d1SHerbert Xue 8368*dc5640d1SHerbert Xue @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject}, 8369*dc5640d1SHerbert Xue or a no-arguments constructor that is not private. 8370*dc5640d1SHerbert Xue @throws ConfigurationException if there is no injectable constructor, more than one injectable 8371*dc5640d1SHerbert Xue constructor, or if parameters of the injectable constructor are malformed, such as a 8372*dc5640d1SHerbert Xue parameter with multiple binding annotations.]]> 8373*dc5640d1SHerbert Xue </doc> 8374*dc5640d1SHerbert Xue </method> 8375*dc5640d1SHerbert Xue <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint" 8376*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8377*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 8378*dc5640d1SHerbert Xue deprecated="not deprecated"> 8379*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<?>"/> 8380*dc5640d1SHerbert Xue <doc> 8381*dc5640d1SHerbert Xue <![CDATA[Returns a new injection point for the injectable constructor of {@code type}. 8382*dc5640d1SHerbert Xue 8383*dc5640d1SHerbert Xue @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject}, 8384*dc5640d1SHerbert Xue or a no-arguments constructor that is not private. 8385*dc5640d1SHerbert Xue @throws ConfigurationException if there is no injectable constructor, more than one injectable 8386*dc5640d1SHerbert Xue constructor, or if parameters of the injectable constructor are malformed, such as a 8387*dc5640d1SHerbert Xue parameter with multiple binding annotations.]]> 8388*dc5640d1SHerbert Xue </doc> 8389*dc5640d1SHerbert Xue </method> 8390*dc5640d1SHerbert Xue <method name="forStaticMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 8391*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8392*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 8393*dc5640d1SHerbert Xue deprecated="not deprecated"> 8394*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<?>"/> 8395*dc5640d1SHerbert Xue <doc> 8396*dc5640d1SHerbert Xue <![CDATA[Returns all static method and field injection points on {@code type}. 8397*dc5640d1SHerbert Xue 8398*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All 8399*dc5640d1SHerbert Xue fields are returned and then all methods. Within the fields, supertype fields are returned 8400*dc5640d1SHerbert Xue before subtype fields. Similarly, supertype methods are returned before subtype methods. 8401*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 8402*dc5640d1SHerbert Xue a field with multiple binding annotations. The exception's {@link 8403*dc5640d1SHerbert Xue ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 8404*dc5640d1SHerbert Xue of the valid injection points.]]> 8405*dc5640d1SHerbert Xue </doc> 8406*dc5640d1SHerbert Xue </method> 8407*dc5640d1SHerbert Xue <method name="forStaticMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 8408*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8409*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 8410*dc5640d1SHerbert Xue deprecated="not deprecated"> 8411*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<?>"/> 8412*dc5640d1SHerbert Xue <doc> 8413*dc5640d1SHerbert Xue <![CDATA[Returns all static method and field injection points on {@code type}. 8414*dc5640d1SHerbert Xue 8415*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All 8416*dc5640d1SHerbert Xue fields are returned and then all methods. Within the fields, supertype fields are returned 8417*dc5640d1SHerbert Xue before subtype fields. Similarly, supertype methods are returned before subtype methods. 8418*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 8419*dc5640d1SHerbert Xue a field with multiple binding annotations. The exception's {@link 8420*dc5640d1SHerbert Xue ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 8421*dc5640d1SHerbert Xue of the valid injection points.]]> 8422*dc5640d1SHerbert Xue </doc> 8423*dc5640d1SHerbert Xue </method> 8424*dc5640d1SHerbert Xue <method name="forInstanceMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 8425*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8426*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 8427*dc5640d1SHerbert Xue deprecated="not deprecated"> 8428*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<?>"/> 8429*dc5640d1SHerbert Xue <doc> 8430*dc5640d1SHerbert Xue <![CDATA[Returns all instance method and field injection points on {@code type}. 8431*dc5640d1SHerbert Xue 8432*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All 8433*dc5640d1SHerbert Xue fields are returned and then all methods. Within the fields, supertype fields are returned 8434*dc5640d1SHerbert Xue before subtype fields. Similarly, supertype methods are returned before subtype methods. 8435*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 8436*dc5640d1SHerbert Xue a field with multiple binding annotations. The exception's {@link 8437*dc5640d1SHerbert Xue ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 8438*dc5640d1SHerbert Xue of the valid injection points.]]> 8439*dc5640d1SHerbert Xue </doc> 8440*dc5640d1SHerbert Xue </method> 8441*dc5640d1SHerbert Xue <method name="forInstanceMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 8442*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8443*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 8444*dc5640d1SHerbert Xue deprecated="not deprecated"> 8445*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<?>"/> 8446*dc5640d1SHerbert Xue <doc> 8447*dc5640d1SHerbert Xue <![CDATA[Returns all instance method and field injection points on {@code type}. 8448*dc5640d1SHerbert Xue 8449*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All 8450*dc5640d1SHerbert Xue fields are returned and then all methods. Within the fields, supertype fields are returned 8451*dc5640d1SHerbert Xue before subtype fields. Similarly, supertype methods are returned before subtype methods. 8452*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 8453*dc5640d1SHerbert Xue a field with multiple binding annotations. The exception's {@link 8454*dc5640d1SHerbert Xue ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 8455*dc5640d1SHerbert Xue of the valid injection points.]]> 8456*dc5640d1SHerbert Xue </doc> 8457*dc5640d1SHerbert Xue </method> 8458*dc5640d1SHerbert Xue <doc> 8459*dc5640d1SHerbert Xue <![CDATA[A constructor, field or method that can receive injections. Typically this is a member with the 8460*dc5640d1SHerbert Xue {@literal @}{@link Inject} annotation. For non-private, no argument constructors, the member may 8461*dc5640d1SHerbert Xue omit the annotation. 8462*dc5640d1SHerbert Xue 8463*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 8464*dc5640d1SHerbert Xue @since 2.0]]> 8465*dc5640d1SHerbert Xue </doc> 8466*dc5640d1SHerbert Xue </class> 8467*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.InjectionPoint --> 8468*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.InjectionRequest --> 8469*dc5640d1SHerbert Xue <class name="InjectionRequest" extends="java.lang.Object" 8470*dc5640d1SHerbert Xue abstract="false" 8471*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 8472*dc5640d1SHerbert Xue deprecated="not deprecated"> 8473*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 8474*dc5640d1SHerbert Xue <constructor name="InjectionRequest" type="java.lang.Object, com.google.inject.TypeLiteral<T>, T" 8475*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8476*dc5640d1SHerbert Xue deprecated="not deprecated"> 8477*dc5640d1SHerbert Xue </constructor> 8478*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 8479*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8480*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8481*dc5640d1SHerbert Xue deprecated="not deprecated"> 8482*dc5640d1SHerbert Xue </method> 8483*dc5640d1SHerbert Xue <method name="getInstance" return="T" 8484*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8485*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8486*dc5640d1SHerbert Xue deprecated="not deprecated"> 8487*dc5640d1SHerbert Xue </method> 8488*dc5640d1SHerbert Xue <method name="getType" return="com.google.inject.TypeLiteral<T>" 8489*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8490*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8491*dc5640d1SHerbert Xue deprecated="not deprecated"> 8492*dc5640d1SHerbert Xue </method> 8493*dc5640d1SHerbert Xue <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 8494*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8495*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8496*dc5640d1SHerbert Xue deprecated="not deprecated"> 8497*dc5640d1SHerbert Xue <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/> 8498*dc5640d1SHerbert Xue <doc> 8499*dc5640d1SHerbert Xue <![CDATA[Returns the instance methods and fields of {@code instance} that will be injected to fulfill 8500*dc5640d1SHerbert Xue this request. 8501*dc5640d1SHerbert Xue 8502*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All 8503*dc5640d1SHerbert Xue fields are returned and then all methods. Within the fields, supertype fields are returned 8504*dc5640d1SHerbert Xue before subtype fields. Similarly, supertype methods are returned before subtype methods. 8505*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on the class of {@code 8506*dc5640d1SHerbert Xue instance}, such as a field with multiple binding annotations. The exception's {@link 8507*dc5640d1SHerbert Xue ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 8508*dc5640d1SHerbert Xue of the valid injection points.]]> 8509*dc5640d1SHerbert Xue </doc> 8510*dc5640d1SHerbert Xue </method> 8511*dc5640d1SHerbert Xue <method name="acceptVisitor" return="R" 8512*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8513*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8514*dc5640d1SHerbert Xue deprecated="not deprecated"> 8515*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<R>"/> 8516*dc5640d1SHerbert Xue </method> 8517*dc5640d1SHerbert Xue <method name="applyTo" 8518*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8519*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8520*dc5640d1SHerbert Xue deprecated="not deprecated"> 8521*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 8522*dc5640d1SHerbert Xue </method> 8523*dc5640d1SHerbert Xue <doc> 8524*dc5640d1SHerbert Xue <![CDATA[A request to inject the instance fields and methods of an instance. Requests are created 8525*dc5640d1SHerbert Xue explicitly in a module using {@link com.google.inject.Binder#requestInjection(Object) 8526*dc5640d1SHerbert Xue requestInjection()} statements: 8527*dc5640d1SHerbert Xue <pre> 8528*dc5640d1SHerbert Xue requestInjection(serviceInstance);</pre> 8529*dc5640d1SHerbert Xue 8530*dc5640d1SHerbert Xue @author [email protected] (Mike Ward) 8531*dc5640d1SHerbert Xue @since 2.0]]> 8532*dc5640d1SHerbert Xue </doc> 8533*dc5640d1SHerbert Xue </class> 8534*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.InjectionRequest --> 8535*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.InstanceBinding --> 8536*dc5640d1SHerbert Xue <interface name="InstanceBinding" abstract="true" 8537*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8538*dc5640d1SHerbert Xue deprecated="not deprecated"> 8539*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 8540*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 8541*dc5640d1SHerbert Xue <method name="getInstance" return="T" 8542*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8543*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8544*dc5640d1SHerbert Xue deprecated="not deprecated"> 8545*dc5640d1SHerbert Xue <doc> 8546*dc5640d1SHerbert Xue <![CDATA[Returns the user-supplied instance.]]> 8547*dc5640d1SHerbert Xue </doc> 8548*dc5640d1SHerbert Xue </method> 8549*dc5640d1SHerbert Xue <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 8550*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8551*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8552*dc5640d1SHerbert Xue deprecated="not deprecated"> 8553*dc5640d1SHerbert Xue <doc> 8554*dc5640d1SHerbert Xue <![CDATA[Returns the field and method injection points of the instance, injected at injector-creation 8555*dc5640d1SHerbert Xue time only. 8556*dc5640d1SHerbert Xue 8557*dc5640d1SHerbert Xue @return a possibly empty set]]> 8558*dc5640d1SHerbert Xue </doc> 8559*dc5640d1SHerbert Xue </method> 8560*dc5640d1SHerbert Xue <doc> 8561*dc5640d1SHerbert Xue <![CDATA[A binding to a single instance. The same instance is returned for every injection. 8562*dc5640d1SHerbert Xue 8563*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 8564*dc5640d1SHerbert Xue @since 2.0]]> 8565*dc5640d1SHerbert Xue </doc> 8566*dc5640d1SHerbert Xue </interface> 8567*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.InstanceBinding --> 8568*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.InterceptorBinding --> 8569*dc5640d1SHerbert Xue <class name="InterceptorBinding" extends="java.lang.Object" 8570*dc5640d1SHerbert Xue abstract="false" 8571*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 8572*dc5640d1SHerbert Xue deprecated="not deprecated"> 8573*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 8574*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 8575*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8576*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8577*dc5640d1SHerbert Xue deprecated="not deprecated"> 8578*dc5640d1SHerbert Xue </method> 8579*dc5640d1SHerbert Xue <method name="getClassMatcher" return="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>" 8580*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8581*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8582*dc5640d1SHerbert Xue deprecated="not deprecated"> 8583*dc5640d1SHerbert Xue </method> 8584*dc5640d1SHerbert Xue <method name="getMethodMatcher" return="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>" 8585*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8586*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8587*dc5640d1SHerbert Xue deprecated="not deprecated"> 8588*dc5640d1SHerbert Xue </method> 8589*dc5640d1SHerbert Xue <method name="getInterceptors" return="java.util.List<org.aopalliance.intercept.MethodInterceptor>" 8590*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8591*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8592*dc5640d1SHerbert Xue deprecated="not deprecated"> 8593*dc5640d1SHerbert Xue </method> 8594*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 8595*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8596*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8597*dc5640d1SHerbert Xue deprecated="not deprecated"> 8598*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 8599*dc5640d1SHerbert Xue </method> 8600*dc5640d1SHerbert Xue <method name="applyTo" 8601*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8602*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8603*dc5640d1SHerbert Xue deprecated="not deprecated"> 8604*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 8605*dc5640d1SHerbert Xue </method> 8606*dc5640d1SHerbert Xue <doc> 8607*dc5640d1SHerbert Xue <![CDATA[Registration of interceptors for matching methods of matching classes. Instances are created 8608*dc5640d1SHerbert Xue explicitly in a module using {@link com.google.inject.Binder#bindInterceptor( 8609*dc5640d1SHerbert Xue Matcher, Matcher, MethodInterceptor[]) bindInterceptor()} statements: 8610*dc5640d1SHerbert Xue <pre> 8611*dc5640d1SHerbert Xue bindInterceptor(Matchers.subclassesOf(MyAction.class), 8612*dc5640d1SHerbert Xue Matchers.annotatedWith(Transactional.class), 8613*dc5640d1SHerbert Xue new MyTransactionInterceptor());</pre> 8614*dc5640d1SHerbert Xue 8615*dc5640d1SHerbert Xue or from an injectable type listener using {@link TypeEncounter#bindInterceptor(Matcher, 8616*dc5640d1SHerbert Xue org.aopalliance.intercept.MethodInterceptor[]) TypeEncounter.bindInterceptor()}. 8617*dc5640d1SHerbert Xue 8618*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 8619*dc5640d1SHerbert Xue @since 2.0]]> 8620*dc5640d1SHerbert Xue </doc> 8621*dc5640d1SHerbert Xue </class> 8622*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.InterceptorBinding --> 8623*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.LinkedKeyBinding --> 8624*dc5640d1SHerbert Xue <interface name="LinkedKeyBinding" abstract="true" 8625*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8626*dc5640d1SHerbert Xue deprecated="not deprecated"> 8627*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 8628*dc5640d1SHerbert Xue <method name="getLinkedKey" return="com.google.inject.Key<? extends T>" 8629*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8630*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8631*dc5640d1SHerbert Xue deprecated="not deprecated"> 8632*dc5640d1SHerbert Xue <doc> 8633*dc5640d1SHerbert Xue <![CDATA[Returns the linked key used to resolve injections. That binding can be retrieved from an 8634*dc5640d1SHerbert Xue injector using {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]> 8635*dc5640d1SHerbert Xue </doc> 8636*dc5640d1SHerbert Xue </method> 8637*dc5640d1SHerbert Xue <doc> 8638*dc5640d1SHerbert Xue <![CDATA[A binding to a linked key. The other key's binding is used to resolve injections. 8639*dc5640d1SHerbert Xue 8640*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 8641*dc5640d1SHerbert Xue @since 2.0]]> 8642*dc5640d1SHerbert Xue </doc> 8643*dc5640d1SHerbert Xue </interface> 8644*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.LinkedKeyBinding --> 8645*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.MembersInjectorLookup --> 8646*dc5640d1SHerbert Xue <class name="MembersInjectorLookup" extends="java.lang.Object" 8647*dc5640d1SHerbert Xue abstract="false" 8648*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 8649*dc5640d1SHerbert Xue deprecated="not deprecated"> 8650*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 8651*dc5640d1SHerbert Xue <constructor name="MembersInjectorLookup" type="java.lang.Object, com.google.inject.TypeLiteral<T>" 8652*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8653*dc5640d1SHerbert Xue deprecated="not deprecated"> 8654*dc5640d1SHerbert Xue </constructor> 8655*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 8656*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8657*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8658*dc5640d1SHerbert Xue deprecated="not deprecated"> 8659*dc5640d1SHerbert Xue </method> 8660*dc5640d1SHerbert Xue <method name="getType" return="com.google.inject.TypeLiteral<T>" 8661*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8662*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8663*dc5640d1SHerbert Xue deprecated="not deprecated"> 8664*dc5640d1SHerbert Xue <doc> 8665*dc5640d1SHerbert Xue <![CDATA[Gets the type containing the members to be injected.]]> 8666*dc5640d1SHerbert Xue </doc> 8667*dc5640d1SHerbert Xue </method> 8668*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 8669*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8670*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8671*dc5640d1SHerbert Xue deprecated="not deprecated"> 8672*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 8673*dc5640d1SHerbert Xue </method> 8674*dc5640d1SHerbert Xue <method name="initializeDelegate" 8675*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8676*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8677*dc5640d1SHerbert Xue deprecated="not deprecated"> 8678*dc5640d1SHerbert Xue <param name="delegate" type="com.google.inject.MembersInjector<T>"/> 8679*dc5640d1SHerbert Xue <doc> 8680*dc5640d1SHerbert Xue <![CDATA[Sets the actual members injector. 8681*dc5640d1SHerbert Xue 8682*dc5640d1SHerbert Xue @throws IllegalStateException if the delegate is already set]]> 8683*dc5640d1SHerbert Xue </doc> 8684*dc5640d1SHerbert Xue </method> 8685*dc5640d1SHerbert Xue <method name="applyTo" 8686*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8687*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8688*dc5640d1SHerbert Xue deprecated="not deprecated"> 8689*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 8690*dc5640d1SHerbert Xue </method> 8691*dc5640d1SHerbert Xue <method name="getDelegate" return="com.google.inject.MembersInjector<T>" 8692*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8693*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8694*dc5640d1SHerbert Xue deprecated="not deprecated"> 8695*dc5640d1SHerbert Xue <doc> 8696*dc5640d1SHerbert Xue <![CDATA[Returns the delegate members injector, or {@code null} if it has not yet been initialized. 8697*dc5640d1SHerbert Xue The delegate will be initialized when this element is processed, or otherwise used to create 8698*dc5640d1SHerbert Xue an injector.]]> 8699*dc5640d1SHerbert Xue </doc> 8700*dc5640d1SHerbert Xue </method> 8701*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 8702*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8703*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8704*dc5640d1SHerbert Xue deprecated="not deprecated"> 8705*dc5640d1SHerbert Xue <doc> 8706*dc5640d1SHerbert Xue <![CDATA[Returns the looked up members injector. The result is not valid until this lookup has been 8707*dc5640d1SHerbert Xue initialized, which usually happens when the injector is created. The members injector will 8708*dc5640d1SHerbert Xue throw an {@code IllegalStateException} if you try to use it beforehand.]]> 8709*dc5640d1SHerbert Xue </doc> 8710*dc5640d1SHerbert Xue </method> 8711*dc5640d1SHerbert Xue <doc> 8712*dc5640d1SHerbert Xue <![CDATA[A lookup of the members injector for a type. Lookups are created explicitly in a module using 8713*dc5640d1SHerbert Xue {@link com.google.inject.Binder#getMembersInjector(Class) getMembersInjector()} statements: 8714*dc5640d1SHerbert Xue <pre> 8715*dc5640d1SHerbert Xue MembersInjector<PaymentService> membersInjector 8716*dc5640d1SHerbert Xue = getMembersInjector(PaymentService.class);</pre> 8717*dc5640d1SHerbert Xue 8718*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 8719*dc5640d1SHerbert Xue @since 2.0]]> 8720*dc5640d1SHerbert Xue </doc> 8721*dc5640d1SHerbert Xue </class> 8722*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.MembersInjectorLookup --> 8723*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.Message --> 8724*dc5640d1SHerbert Xue <class name="Message" extends="java.lang.Object" 8725*dc5640d1SHerbert Xue abstract="false" 8726*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 8727*dc5640d1SHerbert Xue deprecated="not deprecated"> 8728*dc5640d1SHerbert Xue <implements name="java.io.Serializable"/> 8729*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 8730*dc5640d1SHerbert Xue <constructor name="Message" type="java.util.List<java.lang.Object>, java.lang.String, java.lang.Throwable" 8731*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8732*dc5640d1SHerbert Xue deprecated="not deprecated"> 8733*dc5640d1SHerbert Xue <doc> 8734*dc5640d1SHerbert Xue <![CDATA[@since 2.0]]> 8735*dc5640d1SHerbert Xue </doc> 8736*dc5640d1SHerbert Xue </constructor> 8737*dc5640d1SHerbert Xue <constructor name="Message" type="java.lang.Object, java.lang.String" 8738*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8739*dc5640d1SHerbert Xue deprecated="not deprecated"> 8740*dc5640d1SHerbert Xue </constructor> 8741*dc5640d1SHerbert Xue <constructor name="Message" type="java.lang.String" 8742*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8743*dc5640d1SHerbert Xue deprecated="not deprecated"> 8744*dc5640d1SHerbert Xue </constructor> 8745*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.String" 8746*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8747*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8748*dc5640d1SHerbert Xue deprecated="not deprecated"> 8749*dc5640d1SHerbert Xue </method> 8750*dc5640d1SHerbert Xue <method name="getSources" return="java.util.List<java.lang.Object>" 8751*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8752*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8753*dc5640d1SHerbert Xue deprecated="not deprecated"> 8754*dc5640d1SHerbert Xue <doc> 8755*dc5640d1SHerbert Xue <![CDATA[@since 2.0]]> 8756*dc5640d1SHerbert Xue </doc> 8757*dc5640d1SHerbert Xue </method> 8758*dc5640d1SHerbert Xue <method name="getMessage" return="java.lang.String" 8759*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8760*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8761*dc5640d1SHerbert Xue deprecated="not deprecated"> 8762*dc5640d1SHerbert Xue <doc> 8763*dc5640d1SHerbert Xue <![CDATA[Gets the error message text.]]> 8764*dc5640d1SHerbert Xue </doc> 8765*dc5640d1SHerbert Xue </method> 8766*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 8767*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8768*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8769*dc5640d1SHerbert Xue deprecated="not deprecated"> 8770*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 8771*dc5640d1SHerbert Xue <doc> 8772*dc5640d1SHerbert Xue <![CDATA[@since 2.0]]> 8773*dc5640d1SHerbert Xue </doc> 8774*dc5640d1SHerbert Xue </method> 8775*dc5640d1SHerbert Xue <method name="getCause" return="java.lang.Throwable" 8776*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8777*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8778*dc5640d1SHerbert Xue deprecated="not deprecated"> 8779*dc5640d1SHerbert Xue <doc> 8780*dc5640d1SHerbert Xue <![CDATA[Returns the throwable that caused this message, or {@code null} if this 8781*dc5640d1SHerbert Xue message was not caused by a throwable. 8782*dc5640d1SHerbert Xue 8783*dc5640d1SHerbert Xue @since 2.0]]> 8784*dc5640d1SHerbert Xue </doc> 8785*dc5640d1SHerbert Xue </method> 8786*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 8787*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8788*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8789*dc5640d1SHerbert Xue deprecated="not deprecated"> 8790*dc5640d1SHerbert Xue </method> 8791*dc5640d1SHerbert Xue <method name="hashCode" return="int" 8792*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8793*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8794*dc5640d1SHerbert Xue deprecated="not deprecated"> 8795*dc5640d1SHerbert Xue </method> 8796*dc5640d1SHerbert Xue <method name="equals" return="boolean" 8797*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8798*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8799*dc5640d1SHerbert Xue deprecated="not deprecated"> 8800*dc5640d1SHerbert Xue <param name="o" type="java.lang.Object"/> 8801*dc5640d1SHerbert Xue </method> 8802*dc5640d1SHerbert Xue <method name="applyTo" 8803*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8804*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8805*dc5640d1SHerbert Xue deprecated="not deprecated"> 8806*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 8807*dc5640d1SHerbert Xue <doc> 8808*dc5640d1SHerbert Xue <![CDATA[@since 2.0]]> 8809*dc5640d1SHerbert Xue </doc> 8810*dc5640d1SHerbert Xue </method> 8811*dc5640d1SHerbert Xue <doc> 8812*dc5640d1SHerbert Xue <![CDATA[An error message and the context in which it occured. Messages are usually created internally by 8813*dc5640d1SHerbert Xue Guice and its extensions. Messages can be created explicitly in a module using {@link 8814*dc5640d1SHerbert Xue com.google.inject.Binder#addError(Throwable) addError()} statements: 8815*dc5640d1SHerbert Xue <pre> 8816*dc5640d1SHerbert Xue try { 8817*dc5640d1SHerbert Xue bindPropertiesFromFile(); 8818*dc5640d1SHerbert Xue } catch (IOException e) { 8819*dc5640d1SHerbert Xue addError(e); 8820*dc5640d1SHerbert Xue }</pre> 8821*dc5640d1SHerbert Xue 8822*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 8823*dc5640d1SHerbert Xue </doc> 8824*dc5640d1SHerbert Xue </class> 8825*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.Message --> 8826*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.PrivateElements --> 8827*dc5640d1SHerbert Xue <interface name="PrivateElements" abstract="true" 8828*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8829*dc5640d1SHerbert Xue deprecated="not deprecated"> 8830*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 8831*dc5640d1SHerbert Xue <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 8832*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8833*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8834*dc5640d1SHerbert Xue deprecated="not deprecated"> 8835*dc5640d1SHerbert Xue <doc> 8836*dc5640d1SHerbert Xue <![CDATA[Returns the configuration information in this private environment.]]> 8837*dc5640d1SHerbert Xue </doc> 8838*dc5640d1SHerbert Xue </method> 8839*dc5640d1SHerbert Xue <method name="getInjector" return="com.google.inject.Injector" 8840*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8841*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8842*dc5640d1SHerbert Xue deprecated="not deprecated"> 8843*dc5640d1SHerbert Xue <doc> 8844*dc5640d1SHerbert Xue <![CDATA[Returns the child injector that hosts these private elements, or null if the elements haven't 8845*dc5640d1SHerbert Xue been used to create an injector.]]> 8846*dc5640d1SHerbert Xue </doc> 8847*dc5640d1SHerbert Xue </method> 8848*dc5640d1SHerbert Xue <method name="getExposedKeys" return="java.util.Set<com.google.inject.Key<?>>" 8849*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8850*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8851*dc5640d1SHerbert Xue deprecated="not deprecated"> 8852*dc5640d1SHerbert Xue <doc> 8853*dc5640d1SHerbert Xue <![CDATA[Returns the unique exposed keys for these private elements.]]> 8854*dc5640d1SHerbert Xue </doc> 8855*dc5640d1SHerbert Xue </method> 8856*dc5640d1SHerbert Xue <method name="getExposedSource" return="java.lang.Object" 8857*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8858*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8859*dc5640d1SHerbert Xue deprecated="not deprecated"> 8860*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 8861*dc5640d1SHerbert Xue <doc> 8862*dc5640d1SHerbert Xue <![CDATA[Returns an arbitrary object containing information about the "place" where this key was 8863*dc5640d1SHerbert Xue exposed. Used by Guice in the production of descriptive error messages. 8864*dc5640d1SHerbert Xue 8865*dc5640d1SHerbert Xue <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good 8866*dc5640d1SHerbert Xue example. Tools should simply call {@code toString()} on the source object if the type is 8867*dc5640d1SHerbert Xue unfamiliar. 8868*dc5640d1SHerbert Xue 8869*dc5640d1SHerbert Xue @param key one of the keys exposed by this module.]]> 8870*dc5640d1SHerbert Xue </doc> 8871*dc5640d1SHerbert Xue </method> 8872*dc5640d1SHerbert Xue <doc> 8873*dc5640d1SHerbert Xue <![CDATA[A private collection of elements that are hidden from the enclosing injector or module by 8874*dc5640d1SHerbert Xue default. See {@link com.google.inject.PrivateModule PrivateModule} for details. 8875*dc5640d1SHerbert Xue 8876*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 8877*dc5640d1SHerbert Xue @since 2.0]]> 8878*dc5640d1SHerbert Xue </doc> 8879*dc5640d1SHerbert Xue </interface> 8880*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.PrivateElements --> 8881*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ProviderBinding --> 8882*dc5640d1SHerbert Xue <interface name="ProviderBinding" abstract="true" 8883*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8884*dc5640d1SHerbert Xue deprecated="not deprecated"> 8885*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 8886*dc5640d1SHerbert Xue <method name="getProvidedKey" return="com.google.inject.Key<?>" 8887*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8888*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8889*dc5640d1SHerbert Xue deprecated="not deprecated"> 8890*dc5640d1SHerbert Xue <doc> 8891*dc5640d1SHerbert Xue <![CDATA[Returns the key whose binding is used to {@link Provider#get provide instances}. That binding 8892*dc5640d1SHerbert Xue can be retrieved from an injector using {@link com.google.inject.Injector#getBinding(Key) 8893*dc5640d1SHerbert Xue Injector.getBinding(providedKey)}]]> 8894*dc5640d1SHerbert Xue </doc> 8895*dc5640d1SHerbert Xue </method> 8896*dc5640d1SHerbert Xue <doc> 8897*dc5640d1SHerbert Xue <![CDATA[A binding to a {@link Provider} that delegates to the binding for the provided type. This binding 8898*dc5640d1SHerbert Xue is used whenever a {@code Provider<T>} is injected (as opposed to injecting {@code T} directly). 8899*dc5640d1SHerbert Xue 8900*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 8901*dc5640d1SHerbert Xue @since 2.0]]> 8902*dc5640d1SHerbert Xue </doc> 8903*dc5640d1SHerbert Xue </interface> 8904*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ProviderBinding --> 8905*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ProviderInstanceBinding --> 8906*dc5640d1SHerbert Xue <interface name="ProviderInstanceBinding" abstract="true" 8907*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8908*dc5640d1SHerbert Xue deprecated="not deprecated"> 8909*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 8910*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 8911*dc5640d1SHerbert Xue <method name="getProviderInstance" return="com.google.inject.Provider<? extends T>" 8912*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8913*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8914*dc5640d1SHerbert Xue deprecated="not deprecated"> 8915*dc5640d1SHerbert Xue <doc> 8916*dc5640d1SHerbert Xue <![CDATA[Returns the user-supplied, unscoped provider.]]> 8917*dc5640d1SHerbert Xue </doc> 8918*dc5640d1SHerbert Xue </method> 8919*dc5640d1SHerbert Xue <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 8920*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8921*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8922*dc5640d1SHerbert Xue deprecated="not deprecated"> 8923*dc5640d1SHerbert Xue <doc> 8924*dc5640d1SHerbert Xue <![CDATA[Returns the field and method injection points of the provider, injected at injector-creation 8925*dc5640d1SHerbert Xue time only. 8926*dc5640d1SHerbert Xue 8927*dc5640d1SHerbert Xue @return a possibly empty set]]> 8928*dc5640d1SHerbert Xue </doc> 8929*dc5640d1SHerbert Xue </method> 8930*dc5640d1SHerbert Xue <doc> 8931*dc5640d1SHerbert Xue <![CDATA[A binding to a provider instance. The provider's {@code get} method is invoked to resolve 8932*dc5640d1SHerbert Xue injections. 8933*dc5640d1SHerbert Xue 8934*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 8935*dc5640d1SHerbert Xue @since 2.0]]> 8936*dc5640d1SHerbert Xue </doc> 8937*dc5640d1SHerbert Xue </interface> 8938*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ProviderInstanceBinding --> 8939*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ProviderKeyBinding --> 8940*dc5640d1SHerbert Xue <interface name="ProviderKeyBinding" abstract="true" 8941*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8942*dc5640d1SHerbert Xue deprecated="not deprecated"> 8943*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 8944*dc5640d1SHerbert Xue <method name="getProviderKey" return="com.google.inject.Key<? extends javax.inject.Provider<? extends T>>" 8945*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8946*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8947*dc5640d1SHerbert Xue deprecated="not deprecated"> 8948*dc5640d1SHerbert Xue <doc> 8949*dc5640d1SHerbert Xue <![CDATA[Returns the key used to resolve the provider's binding. That binding can be retrieved from an 8950*dc5640d1SHerbert Xue injector using {@link com.google.inject.Injector#getBinding(Key) 8951*dc5640d1SHerbert Xue Injector.getBinding(providerKey)}]]> 8952*dc5640d1SHerbert Xue </doc> 8953*dc5640d1SHerbert Xue </method> 8954*dc5640d1SHerbert Xue <doc> 8955*dc5640d1SHerbert Xue <![CDATA[A binding to a provider key. To resolve injections, the provider key is first resolved, then that 8956*dc5640d1SHerbert Xue provider's {@code get} method is invoked. 8957*dc5640d1SHerbert Xue 8958*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 8959*dc5640d1SHerbert Xue @since 2.0]]> 8960*dc5640d1SHerbert Xue </doc> 8961*dc5640d1SHerbert Xue </interface> 8962*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ProviderKeyBinding --> 8963*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.ProviderLookup --> 8964*dc5640d1SHerbert Xue <class name="ProviderLookup" extends="java.lang.Object" 8965*dc5640d1SHerbert Xue abstract="false" 8966*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 8967*dc5640d1SHerbert Xue deprecated="not deprecated"> 8968*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 8969*dc5640d1SHerbert Xue <constructor name="ProviderLookup" type="java.lang.Object, com.google.inject.Key<T>" 8970*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8971*dc5640d1SHerbert Xue deprecated="not deprecated"> 8972*dc5640d1SHerbert Xue </constructor> 8973*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 8974*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8975*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8976*dc5640d1SHerbert Xue deprecated="not deprecated"> 8977*dc5640d1SHerbert Xue </method> 8978*dc5640d1SHerbert Xue <method name="getKey" return="com.google.inject.Key<T>" 8979*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8980*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8981*dc5640d1SHerbert Xue deprecated="not deprecated"> 8982*dc5640d1SHerbert Xue </method> 8983*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 8984*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8985*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8986*dc5640d1SHerbert Xue deprecated="not deprecated"> 8987*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 8988*dc5640d1SHerbert Xue </method> 8989*dc5640d1SHerbert Xue <method name="initializeDelegate" 8990*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8991*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8992*dc5640d1SHerbert Xue deprecated="not deprecated"> 8993*dc5640d1SHerbert Xue <param name="delegate" type="com.google.inject.Provider<T>"/> 8994*dc5640d1SHerbert Xue <doc> 8995*dc5640d1SHerbert Xue <![CDATA[Sets the actual provider. 8996*dc5640d1SHerbert Xue 8997*dc5640d1SHerbert Xue @throws IllegalStateException if the delegate is already set]]> 8998*dc5640d1SHerbert Xue </doc> 8999*dc5640d1SHerbert Xue </method> 9000*dc5640d1SHerbert Xue <method name="applyTo" 9001*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9002*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9003*dc5640d1SHerbert Xue deprecated="not deprecated"> 9004*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 9005*dc5640d1SHerbert Xue </method> 9006*dc5640d1SHerbert Xue <method name="getDelegate" return="com.google.inject.Provider<T>" 9007*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9008*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9009*dc5640d1SHerbert Xue deprecated="not deprecated"> 9010*dc5640d1SHerbert Xue <doc> 9011*dc5640d1SHerbert Xue <![CDATA[Returns the delegate provider, or {@code null} if it has not yet been initialized. The delegate 9012*dc5640d1SHerbert Xue will be initialized when this element is processed, or otherwise used to create an injector.]]> 9013*dc5640d1SHerbert Xue </doc> 9014*dc5640d1SHerbert Xue </method> 9015*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 9016*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9017*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9018*dc5640d1SHerbert Xue deprecated="not deprecated"> 9019*dc5640d1SHerbert Xue <doc> 9020*dc5640d1SHerbert Xue <![CDATA[Returns the looked up provider. The result is not valid until this lookup has been initialized, 9021*dc5640d1SHerbert Xue which usually happens when the injector is created. The provider will throw an {@code 9022*dc5640d1SHerbert Xue IllegalStateException} if you try to use it beforehand.]]> 9023*dc5640d1SHerbert Xue </doc> 9024*dc5640d1SHerbert Xue </method> 9025*dc5640d1SHerbert Xue <doc> 9026*dc5640d1SHerbert Xue <![CDATA[A lookup of the provider for a type. Lookups are created explicitly in a module using 9027*dc5640d1SHerbert Xue {@link com.google.inject.Binder#getProvider(Class) getProvider()} statements: 9028*dc5640d1SHerbert Xue <pre> 9029*dc5640d1SHerbert Xue Provider<PaymentService> paymentServiceProvider 9030*dc5640d1SHerbert Xue = getProvider(PaymentService.class);</pre> 9031*dc5640d1SHerbert Xue 9032*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 9033*dc5640d1SHerbert Xue @since 2.0]]> 9034*dc5640d1SHerbert Xue </doc> 9035*dc5640d1SHerbert Xue </class> 9036*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.ProviderLookup --> 9037*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ProviderWithDependencies --> 9038*dc5640d1SHerbert Xue <interface name="ProviderWithDependencies" abstract="true" 9039*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9040*dc5640d1SHerbert Xue deprecated="not deprecated"> 9041*dc5640d1SHerbert Xue <implements name="com.google.inject.Provider<T>"/> 9042*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 9043*dc5640d1SHerbert Xue <doc> 9044*dc5640d1SHerbert Xue <![CDATA[A provider with dependencies on other injected types. If a {@link Provider} has dependencies that 9045*dc5640d1SHerbert Xue aren't specified in injections, this interface should be used to expose all dependencies. 9046*dc5640d1SHerbert Xue 9047*dc5640d1SHerbert Xue @since 2.0]]> 9048*dc5640d1SHerbert Xue </doc> 9049*dc5640d1SHerbert Xue </interface> 9050*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ProviderWithDependencies --> 9051*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ProviderWithExtensionVisitor --> 9052*dc5640d1SHerbert Xue <interface name="ProviderWithExtensionVisitor" abstract="true" 9053*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9054*dc5640d1SHerbert Xue deprecated="not deprecated"> 9055*dc5640d1SHerbert Xue <implements name="com.google.inject.Provider<T>"/> 9056*dc5640d1SHerbert Xue <method name="acceptExtensionVisitor" return="V" 9057*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9058*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9059*dc5640d1SHerbert Xue deprecated="not deprecated"> 9060*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor<B, V>"/> 9061*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding<? extends B>"/> 9062*dc5640d1SHerbert Xue <doc> 9063*dc5640d1SHerbert Xue <![CDATA[Instructs the extension determine if the visitor is an instance of a custom 9064*dc5640d1SHerbert Xue extension visitor, and if so, visit it using that method. If the visitor is 9065*dc5640d1SHerbert Xue not an instance of the custom extension visitor, this method <b>MUST</b> 9066*dc5640d1SHerbert Xue call visitor.visit(binding). 9067*dc5640d1SHerbert Xue <p> 9068*dc5640d1SHerbert Xue Due to issues with generics, the type parameters of this method do not 9069*dc5640d1SHerbert Xue relate to the type of the provider. In practice, the 'B' type will always 9070*dc5640d1SHerbert Xue be a supertype of 'T'.]]> 9071*dc5640d1SHerbert Xue </doc> 9072*dc5640d1SHerbert Xue </method> 9073*dc5640d1SHerbert Xue <doc> 9074*dc5640d1SHerbert Xue <![CDATA[A Provider that is part of an extension which supports a custom 9075*dc5640d1SHerbert Xue BindingTargetVisitor. 9076*dc5640d1SHerbert Xue <p> 9077*dc5640d1SHerbert Xue When an extension binds a provider instance, the provider can implement this 9078*dc5640d1SHerbert Xue interface to allow users using the 9079*dc5640d1SHerbert Xue {@link Binding#acceptTargetVisitor(BindingTargetVisitor)} method to visit a 9080*dc5640d1SHerbert Xue custom visitor designed for that extension. A typical implementation within 9081*dc5640d1SHerbert Xue the extension would look like 9082*dc5640d1SHerbert Xue <pre> 9083*dc5640d1SHerbert Xue <V, B> V acceptExtensionVisitor(BindingTargetVisitor<B, V> visitor, ProviderInstanceBinding<? extends B> binding) { 9084*dc5640d1SHerbert Xue if(visitor instanceof MyCustomExtensionVisitor) { 9085*dc5640d1SHerbert Xue return ((MyCustomExtensionVisitor<B, V>)visitor).visitCustomExtension(customProperties, binding); 9086*dc5640d1SHerbert Xue } else { 9087*dc5640d1SHerbert Xue return visitor.visit(binding); 9088*dc5640d1SHerbert Xue } 9089*dc5640d1SHerbert Xue }</pre> 9090*dc5640d1SHerbert Xue 'MyCustomExtensionVisitor' in the example above would be an interface the 9091*dc5640d1SHerbert Xue extension provides that users can implement in order to be notified of custom 9092*dc5640d1SHerbert Xue extension information. These visitor interfaces must extend from 9093*dc5640d1SHerbert Xue BindingTargetVisitor. 9094*dc5640d1SHerbert Xue 9095*dc5640d1SHerbert Xue @since 3.0 9096*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin)]]> 9097*dc5640d1SHerbert Xue </doc> 9098*dc5640d1SHerbert Xue </interface> 9099*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ProviderWithExtensionVisitor --> 9100*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.RequireExplicitBindingsOption --> 9101*dc5640d1SHerbert Xue <class name="RequireExplicitBindingsOption" extends="java.lang.Object" 9102*dc5640d1SHerbert Xue abstract="false" 9103*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 9104*dc5640d1SHerbert Xue deprecated="not deprecated"> 9105*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 9106*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 9107*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9108*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9109*dc5640d1SHerbert Xue deprecated="not deprecated"> 9110*dc5640d1SHerbert Xue </method> 9111*dc5640d1SHerbert Xue <method name="applyTo" 9112*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9113*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9114*dc5640d1SHerbert Xue deprecated="not deprecated"> 9115*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 9116*dc5640d1SHerbert Xue </method> 9117*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 9118*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9119*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9120*dc5640d1SHerbert Xue deprecated="not deprecated"> 9121*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9122*dc5640d1SHerbert Xue </method> 9123*dc5640d1SHerbert Xue <doc> 9124*dc5640d1SHerbert Xue <![CDATA[A request to require explicit bindings. 9125*dc5640d1SHerbert Xue 9126*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 9127*dc5640d1SHerbert Xue @since 3.0]]> 9128*dc5640d1SHerbert Xue </doc> 9129*dc5640d1SHerbert Xue </class> 9130*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.RequireExplicitBindingsOption --> 9131*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.ScopeBinding --> 9132*dc5640d1SHerbert Xue <class name="ScopeBinding" extends="java.lang.Object" 9133*dc5640d1SHerbert Xue abstract="false" 9134*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 9135*dc5640d1SHerbert Xue deprecated="not deprecated"> 9136*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 9137*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 9138*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9139*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9140*dc5640d1SHerbert Xue deprecated="not deprecated"> 9141*dc5640d1SHerbert Xue </method> 9142*dc5640d1SHerbert Xue <method name="getAnnotationType" return="java.lang.Class<? extends java.lang.annotation.Annotation>" 9143*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9144*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9145*dc5640d1SHerbert Xue deprecated="not deprecated"> 9146*dc5640d1SHerbert Xue </method> 9147*dc5640d1SHerbert Xue <method name="getScope" return="com.google.inject.Scope" 9148*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9149*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9150*dc5640d1SHerbert Xue deprecated="not deprecated"> 9151*dc5640d1SHerbert Xue </method> 9152*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 9153*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9154*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9155*dc5640d1SHerbert Xue deprecated="not deprecated"> 9156*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9157*dc5640d1SHerbert Xue </method> 9158*dc5640d1SHerbert Xue <method name="applyTo" 9159*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9160*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9161*dc5640d1SHerbert Xue deprecated="not deprecated"> 9162*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 9163*dc5640d1SHerbert Xue </method> 9164*dc5640d1SHerbert Xue <doc> 9165*dc5640d1SHerbert Xue <![CDATA[Registration of a scope annotation with the scope that implements it. Instances are created 9166*dc5640d1SHerbert Xue explicitly in a module using {@link com.google.inject.Binder#bindScope(Class, Scope) bindScope()} 9167*dc5640d1SHerbert Xue statements: 9168*dc5640d1SHerbert Xue <pre> 9169*dc5640d1SHerbert Xue Scope recordScope = new RecordScope(); 9170*dc5640d1SHerbert Xue bindScope(RecordScoped.class, new RecordScope());</pre> 9171*dc5640d1SHerbert Xue 9172*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 9173*dc5640d1SHerbert Xue @since 2.0]]> 9174*dc5640d1SHerbert Xue </doc> 9175*dc5640d1SHerbert Xue </class> 9176*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.ScopeBinding --> 9177*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.StaticInjectionRequest --> 9178*dc5640d1SHerbert Xue <class name="StaticInjectionRequest" extends="java.lang.Object" 9179*dc5640d1SHerbert Xue abstract="false" 9180*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 9181*dc5640d1SHerbert Xue deprecated="not deprecated"> 9182*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 9183*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 9184*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9185*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9186*dc5640d1SHerbert Xue deprecated="not deprecated"> 9187*dc5640d1SHerbert Xue </method> 9188*dc5640d1SHerbert Xue <method name="getType" return="java.lang.Class<?>" 9189*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9190*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9191*dc5640d1SHerbert Xue deprecated="not deprecated"> 9192*dc5640d1SHerbert Xue </method> 9193*dc5640d1SHerbert Xue <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9194*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9195*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9196*dc5640d1SHerbert Xue deprecated="not deprecated"> 9197*dc5640d1SHerbert Xue <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/> 9198*dc5640d1SHerbert Xue <doc> 9199*dc5640d1SHerbert Xue <![CDATA[Returns the static methods and fields of {@code type} that will be injected to fulfill this 9200*dc5640d1SHerbert Xue request. 9201*dc5640d1SHerbert Xue 9202*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All 9203*dc5640d1SHerbert Xue fields are returned and then all methods. Within the fields, supertype fields are returned 9204*dc5640d1SHerbert Xue before subtype fields. Similarly, supertype methods are returned before subtype methods. 9205*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 9206*dc5640d1SHerbert Xue a field with multiple binding annotations. The exception's {@link 9207*dc5640d1SHerbert Xue ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 9208*dc5640d1SHerbert Xue of the valid injection points.]]> 9209*dc5640d1SHerbert Xue </doc> 9210*dc5640d1SHerbert Xue </method> 9211*dc5640d1SHerbert Xue <method name="applyTo" 9212*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9213*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9214*dc5640d1SHerbert Xue deprecated="not deprecated"> 9215*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 9216*dc5640d1SHerbert Xue </method> 9217*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 9218*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9219*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9220*dc5640d1SHerbert Xue deprecated="not deprecated"> 9221*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9222*dc5640d1SHerbert Xue </method> 9223*dc5640d1SHerbert Xue <doc> 9224*dc5640d1SHerbert Xue <![CDATA[A request to inject the static fields and methods of a type. Requests are created 9225*dc5640d1SHerbert Xue explicitly in a module using {@link com.google.inject.Binder#requestStaticInjection(Class[]) 9226*dc5640d1SHerbert Xue requestStaticInjection()} statements: 9227*dc5640d1SHerbert Xue <pre> 9228*dc5640d1SHerbert Xue requestStaticInjection(MyLegacyService.class);</pre> 9229*dc5640d1SHerbert Xue 9230*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 9231*dc5640d1SHerbert Xue @since 2.0]]> 9232*dc5640d1SHerbert Xue </doc> 9233*dc5640d1SHerbert Xue </class> 9234*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.StaticInjectionRequest --> 9235*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.Toolable --> 9236*dc5640d1SHerbert Xue <class name="Toolable" abstract="true" 9237*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9238*dc5640d1SHerbert Xue deprecated="not deprecated"> 9239*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 9240*dc5640d1SHerbert Xue <doc> 9241*dc5640d1SHerbert Xue <![CDATA[Instructs an {@link Injector} running in {@link Stage#TOOL} that a method should be injected. 9242*dc5640d1SHerbert Xue This is typically useful for for extensions to Guice that perform additional validation in an 9243*dc5640d1SHerbert Xue injected method or field. This only applies to objects that are already constructed when 9244*dc5640d1SHerbert Xue bindings are created (ie., something bound using {@link 9245*dc5640d1SHerbert Xue com.google.inject.binder.LinkedBindingBuilder#toProvider toProvider}, {@link 9246*dc5640d1SHerbert Xue com.google.inject.binder.LinkedBindingBuilder#toInstance toInstance}, or {@link 9247*dc5640d1SHerbert Xue com.google.inject.Binder#requestInjection requestInjection}. 9248*dc5640d1SHerbert Xue 9249*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 9250*dc5640d1SHerbert Xue @since 3.0]]> 9251*dc5640d1SHerbert Xue </doc> 9252*dc5640d1SHerbert Xue </class> 9253*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.Toolable --> 9254*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.TypeConverter --> 9255*dc5640d1SHerbert Xue <interface name="TypeConverter" abstract="true" 9256*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9257*dc5640d1SHerbert Xue deprecated="not deprecated"> 9258*dc5640d1SHerbert Xue <method name="convert" return="java.lang.Object" 9259*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9260*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9261*dc5640d1SHerbert Xue deprecated="not deprecated"> 9262*dc5640d1SHerbert Xue <param name="value" type="java.lang.String"/> 9263*dc5640d1SHerbert Xue <param name="toType" type="com.google.inject.TypeLiteral<?>"/> 9264*dc5640d1SHerbert Xue <doc> 9265*dc5640d1SHerbert Xue <![CDATA[Converts a string value. Throws an exception if a conversion error occurs.]]> 9266*dc5640d1SHerbert Xue </doc> 9267*dc5640d1SHerbert Xue </method> 9268*dc5640d1SHerbert Xue <doc> 9269*dc5640d1SHerbert Xue <![CDATA[Converts constant string values to a different type. 9270*dc5640d1SHerbert Xue 9271*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 9272*dc5640d1SHerbert Xue @since 2.0]]> 9273*dc5640d1SHerbert Xue </doc> 9274*dc5640d1SHerbert Xue </interface> 9275*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.TypeConverter --> 9276*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.TypeConverterBinding --> 9277*dc5640d1SHerbert Xue <class name="TypeConverterBinding" extends="java.lang.Object" 9278*dc5640d1SHerbert Xue abstract="false" 9279*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 9280*dc5640d1SHerbert Xue deprecated="not deprecated"> 9281*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 9282*dc5640d1SHerbert Xue <constructor name="TypeConverterBinding" type="java.lang.Object, com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>, com.google.inject.spi.TypeConverter" 9283*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9284*dc5640d1SHerbert Xue deprecated="not deprecated"> 9285*dc5640d1SHerbert Xue <doc> 9286*dc5640d1SHerbert Xue <![CDATA[@since 3.0]]> 9287*dc5640d1SHerbert Xue </doc> 9288*dc5640d1SHerbert Xue </constructor> 9289*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 9290*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9291*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9292*dc5640d1SHerbert Xue deprecated="not deprecated"> 9293*dc5640d1SHerbert Xue </method> 9294*dc5640d1SHerbert Xue <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>" 9295*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9296*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9297*dc5640d1SHerbert Xue deprecated="not deprecated"> 9298*dc5640d1SHerbert Xue </method> 9299*dc5640d1SHerbert Xue <method name="getTypeConverter" return="com.google.inject.spi.TypeConverter" 9300*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9301*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9302*dc5640d1SHerbert Xue deprecated="not deprecated"> 9303*dc5640d1SHerbert Xue </method> 9304*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 9305*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9306*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9307*dc5640d1SHerbert Xue deprecated="not deprecated"> 9308*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9309*dc5640d1SHerbert Xue </method> 9310*dc5640d1SHerbert Xue <method name="applyTo" 9311*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9312*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9313*dc5640d1SHerbert Xue deprecated="not deprecated"> 9314*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 9315*dc5640d1SHerbert Xue </method> 9316*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 9317*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9318*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9319*dc5640d1SHerbert Xue deprecated="not deprecated"> 9320*dc5640d1SHerbert Xue </method> 9321*dc5640d1SHerbert Xue <doc> 9322*dc5640d1SHerbert Xue <![CDATA[Registration of type converters for matching target types. Instances are created 9323*dc5640d1SHerbert Xue explicitly in a module using {@link com.google.inject.Binder#convertToTypes(Matcher, 9324*dc5640d1SHerbert Xue TypeConverter) convertToTypes()} statements: 9325*dc5640d1SHerbert Xue <pre> 9326*dc5640d1SHerbert Xue convertToTypes(Matchers.only(TypeLiteral.get(DateTime.class)), new DateTimeConverter());</pre> 9327*dc5640d1SHerbert Xue 9328*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 9329*dc5640d1SHerbert Xue @since 2.0]]> 9330*dc5640d1SHerbert Xue </doc> 9331*dc5640d1SHerbert Xue </class> 9332*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.TypeConverterBinding --> 9333*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.TypeEncounter --> 9334*dc5640d1SHerbert Xue <interface name="TypeEncounter" abstract="true" 9335*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9336*dc5640d1SHerbert Xue deprecated="not deprecated"> 9337*dc5640d1SHerbert Xue <method name="addError" 9338*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9339*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9340*dc5640d1SHerbert Xue deprecated="not deprecated"> 9341*dc5640d1SHerbert Xue <param name="message" type="java.lang.String"/> 9342*dc5640d1SHerbert Xue <param name="arguments" type="java.lang.Object[]"/> 9343*dc5640d1SHerbert Xue <doc> 9344*dc5640d1SHerbert Xue <![CDATA[Records an error message for type {@code I} which will be presented to the user at a later 9345*dc5640d1SHerbert Xue time. Unlike throwing an exception, this enable us to continue configuring the Injector and 9346*dc5640d1SHerbert Xue discover more errors. Uses {@link String#format(String, Object[])} to insert the arguments 9347*dc5640d1SHerbert Xue into the message.]]> 9348*dc5640d1SHerbert Xue </doc> 9349*dc5640d1SHerbert Xue </method> 9350*dc5640d1SHerbert Xue <method name="addError" 9351*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9352*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9353*dc5640d1SHerbert Xue deprecated="not deprecated"> 9354*dc5640d1SHerbert Xue <param name="t" type="java.lang.Throwable"/> 9355*dc5640d1SHerbert Xue <doc> 9356*dc5640d1SHerbert Xue <![CDATA[Records an exception for type {@code I}, the full details of which will be logged, and the 9357*dc5640d1SHerbert Xue message of which will be presented to the user at a later time. If your type listener calls 9358*dc5640d1SHerbert Xue something that you worry may fail, you should catch the exception and pass it to this method.]]> 9359*dc5640d1SHerbert Xue </doc> 9360*dc5640d1SHerbert Xue </method> 9361*dc5640d1SHerbert Xue <method name="addError" 9362*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9363*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9364*dc5640d1SHerbert Xue deprecated="not deprecated"> 9365*dc5640d1SHerbert Xue <param name="message" type="com.google.inject.spi.Message"/> 9366*dc5640d1SHerbert Xue <doc> 9367*dc5640d1SHerbert Xue <![CDATA[Records an error message to be presented to the user at a later time.]]> 9368*dc5640d1SHerbert Xue </doc> 9369*dc5640d1SHerbert Xue </method> 9370*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 9371*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9372*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9373*dc5640d1SHerbert Xue deprecated="not deprecated"> 9374*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 9375*dc5640d1SHerbert Xue <doc> 9376*dc5640d1SHerbert Xue <![CDATA[Returns the provider used to obtain instances for the given injection key. The returned 9377*dc5640d1SHerbert Xue provider will not be valid until the injector has been created. The provider will throw an 9378*dc5640d1SHerbert Xue {@code IllegalStateException} if you try to use it beforehand.]]> 9379*dc5640d1SHerbert Xue </doc> 9380*dc5640d1SHerbert Xue </method> 9381*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 9382*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9383*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9384*dc5640d1SHerbert Xue deprecated="not deprecated"> 9385*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 9386*dc5640d1SHerbert Xue <doc> 9387*dc5640d1SHerbert Xue <![CDATA[Returns the provider used to obtain instances for the given injection type. The returned 9388*dc5640d1SHerbert Xue provider will not be valid until the injetor has been created. The provider will throw an 9389*dc5640d1SHerbert Xue {@code IllegalStateException} if you try to use it beforehand.]]> 9390*dc5640d1SHerbert Xue </doc> 9391*dc5640d1SHerbert Xue </method> 9392*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 9393*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9394*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9395*dc5640d1SHerbert Xue deprecated="not deprecated"> 9396*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 9397*dc5640d1SHerbert Xue <doc> 9398*dc5640d1SHerbert Xue <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 9399*dc5640d1SHerbert Xue of the given type {@code T}. The returned members injector will not be valid until the main 9400*dc5640d1SHerbert Xue injector has been created. The members injector will throw an {@code IllegalStateException} 9401*dc5640d1SHerbert Xue if you try to use it beforehand. 9402*dc5640d1SHerbert Xue 9403*dc5640d1SHerbert Xue @param typeLiteral type to get members injector for]]> 9404*dc5640d1SHerbert Xue </doc> 9405*dc5640d1SHerbert Xue </method> 9406*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 9407*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9408*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9409*dc5640d1SHerbert Xue deprecated="not deprecated"> 9410*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 9411*dc5640d1SHerbert Xue <doc> 9412*dc5640d1SHerbert Xue <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 9413*dc5640d1SHerbert Xue of the given type {@code T}. The returned members injector will not be valid until the main 9414*dc5640d1SHerbert Xue injector has been created. The members injector will throw an {@code IllegalStateException} 9415*dc5640d1SHerbert Xue if you try to use it beforehand. 9416*dc5640d1SHerbert Xue 9417*dc5640d1SHerbert Xue @param type type to get members injector for]]> 9418*dc5640d1SHerbert Xue </doc> 9419*dc5640d1SHerbert Xue </method> 9420*dc5640d1SHerbert Xue <method name="register" 9421*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9422*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9423*dc5640d1SHerbert Xue deprecated="not deprecated"> 9424*dc5640d1SHerbert Xue <param name="membersInjector" type="com.google.inject.MembersInjector<? super I>"/> 9425*dc5640d1SHerbert Xue <doc> 9426*dc5640d1SHerbert Xue <![CDATA[Registers a members injector for type {@code I}. Guice will use the members injector after its 9427*dc5640d1SHerbert Xue performed its own injections on an instance of {@code I}.]]> 9428*dc5640d1SHerbert Xue </doc> 9429*dc5640d1SHerbert Xue </method> 9430*dc5640d1SHerbert Xue <method name="register" 9431*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9432*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9433*dc5640d1SHerbert Xue deprecated="not deprecated"> 9434*dc5640d1SHerbert Xue <param name="listener" type="com.google.inject.spi.InjectionListener<? super I>"/> 9435*dc5640d1SHerbert Xue <doc> 9436*dc5640d1SHerbert Xue <![CDATA[Registers an injection listener for type {@code I}. Guice will notify the listener after all 9437*dc5640d1SHerbert Xue injections have been performed on an instance of {@code I}.]]> 9438*dc5640d1SHerbert Xue </doc> 9439*dc5640d1SHerbert Xue </method> 9440*dc5640d1SHerbert Xue <method name="bindInterceptor" 9441*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9442*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9443*dc5640d1SHerbert Xue deprecated="not deprecated"> 9444*dc5640d1SHerbert Xue <param name="methodMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>"/> 9445*dc5640d1SHerbert Xue <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/> 9446*dc5640d1SHerbert Xue <doc> 9447*dc5640d1SHerbert Xue <![CDATA[Binds method interceptor[s] to methods matched in type {@code I} and its supertypes. A 9448*dc5640d1SHerbert Xue method is eligible for interception if: 9449*dc5640d1SHerbert Xue 9450*dc5640d1SHerbert Xue <ul> 9451*dc5640d1SHerbert Xue <li>Guice created the instance the method is on</li> 9452*dc5640d1SHerbert Xue <li>Neither the enclosing type nor the method is final</li> 9453*dc5640d1SHerbert Xue <li>And the method is package-private or more accessible</li> 9454*dc5640d1SHerbert Xue </ul> 9455*dc5640d1SHerbert Xue 9456*dc5640d1SHerbert Xue @param methodMatcher matches methods the interceptor should apply to. For 9457*dc5640d1SHerbert Xue example: {@code annotatedWith(Transactional.class)}. 9458*dc5640d1SHerbert Xue @param interceptors to bind]]> 9459*dc5640d1SHerbert Xue </doc> 9460*dc5640d1SHerbert Xue </method> 9461*dc5640d1SHerbert Xue <doc> 9462*dc5640d1SHerbert Xue <![CDATA[Context of an injectable type encounter. Enables reporting errors, registering injection 9463*dc5640d1SHerbert Xue listeners and binding method interceptors for injectable type {@code I}. It is an error to use 9464*dc5640d1SHerbert Xue an encounter after the {@link TypeListener#hear(TypeLiteral, TypeEncounter) hear()} method has 9465*dc5640d1SHerbert Xue returned. 9466*dc5640d1SHerbert Xue 9467*dc5640d1SHerbert Xue @param <I> the injectable type encountered 9468*dc5640d1SHerbert Xue @since 2.0]]> 9469*dc5640d1SHerbert Xue </doc> 9470*dc5640d1SHerbert Xue </interface> 9471*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.TypeEncounter --> 9472*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.TypeListener --> 9473*dc5640d1SHerbert Xue <interface name="TypeListener" abstract="true" 9474*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9475*dc5640d1SHerbert Xue deprecated="not deprecated"> 9476*dc5640d1SHerbert Xue <method name="hear" 9477*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9478*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9479*dc5640d1SHerbert Xue deprecated="not deprecated"> 9480*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<I>"/> 9481*dc5640d1SHerbert Xue <param name="encounter" type="com.google.inject.spi.TypeEncounter<I>"/> 9482*dc5640d1SHerbert Xue <doc> 9483*dc5640d1SHerbert Xue <![CDATA[Invoked when Guice encounters a new type eligible for constructor or members injection. 9484*dc5640d1SHerbert Xue Called during injector creation (or afterwords if Guice encounters a type at run time and 9485*dc5640d1SHerbert Xue creates a JIT binding). 9486*dc5640d1SHerbert Xue 9487*dc5640d1SHerbert Xue @param type encountered by Guice 9488*dc5640d1SHerbert Xue @param encounter context of this encounter, enables reporting errors, registering injection 9489*dc5640d1SHerbert Xue listeners and binding method interceptors for {@code type}. 9490*dc5640d1SHerbert Xue 9491*dc5640d1SHerbert Xue @param <I> the injectable type]]> 9492*dc5640d1SHerbert Xue </doc> 9493*dc5640d1SHerbert Xue </method> 9494*dc5640d1SHerbert Xue <doc> 9495*dc5640d1SHerbert Xue <![CDATA[Listens for Guice to encounter injectable types. If a given type has its constructor injected in 9496*dc5640d1SHerbert Xue one situation but only its methods and fields injected in another, Guice will notify this 9497*dc5640d1SHerbert Xue listener once. 9498*dc5640d1SHerbert Xue 9499*dc5640d1SHerbert Xue <p>Useful for extra type checking, {@linkplain TypeEncounter#register(InjectionListener) 9500*dc5640d1SHerbert Xue registering injection listeners}, and {@linkplain TypeEncounter#bindInterceptor( 9501*dc5640d1SHerbert Xue com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[]) 9502*dc5640d1SHerbert Xue binding method interceptors}. 9503*dc5640d1SHerbert Xue 9504*dc5640d1SHerbert Xue @since 2.0]]> 9505*dc5640d1SHerbert Xue </doc> 9506*dc5640d1SHerbert Xue </interface> 9507*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.TypeListener --> 9508*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.TypeListenerBinding --> 9509*dc5640d1SHerbert Xue <class name="TypeListenerBinding" extends="java.lang.Object" 9510*dc5640d1SHerbert Xue abstract="false" 9511*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 9512*dc5640d1SHerbert Xue deprecated="not deprecated"> 9513*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 9514*dc5640d1SHerbert Xue <method name="getListener" return="com.google.inject.spi.TypeListener" 9515*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9516*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9517*dc5640d1SHerbert Xue deprecated="not deprecated"> 9518*dc5640d1SHerbert Xue <doc> 9519*dc5640d1SHerbert Xue <![CDATA[Returns the registered listener.]]> 9520*dc5640d1SHerbert Xue </doc> 9521*dc5640d1SHerbert Xue </method> 9522*dc5640d1SHerbert Xue <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>" 9523*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9524*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9525*dc5640d1SHerbert Xue deprecated="not deprecated"> 9526*dc5640d1SHerbert Xue <doc> 9527*dc5640d1SHerbert Xue <![CDATA[Returns the type matcher which chooses which types the listener should be notified of.]]> 9528*dc5640d1SHerbert Xue </doc> 9529*dc5640d1SHerbert Xue </method> 9530*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 9531*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9532*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9533*dc5640d1SHerbert Xue deprecated="not deprecated"> 9534*dc5640d1SHerbert Xue </method> 9535*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 9536*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9537*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9538*dc5640d1SHerbert Xue deprecated="not deprecated"> 9539*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9540*dc5640d1SHerbert Xue </method> 9541*dc5640d1SHerbert Xue <method name="applyTo" 9542*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9543*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9544*dc5640d1SHerbert Xue deprecated="not deprecated"> 9545*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 9546*dc5640d1SHerbert Xue </method> 9547*dc5640d1SHerbert Xue <doc> 9548*dc5640d1SHerbert Xue <![CDATA[Binds types (picked using a Matcher) to an type listener. Registrations are created explicitly in 9549*dc5640d1SHerbert Xue a module using {@link com.google.inject.Binder#bindListener(Matcher, TypeListener)} statements: 9550*dc5640d1SHerbert Xue 9551*dc5640d1SHerbert Xue <pre> 9552*dc5640d1SHerbert Xue register(only(new TypeLiteral<PaymentService<CreditCard>>() {}), listener);</pre> 9553*dc5640d1SHerbert Xue 9554*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 9555*dc5640d1SHerbert Xue @since 2.0]]> 9556*dc5640d1SHerbert Xue </doc> 9557*dc5640d1SHerbert Xue </class> 9558*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.TypeListenerBinding --> 9559*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.UntargettedBinding --> 9560*dc5640d1SHerbert Xue <interface name="UntargettedBinding" abstract="true" 9561*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9562*dc5640d1SHerbert Xue deprecated="not deprecated"> 9563*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 9564*dc5640d1SHerbert Xue <doc> 9565*dc5640d1SHerbert Xue <![CDATA[An untargetted binding. This binding indicates that the injector should use its implicit binding 9566*dc5640d1SHerbert Xue strategies to resolve injections. 9567*dc5640d1SHerbert Xue 9568*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 9569*dc5640d1SHerbert Xue @since 2.0]]> 9570*dc5640d1SHerbert Xue </doc> 9571*dc5640d1SHerbert Xue </interface> 9572*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.UntargettedBinding --> 9573*dc5640d1SHerbert Xue</package> 9574*dc5640d1SHerbert Xue<package name="com.google.inject.spring"> 9575*dc5640d1SHerbert Xue <!-- start class com.google.inject.spring.SpringIntegration --> 9576*dc5640d1SHerbert Xue <class name="SpringIntegration" extends="java.lang.Object" 9577*dc5640d1SHerbert Xue abstract="false" 9578*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9579*dc5640d1SHerbert Xue deprecated="not deprecated"> 9580*dc5640d1SHerbert Xue <method name="fromSpring" return="com.google.inject.Provider<T>" 9581*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9582*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 9583*dc5640d1SHerbert Xue deprecated="not deprecated"> 9584*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 9585*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 9586*dc5640d1SHerbert Xue <doc> 9587*dc5640d1SHerbert Xue <![CDATA[Creates a provider which looks up objects from Spring using the given name. 9588*dc5640d1SHerbert Xue Expects a binding to {@link 9589*dc5640d1SHerbert Xue org.springframework.beans.factory.BeanFactory}. Example usage: 9590*dc5640d1SHerbert Xue 9591*dc5640d1SHerbert Xue <pre> 9592*dc5640d1SHerbert Xue bind(DataSource.class) 9593*dc5640d1SHerbert Xue .toProvider(fromSpring(DataSource.class, "dataSource")); 9594*dc5640d1SHerbert Xue </pre>]]> 9595*dc5640d1SHerbert Xue </doc> 9596*dc5640d1SHerbert Xue </method> 9597*dc5640d1SHerbert Xue <method name="bindAll" 9598*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9599*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 9600*dc5640d1SHerbert Xue deprecated="not deprecated"> 9601*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 9602*dc5640d1SHerbert Xue <param name="beanFactory" type="ListableBeanFactory"/> 9603*dc5640d1SHerbert Xue <doc> 9604*dc5640d1SHerbert Xue <![CDATA[Binds all Spring beans from the given factory by name. For a Spring bean 9605*dc5640d1SHerbert Xue named "foo", this method creates a binding to the bean's type and 9606*dc5640d1SHerbert Xue {@code @Named("foo")}. 9607*dc5640d1SHerbert Xue 9608*dc5640d1SHerbert Xue @see com.google.inject.name.Named 9609*dc5640d1SHerbert Xue @see com.google.inject.name.Names#named(String)]]> 9610*dc5640d1SHerbert Xue </doc> 9611*dc5640d1SHerbert Xue </method> 9612*dc5640d1SHerbert Xue <doc> 9613*dc5640d1SHerbert Xue <![CDATA[Integrates Guice with Spring. 9614*dc5640d1SHerbert Xue 9615*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 9616*dc5640d1SHerbert Xue </doc> 9617*dc5640d1SHerbert Xue </class> 9618*dc5640d1SHerbert Xue <!-- end class com.google.inject.spring.SpringIntegration --> 9619*dc5640d1SHerbert Xue</package> 9620*dc5640d1SHerbert Xue<package name="com.google.inject.struts2"> 9621*dc5640d1SHerbert Xue <!-- start class com.google.inject.struts2.GuiceObjectFactory --> 9622*dc5640d1SHerbert Xue <class name="GuiceObjectFactory" extends="ObjectFactory" 9623*dc5640d1SHerbert Xue abstract="false" 9624*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9625*dc5640d1SHerbert Xue deprecated="Use {@link com.google.inject.servlet.Struts2Factory} instead."> 9626*dc5640d1SHerbert Xue <constructor name="GuiceObjectFactory" 9627*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9628*dc5640d1SHerbert Xue deprecated="not deprecated"> 9629*dc5640d1SHerbert Xue </constructor> 9630*dc5640d1SHerbert Xue <method name="isNoArgConstructorRequired" return="boolean" 9631*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9632*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9633*dc5640d1SHerbert Xue deprecated="not deprecated"> 9634*dc5640d1SHerbert Xue </method> 9635*dc5640d1SHerbert Xue <method name="getClassInstance" return="java.lang.Class" 9636*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9637*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9638*dc5640d1SHerbert Xue deprecated="not deprecated"> 9639*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 9640*dc5640d1SHerbert Xue <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/> 9641*dc5640d1SHerbert Xue </method> 9642*dc5640d1SHerbert Xue <method name="buildBean" return="java.lang.Object" 9643*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9644*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9645*dc5640d1SHerbert Xue deprecated="not deprecated"> 9646*dc5640d1SHerbert Xue <param name="clazz" type="java.lang.Class"/> 9647*dc5640d1SHerbert Xue <param name="extraContext" type="java.util.Map"/> 9648*dc5640d1SHerbert Xue </method> 9649*dc5640d1SHerbert Xue <method name="buildInterceptor" return="Interceptor" 9650*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9651*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9652*dc5640d1SHerbert Xue deprecated="not deprecated"> 9653*dc5640d1SHerbert Xue <param name="interceptorConfig" type="InterceptorConfig"/> 9654*dc5640d1SHerbert Xue <param name="interceptorRefParams" type="java.util.Map"/> 9655*dc5640d1SHerbert Xue <exception name="ConfigurationException" type="ConfigurationException"/> 9656*dc5640d1SHerbert Xue </method> 9657*dc5640d1SHerbert Xue <doc> 9658*dc5640d1SHerbert Xue <![CDATA[@deprecated Use {@link com.google.inject.servlet.Struts2Factory} instead.]]> 9659*dc5640d1SHerbert Xue </doc> 9660*dc5640d1SHerbert Xue </class> 9661*dc5640d1SHerbert Xue <!-- end class com.google.inject.struts2.GuiceObjectFactory --> 9662*dc5640d1SHerbert Xue <!-- start class com.google.inject.struts2.Struts2Factory --> 9663*dc5640d1SHerbert Xue <class name="Struts2Factory" extends="ObjectFactory" 9664*dc5640d1SHerbert Xue abstract="false" 9665*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9666*dc5640d1SHerbert Xue deprecated="not deprecated"> 9667*dc5640d1SHerbert Xue <constructor name="Struts2Factory" 9668*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9669*dc5640d1SHerbert Xue deprecated="not deprecated"> 9670*dc5640d1SHerbert Xue </constructor> 9671*dc5640d1SHerbert Xue <method name="isNoArgConstructorRequired" return="boolean" 9672*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9673*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9674*dc5640d1SHerbert Xue deprecated="not deprecated"> 9675*dc5640d1SHerbert Xue </method> 9676*dc5640d1SHerbert Xue <method name="getClassInstance" return="java.lang.Class<?>" 9677*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9678*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9679*dc5640d1SHerbert Xue deprecated="not deprecated"> 9680*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 9681*dc5640d1SHerbert Xue <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/> 9682*dc5640d1SHerbert Xue </method> 9683*dc5640d1SHerbert Xue <method name="buildBean" return="java.lang.Object" 9684*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9685*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9686*dc5640d1SHerbert Xue deprecated="not deprecated"> 9687*dc5640d1SHerbert Xue <param name="clazz" type="java.lang.Class"/> 9688*dc5640d1SHerbert Xue <param name="extraContext" type="java.util.Map<java.lang.String, java.lang.Object>"/> 9689*dc5640d1SHerbert Xue </method> 9690*dc5640d1SHerbert Xue <method name="buildInterceptor" return="Interceptor" 9691*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9692*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9693*dc5640d1SHerbert Xue deprecated="not deprecated"> 9694*dc5640d1SHerbert Xue <param name="interceptorConfig" type="InterceptorConfig"/> 9695*dc5640d1SHerbert Xue <param name="interceptorRefParams" type="java.util.Map"/> 9696*dc5640d1SHerbert Xue <exception name="ConfigurationException" type="ConfigurationException"/> 9697*dc5640d1SHerbert Xue </method> 9698*dc5640d1SHerbert Xue <doc> 9699*dc5640d1SHerbert Xue <![CDATA[Cleanup up version from Bob's GuiceObjectFactory. Now works properly with 9700*dc5640d1SHerbert Xue GS2 and fixes several bugs. 9701*dc5640d1SHerbert Xue 9702*dc5640d1SHerbert Xue @author [email protected] 9703*dc5640d1SHerbert Xue @author benmccann.com]]> 9704*dc5640d1SHerbert Xue </doc> 9705*dc5640d1SHerbert Xue </class> 9706*dc5640d1SHerbert Xue <!-- end class com.google.inject.struts2.Struts2Factory --> 9707*dc5640d1SHerbert Xue <!-- start class com.google.inject.struts2.Struts2GuicePluginModule --> 9708*dc5640d1SHerbert Xue <class name="Struts2GuicePluginModule" extends="com.google.inject.AbstractModule" 9709*dc5640d1SHerbert Xue abstract="false" 9710*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9711*dc5640d1SHerbert Xue deprecated="not deprecated"> 9712*dc5640d1SHerbert Xue <constructor name="Struts2GuicePluginModule" 9713*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9714*dc5640d1SHerbert Xue deprecated="not deprecated"> 9715*dc5640d1SHerbert Xue </constructor> 9716*dc5640d1SHerbert Xue <method name="configure" 9717*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9718*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 9719*dc5640d1SHerbert Xue deprecated="not deprecated"> 9720*dc5640d1SHerbert Xue </method> 9721*dc5640d1SHerbert Xue <doc> 9722*dc5640d1SHerbert Xue <![CDATA[Initializes the Struts 2 Guice Plugin. 9723*dc5640d1SHerbert Xue Must be added to the injector returned by 9724*dc5640d1SHerbert Xue {@link GuiceServletContextListener.getInjector()}. 9725*dc5640d1SHerbert Xue 9726*dc5640d1SHerbert Xue @author benmccann.com]]> 9727*dc5640d1SHerbert Xue </doc> 9728*dc5640d1SHerbert Xue </class> 9729*dc5640d1SHerbert Xue <!-- end class com.google.inject.struts2.Struts2GuicePluginModule --> 9730*dc5640d1SHerbert Xue</package> 9731*dc5640d1SHerbert Xue<package name="com.google.inject.throwingproviders"> 9732*dc5640d1SHerbert Xue <!-- start interface com.google.inject.throwingproviders.CheckedProvider --> 9733*dc5640d1SHerbert Xue <interface name="CheckedProvider" abstract="true" 9734*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9735*dc5640d1SHerbert Xue deprecated="not deprecated"> 9736*dc5640d1SHerbert Xue <method name="get" return="T" 9737*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9738*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9739*dc5640d1SHerbert Xue deprecated="not deprecated"> 9740*dc5640d1SHerbert Xue <exception name="Exception" type="java.lang.Exception"/> 9741*dc5640d1SHerbert Xue </method> 9742*dc5640d1SHerbert Xue <doc> 9743*dc5640d1SHerbert Xue <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws 9744*dc5640d1SHerbert Xue a checked Exception. Users may not inject {@code T} directly. 9745*dc5640d1SHerbert Xue 9746*dc5640d1SHerbert Xue <p>This interface must be extended to use application-specific exception types. 9747*dc5640d1SHerbert Xue Such subinterfaces may not define new methods, but may narrow the exception type. 9748*dc5640d1SHerbert Xue <pre> 9749*dc5640d1SHerbert Xue public interface RemoteProvider<T> extends CheckedProvider<T> { 9750*dc5640d1SHerbert Xue T get() throws CustomExceptionOne, CustomExceptionTwo; 9751*dc5640d1SHerbert Xue } 9752*dc5640d1SHerbert Xue </pre> 9753*dc5640d1SHerbert Xue 9754*dc5640d1SHerbert Xue <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned 9755*dc5640d1SHerbert Xue or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get} 9756*dc5640d1SHerbert Xue will invoked at most once within each scope. 9757*dc5640d1SHerbert Xue 9758*dc5640d1SHerbert Xue @since 3.0]]> 9759*dc5640d1SHerbert Xue </doc> 9760*dc5640d1SHerbert Xue </interface> 9761*dc5640d1SHerbert Xue <!-- end interface com.google.inject.throwingproviders.CheckedProvider --> 9762*dc5640d1SHerbert Xue <!-- start class com.google.inject.throwingproviders.CheckedProvides --> 9763*dc5640d1SHerbert Xue <class name="CheckedProvides" abstract="true" 9764*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9765*dc5640d1SHerbert Xue deprecated="not deprecated"> 9766*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 9767*dc5640d1SHerbert Xue <doc> 9768*dc5640d1SHerbert Xue <![CDATA[Annotates methods of a {@link Module} to create a {@link CheckedProvider} 9769*dc5640d1SHerbert Xue method binding that can throw exceptions. The method's return type is bound 9770*dc5640d1SHerbert Xue to a {@link CheckedProvider} that can be injected. Guice will pass 9771*dc5640d1SHerbert Xue dependencies to the method as parameters. Install {@literal @}CheckedProvides 9772*dc5640d1SHerbert Xue methods by using 9773*dc5640d1SHerbert Xue {@link ThrowingProviderBinder#forModule(com.google.inject.Module)} on the 9774*dc5640d1SHerbert Xue module where the methods are declared. 9775*dc5640d1SHerbert Xue 9776*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 9777*dc5640d1SHerbert Xue @since 3.0]]> 9778*dc5640d1SHerbert Xue </doc> 9779*dc5640d1SHerbert Xue </class> 9780*dc5640d1SHerbert Xue <!-- end class com.google.inject.throwingproviders.CheckedProvides --> 9781*dc5640d1SHerbert Xue <!-- start interface com.google.inject.throwingproviders.ThrowingProvider --> 9782*dc5640d1SHerbert Xue <interface name="ThrowingProvider" abstract="true" 9783*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9784*dc5640d1SHerbert Xue deprecated="use {@link CheckedProvider} instead."> 9785*dc5640d1SHerbert Xue <implements name="com.google.inject.throwingproviders.CheckedProvider<T>"/> 9786*dc5640d1SHerbert Xue <method name="get" return="T" 9787*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9788*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9789*dc5640d1SHerbert Xue deprecated="not deprecated"> 9790*dc5640d1SHerbert Xue <exception name="Exception" type="java.lang.Exception"/> 9791*dc5640d1SHerbert Xue </method> 9792*dc5640d1SHerbert Xue <doc> 9793*dc5640d1SHerbert Xue <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws 9794*dc5640d1SHerbert Xue a checked Exception. Users may not inject {@code T} directly. 9795*dc5640d1SHerbert Xue 9796*dc5640d1SHerbert Xue <p>This interface must be extended to use application-specific exception types. 9797*dc5640d1SHerbert Xue Such subinterfaces may not define new methods: 9798*dc5640d1SHerbert Xue <pre> 9799*dc5640d1SHerbert Xue public interface RemoteProvider<T> extends ThrowingProvider<T, RemoteException> { } 9800*dc5640d1SHerbert Xue </pre> 9801*dc5640d1SHerbert Xue 9802*dc5640d1SHerbert Xue <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned 9803*dc5640d1SHerbert Xue or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get} 9804*dc5640d1SHerbert Xue will invoked at most once within each scope. 9805*dc5640d1SHerbert Xue 9806*dc5640d1SHerbert Xue @author [email protected] (Jerome Mourits) 9807*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 9808*dc5640d1SHerbert Xue @deprecated use {@link CheckedProvider} instead.]]> 9809*dc5640d1SHerbert Xue </doc> 9810*dc5640d1SHerbert Xue </interface> 9811*dc5640d1SHerbert Xue <!-- end interface com.google.inject.throwingproviders.ThrowingProvider --> 9812*dc5640d1SHerbert Xue <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder --> 9813*dc5640d1SHerbert Xue <class name="ThrowingProviderBinder" extends="java.lang.Object" 9814*dc5640d1SHerbert Xue abstract="false" 9815*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9816*dc5640d1SHerbert Xue deprecated="not deprecated"> 9817*dc5640d1SHerbert Xue <method name="create" return="com.google.inject.throwingproviders.ThrowingProviderBinder" 9818*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9819*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 9820*dc5640d1SHerbert Xue deprecated="not deprecated"> 9821*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 9822*dc5640d1SHerbert Xue </method> 9823*dc5640d1SHerbert Xue <method name="forModule" return="com.google.inject.Module" 9824*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9825*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 9826*dc5640d1SHerbert Xue deprecated="not deprecated"> 9827*dc5640d1SHerbert Xue <param name="module" type="com.google.inject.Module"/> 9828*dc5640d1SHerbert Xue <doc> 9829*dc5640d1SHerbert Xue <![CDATA[Returns a module that installs {@literal @}{@link CheckedProvides} methods. 9830*dc5640d1SHerbert Xue 9831*dc5640d1SHerbert Xue @since 3.0]]> 9832*dc5640d1SHerbert Xue </doc> 9833*dc5640d1SHerbert Xue </method> 9834*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P>" 9835*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9836*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9837*dc5640d1SHerbert Xue deprecated="not deprecated"> 9838*dc5640d1SHerbert Xue <param name="interfaceType" type="java.lang.Class<P>"/> 9839*dc5640d1SHerbert Xue <param name="valueType" type="java.lang.reflect.Type"/> 9840*dc5640d1SHerbert Xue </method> 9841*dc5640d1SHerbert Xue <doc> 9842*dc5640d1SHerbert Xue <![CDATA[<p>Builds a binding for a {@link CheckedProvider}. 9843*dc5640d1SHerbert Xue 9844*dc5640d1SHerbert Xue <p>You can use a fluent API and custom providers: 9845*dc5640d1SHerbert Xue <pre><code>ThrowingProviderBinder.create(binder()) 9846*dc5640d1SHerbert Xue .bind(RemoteProvider.class, Customer.class) 9847*dc5640d1SHerbert Xue .to(RemoteCustomerProvider.class) 9848*dc5640d1SHerbert Xue .in(RequestScope.class); 9849*dc5640d1SHerbert Xue </code></pre> 9850*dc5640d1SHerbert Xue or, you can use throwing provider methods: 9851*dc5640d1SHerbert Xue <pre><code>class MyModule extends AbstractModule { 9852*dc5640d1SHerbert Xue configure() { 9853*dc5640d1SHerbert Xue ThrowingProviderBinder.install(this, binder()); 9854*dc5640d1SHerbert Xue } 9855*dc5640d1SHerbert Xue 9856*dc5640d1SHerbert Xue {@literal @}CheckedProvides(RemoteProvider.class) 9857*dc5640d1SHerbert Xue {@literal @}RequestScope 9858*dc5640d1SHerbert Xue Customer provideCustomer(FlakyCustomerCreator creator) throws RemoteException { 9859*dc5640d1SHerbert Xue return creator.getCustomerOrThrow(); 9860*dc5640d1SHerbert Xue } 9861*dc5640d1SHerbert Xue } 9862*dc5640d1SHerbert Xue </code></pre> 9863*dc5640d1SHerbert Xue 9864*dc5640d1SHerbert Xue @author [email protected] (Jerome Mourits) 9865*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]> 9866*dc5640d1SHerbert Xue </doc> 9867*dc5640d1SHerbert Xue </class> 9868*dc5640d1SHerbert Xue <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder --> 9869*dc5640d1SHerbert Xue <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder --> 9870*dc5640d1SHerbert Xue <class name="ThrowingProviderBinder.SecondaryBinder" extends="java.lang.Object" 9871*dc5640d1SHerbert Xue abstract="false" 9872*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9873*dc5640d1SHerbert Xue deprecated="not deprecated"> 9874*dc5640d1SHerbert Xue <constructor name="ThrowingProviderBinder.SecondaryBinder" type="java.lang.Class<P>, java.lang.reflect.Type" 9875*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9876*dc5640d1SHerbert Xue deprecated="not deprecated"> 9877*dc5640d1SHerbert Xue </constructor> 9878*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P>" 9879*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9880*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9881*dc5640d1SHerbert Xue deprecated="not deprecated"> 9882*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 9883*dc5640d1SHerbert Xue </method> 9884*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P>" 9885*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9886*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9887*dc5640d1SHerbert Xue deprecated="not deprecated"> 9888*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 9889*dc5640d1SHerbert Xue </method> 9890*dc5640d1SHerbert Xue <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 9891*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9892*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9893*dc5640d1SHerbert Xue deprecated="not deprecated"> 9894*dc5640d1SHerbert Xue <param name="target" type="P extends com.google.inject.throwingproviders.CheckedProvider"/> 9895*dc5640d1SHerbert Xue </method> 9896*dc5640d1SHerbert Xue <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 9897*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9898*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9899*dc5640d1SHerbert Xue deprecated="not deprecated"> 9900*dc5640d1SHerbert Xue <param name="targetType" type="java.lang.Class<? extends P>"/> 9901*dc5640d1SHerbert Xue </method> 9902*dc5640d1SHerbert Xue <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 9903*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9904*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9905*dc5640d1SHerbert Xue deprecated="not deprecated"> 9906*dc5640d1SHerbert Xue <param name="targetKey" type="com.google.inject.Key<? extends P>"/> 9907*dc5640d1SHerbert Xue </method> 9908*dc5640d1SHerbert Xue </class> 9909*dc5640d1SHerbert Xue <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder --> 9910*dc5640d1SHerbert Xue</package> 9911*dc5640d1SHerbert Xue<package name="com.google.inject.tools.jmx"> 9912*dc5640d1SHerbert Xue <!-- start interface com.google.inject.tools.jmx.ManagedBindingMBean --> 9913*dc5640d1SHerbert Xue <interface name="ManagedBindingMBean" abstract="true" 9914*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9915*dc5640d1SHerbert Xue deprecated="not deprecated"> 9916*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.String" 9917*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9918*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9919*dc5640d1SHerbert Xue deprecated="not deprecated"> 9920*dc5640d1SHerbert Xue <doc> 9921*dc5640d1SHerbert Xue <![CDATA[Gets the source of this binding.]]> 9922*dc5640d1SHerbert Xue </doc> 9923*dc5640d1SHerbert Xue </method> 9924*dc5640d1SHerbert Xue <method name="getProvider" return="java.lang.String" 9925*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9926*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9927*dc5640d1SHerbert Xue deprecated="not deprecated"> 9928*dc5640d1SHerbert Xue <doc> 9929*dc5640d1SHerbert Xue <![CDATA[Gets the provider to which this binding is bound.]]> 9930*dc5640d1SHerbert Xue </doc> 9931*dc5640d1SHerbert Xue </method> 9932*dc5640d1SHerbert Xue <method name="getKey" return="java.lang.String" 9933*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9934*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9935*dc5640d1SHerbert Xue deprecated="not deprecated"> 9936*dc5640d1SHerbert Xue <doc> 9937*dc5640d1SHerbert Xue <![CDATA[Gets the binding key.]]> 9938*dc5640d1SHerbert Xue </doc> 9939*dc5640d1SHerbert Xue </method> 9940*dc5640d1SHerbert Xue <doc> 9941*dc5640d1SHerbert Xue <![CDATA[JMX interface to bindings. 9942*dc5640d1SHerbert Xue 9943*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 9944*dc5640d1SHerbert Xue </doc> 9945*dc5640d1SHerbert Xue </interface> 9946*dc5640d1SHerbert Xue <!-- end interface com.google.inject.tools.jmx.ManagedBindingMBean --> 9947*dc5640d1SHerbert Xue <!-- start class com.google.inject.tools.jmx.Manager --> 9948*dc5640d1SHerbert Xue <class name="Manager" extends="java.lang.Object" 9949*dc5640d1SHerbert Xue abstract="false" 9950*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9951*dc5640d1SHerbert Xue deprecated="not deprecated"> 9952*dc5640d1SHerbert Xue <constructor name="Manager" 9953*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9954*dc5640d1SHerbert Xue deprecated="not deprecated"> 9955*dc5640d1SHerbert Xue </constructor> 9956*dc5640d1SHerbert Xue <method name="manage" 9957*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9958*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 9959*dc5640d1SHerbert Xue deprecated="not deprecated"> 9960*dc5640d1SHerbert Xue <param name="domain" type="java.lang.String"/> 9961*dc5640d1SHerbert Xue <param name="injector" type="com.google.inject.Injector"/> 9962*dc5640d1SHerbert Xue <doc> 9963*dc5640d1SHerbert Xue <![CDATA[Registers all the bindings of an Injector with the platform MBean server. 9964*dc5640d1SHerbert Xue Consider using the name of your root {@link Module} class as the domain.]]> 9965*dc5640d1SHerbert Xue </doc> 9966*dc5640d1SHerbert Xue </method> 9967*dc5640d1SHerbert Xue <method name="manage" 9968*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9969*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 9970*dc5640d1SHerbert Xue deprecated="not deprecated"> 9971*dc5640d1SHerbert Xue <param name="server" type="javax.management.MBeanServer"/> 9972*dc5640d1SHerbert Xue <param name="domain" type="java.lang.String"/> 9973*dc5640d1SHerbert Xue <param name="injector" type="com.google.inject.Injector"/> 9974*dc5640d1SHerbert Xue <doc> 9975*dc5640d1SHerbert Xue <![CDATA[Registers all the bindings of an Injector with the given MBean server. 9976*dc5640d1SHerbert Xue Consider using the name of your root {@link Module} class as the domain.]]> 9977*dc5640d1SHerbert Xue </doc> 9978*dc5640d1SHerbert Xue </method> 9979*dc5640d1SHerbert Xue <method name="main" 9980*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9981*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 9982*dc5640d1SHerbert Xue deprecated="not deprecated"> 9983*dc5640d1SHerbert Xue <param name="args" type="java.lang.String[]"/> 9984*dc5640d1SHerbert Xue <exception name="Exception" type="java.lang.Exception"/> 9985*dc5640d1SHerbert Xue <doc> 9986*dc5640d1SHerbert Xue <![CDATA[Run with no arguments for usage instructions.]]> 9987*dc5640d1SHerbert Xue </doc> 9988*dc5640d1SHerbert Xue </method> 9989*dc5640d1SHerbert Xue <doc> 9990*dc5640d1SHerbert Xue <![CDATA[Provides a JMX interface to Guice. 9991*dc5640d1SHerbert Xue 9992*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 9993*dc5640d1SHerbert Xue </doc> 9994*dc5640d1SHerbert Xue </class> 9995*dc5640d1SHerbert Xue <!-- end class com.google.inject.tools.jmx.Manager --> 9996*dc5640d1SHerbert Xue</package> 9997*dc5640d1SHerbert Xue<package name="com.google.inject.util"> 9998*dc5640d1SHerbert Xue <!-- start class com.google.inject.util.Modules --> 9999*dc5640d1SHerbert Xue <class name="Modules" extends="java.lang.Object" 10000*dc5640d1SHerbert Xue abstract="false" 10001*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 10002*dc5640d1SHerbert Xue deprecated="not deprecated"> 10003*dc5640d1SHerbert Xue <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder" 10004*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10005*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 10006*dc5640d1SHerbert Xue deprecated="not deprecated"> 10007*dc5640d1SHerbert Xue <param name="modules" type="com.google.inject.Module[]"/> 10008*dc5640d1SHerbert Xue <doc> 10009*dc5640d1SHerbert Xue <![CDATA[Returns a builder that creates a module that overlays override modules over the given 10010*dc5640d1SHerbert Xue modules. If a key is bound in both sets of modules, only the binding from the override modules 10011*dc5640d1SHerbert Xue is kept. If a single {@link PrivateModule} is supplied or all elements are from 10012*dc5640d1SHerbert Xue a single {@link PrivateBinder}, then this will overwrite the private bindings. 10013*dc5640d1SHerbert Xue Otherwise, private bindings will not be overwritten unless they are exposed. 10014*dc5640d1SHerbert Xue This can be used to replace the bindings of a production module with test bindings: 10015*dc5640d1SHerbert Xue <pre> 10016*dc5640d1SHerbert Xue Module functionalTestModule 10017*dc5640d1SHerbert Xue = Modules.override(new ProductionModule()).with(new TestModule()); 10018*dc5640d1SHerbert Xue </pre> 10019*dc5640d1SHerbert Xue 10020*dc5640d1SHerbert Xue <p>Prefer to write smaller modules that can be reused and tested without overrides. 10021*dc5640d1SHerbert Xue 10022*dc5640d1SHerbert Xue @param modules the modules whose bindings are open to be overridden]]> 10023*dc5640d1SHerbert Xue </doc> 10024*dc5640d1SHerbert Xue </method> 10025*dc5640d1SHerbert Xue <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder" 10026*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10027*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 10028*dc5640d1SHerbert Xue deprecated="not deprecated"> 10029*dc5640d1SHerbert Xue <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 10030*dc5640d1SHerbert Xue <doc> 10031*dc5640d1SHerbert Xue <![CDATA[Returns a builder that creates a module that overlays override modules over the given 10032*dc5640d1SHerbert Xue modules. If a key is bound in both sets of modules, only the binding from the override modules 10033*dc5640d1SHerbert Xue is kept. If a single {@link PrivateModule} is supplied or all elements are from 10034*dc5640d1SHerbert Xue a single {@link PrivateBinder}, then this will overwrite the private bindings. 10035*dc5640d1SHerbert Xue Otherwise, private bindings will not be overwritten unless they are exposed. 10036*dc5640d1SHerbert Xue This can be used to replace the bindings of a production module with test bindings: 10037*dc5640d1SHerbert Xue <pre> 10038*dc5640d1SHerbert Xue Module functionalTestModule 10039*dc5640d1SHerbert Xue = Modules.override(getProductionModules()).with(getTestModules()); 10040*dc5640d1SHerbert Xue </pre> 10041*dc5640d1SHerbert Xue 10042*dc5640d1SHerbert Xue <p>Prefer to write smaller modules that can be reused and tested without overrides. 10043*dc5640d1SHerbert Xue 10044*dc5640d1SHerbert Xue @param modules the modules whose bindings are open to be overridden]]> 10045*dc5640d1SHerbert Xue </doc> 10046*dc5640d1SHerbert Xue </method> 10047*dc5640d1SHerbert Xue <method name="combine" return="com.google.inject.Module" 10048*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10049*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 10050*dc5640d1SHerbert Xue deprecated="not deprecated"> 10051*dc5640d1SHerbert Xue <param name="modules" type="com.google.inject.Module[]"/> 10052*dc5640d1SHerbert Xue <doc> 10053*dc5640d1SHerbert Xue <![CDATA[Returns a new module that installs all of {@code modules}.]]> 10054*dc5640d1SHerbert Xue </doc> 10055*dc5640d1SHerbert Xue </method> 10056*dc5640d1SHerbert Xue <method name="combine" return="com.google.inject.Module" 10057*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10058*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 10059*dc5640d1SHerbert Xue deprecated="not deprecated"> 10060*dc5640d1SHerbert Xue <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 10061*dc5640d1SHerbert Xue <doc> 10062*dc5640d1SHerbert Xue <![CDATA[Returns a new module that installs all of {@code modules}.]]> 10063*dc5640d1SHerbert Xue </doc> 10064*dc5640d1SHerbert Xue </method> 10065*dc5640d1SHerbert Xue <field name="EMPTY_MODULE" type="com.google.inject.Module" 10066*dc5640d1SHerbert Xue transient="false" volatile="false" 10067*dc5640d1SHerbert Xue static="true" final="true" visibility="public" 10068*dc5640d1SHerbert Xue deprecated="not deprecated"> 10069*dc5640d1SHerbert Xue </field> 10070*dc5640d1SHerbert Xue <doc> 10071*dc5640d1SHerbert Xue <![CDATA[Static utility methods for creating and working with instances of {@link Module}. 10072*dc5640d1SHerbert Xue 10073*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 10074*dc5640d1SHerbert Xue @since 2.0]]> 10075*dc5640d1SHerbert Xue </doc> 10076*dc5640d1SHerbert Xue </class> 10077*dc5640d1SHerbert Xue <!-- end class com.google.inject.util.Modules --> 10078*dc5640d1SHerbert Xue <!-- start interface com.google.inject.util.Modules.OverriddenModuleBuilder --> 10079*dc5640d1SHerbert Xue <interface name="Modules.OverriddenModuleBuilder" abstract="true" 10080*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 10081*dc5640d1SHerbert Xue deprecated="not deprecated"> 10082*dc5640d1SHerbert Xue <method name="with" return="com.google.inject.Module" 10083*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10084*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10085*dc5640d1SHerbert Xue deprecated="not deprecated"> 10086*dc5640d1SHerbert Xue <param name="overrides" type="com.google.inject.Module[]"/> 10087*dc5640d1SHerbert Xue <doc> 10088*dc5640d1SHerbert Xue <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]> 10089*dc5640d1SHerbert Xue </doc> 10090*dc5640d1SHerbert Xue </method> 10091*dc5640d1SHerbert Xue <method name="with" return="com.google.inject.Module" 10092*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10093*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10094*dc5640d1SHerbert Xue deprecated="not deprecated"> 10095*dc5640d1SHerbert Xue <param name="overrides" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 10096*dc5640d1SHerbert Xue <doc> 10097*dc5640d1SHerbert Xue <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]> 10098*dc5640d1SHerbert Xue </doc> 10099*dc5640d1SHerbert Xue </method> 10100*dc5640d1SHerbert Xue <doc> 10101*dc5640d1SHerbert Xue <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]> 10102*dc5640d1SHerbert Xue </doc> 10103*dc5640d1SHerbert Xue </interface> 10104*dc5640d1SHerbert Xue <!-- end interface com.google.inject.util.Modules.OverriddenModuleBuilder --> 10105*dc5640d1SHerbert Xue <!-- start class com.google.inject.util.Providers --> 10106*dc5640d1SHerbert Xue <class name="Providers" extends="java.lang.Object" 10107*dc5640d1SHerbert Xue abstract="false" 10108*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 10109*dc5640d1SHerbert Xue deprecated="not deprecated"> 10110*dc5640d1SHerbert Xue <method name="of" return="com.google.inject.Provider<T>" 10111*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10112*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 10113*dc5640d1SHerbert Xue deprecated="not deprecated"> 10114*dc5640d1SHerbert Xue <param name="instance" type="T"/> 10115*dc5640d1SHerbert Xue <doc> 10116*dc5640d1SHerbert Xue <![CDATA[Returns a provider which always provides {@code instance}. This should not 10117*dc5640d1SHerbert Xue be necessary to use in your application, but is helpful for several types 10118*dc5640d1SHerbert Xue of unit tests. 10119*dc5640d1SHerbert Xue 10120*dc5640d1SHerbert Xue @param instance the instance that should always be provided. This is also 10121*dc5640d1SHerbert Xue permitted to be null, to enable aggressive testing, although in real 10122*dc5640d1SHerbert Xue life a Guice-supplied Provider will never return null.]]> 10123*dc5640d1SHerbert Xue </doc> 10124*dc5640d1SHerbert Xue </method> 10125*dc5640d1SHerbert Xue <method name="guicify" return="com.google.inject.Provider<T>" 10126*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10127*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 10128*dc5640d1SHerbert Xue deprecated="not deprecated"> 10129*dc5640d1SHerbert Xue <param name="provider" type="javax.inject.Provider<T>"/> 10130*dc5640d1SHerbert Xue <doc> 10131*dc5640d1SHerbert Xue <![CDATA[Returns a Guice-friendly {@code com.google.inject.Provider} for the given 10132*dc5640d1SHerbert Xue JSR-330 {@code javax.inject.Provider}. The converse method is unnecessary, 10133*dc5640d1SHerbert Xue since Guice providers directly implement the JSR-330 interface. 10134*dc5640d1SHerbert Xue 10135*dc5640d1SHerbert Xue @since 3.0]]> 10136*dc5640d1SHerbert Xue </doc> 10137*dc5640d1SHerbert Xue </method> 10138*dc5640d1SHerbert Xue <doc> 10139*dc5640d1SHerbert Xue <![CDATA[Static utility methods for creating and working with instances of 10140*dc5640d1SHerbert Xue {@link Provider}. 10141*dc5640d1SHerbert Xue 10142*dc5640d1SHerbert Xue @author Kevin Bourrillion ([email protected]) 10143*dc5640d1SHerbert Xue @since 2.0]]> 10144*dc5640d1SHerbert Xue </doc> 10145*dc5640d1SHerbert Xue </class> 10146*dc5640d1SHerbert Xue <!-- end class com.google.inject.util.Providers --> 10147*dc5640d1SHerbert Xue <!-- start class com.google.inject.util.Types --> 10148*dc5640d1SHerbert Xue <class name="Types" extends="java.lang.Object" 10149*dc5640d1SHerbert Xue abstract="false" 10150*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 10151*dc5640d1SHerbert Xue deprecated="not deprecated"> 10152*dc5640d1SHerbert Xue <method name="newParameterizedType" return="java.lang.reflect.ParameterizedType" 10153*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10154*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 10155*dc5640d1SHerbert Xue deprecated="not deprecated"> 10156*dc5640d1SHerbert Xue <param name="rawType" type="java.lang.reflect.Type"/> 10157*dc5640d1SHerbert Xue <param name="typeArguments" type="java.lang.reflect.Type[]"/> 10158*dc5640d1SHerbert Xue <doc> 10159*dc5640d1SHerbert Xue <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to 10160*dc5640d1SHerbert Xue {@code rawType}. The returned type does not have an owner type. 10161*dc5640d1SHerbert Xue 10162*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]> 10163*dc5640d1SHerbert Xue </doc> 10164*dc5640d1SHerbert Xue </method> 10165*dc5640d1SHerbert Xue <method name="newParameterizedTypeWithOwner" return="java.lang.reflect.ParameterizedType" 10166*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10167*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 10168*dc5640d1SHerbert Xue deprecated="not deprecated"> 10169*dc5640d1SHerbert Xue <param name="ownerType" type="java.lang.reflect.Type"/> 10170*dc5640d1SHerbert Xue <param name="rawType" type="java.lang.reflect.Type"/> 10171*dc5640d1SHerbert Xue <param name="typeArguments" type="java.lang.reflect.Type[]"/> 10172*dc5640d1SHerbert Xue <doc> 10173*dc5640d1SHerbert Xue <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to 10174*dc5640d1SHerbert Xue {@code rawType} and enclosed by {@code ownerType}. 10175*dc5640d1SHerbert Xue 10176*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]> 10177*dc5640d1SHerbert Xue </doc> 10178*dc5640d1SHerbert Xue </method> 10179*dc5640d1SHerbert Xue <method name="arrayOf" return="java.lang.reflect.GenericArrayType" 10180*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10181*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 10182*dc5640d1SHerbert Xue deprecated="not deprecated"> 10183*dc5640d1SHerbert Xue <param name="componentType" type="java.lang.reflect.Type"/> 10184*dc5640d1SHerbert Xue <doc> 10185*dc5640d1SHerbert Xue <![CDATA[Returns an array type whose elements are all instances of 10186*dc5640d1SHerbert Xue {@code componentType}. 10187*dc5640d1SHerbert Xue 10188*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} generic array type.]]> 10189*dc5640d1SHerbert Xue </doc> 10190*dc5640d1SHerbert Xue </method> 10191*dc5640d1SHerbert Xue <method name="subtypeOf" return="java.lang.reflect.WildcardType" 10192*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10193*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 10194*dc5640d1SHerbert Xue deprecated="not deprecated"> 10195*dc5640d1SHerbert Xue <param name="bound" type="java.lang.reflect.Type"/> 10196*dc5640d1SHerbert Xue <doc> 10197*dc5640d1SHerbert Xue <![CDATA[Returns a type that represents an unknown type that extends {@code bound}. 10198*dc5640d1SHerbert Xue For example, if {@code bound} is {@code CharSequence.class}, this returns 10199*dc5640d1SHerbert Xue {@code ? extends CharSequence}. If {@code bound} is {@code Object.class}, 10200*dc5640d1SHerbert Xue this returns {@code ?}, which is shorthand for {@code ? extends Object}.]]> 10201*dc5640d1SHerbert Xue </doc> 10202*dc5640d1SHerbert Xue </method> 10203*dc5640d1SHerbert Xue <method name="supertypeOf" return="java.lang.reflect.WildcardType" 10204*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10205*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 10206*dc5640d1SHerbert Xue deprecated="not deprecated"> 10207*dc5640d1SHerbert Xue <param name="bound" type="java.lang.reflect.Type"/> 10208*dc5640d1SHerbert Xue <doc> 10209*dc5640d1SHerbert Xue <![CDATA[Returns a type that represents an unknown supertype of {@code bound}. For 10210*dc5640d1SHerbert Xue example, if {@code bound} is {@code String.class}, this returns {@code ? 10211*dc5640d1SHerbert Xue super String}.]]> 10212*dc5640d1SHerbert Xue </doc> 10213*dc5640d1SHerbert Xue </method> 10214*dc5640d1SHerbert Xue <method name="listOf" return="java.lang.reflect.ParameterizedType" 10215*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10216*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 10217*dc5640d1SHerbert Xue deprecated="not deprecated"> 10218*dc5640d1SHerbert Xue <param name="elementType" type="java.lang.reflect.Type"/> 10219*dc5640d1SHerbert Xue <doc> 10220*dc5640d1SHerbert Xue <![CDATA[Returns a type modelling a {@link List} whose elements are of type 10221*dc5640d1SHerbert Xue {@code elementType}. 10222*dc5640d1SHerbert Xue 10223*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]> 10224*dc5640d1SHerbert Xue </doc> 10225*dc5640d1SHerbert Xue </method> 10226*dc5640d1SHerbert Xue <method name="setOf" return="java.lang.reflect.ParameterizedType" 10227*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10228*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 10229*dc5640d1SHerbert Xue deprecated="not deprecated"> 10230*dc5640d1SHerbert Xue <param name="elementType" type="java.lang.reflect.Type"/> 10231*dc5640d1SHerbert Xue <doc> 10232*dc5640d1SHerbert Xue <![CDATA[Returns a type modelling a {@link Set} whose elements are of type 10233*dc5640d1SHerbert Xue {@code elementType}. 10234*dc5640d1SHerbert Xue 10235*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]> 10236*dc5640d1SHerbert Xue </doc> 10237*dc5640d1SHerbert Xue </method> 10238*dc5640d1SHerbert Xue <method name="mapOf" return="java.lang.reflect.ParameterizedType" 10239*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10240*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 10241*dc5640d1SHerbert Xue deprecated="not deprecated"> 10242*dc5640d1SHerbert Xue <param name="keyType" type="java.lang.reflect.Type"/> 10243*dc5640d1SHerbert Xue <param name="valueType" type="java.lang.reflect.Type"/> 10244*dc5640d1SHerbert Xue <doc> 10245*dc5640d1SHerbert Xue <![CDATA[Returns a type modelling a {@link Map} whose keys are of type 10246*dc5640d1SHerbert Xue {@code keyType} and whose values are of type {@code valueType}. 10247*dc5640d1SHerbert Xue 10248*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]> 10249*dc5640d1SHerbert Xue </doc> 10250*dc5640d1SHerbert Xue </method> 10251*dc5640d1SHerbert Xue <method name="providerOf" return="java.lang.reflect.ParameterizedType" 10252*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10253*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 10254*dc5640d1SHerbert Xue deprecated="not deprecated"> 10255*dc5640d1SHerbert Xue <param name="providedType" type="java.lang.reflect.Type"/> 10256*dc5640d1SHerbert Xue <doc> 10257*dc5640d1SHerbert Xue <![CDATA[Returns a type modelling a {@link Provider} that provides elements of type 10258*dc5640d1SHerbert Xue {@code elementType}. 10259*dc5640d1SHerbert Xue 10260*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]> 10261*dc5640d1SHerbert Xue </doc> 10262*dc5640d1SHerbert Xue </method> 10263*dc5640d1SHerbert Xue <doc> 10264*dc5640d1SHerbert Xue <![CDATA[Static methods for working with types. 10265*dc5640d1SHerbert Xue 10266*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 10267*dc5640d1SHerbert Xue @since 2.0]]> 10268*dc5640d1SHerbert Xue </doc> 10269*dc5640d1SHerbert Xue </class> 10270*dc5640d1SHerbert Xue <!-- end class com.google.inject.util.Types --> 10271*dc5640d1SHerbert Xue</package> 10272*dc5640d1SHerbert Xue 10273*dc5640d1SHerbert Xue</api> 10274