1*dc5640d1SHerbert Xue<?xml version="1.0" encoding="iso-8859-1" standalone="no"?> 2*dc5640d1SHerbert Xue<!-- Generated by the JDiff Javadoc doclet --> 3*dc5640d1SHerbert Xue<!-- (http://www.jdiff.org) --> 4*dc5640d1SHerbert Xue<!-- on Tue Apr 28 17:33:25 EDT 2015 --> 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="4.0" 10*dc5640d1SHerbert Xue jdversion="1.1.1"> 11*dc5640d1SHerbert Xue 12*dc5640d1SHerbert Xue<!-- Command line arguments = -doclet jdiff.JDiff -docletpath /usr/local/google/home/cgdecker/Projects/guice/lib/build/jdiff/jdiff.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/jdiff/xerces.jar -classpath /usr/local/google/home/cgdecker/Projects/guice/lib/aopalliance.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/guava-16.0.1.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/javax.inject.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/asm-5.0.3.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/bnd-0.0.384.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/cglib-3.1.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/commons-logging-1.0.4.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/easymock.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/felix-2.0.5.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/guava-testlib-16.0.1.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/jarjar-1.1.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/javax.inject-tck.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/jsr305.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/junit.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/munge.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/safesax.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/spring-beans.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/spring-core.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/dagger-adapter/lib/dagger-2.0.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/antlr-2.7.5h3.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/aopalliance.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/cglib-nodep-3.0.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/commons-collections.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/commons-io.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/commons-logging-1.0.4.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/db4o-6.4.14.8131-java5.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/dom4j-1.6.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/easymock.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/ejb3-persistence.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/hibernate-annotations.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/hibernate-entitymanager.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/hibernate-search.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/hibernate3.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/hsqldb.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/javassist.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/jaxen-1.1-beta-7.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/jboss-archive-browsing.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/jta.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/log4j-1.2.14.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/ognl-2.6.7.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/oro-2.0.8.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/servlet-api-2.5.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/xwork-2.0.4.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/ant-1.6.5.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/commons-fileupload-1.2.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/commons-io-1.3.2.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/commons-logging-1.0.4.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/core-3.1.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/freemarker-2.3.16.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/javassist.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/jetty-6.1.0.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/jetty-util-6.1.0.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/jsp-2.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/jsp-api-2.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/ognl-3.0.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/servlet-api-2.5.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/struts2-core-2.2.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/xwork-core-2.2.1.jar:/usr/local/google/home/cgdecker/Projects/guice/build/classes -doclet jdiff.JDiff -docletpath /usr/local/google/home/cgdecker/Projects/guice/lib/build/jdiff/jdiff.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/jdiff/xerces.jar -apidir build/docs/latest-api-diffs -apiname 4.0 --> 13*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 <method name="bindListener" 262*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 263*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 264*dc5640d1SHerbert Xue deprecated="not deprecated"> 265*dc5640d1SHerbert Xue <param name="bindingMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.Binding<?>>"/> 266*dc5640d1SHerbert Xue <param name="listener" type="com.google.inject.spi.ProvisionListener[]"/> 267*dc5640d1SHerbert Xue <doc> 268*dc5640d1SHerbert Xue <![CDATA[@see Binder#bindListener(Matcher, ProvisionListener...) 269*dc5640d1SHerbert Xue @since 4.0]]> 270*dc5640d1SHerbert Xue </doc> 271*dc5640d1SHerbert Xue </method> 272*dc5640d1SHerbert Xue <doc> 273*dc5640d1SHerbert Xue <![CDATA[A support class for {@link Module}s which reduces repetition and results in 274*dc5640d1SHerbert Xue a more readable configuration. Simply extend this class, implement {@link 275*dc5640d1SHerbert Xue #configure()}, and call the inherited methods which mirror those found in 276*dc5640d1SHerbert Xue {@link Binder}. For example: 277*dc5640d1SHerbert Xue 278*dc5640d1SHerbert Xue <pre> 279*dc5640d1SHerbert Xue public class MyModule extends AbstractModule { 280*dc5640d1SHerbert Xue protected void configure() { 281*dc5640d1SHerbert Xue bind(Service.class).to(ServiceImpl.class).in(Singleton.class); 282*dc5640d1SHerbert Xue bind(CreditCardPaymentService.class); 283*dc5640d1SHerbert Xue bind(PaymentService.class).to(CreditCardPaymentService.class); 284*dc5640d1SHerbert Xue bindConstant().annotatedWith(Names.named("port")).to(8080); 285*dc5640d1SHerbert Xue } 286*dc5640d1SHerbert Xue } 287*dc5640d1SHerbert Xue </pre> 288*dc5640d1SHerbert Xue 289*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 290*dc5640d1SHerbert Xue </doc> 291*dc5640d1SHerbert Xue </class> 292*dc5640d1SHerbert Xue <!-- end class com.google.inject.AbstractModule --> 293*dc5640d1SHerbert Xue <!-- start interface com.google.inject.Binder --> 294*dc5640d1SHerbert Xue <interface name="Binder" abstract="true" 295*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 296*dc5640d1SHerbert Xue deprecated="not deprecated"> 297*dc5640d1SHerbert Xue <method name="bindInterceptor" 298*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 299*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 300*dc5640d1SHerbert Xue deprecated="not deprecated"> 301*dc5640d1SHerbert Xue <param name="classMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>"/> 302*dc5640d1SHerbert Xue <param name="methodMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>"/> 303*dc5640d1SHerbert Xue <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/> 304*dc5640d1SHerbert Xue <doc> 305*dc5640d1SHerbert Xue <![CDATA[Binds method interceptor[s] to methods matched by class and method matchers. A method is 306*dc5640d1SHerbert Xue eligible for interception if: 307*dc5640d1SHerbert Xue 308*dc5640d1SHerbert Xue <ul> 309*dc5640d1SHerbert Xue <li>Guice created the instance the method is on</li> 310*dc5640d1SHerbert Xue <li>Neither the enclosing type nor the method is final</li> 311*dc5640d1SHerbert Xue <li>And the method is package-private, protected, or public</li> 312*dc5640d1SHerbert Xue </ul> 313*dc5640d1SHerbert Xue 314*dc5640d1SHerbert Xue @param classMatcher matches classes the interceptor should apply to. For 315*dc5640d1SHerbert Xue example: {@code only(Runnable.class)}. 316*dc5640d1SHerbert Xue @param methodMatcher matches methods the interceptor should apply to. For 317*dc5640d1SHerbert Xue example: {@code annotatedWith(Transactional.class)}. 318*dc5640d1SHerbert Xue @param interceptors to bind. The interceptors are called in the order they 319*dc5640d1SHerbert Xue are given.]]> 320*dc5640d1SHerbert Xue </doc> 321*dc5640d1SHerbert Xue </method> 322*dc5640d1SHerbert Xue <method name="bindScope" 323*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 324*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 325*dc5640d1SHerbert Xue deprecated="not deprecated"> 326*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 327*dc5640d1SHerbert Xue <param name="scope" type="com.google.inject.Scope"/> 328*dc5640d1SHerbert Xue <doc> 329*dc5640d1SHerbert Xue <![CDATA[Binds a scope to an annotation.]]> 330*dc5640d1SHerbert Xue </doc> 331*dc5640d1SHerbert Xue </method> 332*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder<T>" 333*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 334*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 335*dc5640d1SHerbert Xue deprecated="not deprecated"> 336*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 337*dc5640d1SHerbert Xue <doc> 338*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link Binder}.]]> 339*dc5640d1SHerbert Xue </doc> 340*dc5640d1SHerbert Xue </method> 341*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 342*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 343*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 344*dc5640d1SHerbert Xue deprecated="not deprecated"> 345*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 346*dc5640d1SHerbert Xue <doc> 347*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link Binder}.]]> 348*dc5640d1SHerbert Xue </doc> 349*dc5640d1SHerbert Xue </method> 350*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 351*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 352*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 353*dc5640d1SHerbert Xue deprecated="not deprecated"> 354*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 355*dc5640d1SHerbert Xue <doc> 356*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link Binder}.]]> 357*dc5640d1SHerbert Xue </doc> 358*dc5640d1SHerbert Xue </method> 359*dc5640d1SHerbert Xue <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder" 360*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 361*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 362*dc5640d1SHerbert Xue deprecated="not deprecated"> 363*dc5640d1SHerbert Xue <doc> 364*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link Binder}.]]> 365*dc5640d1SHerbert Xue </doc> 366*dc5640d1SHerbert Xue </method> 367*dc5640d1SHerbert Xue <method name="requestInjection" 368*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 369*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 370*dc5640d1SHerbert Xue deprecated="not deprecated"> 371*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<T>"/> 372*dc5640d1SHerbert Xue <param name="instance" type="T"/> 373*dc5640d1SHerbert Xue <doc> 374*dc5640d1SHerbert Xue <![CDATA[Upon successful creation, the {@link Injector} will inject instance fields 375*dc5640d1SHerbert Xue and methods of the given object. 376*dc5640d1SHerbert Xue 377*dc5640d1SHerbert Xue @param type of instance 378*dc5640d1SHerbert Xue @param instance for which members will be injected 379*dc5640d1SHerbert Xue @since 2.0]]> 380*dc5640d1SHerbert Xue </doc> 381*dc5640d1SHerbert Xue </method> 382*dc5640d1SHerbert Xue <method name="requestInjection" 383*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 384*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 385*dc5640d1SHerbert Xue deprecated="not deprecated"> 386*dc5640d1SHerbert Xue <param name="instance" type="java.lang.Object"/> 387*dc5640d1SHerbert Xue <doc> 388*dc5640d1SHerbert Xue <![CDATA[Upon successful creation, the {@link Injector} will inject instance fields 389*dc5640d1SHerbert Xue and methods of the given object. 390*dc5640d1SHerbert Xue 391*dc5640d1SHerbert Xue @param instance for which members will be injected 392*dc5640d1SHerbert Xue @since 2.0]]> 393*dc5640d1SHerbert Xue </doc> 394*dc5640d1SHerbert Xue </method> 395*dc5640d1SHerbert Xue <method name="requestStaticInjection" 396*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 397*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 398*dc5640d1SHerbert Xue deprecated="not deprecated"> 399*dc5640d1SHerbert Xue <param name="types" type="java.lang.Class[]"/> 400*dc5640d1SHerbert Xue <doc> 401*dc5640d1SHerbert Xue <![CDATA[Upon successful creation, the {@link Injector} will inject static fields 402*dc5640d1SHerbert Xue and methods in the given classes. 403*dc5640d1SHerbert Xue 404*dc5640d1SHerbert Xue @param types for which static members will be injected]]> 405*dc5640d1SHerbert Xue </doc> 406*dc5640d1SHerbert Xue </method> 407*dc5640d1SHerbert Xue <method name="install" 408*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 409*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 410*dc5640d1SHerbert Xue deprecated="not deprecated"> 411*dc5640d1SHerbert Xue <param name="module" type="com.google.inject.Module"/> 412*dc5640d1SHerbert Xue <doc> 413*dc5640d1SHerbert Xue <![CDATA[Uses the given module to configure more bindings.]]> 414*dc5640d1SHerbert Xue </doc> 415*dc5640d1SHerbert Xue </method> 416*dc5640d1SHerbert Xue <method name="currentStage" return="com.google.inject.Stage" 417*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 418*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 419*dc5640d1SHerbert Xue deprecated="not deprecated"> 420*dc5640d1SHerbert Xue <doc> 421*dc5640d1SHerbert Xue <![CDATA[Gets the current stage.]]> 422*dc5640d1SHerbert Xue </doc> 423*dc5640d1SHerbert Xue </method> 424*dc5640d1SHerbert Xue <method name="addError" 425*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 426*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 427*dc5640d1SHerbert Xue deprecated="not deprecated"> 428*dc5640d1SHerbert Xue <param name="message" type="java.lang.String"/> 429*dc5640d1SHerbert Xue <param name="arguments" type="java.lang.Object[]"/> 430*dc5640d1SHerbert Xue <doc> 431*dc5640d1SHerbert Xue <![CDATA[Records an error message which will be presented to the user at a later 432*dc5640d1SHerbert Xue time. Unlike throwing an exception, this enable us to continue 433*dc5640d1SHerbert Xue configuring the Injector and discover more errors. Uses {@link 434*dc5640d1SHerbert Xue String#format(String, Object[])} to insert the arguments into the 435*dc5640d1SHerbert Xue message.]]> 436*dc5640d1SHerbert Xue </doc> 437*dc5640d1SHerbert Xue </method> 438*dc5640d1SHerbert Xue <method name="addError" 439*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 440*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 441*dc5640d1SHerbert Xue deprecated="not deprecated"> 442*dc5640d1SHerbert Xue <param name="t" type="java.lang.Throwable"/> 443*dc5640d1SHerbert Xue <doc> 444*dc5640d1SHerbert Xue <![CDATA[Records an exception, the full details of which will be logged, and the 445*dc5640d1SHerbert Xue message of which will be presented to the user at a later 446*dc5640d1SHerbert Xue time. If your Module calls something that you worry may fail, you should 447*dc5640d1SHerbert Xue catch the exception and pass it into this.]]> 448*dc5640d1SHerbert Xue </doc> 449*dc5640d1SHerbert Xue </method> 450*dc5640d1SHerbert Xue <method name="addError" 451*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 452*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 453*dc5640d1SHerbert Xue deprecated="not deprecated"> 454*dc5640d1SHerbert Xue <param name="message" type="com.google.inject.spi.Message"/> 455*dc5640d1SHerbert Xue <doc> 456*dc5640d1SHerbert Xue <![CDATA[Records an error message to be presented to the user at a later time. 457*dc5640d1SHerbert Xue 458*dc5640d1SHerbert Xue @since 2.0]]> 459*dc5640d1SHerbert Xue </doc> 460*dc5640d1SHerbert Xue </method> 461*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 462*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 463*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 464*dc5640d1SHerbert Xue deprecated="not deprecated"> 465*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 466*dc5640d1SHerbert Xue <doc> 467*dc5640d1SHerbert Xue <![CDATA[Returns the provider used to obtain instances for the given injection key. 468*dc5640d1SHerbert Xue The returned provider will not be valid until the {@link Injector} has been 469*dc5640d1SHerbert Xue created. The provider will throw an {@code IllegalStateException} if you 470*dc5640d1SHerbert Xue try to use it beforehand. 471*dc5640d1SHerbert Xue 472*dc5640d1SHerbert Xue @since 2.0]]> 473*dc5640d1SHerbert Xue </doc> 474*dc5640d1SHerbert Xue </method> 475*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 476*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 477*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 478*dc5640d1SHerbert Xue deprecated="not deprecated"> 479*dc5640d1SHerbert Xue <param name="dependency" type="com.google.inject.spi.Dependency<T>"/> 480*dc5640d1SHerbert Xue <doc> 481*dc5640d1SHerbert Xue <![CDATA[Returns the provider used to obtain instances for the given injection key. 482*dc5640d1SHerbert Xue The returned provider will be attached to the injection point and will 483*dc5640d1SHerbert Xue follow the nullability specified in the dependency. 484*dc5640d1SHerbert Xue Additionally, the returned provider will not be valid until the {@link Injector} 485*dc5640d1SHerbert Xue has been created. The provider will throw an {@code IllegalStateException} if you 486*dc5640d1SHerbert Xue try to use it beforehand. 487*dc5640d1SHerbert Xue 488*dc5640d1SHerbert Xue @since 4.0]]> 489*dc5640d1SHerbert Xue </doc> 490*dc5640d1SHerbert Xue </method> 491*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 492*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 493*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 494*dc5640d1SHerbert Xue deprecated="not deprecated"> 495*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 496*dc5640d1SHerbert Xue <doc> 497*dc5640d1SHerbert Xue <![CDATA[Returns the provider used to obtain instances for the given injection type. 498*dc5640d1SHerbert Xue The returned provider will not be valid until the {@link Injector} has been 499*dc5640d1SHerbert Xue created. The provider will throw an {@code IllegalStateException} if you 500*dc5640d1SHerbert Xue try to use it beforehand. 501*dc5640d1SHerbert Xue 502*dc5640d1SHerbert Xue @since 2.0]]> 503*dc5640d1SHerbert Xue </doc> 504*dc5640d1SHerbert Xue </method> 505*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 506*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 507*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 508*dc5640d1SHerbert Xue deprecated="not deprecated"> 509*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 510*dc5640d1SHerbert Xue <doc> 511*dc5640d1SHerbert Xue <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 512*dc5640d1SHerbert Xue of the given type {@code T}. The returned members injector will not be valid until the main 513*dc5640d1SHerbert Xue {@link Injector} has been created. The members injector will throw an {@code 514*dc5640d1SHerbert Xue IllegalStateException} if you try to use it beforehand. 515*dc5640d1SHerbert Xue 516*dc5640d1SHerbert Xue @param typeLiteral type to get members injector for 517*dc5640d1SHerbert Xue @since 2.0]]> 518*dc5640d1SHerbert Xue </doc> 519*dc5640d1SHerbert Xue </method> 520*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 521*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 522*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 523*dc5640d1SHerbert Xue deprecated="not deprecated"> 524*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 525*dc5640d1SHerbert Xue <doc> 526*dc5640d1SHerbert Xue <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 527*dc5640d1SHerbert Xue of the given type {@code T}. The returned members injector will not be valid until the main 528*dc5640d1SHerbert Xue {@link Injector} has been created. The members injector will throw an {@code 529*dc5640d1SHerbert Xue IllegalStateException} if you try to use it beforehand. 530*dc5640d1SHerbert Xue 531*dc5640d1SHerbert Xue @param type type to get members injector for 532*dc5640d1SHerbert Xue @since 2.0]]> 533*dc5640d1SHerbert Xue </doc> 534*dc5640d1SHerbert Xue </method> 535*dc5640d1SHerbert Xue <method name="convertToTypes" 536*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 537*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 538*dc5640d1SHerbert Xue deprecated="not deprecated"> 539*dc5640d1SHerbert Xue <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> 540*dc5640d1SHerbert Xue <param name="converter" type="com.google.inject.spi.TypeConverter"/> 541*dc5640d1SHerbert Xue <doc> 542*dc5640d1SHerbert Xue <![CDATA[Binds a type converter. The injector will use the given converter to 543*dc5640d1SHerbert Xue convert string constants to matching types as needed. 544*dc5640d1SHerbert Xue 545*dc5640d1SHerbert Xue @param typeMatcher matches types the converter can handle 546*dc5640d1SHerbert Xue @param converter converts values 547*dc5640d1SHerbert Xue @since 2.0]]> 548*dc5640d1SHerbert Xue </doc> 549*dc5640d1SHerbert Xue </method> 550*dc5640d1SHerbert Xue <method name="bindListener" 551*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 552*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 553*dc5640d1SHerbert Xue deprecated="not deprecated"> 554*dc5640d1SHerbert Xue <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> 555*dc5640d1SHerbert Xue <param name="listener" type="com.google.inject.spi.TypeListener"/> 556*dc5640d1SHerbert Xue <doc> 557*dc5640d1SHerbert Xue <![CDATA[Registers a listener for injectable types. Guice will notify the listener when it encounters 558*dc5640d1SHerbert Xue injectable types matched by the given type matcher. 559*dc5640d1SHerbert Xue 560*dc5640d1SHerbert Xue @param typeMatcher that matches injectable types the listener should be notified of 561*dc5640d1SHerbert Xue @param listener for injectable types matched by typeMatcher 562*dc5640d1SHerbert Xue @since 2.0]]> 563*dc5640d1SHerbert Xue </doc> 564*dc5640d1SHerbert Xue </method> 565*dc5640d1SHerbert Xue <method name="bindListener" 566*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 567*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 568*dc5640d1SHerbert Xue deprecated="not deprecated"> 569*dc5640d1SHerbert Xue <param name="bindingMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.Binding<?>>"/> 570*dc5640d1SHerbert Xue <param name="listeners" type="com.google.inject.spi.ProvisionListener[]"/> 571*dc5640d1SHerbert Xue <doc> 572*dc5640d1SHerbert Xue <![CDATA[Registers listeners for provisioned objects. Guice will notify the 573*dc5640d1SHerbert Xue listeners just before and after the object is provisioned. Provisioned 574*dc5640d1SHerbert Xue objects that are also injectable (everything except objects provided 575*dc5640d1SHerbert Xue through Providers) can also be notified through TypeListeners registered in 576*dc5640d1SHerbert Xue {@link #bindListener}. 577*dc5640d1SHerbert Xue 578*dc5640d1SHerbert Xue @param bindingMatcher that matches bindings of provisioned objects the listener 579*dc5640d1SHerbert Xue should be notified of 580*dc5640d1SHerbert Xue @param listeners for provisioned objects matched by bindingMatcher 581*dc5640d1SHerbert Xue @since 4.0]]> 582*dc5640d1SHerbert Xue </doc> 583*dc5640d1SHerbert Xue </method> 584*dc5640d1SHerbert Xue <method name="withSource" return="com.google.inject.Binder" 585*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 586*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 587*dc5640d1SHerbert Xue deprecated="not deprecated"> 588*dc5640d1SHerbert Xue <param name="source" type="java.lang.Object"/> 589*dc5640d1SHerbert Xue <doc> 590*dc5640d1SHerbert Xue <![CDATA[Returns a binder that uses {@code source} as the reference location for 591*dc5640d1SHerbert Xue configuration errors. This is typically a {@link StackTraceElement} 592*dc5640d1SHerbert Xue for {@code .java} source but it could any binding source, such as the 593*dc5640d1SHerbert Xue path to a {@code .properties} file. 594*dc5640d1SHerbert Xue 595*dc5640d1SHerbert Xue @param source any object representing the source location and has a 596*dc5640d1SHerbert Xue concise {@link Object#toString() toString()} value 597*dc5640d1SHerbert Xue @return a binder that shares its configuration with this binder 598*dc5640d1SHerbert Xue @since 2.0]]> 599*dc5640d1SHerbert Xue </doc> 600*dc5640d1SHerbert Xue </method> 601*dc5640d1SHerbert Xue <method name="skipSources" return="com.google.inject.Binder" 602*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 603*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 604*dc5640d1SHerbert Xue deprecated="not deprecated"> 605*dc5640d1SHerbert Xue <param name="classesToSkip" type="java.lang.Class[]"/> 606*dc5640d1SHerbert Xue <doc> 607*dc5640d1SHerbert Xue <![CDATA[Returns a binder that skips {@code classesToSkip} when identify the 608*dc5640d1SHerbert Xue calling code. The caller's {@link StackTraceElement} is used to locate 609*dc5640d1SHerbert Xue the source of configuration errors. 610*dc5640d1SHerbert Xue 611*dc5640d1SHerbert Xue @param classesToSkip library classes that create bindings on behalf of 612*dc5640d1SHerbert Xue their clients. 613*dc5640d1SHerbert Xue @return a binder that shares its configuration with this binder. 614*dc5640d1SHerbert Xue @since 2.0]]> 615*dc5640d1SHerbert Xue </doc> 616*dc5640d1SHerbert Xue </method> 617*dc5640d1SHerbert Xue <method name="newPrivateBinder" return="com.google.inject.PrivateBinder" 618*dc5640d1SHerbert Xue abstract="true" 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[Creates a new private child environment for bindings and other configuration. The returned 623*dc5640d1SHerbert Xue binder can be used to add and configuration information in this environment. See {@link 624*dc5640d1SHerbert Xue PrivateModule} for details. 625*dc5640d1SHerbert Xue 626*dc5640d1SHerbert Xue @return a binder that inherits configuration from this binder. Only exposed configuration on 627*dc5640d1SHerbert Xue the returned binder will be visible to this binder. 628*dc5640d1SHerbert Xue @since 2.0]]> 629*dc5640d1SHerbert Xue </doc> 630*dc5640d1SHerbert Xue </method> 631*dc5640d1SHerbert Xue <method name="requireExplicitBindings" 632*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 633*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 634*dc5640d1SHerbert Xue deprecated="not deprecated"> 635*dc5640d1SHerbert Xue <doc> 636*dc5640d1SHerbert Xue <![CDATA[Instructs the Injector that bindings must be listed in a Module in order to 637*dc5640d1SHerbert Xue be injected. Classes that are not explicitly bound in a module cannot be 638*dc5640d1SHerbert Xue injected. Bindings created through a linked binding 639*dc5640d1SHerbert Xue (<code>bind(Foo.class).to(FooImpl.class)</code>) are allowed, but the 640*dc5640d1SHerbert Xue implicit binding (<code>FooImpl</code>) cannot be directly injected unless 641*dc5640d1SHerbert Xue it is also explicitly bound (<code>bind(FooImpl.class)</code>). 642*dc5640d1SHerbert Xue <p> 643*dc5640d1SHerbert Xue Tools can still retrieve bindings for implicit bindings (bindings created 644*dc5640d1SHerbert Xue through a linked binding) if explicit bindings are required, however 645*dc5640d1SHerbert Xue {@link Binding#getProvider} will fail. 646*dc5640d1SHerbert Xue <p> 647*dc5640d1SHerbert Xue By default, explicit bindings are not required. 648*dc5640d1SHerbert Xue <p> 649*dc5640d1SHerbert Xue If a parent injector requires explicit bindings, then all child injectors 650*dc5640d1SHerbert Xue (and private modules within that injector) also require explicit bindings. 651*dc5640d1SHerbert Xue If a parent does not require explicit bindings, a child injector or private 652*dc5640d1SHerbert Xue module may optionally declare itself as requiring explicit bindings. If it 653*dc5640d1SHerbert Xue does, the behavior is limited only to that child or any grandchildren. No 654*dc5640d1SHerbert Xue siblings of the child will require explicit bindings. 655*dc5640d1SHerbert Xue <p> 656*dc5640d1SHerbert Xue In the absence of an explicit binding for the target, linked bindings in 657*dc5640d1SHerbert Xue child injectors create a binding for the target in the parent. Since this 658*dc5640d1SHerbert Xue behavior can be surprising, it causes an error instead if explicit bindings 659*dc5640d1SHerbert Xue are required. To avoid this error, add an explicit binding for the target, 660*dc5640d1SHerbert Xue either in the child or the parent. 661*dc5640d1SHerbert Xue 662*dc5640d1SHerbert Xue @since 3.0]]> 663*dc5640d1SHerbert Xue </doc> 664*dc5640d1SHerbert Xue </method> 665*dc5640d1SHerbert Xue <method name="disableCircularProxies" 666*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 667*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 668*dc5640d1SHerbert Xue deprecated="not deprecated"> 669*dc5640d1SHerbert Xue <doc> 670*dc5640d1SHerbert Xue <![CDATA[Prevents Guice from constructing a {@link Proxy} when a circular dependency 671*dc5640d1SHerbert Xue is found. By default, circular proxies are not disabled. 672*dc5640d1SHerbert Xue <p> 673*dc5640d1SHerbert Xue If a parent injector disables circular proxies, then all child injectors 674*dc5640d1SHerbert Xue (and private modules within that injector) also disable circular proxies. 675*dc5640d1SHerbert Xue If a parent does not disable circular proxies, a child injector or private 676*dc5640d1SHerbert Xue module may optionally declare itself as disabling circular proxies. If it 677*dc5640d1SHerbert Xue does, the behavior is limited only to that child or any grandchildren. No 678*dc5640d1SHerbert Xue siblings of the child will disable circular proxies. 679*dc5640d1SHerbert Xue 680*dc5640d1SHerbert Xue @since 3.0]]> 681*dc5640d1SHerbert Xue </doc> 682*dc5640d1SHerbert Xue </method> 683*dc5640d1SHerbert Xue <method name="requireAtInjectOnConstructors" 684*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 685*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 686*dc5640d1SHerbert Xue deprecated="not deprecated"> 687*dc5640d1SHerbert Xue <doc> 688*dc5640d1SHerbert Xue <![CDATA[Requires that a {@literal @}{@link Inject} annotation exists on a constructor in order for 689*dc5640d1SHerbert Xue Guice to consider it an eligible injectable class. By default, Guice will inject classes that 690*dc5640d1SHerbert Xue have a no-args constructor if no {@literal @}{@link Inject} annotation exists on any 691*dc5640d1SHerbert Xue constructor. 692*dc5640d1SHerbert Xue <p> 693*dc5640d1SHerbert Xue If the class is bound using {@link LinkedBindingBuilder#toConstructor}, Guice will still inject 694*dc5640d1SHerbert Xue that constructor regardless of annotations. 695*dc5640d1SHerbert Xue 696*dc5640d1SHerbert Xue @since 4.0]]> 697*dc5640d1SHerbert Xue </doc> 698*dc5640d1SHerbert Xue </method> 699*dc5640d1SHerbert Xue <method name="requireExactBindingAnnotations" 700*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 701*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 702*dc5640d1SHerbert Xue deprecated="not deprecated"> 703*dc5640d1SHerbert Xue <doc> 704*dc5640d1SHerbert Xue <![CDATA[Requires that Guice finds an exactly matching binding annotation. This disables the 705*dc5640d1SHerbert Xue error-prone feature in Guice where it can substitute a binding for 706*dc5640d1SHerbert Xue <code>{@literal @}Named Foo</code> when attempting to inject 707*dc5640d1SHerbert Xue <code>{@literal @}Named("foo") Foo</code>. 708*dc5640d1SHerbert Xue 709*dc5640d1SHerbert Xue @since 4.0]]> 710*dc5640d1SHerbert Xue </doc> 711*dc5640d1SHerbert Xue </method> 712*dc5640d1SHerbert Xue <method name="scanModulesForAnnotatedMethods" 713*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 714*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 715*dc5640d1SHerbert Xue deprecated="not deprecated"> 716*dc5640d1SHerbert Xue <param name="scanner" type="com.google.inject.spi.ModuleAnnotatedMethodScanner"/> 717*dc5640d1SHerbert Xue <doc> 718*dc5640d1SHerbert Xue <![CDATA[Adds a scanner that will look in all installed modules for annotations the scanner can parse, 719*dc5640d1SHerbert Xue and binds them like {@literal @}Provides methods. Scanners apply to all modules installed in 720*dc5640d1SHerbert Xue the injector. Scanners installed in child injectors or private modules do not impact modules in 721*dc5640d1SHerbert Xue siblings or parents, however scanners installed in parents do apply to all child injectors and 722*dc5640d1SHerbert Xue private modules. 723*dc5640d1SHerbert Xue 724*dc5640d1SHerbert Xue @since 4.0]]> 725*dc5640d1SHerbert Xue </doc> 726*dc5640d1SHerbert Xue </method> 727*dc5640d1SHerbert Xue <doc> 728*dc5640d1SHerbert Xue <![CDATA[Collects configuration information (primarily <i>bindings</i>) which will be 729*dc5640d1SHerbert Xue used to create an {@link Injector}. Guice provides this object to your 730*dc5640d1SHerbert Xue application's {@link Module} implementors so they may each contribute 731*dc5640d1SHerbert Xue their own bindings and other registrations. 732*dc5640d1SHerbert Xue 733*dc5640d1SHerbert Xue <h3>The Guice Binding EDSL</h3> 734*dc5640d1SHerbert Xue 735*dc5640d1SHerbert Xue Guice uses an <i>embedded domain-specific language</i>, or EDSL, to help you 736*dc5640d1SHerbert Xue create bindings simply and readably. This approach is great for overall 737*dc5640d1SHerbert Xue usability, but it does come with a small cost: <b>it is difficult to 738*dc5640d1SHerbert Xue learn how to use the Binding EDSL by reading 739*dc5640d1SHerbert Xue method-level javadocs</b>. Instead, you should consult the series of 740*dc5640d1SHerbert Xue examples below. To save space, these examples omit the opening 741*dc5640d1SHerbert Xue {@code binder}, just as you will if your module extends 742*dc5640d1SHerbert Xue {@link AbstractModule}. 743*dc5640d1SHerbert Xue 744*dc5640d1SHerbert Xue <pre> 745*dc5640d1SHerbert Xue bind(ServiceImpl.class);</pre> 746*dc5640d1SHerbert Xue 747*dc5640d1SHerbert Xue This statement does essentially nothing; it "binds the {@code ServiceImpl} 748*dc5640d1SHerbert Xue class to itself" and does not change Guice's default behavior. You may still 749*dc5640d1SHerbert Xue want to use this if you prefer your {@link Module} class to serve as an 750*dc5640d1SHerbert Xue explicit <i>manifest</i> for the services it provides. Also, in rare cases, 751*dc5640d1SHerbert Xue Guice may be unable to validate a binding at injector creation time unless it 752*dc5640d1SHerbert Xue is given explicitly. 753*dc5640d1SHerbert Xue 754*dc5640d1SHerbert Xue <pre> 755*dc5640d1SHerbert Xue bind(Service.class).to(ServiceImpl.class);</pre> 756*dc5640d1SHerbert Xue 757*dc5640d1SHerbert Xue Specifies that a request for a {@code Service} instance with no binding 758*dc5640d1SHerbert Xue annotations should be treated as if it were a request for a 759*dc5640d1SHerbert Xue {@code ServiceImpl} instance. This <i>overrides</i> the function of any 760*dc5640d1SHerbert Xue {@link ImplementedBy @ImplementedBy} or {@link ProvidedBy @ProvidedBy} 761*dc5640d1SHerbert Xue annotations found on {@code Service}, since Guice will have already 762*dc5640d1SHerbert Xue "moved on" to {@code ServiceImpl} before it reaches the point when it starts 763*dc5640d1SHerbert Xue looking for these annotations. 764*dc5640d1SHerbert Xue 765*dc5640d1SHerbert Xue <pre> 766*dc5640d1SHerbert Xue bind(Service.class).toProvider(ServiceProvider.class);</pre> 767*dc5640d1SHerbert Xue 768*dc5640d1SHerbert Xue In this example, {@code ServiceProvider} must extend or implement 769*dc5640d1SHerbert Xue {@code Provider<Service>}. This binding specifies that Guice should resolve 770*dc5640d1SHerbert Xue an unannotated injection request for {@code Service} by first resolving an 771*dc5640d1SHerbert Xue instance of {@code ServiceProvider} in the regular way, then calling 772*dc5640d1SHerbert Xue {@link Provider#get get()} on the resulting Provider instance to obtain the 773*dc5640d1SHerbert Xue {@code Service} instance. 774*dc5640d1SHerbert Xue 775*dc5640d1SHerbert Xue <p>The {@link Provider} you use here does not have to be a "factory"; that 776*dc5640d1SHerbert Xue is, a provider which always <i>creates</i> each instance it provides. 777*dc5640d1SHerbert Xue However, this is generally a good practice to follow. You can then use 778*dc5640d1SHerbert Xue Guice's concept of {@link Scope scopes} to guide when creation should happen 779*dc5640d1SHerbert Xue -- "letting Guice work for you". 780*dc5640d1SHerbert Xue 781*dc5640d1SHerbert Xue <pre> 782*dc5640d1SHerbert Xue bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class);</pre> 783*dc5640d1SHerbert Xue 784*dc5640d1SHerbert Xue Like the previous example, but only applies to injection requests that use 785*dc5640d1SHerbert Xue the binding annotation {@code @Red}. If your module also includes bindings 786*dc5640d1SHerbert Xue for particular <i>values</i> of the {@code @Red} annotation (see below), 787*dc5640d1SHerbert Xue then this binding will serve as a "catch-all" for any values of {@code @Red} 788*dc5640d1SHerbert Xue that have no exact match in the bindings. 789*dc5640d1SHerbert Xue 790*dc5640d1SHerbert Xue <pre> 791*dc5640d1SHerbert Xue bind(ServiceImpl.class).in(Singleton.class); 792*dc5640d1SHerbert Xue // or, alternatively 793*dc5640d1SHerbert Xue bind(ServiceImpl.class).in(Scopes.SINGLETON);</pre> 794*dc5640d1SHerbert Xue 795*dc5640d1SHerbert Xue Either of these statements places the {@code ServiceImpl} class into 796*dc5640d1SHerbert Xue singleton scope. Guice will create only one instance of {@code ServiceImpl} 797*dc5640d1SHerbert Xue and will reuse it for all injection requests of this type. Note that it is 798*dc5640d1SHerbert Xue still possible to bind another instance of {@code ServiceImpl} if the second 799*dc5640d1SHerbert Xue binding is qualified by an annotation as in the previous example. Guice is 800*dc5640d1SHerbert Xue not overly concerned with <i>preventing</i> you from creating multiple 801*dc5640d1SHerbert Xue instances of your "singletons", only with <i>enabling</i> your application to 802*dc5640d1SHerbert Xue share only one instance if that's all you tell Guice you need. 803*dc5640d1SHerbert Xue 804*dc5640d1SHerbert Xue <p><b>Note:</b> a scope specified in this way <i>overrides</i> any scope that 805*dc5640d1SHerbert Xue was specified with an annotation on the {@code ServiceImpl} class. 806*dc5640d1SHerbert Xue 807*dc5640d1SHerbert Xue <p>Besides {@link Singleton}/{@link Scopes#SINGLETON}, there are 808*dc5640d1SHerbert Xue servlet-specific scopes available in 809*dc5640d1SHerbert Xue {@code com.google.inject.servlet.ServletScopes}, and your Modules can 810*dc5640d1SHerbert Xue contribute their own custom scopes for use here as well. 811*dc5640d1SHerbert Xue 812*dc5640d1SHerbert Xue <pre> 813*dc5640d1SHerbert Xue bind(new TypeLiteral<PaymentService<CreditCard>>() {}) 814*dc5640d1SHerbert Xue .to(CreditCardPaymentService.class);</pre> 815*dc5640d1SHerbert Xue 816*dc5640d1SHerbert Xue This admittedly odd construct is the way to bind a parameterized type. It 817*dc5640d1SHerbert Xue tells Guice how to honor an injection request for an element of type 818*dc5640d1SHerbert Xue {@code PaymentService<CreditCard>}. The class 819*dc5640d1SHerbert Xue {@code CreditCardPaymentService} must implement the 820*dc5640d1SHerbert Xue {@code PaymentService<CreditCard>} interface. Guice cannot currently bind or 821*dc5640d1SHerbert Xue inject a generic type, such as {@code Set<E>}; all type parameters must be 822*dc5640d1SHerbert Xue fully specified. 823*dc5640d1SHerbert Xue 824*dc5640d1SHerbert Xue <pre> 825*dc5640d1SHerbert Xue bind(Service.class).toInstance(new ServiceImpl()); 826*dc5640d1SHerbert Xue // or, alternatively 827*dc5640d1SHerbert Xue bind(Service.class).toInstance(SomeLegacyRegistry.getService());</pre> 828*dc5640d1SHerbert Xue 829*dc5640d1SHerbert Xue In this example, your module itself, <i>not Guice</i>, takes responsibility 830*dc5640d1SHerbert Xue for obtaining a {@code ServiceImpl} instance, then asks Guice to always use 831*dc5640d1SHerbert Xue this single instance to fulfill all {@code Service} injection requests. When 832*dc5640d1SHerbert Xue the {@link Injector} is created, it will automatically perform field 833*dc5640d1SHerbert Xue and method injection for this instance, but any injectable constructor on 834*dc5640d1SHerbert Xue {@code ServiceImpl} is simply ignored. Note that using this approach results 835*dc5640d1SHerbert Xue in "eager loading" behavior that you can't control. 836*dc5640d1SHerbert Xue 837*dc5640d1SHerbert Xue <pre> 838*dc5640d1SHerbert Xue bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre> 839*dc5640d1SHerbert Xue 840*dc5640d1SHerbert Xue Sets up a constant binding. Constant injections must always be annotated. 841*dc5640d1SHerbert Xue When a constant binding's value is a string, it is eligile for conversion to 842*dc5640d1SHerbert Xue all primitive types, to {@link Enum#valueOf(Class, String) all enums}, and to 843*dc5640d1SHerbert Xue {@link Class#forName class literals}. Conversions for other types can be 844*dc5640d1SHerbert Xue configured using {@link #convertToTypes(Matcher, TypeConverter) 845*dc5640d1SHerbert Xue convertToTypes()}. 846*dc5640d1SHerbert Xue 847*dc5640d1SHerbert Xue <pre> 848*dc5640d1SHerbert Xue {@literal @}Color("red") Color red; // A member variable (field) 849*dc5640d1SHerbert Xue . . . 850*dc5640d1SHerbert Xue red = MyModule.class.getDeclaredField("red").getAnnotation(Color.class); 851*dc5640d1SHerbert Xue bind(Service.class).annotatedWith(red).to(RedService.class);</pre> 852*dc5640d1SHerbert Xue 853*dc5640d1SHerbert Xue If your binding annotation has parameters you can apply different bindings to 854*dc5640d1SHerbert Xue different specific values of your annotation. Getting your hands on the 855*dc5640d1SHerbert Xue right instance of the annotation is a bit of a pain -- one approach, shown 856*dc5640d1SHerbert Xue above, is to apply a prototype annotation to a field in your module class, so 857*dc5640d1SHerbert Xue that you can read this annotation instance and give it to Guice. 858*dc5640d1SHerbert Xue 859*dc5640d1SHerbert Xue <pre> 860*dc5640d1SHerbert Xue bind(Service.class) 861*dc5640d1SHerbert Xue .annotatedWith(Names.named("blue")) 862*dc5640d1SHerbert Xue .to(BlueService.class);</pre> 863*dc5640d1SHerbert Xue 864*dc5640d1SHerbert Xue Differentiating by names is a common enough use case that we provided a 865*dc5640d1SHerbert Xue standard annotation, {@link com.google.inject.name.Named @Named}. Because of 866*dc5640d1SHerbert Xue Guice's library support, binding by name is quite easier than in the 867*dc5640d1SHerbert Xue arbitrary binding annotation case we just saw. However, remember that these 868*dc5640d1SHerbert Xue names will live in a single flat namespace with all the other names used in 869*dc5640d1SHerbert Xue your application. 870*dc5640d1SHerbert Xue 871*dc5640d1SHerbert Xue <pre> 872*dc5640d1SHerbert Xue Constructor<T> loneCtor = getLoneCtorFromServiceImplViaReflection(); 873*dc5640d1SHerbert Xue bind(ServiceImpl.class) 874*dc5640d1SHerbert Xue .toConstructor(loneCtor);</pre> 875*dc5640d1SHerbert Xue 876*dc5640d1SHerbert Xue In this example, we directly tell Guice which constructor to use in a concrete 877*dc5640d1SHerbert Xue class implementation. It means that we do not need to place {@literal @}Inject 878*dc5640d1SHerbert Xue on any of the constructors and that Guice treats the provided constructor as though 879*dc5640d1SHerbert Xue it were annotated so. It is useful for cases where you cannot modify existing 880*dc5640d1SHerbert Xue classes and is a bit simpler than using a {@link Provider}. 881*dc5640d1SHerbert Xue 882*dc5640d1SHerbert Xue <p>The above list of examples is far from exhaustive. If you can think of 883*dc5640d1SHerbert Xue how the concepts of one example might coexist with the concepts from another, 884*dc5640d1SHerbert Xue you can most likely weave the two together. If the two concepts make no 885*dc5640d1SHerbert Xue sense with each other, you most likely won't be able to do it. In a few 886*dc5640d1SHerbert Xue cases Guice will let something bogus slip by, and will then inform you of 887*dc5640d1SHerbert Xue the problems at runtime, as soon as you try to create your Injector. 888*dc5640d1SHerbert Xue 889*dc5640d1SHerbert Xue <p>The other methods of Binder such as {@link #bindScope}, 890*dc5640d1SHerbert Xue {@link #bindInterceptor}, {@link #install}, {@link #requestStaticInjection}, 891*dc5640d1SHerbert Xue {@link #addError} and {@link #currentStage} are not part of the Binding EDSL; 892*dc5640d1SHerbert Xue you can learn how to use these in the usual way, from the method 893*dc5640d1SHerbert Xue documentation. 894*dc5640d1SHerbert Xue 895*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 896*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 897*dc5640d1SHerbert Xue @author [email protected] (Kevin Bourrillion)]]> 898*dc5640d1SHerbert Xue </doc> 899*dc5640d1SHerbert Xue </interface> 900*dc5640d1SHerbert Xue <!-- end interface com.google.inject.Binder --> 901*dc5640d1SHerbert Xue <!-- start interface com.google.inject.Binding --> 902*dc5640d1SHerbert Xue <interface name="Binding" abstract="true" 903*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 904*dc5640d1SHerbert Xue deprecated="not deprecated"> 905*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 906*dc5640d1SHerbert Xue <method name="getKey" return="com.google.inject.Key<T>" 907*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 908*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 909*dc5640d1SHerbert Xue deprecated="not deprecated"> 910*dc5640d1SHerbert Xue <doc> 911*dc5640d1SHerbert Xue <![CDATA[Returns the key for this binding.]]> 912*dc5640d1SHerbert Xue </doc> 913*dc5640d1SHerbert Xue </method> 914*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 915*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 916*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 917*dc5640d1SHerbert Xue deprecated="not deprecated"> 918*dc5640d1SHerbert Xue <doc> 919*dc5640d1SHerbert Xue <![CDATA[Returns the scoped provider guice uses to fulfill requests for this 920*dc5640d1SHerbert Xue binding. 921*dc5640d1SHerbert Xue 922*dc5640d1SHerbert Xue @throws UnsupportedOperationException when invoked on a {@link Binding} 923*dc5640d1SHerbert Xue created via {@link com.google.inject.spi.Elements#getElements}. This 924*dc5640d1SHerbert Xue method is only supported on {@link Binding}s returned from an injector.]]> 925*dc5640d1SHerbert Xue </doc> 926*dc5640d1SHerbert Xue </method> 927*dc5640d1SHerbert Xue <method name="acceptTargetVisitor" return="V" 928*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 929*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 930*dc5640d1SHerbert Xue deprecated="not deprecated"> 931*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor<? super T, V>"/> 932*dc5640d1SHerbert Xue <doc> 933*dc5640d1SHerbert Xue <![CDATA[Accepts a target visitor. Invokes the visitor method specific to this binding's target. 934*dc5640d1SHerbert Xue 935*dc5640d1SHerbert Xue @param visitor to call back on 936*dc5640d1SHerbert Xue @since 2.0]]> 937*dc5640d1SHerbert Xue </doc> 938*dc5640d1SHerbert Xue </method> 939*dc5640d1SHerbert Xue <method name="acceptScopingVisitor" return="V" 940*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 941*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 942*dc5640d1SHerbert Xue deprecated="not deprecated"> 943*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.BindingScopingVisitor<V>"/> 944*dc5640d1SHerbert Xue <doc> 945*dc5640d1SHerbert Xue <![CDATA[Accepts a scoping visitor. Invokes the visitor method specific to this binding's scoping. 946*dc5640d1SHerbert Xue 947*dc5640d1SHerbert Xue @param visitor to call back on 948*dc5640d1SHerbert Xue @since 2.0]]> 949*dc5640d1SHerbert Xue </doc> 950*dc5640d1SHerbert Xue </method> 951*dc5640d1SHerbert Xue <doc> 952*dc5640d1SHerbert Xue <![CDATA[A mapping from a key (type and optional annotation) to the strategy for getting instances of the 953*dc5640d1SHerbert Xue type. This interface is part of the introspection API and is intended primarily for use by 954*dc5640d1SHerbert Xue tools. 955*dc5640d1SHerbert Xue 956*dc5640d1SHerbert Xue <p>Bindings are created in several ways: 957*dc5640d1SHerbert Xue <ul> 958*dc5640d1SHerbert Xue <li>Explicitly in a module, via {@code bind()} and {@code bindConstant()} 959*dc5640d1SHerbert Xue statements: 960*dc5640d1SHerbert Xue <pre> 961*dc5640d1SHerbert Xue bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class); 962*dc5640d1SHerbert Xue bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre></li> 963*dc5640d1SHerbert Xue <li>Implicitly by the Injector by following a type's {@link ImplementedBy 964*dc5640d1SHerbert Xue pointer} {@link ProvidedBy annotations} or by using its {@link Inject annotated} or 965*dc5640d1SHerbert Xue default constructor.</li> 966*dc5640d1SHerbert Xue <li>By converting a bound instance to a different type.</li> 967*dc5640d1SHerbert Xue <li>For {@link Provider providers}, by delegating to the binding for the provided type.</li> 968*dc5640d1SHerbert Xue </ul> 969*dc5640d1SHerbert Xue 970*dc5640d1SHerbert Xue 971*dc5640d1SHerbert Xue <p>They exist on both modules and on injectors, and their behaviour is different for each: 972*dc5640d1SHerbert Xue <ul> 973*dc5640d1SHerbert Xue <li><strong>Module bindings</strong> are incomplete and cannot be used to provide instances. 974*dc5640d1SHerbert Xue This is because the applicable scopes and interceptors may not be known until an injector 975*dc5640d1SHerbert Xue is created. From a tool's perspective, module bindings are like the injector's source 976*dc5640d1SHerbert Xue code. They can be inspected or rewritten, but this analysis must be done statically.</li> 977*dc5640d1SHerbert Xue <li><strong>Injector bindings</strong> are complete and valid and can be used to provide 978*dc5640d1SHerbert Xue instances. From a tools' perspective, injector bindings are like reflection for an 979*dc5640d1SHerbert Xue injector. They have full runtime information, including the complete graph of injections 980*dc5640d1SHerbert Xue necessary to satisfy a binding.</li> 981*dc5640d1SHerbert Xue </ul> 982*dc5640d1SHerbert Xue 983*dc5640d1SHerbert Xue @param <T> the bound type. The injected is always assignable to this type. 984*dc5640d1SHerbert Xue 985*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 986*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]> 987*dc5640d1SHerbert Xue </doc> 988*dc5640d1SHerbert Xue </interface> 989*dc5640d1SHerbert Xue <!-- end interface com.google.inject.Binding --> 990*dc5640d1SHerbert Xue <!-- start class com.google.inject.BindingAnnotation --> 991*dc5640d1SHerbert Xue <class name="BindingAnnotation" abstract="true" 992*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 993*dc5640d1SHerbert Xue deprecated="not deprecated"> 994*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 995*dc5640d1SHerbert Xue <doc> 996*dc5640d1SHerbert Xue <![CDATA[Annotates annotations which are used for binding. Only one such annotation 997*dc5640d1SHerbert Xue may apply to a single injection point. You must also annotate binder 998*dc5640d1SHerbert Xue annotations with {@code @Retention(RUNTIME)}. For example: 999*dc5640d1SHerbert Xue 1000*dc5640d1SHerbert Xue <pre> 1001*dc5640d1SHerbert Xue {@code @}Retention(RUNTIME) 1002*dc5640d1SHerbert Xue {@code @}Target({ FIELD, PARAMETER, METHOD }) 1003*dc5640d1SHerbert Xue {@code @}BindingAnnotation 1004*dc5640d1SHerbert Xue public {@code @}interface Transactional {} 1005*dc5640d1SHerbert Xue </pre> 1006*dc5640d1SHerbert Xue 1007*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 1008*dc5640d1SHerbert Xue </doc> 1009*dc5640d1SHerbert Xue </class> 1010*dc5640d1SHerbert Xue <!-- end class com.google.inject.BindingAnnotation --> 1011*dc5640d1SHerbert Xue <!-- start class com.google.inject.ConfigurationException --> 1012*dc5640d1SHerbert Xue <class name="ConfigurationException" extends="java.lang.RuntimeException" 1013*dc5640d1SHerbert Xue abstract="false" 1014*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1015*dc5640d1SHerbert Xue deprecated="not deprecated"> 1016*dc5640d1SHerbert Xue <constructor name="ConfigurationException" type="java.lang.Iterable<com.google.inject.spi.Message>" 1017*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1018*dc5640d1SHerbert Xue deprecated="not deprecated"> 1019*dc5640d1SHerbert Xue <doc> 1020*dc5640d1SHerbert Xue <![CDATA[Creates a ConfigurationException containing {@code messages}.]]> 1021*dc5640d1SHerbert Xue </doc> 1022*dc5640d1SHerbert Xue </constructor> 1023*dc5640d1SHerbert Xue <method name="withPartialValue" return="com.google.inject.ConfigurationException" 1024*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1025*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1026*dc5640d1SHerbert Xue deprecated="not deprecated"> 1027*dc5640d1SHerbert Xue <param name="partialValue" type="java.lang.Object"/> 1028*dc5640d1SHerbert Xue <doc> 1029*dc5640d1SHerbert Xue <![CDATA[Returns a copy of this configuration exception with the specified partial value.]]> 1030*dc5640d1SHerbert Xue </doc> 1031*dc5640d1SHerbert Xue </method> 1032*dc5640d1SHerbert Xue <method name="getErrorMessages" return="java.util.Collection<com.google.inject.spi.Message>" 1033*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1034*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1035*dc5640d1SHerbert Xue deprecated="not deprecated"> 1036*dc5640d1SHerbert Xue <doc> 1037*dc5640d1SHerbert Xue <![CDATA[Returns messages for the errors that caused this exception.]]> 1038*dc5640d1SHerbert Xue </doc> 1039*dc5640d1SHerbert Xue </method> 1040*dc5640d1SHerbert Xue <method name="getPartialValue" return="E" 1041*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1042*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1043*dc5640d1SHerbert Xue deprecated="not deprecated"> 1044*dc5640d1SHerbert Xue <doc> 1045*dc5640d1SHerbert Xue <![CDATA[Returns a value that was only partially computed due to this exception. The caller can use 1046*dc5640d1SHerbert Xue this while collecting additional configuration problems. 1047*dc5640d1SHerbert Xue 1048*dc5640d1SHerbert Xue @return the partial value, or {@code null} if none was set. The type of the partial value is 1049*dc5640d1SHerbert Xue specified by the throwing method.]]> 1050*dc5640d1SHerbert Xue </doc> 1051*dc5640d1SHerbert Xue </method> 1052*dc5640d1SHerbert Xue <method name="getMessage" return="java.lang.String" 1053*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1054*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1055*dc5640d1SHerbert Xue deprecated="not deprecated"> 1056*dc5640d1SHerbert Xue </method> 1057*dc5640d1SHerbert Xue <doc> 1058*dc5640d1SHerbert Xue <![CDATA[Thrown when a programming error such as a misplaced annotation, illegal binding, or unsupported 1059*dc5640d1SHerbert Xue scope is found. Clients should catch this exception, log it, and stop execution. 1060*dc5640d1SHerbert Xue 1061*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 1062*dc5640d1SHerbert Xue @since 2.0]]> 1063*dc5640d1SHerbert Xue </doc> 1064*dc5640d1SHerbert Xue </class> 1065*dc5640d1SHerbert Xue <!-- end class com.google.inject.ConfigurationException --> 1066*dc5640d1SHerbert Xue <!-- start class com.google.inject.CreationException --> 1067*dc5640d1SHerbert Xue <class name="CreationException" extends="java.lang.RuntimeException" 1068*dc5640d1SHerbert Xue abstract="false" 1069*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1070*dc5640d1SHerbert Xue deprecated="not deprecated"> 1071*dc5640d1SHerbert Xue <constructor name="CreationException" type="java.util.Collection<com.google.inject.spi.Message>" 1072*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1073*dc5640d1SHerbert Xue deprecated="not deprecated"> 1074*dc5640d1SHerbert Xue <doc> 1075*dc5640d1SHerbert Xue <![CDATA[Creates a CreationException containing {@code messages}.]]> 1076*dc5640d1SHerbert Xue </doc> 1077*dc5640d1SHerbert Xue </constructor> 1078*dc5640d1SHerbert Xue <method name="getErrorMessages" return="java.util.Collection<com.google.inject.spi.Message>" 1079*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1080*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1081*dc5640d1SHerbert Xue deprecated="not deprecated"> 1082*dc5640d1SHerbert Xue <doc> 1083*dc5640d1SHerbert Xue <![CDATA[Returns messages for the errors that caused this exception.]]> 1084*dc5640d1SHerbert Xue </doc> 1085*dc5640d1SHerbert Xue </method> 1086*dc5640d1SHerbert Xue <method name="getMessage" return="java.lang.String" 1087*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1088*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1089*dc5640d1SHerbert Xue deprecated="not deprecated"> 1090*dc5640d1SHerbert Xue </method> 1091*dc5640d1SHerbert Xue <doc> 1092*dc5640d1SHerbert Xue <![CDATA[Thrown when errors occur while creating a {@link Injector}. Includes a list of encountered 1093*dc5640d1SHerbert Xue errors. Clients should catch this exception, log it, and stop execution. 1094*dc5640d1SHerbert Xue 1095*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 1096*dc5640d1SHerbert Xue </doc> 1097*dc5640d1SHerbert Xue </class> 1098*dc5640d1SHerbert Xue <!-- end class com.google.inject.CreationException --> 1099*dc5640d1SHerbert Xue <!-- start class com.google.inject.Exposed --> 1100*dc5640d1SHerbert Xue <class name="Exposed" abstract="true" 1101*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1102*dc5640d1SHerbert Xue deprecated="not deprecated"> 1103*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 1104*dc5640d1SHerbert Xue <doc> 1105*dc5640d1SHerbert Xue <![CDATA[Acccompanies a {@literal @}{@link com.google.inject.Provides Provides} method annotation in a 1106*dc5640d1SHerbert Xue private module to indicate that the provided binding is exposed. 1107*dc5640d1SHerbert Xue 1108*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 1109*dc5640d1SHerbert Xue @since 2.0]]> 1110*dc5640d1SHerbert Xue </doc> 1111*dc5640d1SHerbert Xue </class> 1112*dc5640d1SHerbert Xue <!-- end class com.google.inject.Exposed --> 1113*dc5640d1SHerbert Xue <!-- start class com.google.inject.Guice --> 1114*dc5640d1SHerbert Xue <class name="Guice" extends="java.lang.Object" 1115*dc5640d1SHerbert Xue abstract="false" 1116*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1117*dc5640d1SHerbert Xue deprecated="not deprecated"> 1118*dc5640d1SHerbert Xue <method name="createInjector" return="com.google.inject.Injector" 1119*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1120*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1121*dc5640d1SHerbert Xue deprecated="not deprecated"> 1122*dc5640d1SHerbert Xue <param name="modules" type="com.google.inject.Module[]"/> 1123*dc5640d1SHerbert Xue <doc> 1124*dc5640d1SHerbert Xue <![CDATA[Creates an injector for the given set of modules. This is equivalent to 1125*dc5640d1SHerbert Xue calling {@link #createInjector(Stage, Module...)} with Stage.DEVELOPMENT. 1126*dc5640d1SHerbert Xue 1127*dc5640d1SHerbert Xue @throws CreationException if one or more errors occur during injector 1128*dc5640d1SHerbert Xue construction]]> 1129*dc5640d1SHerbert Xue </doc> 1130*dc5640d1SHerbert Xue </method> 1131*dc5640d1SHerbert Xue <method name="createInjector" return="com.google.inject.Injector" 1132*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1133*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1134*dc5640d1SHerbert Xue deprecated="not deprecated"> 1135*dc5640d1SHerbert Xue <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 1136*dc5640d1SHerbert Xue <doc> 1137*dc5640d1SHerbert Xue <![CDATA[Creates an injector for the given set of modules. This is equivalent to 1138*dc5640d1SHerbert Xue calling {@link #createInjector(Stage, Iterable)} with Stage.DEVELOPMENT. 1139*dc5640d1SHerbert Xue 1140*dc5640d1SHerbert Xue @throws CreationException if one or more errors occur during injector 1141*dc5640d1SHerbert Xue creation]]> 1142*dc5640d1SHerbert Xue </doc> 1143*dc5640d1SHerbert Xue </method> 1144*dc5640d1SHerbert Xue <method name="createInjector" return="com.google.inject.Injector" 1145*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1146*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1147*dc5640d1SHerbert Xue deprecated="not deprecated"> 1148*dc5640d1SHerbert Xue <param name="stage" type="com.google.inject.Stage"/> 1149*dc5640d1SHerbert Xue <param name="modules" type="com.google.inject.Module[]"/> 1150*dc5640d1SHerbert Xue <doc> 1151*dc5640d1SHerbert Xue <![CDATA[Creates an injector for the given set of modules, in a given development 1152*dc5640d1SHerbert Xue stage. 1153*dc5640d1SHerbert Xue 1154*dc5640d1SHerbert Xue @throws CreationException if one or more errors occur during injector 1155*dc5640d1SHerbert Xue creation.]]> 1156*dc5640d1SHerbert Xue </doc> 1157*dc5640d1SHerbert Xue </method> 1158*dc5640d1SHerbert Xue <method name="createInjector" return="com.google.inject.Injector" 1159*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1160*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1161*dc5640d1SHerbert Xue deprecated="not deprecated"> 1162*dc5640d1SHerbert Xue <param name="stage" type="com.google.inject.Stage"/> 1163*dc5640d1SHerbert Xue <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 1164*dc5640d1SHerbert Xue <doc> 1165*dc5640d1SHerbert Xue <![CDATA[Creates an injector for the given set of modules, in a given development 1166*dc5640d1SHerbert Xue stage. 1167*dc5640d1SHerbert Xue 1168*dc5640d1SHerbert Xue @throws CreationException if one or more errors occur during injector 1169*dc5640d1SHerbert Xue construction]]> 1170*dc5640d1SHerbert Xue </doc> 1171*dc5640d1SHerbert Xue </method> 1172*dc5640d1SHerbert Xue <doc> 1173*dc5640d1SHerbert Xue <![CDATA[The entry point to the Guice framework. Creates {@link Injector}s from 1174*dc5640d1SHerbert Xue {@link Module}s. 1175*dc5640d1SHerbert Xue 1176*dc5640d1SHerbert Xue <p>Guice supports a model of development that draws clear boundaries between 1177*dc5640d1SHerbert Xue APIs, Implementations of these APIs, Modules which configure these 1178*dc5640d1SHerbert Xue implementations, and finally Applications which consist of a collection of 1179*dc5640d1SHerbert Xue Modules. It is the Application, which typically defines your {@code main()} 1180*dc5640d1SHerbert Xue method, that bootstraps the Guice Injector using the {@code Guice} class, as 1181*dc5640d1SHerbert Xue in this example: 1182*dc5640d1SHerbert Xue <pre> 1183*dc5640d1SHerbert Xue public class FooApplication { 1184*dc5640d1SHerbert Xue public static void main(String[] args) { 1185*dc5640d1SHerbert Xue Injector injector = Guice.createInjector( 1186*dc5640d1SHerbert Xue new ModuleA(), 1187*dc5640d1SHerbert Xue new ModuleB(), 1188*dc5640d1SHerbert Xue . . . 1189*dc5640d1SHerbert Xue new FooApplicationFlagsModule(args) 1190*dc5640d1SHerbert Xue ); 1191*dc5640d1SHerbert Xue 1192*dc5640d1SHerbert Xue // Now just bootstrap the application and you're done 1193*dc5640d1SHerbert Xue FooStarter starter = injector.getInstance(FooStarter.class); 1194*dc5640d1SHerbert Xue starter.runApplication(); 1195*dc5640d1SHerbert Xue } 1196*dc5640d1SHerbert Xue } 1197*dc5640d1SHerbert Xue </pre>]]> 1198*dc5640d1SHerbert Xue </doc> 1199*dc5640d1SHerbert Xue </class> 1200*dc5640d1SHerbert Xue <!-- end class com.google.inject.Guice --> 1201*dc5640d1SHerbert Xue <!-- start class com.google.inject.ImplementedBy --> 1202*dc5640d1SHerbert Xue <class name="ImplementedBy" abstract="true" 1203*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1204*dc5640d1SHerbert Xue deprecated="not deprecated"> 1205*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 1206*dc5640d1SHerbert Xue <doc> 1207*dc5640d1SHerbert Xue <![CDATA[A pointer to the default implementation of a type. 1208*dc5640d1SHerbert Xue 1209*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 1210*dc5640d1SHerbert Xue </doc> 1211*dc5640d1SHerbert Xue </class> 1212*dc5640d1SHerbert Xue <!-- end class com.google.inject.ImplementedBy --> 1213*dc5640d1SHerbert Xue <!-- start class com.google.inject.Inject --> 1214*dc5640d1SHerbert Xue <class name="Inject" abstract="true" 1215*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1216*dc5640d1SHerbert Xue deprecated="not deprecated"> 1217*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 1218*dc5640d1SHerbert Xue <doc> 1219*dc5640d1SHerbert Xue <![CDATA[Annotates members of your implementation class (constructors, methods 1220*dc5640d1SHerbert Xue and fields) into which the {@link Injector} should inject values. 1221*dc5640d1SHerbert Xue The Injector fulfills injection requests for: 1222*dc5640d1SHerbert Xue 1223*dc5640d1SHerbert Xue <ul> 1224*dc5640d1SHerbert Xue <li>Every instance it constructs. The class being constructed must have 1225*dc5640d1SHerbert Xue exactly one of its constructors marked with {@code @Inject} or must have a 1226*dc5640d1SHerbert Xue constructor taking no parameters. The Injector then proceeds to perform 1227*dc5640d1SHerbert Xue field and method injections. 1228*dc5640d1SHerbert Xue 1229*dc5640d1SHerbert Xue <li>Pre-constructed instances passed to {@link Injector#injectMembers}, 1230*dc5640d1SHerbert Xue {@link com.google.inject.binder.LinkedBindingBuilder#toInstance(Object)} and 1231*dc5640d1SHerbert Xue {@link com.google.inject.binder.LinkedBindingBuilder#toProvider(javax.inject.Provider)}. 1232*dc5640d1SHerbert Xue In this case all constructors are, of course, ignored. 1233*dc5640d1SHerbert Xue 1234*dc5640d1SHerbert Xue <li>Static fields and methods of classes which any {@link Module} has 1235*dc5640d1SHerbert Xue specifically requested static injection for, using 1236*dc5640d1SHerbert Xue {@link Binder#requestStaticInjection}. 1237*dc5640d1SHerbert Xue </ul> 1238*dc5640d1SHerbert Xue 1239*dc5640d1SHerbert Xue In all cases, a member can be injected regardless of its Java access 1240*dc5640d1SHerbert Xue specifier (private, default, protected, public). 1241*dc5640d1SHerbert Xue 1242*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 1243*dc5640d1SHerbert Xue </doc> 1244*dc5640d1SHerbert Xue </class> 1245*dc5640d1SHerbert Xue <!-- end class com.google.inject.Inject --> 1246*dc5640d1SHerbert Xue <!-- start interface com.google.inject.Injector --> 1247*dc5640d1SHerbert Xue <interface name="Injector" abstract="true" 1248*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1249*dc5640d1SHerbert Xue deprecated="not deprecated"> 1250*dc5640d1SHerbert Xue <method name="injectMembers" 1251*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1252*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1253*dc5640d1SHerbert Xue deprecated="not deprecated"> 1254*dc5640d1SHerbert Xue <param name="instance" type="java.lang.Object"/> 1255*dc5640d1SHerbert Xue <doc> 1256*dc5640d1SHerbert Xue <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or 1257*dc5640d1SHerbert Xue absence of an injectable constructor. 1258*dc5640d1SHerbert Xue 1259*dc5640d1SHerbert Xue <p>Whenever Guice creates an instance, it performs this injection automatically (after first 1260*dc5640d1SHerbert Xue performing constructor injection), so if you're able to let Guice create all your objects for 1261*dc5640d1SHerbert Xue you, you'll never need to use this method. 1262*dc5640d1SHerbert Xue 1263*dc5640d1SHerbert Xue @param instance to inject members on 1264*dc5640d1SHerbert Xue 1265*dc5640d1SHerbert Xue @see Binder#getMembersInjector(Class) for a preferred alternative that supports checks before 1266*dc5640d1SHerbert Xue run time]]> 1267*dc5640d1SHerbert Xue </doc> 1268*dc5640d1SHerbert Xue </method> 1269*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 1270*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1271*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1272*dc5640d1SHerbert Xue deprecated="not deprecated"> 1273*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1274*dc5640d1SHerbert Xue <doc> 1275*dc5640d1SHerbert Xue <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 1276*dc5640d1SHerbert Xue of the given type {@code T}. 1277*dc5640d1SHerbert Xue 1278*dc5640d1SHerbert Xue @param typeLiteral type to get members injector for 1279*dc5640d1SHerbert Xue @see Binder#getMembersInjector(TypeLiteral) for an alternative that offers up front error 1280*dc5640d1SHerbert Xue detection 1281*dc5640d1SHerbert Xue @since 2.0]]> 1282*dc5640d1SHerbert Xue </doc> 1283*dc5640d1SHerbert Xue </method> 1284*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 1285*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1286*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1287*dc5640d1SHerbert Xue deprecated="not deprecated"> 1288*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1289*dc5640d1SHerbert Xue <doc> 1290*dc5640d1SHerbert Xue <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 1291*dc5640d1SHerbert Xue of the given type {@code T}. When feasible, use {@link Binder#getMembersInjector(TypeLiteral)} 1292*dc5640d1SHerbert Xue instead to get increased up front error detection. 1293*dc5640d1SHerbert Xue 1294*dc5640d1SHerbert Xue @param type type to get members injector for 1295*dc5640d1SHerbert Xue @see Binder#getMembersInjector(Class) for an alternative that offers up front error 1296*dc5640d1SHerbert Xue detection 1297*dc5640d1SHerbert Xue @since 2.0]]> 1298*dc5640d1SHerbert Xue </doc> 1299*dc5640d1SHerbert Xue </method> 1300*dc5640d1SHerbert Xue <method name="getBindings" return="java.util.Map<com.google.inject.Key<?>, com.google.inject.Binding<?>>" 1301*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1302*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1303*dc5640d1SHerbert Xue deprecated="not deprecated"> 1304*dc5640d1SHerbert Xue <doc> 1305*dc5640d1SHerbert Xue <![CDATA[Returns this injector's <strong>explicit</strong> bindings. 1306*dc5640d1SHerbert Xue 1307*dc5640d1SHerbert Xue <p>The returned map does not include bindings inherited from a {@link #getParent() parent 1308*dc5640d1SHerbert Xue injector}, should one exist. The returned map is guaranteed to iterate (for example, with 1309*dc5640d1SHerbert Xue its {@link Map#entrySet()} iterator) in the order of insertion. In other words, the order in 1310*dc5640d1SHerbert Xue which bindings appear in user Modules. 1311*dc5640d1SHerbert Xue 1312*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]> 1313*dc5640d1SHerbert Xue </doc> 1314*dc5640d1SHerbert Xue </method> 1315*dc5640d1SHerbert Xue <method name="getAllBindings" return="java.util.Map<com.google.inject.Key<?>, com.google.inject.Binding<?>>" 1316*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1317*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1318*dc5640d1SHerbert Xue deprecated="not deprecated"> 1319*dc5640d1SHerbert Xue <doc> 1320*dc5640d1SHerbert Xue <![CDATA[Returns a snapshot of this injector's bindings, <strong>both explicit and 1321*dc5640d1SHerbert Xue just-in-time</strong>. The returned map is immutable; it contains only the bindings that were 1322*dc5640d1SHerbert Xue present when {@code getAllBindings()} was invoked. Subsequent calls may return a map with 1323*dc5640d1SHerbert Xue additional just-in-time bindings. 1324*dc5640d1SHerbert Xue 1325*dc5640d1SHerbert Xue <p>The returned map does not include bindings inherited from a {@link #getParent() parent 1326*dc5640d1SHerbert Xue injector}, should one exist. 1327*dc5640d1SHerbert Xue 1328*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1329*dc5640d1SHerbert Xue 1330*dc5640d1SHerbert Xue @since 3.0]]> 1331*dc5640d1SHerbert Xue </doc> 1332*dc5640d1SHerbert Xue </method> 1333*dc5640d1SHerbert Xue <method name="getBinding" return="com.google.inject.Binding<T>" 1334*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1335*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1336*dc5640d1SHerbert Xue deprecated="not deprecated"> 1337*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 1338*dc5640d1SHerbert Xue <doc> 1339*dc5640d1SHerbert Xue <![CDATA[Returns the binding for the given injection key. This will be an explicit bindings if the key 1340*dc5640d1SHerbert Xue was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will 1341*dc5640d1SHerbert Xue be created if necessary. 1342*dc5640d1SHerbert Xue 1343*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1344*dc5640d1SHerbert Xue 1345*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the binding.]]> 1346*dc5640d1SHerbert Xue </doc> 1347*dc5640d1SHerbert Xue </method> 1348*dc5640d1SHerbert Xue <method name="getBinding" return="com.google.inject.Binding<T>" 1349*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1350*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1351*dc5640d1SHerbert Xue deprecated="not deprecated"> 1352*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1353*dc5640d1SHerbert Xue <doc> 1354*dc5640d1SHerbert Xue <![CDATA[Returns the binding for the given type. This will be an explicit bindings if the injection key 1355*dc5640d1SHerbert Xue was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will 1356*dc5640d1SHerbert Xue be created if necessary. 1357*dc5640d1SHerbert Xue 1358*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1359*dc5640d1SHerbert Xue 1360*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the binding. 1361*dc5640d1SHerbert Xue @since 2.0]]> 1362*dc5640d1SHerbert Xue </doc> 1363*dc5640d1SHerbert Xue </method> 1364*dc5640d1SHerbert Xue <method name="getExistingBinding" return="com.google.inject.Binding<T>" 1365*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1366*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1367*dc5640d1SHerbert Xue deprecated="not deprecated"> 1368*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 1369*dc5640d1SHerbert Xue <doc> 1370*dc5640d1SHerbert Xue <![CDATA[Returns the binding if it already exists, or null if does not exist. Unlike 1371*dc5640d1SHerbert Xue {@link #getBinding(Key)}, this does not attempt to create just-in-time bindings 1372*dc5640d1SHerbert Xue for keys that aren't bound. 1373*dc5640d1SHerbert Xue 1374*dc5640d1SHerbert Xue <p> This method is part of the Guice SPI and is intended for use by tools and extensions. 1375*dc5640d1SHerbert Xue 1376*dc5640d1SHerbert Xue @since 3.0]]> 1377*dc5640d1SHerbert Xue </doc> 1378*dc5640d1SHerbert Xue </method> 1379*dc5640d1SHerbert Xue <method name="findBindingsByType" return="java.util.List<com.google.inject.Binding<T>>" 1380*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1381*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1382*dc5640d1SHerbert Xue deprecated="not deprecated"> 1383*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<T>"/> 1384*dc5640d1SHerbert Xue <doc> 1385*dc5640d1SHerbert Xue <![CDATA[Returns all explicit bindings for {@code type}. 1386*dc5640d1SHerbert Xue 1387*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]> 1388*dc5640d1SHerbert Xue </doc> 1389*dc5640d1SHerbert Xue </method> 1390*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 1391*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1392*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1393*dc5640d1SHerbert Xue deprecated="not deprecated"> 1394*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 1395*dc5640d1SHerbert Xue <doc> 1396*dc5640d1SHerbert Xue <![CDATA[Returns the provider used to obtain instances for the given injection key. When feasible, avoid 1397*dc5640d1SHerbert Xue using this method, in favor of having Guice inject your dependencies ahead of time. 1398*dc5640d1SHerbert Xue 1399*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the provider. 1400*dc5640d1SHerbert Xue @see Binder#getProvider(Key) for an alternative that offers up front error detection]]> 1401*dc5640d1SHerbert Xue </doc> 1402*dc5640d1SHerbert Xue </method> 1403*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 1404*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1405*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1406*dc5640d1SHerbert Xue deprecated="not deprecated"> 1407*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1408*dc5640d1SHerbert Xue <doc> 1409*dc5640d1SHerbert Xue <![CDATA[Returns the provider used to obtain instances for the given type. When feasible, avoid 1410*dc5640d1SHerbert Xue using this method, in favor of having Guice inject your dependencies ahead of time. 1411*dc5640d1SHerbert Xue 1412*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the provider. 1413*dc5640d1SHerbert Xue @see Binder#getProvider(Class) for an alternative that offers up front error detection]]> 1414*dc5640d1SHerbert Xue </doc> 1415*dc5640d1SHerbert Xue </method> 1416*dc5640d1SHerbert Xue <method name="getInstance" return="T" 1417*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1418*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1419*dc5640d1SHerbert Xue deprecated="not deprecated"> 1420*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 1421*dc5640d1SHerbert Xue <doc> 1422*dc5640d1SHerbert Xue <![CDATA[Returns the appropriate instance for the given injection key; equivalent to {@code 1423*dc5640d1SHerbert Xue getProvider(key).get()}. When feasible, avoid using this method, in favor of having Guice 1424*dc5640d1SHerbert Xue inject your dependencies ahead of time. 1425*dc5640d1SHerbert Xue 1426*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the provider. 1427*dc5640d1SHerbert Xue @throws ProvisionException if there was a runtime failure while providing an instance.]]> 1428*dc5640d1SHerbert Xue </doc> 1429*dc5640d1SHerbert Xue </method> 1430*dc5640d1SHerbert Xue <method name="getInstance" return="T" 1431*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1432*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1433*dc5640d1SHerbert Xue deprecated="not deprecated"> 1434*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1435*dc5640d1SHerbert Xue <doc> 1436*dc5640d1SHerbert Xue <![CDATA[Returns the appropriate instance for the given injection type; equivalent to {@code 1437*dc5640d1SHerbert Xue getProvider(type).get()}. When feasible, avoid using this method, in favor of having Guice 1438*dc5640d1SHerbert Xue inject your dependencies ahead of time. 1439*dc5640d1SHerbert Xue 1440*dc5640d1SHerbert Xue @throws ConfigurationException if this injector cannot find or create the provider. 1441*dc5640d1SHerbert Xue @throws ProvisionException if there was a runtime failure while providing an instance.]]> 1442*dc5640d1SHerbert Xue </doc> 1443*dc5640d1SHerbert Xue </method> 1444*dc5640d1SHerbert Xue <method name="getParent" return="com.google.inject.Injector" 1445*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1446*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1447*dc5640d1SHerbert Xue deprecated="not deprecated"> 1448*dc5640d1SHerbert Xue <doc> 1449*dc5640d1SHerbert Xue <![CDATA[Returns this injector's parent, or {@code null} if this is a top-level injector. 1450*dc5640d1SHerbert Xue 1451*dc5640d1SHerbert Xue @since 2.0]]> 1452*dc5640d1SHerbert Xue </doc> 1453*dc5640d1SHerbert Xue </method> 1454*dc5640d1SHerbert Xue <method name="createChildInjector" return="com.google.inject.Injector" 1455*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1456*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1457*dc5640d1SHerbert Xue deprecated="not deprecated"> 1458*dc5640d1SHerbert Xue <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 1459*dc5640d1SHerbert Xue <doc> 1460*dc5640d1SHerbert Xue <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes, 1461*dc5640d1SHerbert Xue interceptors and type converters are inherited -- they are visible to the child injector. 1462*dc5640d1SHerbert Xue Elements of the child injector are not visible to its parent. 1463*dc5640d1SHerbert Xue 1464*dc5640d1SHerbert Xue <p>Just-in-time bindings created for child injectors will be created in an ancestor injector 1465*dc5640d1SHerbert Xue whenever possible. This allows for scoped instances to be shared between injectors. Use 1466*dc5640d1SHerbert Xue explicit bindings to prevent bindings from being shared with the parent injector. Optional 1467*dc5640d1SHerbert Xue injections in just-in-time bindings (created in the parent injector) may be silently 1468*dc5640d1SHerbert Xue ignored if the optional dependencies are from the child injector. 1469*dc5640d1SHerbert Xue 1470*dc5640d1SHerbert Xue <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time 1471*dc5640d1SHerbert Xue bindings. The lone exception is the key for {@code Injector.class}, which is bound by each 1472*dc5640d1SHerbert Xue injector to itself. 1473*dc5640d1SHerbert Xue 1474*dc5640d1SHerbert Xue @since 2.0]]> 1475*dc5640d1SHerbert Xue </doc> 1476*dc5640d1SHerbert Xue </method> 1477*dc5640d1SHerbert Xue <method name="createChildInjector" return="com.google.inject.Injector" 1478*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1479*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1480*dc5640d1SHerbert Xue deprecated="not deprecated"> 1481*dc5640d1SHerbert Xue <param name="modules" type="com.google.inject.Module[]"/> 1482*dc5640d1SHerbert Xue <doc> 1483*dc5640d1SHerbert Xue <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes, 1484*dc5640d1SHerbert Xue interceptors and type converters are inherited -- they are visible to the child injector. 1485*dc5640d1SHerbert Xue Elements of the child injector are not visible to its parent. 1486*dc5640d1SHerbert Xue 1487*dc5640d1SHerbert Xue <p>Just-in-time bindings created for child injectors will be created in an ancestor injector 1488*dc5640d1SHerbert Xue whenever possible. This allows for scoped instances to be shared between injectors. Use 1489*dc5640d1SHerbert Xue explicit bindings to prevent bindings from being shared with the parent injector. 1490*dc5640d1SHerbert Xue 1491*dc5640d1SHerbert Xue <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time 1492*dc5640d1SHerbert Xue bindings. The lone exception is the key for {@code Injector.class}, which is bound by each 1493*dc5640d1SHerbert Xue injector to itself. 1494*dc5640d1SHerbert Xue 1495*dc5640d1SHerbert Xue @since 2.0]]> 1496*dc5640d1SHerbert Xue </doc> 1497*dc5640d1SHerbert Xue </method> 1498*dc5640d1SHerbert Xue <method name="getScopeBindings" return="java.util.Map<java.lang.Class<? extends java.lang.annotation.Annotation>, com.google.inject.Scope>" 1499*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1500*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1501*dc5640d1SHerbert Xue deprecated="not deprecated"> 1502*dc5640d1SHerbert Xue <doc> 1503*dc5640d1SHerbert Xue <![CDATA[Returns a map containing all scopes in the injector. The maps keys are scoping annotations 1504*dc5640d1SHerbert Xue like {@code Singleton.class}, and the values are scope instances, such as {@code 1505*dc5640d1SHerbert Xue Scopes.SINGLETON}. The returned map is immutable. 1506*dc5640d1SHerbert Xue 1507*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1508*dc5640d1SHerbert Xue 1509*dc5640d1SHerbert Xue @since 3.0]]> 1510*dc5640d1SHerbert Xue </doc> 1511*dc5640d1SHerbert Xue </method> 1512*dc5640d1SHerbert Xue <method name="getTypeConverterBindings" return="java.util.Set<com.google.inject.spi.TypeConverterBinding>" 1513*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1514*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1515*dc5640d1SHerbert Xue deprecated="not deprecated"> 1516*dc5640d1SHerbert Xue <doc> 1517*dc5640d1SHerbert Xue <![CDATA[Returns a set containing all type converter bindings in the injector. The returned set is 1518*dc5640d1SHerbert Xue immutable. 1519*dc5640d1SHerbert Xue 1520*dc5640d1SHerbert Xue <p>This method is part of the Guice SPI and is intended for use by tools and extensions. 1521*dc5640d1SHerbert Xue 1522*dc5640d1SHerbert Xue @since 3.0]]> 1523*dc5640d1SHerbert Xue </doc> 1524*dc5640d1SHerbert Xue </method> 1525*dc5640d1SHerbert Xue <doc> 1526*dc5640d1SHerbert Xue <![CDATA[Builds the graphs of objects that make up your application. The injector tracks the dependencies 1527*dc5640d1SHerbert Xue for each type and uses bindings to inject them. This is the core of Guice, although you rarely 1528*dc5640d1SHerbert Xue interact with it directly. This "behind-the-scenes" operation is what distinguishes dependency 1529*dc5640d1SHerbert Xue injection from its cousin, the service locator pattern. 1530*dc5640d1SHerbert Xue 1531*dc5640d1SHerbert Xue <p>Contains several default bindings: 1532*dc5640d1SHerbert Xue 1533*dc5640d1SHerbert Xue <ul> 1534*dc5640d1SHerbert Xue <li>This {@link Injector} instance itself 1535*dc5640d1SHerbert Xue <li>A {@code Provider<T>} for each binding of type {@code T} 1536*dc5640d1SHerbert Xue <li>The {@link java.util.logging.Logger} for the class being injected 1537*dc5640d1SHerbert Xue <li>The {@link Stage} in which the Injector was created 1538*dc5640d1SHerbert Xue </ul> 1539*dc5640d1SHerbert Xue 1540*dc5640d1SHerbert Xue Injectors are created using the facade class {@link Guice}. 1541*dc5640d1SHerbert Xue 1542*dc5640d1SHerbert Xue <p>An injector can also {@link #injectMembers(Object) inject the dependencies} of 1543*dc5640d1SHerbert Xue already-constructed instances. This can be used to interoperate with objects created by other 1544*dc5640d1SHerbert Xue frameworks or services. 1545*dc5640d1SHerbert Xue 1546*dc5640d1SHerbert Xue <p>Injectors can be {@link #createChildInjector(Iterable) hierarchical}. Child injectors inherit 1547*dc5640d1SHerbert Xue the configuration of their parent injectors, but the converse does not hold. 1548*dc5640d1SHerbert Xue 1549*dc5640d1SHerbert Xue <p>The injector's {@link #getBindings() internal bindings} are available for introspection. This 1550*dc5640d1SHerbert Xue enables tools and extensions to operate on an injector reflectively. 1551*dc5640d1SHerbert Xue 1552*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 1553*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]> 1554*dc5640d1SHerbert Xue </doc> 1555*dc5640d1SHerbert Xue </interface> 1556*dc5640d1SHerbert Xue <!-- end interface com.google.inject.Injector --> 1557*dc5640d1SHerbert Xue <!-- start class com.google.inject.Key --> 1558*dc5640d1SHerbert Xue <class name="Key" extends="java.lang.Object" 1559*dc5640d1SHerbert Xue abstract="false" 1560*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1561*dc5640d1SHerbert Xue deprecated="not deprecated"> 1562*dc5640d1SHerbert Xue <constructor name="Key" type="java.lang.Class<? extends java.lang.annotation.Annotation>" 1563*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 1564*dc5640d1SHerbert Xue deprecated="not deprecated"> 1565*dc5640d1SHerbert Xue <doc> 1566*dc5640d1SHerbert Xue <![CDATA[Constructs a new key. Derives the type from this class's type parameter. 1567*dc5640d1SHerbert Xue 1568*dc5640d1SHerbert Xue <p>Clients create an empty anonymous subclass. Doing so embeds the type 1569*dc5640d1SHerbert Xue parameter in the anonymous class's type hierarchy so we can reconstitute it 1570*dc5640d1SHerbert Xue at runtime despite erasure. 1571*dc5640d1SHerbert Xue 1572*dc5640d1SHerbert Xue <p>Example usage for a binding of type {@code Foo} annotated with 1573*dc5640d1SHerbert Xue {@code @Bar}: 1574*dc5640d1SHerbert Xue 1575*dc5640d1SHerbert Xue <p>{@code new Key<Foo>(Bar.class) {}}.]]> 1576*dc5640d1SHerbert Xue </doc> 1577*dc5640d1SHerbert Xue </constructor> 1578*dc5640d1SHerbert Xue <constructor name="Key" type="java.lang.annotation.Annotation" 1579*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 1580*dc5640d1SHerbert Xue deprecated="not deprecated"> 1581*dc5640d1SHerbert Xue <doc> 1582*dc5640d1SHerbert Xue <![CDATA[Constructs a new key. Derives the type from this class's type parameter. 1583*dc5640d1SHerbert Xue 1584*dc5640d1SHerbert Xue <p>Clients create an empty anonymous subclass. Doing so embeds the type 1585*dc5640d1SHerbert Xue parameter in the anonymous class's type hierarchy so we can reconstitute it 1586*dc5640d1SHerbert Xue at runtime despite erasure. 1587*dc5640d1SHerbert Xue 1588*dc5640d1SHerbert Xue <p>Example usage for a binding of type {@code Foo} annotated with 1589*dc5640d1SHerbert Xue {@code @Bar}: 1590*dc5640d1SHerbert Xue 1591*dc5640d1SHerbert Xue <p>{@code new Key<Foo>(new Bar()) {}}.]]> 1592*dc5640d1SHerbert Xue </doc> 1593*dc5640d1SHerbert Xue </constructor> 1594*dc5640d1SHerbert Xue <constructor name="Key" 1595*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 1596*dc5640d1SHerbert Xue deprecated="not deprecated"> 1597*dc5640d1SHerbert Xue <doc> 1598*dc5640d1SHerbert Xue <![CDATA[Constructs a new key. Derives the type from this class's type parameter. 1599*dc5640d1SHerbert Xue 1600*dc5640d1SHerbert Xue <p>Clients create an empty anonymous subclass. Doing so embeds the type 1601*dc5640d1SHerbert Xue parameter in the anonymous class's type hierarchy so we can reconstitute it 1602*dc5640d1SHerbert Xue at runtime despite erasure. 1603*dc5640d1SHerbert Xue 1604*dc5640d1SHerbert Xue <p>Example usage for a binding of type {@code Foo}: 1605*dc5640d1SHerbert Xue 1606*dc5640d1SHerbert Xue <p>{@code new Key<Foo>() {}}.]]> 1607*dc5640d1SHerbert Xue </doc> 1608*dc5640d1SHerbert Xue </constructor> 1609*dc5640d1SHerbert Xue <method name="getTypeLiteral" return="com.google.inject.TypeLiteral<T>" 1610*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1611*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1612*dc5640d1SHerbert Xue deprecated="not deprecated"> 1613*dc5640d1SHerbert Xue <doc> 1614*dc5640d1SHerbert Xue <![CDATA[Gets the key type.]]> 1615*dc5640d1SHerbert Xue </doc> 1616*dc5640d1SHerbert Xue </method> 1617*dc5640d1SHerbert Xue <method name="getAnnotationType" return="java.lang.Class<? extends java.lang.annotation.Annotation>" 1618*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1619*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1620*dc5640d1SHerbert Xue deprecated="not deprecated"> 1621*dc5640d1SHerbert Xue <doc> 1622*dc5640d1SHerbert Xue <![CDATA[Gets the annotation type.]]> 1623*dc5640d1SHerbert Xue </doc> 1624*dc5640d1SHerbert Xue </method> 1625*dc5640d1SHerbert Xue <method name="getAnnotation" return="java.lang.annotation.Annotation" 1626*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1627*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1628*dc5640d1SHerbert Xue deprecated="not deprecated"> 1629*dc5640d1SHerbert Xue <doc> 1630*dc5640d1SHerbert Xue <![CDATA[Gets the annotation.]]> 1631*dc5640d1SHerbert Xue </doc> 1632*dc5640d1SHerbert Xue </method> 1633*dc5640d1SHerbert Xue <method name="equals" return="boolean" 1634*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1635*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1636*dc5640d1SHerbert Xue deprecated="not deprecated"> 1637*dc5640d1SHerbert Xue <param name="o" type="java.lang.Object"/> 1638*dc5640d1SHerbert Xue </method> 1639*dc5640d1SHerbert Xue <method name="hashCode" return="int" 1640*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1641*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1642*dc5640d1SHerbert Xue deprecated="not deprecated"> 1643*dc5640d1SHerbert Xue </method> 1644*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 1645*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1646*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1647*dc5640d1SHerbert Xue deprecated="not deprecated"> 1648*dc5640d1SHerbert Xue </method> 1649*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<T>" 1650*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1651*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1652*dc5640d1SHerbert Xue deprecated="not deprecated"> 1653*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1654*dc5640d1SHerbert Xue <doc> 1655*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type.]]> 1656*dc5640d1SHerbert Xue </doc> 1657*dc5640d1SHerbert Xue </method> 1658*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<T>" 1659*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1660*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1661*dc5640d1SHerbert Xue deprecated="not deprecated"> 1662*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1663*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 1664*dc5640d1SHerbert Xue <doc> 1665*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type and an annotation type.]]> 1666*dc5640d1SHerbert Xue </doc> 1667*dc5640d1SHerbert Xue </method> 1668*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<T>" 1669*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1670*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1671*dc5640d1SHerbert Xue deprecated="not deprecated"> 1672*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1673*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 1674*dc5640d1SHerbert Xue <doc> 1675*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type and an annotation.]]> 1676*dc5640d1SHerbert Xue </doc> 1677*dc5640d1SHerbert Xue </method> 1678*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<?>" 1679*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1680*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1681*dc5640d1SHerbert Xue deprecated="not deprecated"> 1682*dc5640d1SHerbert Xue <param name="type" type="java.lang.reflect.Type"/> 1683*dc5640d1SHerbert Xue <doc> 1684*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type.]]> 1685*dc5640d1SHerbert Xue </doc> 1686*dc5640d1SHerbert Xue </method> 1687*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<?>" 1688*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1689*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1690*dc5640d1SHerbert Xue deprecated="not deprecated"> 1691*dc5640d1SHerbert Xue <param name="type" type="java.lang.reflect.Type"/> 1692*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 1693*dc5640d1SHerbert Xue <doc> 1694*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type and an annotation type.]]> 1695*dc5640d1SHerbert Xue </doc> 1696*dc5640d1SHerbert Xue </method> 1697*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<?>" 1698*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1699*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1700*dc5640d1SHerbert Xue deprecated="not deprecated"> 1701*dc5640d1SHerbert Xue <param name="type" type="java.lang.reflect.Type"/> 1702*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 1703*dc5640d1SHerbert Xue <doc> 1704*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type and an annotation.]]> 1705*dc5640d1SHerbert Xue </doc> 1706*dc5640d1SHerbert Xue </method> 1707*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<T>" 1708*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1709*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1710*dc5640d1SHerbert Xue deprecated="not deprecated"> 1711*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1712*dc5640d1SHerbert Xue <doc> 1713*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type.]]> 1714*dc5640d1SHerbert Xue </doc> 1715*dc5640d1SHerbert Xue </method> 1716*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<T>" 1717*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1718*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1719*dc5640d1SHerbert Xue deprecated="not deprecated"> 1720*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1721*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 1722*dc5640d1SHerbert Xue <doc> 1723*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type and an annotation type.]]> 1724*dc5640d1SHerbert Xue </doc> 1725*dc5640d1SHerbert Xue </method> 1726*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.Key<T>" 1727*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1728*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 1729*dc5640d1SHerbert Xue deprecated="not deprecated"> 1730*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 1731*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 1732*dc5640d1SHerbert Xue <doc> 1733*dc5640d1SHerbert Xue <![CDATA[Gets a key for an injection type and an annotation.]]> 1734*dc5640d1SHerbert Xue </doc> 1735*dc5640d1SHerbert Xue </method> 1736*dc5640d1SHerbert Xue <method name="ofType" return="com.google.inject.Key<T>" 1737*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1738*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1739*dc5640d1SHerbert Xue deprecated="not deprecated"> 1740*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 1741*dc5640d1SHerbert Xue <doc> 1742*dc5640d1SHerbert Xue <![CDATA[Returns a new key of the specified type with the same annotation as this 1743*dc5640d1SHerbert Xue key. 1744*dc5640d1SHerbert Xue 1745*dc5640d1SHerbert Xue @since 3.0]]> 1746*dc5640d1SHerbert Xue </doc> 1747*dc5640d1SHerbert Xue </method> 1748*dc5640d1SHerbert Xue <method name="ofType" return="com.google.inject.Key<?>" 1749*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1750*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1751*dc5640d1SHerbert Xue deprecated="not deprecated"> 1752*dc5640d1SHerbert Xue <param name="type" type="java.lang.reflect.Type"/> 1753*dc5640d1SHerbert Xue <doc> 1754*dc5640d1SHerbert Xue <![CDATA[Returns a new key of the specified type with the same annotation as this 1755*dc5640d1SHerbert Xue key. 1756*dc5640d1SHerbert Xue 1757*dc5640d1SHerbert Xue @since 3.0]]> 1758*dc5640d1SHerbert Xue </doc> 1759*dc5640d1SHerbert Xue </method> 1760*dc5640d1SHerbert Xue <method name="ofType" return="com.google.inject.Key<T>" 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="type" type="com.google.inject.TypeLiteral<T>"/> 1765*dc5640d1SHerbert Xue <doc> 1766*dc5640d1SHerbert Xue <![CDATA[Returns a new key of the specified type with the same annotation as this 1767*dc5640d1SHerbert Xue key. 1768*dc5640d1SHerbert Xue 1769*dc5640d1SHerbert Xue @since 3.0]]> 1770*dc5640d1SHerbert Xue </doc> 1771*dc5640d1SHerbert Xue </method> 1772*dc5640d1SHerbert Xue <method name="hasAttributes" return="boolean" 1773*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1774*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1775*dc5640d1SHerbert Xue deprecated="not deprecated"> 1776*dc5640d1SHerbert Xue <doc> 1777*dc5640d1SHerbert Xue <![CDATA[Returns true if this key has annotation attributes. 1778*dc5640d1SHerbert Xue 1779*dc5640d1SHerbert Xue @since 3.0]]> 1780*dc5640d1SHerbert Xue </doc> 1781*dc5640d1SHerbert Xue </method> 1782*dc5640d1SHerbert Xue <method name="withoutAttributes" return="com.google.inject.Key<T>" 1783*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1784*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1785*dc5640d1SHerbert Xue deprecated="not deprecated"> 1786*dc5640d1SHerbert Xue <doc> 1787*dc5640d1SHerbert Xue <![CDATA[Returns this key without annotation attributes, i.e. with only the 1788*dc5640d1SHerbert Xue annotation type. 1789*dc5640d1SHerbert Xue 1790*dc5640d1SHerbert Xue @since 3.0]]> 1791*dc5640d1SHerbert Xue </doc> 1792*dc5640d1SHerbert Xue </method> 1793*dc5640d1SHerbert Xue <doc> 1794*dc5640d1SHerbert Xue <![CDATA[Binding key consisting of an injection type and an optional annotation. 1795*dc5640d1SHerbert Xue Matches the type and annotation at a point of injection. 1796*dc5640d1SHerbert Xue 1797*dc5640d1SHerbert Xue <p>For example, {@code Key.get(Service.class, Transactional.class)} will 1798*dc5640d1SHerbert Xue match: 1799*dc5640d1SHerbert Xue 1800*dc5640d1SHerbert Xue <pre> 1801*dc5640d1SHerbert Xue {@literal @}Inject 1802*dc5640d1SHerbert Xue public void setService({@literal @}Transactional Service service) { 1803*dc5640d1SHerbert Xue ... 1804*dc5640d1SHerbert Xue } 1805*dc5640d1SHerbert Xue </pre> 1806*dc5640d1SHerbert Xue 1807*dc5640d1SHerbert Xue <p>{@code Key} supports generic types via subclassing just like {@link 1808*dc5640d1SHerbert Xue TypeLiteral}. 1809*dc5640d1SHerbert Xue 1810*dc5640d1SHerbert Xue <p>Keys do not differentiate between primitive types (int, char, etc.) and 1811*dc5640d1SHerbert Xue their corresponding wrapper types (Integer, Character, etc.). Primitive 1812*dc5640d1SHerbert Xue types will be replaced with their wrapper types when keys are created. 1813*dc5640d1SHerbert Xue 1814*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 1815*dc5640d1SHerbert Xue </doc> 1816*dc5640d1SHerbert Xue </class> 1817*dc5640d1SHerbert Xue <!-- end class com.google.inject.Key --> 1818*dc5640d1SHerbert Xue <!-- start interface com.google.inject.MembersInjector --> 1819*dc5640d1SHerbert Xue <interface name="MembersInjector" abstract="true" 1820*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1821*dc5640d1SHerbert Xue deprecated="not deprecated"> 1822*dc5640d1SHerbert Xue <method name="injectMembers" 1823*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1824*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1825*dc5640d1SHerbert Xue deprecated="not deprecated"> 1826*dc5640d1SHerbert Xue <param name="instance" type="T"/> 1827*dc5640d1SHerbert Xue <doc> 1828*dc5640d1SHerbert Xue <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or 1829*dc5640d1SHerbert Xue absence of an injectable constructor. 1830*dc5640d1SHerbert Xue 1831*dc5640d1SHerbert Xue <p>Whenever Guice creates an instance, it performs this injection automatically (after first 1832*dc5640d1SHerbert Xue performing constructor injection), so if you're able to let Guice create all your objects for 1833*dc5640d1SHerbert Xue you, you'll never need to use this method. 1834*dc5640d1SHerbert Xue 1835*dc5640d1SHerbert Xue @param instance to inject members on. May be {@code null}.]]> 1836*dc5640d1SHerbert Xue </doc> 1837*dc5640d1SHerbert Xue </method> 1838*dc5640d1SHerbert Xue <doc> 1839*dc5640d1SHerbert Xue <![CDATA[Injects dependencies into the fields and methods on instances of type {@code T}. Ignores the 1840*dc5640d1SHerbert Xue presence or absence of an injectable constructor. 1841*dc5640d1SHerbert Xue 1842*dc5640d1SHerbert Xue @param <T> type to inject members of 1843*dc5640d1SHerbert Xue 1844*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 1845*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 1846*dc5640d1SHerbert Xue @since 2.0]]> 1847*dc5640d1SHerbert Xue </doc> 1848*dc5640d1SHerbert Xue </interface> 1849*dc5640d1SHerbert Xue <!-- end interface com.google.inject.MembersInjector --> 1850*dc5640d1SHerbert Xue <!-- start interface com.google.inject.Module --> 1851*dc5640d1SHerbert Xue <interface name="Module" abstract="true" 1852*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1853*dc5640d1SHerbert Xue deprecated="not deprecated"> 1854*dc5640d1SHerbert Xue <method name="configure" 1855*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1856*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1857*dc5640d1SHerbert Xue deprecated="not deprecated"> 1858*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 1859*dc5640d1SHerbert Xue <doc> 1860*dc5640d1SHerbert Xue <![CDATA[Contributes bindings and other configurations for this module to {@code binder}. 1861*dc5640d1SHerbert Xue 1862*dc5640d1SHerbert Xue <p><strong>Do not invoke this method directly</strong> to install submodules. Instead use 1863*dc5640d1SHerbert Xue {@link Binder#install(Module)}, which ensures that {@link Provides provider methods} are 1864*dc5640d1SHerbert Xue discovered.]]> 1865*dc5640d1SHerbert Xue </doc> 1866*dc5640d1SHerbert Xue </method> 1867*dc5640d1SHerbert Xue <doc> 1868*dc5640d1SHerbert Xue <![CDATA[A module contributes configuration information, typically interface 1869*dc5640d1SHerbert Xue bindings, which will be used to create an {@link Injector}. A Guice-based 1870*dc5640d1SHerbert Xue application is ultimately composed of little more than a set of 1871*dc5640d1SHerbert Xue {@code Module}s and some bootstrapping code. 1872*dc5640d1SHerbert Xue 1873*dc5640d1SHerbert Xue <p>Your Module classes can use a more streamlined syntax by extending 1874*dc5640d1SHerbert Xue {@link AbstractModule} rather than implementing this interface directly. 1875*dc5640d1SHerbert Xue 1876*dc5640d1SHerbert Xue <p>In addition to the bindings configured via {@link #configure}, bindings 1877*dc5640d1SHerbert Xue will be created for all methods annotated with {@literal @}{@link Provides}. 1878*dc5640d1SHerbert Xue Use scope and binding annotations on these methods to configure the 1879*dc5640d1SHerbert Xue bindings.]]> 1880*dc5640d1SHerbert Xue </doc> 1881*dc5640d1SHerbert Xue </interface> 1882*dc5640d1SHerbert Xue <!-- end interface com.google.inject.Module --> 1883*dc5640d1SHerbert Xue <!-- start class com.google.inject.OutOfScopeException --> 1884*dc5640d1SHerbert Xue <class name="OutOfScopeException" extends="java.lang.RuntimeException" 1885*dc5640d1SHerbert Xue abstract="false" 1886*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1887*dc5640d1SHerbert Xue deprecated="not deprecated"> 1888*dc5640d1SHerbert Xue <constructor name="OutOfScopeException" type="java.lang.String" 1889*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1890*dc5640d1SHerbert Xue deprecated="not deprecated"> 1891*dc5640d1SHerbert Xue </constructor> 1892*dc5640d1SHerbert Xue <constructor name="OutOfScopeException" type="java.lang.String, java.lang.Throwable" 1893*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1894*dc5640d1SHerbert Xue deprecated="not deprecated"> 1895*dc5640d1SHerbert Xue </constructor> 1896*dc5640d1SHerbert Xue <constructor name="OutOfScopeException" type="java.lang.Throwable" 1897*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1898*dc5640d1SHerbert Xue deprecated="not deprecated"> 1899*dc5640d1SHerbert Xue </constructor> 1900*dc5640d1SHerbert Xue <doc> 1901*dc5640d1SHerbert Xue <![CDATA[Thrown from {@link Provider#get} when an attempt is made to access a scoped 1902*dc5640d1SHerbert Xue object while the scope in question is not currently active. 1903*dc5640d1SHerbert Xue 1904*dc5640d1SHerbert Xue @author [email protected] (Kevin Bourrillion) 1905*dc5640d1SHerbert Xue @since 2.0]]> 1906*dc5640d1SHerbert Xue </doc> 1907*dc5640d1SHerbert Xue </class> 1908*dc5640d1SHerbert Xue <!-- end class com.google.inject.OutOfScopeException --> 1909*dc5640d1SHerbert Xue <!-- start interface com.google.inject.PrivateBinder --> 1910*dc5640d1SHerbert Xue <interface name="PrivateBinder" abstract="true" 1911*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1912*dc5640d1SHerbert Xue deprecated="not deprecated"> 1913*dc5640d1SHerbert Xue <implements name="com.google.inject.Binder"/> 1914*dc5640d1SHerbert Xue <method name="expose" 1915*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1916*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1917*dc5640d1SHerbert Xue deprecated="not deprecated"> 1918*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 1919*dc5640d1SHerbert Xue <doc> 1920*dc5640d1SHerbert Xue <![CDATA[Makes the binding for {@code key} available to the enclosing environment]]> 1921*dc5640d1SHerbert Xue </doc> 1922*dc5640d1SHerbert Xue </method> 1923*dc5640d1SHerbert Xue <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 1924*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1925*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1926*dc5640d1SHerbert Xue deprecated="not deprecated"> 1927*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<?>"/> 1928*dc5640d1SHerbert Xue <doc> 1929*dc5640d1SHerbert Xue <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link 1930*dc5640d1SHerbert Xue com.google.inject.binder.AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 1931*dc5640d1SHerbert Xue binding annotation.]]> 1932*dc5640d1SHerbert Xue </doc> 1933*dc5640d1SHerbert Xue </method> 1934*dc5640d1SHerbert Xue <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 1935*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1936*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1937*dc5640d1SHerbert Xue deprecated="not deprecated"> 1938*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<?>"/> 1939*dc5640d1SHerbert Xue <doc> 1940*dc5640d1SHerbert Xue <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link 1941*dc5640d1SHerbert Xue AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 1942*dc5640d1SHerbert Xue binding annotation.]]> 1943*dc5640d1SHerbert Xue </doc> 1944*dc5640d1SHerbert Xue </method> 1945*dc5640d1SHerbert Xue <method name="withSource" return="com.google.inject.PrivateBinder" 1946*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1947*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1948*dc5640d1SHerbert Xue deprecated="not deprecated"> 1949*dc5640d1SHerbert Xue <param name="source" type="java.lang.Object"/> 1950*dc5640d1SHerbert Xue </method> 1951*dc5640d1SHerbert Xue <method name="skipSources" return="com.google.inject.PrivateBinder" 1952*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1953*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1954*dc5640d1SHerbert Xue deprecated="not deprecated"> 1955*dc5640d1SHerbert Xue <param name="classesToSkip" type="java.lang.Class[]"/> 1956*dc5640d1SHerbert Xue </method> 1957*dc5640d1SHerbert Xue <doc> 1958*dc5640d1SHerbert Xue <![CDATA[Returns a binder whose configuration information is hidden from its environment by default. See 1959*dc5640d1SHerbert Xue {@link com.google.inject.PrivateModule PrivateModule} for details. 1960*dc5640d1SHerbert Xue 1961*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 1962*dc5640d1SHerbert Xue @since 2.0]]> 1963*dc5640d1SHerbert Xue </doc> 1964*dc5640d1SHerbert Xue </interface> 1965*dc5640d1SHerbert Xue <!-- end interface com.google.inject.PrivateBinder --> 1966*dc5640d1SHerbert Xue <!-- start class com.google.inject.PrivateModule --> 1967*dc5640d1SHerbert Xue <class name="PrivateModule" extends="java.lang.Object" 1968*dc5640d1SHerbert Xue abstract="true" 1969*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1970*dc5640d1SHerbert Xue deprecated="not deprecated"> 1971*dc5640d1SHerbert Xue <implements name="com.google.inject.Module"/> 1972*dc5640d1SHerbert Xue <constructor name="PrivateModule" 1973*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 1974*dc5640d1SHerbert Xue deprecated="not deprecated"> 1975*dc5640d1SHerbert Xue </constructor> 1976*dc5640d1SHerbert Xue <method name="configure" 1977*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="true" 1978*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 1979*dc5640d1SHerbert Xue deprecated="not deprecated"> 1980*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 1981*dc5640d1SHerbert Xue </method> 1982*dc5640d1SHerbert Xue <method name="configure" 1983*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 1984*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 1985*dc5640d1SHerbert Xue deprecated="not deprecated"> 1986*dc5640d1SHerbert Xue <doc> 1987*dc5640d1SHerbert Xue <![CDATA[Creates bindings and other configurations private to this module. Use {@link #expose(Class) 1988*dc5640d1SHerbert Xue expose()} to make the bindings in this module available externally.]]> 1989*dc5640d1SHerbert Xue </doc> 1990*dc5640d1SHerbert Xue </method> 1991*dc5640d1SHerbert Xue <method name="expose" 1992*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 1993*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 1994*dc5640d1SHerbert Xue deprecated="not deprecated"> 1995*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 1996*dc5640d1SHerbert Xue <doc> 1997*dc5640d1SHerbert Xue <![CDATA[Makes the binding for {@code key} available to other modules and the injector.]]> 1998*dc5640d1SHerbert Xue </doc> 1999*dc5640d1SHerbert Xue </method> 2000*dc5640d1SHerbert Xue <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 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="type" type="java.lang.Class<?>"/> 2005*dc5640d1SHerbert Xue <doc> 2006*dc5640d1SHerbert Xue <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link 2007*dc5640d1SHerbert Xue AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 2008*dc5640d1SHerbert Xue binding annotation.]]> 2009*dc5640d1SHerbert Xue </doc> 2010*dc5640d1SHerbert Xue </method> 2011*dc5640d1SHerbert Xue <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder" 2012*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2013*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2014*dc5640d1SHerbert Xue deprecated="not deprecated"> 2015*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<?>"/> 2016*dc5640d1SHerbert Xue <doc> 2017*dc5640d1SHerbert Xue <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link 2018*dc5640d1SHerbert Xue AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a 2019*dc5640d1SHerbert Xue binding annotation.]]> 2020*dc5640d1SHerbert Xue </doc> 2021*dc5640d1SHerbert Xue </method> 2022*dc5640d1SHerbert Xue <method name="binder" return="com.google.inject.PrivateBinder" 2023*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2024*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2025*dc5640d1SHerbert Xue deprecated="not deprecated"> 2026*dc5640d1SHerbert Xue <doc> 2027*dc5640d1SHerbert Xue <![CDATA[Returns the current binder.]]> 2028*dc5640d1SHerbert Xue </doc> 2029*dc5640d1SHerbert Xue </method> 2030*dc5640d1SHerbert Xue <method name="bindScope" 2031*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2032*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2033*dc5640d1SHerbert Xue deprecated="not deprecated"> 2034*dc5640d1SHerbert Xue <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 2035*dc5640d1SHerbert Xue <param name="scope" type="com.google.inject.Scope"/> 2036*dc5640d1SHerbert Xue <doc> 2037*dc5640d1SHerbert Xue <![CDATA[@see Binder#bindScope(Class, Scope)]]> 2038*dc5640d1SHerbert Xue </doc> 2039*dc5640d1SHerbert Xue </method> 2040*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder<T>" 2041*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2042*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2043*dc5640d1SHerbert Xue deprecated="not deprecated"> 2044*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 2045*dc5640d1SHerbert Xue <doc> 2046*dc5640d1SHerbert Xue <![CDATA[@see Binder#bind(Key)]]> 2047*dc5640d1SHerbert Xue </doc> 2048*dc5640d1SHerbert Xue </method> 2049*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 2050*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2051*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2052*dc5640d1SHerbert Xue deprecated="not deprecated"> 2053*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 2054*dc5640d1SHerbert Xue <doc> 2055*dc5640d1SHerbert Xue <![CDATA[@see Binder#bind(TypeLiteral)]]> 2056*dc5640d1SHerbert Xue </doc> 2057*dc5640d1SHerbert Xue </method> 2058*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder<T>" 2059*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2060*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2061*dc5640d1SHerbert Xue deprecated="not deprecated"> 2062*dc5640d1SHerbert Xue <param name="clazz" type="java.lang.Class<T>"/> 2063*dc5640d1SHerbert Xue <doc> 2064*dc5640d1SHerbert Xue <![CDATA[@see Binder#bind(Class)]]> 2065*dc5640d1SHerbert Xue </doc> 2066*dc5640d1SHerbert Xue </method> 2067*dc5640d1SHerbert Xue <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder" 2068*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2069*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2070*dc5640d1SHerbert Xue deprecated="not deprecated"> 2071*dc5640d1SHerbert Xue <doc> 2072*dc5640d1SHerbert Xue <![CDATA[@see Binder#bindConstant()]]> 2073*dc5640d1SHerbert Xue </doc> 2074*dc5640d1SHerbert Xue </method> 2075*dc5640d1SHerbert Xue <method name="install" 2076*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2077*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2078*dc5640d1SHerbert Xue deprecated="not deprecated"> 2079*dc5640d1SHerbert Xue <param name="module" type="com.google.inject.Module"/> 2080*dc5640d1SHerbert Xue <doc> 2081*dc5640d1SHerbert Xue <![CDATA[@see Binder#install(Module)]]> 2082*dc5640d1SHerbert Xue </doc> 2083*dc5640d1SHerbert Xue </method> 2084*dc5640d1SHerbert Xue <method name="addError" 2085*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2086*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2087*dc5640d1SHerbert Xue deprecated="not deprecated"> 2088*dc5640d1SHerbert Xue <param name="message" type="java.lang.String"/> 2089*dc5640d1SHerbert Xue <param name="arguments" type="java.lang.Object[]"/> 2090*dc5640d1SHerbert Xue <doc> 2091*dc5640d1SHerbert Xue <![CDATA[@see Binder#addError(String, Object[])]]> 2092*dc5640d1SHerbert Xue </doc> 2093*dc5640d1SHerbert Xue </method> 2094*dc5640d1SHerbert Xue <method name="addError" 2095*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2096*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2097*dc5640d1SHerbert Xue deprecated="not deprecated"> 2098*dc5640d1SHerbert Xue <param name="t" type="java.lang.Throwable"/> 2099*dc5640d1SHerbert Xue <doc> 2100*dc5640d1SHerbert Xue <![CDATA[@see Binder#addError(Throwable)]]> 2101*dc5640d1SHerbert Xue </doc> 2102*dc5640d1SHerbert Xue </method> 2103*dc5640d1SHerbert Xue <method name="addError" 2104*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2105*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2106*dc5640d1SHerbert Xue deprecated="not deprecated"> 2107*dc5640d1SHerbert Xue <param name="message" type="com.google.inject.spi.Message"/> 2108*dc5640d1SHerbert Xue <doc> 2109*dc5640d1SHerbert Xue <![CDATA[@see Binder#addError(Message)]]> 2110*dc5640d1SHerbert Xue </doc> 2111*dc5640d1SHerbert Xue </method> 2112*dc5640d1SHerbert Xue <method name="requestInjection" 2113*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2114*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2115*dc5640d1SHerbert Xue deprecated="not deprecated"> 2116*dc5640d1SHerbert Xue <param name="instance" type="java.lang.Object"/> 2117*dc5640d1SHerbert Xue <doc> 2118*dc5640d1SHerbert Xue <![CDATA[@see Binder#requestInjection(Object)]]> 2119*dc5640d1SHerbert Xue </doc> 2120*dc5640d1SHerbert Xue </method> 2121*dc5640d1SHerbert Xue <method name="requestStaticInjection" 2122*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2123*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2124*dc5640d1SHerbert Xue deprecated="not deprecated"> 2125*dc5640d1SHerbert Xue <param name="types" type="java.lang.Class[]"/> 2126*dc5640d1SHerbert Xue <doc> 2127*dc5640d1SHerbert Xue <![CDATA[@see Binder#requestStaticInjection(Class[])]]> 2128*dc5640d1SHerbert Xue </doc> 2129*dc5640d1SHerbert Xue </method> 2130*dc5640d1SHerbert Xue <method name="bindInterceptor" 2131*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2132*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2133*dc5640d1SHerbert Xue deprecated="not deprecated"> 2134*dc5640d1SHerbert Xue <param name="classMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>"/> 2135*dc5640d1SHerbert Xue <param name="methodMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>"/> 2136*dc5640d1SHerbert Xue <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/> 2137*dc5640d1SHerbert Xue <doc> 2138*dc5640d1SHerbert Xue <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher, com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])]]> 2139*dc5640d1SHerbert Xue </doc> 2140*dc5640d1SHerbert Xue </method> 2141*dc5640d1SHerbert Xue <method name="requireBinding" 2142*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2143*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2144*dc5640d1SHerbert Xue deprecated="not deprecated"> 2145*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 2146*dc5640d1SHerbert Xue <doc> 2147*dc5640d1SHerbert Xue <![CDATA[Instructs Guice to require a binding to the given key.]]> 2148*dc5640d1SHerbert Xue </doc> 2149*dc5640d1SHerbert Xue </method> 2150*dc5640d1SHerbert Xue <method name="requireBinding" 2151*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2152*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2153*dc5640d1SHerbert Xue deprecated="not deprecated"> 2154*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<?>"/> 2155*dc5640d1SHerbert Xue <doc> 2156*dc5640d1SHerbert Xue <![CDATA[Instructs Guice to require a binding to the given type.]]> 2157*dc5640d1SHerbert Xue </doc> 2158*dc5640d1SHerbert Xue </method> 2159*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 2160*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2161*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2162*dc5640d1SHerbert Xue deprecated="not deprecated"> 2163*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 2164*dc5640d1SHerbert Xue <doc> 2165*dc5640d1SHerbert Xue <![CDATA[@see Binder#getProvider(Key)]]> 2166*dc5640d1SHerbert Xue </doc> 2167*dc5640d1SHerbert Xue </method> 2168*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 2169*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2170*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2171*dc5640d1SHerbert Xue deprecated="not deprecated"> 2172*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 2173*dc5640d1SHerbert Xue <doc> 2174*dc5640d1SHerbert Xue <![CDATA[@see Binder#getProvider(Class)]]> 2175*dc5640d1SHerbert Xue </doc> 2176*dc5640d1SHerbert Xue </method> 2177*dc5640d1SHerbert Xue <method name="convertToTypes" 2178*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2179*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2180*dc5640d1SHerbert Xue deprecated="not deprecated"> 2181*dc5640d1SHerbert Xue <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> 2182*dc5640d1SHerbert Xue <param name="converter" type="com.google.inject.spi.TypeConverter"/> 2183*dc5640d1SHerbert Xue <doc> 2184*dc5640d1SHerbert Xue <![CDATA[@see Binder#convertToTypes(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeConverter)]]> 2185*dc5640d1SHerbert Xue </doc> 2186*dc5640d1SHerbert Xue </method> 2187*dc5640d1SHerbert Xue <method name="currentStage" return="com.google.inject.Stage" 2188*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2189*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 2190*dc5640d1SHerbert Xue deprecated="not deprecated"> 2191*dc5640d1SHerbert Xue <doc> 2192*dc5640d1SHerbert Xue <![CDATA[@see Binder#currentStage()]]> 2193*dc5640d1SHerbert Xue </doc> 2194*dc5640d1SHerbert Xue </method> 2195*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 2196*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2197*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 2198*dc5640d1SHerbert Xue deprecated="not deprecated"> 2199*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 2200*dc5640d1SHerbert Xue <doc> 2201*dc5640d1SHerbert Xue <![CDATA[@see Binder#getMembersInjector(Class)]]> 2202*dc5640d1SHerbert Xue </doc> 2203*dc5640d1SHerbert Xue </method> 2204*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 2205*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2206*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 2207*dc5640d1SHerbert Xue deprecated="not deprecated"> 2208*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<T>"/> 2209*dc5640d1SHerbert Xue <doc> 2210*dc5640d1SHerbert Xue <![CDATA[@see Binder#getMembersInjector(TypeLiteral)]]> 2211*dc5640d1SHerbert Xue </doc> 2212*dc5640d1SHerbert Xue </method> 2213*dc5640d1SHerbert Xue <method name="bindListener" 2214*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2215*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 2216*dc5640d1SHerbert Xue deprecated="not deprecated"> 2217*dc5640d1SHerbert Xue <param name="typeMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>"/> 2218*dc5640d1SHerbert Xue <param name="listener" type="com.google.inject.spi.TypeListener"/> 2219*dc5640d1SHerbert Xue <doc> 2220*dc5640d1SHerbert Xue <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeListener)]]> 2221*dc5640d1SHerbert Xue </doc> 2222*dc5640d1SHerbert Xue </method> 2223*dc5640d1SHerbert Xue <method name="bindListener" 2224*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2225*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 2226*dc5640d1SHerbert Xue deprecated="not deprecated"> 2227*dc5640d1SHerbert Xue <param name="bindingMatcher" type="com.google.inject.matcher.Matcher<? super com.google.inject.Binding<?>>"/> 2228*dc5640d1SHerbert Xue <param name="listeners" type="com.google.inject.spi.ProvisionListener[]"/> 2229*dc5640d1SHerbert Xue <doc> 2230*dc5640d1SHerbert Xue <![CDATA[@see Binder#bindListener(Matcher, ProvisionListener...) 2231*dc5640d1SHerbert Xue @since 4.0]]> 2232*dc5640d1SHerbert Xue </doc> 2233*dc5640d1SHerbert Xue </method> 2234*dc5640d1SHerbert Xue <doc> 2235*dc5640d1SHerbert Xue <![CDATA[A module whose configuration information is hidden from its environment by default. Only bindings 2236*dc5640d1SHerbert Xue that are explicitly exposed will be available to other modules and to the users of the injector. 2237*dc5640d1SHerbert Xue This module may expose the bindings it creates and the bindings of the modules it installs. 2238*dc5640d1SHerbert Xue 2239*dc5640d1SHerbert Xue <p>A private module can be nested within a regular module or within another private module using 2240*dc5640d1SHerbert Xue {@link Binder#install install()}. Its bindings live in a new environment that inherits bindings, 2241*dc5640d1SHerbert Xue type converters, scopes, and interceptors from the surrounding ("parent") environment. When you 2242*dc5640d1SHerbert Xue nest multiple private modules, the result is a tree of environments where the injector's 2243*dc5640d1SHerbert Xue environment is the root. 2244*dc5640d1SHerbert Xue 2245*dc5640d1SHerbert Xue <p>Guice EDSL bindings can be exposed with {@link #expose(Class) expose()}. {@literal @}{@link 2246*dc5640d1SHerbert Xue com.google.inject.Provides Provides} bindings can be exposed with the {@literal @}{@link 2247*dc5640d1SHerbert Xue Exposed} annotation: 2248*dc5640d1SHerbert Xue 2249*dc5640d1SHerbert Xue <pre> 2250*dc5640d1SHerbert Xue public class FooBarBazModule extends PrivateModule { 2251*dc5640d1SHerbert Xue protected void configure() { 2252*dc5640d1SHerbert Xue bind(Foo.class).to(RealFoo.class); 2253*dc5640d1SHerbert Xue expose(Foo.class); 2254*dc5640d1SHerbert Xue 2255*dc5640d1SHerbert Xue install(new TransactionalBarModule()); 2256*dc5640d1SHerbert Xue expose(Bar.class).annotatedWith(Transactional.class); 2257*dc5640d1SHerbert Xue 2258*dc5640d1SHerbert Xue bind(SomeImplementationDetail.class); 2259*dc5640d1SHerbert Xue install(new MoreImplementationDetailsModule()); 2260*dc5640d1SHerbert Xue } 2261*dc5640d1SHerbert Xue 2262*dc5640d1SHerbert Xue {@literal @}Provides {@literal @}Exposed 2263*dc5640d1SHerbert Xue public Baz provideBaz() { 2264*dc5640d1SHerbert Xue return new SuperBaz(); 2265*dc5640d1SHerbert Xue } 2266*dc5640d1SHerbert Xue } 2267*dc5640d1SHerbert Xue </pre> 2268*dc5640d1SHerbert Xue 2269*dc5640d1SHerbert Xue <p>Private modules are implemented using {@link Injector#createChildInjector(Module[]) parent 2270*dc5640d1SHerbert Xue injectors}. When it can satisfy their dependencies, just-in-time bindings will be created in the 2271*dc5640d1SHerbert Xue root environment. Such bindings are shared among all environments in the tree. 2272*dc5640d1SHerbert Xue 2273*dc5640d1SHerbert Xue <p>The scope of a binding is constrained to its environment. A singleton bound in a private 2274*dc5640d1SHerbert Xue module will be unique to its environment. But a binding for the same type in a different private 2275*dc5640d1SHerbert Xue module will yield a different instance. 2276*dc5640d1SHerbert Xue 2277*dc5640d1SHerbert Xue <p>A shared binding that injects the {@code Injector} gets the root injector, which only has 2278*dc5640d1SHerbert Xue access to bindings in the root environment. An explicit binding that injects the {@code Injector} 2279*dc5640d1SHerbert Xue gets access to all bindings in the child environment. 2280*dc5640d1SHerbert Xue 2281*dc5640d1SHerbert Xue <p>To promote a just-in-time binding to an explicit binding, bind it: 2282*dc5640d1SHerbert Xue <pre> 2283*dc5640d1SHerbert Xue bind(FooImpl.class); 2284*dc5640d1SHerbert Xue </pre> 2285*dc5640d1SHerbert Xue 2286*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 2287*dc5640d1SHerbert Xue @since 2.0]]> 2288*dc5640d1SHerbert Xue </doc> 2289*dc5640d1SHerbert Xue </class> 2290*dc5640d1SHerbert Xue <!-- end class com.google.inject.PrivateModule --> 2291*dc5640d1SHerbert Xue <!-- start class com.google.inject.ProvidedBy --> 2292*dc5640d1SHerbert Xue <class name="ProvidedBy" abstract="true" 2293*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2294*dc5640d1SHerbert Xue deprecated="not deprecated"> 2295*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 2296*dc5640d1SHerbert Xue <doc> 2297*dc5640d1SHerbert Xue <![CDATA[A pointer to the default provider type for a type. 2298*dc5640d1SHerbert Xue 2299*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2300*dc5640d1SHerbert Xue </doc> 2301*dc5640d1SHerbert Xue </class> 2302*dc5640d1SHerbert Xue <!-- end class com.google.inject.ProvidedBy --> 2303*dc5640d1SHerbert Xue <!-- start interface com.google.inject.Provider --> 2304*dc5640d1SHerbert Xue <interface name="Provider" abstract="true" 2305*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2306*dc5640d1SHerbert Xue deprecated="not deprecated"> 2307*dc5640d1SHerbert Xue <implements name="javax.inject.Provider<T>"/> 2308*dc5640d1SHerbert Xue <method name="get" return="T" 2309*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 2310*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2311*dc5640d1SHerbert Xue deprecated="not deprecated"> 2312*dc5640d1SHerbert Xue <doc> 2313*dc5640d1SHerbert Xue <![CDATA[Provides an instance of {@code T}. Must never return {@code null}. 2314*dc5640d1SHerbert Xue 2315*dc5640d1SHerbert Xue @throws OutOfScopeException when an attempt is made to access a scoped object while the scope 2316*dc5640d1SHerbert Xue in question is not currently active 2317*dc5640d1SHerbert Xue @throws ProvisionException if an instance cannot be provided. Such exceptions include messages 2318*dc5640d1SHerbert Xue and throwables to describe why provision failed.]]> 2319*dc5640d1SHerbert Xue </doc> 2320*dc5640d1SHerbert Xue </method> 2321*dc5640d1SHerbert Xue <doc> 2322*dc5640d1SHerbert Xue <![CDATA[An object capable of providing instances of type {@code T}. Providers are used in numerous ways 2323*dc5640d1SHerbert Xue by Guice: 2324*dc5640d1SHerbert Xue 2325*dc5640d1SHerbert Xue <ul> 2326*dc5640d1SHerbert Xue <li>When the default means for obtaining instances (an injectable or parameterless constructor) 2327*dc5640d1SHerbert Xue is insufficient for a particular binding, the module can specify a custom {@code Provider} 2328*dc5640d1SHerbert Xue instead, to control exactly how Guice creates or obtains instances for the binding. 2329*dc5640d1SHerbert Xue 2330*dc5640d1SHerbert Xue <li>An implementation class may always choose to have a {@code Provider<T>} instance injected, 2331*dc5640d1SHerbert Xue rather than having a {@code T} injected directly. This may give you access to multiple 2332*dc5640d1SHerbert Xue instances, instances you wish to safely mutate and discard, instances which are out of scope 2333*dc5640d1SHerbert Xue (e.g. using a {@code @RequestScoped} object from within a {@code @SessionScoped} object), or 2334*dc5640d1SHerbert Xue instances that will be initialized lazily. 2335*dc5640d1SHerbert Xue 2336*dc5640d1SHerbert Xue <li>A custom {@link Scope} is implemented as a decorator of {@code Provider<T>}, which decides 2337*dc5640d1SHerbert Xue when to delegate to the backing provider and when to provide the instance some other way. 2338*dc5640d1SHerbert Xue 2339*dc5640d1SHerbert Xue <li>The {@link Injector} offers access to the {@code Provider<T>} it uses to fulfill requests 2340*dc5640d1SHerbert Xue for a given key, via the {@link Injector#getProvider} methods. 2341*dc5640d1SHerbert Xue </ul> 2342*dc5640d1SHerbert Xue 2343*dc5640d1SHerbert Xue @param <T> the type of object this provides 2344*dc5640d1SHerbert Xue 2345*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2346*dc5640d1SHerbert Xue </doc> 2347*dc5640d1SHerbert Xue </interface> 2348*dc5640d1SHerbert Xue <!-- end interface com.google.inject.Provider --> 2349*dc5640d1SHerbert Xue <!-- start class com.google.inject.Provides --> 2350*dc5640d1SHerbert Xue <class name="Provides" abstract="true" 2351*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2352*dc5640d1SHerbert Xue deprecated="not deprecated"> 2353*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 2354*dc5640d1SHerbert Xue <doc> 2355*dc5640d1SHerbert Xue <![CDATA[Annotates methods of a {@link Module} to create a provider method binding. The method's return 2356*dc5640d1SHerbert Xue type is bound to its returned value. Guice will pass dependencies to the method as parameters. 2357*dc5640d1SHerbert Xue 2358*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 2359*dc5640d1SHerbert Xue @since 2.0]]> 2360*dc5640d1SHerbert Xue </doc> 2361*dc5640d1SHerbert Xue </class> 2362*dc5640d1SHerbert Xue <!-- end class com.google.inject.Provides --> 2363*dc5640d1SHerbert Xue <!-- start class com.google.inject.ProvisionException --> 2364*dc5640d1SHerbert Xue <class name="ProvisionException" extends="java.lang.RuntimeException" 2365*dc5640d1SHerbert Xue abstract="false" 2366*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2367*dc5640d1SHerbert Xue deprecated="not deprecated"> 2368*dc5640d1SHerbert Xue <constructor name="ProvisionException" type="java.lang.Iterable<com.google.inject.spi.Message>" 2369*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2370*dc5640d1SHerbert Xue deprecated="not deprecated"> 2371*dc5640d1SHerbert Xue <doc> 2372*dc5640d1SHerbert Xue <![CDATA[Creates a ProvisionException containing {@code messages}.]]> 2373*dc5640d1SHerbert Xue </doc> 2374*dc5640d1SHerbert Xue </constructor> 2375*dc5640d1SHerbert Xue <constructor name="ProvisionException" type="java.lang.String, java.lang.Throwable" 2376*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2377*dc5640d1SHerbert Xue deprecated="not deprecated"> 2378*dc5640d1SHerbert Xue </constructor> 2379*dc5640d1SHerbert Xue <constructor name="ProvisionException" type="java.lang.String" 2380*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2381*dc5640d1SHerbert Xue deprecated="not deprecated"> 2382*dc5640d1SHerbert Xue </constructor> 2383*dc5640d1SHerbert Xue <method name="getErrorMessages" return="java.util.Collection<com.google.inject.spi.Message>" 2384*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2385*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2386*dc5640d1SHerbert Xue deprecated="not deprecated"> 2387*dc5640d1SHerbert Xue <doc> 2388*dc5640d1SHerbert Xue <![CDATA[Returns messages for the errors that caused this exception.]]> 2389*dc5640d1SHerbert Xue </doc> 2390*dc5640d1SHerbert Xue </method> 2391*dc5640d1SHerbert Xue <method name="getMessage" return="java.lang.String" 2392*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2393*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2394*dc5640d1SHerbert Xue deprecated="not deprecated"> 2395*dc5640d1SHerbert Xue </method> 2396*dc5640d1SHerbert Xue <doc> 2397*dc5640d1SHerbert Xue <![CDATA[Indicates that there was a runtime failure while providing an instance. 2398*dc5640d1SHerbert Xue 2399*dc5640d1SHerbert Xue @author [email protected] (Kevin Bourrillion) 2400*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 2401*dc5640d1SHerbert Xue @since 2.0]]> 2402*dc5640d1SHerbert Xue </doc> 2403*dc5640d1SHerbert Xue </class> 2404*dc5640d1SHerbert Xue <!-- end class com.google.inject.ProvisionException --> 2405*dc5640d1SHerbert Xue <!-- start interface com.google.inject.Scope --> 2406*dc5640d1SHerbert Xue <interface name="Scope" abstract="true" 2407*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2408*dc5640d1SHerbert Xue deprecated="not deprecated"> 2409*dc5640d1SHerbert Xue <method name="scope" return="com.google.inject.Provider<T>" 2410*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 2411*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2412*dc5640d1SHerbert Xue deprecated="not deprecated"> 2413*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 2414*dc5640d1SHerbert Xue <param name="unscoped" type="com.google.inject.Provider<T>"/> 2415*dc5640d1SHerbert Xue <doc> 2416*dc5640d1SHerbert Xue <![CDATA[Scopes a provider. The returned provider returns objects from this scope. 2417*dc5640d1SHerbert Xue If an object does not exist in this scope, the provider can use the given 2418*dc5640d1SHerbert Xue unscoped provider to retrieve one. 2419*dc5640d1SHerbert Xue 2420*dc5640d1SHerbert Xue <p>Scope implementations are strongly encouraged to override 2421*dc5640d1SHerbert Xue {@link Object#toString} in the returned provider and include the backing 2422*dc5640d1SHerbert Xue provider's {@code toString()} output. 2423*dc5640d1SHerbert Xue 2424*dc5640d1SHerbert Xue @param key binding key 2425*dc5640d1SHerbert Xue @param unscoped locates an instance when one doesn't already exist in this 2426*dc5640d1SHerbert Xue scope. 2427*dc5640d1SHerbert Xue @return a new provider which only delegates to the given unscoped provider 2428*dc5640d1SHerbert Xue when an instance of the requested object doesn't already exist in this 2429*dc5640d1SHerbert Xue scope]]> 2430*dc5640d1SHerbert Xue </doc> 2431*dc5640d1SHerbert Xue </method> 2432*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 2433*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 2434*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2435*dc5640d1SHerbert Xue deprecated="not deprecated"> 2436*dc5640d1SHerbert Xue <doc> 2437*dc5640d1SHerbert Xue <![CDATA[A short but useful description of this scope. For comparison, the standard 2438*dc5640d1SHerbert Xue scopes that ship with guice use the descriptions 2439*dc5640d1SHerbert Xue {@code "Scopes.SINGLETON"}, {@code "ServletScopes.SESSION"} and 2440*dc5640d1SHerbert Xue {@code "ServletScopes.REQUEST"}.]]> 2441*dc5640d1SHerbert Xue </doc> 2442*dc5640d1SHerbert Xue </method> 2443*dc5640d1SHerbert Xue <doc> 2444*dc5640d1SHerbert Xue <![CDATA[A scope is a level of visibility that instances provided by Guice may have. 2445*dc5640d1SHerbert Xue By default, an instance created by the {@link Injector} has <i>no scope</i>, 2446*dc5640d1SHerbert Xue meaning it has no state from the framework's perspective -- the 2447*dc5640d1SHerbert Xue {@code Injector} creates it, injects it once into the class that required it, 2448*dc5640d1SHerbert Xue and then immediately forgets it. Associating a scope with a particular 2449*dc5640d1SHerbert Xue binding allows the created instance to be "remembered" and possibly used 2450*dc5640d1SHerbert Xue again for other injections. 2451*dc5640d1SHerbert Xue 2452*dc5640d1SHerbert Xue <p>An example of a scope is {@link Scopes#SINGLETON}. 2453*dc5640d1SHerbert Xue 2454*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2455*dc5640d1SHerbert Xue </doc> 2456*dc5640d1SHerbert Xue </interface> 2457*dc5640d1SHerbert Xue <!-- end interface com.google.inject.Scope --> 2458*dc5640d1SHerbert Xue <!-- start class com.google.inject.ScopeAnnotation --> 2459*dc5640d1SHerbert Xue <class name="ScopeAnnotation" abstract="true" 2460*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2461*dc5640d1SHerbert Xue deprecated="not deprecated"> 2462*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 2463*dc5640d1SHerbert Xue <doc> 2464*dc5640d1SHerbert Xue <![CDATA[Annotates annotations which are used for scoping. Only one such annotation 2465*dc5640d1SHerbert Xue may apply to a single implementation class. You must also annotate scope 2466*dc5640d1SHerbert Xue annotations with {@code @Retention(RUNTIME)}. For example: 2467*dc5640d1SHerbert Xue 2468*dc5640d1SHerbert Xue <pre> 2469*dc5640d1SHerbert Xue {@code @}Retention(RUNTIME) 2470*dc5640d1SHerbert Xue {@code @}Target(TYPE, METHOD) 2471*dc5640d1SHerbert Xue {@code @}ScopeAnnotation 2472*dc5640d1SHerbert Xue public {@code @}interface SessionScoped {} 2473*dc5640d1SHerbert Xue </pre> 2474*dc5640d1SHerbert Xue 2475*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2476*dc5640d1SHerbert Xue </doc> 2477*dc5640d1SHerbert Xue </class> 2478*dc5640d1SHerbert Xue <!-- end class com.google.inject.ScopeAnnotation --> 2479*dc5640d1SHerbert Xue <!-- start class com.google.inject.Scopes --> 2480*dc5640d1SHerbert Xue <class name="Scopes" extends="java.lang.Object" 2481*dc5640d1SHerbert Xue abstract="false" 2482*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2483*dc5640d1SHerbert Xue deprecated="not deprecated"> 2484*dc5640d1SHerbert Xue <method name="isSingleton" return="boolean" 2485*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2486*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 2487*dc5640d1SHerbert Xue deprecated="not deprecated"> 2488*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.Binding<?>"/> 2489*dc5640d1SHerbert Xue <doc> 2490*dc5640d1SHerbert Xue <![CDATA[Returns true if {@code binding} is singleton-scoped. If the binding is a {@link 2491*dc5640d1SHerbert Xue com.google.inject.spi.LinkedKeyBinding linked key binding} and belongs to an injector (ie. it 2492*dc5640d1SHerbert Xue was retrieved via {@link Injector#getBinding Injector.getBinding()}), then this method will 2493*dc5640d1SHerbert Xue also true if the target binding is singleton-scoped. 2494*dc5640d1SHerbert Xue 2495*dc5640d1SHerbert Xue @since 3.0]]> 2496*dc5640d1SHerbert Xue </doc> 2497*dc5640d1SHerbert Xue </method> 2498*dc5640d1SHerbert Xue <method name="isScoped" return="boolean" 2499*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2500*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 2501*dc5640d1SHerbert Xue deprecated="not deprecated"> 2502*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.Binding<?>"/> 2503*dc5640d1SHerbert Xue <param name="scope" type="com.google.inject.Scope"/> 2504*dc5640d1SHerbert Xue <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 2505*dc5640d1SHerbert Xue <doc> 2506*dc5640d1SHerbert Xue <![CDATA[Returns true if {@code binding} has the given scope. If the binding is a {@link 2507*dc5640d1SHerbert Xue com.google.inject.spi.LinkedKeyBinding linked key binding} and belongs to an injector (ie. it 2508*dc5640d1SHerbert Xue was retrieved via {@link Injector#getBinding Injector.getBinding()}), then this method will 2509*dc5640d1SHerbert Xue also true if the target binding has the given scope. 2510*dc5640d1SHerbert Xue 2511*dc5640d1SHerbert Xue @param binding binding to check 2512*dc5640d1SHerbert Xue @param scope scope implementation instance 2513*dc5640d1SHerbert Xue @param scopeAnnotation scope annotation class 2514*dc5640d1SHerbert Xue @since 4.0]]> 2515*dc5640d1SHerbert Xue </doc> 2516*dc5640d1SHerbert Xue </method> 2517*dc5640d1SHerbert Xue <method name="isCircularProxy" return="boolean" 2518*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2519*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 2520*dc5640d1SHerbert Xue deprecated="not deprecated"> 2521*dc5640d1SHerbert Xue <param name="object" type="java.lang.Object"/> 2522*dc5640d1SHerbert Xue <doc> 2523*dc5640d1SHerbert Xue <![CDATA[Returns true if the object is a proxy for a circular dependency, 2524*dc5640d1SHerbert Xue constructed by Guice because it encountered a circular dependency. Scope 2525*dc5640d1SHerbert Xue implementations should be careful to <b>not cache circular proxies</b>, 2526*dc5640d1SHerbert Xue because the proxies are not intended for general purpose use. (They are 2527*dc5640d1SHerbert Xue designed just to fulfill the immediate injection, not all injections. 2528*dc5640d1SHerbert Xue Caching them can lead to IllegalArgumentExceptions or ClassCastExceptions.) 2529*dc5640d1SHerbert Xue 2530*dc5640d1SHerbert Xue @since 4.0]]> 2531*dc5640d1SHerbert Xue </doc> 2532*dc5640d1SHerbert Xue </method> 2533*dc5640d1SHerbert Xue <field name="SINGLETON" type="com.google.inject.Scope" 2534*dc5640d1SHerbert Xue transient="false" volatile="false" 2535*dc5640d1SHerbert Xue static="true" final="true" visibility="public" 2536*dc5640d1SHerbert Xue deprecated="not deprecated"> 2537*dc5640d1SHerbert Xue <doc> 2538*dc5640d1SHerbert Xue <![CDATA[One instance per {@link Injector}. Also see {@code @}{@link Singleton}.]]> 2539*dc5640d1SHerbert Xue </doc> 2540*dc5640d1SHerbert Xue </field> 2541*dc5640d1SHerbert Xue <field name="NO_SCOPE" type="com.google.inject.Scope" 2542*dc5640d1SHerbert Xue transient="false" volatile="false" 2543*dc5640d1SHerbert Xue static="true" final="true" visibility="public" 2544*dc5640d1SHerbert Xue deprecated="not deprecated"> 2545*dc5640d1SHerbert Xue <doc> 2546*dc5640d1SHerbert Xue <![CDATA[No scope; the same as not applying any scope at all. Each time the 2547*dc5640d1SHerbert Xue Injector obtains an instance of an object with "no scope", it injects this 2548*dc5640d1SHerbert Xue instance then immediately forgets it. When the next request for the same 2549*dc5640d1SHerbert Xue binding arrives it will need to obtain the instance over again. 2550*dc5640d1SHerbert Xue 2551*dc5640d1SHerbert Xue <p>This exists only in case a class has been annotated with a scope 2552*dc5640d1SHerbert Xue annotation such as {@link Singleton @Singleton}, and you need to override 2553*dc5640d1SHerbert Xue this to "no scope" in your binding. 2554*dc5640d1SHerbert Xue 2555*dc5640d1SHerbert Xue @since 2.0]]> 2556*dc5640d1SHerbert Xue </doc> 2557*dc5640d1SHerbert Xue </field> 2558*dc5640d1SHerbert Xue <doc> 2559*dc5640d1SHerbert Xue <![CDATA[Built-in scope implementations. 2560*dc5640d1SHerbert Xue 2561*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2562*dc5640d1SHerbert Xue </doc> 2563*dc5640d1SHerbert Xue </class> 2564*dc5640d1SHerbert Xue <!-- end class com.google.inject.Scopes --> 2565*dc5640d1SHerbert Xue <!-- start class com.google.inject.Singleton --> 2566*dc5640d1SHerbert Xue <class name="Singleton" abstract="true" 2567*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2568*dc5640d1SHerbert Xue deprecated="not deprecated"> 2569*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 2570*dc5640d1SHerbert Xue <doc> 2571*dc5640d1SHerbert Xue <![CDATA[Apply this to implementation classes when you want only one instance 2572*dc5640d1SHerbert Xue (per {@link Injector}) to be reused for all injections for that binding. 2573*dc5640d1SHerbert Xue 2574*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2575*dc5640d1SHerbert Xue </doc> 2576*dc5640d1SHerbert Xue </class> 2577*dc5640d1SHerbert Xue <!-- end class com.google.inject.Singleton --> 2578*dc5640d1SHerbert Xue <!-- start class com.google.inject.Stage --> 2579*dc5640d1SHerbert Xue <class name="Stage" extends="java.lang.Enum<com.google.inject.Stage>" 2580*dc5640d1SHerbert Xue abstract="false" 2581*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2582*dc5640d1SHerbert Xue deprecated="not deprecated"> 2583*dc5640d1SHerbert Xue <method name="values" return="com.google.inject.Stage[]" 2584*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2585*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 2586*dc5640d1SHerbert Xue deprecated="not deprecated"> 2587*dc5640d1SHerbert Xue </method> 2588*dc5640d1SHerbert Xue <method name="valueOf" return="com.google.inject.Stage" 2589*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2590*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 2591*dc5640d1SHerbert Xue deprecated="not deprecated"> 2592*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 2593*dc5640d1SHerbert Xue </method> 2594*dc5640d1SHerbert Xue <doc> 2595*dc5640d1SHerbert Xue <![CDATA[The stage we're running in. 2596*dc5640d1SHerbert Xue 2597*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 2598*dc5640d1SHerbert Xue </doc> 2599*dc5640d1SHerbert Xue </class> 2600*dc5640d1SHerbert Xue <!-- end class com.google.inject.Stage --> 2601*dc5640d1SHerbert Xue <!-- start class com.google.inject.TypeLiteral --> 2602*dc5640d1SHerbert Xue <class name="TypeLiteral" extends="java.lang.Object" 2603*dc5640d1SHerbert Xue abstract="false" 2604*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2605*dc5640d1SHerbert Xue deprecated="not deprecated"> 2606*dc5640d1SHerbert Xue <constructor name="TypeLiteral" 2607*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 2608*dc5640d1SHerbert Xue deprecated="not deprecated"> 2609*dc5640d1SHerbert Xue <doc> 2610*dc5640d1SHerbert Xue <![CDATA[Constructs a new type literal. Derives represented class from type 2611*dc5640d1SHerbert Xue parameter. 2612*dc5640d1SHerbert Xue 2613*dc5640d1SHerbert Xue <p>Clients create an empty anonymous subclass. Doing so embeds the type 2614*dc5640d1SHerbert Xue parameter in the anonymous class's type hierarchy so we can reconstitute it 2615*dc5640d1SHerbert Xue at runtime despite erasure.]]> 2616*dc5640d1SHerbert Xue </doc> 2617*dc5640d1SHerbert Xue </constructor> 2618*dc5640d1SHerbert Xue <method name="getRawType" return="java.lang.Class<? super T>" 2619*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2620*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2621*dc5640d1SHerbert Xue deprecated="not deprecated"> 2622*dc5640d1SHerbert Xue <doc> 2623*dc5640d1SHerbert Xue <![CDATA[Returns the raw (non-generic) type for this type. 2624*dc5640d1SHerbert Xue 2625*dc5640d1SHerbert Xue @since 2.0]]> 2626*dc5640d1SHerbert Xue </doc> 2627*dc5640d1SHerbert Xue </method> 2628*dc5640d1SHerbert Xue <method name="getType" return="java.lang.reflect.Type" 2629*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2630*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2631*dc5640d1SHerbert Xue deprecated="not deprecated"> 2632*dc5640d1SHerbert Xue <doc> 2633*dc5640d1SHerbert Xue <![CDATA[Gets underlying {@code Type} instance.]]> 2634*dc5640d1SHerbert Xue </doc> 2635*dc5640d1SHerbert Xue </method> 2636*dc5640d1SHerbert Xue <method name="hashCode" return="int" 2637*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2638*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2639*dc5640d1SHerbert Xue deprecated="not deprecated"> 2640*dc5640d1SHerbert Xue </method> 2641*dc5640d1SHerbert Xue <method name="equals" return="boolean" 2642*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2643*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2644*dc5640d1SHerbert Xue deprecated="not deprecated"> 2645*dc5640d1SHerbert Xue <param name="o" type="java.lang.Object"/> 2646*dc5640d1SHerbert Xue </method> 2647*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 2648*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2649*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2650*dc5640d1SHerbert Xue deprecated="not deprecated"> 2651*dc5640d1SHerbert Xue </method> 2652*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.TypeLiteral<?>" 2653*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2654*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 2655*dc5640d1SHerbert Xue deprecated="not deprecated"> 2656*dc5640d1SHerbert Xue <param name="type" type="java.lang.reflect.Type"/> 2657*dc5640d1SHerbert Xue <doc> 2658*dc5640d1SHerbert Xue <![CDATA[Gets type literal for the given {@code Type} instance.]]> 2659*dc5640d1SHerbert Xue </doc> 2660*dc5640d1SHerbert Xue </method> 2661*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.TypeLiteral<T>" 2662*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2663*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 2664*dc5640d1SHerbert Xue deprecated="not deprecated"> 2665*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 2666*dc5640d1SHerbert Xue <doc> 2667*dc5640d1SHerbert Xue <![CDATA[Gets type literal for the given {@code Class} instance.]]> 2668*dc5640d1SHerbert Xue </doc> 2669*dc5640d1SHerbert Xue </method> 2670*dc5640d1SHerbert Xue <method name="getSupertype" return="com.google.inject.TypeLiteral<?>" 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 <param name="supertype" type="java.lang.Class<?>"/> 2675*dc5640d1SHerbert Xue <doc> 2676*dc5640d1SHerbert Xue <![CDATA[Returns the generic form of {@code supertype}. For example, if this is {@code 2677*dc5640d1SHerbert Xue ArrayList<String>}, this returns {@code Iterable<String>} given the input {@code 2678*dc5640d1SHerbert Xue Iterable.class}. 2679*dc5640d1SHerbert Xue 2680*dc5640d1SHerbert Xue @param supertype a superclass of, or interface implemented by, this. 2681*dc5640d1SHerbert Xue @since 2.0]]> 2682*dc5640d1SHerbert Xue </doc> 2683*dc5640d1SHerbert Xue </method> 2684*dc5640d1SHerbert Xue <method name="getFieldType" return="com.google.inject.TypeLiteral<?>" 2685*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2686*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2687*dc5640d1SHerbert Xue deprecated="not deprecated"> 2688*dc5640d1SHerbert Xue <param name="field" type="java.lang.reflect.Field"/> 2689*dc5640d1SHerbert Xue <doc> 2690*dc5640d1SHerbert Xue <![CDATA[Returns the resolved generic type of {@code field}. 2691*dc5640d1SHerbert Xue 2692*dc5640d1SHerbert Xue @param field a field defined by this or any superclass. 2693*dc5640d1SHerbert Xue @since 2.0]]> 2694*dc5640d1SHerbert Xue </doc> 2695*dc5640d1SHerbert Xue </method> 2696*dc5640d1SHerbert Xue <method name="getParameterTypes" return="java.util.List<com.google.inject.TypeLiteral<?>>" 2697*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2698*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2699*dc5640d1SHerbert Xue deprecated="not deprecated"> 2700*dc5640d1SHerbert Xue <param name="methodOrConstructor" type="java.lang.reflect.Member"/> 2701*dc5640d1SHerbert Xue <doc> 2702*dc5640d1SHerbert Xue <![CDATA[Returns the resolved generic parameter types of {@code methodOrConstructor}. 2703*dc5640d1SHerbert Xue 2704*dc5640d1SHerbert Xue @param methodOrConstructor a method or constructor defined by this or any supertype. 2705*dc5640d1SHerbert Xue @since 2.0]]> 2706*dc5640d1SHerbert Xue </doc> 2707*dc5640d1SHerbert Xue </method> 2708*dc5640d1SHerbert Xue <method name="getExceptionTypes" return="java.util.List<com.google.inject.TypeLiteral<?>>" 2709*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2710*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2711*dc5640d1SHerbert Xue deprecated="not deprecated"> 2712*dc5640d1SHerbert Xue <param name="methodOrConstructor" type="java.lang.reflect.Member"/> 2713*dc5640d1SHerbert Xue <doc> 2714*dc5640d1SHerbert Xue <![CDATA[Returns the resolved generic exception types thrown by {@code constructor}. 2715*dc5640d1SHerbert Xue 2716*dc5640d1SHerbert Xue @param methodOrConstructor a method or constructor defined by this or any supertype. 2717*dc5640d1SHerbert Xue @since 2.0]]> 2718*dc5640d1SHerbert Xue </doc> 2719*dc5640d1SHerbert Xue </method> 2720*dc5640d1SHerbert Xue <method name="getReturnType" return="com.google.inject.TypeLiteral<?>" 2721*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2722*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2723*dc5640d1SHerbert Xue deprecated="not deprecated"> 2724*dc5640d1SHerbert Xue <param name="method" type="java.lang.reflect.Method"/> 2725*dc5640d1SHerbert Xue <doc> 2726*dc5640d1SHerbert Xue <![CDATA[Returns the resolved generic return type of {@code method}. 2727*dc5640d1SHerbert Xue 2728*dc5640d1SHerbert Xue @param method a method defined by this or any supertype. 2729*dc5640d1SHerbert Xue @since 2.0]]> 2730*dc5640d1SHerbert Xue </doc> 2731*dc5640d1SHerbert Xue </method> 2732*dc5640d1SHerbert Xue <doc> 2733*dc5640d1SHerbert Xue <![CDATA[Represents a generic type {@code T}. Java doesn't yet provide a way to 2734*dc5640d1SHerbert Xue represent generic types, so this class does. Forces clients to create a 2735*dc5640d1SHerbert Xue subclass of this class which enables retrieval the type information even at 2736*dc5640d1SHerbert Xue runtime. 2737*dc5640d1SHerbert Xue 2738*dc5640d1SHerbert Xue <p>For example, to create a type literal for {@code List<String>}, you can 2739*dc5640d1SHerbert Xue create an empty anonymous inner class: 2740*dc5640d1SHerbert Xue 2741*dc5640d1SHerbert Xue <p> 2742*dc5640d1SHerbert Xue {@code TypeLiteral<List<String>> list = new TypeLiteral<List<String>>() {};} 2743*dc5640d1SHerbert Xue 2744*dc5640d1SHerbert Xue <p>Along with modeling generic types, this class can resolve type parameters. 2745*dc5640d1SHerbert Xue For example, to figure out what type {@code keySet()} returns on a {@code 2746*dc5640d1SHerbert Xue Map<Integer, String>}, use this code:<pre> {@code 2747*dc5640d1SHerbert Xue 2748*dc5640d1SHerbert Xue TypeLiteral<Map<Integer, String>> mapType 2749*dc5640d1SHerbert Xue = new TypeLiteral<Map<Integer, String>>() {}; 2750*dc5640d1SHerbert Xue TypeLiteral<?> keySetType 2751*dc5640d1SHerbert Xue = mapType.getReturnType(Map.class.getMethod("keySet")); 2752*dc5640d1SHerbert Xue System.out.println(keySetType); // prints "Set<Integer>"}</pre> 2753*dc5640d1SHerbert Xue 2754*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 2755*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]> 2756*dc5640d1SHerbert Xue </doc> 2757*dc5640d1SHerbert Xue </class> 2758*dc5640d1SHerbert Xue <!-- end class com.google.inject.TypeLiteral --> 2759*dc5640d1SHerbert Xue</package> 2760*dc5640d1SHerbert Xue<package name="com.google.inject.assistedinject"> 2761*dc5640d1SHerbert Xue <!-- start class com.google.inject.assistedinject.Assisted --> 2762*dc5640d1SHerbert Xue <class name="Assisted" abstract="true" 2763*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2764*dc5640d1SHerbert Xue deprecated="not deprecated"> 2765*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 2766*dc5640d1SHerbert Xue <doc> 2767*dc5640d1SHerbert Xue <![CDATA[Annotates an injected parameter or field whose value comes from an argument to a factory method. 2768*dc5640d1SHerbert Xue 2769*dc5640d1SHerbert Xue @author [email protected] (Jerome Mourits) 2770*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]> 2771*dc5640d1SHerbert Xue </doc> 2772*dc5640d1SHerbert Xue </class> 2773*dc5640d1SHerbert Xue <!-- end class com.google.inject.assistedinject.Assisted --> 2774*dc5640d1SHerbert Xue <!-- start class com.google.inject.assistedinject.AssistedInject --> 2775*dc5640d1SHerbert Xue <class name="AssistedInject" abstract="true" 2776*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2777*dc5640d1SHerbert Xue deprecated="not deprecated"> 2778*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 2779*dc5640d1SHerbert Xue <doc> 2780*dc5640d1SHerbert Xue <![CDATA[<p> 2781*dc5640d1SHerbert Xue When used in tandem with {@link FactoryModuleBuilder}, constructors annotated with 2782*dc5640d1SHerbert Xue {@code @AssistedInject} indicate that multiple constructors can be injected, each with different 2783*dc5640d1SHerbert Xue parameters. AssistedInject annotations should not be mixed with {@literal @}{@link Inject} 2784*dc5640d1SHerbert Xue annotations. The assisted parameters must exactly match one corresponding factory method within 2785*dc5640d1SHerbert Xue the factory interface, but the parameters do not need to be in the same order. Constructors 2786*dc5640d1SHerbert Xue annotated with AssistedInject <b>are</b> created by Guice and receive all the benefits 2787*dc5640d1SHerbert Xue (such as AOP). 2788*dc5640d1SHerbert Xue 2789*dc5640d1SHerbert Xue <p> 2790*dc5640d1SHerbert Xue <strong>Obsolete Usage:</strong> When used in tandem with {@link FactoryProvider}, constructors 2791*dc5640d1SHerbert Xue annotated with {@code @AssistedInject} trigger a "backwards compatibility mode". The assisted 2792*dc5640d1SHerbert Xue parameters must exactly match one corresponding factory method within the factory interface and 2793*dc5640d1SHerbert Xue all must be in the same order as listed in the factory. In this backwards compatable mode, 2794*dc5640d1SHerbert Xue constructors annotated with AssistedInject <b>are not</b> created by Guice and thus receive 2795*dc5640d1SHerbert Xue none of the benefits. 2796*dc5640d1SHerbert Xue 2797*dc5640d1SHerbert Xue <p> 2798*dc5640d1SHerbert Xue Constructor parameters must be either supplied by the factory interface and marked with 2799*dc5640d1SHerbert Xue <code>@Assisted</code>, or they must be injectable. 2800*dc5640d1SHerbert Xue 2801*dc5640d1SHerbert Xue @author [email protected] (Jerome Mourits) 2802*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]> 2803*dc5640d1SHerbert Xue </doc> 2804*dc5640d1SHerbert Xue </class> 2805*dc5640d1SHerbert Xue <!-- end class com.google.inject.assistedinject.AssistedInject --> 2806*dc5640d1SHerbert Xue <!-- start interface com.google.inject.assistedinject.AssistedInjectBinding --> 2807*dc5640d1SHerbert Xue <interface name="AssistedInjectBinding" abstract="true" 2808*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2809*dc5640d1SHerbert Xue deprecated="not deprecated"> 2810*dc5640d1SHerbert Xue <method name="getKey" return="com.google.inject.Key<T>" 2811*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 2812*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2813*dc5640d1SHerbert Xue deprecated="not deprecated"> 2814*dc5640d1SHerbert Xue <doc> 2815*dc5640d1SHerbert Xue <![CDATA[Returns the {@link Key} for the factory binding.]]> 2816*dc5640d1SHerbert Xue </doc> 2817*dc5640d1SHerbert Xue </method> 2818*dc5640d1SHerbert Xue <method name="getAssistedMethods" return="java.util.Collection<com.google.inject.assistedinject.AssistedMethod>" 2819*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 2820*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2821*dc5640d1SHerbert Xue deprecated="not deprecated"> 2822*dc5640d1SHerbert Xue <doc> 2823*dc5640d1SHerbert Xue <![CDATA[Returns an {@link AssistedMethod} for each method in the factory.]]> 2824*dc5640d1SHerbert Xue </doc> 2825*dc5640d1SHerbert Xue </method> 2826*dc5640d1SHerbert Xue <doc> 2827*dc5640d1SHerbert Xue <![CDATA[A binding for a factory created by FactoryModuleBuilder. 2828*dc5640d1SHerbert Xue 2829*dc5640d1SHerbert Xue @param <T> The fully qualified type of the factory. 2830*dc5640d1SHerbert Xue 2831*dc5640d1SHerbert Xue @since 3.0 2832*dc5640d1SHerbert Xue @author [email protected] (Ramakrishna Rajanna)]]> 2833*dc5640d1SHerbert Xue </doc> 2834*dc5640d1SHerbert Xue </interface> 2835*dc5640d1SHerbert Xue <!-- end interface com.google.inject.assistedinject.AssistedInjectBinding --> 2836*dc5640d1SHerbert Xue <!-- start interface com.google.inject.assistedinject.AssistedInjectTargetVisitor --> 2837*dc5640d1SHerbert Xue <interface name="AssistedInjectTargetVisitor" abstract="true" 2838*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2839*dc5640d1SHerbert Xue deprecated="not deprecated"> 2840*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 2841*dc5640d1SHerbert Xue <method name="visit" return="V" 2842*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 2843*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2844*dc5640d1SHerbert Xue deprecated="not deprecated"> 2845*dc5640d1SHerbert Xue <param name="assistedInjectBinding" type="com.google.inject.assistedinject.AssistedInjectBinding<? extends T>"/> 2846*dc5640d1SHerbert Xue <doc> 2847*dc5640d1SHerbert Xue <![CDATA[Visits an {@link AssistedInjectBinding} created through {@link FactoryModuleBuilder}.]]> 2848*dc5640d1SHerbert Xue </doc> 2849*dc5640d1SHerbert Xue </method> 2850*dc5640d1SHerbert Xue <doc> 2851*dc5640d1SHerbert Xue <![CDATA[A visitor for the AssistedInject extension. 2852*dc5640d1SHerbert Xue <p> 2853*dc5640d1SHerbert Xue If your {@link BindingTargetVisitor} implements this interface, bindings created by using 2854*dc5640d1SHerbert Xue {@link FactoryModuleBuilder} will be visited through this interface. 2855*dc5640d1SHerbert Xue 2856*dc5640d1SHerbert Xue @since 3.0 2857*dc5640d1SHerbert Xue @author [email protected] (Ramakrishna Rajanna)]]> 2858*dc5640d1SHerbert Xue </doc> 2859*dc5640d1SHerbert Xue </interface> 2860*dc5640d1SHerbert Xue <!-- end interface com.google.inject.assistedinject.AssistedInjectTargetVisitor --> 2861*dc5640d1SHerbert Xue <!-- start interface com.google.inject.assistedinject.AssistedMethod --> 2862*dc5640d1SHerbert Xue <interface name="AssistedMethod" abstract="true" 2863*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2864*dc5640d1SHerbert Xue deprecated="not deprecated"> 2865*dc5640d1SHerbert Xue <method name="getFactoryMethod" return="java.lang.reflect.Method" 2866*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 2867*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2868*dc5640d1SHerbert Xue deprecated="not deprecated"> 2869*dc5640d1SHerbert Xue <doc> 2870*dc5640d1SHerbert Xue <![CDATA[Returns the factory method that is being assisted.]]> 2871*dc5640d1SHerbert Xue </doc> 2872*dc5640d1SHerbert Xue </method> 2873*dc5640d1SHerbert Xue <method name="getImplementationType" return="com.google.inject.TypeLiteral<?>" 2874*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 2875*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2876*dc5640d1SHerbert Xue deprecated="not deprecated"> 2877*dc5640d1SHerbert Xue <doc> 2878*dc5640d1SHerbert Xue <![CDATA[Returns the implementation type that will be created when the method is 2879*dc5640d1SHerbert Xue used.]]> 2880*dc5640d1SHerbert Xue </doc> 2881*dc5640d1SHerbert Xue </method> 2882*dc5640d1SHerbert Xue <method name="getImplementationConstructor" return="java.lang.reflect.Constructor<?>" 2883*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 2884*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2885*dc5640d1SHerbert Xue deprecated="not deprecated"> 2886*dc5640d1SHerbert Xue <doc> 2887*dc5640d1SHerbert Xue <![CDATA[Returns the constructor that will be used to construct instances of the 2888*dc5640d1SHerbert Xue implementation.]]> 2889*dc5640d1SHerbert Xue </doc> 2890*dc5640d1SHerbert Xue </method> 2891*dc5640d1SHerbert Xue <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 2892*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 2893*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2894*dc5640d1SHerbert Xue deprecated="not deprecated"> 2895*dc5640d1SHerbert Xue <doc> 2896*dc5640d1SHerbert Xue <![CDATA[Returns all non-assisted dependencies required to construct and inject 2897*dc5640d1SHerbert Xue the implementation.]]> 2898*dc5640d1SHerbert Xue </doc> 2899*dc5640d1SHerbert Xue </method> 2900*dc5640d1SHerbert Xue <doc> 2901*dc5640d1SHerbert Xue <![CDATA[Details about how a method in an assisted inject factory will be assisted. 2902*dc5640d1SHerbert Xue 2903*dc5640d1SHerbert Xue @since 3.0 2904*dc5640d1SHerbert Xue @author [email protected] (Ramakrishna Rajanna)]]> 2905*dc5640d1SHerbert Xue </doc> 2906*dc5640d1SHerbert Xue </interface> 2907*dc5640d1SHerbert Xue <!-- end interface com.google.inject.assistedinject.AssistedMethod --> 2908*dc5640d1SHerbert Xue <!-- start class com.google.inject.assistedinject.FactoryModuleBuilder --> 2909*dc5640d1SHerbert Xue <class name="FactoryModuleBuilder" extends="java.lang.Object" 2910*dc5640d1SHerbert Xue abstract="false" 2911*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 2912*dc5640d1SHerbert Xue deprecated="not deprecated"> 2913*dc5640d1SHerbert Xue <constructor name="FactoryModuleBuilder" 2914*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2915*dc5640d1SHerbert Xue deprecated="not deprecated"> 2916*dc5640d1SHerbert Xue </constructor> 2917*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2918*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2919*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2920*dc5640d1SHerbert Xue deprecated="not deprecated"> 2921*dc5640d1SHerbert Xue <param name="source" type="java.lang.Class<T>"/> 2922*dc5640d1SHerbert Xue <param name="target" type="java.lang.Class<? extends T>"/> 2923*dc5640d1SHerbert Xue <doc> 2924*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2925*dc5640d1SHerbert Xue </doc> 2926*dc5640d1SHerbert Xue </method> 2927*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2928*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2929*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2930*dc5640d1SHerbert Xue deprecated="not deprecated"> 2931*dc5640d1SHerbert Xue <param name="source" type="java.lang.Class<T>"/> 2932*dc5640d1SHerbert Xue <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2933*dc5640d1SHerbert Xue <doc> 2934*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2935*dc5640d1SHerbert Xue </doc> 2936*dc5640d1SHerbert Xue </method> 2937*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2938*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2939*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2940*dc5640d1SHerbert Xue deprecated="not deprecated"> 2941*dc5640d1SHerbert Xue <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2942*dc5640d1SHerbert Xue <param name="target" type="java.lang.Class<? extends T>"/> 2943*dc5640d1SHerbert Xue <doc> 2944*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2945*dc5640d1SHerbert Xue </doc> 2946*dc5640d1SHerbert Xue </method> 2947*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2948*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2949*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2950*dc5640d1SHerbert Xue deprecated="not deprecated"> 2951*dc5640d1SHerbert Xue <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2952*dc5640d1SHerbert Xue <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2953*dc5640d1SHerbert Xue <doc> 2954*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2955*dc5640d1SHerbert Xue </doc> 2956*dc5640d1SHerbert Xue </method> 2957*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2958*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2959*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2960*dc5640d1SHerbert Xue deprecated="not deprecated"> 2961*dc5640d1SHerbert Xue <param name="source" type="java.lang.Class<T>"/> 2962*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 2963*dc5640d1SHerbert Xue <param name="target" type="java.lang.Class<? extends T>"/> 2964*dc5640d1SHerbert Xue <doc> 2965*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2966*dc5640d1SHerbert Xue </doc> 2967*dc5640d1SHerbert Xue </method> 2968*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2969*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2970*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2971*dc5640d1SHerbert Xue deprecated="not deprecated"> 2972*dc5640d1SHerbert Xue <param name="source" type="java.lang.Class<T>"/> 2973*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 2974*dc5640d1SHerbert Xue <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2975*dc5640d1SHerbert Xue <doc> 2976*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2977*dc5640d1SHerbert Xue </doc> 2978*dc5640d1SHerbert Xue </method> 2979*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2980*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2981*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2982*dc5640d1SHerbert Xue deprecated="not deprecated"> 2983*dc5640d1SHerbert Xue <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2984*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 2985*dc5640d1SHerbert Xue <param name="target" type="java.lang.Class<? extends T>"/> 2986*dc5640d1SHerbert Xue <doc> 2987*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2988*dc5640d1SHerbert Xue </doc> 2989*dc5640d1SHerbert Xue </method> 2990*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 2991*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 2992*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 2993*dc5640d1SHerbert Xue deprecated="not deprecated"> 2994*dc5640d1SHerbert Xue <param name="source" type="com.google.inject.TypeLiteral<T>"/> 2995*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 2996*dc5640d1SHerbert Xue <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 2997*dc5640d1SHerbert Xue <doc> 2998*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 2999*dc5640d1SHerbert Xue </doc> 3000*dc5640d1SHerbert Xue </method> 3001*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 3002*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3003*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3004*dc5640d1SHerbert Xue deprecated="not deprecated"> 3005*dc5640d1SHerbert Xue <param name="source" type="java.lang.Class<T>"/> 3006*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3007*dc5640d1SHerbert Xue <param name="target" type="java.lang.Class<? extends T>"/> 3008*dc5640d1SHerbert Xue <doc> 3009*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3010*dc5640d1SHerbert Xue </doc> 3011*dc5640d1SHerbert Xue </method> 3012*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 3013*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3014*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3015*dc5640d1SHerbert Xue deprecated="not deprecated"> 3016*dc5640d1SHerbert Xue <param name="source" type="java.lang.Class<T>"/> 3017*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3018*dc5640d1SHerbert Xue <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 3019*dc5640d1SHerbert Xue <doc> 3020*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3021*dc5640d1SHerbert Xue </doc> 3022*dc5640d1SHerbert Xue </method> 3023*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 3024*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3025*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3026*dc5640d1SHerbert Xue deprecated="not deprecated"> 3027*dc5640d1SHerbert Xue <param name="source" type="com.google.inject.TypeLiteral<T>"/> 3028*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3029*dc5640d1SHerbert Xue <param name="target" type="java.lang.Class<? extends T>"/> 3030*dc5640d1SHerbert Xue <doc> 3031*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3032*dc5640d1SHerbert Xue </doc> 3033*dc5640d1SHerbert Xue </method> 3034*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 3035*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3036*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3037*dc5640d1SHerbert Xue deprecated="not deprecated"> 3038*dc5640d1SHerbert Xue <param name="source" type="com.google.inject.TypeLiteral<T>"/> 3039*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3040*dc5640d1SHerbert Xue <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 3041*dc5640d1SHerbert Xue <doc> 3042*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3043*dc5640d1SHerbert Xue </doc> 3044*dc5640d1SHerbert Xue </method> 3045*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 3046*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3047*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3048*dc5640d1SHerbert Xue deprecated="not deprecated"> 3049*dc5640d1SHerbert Xue <param name="source" type="com.google.inject.Key<T>"/> 3050*dc5640d1SHerbert Xue <param name="target" type="java.lang.Class<? extends T>"/> 3051*dc5640d1SHerbert Xue <doc> 3052*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3053*dc5640d1SHerbert Xue </doc> 3054*dc5640d1SHerbert Xue </method> 3055*dc5640d1SHerbert Xue <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder" 3056*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3057*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3058*dc5640d1SHerbert Xue deprecated="not deprecated"> 3059*dc5640d1SHerbert Xue <param name="source" type="com.google.inject.Key<T>"/> 3060*dc5640d1SHerbert Xue <param name="target" type="com.google.inject.TypeLiteral<? extends T>"/> 3061*dc5640d1SHerbert Xue <doc> 3062*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3063*dc5640d1SHerbert Xue </doc> 3064*dc5640d1SHerbert Xue </method> 3065*dc5640d1SHerbert Xue <method name="build" return="com.google.inject.Module" 3066*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3067*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3068*dc5640d1SHerbert Xue deprecated="not deprecated"> 3069*dc5640d1SHerbert Xue <param name="factoryInterface" type="java.lang.Class<F>"/> 3070*dc5640d1SHerbert Xue <doc> 3071*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3072*dc5640d1SHerbert Xue </doc> 3073*dc5640d1SHerbert Xue </method> 3074*dc5640d1SHerbert Xue <method name="build" return="com.google.inject.Module" 3075*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3076*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3077*dc5640d1SHerbert Xue deprecated="not deprecated"> 3078*dc5640d1SHerbert Xue <param name="factoryInterface" type="com.google.inject.TypeLiteral<F>"/> 3079*dc5640d1SHerbert Xue <doc> 3080*dc5640d1SHerbert Xue <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]> 3081*dc5640d1SHerbert Xue </doc> 3082*dc5640d1SHerbert Xue </method> 3083*dc5640d1SHerbert Xue <method name="build" return="com.google.inject.Module" 3084*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3085*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3086*dc5640d1SHerbert Xue deprecated="not deprecated"> 3087*dc5640d1SHerbert Xue <param name="factoryInterface" type="com.google.inject.Key<F>"/> 3088*dc5640d1SHerbert Xue </method> 3089*dc5640d1SHerbert Xue <doc> 3090*dc5640d1SHerbert Xue <![CDATA[Provides a factory that combines the caller's arguments with injector-supplied values to 3091*dc5640d1SHerbert Xue construct objects. 3092*dc5640d1SHerbert Xue 3093*dc5640d1SHerbert Xue <h3>Defining a factory</h3> 3094*dc5640d1SHerbert Xue Create an interface whose methods return the constructed type, or any of its supertypes. The 3095*dc5640d1SHerbert Xue method's parameters are the arguments required to build the constructed type. 3096*dc5640d1SHerbert Xue 3097*dc5640d1SHerbert Xue <pre>public interface PaymentFactory { 3098*dc5640d1SHerbert Xue Payment create(Date startDate, Money amount); 3099*dc5640d1SHerbert Xue }</pre> 3100*dc5640d1SHerbert Xue 3101*dc5640d1SHerbert Xue You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i> 3102*dc5640d1SHerbert Xue or <i>newPayment</i>. 3103*dc5640d1SHerbert Xue 3104*dc5640d1SHerbert Xue <h3>Creating a type that accepts factory parameters</h3> 3105*dc5640d1SHerbert Xue {@code constructedType} is a concrete class with an {@literal @}{@link com.google.inject.Inject 3106*dc5640d1SHerbert Xue Inject}-annotated constructor. In addition to injector-supplied parameters, the constructor 3107*dc5640d1SHerbert Xue should have parameters that match each of the factory method's parameters. Each factory-supplied 3108*dc5640d1SHerbert Xue parameter requires an {@literal @}{@link Assisted} annotation. This serves to document that the 3109*dc5640d1SHerbert Xue parameter is not bound by your application's modules. 3110*dc5640d1SHerbert Xue 3111*dc5640d1SHerbert Xue <pre>public class RealPayment implements Payment { 3112*dc5640d1SHerbert Xue {@literal @}Inject 3113*dc5640d1SHerbert Xue public RealPayment( 3114*dc5640d1SHerbert Xue CreditService creditService, 3115*dc5640d1SHerbert Xue AuthService authService, 3116*dc5640d1SHerbert Xue <strong>{@literal @}Assisted Date startDate</strong>, 3117*dc5640d1SHerbert Xue <strong>{@literal @}Assisted Money amount</strong>) { 3118*dc5640d1SHerbert Xue ... 3119*dc5640d1SHerbert Xue } 3120*dc5640d1SHerbert Xue }</pre> 3121*dc5640d1SHerbert Xue 3122*dc5640d1SHerbert Xue <h3>Multiple factory methods for the same type</h3> 3123*dc5640d1SHerbert Xue If the factory contains many methods that return the same type, you can create multiple 3124*dc5640d1SHerbert Xue constructors in your concrete class, each constructor marked with with 3125*dc5640d1SHerbert Xue {@literal @}{@link AssistedInject}, in order to match the different parameters types of the 3126*dc5640d1SHerbert Xue factory methods. 3127*dc5640d1SHerbert Xue 3128*dc5640d1SHerbert Xue <pre>public interface PaymentFactory { 3129*dc5640d1SHerbert Xue Payment create(Date startDate, Money amount); 3130*dc5640d1SHerbert Xue Payment createWithoutDate(Money amount); 3131*dc5640d1SHerbert Xue } 3132*dc5640d1SHerbert Xue 3133*dc5640d1SHerbert Xue public class RealPayment implements Payment { 3134*dc5640d1SHerbert Xue {@literal @}AssistedInject 3135*dc5640d1SHerbert Xue public RealPayment( 3136*dc5640d1SHerbert Xue CreditService creditService, 3137*dc5640d1SHerbert Xue AuthService authService, 3138*dc5640d1SHerbert Xue <strong>{@literal @}Assisted Date startDate</strong>, 3139*dc5640d1SHerbert Xue <strong>{@literal @}Assisted Money amount</strong>) { 3140*dc5640d1SHerbert Xue ... 3141*dc5640d1SHerbert Xue } 3142*dc5640d1SHerbert Xue 3143*dc5640d1SHerbert Xue {@literal @}AssistedInject 3144*dc5640d1SHerbert Xue public RealPayment( 3145*dc5640d1SHerbert Xue CreditService creditService, 3146*dc5640d1SHerbert Xue AuthService authService, 3147*dc5640d1SHerbert Xue <strong>{@literal @}Assisted Money amount</strong>) { 3148*dc5640d1SHerbert Xue ... 3149*dc5640d1SHerbert Xue } 3150*dc5640d1SHerbert Xue }</pre> 3151*dc5640d1SHerbert Xue 3152*dc5640d1SHerbert Xue <h3>Configuring simple factories</h3> 3153*dc5640d1SHerbert Xue In your {@link Module module}, install a {@code FactoryModuleBuilder} that creates the 3154*dc5640d1SHerbert Xue factory: 3155*dc5640d1SHerbert Xue 3156*dc5640d1SHerbert Xue <pre>install(new FactoryModuleBuilder() 3157*dc5640d1SHerbert Xue .implement(Payment.class, RealPayment.class) 3158*dc5640d1SHerbert Xue .build(PaymentFactory.class));</pre> 3159*dc5640d1SHerbert Xue 3160*dc5640d1SHerbert Xue As a side-effect of this binding, Guice will inject the factory to initialize it for use. The 3161*dc5640d1SHerbert Xue factory cannot be used until the injector has been initialized. 3162*dc5640d1SHerbert Xue 3163*dc5640d1SHerbert Xue <h3>Configuring complex factories</h3> 3164*dc5640d1SHerbert Xue Factories can create an arbitrary number of objects, one per each method. Each factory 3165*dc5640d1SHerbert Xue method can be configured using <code>.implement</code>. 3166*dc5640d1SHerbert Xue 3167*dc5640d1SHerbert Xue <pre>public interface OrderFactory { 3168*dc5640d1SHerbert Xue Payment create(Date startDate, Money amount); 3169*dc5640d1SHerbert Xue Shipment create(Customer customer, Item item); 3170*dc5640d1SHerbert Xue Receipt create(Payment payment, Shipment shipment); 3171*dc5640d1SHerbert Xue } 3172*dc5640d1SHerbert Xue 3173*dc5640d1SHerbert Xue [...] 3174*dc5640d1SHerbert Xue 3175*dc5640d1SHerbert Xue install(new FactoryModuleBuilder() 3176*dc5640d1SHerbert Xue .implement(Payment.class, RealPayment.class) 3177*dc5640d1SHerbert Xue // excluding .implement for Shipment means the implementation class 3178*dc5640d1SHerbert Xue // will be 'Shipment' itself, which is legal if it's not an interface. 3179*dc5640d1SHerbert Xue .implement(Receipt.class, RealReceipt.class) 3180*dc5640d1SHerbert Xue .build(OrderFactory.class));</pre> 3181*dc5640d1SHerbert Xue </pre> 3182*dc5640d1SHerbert Xue 3183*dc5640d1SHerbert Xue <h3>Using the factory</h3> 3184*dc5640d1SHerbert Xue Inject your factory into your application classes. When you use the factory, your arguments 3185*dc5640d1SHerbert Xue will be combined with values from the injector to construct an instance. 3186*dc5640d1SHerbert Xue 3187*dc5640d1SHerbert Xue <pre>public class PaymentAction { 3188*dc5640d1SHerbert Xue {@literal @}Inject private PaymentFactory paymentFactory; 3189*dc5640d1SHerbert Xue 3190*dc5640d1SHerbert Xue public void doPayment(Money amount) { 3191*dc5640d1SHerbert Xue Payment payment = paymentFactory.create(new Date(), amount); 3192*dc5640d1SHerbert Xue payment.apply(); 3193*dc5640d1SHerbert Xue } 3194*dc5640d1SHerbert Xue }</pre> 3195*dc5640d1SHerbert Xue 3196*dc5640d1SHerbert Xue <h3>Making parameter types distinct</h3> 3197*dc5640d1SHerbert Xue The types of the factory method's parameters must be distinct. To use multiple parameters of 3198*dc5640d1SHerbert Xue the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the 3199*dc5640d1SHerbert Xue parameters. The names must be applied to the factory method's parameters: 3200*dc5640d1SHerbert Xue 3201*dc5640d1SHerbert Xue <pre>public interface PaymentFactory { 3202*dc5640d1SHerbert Xue Payment create( 3203*dc5640d1SHerbert Xue <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 3204*dc5640d1SHerbert Xue <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 3205*dc5640d1SHerbert Xue Money amount); 3206*dc5640d1SHerbert Xue } </pre> 3207*dc5640d1SHerbert Xue 3208*dc5640d1SHerbert Xue ...and to the concrete type's constructor parameters: 3209*dc5640d1SHerbert Xue 3210*dc5640d1SHerbert Xue <pre>public class RealPayment implements Payment { 3211*dc5640d1SHerbert Xue {@literal @}Inject 3212*dc5640d1SHerbert Xue public RealPayment( 3213*dc5640d1SHerbert Xue CreditService creditService, 3214*dc5640d1SHerbert Xue AuthService authService, 3215*dc5640d1SHerbert Xue <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 3216*dc5640d1SHerbert Xue <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 3217*dc5640d1SHerbert Xue <strong>{@literal @}Assisted</strong> Money amount) { 3218*dc5640d1SHerbert Xue ... 3219*dc5640d1SHerbert Xue } 3220*dc5640d1SHerbert Xue }</pre> 3221*dc5640d1SHerbert Xue 3222*dc5640d1SHerbert Xue <h3>Values are created by Guice</h3> 3223*dc5640d1SHerbert Xue Returned factories use child injectors to create values. The values are eligible for method 3224*dc5640d1SHerbert Xue interception. In addition, {@literal @}{@literal Inject} members will be injected before they are 3225*dc5640d1SHerbert Xue returned. 3226*dc5640d1SHerbert Xue 3227*dc5640d1SHerbert Xue <h3>More configuration options</h3> 3228*dc5640d1SHerbert Xue In addition to simply specifying an implementation class for any returned type, factories' return 3229*dc5640d1SHerbert Xue values can be automatic or can be configured to use annotations: 3230*dc5640d1SHerbert Xue <p/> 3231*dc5640d1SHerbert Xue If you just want to return the types specified in the factory, do not configure any 3232*dc5640d1SHerbert Xue implementations: 3233*dc5640d1SHerbert Xue 3234*dc5640d1SHerbert Xue <pre>public interface FruitFactory { 3235*dc5640d1SHerbert Xue Apple getApple(Color color); 3236*dc5640d1SHerbert Xue } 3237*dc5640d1SHerbert Xue ... 3238*dc5640d1SHerbert Xue protected void configure() { 3239*dc5640d1SHerbert Xue install(new FactoryModuleBuilder().build(FruitFactory.class)); 3240*dc5640d1SHerbert Xue }</pre> 3241*dc5640d1SHerbert Xue 3242*dc5640d1SHerbert Xue Note that any type returned by the factory in this manner needs to be an implementation class. 3243*dc5640d1SHerbert Xue <p/> 3244*dc5640d1SHerbert Xue To return two different implementations for the same interface from your factory, use binding 3245*dc5640d1SHerbert Xue annotations on your return types: 3246*dc5640d1SHerbert Xue 3247*dc5640d1SHerbert Xue <pre>interface CarFactory { 3248*dc5640d1SHerbert Xue {@literal @}Named("fast") Car getFastCar(Color color); 3249*dc5640d1SHerbert Xue {@literal @}Named("clean") Car getCleanCar(Color color); 3250*dc5640d1SHerbert Xue } 3251*dc5640d1SHerbert Xue ... 3252*dc5640d1SHerbert Xue protected void configure() { 3253*dc5640d1SHerbert Xue install(new FactoryModuleBuilder() 3254*dc5640d1SHerbert Xue .implement(Car.class, Names.named("fast"), Porsche.class) 3255*dc5640d1SHerbert Xue .implement(Car.class, Names.named("clean"), Prius.class) 3256*dc5640d1SHerbert Xue .build(CarFactory.class)); 3257*dc5640d1SHerbert Xue }</pre> 3258*dc5640d1SHerbert Xue 3259*dc5640d1SHerbert Xue <h3>Implementation limitations</h3> 3260*dc5640d1SHerbert Xue As a limitation of the implementation, it is prohibited to declare a factory method that 3261*dc5640d1SHerbert Xue accepts a {@code Provider} as one of its arguments. 3262*dc5640d1SHerbert Xue 3263*dc5640d1SHerbert Xue @since 3.0 3264*dc5640d1SHerbert Xue @author [email protected] (Peter Schmitt)]]> 3265*dc5640d1SHerbert Xue </doc> 3266*dc5640d1SHerbert Xue </class> 3267*dc5640d1SHerbert Xue <!-- end class com.google.inject.assistedinject.FactoryModuleBuilder --> 3268*dc5640d1SHerbert Xue <!-- start class com.google.inject.assistedinject.FactoryProvider --> 3269*dc5640d1SHerbert Xue <class name="FactoryProvider" extends="java.lang.Object" 3270*dc5640d1SHerbert Xue abstract="false" 3271*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3272*dc5640d1SHerbert Xue deprecated="use {@link FactoryModuleBuilder} instead."> 3273*dc5640d1SHerbert Xue <implements name="com.google.inject.Provider<F>"/> 3274*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 3275*dc5640d1SHerbert Xue <method name="newFactory" return="com.google.inject.Provider<F>" 3276*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3277*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3278*dc5640d1SHerbert Xue deprecated="not deprecated"> 3279*dc5640d1SHerbert Xue <param name="factoryType" type="java.lang.Class<F>"/> 3280*dc5640d1SHerbert Xue <param name="implementationType" type="java.lang.Class<?>"/> 3281*dc5640d1SHerbert Xue </method> 3282*dc5640d1SHerbert Xue <method name="newFactory" return="com.google.inject.Provider<F>" 3283*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3284*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3285*dc5640d1SHerbert Xue deprecated="not deprecated"> 3286*dc5640d1SHerbert Xue <param name="factoryType" type="com.google.inject.TypeLiteral<F>"/> 3287*dc5640d1SHerbert Xue <param name="implementationType" type="com.google.inject.TypeLiteral<?>"/> 3288*dc5640d1SHerbert Xue </method> 3289*dc5640d1SHerbert Xue <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 3290*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3291*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3292*dc5640d1SHerbert Xue deprecated="not deprecated"> 3293*dc5640d1SHerbert Xue </method> 3294*dc5640d1SHerbert Xue <method name="get" return="F" 3295*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3296*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3297*dc5640d1SHerbert Xue deprecated="not deprecated"> 3298*dc5640d1SHerbert Xue </method> 3299*dc5640d1SHerbert Xue <method name="hashCode" return="int" 3300*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3301*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3302*dc5640d1SHerbert Xue deprecated="not deprecated"> 3303*dc5640d1SHerbert Xue </method> 3304*dc5640d1SHerbert Xue <method name="equals" return="boolean" 3305*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3306*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3307*dc5640d1SHerbert Xue deprecated="not deprecated"> 3308*dc5640d1SHerbert Xue <param name="obj" type="java.lang.Object"/> 3309*dc5640d1SHerbert Xue </method> 3310*dc5640d1SHerbert Xue <doc> 3311*dc5640d1SHerbert Xue <![CDATA[<strong>Obsolete.</strong> Prefer {@link FactoryModuleBuilder} for its more concise API and 3312*dc5640d1SHerbert Xue additional capability. 3313*dc5640d1SHerbert Xue 3314*dc5640d1SHerbert Xue <p>Provides a factory that combines the caller's arguments with injector-supplied values to 3315*dc5640d1SHerbert Xue construct objects. 3316*dc5640d1SHerbert Xue 3317*dc5640d1SHerbert Xue <h3>Defining a factory</h3> 3318*dc5640d1SHerbert Xue Create an interface whose methods return the constructed type, or any of its supertypes. The 3319*dc5640d1SHerbert Xue method's parameters are the arguments required to build the constructed type. 3320*dc5640d1SHerbert Xue <pre>public interface PaymentFactory { 3321*dc5640d1SHerbert Xue Payment create(Date startDate, Money amount); 3322*dc5640d1SHerbert Xue }</pre> 3323*dc5640d1SHerbert Xue You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i> 3324*dc5640d1SHerbert Xue or <i>newPayment</i>. 3325*dc5640d1SHerbert Xue 3326*dc5640d1SHerbert Xue <h3>Creating a type that accepts factory parameters</h3> 3327*dc5640d1SHerbert Xue {@code constructedType} is a concrete class with an {@literal @}{@link Inject}-annotated 3328*dc5640d1SHerbert Xue constructor. In addition to injector-supplied parameters, the constructor should have 3329*dc5640d1SHerbert Xue parameters that match each of the factory method's parameters. Each factory-supplied parameter 3330*dc5640d1SHerbert Xue requires an {@literal @}{@link Assisted} annotation. This serves to document that the parameter 3331*dc5640d1SHerbert Xue is not bound by your application's modules. 3332*dc5640d1SHerbert Xue <pre>public class RealPayment implements Payment { 3333*dc5640d1SHerbert Xue {@literal @}Inject 3334*dc5640d1SHerbert Xue public RealPayment( 3335*dc5640d1SHerbert Xue CreditService creditService, 3336*dc5640d1SHerbert Xue AuthService authService, 3337*dc5640d1SHerbert Xue <strong>{@literal @}Assisted Date startDate</strong>, 3338*dc5640d1SHerbert Xue <strong>{@literal @}Assisted Money amount</strong>) { 3339*dc5640d1SHerbert Xue ... 3340*dc5640d1SHerbert Xue } 3341*dc5640d1SHerbert Xue }</pre> 3342*dc5640d1SHerbert Xue Any parameter that permits a null value should also be annotated {@code @Nullable}. 3343*dc5640d1SHerbert Xue 3344*dc5640d1SHerbert Xue <h3>Configuring factories</h3> 3345*dc5640d1SHerbert Xue In your {@link com.google.inject.Module module}, bind the factory interface to the returned 3346*dc5640d1SHerbert Xue factory: 3347*dc5640d1SHerbert Xue <pre>bind(PaymentFactory.class).toProvider( 3348*dc5640d1SHerbert Xue FactoryProvider.newFactory(PaymentFactory.class, RealPayment.class));</pre> 3349*dc5640d1SHerbert Xue As a side-effect of this binding, Guice will inject the factory to initialize it for use. The 3350*dc5640d1SHerbert Xue factory cannot be used until the injector has been initialized. 3351*dc5640d1SHerbert Xue 3352*dc5640d1SHerbert Xue <h3>Using the factory</h3> 3353*dc5640d1SHerbert Xue Inject your factory into your application classes. When you use the factory, your arguments 3354*dc5640d1SHerbert Xue will be combined with values from the injector to construct an instance. 3355*dc5640d1SHerbert Xue <pre>public class PaymentAction { 3356*dc5640d1SHerbert Xue {@literal @}Inject private PaymentFactory paymentFactory; 3357*dc5640d1SHerbert Xue 3358*dc5640d1SHerbert Xue public void doPayment(Money amount) { 3359*dc5640d1SHerbert Xue Payment payment = paymentFactory.create(new Date(), amount); 3360*dc5640d1SHerbert Xue payment.apply(); 3361*dc5640d1SHerbert Xue } 3362*dc5640d1SHerbert Xue }</pre> 3363*dc5640d1SHerbert Xue 3364*dc5640d1SHerbert Xue <h3>Making parameter types distinct</h3> 3365*dc5640d1SHerbert Xue The types of the factory method's parameters must be distinct. To use multiple parameters of 3366*dc5640d1SHerbert Xue the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the 3367*dc5640d1SHerbert Xue parameters. The names must be applied to the factory method's parameters: 3368*dc5640d1SHerbert Xue 3369*dc5640d1SHerbert Xue <pre>public interface PaymentFactory { 3370*dc5640d1SHerbert Xue Payment create( 3371*dc5640d1SHerbert Xue <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 3372*dc5640d1SHerbert Xue <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 3373*dc5640d1SHerbert Xue Money amount); 3374*dc5640d1SHerbert Xue } </pre> 3375*dc5640d1SHerbert Xue ...and to the concrete type's constructor parameters: 3376*dc5640d1SHerbert Xue <pre>public class RealPayment implements Payment { 3377*dc5640d1SHerbert Xue {@literal @}Inject 3378*dc5640d1SHerbert Xue public RealPayment( 3379*dc5640d1SHerbert Xue CreditService creditService, 3380*dc5640d1SHerbert Xue AuthService authService, 3381*dc5640d1SHerbert Xue <strong>{@literal @}Assisted("startDate")</strong> Date startDate, 3382*dc5640d1SHerbert Xue <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate, 3383*dc5640d1SHerbert Xue <strong>{@literal @}Assisted</strong> Money amount) { 3384*dc5640d1SHerbert Xue ... 3385*dc5640d1SHerbert Xue } 3386*dc5640d1SHerbert Xue }</pre> 3387*dc5640d1SHerbert Xue 3388*dc5640d1SHerbert Xue <h3>Values are created by Guice</h3> 3389*dc5640d1SHerbert Xue Returned factories use child injectors to create values. The values are eligible for method 3390*dc5640d1SHerbert Xue interception. In addition, {@literal @}{@literal Inject} members will be injected before they are 3391*dc5640d1SHerbert Xue returned. 3392*dc5640d1SHerbert Xue 3393*dc5640d1SHerbert Xue <h3>Backwards compatibility using {@literal @}AssistedInject</h3> 3394*dc5640d1SHerbert Xue Instead of the {@literal @}Inject annotation, you may annotate the constructed classes with 3395*dc5640d1SHerbert Xue {@literal @}{@link AssistedInject}. This triggers a limited backwards-compatability mode. 3396*dc5640d1SHerbert Xue 3397*dc5640d1SHerbert Xue <p>Instead of matching factory method arguments to constructor parameters using their names, the 3398*dc5640d1SHerbert Xue <strong>parameters are matched by their order</strong>. The first factory method argument is 3399*dc5640d1SHerbert Xue used for the first {@literal @}Assisted constructor parameter, etc.. Annotation names have no 3400*dc5640d1SHerbert Xue effect. 3401*dc5640d1SHerbert Xue 3402*dc5640d1SHerbert Xue <p>Returned values are <strong>not created by Guice</strong>. These types are not eligible for 3403*dc5640d1SHerbert Xue method interception. They do receive post-construction member injection. 3404*dc5640d1SHerbert Xue 3405*dc5640d1SHerbert Xue @param <F> The factory interface 3406*dc5640d1SHerbert Xue 3407*dc5640d1SHerbert Xue @author [email protected] (Jerome Mourits) 3408*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 3409*dc5640d1SHerbert Xue @author [email protected] (Daniel Martin) 3410*dc5640d1SHerbert Xue 3411*dc5640d1SHerbert Xue @deprecated use {@link FactoryModuleBuilder} instead.]]> 3412*dc5640d1SHerbert Xue </doc> 3413*dc5640d1SHerbert Xue </class> 3414*dc5640d1SHerbert Xue <!-- end class com.google.inject.assistedinject.FactoryProvider --> 3415*dc5640d1SHerbert Xue</package> 3416*dc5640d1SHerbert Xue<package name="com.google.inject.binder"> 3417*dc5640d1SHerbert Xue <!-- start interface com.google.inject.binder.AnnotatedBindingBuilder --> 3418*dc5640d1SHerbert Xue <interface name="AnnotatedBindingBuilder" abstract="true" 3419*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3420*dc5640d1SHerbert Xue deprecated="not deprecated"> 3421*dc5640d1SHerbert Xue <implements name="com.google.inject.binder.LinkedBindingBuilder<T>"/> 3422*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder<T>" 3423*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3424*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3425*dc5640d1SHerbert Xue deprecated="not deprecated"> 3426*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3427*dc5640d1SHerbert Xue <doc> 3428*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3429*dc5640d1SHerbert Xue </doc> 3430*dc5640d1SHerbert Xue </method> 3431*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder<T>" 3432*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3433*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3434*dc5640d1SHerbert Xue deprecated="not deprecated"> 3435*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 3436*dc5640d1SHerbert Xue <doc> 3437*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3438*dc5640d1SHerbert Xue </doc> 3439*dc5640d1SHerbert Xue </method> 3440*dc5640d1SHerbert Xue <doc> 3441*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3442*dc5640d1SHerbert Xue 3443*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 3444*dc5640d1SHerbert Xue </doc> 3445*dc5640d1SHerbert Xue </interface> 3446*dc5640d1SHerbert Xue <!-- end interface com.google.inject.binder.AnnotatedBindingBuilder --> 3447*dc5640d1SHerbert Xue <!-- start interface com.google.inject.binder.AnnotatedConstantBindingBuilder --> 3448*dc5640d1SHerbert Xue <interface name="AnnotatedConstantBindingBuilder" abstract="true" 3449*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3450*dc5640d1SHerbert Xue deprecated="not deprecated"> 3451*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder" 3452*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3453*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3454*dc5640d1SHerbert Xue deprecated="not deprecated"> 3455*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3456*dc5640d1SHerbert Xue <doc> 3457*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3458*dc5640d1SHerbert Xue </doc> 3459*dc5640d1SHerbert Xue </method> 3460*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder" 3461*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3462*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3463*dc5640d1SHerbert Xue deprecated="not deprecated"> 3464*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 3465*dc5640d1SHerbert Xue <doc> 3466*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3467*dc5640d1SHerbert Xue </doc> 3468*dc5640d1SHerbert Xue </method> 3469*dc5640d1SHerbert Xue <doc> 3470*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3471*dc5640d1SHerbert Xue 3472*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 3473*dc5640d1SHerbert Xue </doc> 3474*dc5640d1SHerbert Xue </interface> 3475*dc5640d1SHerbert Xue <!-- end interface com.google.inject.binder.AnnotatedConstantBindingBuilder --> 3476*dc5640d1SHerbert Xue <!-- start interface com.google.inject.binder.AnnotatedElementBuilder --> 3477*dc5640d1SHerbert Xue <interface name="AnnotatedElementBuilder" abstract="true" 3478*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3479*dc5640d1SHerbert Xue deprecated="not deprecated"> 3480*dc5640d1SHerbert Xue <method name="annotatedWith" 3481*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3482*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3483*dc5640d1SHerbert Xue deprecated="not deprecated"> 3484*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3485*dc5640d1SHerbert Xue <doc> 3486*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3487*dc5640d1SHerbert Xue </doc> 3488*dc5640d1SHerbert Xue </method> 3489*dc5640d1SHerbert Xue <method name="annotatedWith" 3490*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3491*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3492*dc5640d1SHerbert Xue deprecated="not deprecated"> 3493*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 3494*dc5640d1SHerbert Xue <doc> 3495*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3496*dc5640d1SHerbert Xue </doc> 3497*dc5640d1SHerbert Xue </method> 3498*dc5640d1SHerbert Xue <doc> 3499*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3500*dc5640d1SHerbert Xue 3501*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 3502*dc5640d1SHerbert Xue @since 2.0]]> 3503*dc5640d1SHerbert Xue </doc> 3504*dc5640d1SHerbert Xue </interface> 3505*dc5640d1SHerbert Xue <!-- end interface com.google.inject.binder.AnnotatedElementBuilder --> 3506*dc5640d1SHerbert Xue <!-- start interface com.google.inject.binder.ConstantBindingBuilder --> 3507*dc5640d1SHerbert Xue <interface name="ConstantBindingBuilder" abstract="true" 3508*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3509*dc5640d1SHerbert Xue deprecated="not deprecated"> 3510*dc5640d1SHerbert Xue <method name="to" 3511*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3512*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3513*dc5640d1SHerbert Xue deprecated="not deprecated"> 3514*dc5640d1SHerbert Xue <param name="value" type="java.lang.String"/> 3515*dc5640d1SHerbert Xue <doc> 3516*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 3517*dc5640d1SHerbert Xue </doc> 3518*dc5640d1SHerbert Xue </method> 3519*dc5640d1SHerbert Xue <method name="to" 3520*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3521*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3522*dc5640d1SHerbert Xue deprecated="not deprecated"> 3523*dc5640d1SHerbert Xue <param name="value" type="int"/> 3524*dc5640d1SHerbert Xue <doc> 3525*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 3526*dc5640d1SHerbert Xue </doc> 3527*dc5640d1SHerbert Xue </method> 3528*dc5640d1SHerbert Xue <method name="to" 3529*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3530*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3531*dc5640d1SHerbert Xue deprecated="not deprecated"> 3532*dc5640d1SHerbert Xue <param name="value" type="long"/> 3533*dc5640d1SHerbert Xue <doc> 3534*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 3535*dc5640d1SHerbert Xue </doc> 3536*dc5640d1SHerbert Xue </method> 3537*dc5640d1SHerbert Xue <method name="to" 3538*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3539*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3540*dc5640d1SHerbert Xue deprecated="not deprecated"> 3541*dc5640d1SHerbert Xue <param name="value" type="boolean"/> 3542*dc5640d1SHerbert Xue <doc> 3543*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 3544*dc5640d1SHerbert Xue </doc> 3545*dc5640d1SHerbert Xue </method> 3546*dc5640d1SHerbert Xue <method name="to" 3547*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3548*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3549*dc5640d1SHerbert Xue deprecated="not deprecated"> 3550*dc5640d1SHerbert Xue <param name="value" type="double"/> 3551*dc5640d1SHerbert Xue <doc> 3552*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 3553*dc5640d1SHerbert Xue </doc> 3554*dc5640d1SHerbert Xue </method> 3555*dc5640d1SHerbert Xue <method name="to" 3556*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3557*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3558*dc5640d1SHerbert Xue deprecated="not deprecated"> 3559*dc5640d1SHerbert Xue <param name="value" type="float"/> 3560*dc5640d1SHerbert Xue <doc> 3561*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 3562*dc5640d1SHerbert Xue </doc> 3563*dc5640d1SHerbert Xue </method> 3564*dc5640d1SHerbert Xue <method name="to" 3565*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3566*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3567*dc5640d1SHerbert Xue deprecated="not deprecated"> 3568*dc5640d1SHerbert Xue <param name="value" type="short"/> 3569*dc5640d1SHerbert Xue <doc> 3570*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 3571*dc5640d1SHerbert Xue </doc> 3572*dc5640d1SHerbert Xue </method> 3573*dc5640d1SHerbert Xue <method name="to" 3574*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3575*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3576*dc5640d1SHerbert Xue deprecated="not deprecated"> 3577*dc5640d1SHerbert Xue <param name="value" type="char"/> 3578*dc5640d1SHerbert Xue <doc> 3579*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 3580*dc5640d1SHerbert Xue </doc> 3581*dc5640d1SHerbert Xue </method> 3582*dc5640d1SHerbert Xue <method name="to" 3583*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3584*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3585*dc5640d1SHerbert Xue deprecated="not deprecated"> 3586*dc5640d1SHerbert Xue <param name="value" type="byte"/> 3587*dc5640d1SHerbert Xue <doc> 3588*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value. 3589*dc5640d1SHerbert Xue 3590*dc5640d1SHerbert Xue @since 3.0]]> 3591*dc5640d1SHerbert Xue </doc> 3592*dc5640d1SHerbert Xue </method> 3593*dc5640d1SHerbert Xue <method name="to" 3594*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3595*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3596*dc5640d1SHerbert Xue deprecated="not deprecated"> 3597*dc5640d1SHerbert Xue <param name="value" type="java.lang.Class<?>"/> 3598*dc5640d1SHerbert Xue <doc> 3599*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 3600*dc5640d1SHerbert Xue </doc> 3601*dc5640d1SHerbert Xue </method> 3602*dc5640d1SHerbert Xue <method name="to" 3603*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3604*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3605*dc5640d1SHerbert Xue deprecated="not deprecated"> 3606*dc5640d1SHerbert Xue <param name="value" type="E extends java.lang.Enum<E>"/> 3607*dc5640d1SHerbert Xue <doc> 3608*dc5640d1SHerbert Xue <![CDATA[Binds constant to the given value.]]> 3609*dc5640d1SHerbert Xue </doc> 3610*dc5640d1SHerbert Xue </method> 3611*dc5640d1SHerbert Xue <doc> 3612*dc5640d1SHerbert Xue <![CDATA[Binds to a constant value.]]> 3613*dc5640d1SHerbert Xue </doc> 3614*dc5640d1SHerbert Xue </interface> 3615*dc5640d1SHerbert Xue <!-- end interface com.google.inject.binder.ConstantBindingBuilder --> 3616*dc5640d1SHerbert Xue <!-- start interface com.google.inject.binder.LinkedBindingBuilder --> 3617*dc5640d1SHerbert Xue <interface name="LinkedBindingBuilder" abstract="true" 3618*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3619*dc5640d1SHerbert Xue deprecated="not deprecated"> 3620*dc5640d1SHerbert Xue <implements name="com.google.inject.binder.ScopedBindingBuilder"/> 3621*dc5640d1SHerbert Xue <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 3622*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3623*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3624*dc5640d1SHerbert Xue deprecated="not deprecated"> 3625*dc5640d1SHerbert Xue <param name="implementation" type="java.lang.Class<? extends T>"/> 3626*dc5640d1SHerbert Xue <doc> 3627*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3628*dc5640d1SHerbert Xue </doc> 3629*dc5640d1SHerbert Xue </method> 3630*dc5640d1SHerbert Xue <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 3631*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3632*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3633*dc5640d1SHerbert Xue deprecated="not deprecated"> 3634*dc5640d1SHerbert Xue <param name="implementation" type="com.google.inject.TypeLiteral<? extends T>"/> 3635*dc5640d1SHerbert Xue <doc> 3636*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3637*dc5640d1SHerbert Xue </doc> 3638*dc5640d1SHerbert Xue </method> 3639*dc5640d1SHerbert Xue <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 3640*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3641*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3642*dc5640d1SHerbert Xue deprecated="not deprecated"> 3643*dc5640d1SHerbert Xue <param name="targetKey" type="com.google.inject.Key<? extends T>"/> 3644*dc5640d1SHerbert Xue <doc> 3645*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3646*dc5640d1SHerbert Xue </doc> 3647*dc5640d1SHerbert Xue </method> 3648*dc5640d1SHerbert Xue <method name="toInstance" 3649*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3650*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3651*dc5640d1SHerbert Xue deprecated="not deprecated"> 3652*dc5640d1SHerbert Xue <param name="instance" type="T"/> 3653*dc5640d1SHerbert Xue <doc> 3654*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3655*dc5640d1SHerbert Xue 3656*dc5640d1SHerbert Xue @see com.google.inject.Injector#injectMembers]]> 3657*dc5640d1SHerbert Xue </doc> 3658*dc5640d1SHerbert Xue </method> 3659*dc5640d1SHerbert Xue <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3660*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3661*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3662*dc5640d1SHerbert Xue deprecated="not deprecated"> 3663*dc5640d1SHerbert Xue <param name="provider" type="com.google.inject.Provider<? extends T>"/> 3664*dc5640d1SHerbert Xue <doc> 3665*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3666*dc5640d1SHerbert Xue 3667*dc5640d1SHerbert Xue @see com.google.inject.Injector#injectMembers]]> 3668*dc5640d1SHerbert Xue </doc> 3669*dc5640d1SHerbert Xue </method> 3670*dc5640d1SHerbert Xue <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3671*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3672*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3673*dc5640d1SHerbert Xue deprecated="not deprecated"> 3674*dc5640d1SHerbert Xue <param name="provider" type="javax.inject.Provider<? extends T>"/> 3675*dc5640d1SHerbert Xue <doc> 3676*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3677*dc5640d1SHerbert Xue 3678*dc5640d1SHerbert Xue @see com.google.inject.Injector#injectMembers 3679*dc5640d1SHerbert Xue @since 4.0]]> 3680*dc5640d1SHerbert Xue </doc> 3681*dc5640d1SHerbert Xue </method> 3682*dc5640d1SHerbert Xue <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3683*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3684*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3685*dc5640d1SHerbert Xue deprecated="not deprecated"> 3686*dc5640d1SHerbert Xue <param name="providerType" type="java.lang.Class<? extends javax.inject.Provider<? extends T>>"/> 3687*dc5640d1SHerbert Xue <doc> 3688*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3689*dc5640d1SHerbert Xue </doc> 3690*dc5640d1SHerbert Xue </method> 3691*dc5640d1SHerbert Xue <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3692*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3693*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3694*dc5640d1SHerbert Xue deprecated="not deprecated"> 3695*dc5640d1SHerbert Xue <param name="providerType" type="com.google.inject.TypeLiteral<? extends javax.inject.Provider<? extends T>>"/> 3696*dc5640d1SHerbert Xue <doc> 3697*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3698*dc5640d1SHerbert Xue </doc> 3699*dc5640d1SHerbert Xue </method> 3700*dc5640d1SHerbert Xue <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder" 3701*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3702*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3703*dc5640d1SHerbert Xue deprecated="not deprecated"> 3704*dc5640d1SHerbert Xue <param name="providerKey" type="com.google.inject.Key<? extends javax.inject.Provider<? extends T>>"/> 3705*dc5640d1SHerbert Xue <doc> 3706*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3707*dc5640d1SHerbert Xue </doc> 3708*dc5640d1SHerbert Xue </method> 3709*dc5640d1SHerbert Xue <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder" 3710*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3711*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3712*dc5640d1SHerbert Xue deprecated="not deprecated"> 3713*dc5640d1SHerbert Xue <param name="constructor" type="java.lang.reflect.Constructor<S>"/> 3714*dc5640d1SHerbert Xue <doc> 3715*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3716*dc5640d1SHerbert Xue 3717*dc5640d1SHerbert Xue @since 3.0]]> 3718*dc5640d1SHerbert Xue </doc> 3719*dc5640d1SHerbert Xue </method> 3720*dc5640d1SHerbert Xue <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder" 3721*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3722*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3723*dc5640d1SHerbert Xue deprecated="not deprecated"> 3724*dc5640d1SHerbert Xue <param name="constructor" type="java.lang.reflect.Constructor<S>"/> 3725*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<? extends S>"/> 3726*dc5640d1SHerbert Xue <doc> 3727*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3728*dc5640d1SHerbert Xue 3729*dc5640d1SHerbert Xue @since 3.0]]> 3730*dc5640d1SHerbert Xue </doc> 3731*dc5640d1SHerbert Xue </method> 3732*dc5640d1SHerbert Xue <doc> 3733*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3734*dc5640d1SHerbert Xue 3735*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 3736*dc5640d1SHerbert Xue </doc> 3737*dc5640d1SHerbert Xue </interface> 3738*dc5640d1SHerbert Xue <!-- end interface com.google.inject.binder.LinkedBindingBuilder --> 3739*dc5640d1SHerbert Xue <!-- start interface com.google.inject.binder.ScopedBindingBuilder --> 3740*dc5640d1SHerbert Xue <interface name="ScopedBindingBuilder" abstract="true" 3741*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3742*dc5640d1SHerbert Xue deprecated="not deprecated"> 3743*dc5640d1SHerbert Xue <method name="in" 3744*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3745*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3746*dc5640d1SHerbert Xue deprecated="not deprecated"> 3747*dc5640d1SHerbert Xue <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 3748*dc5640d1SHerbert Xue <doc> 3749*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3750*dc5640d1SHerbert Xue </doc> 3751*dc5640d1SHerbert Xue </method> 3752*dc5640d1SHerbert Xue <method name="in" 3753*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3754*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3755*dc5640d1SHerbert Xue deprecated="not deprecated"> 3756*dc5640d1SHerbert Xue <param name="scope" type="com.google.inject.Scope"/> 3757*dc5640d1SHerbert Xue <doc> 3758*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]> 3759*dc5640d1SHerbert Xue </doc> 3760*dc5640d1SHerbert Xue </method> 3761*dc5640d1SHerbert Xue <method name="asEagerSingleton" 3762*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3763*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3764*dc5640d1SHerbert Xue deprecated="not deprecated"> 3765*dc5640d1SHerbert Xue <doc> 3766*dc5640d1SHerbert Xue <![CDATA[Instructs the {@link com.google.inject.Injector} to eagerly initialize this 3767*dc5640d1SHerbert Xue singleton-scoped binding upon creation. Useful for application 3768*dc5640d1SHerbert Xue initialization logic. See the EDSL examples at 3769*dc5640d1SHerbert Xue {@link com.google.inject.Binder}.]]> 3770*dc5640d1SHerbert Xue </doc> 3771*dc5640d1SHerbert Xue </method> 3772*dc5640d1SHerbert Xue <doc> 3773*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}. 3774*dc5640d1SHerbert Xue 3775*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 3776*dc5640d1SHerbert Xue </doc> 3777*dc5640d1SHerbert Xue </interface> 3778*dc5640d1SHerbert Xue <!-- end interface com.google.inject.binder.ScopedBindingBuilder --> 3779*dc5640d1SHerbert Xue</package> 3780*dc5640d1SHerbert Xue<package name="com.google.inject.daggeradapter"> 3781*dc5640d1SHerbert Xue <!-- start class com.google.inject.daggeradapter.DaggerAdapter --> 3782*dc5640d1SHerbert Xue <class name="DaggerAdapter" extends="java.lang.Object" 3783*dc5640d1SHerbert Xue abstract="false" 3784*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 3785*dc5640d1SHerbert Xue deprecated="not deprecated"> 3786*dc5640d1SHerbert Xue <method name="from" return="com.google.inject.Module" 3787*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3788*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 3789*dc5640d1SHerbert Xue deprecated="not deprecated"> 3790*dc5640d1SHerbert Xue <param name="daggerModuleObjects" type="java.lang.Object[]"/> 3791*dc5640d1SHerbert Xue <doc> 3792*dc5640d1SHerbert Xue <![CDATA[Returns a guice module from a dagger module. 3793*dc5640d1SHerbert Xue 3794*dc5640d1SHerbert Xue <p>Note: At present, it does not honor {@code @Module(includes=...)} directives.]]> 3795*dc5640d1SHerbert Xue </doc> 3796*dc5640d1SHerbert Xue </method> 3797*dc5640d1SHerbert Xue <doc> 3798*dc5640d1SHerbert Xue <![CDATA[A utility to adapt classes annotated with {@link @dagger.Module} such that their 3799*dc5640d1SHerbert Xue {@link @dagger.Provides} methods can be properly invoked by Guice to perform their 3800*dc5640d1SHerbert Xue provision operations. 3801*dc5640d1SHerbert Xue 3802*dc5640d1SHerbert Xue <p>Simple example: <pre>{@code 3803*dc5640d1SHerbert Xue Guice.createInjector(...other modules..., DaggerAdapter.from(new SomeDaggerAdapter())); 3804*dc5640d1SHerbert Xue }</pre> 3805*dc5640d1SHerbert Xue 3806*dc5640d1SHerbert Xue <p>Some notes on usage and compatibility. 3807*dc5640d1SHerbert Xue <ul> 3808*dc5640d1SHerbert Xue <li>Dagger provider methods have a "SET_VALUES" provision mode not supported by Guice. 3809*dc5640d1SHerbert Xue <li>MapBindings are not yet implemented (pending). 3810*dc5640d1SHerbert Xue <li>Be careful about stateful modules. In contrast to Dagger (where components are 3811*dc5640d1SHerbert Xue expected to be recreated on-demand with new Module instances), Guice typically 3812*dc5640d1SHerbert Xue has a single injector with a long lifetime, so your module instance will be used 3813*dc5640d1SHerbert Xue throughout the lifetime of the entire app. 3814*dc5640d1SHerbert Xue <li>Dagger 1.x uses {@link @Singleton} for all scopes, including shorter-lived scopes 3815*dc5640d1SHerbert Xue like per-request or per-activity. Using modules written with Dagger 1.x usage 3816*dc5640d1SHerbert Xue in mind may result in mis-scoped objects. 3817*dc5640d1SHerbert Xue <li>Dagger 2.x supports custom scope annotations, but for use in Guice, a custom scope 3818*dc5640d1SHerbert Xue implementation must be registered in order to support the custom lifetime of that 3819*dc5640d1SHerbert Xue annotation. 3820*dc5640d1SHerbert Xue </ul> 3821*dc5640d1SHerbert Xue 3822*dc5640d1SHerbert Xue @author [email protected] (Christian Gruber)]]> 3823*dc5640d1SHerbert Xue </doc> 3824*dc5640d1SHerbert Xue </class> 3825*dc5640d1SHerbert Xue <!-- end class com.google.inject.daggeradapter.DaggerAdapter --> 3826*dc5640d1SHerbert Xue</package> 3827*dc5640d1SHerbert Xue<package name="com.google.inject.grapher"> 3828*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.AbstractInjectorGrapher --> 3829*dc5640d1SHerbert Xue <class name="AbstractInjectorGrapher" extends="java.lang.Object" 3830*dc5640d1SHerbert Xue abstract="true" 3831*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3832*dc5640d1SHerbert Xue deprecated="not deprecated"> 3833*dc5640d1SHerbert Xue <implements name="com.google.inject.grapher.InjectorGrapher"/> 3834*dc5640d1SHerbert Xue <constructor name="AbstractInjectorGrapher" 3835*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3836*dc5640d1SHerbert Xue deprecated="not deprecated"> 3837*dc5640d1SHerbert Xue </constructor> 3838*dc5640d1SHerbert Xue <constructor name="AbstractInjectorGrapher" type="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters" 3839*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3840*dc5640d1SHerbert Xue deprecated="not deprecated"> 3841*dc5640d1SHerbert Xue </constructor> 3842*dc5640d1SHerbert Xue <method name="graph" 3843*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3844*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 3845*dc5640d1SHerbert Xue deprecated="not deprecated"> 3846*dc5640d1SHerbert Xue <param name="injector" type="com.google.inject.Injector"/> 3847*dc5640d1SHerbert Xue <exception name="IOException" type="java.io.IOException"/> 3848*dc5640d1SHerbert Xue </method> 3849*dc5640d1SHerbert Xue <method name="graph" 3850*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3851*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 3852*dc5640d1SHerbert Xue deprecated="not deprecated"> 3853*dc5640d1SHerbert Xue <param name="injector" type="com.google.inject.Injector"/> 3854*dc5640d1SHerbert Xue <param name="root" type="java.util.Set<com.google.inject.Key<?>>"/> 3855*dc5640d1SHerbert Xue <exception name="IOException" type="java.io.IOException"/> 3856*dc5640d1SHerbert Xue </method> 3857*dc5640d1SHerbert Xue <method name="reset" 3858*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3859*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 3860*dc5640d1SHerbert Xue deprecated="not deprecated"> 3861*dc5640d1SHerbert Xue <exception name="IOException" type="java.io.IOException"/> 3862*dc5640d1SHerbert Xue <doc> 3863*dc5640d1SHerbert Xue <![CDATA[Resets the state of the grapher before rendering a new graph.]]> 3864*dc5640d1SHerbert Xue </doc> 3865*dc5640d1SHerbert Xue </method> 3866*dc5640d1SHerbert Xue <method name="newInterfaceNode" 3867*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3868*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 3869*dc5640d1SHerbert Xue deprecated="not deprecated"> 3870*dc5640d1SHerbert Xue <param name="node" type="com.google.inject.grapher.InterfaceNode"/> 3871*dc5640d1SHerbert Xue <exception name="IOException" type="java.io.IOException"/> 3872*dc5640d1SHerbert Xue <doc> 3873*dc5640d1SHerbert Xue <![CDATA[Adds a new interface node to the graph.]]> 3874*dc5640d1SHerbert Xue </doc> 3875*dc5640d1SHerbert Xue </method> 3876*dc5640d1SHerbert Xue <method name="newImplementationNode" 3877*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3878*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 3879*dc5640d1SHerbert Xue deprecated="not deprecated"> 3880*dc5640d1SHerbert Xue <param name="node" type="com.google.inject.grapher.ImplementationNode"/> 3881*dc5640d1SHerbert Xue <exception name="IOException" type="java.io.IOException"/> 3882*dc5640d1SHerbert Xue <doc> 3883*dc5640d1SHerbert Xue <![CDATA[Adds a new implementation node to the graph.]]> 3884*dc5640d1SHerbert Xue </doc> 3885*dc5640d1SHerbert Xue </method> 3886*dc5640d1SHerbert Xue <method name="newInstanceNode" 3887*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3888*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 3889*dc5640d1SHerbert Xue deprecated="not deprecated"> 3890*dc5640d1SHerbert Xue <param name="node" type="com.google.inject.grapher.InstanceNode"/> 3891*dc5640d1SHerbert Xue <exception name="IOException" type="java.io.IOException"/> 3892*dc5640d1SHerbert Xue <doc> 3893*dc5640d1SHerbert Xue <![CDATA[Adds a new instance node to the graph.]]> 3894*dc5640d1SHerbert Xue </doc> 3895*dc5640d1SHerbert Xue </method> 3896*dc5640d1SHerbert Xue <method name="newDependencyEdge" 3897*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3898*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 3899*dc5640d1SHerbert Xue deprecated="not deprecated"> 3900*dc5640d1SHerbert Xue <param name="edge" type="com.google.inject.grapher.DependencyEdge"/> 3901*dc5640d1SHerbert Xue <exception name="IOException" type="java.io.IOException"/> 3902*dc5640d1SHerbert Xue <doc> 3903*dc5640d1SHerbert Xue <![CDATA[Adds a new dependency edge to the graph.]]> 3904*dc5640d1SHerbert Xue </doc> 3905*dc5640d1SHerbert Xue </method> 3906*dc5640d1SHerbert Xue <method name="newBindingEdge" 3907*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3908*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 3909*dc5640d1SHerbert Xue deprecated="not deprecated"> 3910*dc5640d1SHerbert Xue <param name="edge" type="com.google.inject.grapher.BindingEdge"/> 3911*dc5640d1SHerbert Xue <exception name="IOException" type="java.io.IOException"/> 3912*dc5640d1SHerbert Xue <doc> 3913*dc5640d1SHerbert Xue <![CDATA[Adds a new binding edge to the graph.]]> 3914*dc5640d1SHerbert Xue </doc> 3915*dc5640d1SHerbert Xue </method> 3916*dc5640d1SHerbert Xue <method name="postProcess" 3917*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 3918*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 3919*dc5640d1SHerbert Xue deprecated="not deprecated"> 3920*dc5640d1SHerbert Xue <exception name="IOException" type="java.io.IOException"/> 3921*dc5640d1SHerbert Xue <doc> 3922*dc5640d1SHerbert Xue <![CDATA[Performs any post processing required after all nodes and edges have been added.]]> 3923*dc5640d1SHerbert Xue </doc> 3924*dc5640d1SHerbert Xue </method> 3925*dc5640d1SHerbert Xue <doc> 3926*dc5640d1SHerbert Xue <![CDATA[Abstract injector grapher that builds the dependency graph but doesn't render it. 3927*dc5640d1SHerbert Xue 3928*dc5640d1SHerbert Xue @author [email protected] (Bojan Djordjevic) 3929*dc5640d1SHerbert Xue @since 4.0]]> 3930*dc5640d1SHerbert Xue </doc> 3931*dc5640d1SHerbert Xue </class> 3932*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.AbstractInjectorGrapher --> 3933*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters --> 3934*dc5640d1SHerbert Xue <class name="AbstractInjectorGrapher.GrapherParameters" extends="java.lang.Object" 3935*dc5640d1SHerbert Xue abstract="false" 3936*dc5640d1SHerbert Xue static="true" final="true" visibility="public" 3937*dc5640d1SHerbert Xue deprecated="not deprecated"> 3938*dc5640d1SHerbert Xue <constructor name="GrapherParameters" 3939*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3940*dc5640d1SHerbert Xue deprecated="not deprecated"> 3941*dc5640d1SHerbert Xue </constructor> 3942*dc5640d1SHerbert Xue <method name="getRootKeySetCreator" return="com.google.inject.grapher.RootKeySetCreator" 3943*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3944*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3945*dc5640d1SHerbert Xue deprecated="not deprecated"> 3946*dc5640d1SHerbert Xue </method> 3947*dc5640d1SHerbert Xue <method name="setRootKeySetCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters" 3948*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3949*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3950*dc5640d1SHerbert Xue deprecated="not deprecated"> 3951*dc5640d1SHerbert Xue <param name="rootKeySetCreator" type="com.google.inject.grapher.RootKeySetCreator"/> 3952*dc5640d1SHerbert Xue </method> 3953*dc5640d1SHerbert Xue <method name="getAliasCreator" return="com.google.inject.grapher.AliasCreator" 3954*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3955*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3956*dc5640d1SHerbert Xue deprecated="not deprecated"> 3957*dc5640d1SHerbert Xue </method> 3958*dc5640d1SHerbert Xue <method name="setAliasCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters" 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="aliasCreator" type="com.google.inject.grapher.AliasCreator"/> 3963*dc5640d1SHerbert Xue </method> 3964*dc5640d1SHerbert Xue <method name="getNodeCreator" return="com.google.inject.grapher.NodeCreator" 3965*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3966*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3967*dc5640d1SHerbert Xue deprecated="not deprecated"> 3968*dc5640d1SHerbert Xue </method> 3969*dc5640d1SHerbert Xue <method name="setNodeCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters" 3970*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3971*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3972*dc5640d1SHerbert Xue deprecated="not deprecated"> 3973*dc5640d1SHerbert Xue <param name="nodeCreator" type="com.google.inject.grapher.NodeCreator"/> 3974*dc5640d1SHerbert Xue </method> 3975*dc5640d1SHerbert Xue <method name="getEdgeCreator" return="com.google.inject.grapher.EdgeCreator" 3976*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3977*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3978*dc5640d1SHerbert Xue deprecated="not deprecated"> 3979*dc5640d1SHerbert Xue </method> 3980*dc5640d1SHerbert Xue <method name="setEdgeCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters" 3981*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 3982*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3983*dc5640d1SHerbert Xue deprecated="not deprecated"> 3984*dc5640d1SHerbert Xue <param name="edgeCreator" type="com.google.inject.grapher.EdgeCreator"/> 3985*dc5640d1SHerbert Xue </method> 3986*dc5640d1SHerbert Xue <doc> 3987*dc5640d1SHerbert Xue <![CDATA[Parameters used to override default settings of the grapher. 3988*dc5640d1SHerbert Xue @since 4.0]]> 3989*dc5640d1SHerbert Xue </doc> 3990*dc5640d1SHerbert Xue </class> 3991*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters --> 3992*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.Alias --> 3993*dc5640d1SHerbert Xue <class name="Alias" extends="java.lang.Object" 3994*dc5640d1SHerbert Xue abstract="false" 3995*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 3996*dc5640d1SHerbert Xue deprecated="not deprecated"> 3997*dc5640d1SHerbert Xue <constructor name="Alias" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId" 3998*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 3999*dc5640d1SHerbert Xue deprecated="not deprecated"> 4000*dc5640d1SHerbert Xue </constructor> 4001*dc5640d1SHerbert Xue <method name="getFromId" return="com.google.inject.grapher.NodeId" 4002*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4003*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4004*dc5640d1SHerbert Xue deprecated="not deprecated"> 4005*dc5640d1SHerbert Xue </method> 4006*dc5640d1SHerbert Xue <method name="getToId" return="com.google.inject.grapher.NodeId" 4007*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4008*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4009*dc5640d1SHerbert Xue deprecated="not deprecated"> 4010*dc5640d1SHerbert Xue </method> 4011*dc5640d1SHerbert Xue <doc> 4012*dc5640d1SHerbert Xue <![CDATA[Alias between two nodes. Causes the 'from' node to be aliased with the 'to' node, which means 4013*dc5640d1SHerbert Xue that the 'from' node is not rendered and all edges going to it instead go to the 'to' node. 4014*dc5640d1SHerbert Xue 4015*dc5640d1SHerbert Xue @author [email protected] (Bojan Djordjevic) 4016*dc5640d1SHerbert Xue @since 4.0]]> 4017*dc5640d1SHerbert Xue </doc> 4018*dc5640d1SHerbert Xue </class> 4019*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.Alias --> 4020*dc5640d1SHerbert Xue <!-- start interface com.google.inject.grapher.AliasCreator --> 4021*dc5640d1SHerbert Xue <interface name="AliasCreator" abstract="true" 4022*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4023*dc5640d1SHerbert Xue deprecated="not deprecated"> 4024*dc5640d1SHerbert Xue <method name="createAliases" return="java.lang.Iterable<com.google.inject.grapher.Alias>" 4025*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 4026*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4027*dc5640d1SHerbert Xue deprecated="not deprecated"> 4028*dc5640d1SHerbert Xue <param name="bindings" type="java.lang.Iterable<com.google.inject.Binding<?>>"/> 4029*dc5640d1SHerbert Xue <doc> 4030*dc5640d1SHerbert Xue <![CDATA[Returns aliases for the given dependency graph. The aliases do not need to be transitively 4031*dc5640d1SHerbert Xue resolved, i.e. it is valid to return an alias (X to Y) and an alias (Y to Z). It is the 4032*dc5640d1SHerbert Xue responsibility of the caller to resolve this to (X to Z) and (Y to Z). 4033*dc5640d1SHerbert Xue 4034*dc5640d1SHerbert Xue @param bindings bindings that make up the dependency graph 4035*dc5640d1SHerbert Xue @return aliases that should be applied on the graph]]> 4036*dc5640d1SHerbert Xue </doc> 4037*dc5640d1SHerbert Xue </method> 4038*dc5640d1SHerbert Xue <doc> 4039*dc5640d1SHerbert Xue <![CDATA[Creator of node aliases. Used by dependency graphers to merge nodes in the internal Guice graph 4040*dc5640d1SHerbert Xue into a single node on the rendered graph. 4041*dc5640d1SHerbert Xue 4042*dc5640d1SHerbert Xue @author [email protected] (Bojan Djordjevic) 4043*dc5640d1SHerbert Xue @since 4.0]]> 4044*dc5640d1SHerbert Xue </doc> 4045*dc5640d1SHerbert Xue </interface> 4046*dc5640d1SHerbert Xue <!-- end interface com.google.inject.grapher.AliasCreator --> 4047*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.BindingEdge --> 4048*dc5640d1SHerbert Xue <class name="BindingEdge" extends="com.google.inject.grapher.Edge" 4049*dc5640d1SHerbert Xue abstract="false" 4050*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4051*dc5640d1SHerbert Xue deprecated="not deprecated"> 4052*dc5640d1SHerbert Xue <constructor name="BindingEdge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId, com.google.inject.grapher.BindingEdge.Type" 4053*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4054*dc5640d1SHerbert Xue deprecated="not deprecated"> 4055*dc5640d1SHerbert Xue </constructor> 4056*dc5640d1SHerbert Xue <method name="getType" return="com.google.inject.grapher.BindingEdge.Type" 4057*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4058*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4059*dc5640d1SHerbert Xue deprecated="not deprecated"> 4060*dc5640d1SHerbert Xue </method> 4061*dc5640d1SHerbert Xue <method name="equals" return="boolean" 4062*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4063*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4064*dc5640d1SHerbert Xue deprecated="not deprecated"> 4065*dc5640d1SHerbert Xue <param name="obj" type="java.lang.Object"/> 4066*dc5640d1SHerbert Xue </method> 4067*dc5640d1SHerbert Xue <method name="hashCode" return="int" 4068*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4069*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4070*dc5640d1SHerbert Xue deprecated="not deprecated"> 4071*dc5640d1SHerbert Xue </method> 4072*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 4073*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4074*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4075*dc5640d1SHerbert Xue deprecated="not deprecated"> 4076*dc5640d1SHerbert Xue </method> 4077*dc5640d1SHerbert Xue <method name="copy" return="com.google.inject.grapher.Edge" 4078*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4079*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4080*dc5640d1SHerbert Xue deprecated="not deprecated"> 4081*dc5640d1SHerbert Xue <param name="fromId" type="com.google.inject.grapher.NodeId"/> 4082*dc5640d1SHerbert Xue <param name="toId" type="com.google.inject.grapher.NodeId"/> 4083*dc5640d1SHerbert Xue </method> 4084*dc5640d1SHerbert Xue <doc> 4085*dc5640d1SHerbert Xue <![CDATA[Edge that connects an interface to the type or instance that is bound to implement it. 4086*dc5640d1SHerbert Xue 4087*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins) 4088*dc5640d1SHerbert Xue @since 4.0 (since 2.0 as an interface)]]> 4089*dc5640d1SHerbert Xue </doc> 4090*dc5640d1SHerbert Xue </class> 4091*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.BindingEdge --> 4092*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.BindingEdge.Type --> 4093*dc5640d1SHerbert Xue <class name="BindingEdge.Type" extends="java.lang.Enum<com.google.inject.grapher.BindingEdge.Type>" 4094*dc5640d1SHerbert Xue abstract="false" 4095*dc5640d1SHerbert Xue static="true" final="true" visibility="public" 4096*dc5640d1SHerbert Xue deprecated="not deprecated"> 4097*dc5640d1SHerbert Xue <method name="values" return="com.google.inject.grapher.BindingEdge.Type[]" 4098*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4099*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4100*dc5640d1SHerbert Xue deprecated="not deprecated"> 4101*dc5640d1SHerbert Xue </method> 4102*dc5640d1SHerbert Xue <method name="valueOf" return="com.google.inject.grapher.BindingEdge.Type" 4103*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4104*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4105*dc5640d1SHerbert Xue deprecated="not deprecated"> 4106*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 4107*dc5640d1SHerbert Xue </method> 4108*dc5640d1SHerbert Xue <doc> 4109*dc5640d1SHerbert Xue <![CDATA[Classification for what kind of binding this edge represents.]]> 4110*dc5640d1SHerbert Xue </doc> 4111*dc5640d1SHerbert Xue </class> 4112*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.BindingEdge.Type --> 4113*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.DefaultRootKeySetCreator --> 4114*dc5640d1SHerbert Xue <class name="DefaultRootKeySetCreator" extends="java.lang.Object" 4115*dc5640d1SHerbert Xue abstract="false" 4116*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4117*dc5640d1SHerbert Xue deprecated="not deprecated"> 4118*dc5640d1SHerbert Xue <implements name="com.google.inject.grapher.RootKeySetCreator"/> 4119*dc5640d1SHerbert Xue <constructor name="DefaultRootKeySetCreator" 4120*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4121*dc5640d1SHerbert Xue deprecated="not deprecated"> 4122*dc5640d1SHerbert Xue </constructor> 4123*dc5640d1SHerbert Xue <method name="getRootKeys" return="java.util.Set<com.google.inject.Key<?>>" 4124*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4125*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4126*dc5640d1SHerbert Xue deprecated="not deprecated"> 4127*dc5640d1SHerbert Xue <param name="injector" type="com.google.inject.Injector"/> 4128*dc5640d1SHerbert Xue </method> 4129*dc5640d1SHerbert Xue <doc> 4130*dc5640d1SHerbert Xue <![CDATA[Root key set creator that starts with all types that are not Guice internal types or the 4131*dc5640d1SHerbert Xue {@link Logger} type. 4132*dc5640d1SHerbert Xue 4133*dc5640d1SHerbert Xue @author [email protected] (Bojan Djordjevic) 4134*dc5640d1SHerbert Xue @since 4.0]]> 4135*dc5640d1SHerbert Xue </doc> 4136*dc5640d1SHerbert Xue </class> 4137*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.DefaultRootKeySetCreator --> 4138*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.DependencyEdge --> 4139*dc5640d1SHerbert Xue <class name="DependencyEdge" extends="com.google.inject.grapher.Edge" 4140*dc5640d1SHerbert Xue abstract="false" 4141*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4142*dc5640d1SHerbert Xue deprecated="not deprecated"> 4143*dc5640d1SHerbert Xue <constructor name="DependencyEdge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId, com.google.inject.spi.InjectionPoint" 4144*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4145*dc5640d1SHerbert Xue deprecated="not deprecated"> 4146*dc5640d1SHerbert Xue </constructor> 4147*dc5640d1SHerbert Xue <method name="getInjectionPoint" return="com.google.inject.spi.InjectionPoint" 4148*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4149*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4150*dc5640d1SHerbert Xue deprecated="not deprecated"> 4151*dc5640d1SHerbert Xue </method> 4152*dc5640d1SHerbert Xue <method name="equals" return="boolean" 4153*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4154*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4155*dc5640d1SHerbert Xue deprecated="not deprecated"> 4156*dc5640d1SHerbert Xue <param name="obj" type="java.lang.Object"/> 4157*dc5640d1SHerbert Xue </method> 4158*dc5640d1SHerbert Xue <method name="hashCode" return="int" 4159*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4160*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4161*dc5640d1SHerbert Xue deprecated="not deprecated"> 4162*dc5640d1SHerbert Xue </method> 4163*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 4164*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4165*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4166*dc5640d1SHerbert Xue deprecated="not deprecated"> 4167*dc5640d1SHerbert Xue </method> 4168*dc5640d1SHerbert Xue <method name="copy" return="com.google.inject.grapher.Edge" 4169*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4170*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4171*dc5640d1SHerbert Xue deprecated="not deprecated"> 4172*dc5640d1SHerbert Xue <param name="fromId" type="com.google.inject.grapher.NodeId"/> 4173*dc5640d1SHerbert Xue <param name="toId" type="com.google.inject.grapher.NodeId"/> 4174*dc5640d1SHerbert Xue </method> 4175*dc5640d1SHerbert Xue <doc> 4176*dc5640d1SHerbert Xue <![CDATA[Edge from a class or {@link InjectionPoint} to the interface node that will satisfy the 4177*dc5640d1SHerbert Xue dependency. 4178*dc5640d1SHerbert Xue 4179*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins) 4180*dc5640d1SHerbert Xue @since 4.0 (since 2.0 as an interface)]]> 4181*dc5640d1SHerbert Xue </doc> 4182*dc5640d1SHerbert Xue </class> 4183*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.DependencyEdge --> 4184*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.Edge --> 4185*dc5640d1SHerbert Xue <class name="Edge" extends="java.lang.Object" 4186*dc5640d1SHerbert Xue abstract="true" 4187*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4188*dc5640d1SHerbert Xue deprecated="not deprecated"> 4189*dc5640d1SHerbert Xue <constructor name="Edge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId" 4190*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 4191*dc5640d1SHerbert Xue deprecated="not deprecated"> 4192*dc5640d1SHerbert Xue </constructor> 4193*dc5640d1SHerbert Xue <method name="getFromId" return="com.google.inject.grapher.NodeId" 4194*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4195*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4196*dc5640d1SHerbert Xue deprecated="not deprecated"> 4197*dc5640d1SHerbert Xue </method> 4198*dc5640d1SHerbert Xue <method name="getToId" return="com.google.inject.grapher.NodeId" 4199*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4200*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4201*dc5640d1SHerbert Xue deprecated="not deprecated"> 4202*dc5640d1SHerbert Xue </method> 4203*dc5640d1SHerbert Xue <method name="equals" return="boolean" 4204*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4205*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4206*dc5640d1SHerbert Xue deprecated="not deprecated"> 4207*dc5640d1SHerbert Xue <param name="obj" type="java.lang.Object"/> 4208*dc5640d1SHerbert Xue </method> 4209*dc5640d1SHerbert Xue <method name="hashCode" return="int" 4210*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4211*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4212*dc5640d1SHerbert Xue deprecated="not deprecated"> 4213*dc5640d1SHerbert Xue </method> 4214*dc5640d1SHerbert Xue <method name="copy" return="com.google.inject.grapher.Edge" 4215*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 4216*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4217*dc5640d1SHerbert Xue deprecated="not deprecated"> 4218*dc5640d1SHerbert Xue <param name="fromId" type="com.google.inject.grapher.NodeId"/> 4219*dc5640d1SHerbert Xue <param name="toId" type="com.google.inject.grapher.NodeId"/> 4220*dc5640d1SHerbert Xue <doc> 4221*dc5640d1SHerbert Xue <![CDATA[Returns a copy of the edge with new node IDs. 4222*dc5640d1SHerbert Xue 4223*dc5640d1SHerbert Xue @param fromId new ID of the 'from' node 4224*dc5640d1SHerbert Xue @param toId new ID of the 'to' node 4225*dc5640d1SHerbert Xue @return copy of the edge with the new node IDs]]> 4226*dc5640d1SHerbert Xue </doc> 4227*dc5640d1SHerbert Xue </method> 4228*dc5640d1SHerbert Xue <doc> 4229*dc5640d1SHerbert Xue <![CDATA[Edge in a guice dependency graph. 4230*dc5640d1SHerbert Xue 4231*dc5640d1SHerbert Xue @author [email protected] (Bojan Djordjevic) 4232*dc5640d1SHerbert Xue @since 4.0]]> 4233*dc5640d1SHerbert Xue </doc> 4234*dc5640d1SHerbert Xue </class> 4235*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.Edge --> 4236*dc5640d1SHerbert Xue <!-- start interface com.google.inject.grapher.EdgeCreator --> 4237*dc5640d1SHerbert Xue <interface name="EdgeCreator" abstract="true" 4238*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4239*dc5640d1SHerbert Xue deprecated="not deprecated"> 4240*dc5640d1SHerbert Xue <method name="getEdges" return="java.lang.Iterable<com.google.inject.grapher.Edge>" 4241*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 4242*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4243*dc5640d1SHerbert Xue deprecated="not deprecated"> 4244*dc5640d1SHerbert Xue <param name="bindings" type="java.lang.Iterable<com.google.inject.Binding<?>>"/> 4245*dc5640d1SHerbert Xue <doc> 4246*dc5640d1SHerbert Xue <![CDATA[Returns edges for the given dependency graph.]]> 4247*dc5640d1SHerbert Xue </doc> 4248*dc5640d1SHerbert Xue </method> 4249*dc5640d1SHerbert Xue <doc> 4250*dc5640d1SHerbert Xue <![CDATA[Creator of graph edges to render. All edges will be rendered on the graph after node aliasing is 4251*dc5640d1SHerbert Xue performed. 4252*dc5640d1SHerbert Xue 4253*dc5640d1SHerbert Xue @author [email protected] (Bojan Djordjevic) 4254*dc5640d1SHerbert Xue @since 4.0]]> 4255*dc5640d1SHerbert Xue </doc> 4256*dc5640d1SHerbert Xue </interface> 4257*dc5640d1SHerbert Xue <!-- end interface com.google.inject.grapher.EdgeCreator --> 4258*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.ImplementationNode --> 4259*dc5640d1SHerbert Xue <class name="ImplementationNode" extends="com.google.inject.grapher.Node" 4260*dc5640d1SHerbert Xue abstract="false" 4261*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4262*dc5640d1SHerbert Xue deprecated="not deprecated"> 4263*dc5640d1SHerbert Xue <constructor name="ImplementationNode" type="com.google.inject.grapher.NodeId, java.lang.Object, java.util.Collection<java.lang.reflect.Member>" 4264*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4265*dc5640d1SHerbert Xue deprecated="not deprecated"> 4266*dc5640d1SHerbert Xue </constructor> 4267*dc5640d1SHerbert Xue <method name="getMembers" return="java.util.Collection<java.lang.reflect.Member>" 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 </method> 4272*dc5640d1SHerbert Xue <method name="equals" return="boolean" 4273*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4274*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4275*dc5640d1SHerbert Xue deprecated="not deprecated"> 4276*dc5640d1SHerbert Xue <param name="obj" type="java.lang.Object"/> 4277*dc5640d1SHerbert Xue </method> 4278*dc5640d1SHerbert Xue <method name="hashCode" return="int" 4279*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4280*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4281*dc5640d1SHerbert Xue deprecated="not deprecated"> 4282*dc5640d1SHerbert Xue </method> 4283*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 4284*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4285*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4286*dc5640d1SHerbert Xue deprecated="not deprecated"> 4287*dc5640d1SHerbert Xue </method> 4288*dc5640d1SHerbert Xue <method name="copy" return="com.google.inject.grapher.Node" 4289*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4290*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4291*dc5640d1SHerbert Xue deprecated="not deprecated"> 4292*dc5640d1SHerbert Xue <param name="id" type="com.google.inject.grapher.NodeId"/> 4293*dc5640d1SHerbert Xue </method> 4294*dc5640d1SHerbert Xue <doc> 4295*dc5640d1SHerbert Xue <![CDATA[Node for types that have {@link com.google.inject.spi.Dependency}s and are 4296*dc5640d1SHerbert Xue bound to {@link InterfaceNode}s. These nodes will often have fields for 4297*dc5640d1SHerbert Xue {@link Member}s that are {@link com.google.inject.spi.InjectionPoint}s. 4298*dc5640d1SHerbert Xue 4299*dc5640d1SHerbert Xue @see DependencyEdge 4300*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins) 4301*dc5640d1SHerbert Xue @since 4.0 (since 2.0 as an interface)]]> 4302*dc5640d1SHerbert Xue </doc> 4303*dc5640d1SHerbert Xue </class> 4304*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.ImplementationNode --> 4305*dc5640d1SHerbert Xue <!-- start interface com.google.inject.grapher.InjectorGrapher --> 4306*dc5640d1SHerbert Xue <interface name="InjectorGrapher" abstract="true" 4307*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4308*dc5640d1SHerbert Xue deprecated="not deprecated"> 4309*dc5640d1SHerbert Xue <method name="graph" 4310*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 4311*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4312*dc5640d1SHerbert Xue deprecated="not deprecated"> 4313*dc5640d1SHerbert Xue <param name="injector" type="com.google.inject.Injector"/> 4314*dc5640d1SHerbert Xue <exception name="IOException" type="java.io.IOException"/> 4315*dc5640d1SHerbert Xue <doc> 4316*dc5640d1SHerbert Xue <![CDATA[Graphs the guice dependency graph for the given injector using default starting keys.]]> 4317*dc5640d1SHerbert Xue </doc> 4318*dc5640d1SHerbert Xue </method> 4319*dc5640d1SHerbert Xue <method name="graph" 4320*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 4321*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4322*dc5640d1SHerbert Xue deprecated="not deprecated"> 4323*dc5640d1SHerbert Xue <param name="injector" type="com.google.inject.Injector"/> 4324*dc5640d1SHerbert Xue <param name="root" type="java.util.Set<com.google.inject.Key<?>>"/> 4325*dc5640d1SHerbert Xue <exception name="IOException" type="java.io.IOException"/> 4326*dc5640d1SHerbert Xue <doc> 4327*dc5640d1SHerbert Xue <![CDATA[Graphs the guice dependency graph for the given injector using the given starting keys and 4328*dc5640d1SHerbert Xue their transitive dependencies.]]> 4329*dc5640d1SHerbert Xue </doc> 4330*dc5640d1SHerbert Xue </method> 4331*dc5640d1SHerbert Xue <doc> 4332*dc5640d1SHerbert Xue <![CDATA[Guice injector grapher. Renders the guice dependency graph for an injector. It can render the 4333*dc5640d1SHerbert Xue whole dependency graph or just transitive dependencies of a given set of nodes. 4334*dc5640d1SHerbert Xue 4335*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins) 4336*dc5640d1SHerbert Xue @since 4.0 (since 2.0 as a concrete class with a different API)]]> 4337*dc5640d1SHerbert Xue </doc> 4338*dc5640d1SHerbert Xue </interface> 4339*dc5640d1SHerbert Xue <!-- end interface com.google.inject.grapher.InjectorGrapher --> 4340*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.InstanceNode --> 4341*dc5640d1SHerbert Xue <class name="InstanceNode" extends="com.google.inject.grapher.Node" 4342*dc5640d1SHerbert Xue abstract="false" 4343*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4344*dc5640d1SHerbert Xue deprecated="not deprecated"> 4345*dc5640d1SHerbert Xue <constructor name="InstanceNode" type="com.google.inject.grapher.NodeId, java.lang.Object, java.lang.Object, java.lang.Iterable<java.lang.reflect.Member>" 4346*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4347*dc5640d1SHerbert Xue deprecated="not deprecated"> 4348*dc5640d1SHerbert Xue </constructor> 4349*dc5640d1SHerbert Xue <method name="getInstance" return="java.lang.Object" 4350*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4351*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4352*dc5640d1SHerbert Xue deprecated="not deprecated"> 4353*dc5640d1SHerbert Xue </method> 4354*dc5640d1SHerbert Xue <method name="getMembers" return="java.lang.Iterable<java.lang.reflect.Member>" 4355*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4356*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4357*dc5640d1SHerbert Xue deprecated="not deprecated"> 4358*dc5640d1SHerbert Xue </method> 4359*dc5640d1SHerbert Xue <method name="equals" return="boolean" 4360*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4361*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4362*dc5640d1SHerbert Xue deprecated="not deprecated"> 4363*dc5640d1SHerbert Xue <param name="obj" type="java.lang.Object"/> 4364*dc5640d1SHerbert Xue </method> 4365*dc5640d1SHerbert Xue <method name="hashCode" return="int" 4366*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4367*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4368*dc5640d1SHerbert Xue deprecated="not deprecated"> 4369*dc5640d1SHerbert Xue </method> 4370*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 4371*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4372*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4373*dc5640d1SHerbert Xue deprecated="not deprecated"> 4374*dc5640d1SHerbert Xue </method> 4375*dc5640d1SHerbert Xue <method name="copy" return="com.google.inject.grapher.Node" 4376*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4377*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4378*dc5640d1SHerbert Xue deprecated="not deprecated"> 4379*dc5640d1SHerbert Xue <param name="id" type="com.google.inject.grapher.NodeId"/> 4380*dc5640d1SHerbert Xue </method> 4381*dc5640d1SHerbert Xue <doc> 4382*dc5640d1SHerbert Xue <![CDATA[Node for instances. Used when a type is bound to an instance. 4383*dc5640d1SHerbert Xue 4384*dc5640d1SHerbert Xue @author [email protected] (Bojan Djordjevic) 4385*dc5640d1SHerbert Xue @since 4.0]]> 4386*dc5640d1SHerbert Xue </doc> 4387*dc5640d1SHerbert Xue </class> 4388*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.InstanceNode --> 4389*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.InterfaceNode --> 4390*dc5640d1SHerbert Xue <class name="InterfaceNode" extends="com.google.inject.grapher.Node" 4391*dc5640d1SHerbert Xue abstract="false" 4392*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4393*dc5640d1SHerbert Xue deprecated="not deprecated"> 4394*dc5640d1SHerbert Xue <constructor name="InterfaceNode" type="com.google.inject.grapher.NodeId, java.lang.Object" 4395*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4396*dc5640d1SHerbert Xue deprecated="not deprecated"> 4397*dc5640d1SHerbert Xue </constructor> 4398*dc5640d1SHerbert Xue <method name="copy" return="com.google.inject.grapher.Node" 4399*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4400*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4401*dc5640d1SHerbert Xue deprecated="not deprecated"> 4402*dc5640d1SHerbert Xue <param name="id" type="com.google.inject.grapher.NodeId"/> 4403*dc5640d1SHerbert Xue </method> 4404*dc5640d1SHerbert Xue <method name="equals" return="boolean" 4405*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4406*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4407*dc5640d1SHerbert Xue deprecated="not deprecated"> 4408*dc5640d1SHerbert Xue <param name="obj" type="java.lang.Object"/> 4409*dc5640d1SHerbert Xue </method> 4410*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 4411*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4412*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4413*dc5640d1SHerbert Xue deprecated="not deprecated"> 4414*dc5640d1SHerbert Xue </method> 4415*dc5640d1SHerbert Xue <doc> 4416*dc5640d1SHerbert Xue <![CDATA[Node for an interface type that has been bound to an implementation class or instance. 4417*dc5640d1SHerbert Xue 4418*dc5640d1SHerbert Xue @see BindingEdge 4419*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins) 4420*dc5640d1SHerbert Xue @since 4.0 (since 2.0 as an interface)]]> 4421*dc5640d1SHerbert Xue </doc> 4422*dc5640d1SHerbert Xue </class> 4423*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.InterfaceNode --> 4424*dc5640d1SHerbert Xue <!-- start interface com.google.inject.grapher.NameFactory --> 4425*dc5640d1SHerbert Xue <interface name="NameFactory" abstract="true" 4426*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4427*dc5640d1SHerbert Xue deprecated="not deprecated"> 4428*dc5640d1SHerbert Xue <method name="getMemberName" return="java.lang.String" 4429*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 4430*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4431*dc5640d1SHerbert Xue deprecated="not deprecated"> 4432*dc5640d1SHerbert Xue <param name="member" type="java.lang.reflect.Member"/> 4433*dc5640d1SHerbert Xue </method> 4434*dc5640d1SHerbert Xue <method name="getClassName" return="java.lang.String" 4435*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 4436*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4437*dc5640d1SHerbert Xue deprecated="not deprecated"> 4438*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 4439*dc5640d1SHerbert Xue </method> 4440*dc5640d1SHerbert Xue <method name="getInstanceName" return="java.lang.String" 4441*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 4442*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4443*dc5640d1SHerbert Xue deprecated="not deprecated"> 4444*dc5640d1SHerbert Xue <param name="instance" type="java.lang.Object"/> 4445*dc5640d1SHerbert Xue </method> 4446*dc5640d1SHerbert Xue <method name="getAnnotationName" return="java.lang.String" 4447*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 4448*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4449*dc5640d1SHerbert Xue deprecated="not deprecated"> 4450*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 4451*dc5640d1SHerbert Xue </method> 4452*dc5640d1SHerbert Xue <method name="getSourceName" return="java.lang.String" 4453*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 4454*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4455*dc5640d1SHerbert Xue deprecated="not deprecated"> 4456*dc5640d1SHerbert Xue <param name="source" type="java.lang.Object"/> 4457*dc5640d1SHerbert Xue </method> 4458*dc5640d1SHerbert Xue <doc> 4459*dc5640d1SHerbert Xue <![CDATA[Interface for a service that provides nice {@link String}s that we can 4460*dc5640d1SHerbert Xue display in the graph for the types that come up in 4461*dc5640d1SHerbert Xue {@link com.google.inject.Binding}s. 4462*dc5640d1SHerbert Xue 4463*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4464*dc5640d1SHerbert Xue </doc> 4465*dc5640d1SHerbert Xue </interface> 4466*dc5640d1SHerbert Xue <!-- end interface com.google.inject.grapher.NameFactory --> 4467*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.Node --> 4468*dc5640d1SHerbert Xue <class name="Node" extends="java.lang.Object" 4469*dc5640d1SHerbert Xue abstract="true" 4470*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4471*dc5640d1SHerbert Xue deprecated="not deprecated"> 4472*dc5640d1SHerbert Xue <constructor name="Node" type="com.google.inject.grapher.NodeId, java.lang.Object" 4473*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 4474*dc5640d1SHerbert Xue deprecated="not deprecated"> 4475*dc5640d1SHerbert Xue </constructor> 4476*dc5640d1SHerbert Xue <method name="getId" return="com.google.inject.grapher.NodeId" 4477*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4478*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4479*dc5640d1SHerbert Xue deprecated="not deprecated"> 4480*dc5640d1SHerbert Xue </method> 4481*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 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 </method> 4486*dc5640d1SHerbert Xue <method name="equals" return="boolean" 4487*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4488*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4489*dc5640d1SHerbert Xue deprecated="not deprecated"> 4490*dc5640d1SHerbert Xue <param name="obj" type="java.lang.Object"/> 4491*dc5640d1SHerbert Xue </method> 4492*dc5640d1SHerbert Xue <method name="hashCode" return="int" 4493*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4494*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4495*dc5640d1SHerbert Xue deprecated="not deprecated"> 4496*dc5640d1SHerbert Xue </method> 4497*dc5640d1SHerbert Xue <method name="copy" return="com.google.inject.grapher.Node" 4498*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 4499*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4500*dc5640d1SHerbert Xue deprecated="not deprecated"> 4501*dc5640d1SHerbert Xue <param name="id" type="com.google.inject.grapher.NodeId"/> 4502*dc5640d1SHerbert Xue <doc> 4503*dc5640d1SHerbert Xue <![CDATA[Returns a copy of the node with a new ID. 4504*dc5640d1SHerbert Xue 4505*dc5640d1SHerbert Xue @param id new ID of the node 4506*dc5640d1SHerbert Xue @return copy of the node with a new ID]]> 4507*dc5640d1SHerbert Xue </doc> 4508*dc5640d1SHerbert Xue </method> 4509*dc5640d1SHerbert Xue <doc> 4510*dc5640d1SHerbert Xue <![CDATA[Node in a guice dependency graph. 4511*dc5640d1SHerbert Xue 4512*dc5640d1SHerbert Xue @author [email protected] (Bojan Djordjevic) 4513*dc5640d1SHerbert Xue @since 4.0]]> 4514*dc5640d1SHerbert Xue </doc> 4515*dc5640d1SHerbert Xue </class> 4516*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.Node --> 4517*dc5640d1SHerbert Xue <!-- start interface com.google.inject.grapher.NodeCreator --> 4518*dc5640d1SHerbert Xue <interface name="NodeCreator" abstract="true" 4519*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4520*dc5640d1SHerbert Xue deprecated="not deprecated"> 4521*dc5640d1SHerbert Xue <method name="getNodes" return="java.lang.Iterable<com.google.inject.grapher.Node>" 4522*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 4523*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4524*dc5640d1SHerbert Xue deprecated="not deprecated"> 4525*dc5640d1SHerbert Xue <param name="bindings" type="java.lang.Iterable<com.google.inject.Binding<?>>"/> 4526*dc5640d1SHerbert Xue <doc> 4527*dc5640d1SHerbert Xue <![CDATA[Returns nodes for the given dependency graph.]]> 4528*dc5640d1SHerbert Xue </doc> 4529*dc5640d1SHerbert Xue </method> 4530*dc5640d1SHerbert Xue <doc> 4531*dc5640d1SHerbert Xue <![CDATA[Creator of graph nodes. 4532*dc5640d1SHerbert Xue 4533*dc5640d1SHerbert Xue @author [email protected] (Bojan Djordjevic) 4534*dc5640d1SHerbert Xue @since 4.0]]> 4535*dc5640d1SHerbert Xue </doc> 4536*dc5640d1SHerbert Xue </interface> 4537*dc5640d1SHerbert Xue <!-- end interface com.google.inject.grapher.NodeCreator --> 4538*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.NodeId --> 4539*dc5640d1SHerbert Xue <class name="NodeId" extends="java.lang.Object" 4540*dc5640d1SHerbert Xue abstract="false" 4541*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 4542*dc5640d1SHerbert Xue deprecated="not deprecated"> 4543*dc5640d1SHerbert Xue <method name="newTypeId" return="com.google.inject.grapher.NodeId" 4544*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4545*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4546*dc5640d1SHerbert Xue deprecated="not deprecated"> 4547*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 4548*dc5640d1SHerbert Xue </method> 4549*dc5640d1SHerbert Xue <method name="newInstanceId" return="com.google.inject.grapher.NodeId" 4550*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4551*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4552*dc5640d1SHerbert Xue deprecated="not deprecated"> 4553*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 4554*dc5640d1SHerbert Xue </method> 4555*dc5640d1SHerbert Xue <method name="getKey" return="com.google.inject.Key<?>" 4556*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4557*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4558*dc5640d1SHerbert Xue deprecated="not deprecated"> 4559*dc5640d1SHerbert Xue </method> 4560*dc5640d1SHerbert Xue <method name="hashCode" return="int" 4561*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4562*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4563*dc5640d1SHerbert Xue deprecated="not deprecated"> 4564*dc5640d1SHerbert Xue </method> 4565*dc5640d1SHerbert Xue <method name="equals" return="boolean" 4566*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4567*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4568*dc5640d1SHerbert Xue deprecated="not deprecated"> 4569*dc5640d1SHerbert Xue <param name="obj" type="java.lang.Object"/> 4570*dc5640d1SHerbert Xue </method> 4571*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 4572*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4573*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4574*dc5640d1SHerbert Xue deprecated="not deprecated"> 4575*dc5640d1SHerbert Xue </method> 4576*dc5640d1SHerbert Xue <doc> 4577*dc5640d1SHerbert Xue <![CDATA[ID of a node in the graph. An ID is given by a {@link Key} and a node type, which is used to 4578*dc5640d1SHerbert Xue distinguish instances and implementation classes for the same key. For example 4579*dc5640d1SHerbert Xue {@code bind(Integer.class).toInstance(42)} produces two nodes: an 4580*dc5640d1SHerbert Xue interface node with the key of {@code Key<Integer>} and an instance node with the same 4581*dc5640d1SHerbert Xue {@link Key} and value of 42. 4582*dc5640d1SHerbert Xue 4583*dc5640d1SHerbert Xue @author [email protected] (Bojan Djordjevic) 4584*dc5640d1SHerbert Xue @since 4.0]]> 4585*dc5640d1SHerbert Xue </doc> 4586*dc5640d1SHerbert Xue </class> 4587*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.NodeId --> 4588*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.NodeId.NodeType --> 4589*dc5640d1SHerbert Xue <class name="NodeId.NodeType" extends="java.lang.Enum<com.google.inject.grapher.NodeId.NodeType>" 4590*dc5640d1SHerbert Xue abstract="false" 4591*dc5640d1SHerbert Xue static="true" final="true" visibility="public" 4592*dc5640d1SHerbert Xue deprecated="not deprecated"> 4593*dc5640d1SHerbert Xue <method name="values" return="com.google.inject.grapher.NodeId.NodeType[]" 4594*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4595*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4596*dc5640d1SHerbert Xue deprecated="not deprecated"> 4597*dc5640d1SHerbert Xue </method> 4598*dc5640d1SHerbert Xue <method name="valueOf" return="com.google.inject.grapher.NodeId.NodeType" 4599*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4600*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4601*dc5640d1SHerbert Xue deprecated="not deprecated"> 4602*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 4603*dc5640d1SHerbert Xue </method> 4604*dc5640d1SHerbert Xue <doc> 4605*dc5640d1SHerbert Xue <![CDATA[Type of node. 4606*dc5640d1SHerbert Xue 4607*dc5640d1SHerbert Xue @since 4.0]]> 4608*dc5640d1SHerbert Xue </doc> 4609*dc5640d1SHerbert Xue </class> 4610*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.NodeId.NodeType --> 4611*dc5640d1SHerbert Xue <!-- start interface com.google.inject.grapher.RootKeySetCreator --> 4612*dc5640d1SHerbert Xue <interface name="RootKeySetCreator" abstract="true" 4613*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4614*dc5640d1SHerbert Xue deprecated="not deprecated"> 4615*dc5640d1SHerbert Xue <method name="getRootKeys" return="java.util.Set<com.google.inject.Key<?>>" 4616*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 4617*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4618*dc5640d1SHerbert Xue deprecated="not deprecated"> 4619*dc5640d1SHerbert Xue <param name="injector" type="com.google.inject.Injector"/> 4620*dc5640d1SHerbert Xue <doc> 4621*dc5640d1SHerbert Xue <![CDATA[Returns the set of starting keys to graph.]]> 4622*dc5640d1SHerbert Xue </doc> 4623*dc5640d1SHerbert Xue </method> 4624*dc5640d1SHerbert Xue <doc> 4625*dc5640d1SHerbert Xue <![CDATA[Creator of the default starting set of keys to graph. These keys and their transitive 4626*dc5640d1SHerbert Xue dependencies will be graphed. 4627*dc5640d1SHerbert Xue 4628*dc5640d1SHerbert Xue @author [email protected] (Bojan Djordjevic) 4629*dc5640d1SHerbert Xue @since 4.0]]> 4630*dc5640d1SHerbert Xue </doc> 4631*dc5640d1SHerbert Xue </interface> 4632*dc5640d1SHerbert Xue <!-- end interface com.google.inject.grapher.RootKeySetCreator --> 4633*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.ShortNameFactory --> 4634*dc5640d1SHerbert Xue <class name="ShortNameFactory" extends="java.lang.Object" 4635*dc5640d1SHerbert Xue abstract="false" 4636*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4637*dc5640d1SHerbert Xue deprecated="not deprecated"> 4638*dc5640d1SHerbert Xue <implements name="com.google.inject.grapher.NameFactory"/> 4639*dc5640d1SHerbert Xue <constructor name="ShortNameFactory" 4640*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4641*dc5640d1SHerbert Xue deprecated="not deprecated"> 4642*dc5640d1SHerbert Xue </constructor> 4643*dc5640d1SHerbert Xue <method name="getMemberName" return="java.lang.String" 4644*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4645*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4646*dc5640d1SHerbert Xue deprecated="not deprecated"> 4647*dc5640d1SHerbert Xue <param name="member" type="java.lang.reflect.Member"/> 4648*dc5640d1SHerbert Xue </method> 4649*dc5640d1SHerbert Xue <method name="getAnnotationName" return="java.lang.String" 4650*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4651*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4652*dc5640d1SHerbert Xue deprecated="not deprecated"> 4653*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 4654*dc5640d1SHerbert Xue </method> 4655*dc5640d1SHerbert Xue <method name="getClassName" return="java.lang.String" 4656*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4657*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4658*dc5640d1SHerbert Xue deprecated="not deprecated"> 4659*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 4660*dc5640d1SHerbert Xue </method> 4661*dc5640d1SHerbert Xue <method name="getInstanceName" return="java.lang.String" 4662*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4663*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4664*dc5640d1SHerbert Xue deprecated="not deprecated"> 4665*dc5640d1SHerbert Xue <param name="instance" type="java.lang.Object"/> 4666*dc5640d1SHerbert Xue </method> 4667*dc5640d1SHerbert Xue <method name="getSourceName" return="java.lang.String" 4668*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4669*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4670*dc5640d1SHerbert Xue deprecated="not deprecated"> 4671*dc5640d1SHerbert Xue <param name="source" type="java.lang.Object"/> 4672*dc5640d1SHerbert Xue <doc> 4673*dc5640d1SHerbert Xue <![CDATA[Returns a name for a Guice "source" object. This will typically be either 4674*dc5640d1SHerbert Xue a {@link StackTraceElement} for when the binding is made to the instance, 4675*dc5640d1SHerbert Xue or a {@link Method} when a provider method is used.]]> 4676*dc5640d1SHerbert Xue </doc> 4677*dc5640d1SHerbert Xue </method> 4678*dc5640d1SHerbert Xue <method name="getFileString" return="java.lang.String" 4679*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4680*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 4681*dc5640d1SHerbert Xue deprecated="not deprecated"> 4682*dc5640d1SHerbert Xue <param name="stackTraceElement" type="java.lang.StackTraceElement"/> 4683*dc5640d1SHerbert Xue </method> 4684*dc5640d1SHerbert Xue <method name="getMethodString" return="java.lang.String" 4685*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4686*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 4687*dc5640d1SHerbert Xue deprecated="not deprecated"> 4688*dc5640d1SHerbert Xue <param name="method" type="java.lang.reflect.Method"/> 4689*dc5640d1SHerbert Xue </method> 4690*dc5640d1SHerbert Xue <doc> 4691*dc5640d1SHerbert Xue <![CDATA[Reasonable implementation for {@link NameFactory}. Mostly takes various 4692*dc5640d1SHerbert Xue {@link Object#toString()}s and strips package names out of them so that 4693*dc5640d1SHerbert Xue they'll fit on the graph. 4694*dc5640d1SHerbert Xue 4695*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4696*dc5640d1SHerbert Xue </doc> 4697*dc5640d1SHerbert Xue </class> 4698*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.ShortNameFactory --> 4699*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.TransitiveDependencyVisitor --> 4700*dc5640d1SHerbert Xue <class name="TransitiveDependencyVisitor" extends="com.google.inject.spi.DefaultBindingTargetVisitor<java.lang.Object, java.util.Collection<com.google.inject.Key<?>>>" 4701*dc5640d1SHerbert Xue abstract="false" 4702*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4703*dc5640d1SHerbert Xue deprecated="not deprecated"> 4704*dc5640d1SHerbert Xue <constructor name="TransitiveDependencyVisitor" 4705*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4706*dc5640d1SHerbert Xue deprecated="not deprecated"> 4707*dc5640d1SHerbert Xue </constructor> 4708*dc5640d1SHerbert Xue <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4709*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4710*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4711*dc5640d1SHerbert Xue deprecated="not deprecated"> 4712*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ConstructorBinding<?>"/> 4713*dc5640d1SHerbert Xue </method> 4714*dc5640d1SHerbert Xue <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4715*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4716*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4717*dc5640d1SHerbert Xue deprecated="not deprecated"> 4718*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding<?>"/> 4719*dc5640d1SHerbert Xue </method> 4720*dc5640d1SHerbert Xue <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4721*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4722*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4723*dc5640d1SHerbert Xue deprecated="not deprecated"> 4724*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.InstanceBinding<?>"/> 4725*dc5640d1SHerbert Xue </method> 4726*dc5640d1SHerbert Xue <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4727*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4728*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4729*dc5640d1SHerbert Xue deprecated="not deprecated"> 4730*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.LinkedKeyBinding<?>"/> 4731*dc5640d1SHerbert Xue </method> 4732*dc5640d1SHerbert Xue <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4733*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4734*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4735*dc5640d1SHerbert Xue deprecated="not deprecated"> 4736*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProviderBinding<?>"/> 4737*dc5640d1SHerbert Xue </method> 4738*dc5640d1SHerbert Xue <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4739*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4740*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4741*dc5640d1SHerbert Xue deprecated="not deprecated"> 4742*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding<?>"/> 4743*dc5640d1SHerbert Xue </method> 4744*dc5640d1SHerbert Xue <method name="visit" return="java.util.Collection<com.google.inject.Key<?>>" 4745*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4746*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4747*dc5640d1SHerbert Xue deprecated="not deprecated"> 4748*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProviderKeyBinding<?>"/> 4749*dc5640d1SHerbert Xue </method> 4750*dc5640d1SHerbert Xue <method name="visitOther" return="java.util.Collection<com.google.inject.Key<?>>" 4751*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4752*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4753*dc5640d1SHerbert Xue deprecated="not deprecated"> 4754*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.Binding<?>"/> 4755*dc5640d1SHerbert Xue <doc> 4756*dc5640d1SHerbert Xue <![CDATA[@since 4.0]]> 4757*dc5640d1SHerbert Xue </doc> 4758*dc5640d1SHerbert Xue </method> 4759*dc5640d1SHerbert Xue <doc> 4760*dc5640d1SHerbert Xue <![CDATA[{@link com.google.inject.spi.BindingTargetVisitor} that returns a 4761*dc5640d1SHerbert Xue {@link Collection} of the {@link Key}s of each {@link Binding}'s 4762*dc5640d1SHerbert Xue dependencies. Used by {@link InjectorGrapher} to walk the dependency graph 4763*dc5640d1SHerbert Xue from a starting set of {@link Binding}s. 4764*dc5640d1SHerbert Xue 4765*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4766*dc5640d1SHerbert Xue </doc> 4767*dc5640d1SHerbert Xue </class> 4768*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.TransitiveDependencyVisitor --> 4769*dc5640d1SHerbert Xue</package> 4770*dc5640d1SHerbert Xue<package name="com.google.inject.grapher.graphviz"> 4771*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.ArrowType --> 4772*dc5640d1SHerbert Xue <class name="ArrowType" extends="java.lang.Enum<com.google.inject.grapher.graphviz.ArrowType>" 4773*dc5640d1SHerbert Xue abstract="false" 4774*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 4775*dc5640d1SHerbert Xue deprecated="not deprecated"> 4776*dc5640d1SHerbert Xue <method name="values" return="com.google.inject.grapher.graphviz.ArrowType[]" 4777*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4778*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4779*dc5640d1SHerbert Xue deprecated="not deprecated"> 4780*dc5640d1SHerbert Xue </method> 4781*dc5640d1SHerbert Xue <method name="valueOf" return="com.google.inject.grapher.graphviz.ArrowType" 4782*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4783*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4784*dc5640d1SHerbert Xue deprecated="not deprecated"> 4785*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 4786*dc5640d1SHerbert Xue </method> 4787*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 4788*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4789*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4790*dc5640d1SHerbert Xue deprecated="not deprecated"> 4791*dc5640d1SHerbert Xue </method> 4792*dc5640d1SHerbert Xue <doc> 4793*dc5640d1SHerbert Xue <![CDATA[Arrow symbols that are available from Graphviz. These can be composed by 4794*dc5640d1SHerbert Xue concatenation to make double arrows and such. 4795*dc5640d1SHerbert Xue <p> 4796*dc5640d1SHerbert Xue See: http://www.graphviz.org/doc/info/arrows.html 4797*dc5640d1SHerbert Xue 4798*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4799*dc5640d1SHerbert Xue </doc> 4800*dc5640d1SHerbert Xue </class> 4801*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.ArrowType --> 4802*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.CompassPoint --> 4803*dc5640d1SHerbert Xue <class name="CompassPoint" extends="java.lang.Enum<com.google.inject.grapher.graphviz.CompassPoint>" 4804*dc5640d1SHerbert Xue abstract="false" 4805*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 4806*dc5640d1SHerbert Xue deprecated="not deprecated"> 4807*dc5640d1SHerbert Xue <method name="values" return="com.google.inject.grapher.graphviz.CompassPoint[]" 4808*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4809*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4810*dc5640d1SHerbert Xue deprecated="not deprecated"> 4811*dc5640d1SHerbert Xue </method> 4812*dc5640d1SHerbert Xue <method name="valueOf" return="com.google.inject.grapher.graphviz.CompassPoint" 4813*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4814*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4815*dc5640d1SHerbert Xue deprecated="not deprecated"> 4816*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 4817*dc5640d1SHerbert Xue </method> 4818*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 4819*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4820*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4821*dc5640d1SHerbert Xue deprecated="not deprecated"> 4822*dc5640d1SHerbert Xue </method> 4823*dc5640d1SHerbert Xue <doc> 4824*dc5640d1SHerbert Xue <![CDATA[Enum for the "compass point" values used to control where edge 4825*dc5640d1SHerbert Xue end points appear on the graph. 4826*dc5640d1SHerbert Xue <p> 4827*dc5640d1SHerbert Xue See: http://www.graphviz.org/doc/info/attrs.html#k:portPos 4828*dc5640d1SHerbert Xue 4829*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4830*dc5640d1SHerbert Xue </doc> 4831*dc5640d1SHerbert Xue </class> 4832*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.CompassPoint --> 4833*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.EdgeStyle --> 4834*dc5640d1SHerbert Xue <class name="EdgeStyle" extends="java.lang.Enum<com.google.inject.grapher.graphviz.EdgeStyle>" 4835*dc5640d1SHerbert Xue abstract="false" 4836*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 4837*dc5640d1SHerbert Xue deprecated="not deprecated"> 4838*dc5640d1SHerbert Xue <method name="values" return="com.google.inject.grapher.graphviz.EdgeStyle[]" 4839*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4840*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4841*dc5640d1SHerbert Xue deprecated="not deprecated"> 4842*dc5640d1SHerbert Xue </method> 4843*dc5640d1SHerbert Xue <method name="valueOf" return="com.google.inject.grapher.graphviz.EdgeStyle" 4844*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4845*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 4846*dc5640d1SHerbert Xue deprecated="not deprecated"> 4847*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 4848*dc5640d1SHerbert Xue </method> 4849*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 4850*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4851*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4852*dc5640d1SHerbert Xue deprecated="not deprecated"> 4853*dc5640d1SHerbert Xue </method> 4854*dc5640d1SHerbert Xue <doc> 4855*dc5640d1SHerbert Xue <![CDATA[Styles for edges. 4856*dc5640d1SHerbert Xue <p> 4857*dc5640d1SHerbert Xue See: http://www.graphviz.org/doc/info/attrs.html#k:style 4858*dc5640d1SHerbert Xue 4859*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4860*dc5640d1SHerbert Xue </doc> 4861*dc5640d1SHerbert Xue </class> 4862*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.EdgeStyle --> 4863*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.GraphvizEdge --> 4864*dc5640d1SHerbert Xue <class name="GraphvizEdge" extends="java.lang.Object" 4865*dc5640d1SHerbert Xue abstract="false" 4866*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4867*dc5640d1SHerbert Xue deprecated="not deprecated"> 4868*dc5640d1SHerbert Xue <constructor name="GraphvizEdge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId" 4869*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4870*dc5640d1SHerbert Xue deprecated="not deprecated"> 4871*dc5640d1SHerbert Xue </constructor> 4872*dc5640d1SHerbert Xue <method name="getHeadNodeId" return="com.google.inject.grapher.NodeId" 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 <doc> 4877*dc5640d1SHerbert Xue <![CDATA[@since 4.0]]> 4878*dc5640d1SHerbert Xue </doc> 4879*dc5640d1SHerbert Xue </method> 4880*dc5640d1SHerbert Xue <method name="getHeadPortId" return="java.lang.String" 4881*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4882*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4883*dc5640d1SHerbert Xue deprecated="not deprecated"> 4884*dc5640d1SHerbert Xue </method> 4885*dc5640d1SHerbert Xue <method name="setHeadPortId" 4886*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4887*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4888*dc5640d1SHerbert Xue deprecated="not deprecated"> 4889*dc5640d1SHerbert Xue <param name="headPortId" type="java.lang.String"/> 4890*dc5640d1SHerbert Xue </method> 4891*dc5640d1SHerbert Xue <method name="getHeadCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint" 4892*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4893*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4894*dc5640d1SHerbert Xue deprecated="not deprecated"> 4895*dc5640d1SHerbert Xue </method> 4896*dc5640d1SHerbert Xue <method name="setHeadCompassPoint" 4897*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4898*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4899*dc5640d1SHerbert Xue deprecated="not deprecated"> 4900*dc5640d1SHerbert Xue <param name="headCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/> 4901*dc5640d1SHerbert Xue </method> 4902*dc5640d1SHerbert Xue <method name="getArrowHead" return="java.util.List<com.google.inject.grapher.graphviz.ArrowType>" 4903*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4904*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4905*dc5640d1SHerbert Xue deprecated="not deprecated"> 4906*dc5640d1SHerbert Xue </method> 4907*dc5640d1SHerbert Xue <method name="setArrowHead" 4908*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4909*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4910*dc5640d1SHerbert Xue deprecated="not deprecated"> 4911*dc5640d1SHerbert Xue <param name="arrowHead" type="java.util.List<com.google.inject.grapher.graphviz.ArrowType>"/> 4912*dc5640d1SHerbert Xue </method> 4913*dc5640d1SHerbert Xue <method name="getTailNodeId" return="com.google.inject.grapher.NodeId" 4914*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4915*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4916*dc5640d1SHerbert Xue deprecated="not deprecated"> 4917*dc5640d1SHerbert Xue <doc> 4918*dc5640d1SHerbert Xue <![CDATA[@since 4.0]]> 4919*dc5640d1SHerbert Xue </doc> 4920*dc5640d1SHerbert Xue </method> 4921*dc5640d1SHerbert Xue <method name="getTailPortId" return="java.lang.String" 4922*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4923*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4924*dc5640d1SHerbert Xue deprecated="not deprecated"> 4925*dc5640d1SHerbert Xue </method> 4926*dc5640d1SHerbert Xue <method name="setTailPortId" 4927*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4928*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4929*dc5640d1SHerbert Xue deprecated="not deprecated"> 4930*dc5640d1SHerbert Xue <param name="tailPortId" type="java.lang.String"/> 4931*dc5640d1SHerbert Xue </method> 4932*dc5640d1SHerbert Xue <method name="getTailCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint" 4933*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4934*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4935*dc5640d1SHerbert Xue deprecated="not deprecated"> 4936*dc5640d1SHerbert Xue </method> 4937*dc5640d1SHerbert Xue <method name="setTailCompassPoint" 4938*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4939*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4940*dc5640d1SHerbert Xue deprecated="not deprecated"> 4941*dc5640d1SHerbert Xue <param name="tailCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/> 4942*dc5640d1SHerbert Xue </method> 4943*dc5640d1SHerbert Xue <method name="getArrowTail" return="java.util.List<com.google.inject.grapher.graphviz.ArrowType>" 4944*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4945*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4946*dc5640d1SHerbert Xue deprecated="not deprecated"> 4947*dc5640d1SHerbert Xue </method> 4948*dc5640d1SHerbert Xue <method name="setArrowTail" 4949*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4950*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4951*dc5640d1SHerbert Xue deprecated="not deprecated"> 4952*dc5640d1SHerbert Xue <param name="arrowTail" type="java.util.List<com.google.inject.grapher.graphviz.ArrowType>"/> 4953*dc5640d1SHerbert Xue </method> 4954*dc5640d1SHerbert Xue <method name="getStyle" return="com.google.inject.grapher.graphviz.EdgeStyle" 4955*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4956*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4957*dc5640d1SHerbert Xue deprecated="not deprecated"> 4958*dc5640d1SHerbert Xue </method> 4959*dc5640d1SHerbert Xue <method name="setStyle" 4960*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4961*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4962*dc5640d1SHerbert Xue deprecated="not deprecated"> 4963*dc5640d1SHerbert Xue <param name="style" type="com.google.inject.grapher.graphviz.EdgeStyle"/> 4964*dc5640d1SHerbert Xue </method> 4965*dc5640d1SHerbert Xue <doc> 4966*dc5640d1SHerbert Xue <![CDATA[Data object to encapsulate the attributes of Graphviz edges that we're 4967*dc5640d1SHerbert Xue interested in drawing. 4968*dc5640d1SHerbert Xue 4969*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 4970*dc5640d1SHerbert Xue </doc> 4971*dc5640d1SHerbert Xue </class> 4972*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.GraphvizEdge --> 4973*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.GraphvizGrapher --> 4974*dc5640d1SHerbert Xue <class name="GraphvizGrapher" extends="com.google.inject.grapher.AbstractInjectorGrapher" 4975*dc5640d1SHerbert Xue abstract="false" 4976*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4977*dc5640d1SHerbert Xue deprecated="not deprecated"> 4978*dc5640d1SHerbert Xue <method name="reset" 4979*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4980*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 4981*dc5640d1SHerbert Xue deprecated="not deprecated"> 4982*dc5640d1SHerbert Xue </method> 4983*dc5640d1SHerbert Xue <method name="setOut" 4984*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4985*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4986*dc5640d1SHerbert Xue deprecated="not deprecated"> 4987*dc5640d1SHerbert Xue <param name="out" type="java.io.PrintWriter"/> 4988*dc5640d1SHerbert Xue </method> 4989*dc5640d1SHerbert Xue <method name="setRankdir" 4990*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4991*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 4992*dc5640d1SHerbert Xue deprecated="not deprecated"> 4993*dc5640d1SHerbert Xue <param name="rankdir" type="java.lang.String"/> 4994*dc5640d1SHerbert Xue </method> 4995*dc5640d1SHerbert Xue <method name="postProcess" 4996*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 4997*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 4998*dc5640d1SHerbert Xue deprecated="not deprecated"> 4999*dc5640d1SHerbert Xue </method> 5000*dc5640d1SHerbert Xue <method name="getGraphAttributes" return="java.util.Map<java.lang.String, java.lang.String>" 5001*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5002*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5003*dc5640d1SHerbert Xue deprecated="not deprecated"> 5004*dc5640d1SHerbert Xue </method> 5005*dc5640d1SHerbert Xue <method name="start" 5006*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5007*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5008*dc5640d1SHerbert Xue deprecated="not deprecated"> 5009*dc5640d1SHerbert Xue </method> 5010*dc5640d1SHerbert Xue <method name="finish" 5011*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5012*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5013*dc5640d1SHerbert Xue deprecated="not deprecated"> 5014*dc5640d1SHerbert Xue </method> 5015*dc5640d1SHerbert Xue <method name="renderNode" 5016*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5017*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5018*dc5640d1SHerbert Xue deprecated="not deprecated"> 5019*dc5640d1SHerbert Xue <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/> 5020*dc5640d1SHerbert Xue </method> 5021*dc5640d1SHerbert Xue <method name="getNodeAttributes" return="java.util.Map<java.lang.String, java.lang.String>" 5022*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5023*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5024*dc5640d1SHerbert Xue deprecated="not deprecated"> 5025*dc5640d1SHerbert Xue <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/> 5026*dc5640d1SHerbert Xue </method> 5027*dc5640d1SHerbert Xue <method name="getNodeLabel" return="java.lang.String" 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 <doc> 5033*dc5640d1SHerbert Xue <![CDATA[Creates the "label" for a node. This is a string of HTML that defines a 5034*dc5640d1SHerbert Xue table with a heading at the top and (in the case of 5035*dc5640d1SHerbert Xue {@link ImplementationNode}s) rows for each of the member fields.]]> 5036*dc5640d1SHerbert Xue </doc> 5037*dc5640d1SHerbert Xue </method> 5038*dc5640d1SHerbert Xue <method name="renderEdge" 5039*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5040*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5041*dc5640d1SHerbert Xue deprecated="not deprecated"> 5042*dc5640d1SHerbert Xue <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/> 5043*dc5640d1SHerbert Xue </method> 5044*dc5640d1SHerbert Xue <method name="getEdgeAttributes" return="java.util.Map<java.lang.String, java.lang.String>" 5045*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5046*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5047*dc5640d1SHerbert Xue deprecated="not deprecated"> 5048*dc5640d1SHerbert Xue <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/> 5049*dc5640d1SHerbert Xue </method> 5050*dc5640d1SHerbert Xue <method name="getArrowString" return="java.lang.String" 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="arrows" type="java.util.List<com.google.inject.grapher.graphviz.ArrowType>"/> 5055*dc5640d1SHerbert Xue <doc> 5056*dc5640d1SHerbert Xue <![CDATA[Turns a {@link List} of {@link ArrowType}s into a {@link String} that 5057*dc5640d1SHerbert Xue represents combining them. With Graphviz, that just means concatenating 5058*dc5640d1SHerbert Xue them.]]> 5059*dc5640d1SHerbert Xue </doc> 5060*dc5640d1SHerbert Xue </method> 5061*dc5640d1SHerbert Xue <method name="getEdgeEndPoint" return="java.lang.String" 5062*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5063*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5064*dc5640d1SHerbert Xue deprecated="not deprecated"> 5065*dc5640d1SHerbert Xue <param name="nodeId" type="java.lang.String"/> 5066*dc5640d1SHerbert Xue <param name="portId" type="java.lang.String"/> 5067*dc5640d1SHerbert Xue <param name="compassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/> 5068*dc5640d1SHerbert Xue </method> 5069*dc5640d1SHerbert Xue <method name="htmlEscape" return="java.lang.String" 5070*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5071*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5072*dc5640d1SHerbert Xue deprecated="not deprecated"> 5073*dc5640d1SHerbert Xue <param name="str" type="java.lang.String"/> 5074*dc5640d1SHerbert Xue </method> 5075*dc5640d1SHerbert Xue <method name="htmlEscape" return="java.util.List<java.lang.String>" 5076*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5077*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5078*dc5640d1SHerbert Xue deprecated="not deprecated"> 5079*dc5640d1SHerbert Xue <param name="elements" type="java.util.List<java.lang.String>"/> 5080*dc5640d1SHerbert Xue </method> 5081*dc5640d1SHerbert Xue <method name="newInterfaceNode" 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="node" type="com.google.inject.grapher.InterfaceNode"/> 5086*dc5640d1SHerbert Xue </method> 5087*dc5640d1SHerbert Xue <method name="newImplementationNode" 5088*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5089*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5090*dc5640d1SHerbert Xue deprecated="not deprecated"> 5091*dc5640d1SHerbert Xue <param name="node" type="com.google.inject.grapher.ImplementationNode"/> 5092*dc5640d1SHerbert Xue </method> 5093*dc5640d1SHerbert Xue <method name="newInstanceNode" 5094*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5095*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5096*dc5640d1SHerbert Xue deprecated="not deprecated"> 5097*dc5640d1SHerbert Xue <param name="node" type="com.google.inject.grapher.InstanceNode"/> 5098*dc5640d1SHerbert Xue </method> 5099*dc5640d1SHerbert Xue <method name="newDependencyEdge" 5100*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5101*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5102*dc5640d1SHerbert Xue deprecated="not deprecated"> 5103*dc5640d1SHerbert Xue <param name="edge" type="com.google.inject.grapher.DependencyEdge"/> 5104*dc5640d1SHerbert Xue </method> 5105*dc5640d1SHerbert Xue <method name="newBindingEdge" 5106*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5107*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5108*dc5640d1SHerbert Xue deprecated="not deprecated"> 5109*dc5640d1SHerbert Xue <param name="edge" type="com.google.inject.grapher.BindingEdge"/> 5110*dc5640d1SHerbert Xue </method> 5111*dc5640d1SHerbert Xue <doc> 5112*dc5640d1SHerbert Xue <![CDATA[{@link com.google.inject.grapher.InjectorGrapher} implementation that writes out a Graphviz DOT 5113*dc5640d1SHerbert Xue file of the graph. Dependencies are bound in {@link GraphvizModule}. 5114*dc5640d1SHerbert Xue <p> 5115*dc5640d1SHerbert Xue Specify the {@link PrintWriter} to output to with {@link #setOut(PrintWriter)}. 5116*dc5640d1SHerbert Xue 5117*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins) 5118*dc5640d1SHerbert Xue @since 4.0]]> 5119*dc5640d1SHerbert Xue </doc> 5120*dc5640d1SHerbert Xue </class> 5121*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.GraphvizGrapher --> 5122*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.GraphvizModule --> 5123*dc5640d1SHerbert Xue <class name="GraphvizModule" extends="com.google.inject.AbstractModule" 5124*dc5640d1SHerbert Xue abstract="false" 5125*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5126*dc5640d1SHerbert Xue deprecated="not deprecated"> 5127*dc5640d1SHerbert Xue <constructor name="GraphvizModule" 5128*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5129*dc5640d1SHerbert Xue deprecated="not deprecated"> 5130*dc5640d1SHerbert Xue </constructor> 5131*dc5640d1SHerbert Xue <method name="configure" 5132*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5133*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 5134*dc5640d1SHerbert Xue deprecated="not deprecated"> 5135*dc5640d1SHerbert Xue </method> 5136*dc5640d1SHerbert Xue <doc> 5137*dc5640d1SHerbert Xue <![CDATA[Module that provides classes needed by {@link GraphvizGrapher}. 5138*dc5640d1SHerbert Xue 5139*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 5140*dc5640d1SHerbert Xue </doc> 5141*dc5640d1SHerbert Xue </class> 5142*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.GraphvizModule --> 5143*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.GraphvizNode --> 5144*dc5640d1SHerbert Xue <class name="GraphvizNode" extends="java.lang.Object" 5145*dc5640d1SHerbert Xue abstract="false" 5146*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5147*dc5640d1SHerbert Xue deprecated="not deprecated"> 5148*dc5640d1SHerbert Xue <constructor name="GraphvizNode" type="com.google.inject.grapher.NodeId" 5149*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5150*dc5640d1SHerbert Xue deprecated="not deprecated"> 5151*dc5640d1SHerbert Xue <doc> 5152*dc5640d1SHerbert Xue <![CDATA[@since 4.0]]> 5153*dc5640d1SHerbert Xue </doc> 5154*dc5640d1SHerbert Xue </constructor> 5155*dc5640d1SHerbert Xue <method name="getNodeId" return="com.google.inject.grapher.NodeId" 5156*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5157*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5158*dc5640d1SHerbert Xue deprecated="not deprecated"> 5159*dc5640d1SHerbert Xue <doc> 5160*dc5640d1SHerbert Xue <![CDATA[@since 4.0]]> 5161*dc5640d1SHerbert Xue </doc> 5162*dc5640d1SHerbert Xue </method> 5163*dc5640d1SHerbert Xue <method name="getShape" return="com.google.inject.grapher.graphviz.NodeShape" 5164*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5165*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5166*dc5640d1SHerbert Xue deprecated="not deprecated"> 5167*dc5640d1SHerbert Xue </method> 5168*dc5640d1SHerbert Xue <method name="setShape" 5169*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5170*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5171*dc5640d1SHerbert Xue deprecated="not deprecated"> 5172*dc5640d1SHerbert Xue <param name="shape" type="com.google.inject.grapher.graphviz.NodeShape"/> 5173*dc5640d1SHerbert Xue </method> 5174*dc5640d1SHerbert Xue <method name="getStyle" return="com.google.inject.grapher.graphviz.NodeStyle" 5175*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5176*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5177*dc5640d1SHerbert Xue deprecated="not deprecated"> 5178*dc5640d1SHerbert Xue </method> 5179*dc5640d1SHerbert Xue <method name="setStyle" 5180*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5181*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5182*dc5640d1SHerbert Xue deprecated="not deprecated"> 5183*dc5640d1SHerbert Xue <param name="style" type="com.google.inject.grapher.graphviz.NodeStyle"/> 5184*dc5640d1SHerbert Xue </method> 5185*dc5640d1SHerbert Xue <method name="getTitle" return="java.lang.String" 5186*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5187*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5188*dc5640d1SHerbert Xue deprecated="not deprecated"> 5189*dc5640d1SHerbert Xue </method> 5190*dc5640d1SHerbert Xue <method name="setTitle" 5191*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5192*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5193*dc5640d1SHerbert Xue deprecated="not deprecated"> 5194*dc5640d1SHerbert Xue <param name="title" type="java.lang.String"/> 5195*dc5640d1SHerbert Xue </method> 5196*dc5640d1SHerbert Xue <method name="getSubtitles" return="java.util.List<java.lang.String>" 5197*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5198*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5199*dc5640d1SHerbert Xue deprecated="not deprecated"> 5200*dc5640d1SHerbert Xue </method> 5201*dc5640d1SHerbert Xue <method name="addSubtitle" 5202*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5203*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5204*dc5640d1SHerbert Xue deprecated="not deprecated"> 5205*dc5640d1SHerbert Xue <param name="position" type="int"/> 5206*dc5640d1SHerbert Xue <param name="subtitle" type="java.lang.String"/> 5207*dc5640d1SHerbert Xue </method> 5208*dc5640d1SHerbert Xue <method name="getHeaderTextColor" return="java.lang.String" 5209*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5210*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5211*dc5640d1SHerbert Xue deprecated="not deprecated"> 5212*dc5640d1SHerbert Xue </method> 5213*dc5640d1SHerbert Xue <method name="setHeaderTextColor" 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="headerTextColor" type="java.lang.String"/> 5218*dc5640d1SHerbert Xue </method> 5219*dc5640d1SHerbert Xue <method name="getHeaderBackgroundColor" return="java.lang.String" 5220*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5221*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5222*dc5640d1SHerbert Xue deprecated="not deprecated"> 5223*dc5640d1SHerbert Xue </method> 5224*dc5640d1SHerbert Xue <method name="setHeaderBackgroundColor" 5225*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5226*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5227*dc5640d1SHerbert Xue deprecated="not deprecated"> 5228*dc5640d1SHerbert Xue <param name="headerBackgroundColor" type="java.lang.String"/> 5229*dc5640d1SHerbert Xue </method> 5230*dc5640d1SHerbert Xue <method name="addField" 5231*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5232*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5233*dc5640d1SHerbert Xue deprecated="not deprecated"> 5234*dc5640d1SHerbert Xue <param name="portId" type="java.lang.String"/> 5235*dc5640d1SHerbert Xue <param name="title" type="java.lang.String"/> 5236*dc5640d1SHerbert Xue </method> 5237*dc5640d1SHerbert Xue <method name="getFields" return="java.util.Map<java.lang.String, java.lang.String>" 5238*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5239*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5240*dc5640d1SHerbert Xue deprecated="not deprecated"> 5241*dc5640d1SHerbert Xue </method> 5242*dc5640d1SHerbert Xue <method name="getIdentifier" return="java.lang.String" 5243*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5244*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5245*dc5640d1SHerbert Xue deprecated="not deprecated"> 5246*dc5640d1SHerbert Xue <doc> 5247*dc5640d1SHerbert Xue <![CDATA[@since 4.0]]> 5248*dc5640d1SHerbert Xue </doc> 5249*dc5640d1SHerbert Xue </method> 5250*dc5640d1SHerbert Xue <method name="setIdentifier" 5251*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5252*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5253*dc5640d1SHerbert Xue deprecated="not deprecated"> 5254*dc5640d1SHerbert Xue <param name="identifier" type="java.lang.String"/> 5255*dc5640d1SHerbert Xue <doc> 5256*dc5640d1SHerbert Xue <![CDATA[@since 4.0]]> 5257*dc5640d1SHerbert Xue </doc> 5258*dc5640d1SHerbert Xue </method> 5259*dc5640d1SHerbert Xue <doc> 5260*dc5640d1SHerbert Xue <![CDATA[Data object to encapsulate the attributes of Graphviz nodes that we're 5261*dc5640d1SHerbert Xue interested in drawing. 5262*dc5640d1SHerbert Xue 5263*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 5264*dc5640d1SHerbert Xue </doc> 5265*dc5640d1SHerbert Xue </class> 5266*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.GraphvizNode --> 5267*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.NodeShape --> 5268*dc5640d1SHerbert Xue <class name="NodeShape" extends="java.lang.Enum<com.google.inject.grapher.graphviz.NodeShape>" 5269*dc5640d1SHerbert Xue abstract="false" 5270*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 5271*dc5640d1SHerbert Xue deprecated="not deprecated"> 5272*dc5640d1SHerbert Xue <method name="values" return="com.google.inject.grapher.graphviz.NodeShape[]" 5273*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5274*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5275*dc5640d1SHerbert Xue deprecated="not deprecated"> 5276*dc5640d1SHerbert Xue </method> 5277*dc5640d1SHerbert Xue <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeShape" 5278*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5279*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5280*dc5640d1SHerbert Xue deprecated="not deprecated"> 5281*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 5282*dc5640d1SHerbert Xue </method> 5283*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 5284*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5285*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5286*dc5640d1SHerbert Xue deprecated="not deprecated"> 5287*dc5640d1SHerbert Xue </method> 5288*dc5640d1SHerbert Xue <doc> 5289*dc5640d1SHerbert Xue <![CDATA[Enum for the shapes that are most interesting for Guice graphing. 5290*dc5640d1SHerbert Xue <p> 5291*dc5640d1SHerbert Xue See: http://www.graphviz.org/doc/info/shapes.html 5292*dc5640d1SHerbert Xue 5293*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 5294*dc5640d1SHerbert Xue </doc> 5295*dc5640d1SHerbert Xue </class> 5296*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.NodeShape --> 5297*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.NodeStyle --> 5298*dc5640d1SHerbert Xue <class name="NodeStyle" extends="java.lang.Enum<com.google.inject.grapher.graphviz.NodeStyle>" 5299*dc5640d1SHerbert Xue abstract="false" 5300*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 5301*dc5640d1SHerbert Xue deprecated="not deprecated"> 5302*dc5640d1SHerbert Xue <method name="values" return="com.google.inject.grapher.graphviz.NodeStyle[]" 5303*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5304*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5305*dc5640d1SHerbert Xue deprecated="not deprecated"> 5306*dc5640d1SHerbert Xue </method> 5307*dc5640d1SHerbert Xue <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeStyle" 5308*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5309*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5310*dc5640d1SHerbert Xue deprecated="not deprecated"> 5311*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 5312*dc5640d1SHerbert Xue </method> 5313*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 5314*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5315*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5316*dc5640d1SHerbert Xue deprecated="not deprecated"> 5317*dc5640d1SHerbert Xue </method> 5318*dc5640d1SHerbert Xue <doc> 5319*dc5640d1SHerbert Xue <![CDATA[Styles for nodes. Similar to {@link EdgeStyle} but with a few more options. 5320*dc5640d1SHerbert Xue <p> 5321*dc5640d1SHerbert Xue See: http://www.graphviz.org/doc/info/attrs.html#k:style 5322*dc5640d1SHerbert Xue 5323*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 5324*dc5640d1SHerbert Xue </doc> 5325*dc5640d1SHerbert Xue </class> 5326*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.NodeStyle --> 5327*dc5640d1SHerbert Xue <!-- start interface com.google.inject.grapher.graphviz.PortIdFactory --> 5328*dc5640d1SHerbert Xue <interface name="PortIdFactory" abstract="true" 5329*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5330*dc5640d1SHerbert Xue deprecated="not deprecated"> 5331*dc5640d1SHerbert Xue <method name="getPortId" return="java.lang.String" 5332*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 5333*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5334*dc5640d1SHerbert Xue deprecated="not deprecated"> 5335*dc5640d1SHerbert Xue <param name="member" type="java.lang.reflect.Member"/> 5336*dc5640d1SHerbert Xue </method> 5337*dc5640d1SHerbert Xue <doc> 5338*dc5640d1SHerbert Xue <![CDATA[Interface for a service that returns Graphviz port IDs, used for naming the 5339*dc5640d1SHerbert Xue rows in {@link com.google.inject.grapher.ImplementationNode}-displaying {@link GraphvizNode}s. 5340*dc5640d1SHerbert Xue 5341*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 5342*dc5640d1SHerbert Xue </doc> 5343*dc5640d1SHerbert Xue </interface> 5344*dc5640d1SHerbert Xue <!-- end interface com.google.inject.grapher.graphviz.PortIdFactory --> 5345*dc5640d1SHerbert Xue <!-- start class com.google.inject.grapher.graphviz.PortIdFactoryImpl --> 5346*dc5640d1SHerbert Xue <class name="PortIdFactoryImpl" extends="java.lang.Object" 5347*dc5640d1SHerbert Xue abstract="false" 5348*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5349*dc5640d1SHerbert Xue deprecated="not deprecated"> 5350*dc5640d1SHerbert Xue <implements name="com.google.inject.grapher.graphviz.PortIdFactory"/> 5351*dc5640d1SHerbert Xue <constructor name="PortIdFactoryImpl" 5352*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5353*dc5640d1SHerbert Xue deprecated="not deprecated"> 5354*dc5640d1SHerbert Xue </constructor> 5355*dc5640d1SHerbert Xue <method name="getPortId" return="java.lang.String" 5356*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5357*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5358*dc5640d1SHerbert Xue deprecated="not deprecated"> 5359*dc5640d1SHerbert Xue <param name="member" type="java.lang.reflect.Member"/> 5360*dc5640d1SHerbert Xue </method> 5361*dc5640d1SHerbert Xue <doc> 5362*dc5640d1SHerbert Xue <![CDATA[Implementation of {@link PortIdFactory}. Bound in {@link GraphvizModule}. 5363*dc5640d1SHerbert Xue 5364*dc5640d1SHerbert Xue @author [email protected] (Pete Hopkins)]]> 5365*dc5640d1SHerbert Xue </doc> 5366*dc5640d1SHerbert Xue </class> 5367*dc5640d1SHerbert Xue <!-- end class com.google.inject.grapher.graphviz.PortIdFactoryImpl --> 5368*dc5640d1SHerbert Xue</package> 5369*dc5640d1SHerbert Xue<package name="com.google.inject.jndi"> 5370*dc5640d1SHerbert Xue <!-- start class com.google.inject.jndi.JndiIntegration --> 5371*dc5640d1SHerbert Xue <class name="JndiIntegration" extends="java.lang.Object" 5372*dc5640d1SHerbert Xue abstract="false" 5373*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5374*dc5640d1SHerbert Xue deprecated="not deprecated"> 5375*dc5640d1SHerbert Xue <method name="fromJndi" return="com.google.inject.Provider<T>" 5376*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5377*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5378*dc5640d1SHerbert Xue deprecated="not deprecated"> 5379*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 5380*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 5381*dc5640d1SHerbert Xue <doc> 5382*dc5640d1SHerbert Xue <![CDATA[Creates a provider which looks up objects in JNDI using the given name. 5383*dc5640d1SHerbert Xue Example usage: 5384*dc5640d1SHerbert Xue 5385*dc5640d1SHerbert Xue <pre> 5386*dc5640d1SHerbert Xue bind(DataSource.class).toProvider(fromJndi(DataSource.class, "java:...")); 5387*dc5640d1SHerbert Xue </pre>]]> 5388*dc5640d1SHerbert Xue </doc> 5389*dc5640d1SHerbert Xue </method> 5390*dc5640d1SHerbert Xue <doc> 5391*dc5640d1SHerbert Xue <![CDATA[Integrates Guice with JNDI. Requires a binding to 5392*dc5640d1SHerbert Xue {@link javax.naming.Context}. 5393*dc5640d1SHerbert Xue 5394*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 5395*dc5640d1SHerbert Xue </doc> 5396*dc5640d1SHerbert Xue </class> 5397*dc5640d1SHerbert Xue <!-- end class com.google.inject.jndi.JndiIntegration --> 5398*dc5640d1SHerbert Xue</package> 5399*dc5640d1SHerbert Xue<package name="com.google.inject.matcher"> 5400*dc5640d1SHerbert Xue <!-- start class com.google.inject.matcher.AbstractMatcher --> 5401*dc5640d1SHerbert Xue <class name="AbstractMatcher" extends="java.lang.Object" 5402*dc5640d1SHerbert Xue abstract="true" 5403*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5404*dc5640d1SHerbert Xue deprecated="not deprecated"> 5405*dc5640d1SHerbert Xue <implements name="com.google.inject.matcher.Matcher<T>"/> 5406*dc5640d1SHerbert Xue <constructor name="AbstractMatcher" 5407*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5408*dc5640d1SHerbert Xue deprecated="not deprecated"> 5409*dc5640d1SHerbert Xue </constructor> 5410*dc5640d1SHerbert Xue <method name="and" return="com.google.inject.matcher.Matcher<T>" 5411*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5412*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5413*dc5640d1SHerbert Xue deprecated="not deprecated"> 5414*dc5640d1SHerbert Xue <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 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 </method> 5422*dc5640d1SHerbert Xue <doc> 5423*dc5640d1SHerbert Xue <![CDATA[Implements {@code and()} and {@code or()}. 5424*dc5640d1SHerbert Xue 5425*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 5426*dc5640d1SHerbert Xue </doc> 5427*dc5640d1SHerbert Xue </class> 5428*dc5640d1SHerbert Xue <!-- end class com.google.inject.matcher.AbstractMatcher --> 5429*dc5640d1SHerbert Xue <!-- start interface com.google.inject.matcher.Matcher --> 5430*dc5640d1SHerbert Xue <interface name="Matcher" abstract="true" 5431*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5432*dc5640d1SHerbert Xue deprecated="not deprecated"> 5433*dc5640d1SHerbert Xue <method name="matches" return="boolean" 5434*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 5435*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5436*dc5640d1SHerbert Xue deprecated="not deprecated"> 5437*dc5640d1SHerbert Xue <param name="t" type="T"/> 5438*dc5640d1SHerbert Xue <doc> 5439*dc5640d1SHerbert Xue <![CDATA[Returns {@code true} if this matches {@code t}, {@code false} otherwise.]]> 5440*dc5640d1SHerbert Xue </doc> 5441*dc5640d1SHerbert Xue </method> 5442*dc5640d1SHerbert Xue <method name="and" return="com.google.inject.matcher.Matcher<T>" 5443*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 5444*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5445*dc5640d1SHerbert Xue deprecated="not deprecated"> 5446*dc5640d1SHerbert Xue <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 5447*dc5640d1SHerbert Xue <doc> 5448*dc5640d1SHerbert Xue <![CDATA[Returns a new matcher which returns {@code true} if both this and the 5449*dc5640d1SHerbert Xue given matcher return {@code true}.]]> 5450*dc5640d1SHerbert Xue </doc> 5451*dc5640d1SHerbert Xue </method> 5452*dc5640d1SHerbert Xue <method name="or" return="com.google.inject.matcher.Matcher<T>" 5453*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 5454*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5455*dc5640d1SHerbert Xue deprecated="not deprecated"> 5456*dc5640d1SHerbert Xue <param name="other" type="com.google.inject.matcher.Matcher<? super T>"/> 5457*dc5640d1SHerbert Xue <doc> 5458*dc5640d1SHerbert Xue <![CDATA[Returns a new matcher which returns {@code true} if either this or the 5459*dc5640d1SHerbert Xue given matcher return {@code true}.]]> 5460*dc5640d1SHerbert Xue </doc> 5461*dc5640d1SHerbert Xue </method> 5462*dc5640d1SHerbert Xue <doc> 5463*dc5640d1SHerbert Xue <![CDATA[Returns {@code true} or {@code false} for a given input. 5464*dc5640d1SHerbert Xue 5465*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 5466*dc5640d1SHerbert Xue </doc> 5467*dc5640d1SHerbert Xue </interface> 5468*dc5640d1SHerbert Xue <!-- end interface com.google.inject.matcher.Matcher --> 5469*dc5640d1SHerbert Xue <!-- start class com.google.inject.matcher.Matchers --> 5470*dc5640d1SHerbert Xue <class name="Matchers" extends="java.lang.Object" 5471*dc5640d1SHerbert Xue abstract="false" 5472*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5473*dc5640d1SHerbert Xue deprecated="not deprecated"> 5474*dc5640d1SHerbert Xue <method name="any" return="com.google.inject.matcher.Matcher<java.lang.Object>" 5475*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5476*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5477*dc5640d1SHerbert Xue deprecated="not deprecated"> 5478*dc5640d1SHerbert Xue <doc> 5479*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches any input.]]> 5480*dc5640d1SHerbert Xue </doc> 5481*dc5640d1SHerbert Xue </method> 5482*dc5640d1SHerbert Xue <method name="not" return="com.google.inject.matcher.Matcher<T>" 5483*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5484*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5485*dc5640d1SHerbert Xue deprecated="not deprecated"> 5486*dc5640d1SHerbert Xue <param name="p" type="com.google.inject.matcher.Matcher<? super T>"/> 5487*dc5640d1SHerbert Xue <doc> 5488*dc5640d1SHerbert Xue <![CDATA[Inverts the given matcher.]]> 5489*dc5640d1SHerbert Xue </doc> 5490*dc5640d1SHerbert Xue </method> 5491*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.matcher.Matcher<java.lang.reflect.AnnotatedElement>" 5492*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5493*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5494*dc5640d1SHerbert Xue deprecated="not deprecated"> 5495*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5496*dc5640d1SHerbert Xue <doc> 5497*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches elements (methods, classes, etc.) 5498*dc5640d1SHerbert Xue with a given annotation.]]> 5499*dc5640d1SHerbert Xue </doc> 5500*dc5640d1SHerbert Xue </method> 5501*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.matcher.Matcher<java.lang.reflect.AnnotatedElement>" 5502*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5503*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5504*dc5640d1SHerbert Xue deprecated="not deprecated"> 5505*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 5506*dc5640d1SHerbert Xue <doc> 5507*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches elements (methods, classes, etc.) 5508*dc5640d1SHerbert Xue with a given annotation.]]> 5509*dc5640d1SHerbert Xue </doc> 5510*dc5640d1SHerbert Xue </method> 5511*dc5640d1SHerbert Xue <method name="subclassesOf" return="com.google.inject.matcher.Matcher<java.lang.Class>" 5512*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5513*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5514*dc5640d1SHerbert Xue deprecated="not deprecated"> 5515*dc5640d1SHerbert Xue <param name="superclass" type="java.lang.Class<?>"/> 5516*dc5640d1SHerbert Xue <doc> 5517*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches subclasses of the given type (as well as 5518*dc5640d1SHerbert Xue the given type).]]> 5519*dc5640d1SHerbert Xue </doc> 5520*dc5640d1SHerbert Xue </method> 5521*dc5640d1SHerbert Xue <method name="only" return="com.google.inject.matcher.Matcher<java.lang.Object>" 5522*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5523*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5524*dc5640d1SHerbert Xue deprecated="not deprecated"> 5525*dc5640d1SHerbert Xue <param name="value" type="java.lang.Object"/> 5526*dc5640d1SHerbert Xue <doc> 5527*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches objects equal to the given object.]]> 5528*dc5640d1SHerbert Xue </doc> 5529*dc5640d1SHerbert Xue </method> 5530*dc5640d1SHerbert Xue <method name="identicalTo" return="com.google.inject.matcher.Matcher<java.lang.Object>" 5531*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5532*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5533*dc5640d1SHerbert Xue deprecated="not deprecated"> 5534*dc5640d1SHerbert Xue <param name="value" type="java.lang.Object"/> 5535*dc5640d1SHerbert Xue <doc> 5536*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches only the given object.]]> 5537*dc5640d1SHerbert Xue </doc> 5538*dc5640d1SHerbert Xue </method> 5539*dc5640d1SHerbert Xue <method name="inPackage" return="com.google.inject.matcher.Matcher<java.lang.Class>" 5540*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5541*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5542*dc5640d1SHerbert Xue deprecated="not deprecated"> 5543*dc5640d1SHerbert Xue <param name="targetPackage" type="java.lang.Package"/> 5544*dc5640d1SHerbert Xue <doc> 5545*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches classes in the given package. Packages are specific to their 5546*dc5640d1SHerbert Xue classloader, so classes with the same package name may not have the same package at runtime.]]> 5547*dc5640d1SHerbert Xue </doc> 5548*dc5640d1SHerbert Xue </method> 5549*dc5640d1SHerbert Xue <method name="inSubpackage" return="com.google.inject.matcher.Matcher<java.lang.Class>" 5550*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5551*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5552*dc5640d1SHerbert Xue deprecated="not deprecated"> 5553*dc5640d1SHerbert Xue <param name="targetPackageName" type="java.lang.String"/> 5554*dc5640d1SHerbert Xue <doc> 5555*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches classes in the given package and its subpackages. Unlike 5556*dc5640d1SHerbert Xue {@link #inPackage(Package) inPackage()}, this matches classes from any classloader. 5557*dc5640d1SHerbert Xue 5558*dc5640d1SHerbert Xue @since 2.0]]> 5559*dc5640d1SHerbert Xue </doc> 5560*dc5640d1SHerbert Xue </method> 5561*dc5640d1SHerbert Xue <method name="returns" return="com.google.inject.matcher.Matcher<java.lang.reflect.Method>" 5562*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5563*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5564*dc5640d1SHerbert Xue deprecated="not deprecated"> 5565*dc5640d1SHerbert Xue <param name="returnType" type="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>"/> 5566*dc5640d1SHerbert Xue <doc> 5567*dc5640d1SHerbert Xue <![CDATA[Returns a matcher which matches methods with matching return types.]]> 5568*dc5640d1SHerbert Xue </doc> 5569*dc5640d1SHerbert Xue </method> 5570*dc5640d1SHerbert Xue <doc> 5571*dc5640d1SHerbert Xue <![CDATA[Matcher implementations. Supports matching classes and methods. 5572*dc5640d1SHerbert Xue 5573*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 5574*dc5640d1SHerbert Xue </doc> 5575*dc5640d1SHerbert Xue </class> 5576*dc5640d1SHerbert Xue <!-- end class com.google.inject.matcher.Matchers --> 5577*dc5640d1SHerbert Xue</package> 5578*dc5640d1SHerbert Xue<package name="com.google.inject.multibindings"> 5579*dc5640d1SHerbert Xue <!-- start class com.google.inject.multibindings.ClassMapKey --> 5580*dc5640d1SHerbert Xue <class name="ClassMapKey" abstract="true" 5581*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5582*dc5640d1SHerbert Xue deprecated="not deprecated"> 5583*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 5584*dc5640d1SHerbert Xue <doc> 5585*dc5640d1SHerbert Xue <![CDATA[Allows {@literal @}{@link ProvidesIntoMap} to specify a class map key. 5586*dc5640d1SHerbert Xue 5587*dc5640d1SHerbert Xue @since 4.0]]> 5588*dc5640d1SHerbert Xue </doc> 5589*dc5640d1SHerbert Xue </class> 5590*dc5640d1SHerbert Xue <!-- end class com.google.inject.multibindings.ClassMapKey --> 5591*dc5640d1SHerbert Xue <!-- start class com.google.inject.multibindings.MapBinder --> 5592*dc5640d1SHerbert Xue <class name="MapBinder" extends="java.lang.Object" 5593*dc5640d1SHerbert Xue abstract="true" 5594*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5595*dc5640d1SHerbert Xue deprecated="not deprecated"> 5596*dc5640d1SHerbert Xue <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5597*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5598*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5599*dc5640d1SHerbert Xue deprecated="not deprecated"> 5600*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5601*dc5640d1SHerbert Xue <param name="keyType" type="com.google.inject.TypeLiteral<K>"/> 5602*dc5640d1SHerbert Xue <param name="valueType" type="com.google.inject.TypeLiteral<V>"/> 5603*dc5640d1SHerbert Xue <doc> 5604*dc5640d1SHerbert Xue <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5605*dc5640d1SHerbert Xue {@link Map} that is itself bound with no binding annotation.]]> 5606*dc5640d1SHerbert Xue </doc> 5607*dc5640d1SHerbert Xue </method> 5608*dc5640d1SHerbert Xue <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5609*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5610*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5611*dc5640d1SHerbert Xue deprecated="not deprecated"> 5612*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5613*dc5640d1SHerbert Xue <param name="keyType" type="java.lang.Class<K>"/> 5614*dc5640d1SHerbert Xue <param name="valueType" type="java.lang.Class<V>"/> 5615*dc5640d1SHerbert Xue <doc> 5616*dc5640d1SHerbert Xue <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5617*dc5640d1SHerbert Xue {@link Map} that is itself bound with no binding annotation.]]> 5618*dc5640d1SHerbert Xue </doc> 5619*dc5640d1SHerbert Xue </method> 5620*dc5640d1SHerbert Xue <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5621*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5622*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5623*dc5640d1SHerbert Xue deprecated="not deprecated"> 5624*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5625*dc5640d1SHerbert Xue <param name="keyType" type="com.google.inject.TypeLiteral<K>"/> 5626*dc5640d1SHerbert Xue <param name="valueType" type="com.google.inject.TypeLiteral<V>"/> 5627*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 5628*dc5640d1SHerbert Xue <doc> 5629*dc5640d1SHerbert Xue <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5630*dc5640d1SHerbert Xue {@link Map} that is itself bound with {@code annotation}.]]> 5631*dc5640d1SHerbert Xue </doc> 5632*dc5640d1SHerbert Xue </method> 5633*dc5640d1SHerbert Xue <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5634*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5635*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5636*dc5640d1SHerbert Xue deprecated="not deprecated"> 5637*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5638*dc5640d1SHerbert Xue <param name="keyType" type="java.lang.Class<K>"/> 5639*dc5640d1SHerbert Xue <param name="valueType" type="java.lang.Class<V>"/> 5640*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 5641*dc5640d1SHerbert Xue <doc> 5642*dc5640d1SHerbert Xue <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5643*dc5640d1SHerbert Xue {@link Map} that is itself bound with {@code annotation}.]]> 5644*dc5640d1SHerbert Xue </doc> 5645*dc5640d1SHerbert Xue </method> 5646*dc5640d1SHerbert Xue <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5647*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5648*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5649*dc5640d1SHerbert Xue deprecated="not deprecated"> 5650*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5651*dc5640d1SHerbert Xue <param name="keyType" type="com.google.inject.TypeLiteral<K>"/> 5652*dc5640d1SHerbert Xue <param name="valueType" type="com.google.inject.TypeLiteral<V>"/> 5653*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5654*dc5640d1SHerbert Xue <doc> 5655*dc5640d1SHerbert Xue <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5656*dc5640d1SHerbert Xue {@link Map} that is itself bound with {@code annotationType}.]]> 5657*dc5640d1SHerbert Xue </doc> 5658*dc5640d1SHerbert Xue </method> 5659*dc5640d1SHerbert Xue <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder<K, V>" 5660*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5661*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5662*dc5640d1SHerbert Xue deprecated="not deprecated"> 5663*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5664*dc5640d1SHerbert Xue <param name="keyType" type="java.lang.Class<K>"/> 5665*dc5640d1SHerbert Xue <param name="valueType" type="java.lang.Class<V>"/> 5666*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5667*dc5640d1SHerbert Xue <doc> 5668*dc5640d1SHerbert Xue <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a 5669*dc5640d1SHerbert Xue {@link Map} that is itself bound with {@code annotationType}.]]> 5670*dc5640d1SHerbert Xue </doc> 5671*dc5640d1SHerbert Xue </method> 5672*dc5640d1SHerbert Xue <method name="permitDuplicates" return="com.google.inject.multibindings.MapBinder<K, V>" 5673*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 5674*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5675*dc5640d1SHerbert Xue deprecated="not deprecated"> 5676*dc5640d1SHerbert Xue <doc> 5677*dc5640d1SHerbert Xue <![CDATA[Configures the {@code MapBinder} to handle duplicate entries. 5678*dc5640d1SHerbert Xue <p>When multiple equal keys are bound, the value that gets included in the map is 5679*dc5640d1SHerbert Xue arbitrary. 5680*dc5640d1SHerbert Xue <p>In addition to the {@code Map<K, V>} and {@code Map<K, Provider<V>>} 5681*dc5640d1SHerbert Xue maps that are normally bound, a {@code Map<K, Set<V>>} and 5682*dc5640d1SHerbert Xue {@code Map<K, Set<Provider<V>>>} are <em>also</em> bound, which contain 5683*dc5640d1SHerbert Xue all values bound to each key. 5684*dc5640d1SHerbert Xue <p> 5685*dc5640d1SHerbert Xue When multiple modules contribute elements to the map, this configuration 5686*dc5640d1SHerbert Xue option impacts all of them. 5687*dc5640d1SHerbert Xue 5688*dc5640d1SHerbert Xue @return this map binder 5689*dc5640d1SHerbert Xue @since 3.0]]> 5690*dc5640d1SHerbert Xue </doc> 5691*dc5640d1SHerbert Xue </method> 5692*dc5640d1SHerbert Xue <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder<V>" 5693*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 5694*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5695*dc5640d1SHerbert Xue deprecated="not deprecated"> 5696*dc5640d1SHerbert Xue <param name="key" type="K"/> 5697*dc5640d1SHerbert Xue <doc> 5698*dc5640d1SHerbert Xue <![CDATA[Returns a binding builder used to add a new entry in the map. Each 5699*dc5640d1SHerbert Xue key must be distinct (and non-null). Bound providers will be evaluated each 5700*dc5640d1SHerbert Xue time the map is injected. 5701*dc5640d1SHerbert Xue 5702*dc5640d1SHerbert Xue <p>It is an error to call this method without also calling one of the 5703*dc5640d1SHerbert Xue {@code to} methods on the returned binding builder. 5704*dc5640d1SHerbert Xue 5705*dc5640d1SHerbert Xue <p>Scoping elements independently is supported. Use the {@code in} method 5706*dc5640d1SHerbert Xue to specify a binding scope.]]> 5707*dc5640d1SHerbert Xue </doc> 5708*dc5640d1SHerbert Xue </method> 5709*dc5640d1SHerbert Xue <doc> 5710*dc5640d1SHerbert Xue <![CDATA[An API to bind multiple map entries separately, only to later inject them as 5711*dc5640d1SHerbert Xue a complete map. MapBinder is intended for use in your application's module: 5712*dc5640d1SHerbert Xue <pre><code> 5713*dc5640d1SHerbert Xue public class SnacksModule extends AbstractModule { 5714*dc5640d1SHerbert Xue protected void configure() { 5715*dc5640d1SHerbert Xue MapBinder<String, Snack> mapbinder 5716*dc5640d1SHerbert Xue = MapBinder.newMapBinder(binder(), String.class, Snack.class); 5717*dc5640d1SHerbert Xue mapbinder.addBinding("twix").toInstance(new Twix()); 5718*dc5640d1SHerbert Xue mapbinder.addBinding("snickers").toProvider(SnickersProvider.class); 5719*dc5640d1SHerbert Xue mapbinder.addBinding("skittles").to(Skittles.class); 5720*dc5640d1SHerbert Xue } 5721*dc5640d1SHerbert Xue }</code></pre> 5722*dc5640d1SHerbert Xue 5723*dc5640d1SHerbert Xue <p>With this binding, a {@link Map}{@code <String, Snack>} can now be 5724*dc5640d1SHerbert Xue injected: 5725*dc5640d1SHerbert Xue <pre><code> 5726*dc5640d1SHerbert Xue class SnackMachine { 5727*dc5640d1SHerbert Xue {@literal @}Inject 5728*dc5640d1SHerbert Xue public SnackMachine(Map<String, Snack> snacks) { ... } 5729*dc5640d1SHerbert Xue }</code></pre> 5730*dc5640d1SHerbert Xue 5731*dc5640d1SHerbert Xue <p>In addition to binding {@code Map<K, V>}, a mapbinder will also bind 5732*dc5640d1SHerbert Xue {@code Map<K, Provider<V>>} for lazy value provision: 5733*dc5640d1SHerbert Xue <pre><code> 5734*dc5640d1SHerbert Xue class SnackMachine { 5735*dc5640d1SHerbert Xue {@literal @}Inject 5736*dc5640d1SHerbert Xue public SnackMachine(Map<String, Provider<Snack>> snackProviders) { ... } 5737*dc5640d1SHerbert Xue }</code></pre> 5738*dc5640d1SHerbert Xue 5739*dc5640d1SHerbert Xue <p>Contributing mapbindings from different modules is supported. For example, 5740*dc5640d1SHerbert Xue it is okay to have both {@code CandyModule} and {@code ChipsModule} both 5741*dc5640d1SHerbert Xue create their own {@code MapBinder<String, Snack>}, and to each contribute 5742*dc5640d1SHerbert Xue bindings to the snacks map. When that map is injected, it will contain 5743*dc5640d1SHerbert Xue entries from both modules. 5744*dc5640d1SHerbert Xue 5745*dc5640d1SHerbert Xue <p>The map's iteration order is consistent with the binding order. This is 5746*dc5640d1SHerbert Xue convenient when multiple elements are contributed by the same module because 5747*dc5640d1SHerbert Xue that module can order its bindings appropriately. Avoid relying on the 5748*dc5640d1SHerbert Xue iteration order of elements contributed by different modules, since there is 5749*dc5640d1SHerbert Xue no equivalent mechanism to order modules. 5750*dc5640d1SHerbert Xue 5751*dc5640d1SHerbert Xue <p>The map is unmodifiable. Elements can only be added to the map by 5752*dc5640d1SHerbert Xue configuring the MapBinder. Elements can never be removed from the map. 5753*dc5640d1SHerbert Xue 5754*dc5640d1SHerbert Xue <p>Values are resolved at map injection time. If a value is bound to a 5755*dc5640d1SHerbert Xue provider, that provider's get method will be called each time the map is 5756*dc5640d1SHerbert Xue injected (unless the binding is also scoped, or a map of providers is injected). 5757*dc5640d1SHerbert Xue 5758*dc5640d1SHerbert Xue <p>Annotations are used to create different maps of the same key/value 5759*dc5640d1SHerbert Xue type. Each distinct annotation gets its own independent map. 5760*dc5640d1SHerbert Xue 5761*dc5640d1SHerbert Xue <p><strong>Keys must be distinct.</strong> If the same key is bound more than 5762*dc5640d1SHerbert Xue once, map injection will fail. However, use {@link #permitDuplicates()} in 5763*dc5640d1SHerbert Xue order to allow duplicate keys; extra bindings to {@code Map<K, Set<V>>} and 5764*dc5640d1SHerbert Xue {@code Map<K, Set<Provider<V>>} will be added. 5765*dc5640d1SHerbert Xue 5766*dc5640d1SHerbert Xue <p><strong>Keys must be non-null.</strong> {@code addBinding(null)} will 5767*dc5640d1SHerbert Xue throw an unchecked exception. 5768*dc5640d1SHerbert Xue 5769*dc5640d1SHerbert Xue <p><strong>Values must be non-null to use map injection.</strong> If any 5770*dc5640d1SHerbert Xue value is null, map injection will fail (although injecting a map of providers 5771*dc5640d1SHerbert Xue will not). 5772*dc5640d1SHerbert Xue 5773*dc5640d1SHerbert Xue @author [email protected] (David P. Baker)]]> 5774*dc5640d1SHerbert Xue </doc> 5775*dc5640d1SHerbert Xue </class> 5776*dc5640d1SHerbert Xue <!-- end class com.google.inject.multibindings.MapBinder --> 5777*dc5640d1SHerbert Xue <!-- start interface com.google.inject.multibindings.MapBinderBinding --> 5778*dc5640d1SHerbert Xue <interface name="MapBinderBinding" abstract="true" 5779*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5780*dc5640d1SHerbert Xue deprecated="not deprecated"> 5781*dc5640d1SHerbert Xue <method name="getMapKey" return="com.google.inject.Key<T>" 5782*dc5640d1SHerbert Xue abstract="true" 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 the {@link Key} for the map.]]> 5787*dc5640d1SHerbert Xue </doc> 5788*dc5640d1SHerbert Xue </method> 5789*dc5640d1SHerbert Xue <method name="getKeyTypeLiteral" return="com.google.inject.TypeLiteral<?>" 5790*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 5791*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5792*dc5640d1SHerbert Xue deprecated="not deprecated"> 5793*dc5640d1SHerbert Xue <doc> 5794*dc5640d1SHerbert Xue <![CDATA[Returns the TypeLiteral describing the keys of the map. 5795*dc5640d1SHerbert Xue <p> 5796*dc5640d1SHerbert Xue The TypeLiteral will always match the type Map's generic type. For example, if getMapKey 5797*dc5640d1SHerbert Xue returns a key of <code>Map<String, Snack></code>, then this will always return a 5798*dc5640d1SHerbert Xue <code>TypeLiteral<String></code>.]]> 5799*dc5640d1SHerbert Xue </doc> 5800*dc5640d1SHerbert Xue </method> 5801*dc5640d1SHerbert Xue <method name="getValueTypeLiteral" return="com.google.inject.TypeLiteral<?>" 5802*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 5803*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5804*dc5640d1SHerbert Xue deprecated="not deprecated"> 5805*dc5640d1SHerbert Xue <doc> 5806*dc5640d1SHerbert Xue <![CDATA[Returns the TypeLiteral describing the values of the map. 5807*dc5640d1SHerbert Xue <p> 5808*dc5640d1SHerbert Xue The TypeLiteral will always match the type Map's generic type. For example, if getMapKey 5809*dc5640d1SHerbert Xue returns a key of <code>Map<String, Snack></code>, then this will always return a 5810*dc5640d1SHerbert Xue <code>TypeLiteral<Snack></code>.]]> 5811*dc5640d1SHerbert Xue </doc> 5812*dc5640d1SHerbert Xue </method> 5813*dc5640d1SHerbert Xue <method name="getEntries" return="java.util.List<java.util.Map.Entry<?, com.google.inject.Binding<?>>>" 5814*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 5815*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5816*dc5640d1SHerbert Xue deprecated="not deprecated"> 5817*dc5640d1SHerbert Xue <doc> 5818*dc5640d1SHerbert Xue <![CDATA[Returns all entries in the Map. The returned list of Map.Entries contains the key and a binding 5819*dc5640d1SHerbert Xue to the value. Duplicate keys or values will exist as separate Map.Entries in the returned list. 5820*dc5640d1SHerbert Xue This is only supported on bindings returned from an injector. This will throw 5821*dc5640d1SHerbert Xue {@link UnsupportedOperationException} if it is called on an element retrieved from 5822*dc5640d1SHerbert Xue {@link Elements#getElements}. 5823*dc5640d1SHerbert Xue <p> 5824*dc5640d1SHerbert Xue The elements will always match the type Map's generic type. For example, if getMapKey returns a 5825*dc5640d1SHerbert Xue key of <code>Map<String, Snack></code>, then this will always return a list of type 5826*dc5640d1SHerbert Xue <code>List<Map.Entry<String, Binding<Snack>>></code>.]]> 5827*dc5640d1SHerbert Xue </doc> 5828*dc5640d1SHerbert Xue </method> 5829*dc5640d1SHerbert Xue <method name="permitsDuplicates" return="boolean" 5830*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 5831*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5832*dc5640d1SHerbert Xue deprecated="not deprecated"> 5833*dc5640d1SHerbert Xue <doc> 5834*dc5640d1SHerbert Xue <![CDATA[Returns true if the MapBinder permits duplicates. This is only supported on bindings returned 5835*dc5640d1SHerbert Xue from an injector. This will throw {@link UnsupportedOperationException} if it is called on a 5836*dc5640d1SHerbert Xue MapBinderBinding retrieved from {@link Elements#getElements}.]]> 5837*dc5640d1SHerbert Xue </doc> 5838*dc5640d1SHerbert Xue </method> 5839*dc5640d1SHerbert Xue <method name="containsElement" return="boolean" 5840*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 5841*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5842*dc5640d1SHerbert Xue deprecated="not deprecated"> 5843*dc5640d1SHerbert Xue <param name="element" type="com.google.inject.spi.Element"/> 5844*dc5640d1SHerbert Xue <doc> 5845*dc5640d1SHerbert Xue <![CDATA[Returns true if this MapBinder contains the given Element in order to build the map or uses the 5846*dc5640d1SHerbert Xue given Element in order to support building and injecting the map. This will work for 5847*dc5640d1SHerbert Xue MapBinderBindings retrieved from an injector and {@link Elements#getElements}. Usually this is 5848*dc5640d1SHerbert Xue only necessary if you are working with elements retrieved from modules (without an Injector), 5849*dc5640d1SHerbert Xue otherwise {@link #getEntries} and {@link #permitsDuplicates} are better options. 5850*dc5640d1SHerbert Xue <p> 5851*dc5640d1SHerbert Xue If you need to introspect the details of the map, such as the keys, values or if it permits 5852*dc5640d1SHerbert Xue duplicates, it is necessary to pass the elements through an Injector and use 5853*dc5640d1SHerbert Xue {@link #getEntries()} and {@link #permitsDuplicates()}.]]> 5854*dc5640d1SHerbert Xue </doc> 5855*dc5640d1SHerbert Xue </method> 5856*dc5640d1SHerbert Xue <doc> 5857*dc5640d1SHerbert Xue <![CDATA[A binding for a MapBinder. 5858*dc5640d1SHerbert Xue <p> 5859*dc5640d1SHerbert Xue Although MapBinders may be injected through a variety of generic types (Map<K, V>, Map 5860*dc5640d1SHerbert Xue <K, Provider<V>>, Map<K, Set<V>>, Map<K, Set< 5861*dc5640d1SHerbert Xue Provider<V>>, and even Set<Map.Entry<K, Provider<V>>), a 5862*dc5640d1SHerbert Xue MapBinderBinding exists only on the Binding associated with the Map<K, V> key. Other 5863*dc5640d1SHerbert Xue bindings can be validated to be derived from this MapBinderBinding using 5864*dc5640d1SHerbert Xue {@link #containsElement(Element)}. 5865*dc5640d1SHerbert Xue 5866*dc5640d1SHerbert Xue @param <T> The fully qualified type of the map, including Map. For example: 5867*dc5640d1SHerbert Xue <code>MapBinderBinding<Map<String, Snack>></code> 5868*dc5640d1SHerbert Xue 5869*dc5640d1SHerbert Xue @since 3.0 5870*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin)]]> 5871*dc5640d1SHerbert Xue </doc> 5872*dc5640d1SHerbert Xue </interface> 5873*dc5640d1SHerbert Xue <!-- end interface com.google.inject.multibindings.MapBinderBinding --> 5874*dc5640d1SHerbert Xue <!-- start class com.google.inject.multibindings.MapKey --> 5875*dc5640d1SHerbert Xue <class name="MapKey" abstract="true" 5876*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5877*dc5640d1SHerbert Xue deprecated="not deprecated"> 5878*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 5879*dc5640d1SHerbert Xue <doc> 5880*dc5640d1SHerbert Xue <![CDATA[Allows users define customized key type annotations for map bindings by annotating an annotation 5881*dc5640d1SHerbert Xue of a {@code Map}'s key type. The custom key annotation can be applied to methods also annotated 5882*dc5640d1SHerbert Xue with {@literal @}{@link ProvidesIntoMap}. 5883*dc5640d1SHerbert Xue 5884*dc5640d1SHerbert Xue <p>A {@link StringMapKey} and {@link ClassMapKey} are provided for convenience with maps whose 5885*dc5640d1SHerbert Xue keys are strings or classes. For maps with enums or primitive types as keys, you must provide 5886*dc5640d1SHerbert Xue your own MapKey annotation, such as this one for an enum: 5887*dc5640d1SHerbert Xue 5888*dc5640d1SHerbert Xue <pre> 5889*dc5640d1SHerbert Xue {@literal @}MapKey(unwrapValue = true) 5890*dc5640d1SHerbert Xue {@literal @}Retention(RUNTIME) 5891*dc5640d1SHerbert Xue public {@literal @}interface MyCustomEnumKey { 5892*dc5640d1SHerbert Xue MyCustomEnum value(); 5893*dc5640d1SHerbert Xue } 5894*dc5640d1SHerbert Xue </pre> 5895*dc5640d1SHerbert Xue 5896*dc5640d1SHerbert Xue You can also use the whole annotation as the key, if {@code unwrapValue=false}. 5897*dc5640d1SHerbert Xue When unwrapValue is false, the annotation type will be the key type for the injected map and 5898*dc5640d1SHerbert Xue the annotation instances will be the key values. If {@code unwrapValue=true}, the value() type 5899*dc5640d1SHerbert Xue will be the key type for injected map and the value() instances will be the keys values. 5900*dc5640d1SHerbert Xue 5901*dc5640d1SHerbert Xue @since 4.0]]> 5902*dc5640d1SHerbert Xue </doc> 5903*dc5640d1SHerbert Xue </class> 5904*dc5640d1SHerbert Xue <!-- end class com.google.inject.multibindings.MapKey --> 5905*dc5640d1SHerbert Xue <!-- start class com.google.inject.multibindings.Multibinder --> 5906*dc5640d1SHerbert Xue <class name="Multibinder" extends="java.lang.Object" 5907*dc5640d1SHerbert Xue abstract="true" 5908*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5909*dc5640d1SHerbert Xue deprecated="not deprecated"> 5910*dc5640d1SHerbert Xue <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5911*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5912*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5913*dc5640d1SHerbert Xue deprecated="not deprecated"> 5914*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5915*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<T>"/> 5916*dc5640d1SHerbert Xue <doc> 5917*dc5640d1SHerbert Xue <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5918*dc5640d1SHerbert Xue itself bound with no binding annotation.]]> 5919*dc5640d1SHerbert Xue </doc> 5920*dc5640d1SHerbert Xue </method> 5921*dc5640d1SHerbert Xue <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5922*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5923*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5924*dc5640d1SHerbert Xue deprecated="not deprecated"> 5925*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5926*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 5927*dc5640d1SHerbert Xue <doc> 5928*dc5640d1SHerbert Xue <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5929*dc5640d1SHerbert Xue itself bound with no binding annotation.]]> 5930*dc5640d1SHerbert Xue </doc> 5931*dc5640d1SHerbert Xue </method> 5932*dc5640d1SHerbert Xue <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5933*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5934*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5935*dc5640d1SHerbert Xue deprecated="not deprecated"> 5936*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5937*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<T>"/> 5938*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 5939*dc5640d1SHerbert Xue <doc> 5940*dc5640d1SHerbert Xue <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5941*dc5640d1SHerbert Xue itself bound with {@code annotation}.]]> 5942*dc5640d1SHerbert Xue </doc> 5943*dc5640d1SHerbert Xue </method> 5944*dc5640d1SHerbert Xue <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5945*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5946*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5947*dc5640d1SHerbert Xue deprecated="not deprecated"> 5948*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5949*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 5950*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 5951*dc5640d1SHerbert Xue <doc> 5952*dc5640d1SHerbert Xue <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5953*dc5640d1SHerbert Xue itself bound with {@code annotation}.]]> 5954*dc5640d1SHerbert Xue </doc> 5955*dc5640d1SHerbert Xue </method> 5956*dc5640d1SHerbert Xue <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5957*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5958*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5959*dc5640d1SHerbert Xue deprecated="not deprecated"> 5960*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5961*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<T>"/> 5962*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5963*dc5640d1SHerbert Xue <doc> 5964*dc5640d1SHerbert Xue <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5965*dc5640d1SHerbert Xue itself bound with {@code annotationType}.]]> 5966*dc5640d1SHerbert Xue </doc> 5967*dc5640d1SHerbert Xue </method> 5968*dc5640d1SHerbert Xue <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5969*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5970*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5971*dc5640d1SHerbert Xue deprecated="not deprecated"> 5972*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5973*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 5974*dc5640d1SHerbert Xue <doc> 5975*dc5640d1SHerbert Xue <![CDATA[Returns a new multibinder that collects instances of the key's type in a {@link Set} that is 5976*dc5640d1SHerbert Xue itself bound with the annotation (if any) of the key. 5977*dc5640d1SHerbert Xue 5978*dc5640d1SHerbert Xue @since 4.0]]> 5979*dc5640d1SHerbert Xue </doc> 5980*dc5640d1SHerbert Xue </method> 5981*dc5640d1SHerbert Xue <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder<T>" 5982*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 5983*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 5984*dc5640d1SHerbert Xue deprecated="not deprecated"> 5985*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 5986*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 5987*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 5988*dc5640d1SHerbert Xue <doc> 5989*dc5640d1SHerbert Xue <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is 5990*dc5640d1SHerbert Xue itself bound with {@code annotationType}.]]> 5991*dc5640d1SHerbert Xue </doc> 5992*dc5640d1SHerbert Xue </method> 5993*dc5640d1SHerbert Xue <method name="permitDuplicates" return="com.google.inject.multibindings.Multibinder<T>" 5994*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 5995*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 5996*dc5640d1SHerbert Xue deprecated="not deprecated"> 5997*dc5640d1SHerbert Xue <doc> 5998*dc5640d1SHerbert Xue <![CDATA[Configures the bound set to silently discard duplicate elements. When multiple equal values are 5999*dc5640d1SHerbert Xue bound, the one that gets included is arbitrary. When multiple modules contribute elements to 6000*dc5640d1SHerbert Xue the set, this configuration option impacts all of them. 6001*dc5640d1SHerbert Xue 6002*dc5640d1SHerbert Xue @return this multibinder 6003*dc5640d1SHerbert Xue @since 3.0]]> 6004*dc5640d1SHerbert Xue </doc> 6005*dc5640d1SHerbert Xue </method> 6006*dc5640d1SHerbert Xue <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder<T>" 6007*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6008*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6009*dc5640d1SHerbert Xue deprecated="not deprecated"> 6010*dc5640d1SHerbert Xue <doc> 6011*dc5640d1SHerbert Xue <![CDATA[Returns a binding builder used to add a new element in the set. Each 6012*dc5640d1SHerbert Xue bound element must have a distinct value. Bound providers will be 6013*dc5640d1SHerbert Xue evaluated each time the set is injected. 6014*dc5640d1SHerbert Xue 6015*dc5640d1SHerbert Xue <p>It is an error to call this method without also calling one of the 6016*dc5640d1SHerbert Xue {@code to} methods on the returned binding builder. 6017*dc5640d1SHerbert Xue 6018*dc5640d1SHerbert Xue <p>Scoping elements independently is supported. Use the {@code in} method 6019*dc5640d1SHerbert Xue to specify a binding scope.]]> 6020*dc5640d1SHerbert Xue </doc> 6021*dc5640d1SHerbert Xue </method> 6022*dc5640d1SHerbert Xue <doc> 6023*dc5640d1SHerbert Xue <![CDATA[An API to bind multiple values separately, only to later inject them as a 6024*dc5640d1SHerbert Xue complete collection. Multibinder is intended for use in your application's 6025*dc5640d1SHerbert Xue module: 6026*dc5640d1SHerbert Xue <pre><code> 6027*dc5640d1SHerbert Xue public class SnacksModule extends AbstractModule { 6028*dc5640d1SHerbert Xue protected void configure() { 6029*dc5640d1SHerbert Xue Multibinder<Snack> multibinder 6030*dc5640d1SHerbert Xue = Multibinder.newSetBinder(binder(), Snack.class); 6031*dc5640d1SHerbert Xue multibinder.addBinding().toInstance(new Twix()); 6032*dc5640d1SHerbert Xue multibinder.addBinding().toProvider(SnickersProvider.class); 6033*dc5640d1SHerbert Xue multibinder.addBinding().to(Skittles.class); 6034*dc5640d1SHerbert Xue } 6035*dc5640d1SHerbert Xue }</code></pre> 6036*dc5640d1SHerbert Xue 6037*dc5640d1SHerbert Xue <p>With this binding, a {@link Set}{@code <Snack>} can now be injected: 6038*dc5640d1SHerbert Xue <pre><code> 6039*dc5640d1SHerbert Xue class SnackMachine { 6040*dc5640d1SHerbert Xue {@literal @}Inject 6041*dc5640d1SHerbert Xue public SnackMachine(Set<Snack> snacks) { ... } 6042*dc5640d1SHerbert Xue }</code></pre> 6043*dc5640d1SHerbert Xue 6044*dc5640d1SHerbert Xue If desired, {@link Collection}{@code <Provider<Snack>>} can also be injected. 6045*dc5640d1SHerbert Xue 6046*dc5640d1SHerbert Xue <p>Contributing multibindings from different modules is supported. For 6047*dc5640d1SHerbert Xue example, it is okay for both {@code CandyModule} and {@code ChipsModule} 6048*dc5640d1SHerbert Xue to create their own {@code Multibinder<Snack>}, and to each contribute 6049*dc5640d1SHerbert Xue bindings to the set of snacks. When that set is injected, it will contain 6050*dc5640d1SHerbert Xue elements from both modules. 6051*dc5640d1SHerbert Xue 6052*dc5640d1SHerbert Xue <p>The set's iteration order is consistent with the binding order. This is 6053*dc5640d1SHerbert Xue convenient when multiple elements are contributed by the same module because 6054*dc5640d1SHerbert Xue that module can order its bindings appropriately. Avoid relying on the 6055*dc5640d1SHerbert Xue iteration order of elements contributed by different modules, since there is 6056*dc5640d1SHerbert Xue no equivalent mechanism to order modules. 6057*dc5640d1SHerbert Xue 6058*dc5640d1SHerbert Xue <p>The set is unmodifiable. Elements can only be added to the set by 6059*dc5640d1SHerbert Xue configuring the multibinder. Elements can never be removed from the set. 6060*dc5640d1SHerbert Xue 6061*dc5640d1SHerbert Xue <p>Elements are resolved at set injection time. If an element is bound to a 6062*dc5640d1SHerbert Xue provider, that provider's get method will be called each time the set is 6063*dc5640d1SHerbert Xue injected (unless the binding is also scoped). 6064*dc5640d1SHerbert Xue 6065*dc5640d1SHerbert Xue <p>Annotations are be used to create different sets of the same element 6066*dc5640d1SHerbert Xue type. Each distinct annotation gets its own independent collection of 6067*dc5640d1SHerbert Xue elements. 6068*dc5640d1SHerbert Xue 6069*dc5640d1SHerbert Xue <p><strong>Elements must be distinct.</strong> If multiple bound elements 6070*dc5640d1SHerbert Xue have the same value, set injection will fail. 6071*dc5640d1SHerbert Xue 6072*dc5640d1SHerbert Xue <p><strong>Elements must be non-null.</strong> If any set element is null, 6073*dc5640d1SHerbert Xue set injection will fail. 6074*dc5640d1SHerbert Xue 6075*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson)]]> 6076*dc5640d1SHerbert Xue </doc> 6077*dc5640d1SHerbert Xue </class> 6078*dc5640d1SHerbert Xue <!-- end class com.google.inject.multibindings.Multibinder --> 6079*dc5640d1SHerbert Xue <!-- start interface com.google.inject.multibindings.MultibinderBinding --> 6080*dc5640d1SHerbert Xue <interface name="MultibinderBinding" abstract="true" 6081*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6082*dc5640d1SHerbert Xue deprecated="not deprecated"> 6083*dc5640d1SHerbert Xue <method name="getSetKey" return="com.google.inject.Key<T>" 6084*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6085*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6086*dc5640d1SHerbert Xue deprecated="not deprecated"> 6087*dc5640d1SHerbert Xue <doc> 6088*dc5640d1SHerbert Xue <![CDATA[Returns the key for the set.]]> 6089*dc5640d1SHerbert Xue </doc> 6090*dc5640d1SHerbert Xue </method> 6091*dc5640d1SHerbert Xue <method name="getElementTypeLiteral" return="com.google.inject.TypeLiteral<?>" 6092*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6093*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6094*dc5640d1SHerbert Xue deprecated="not deprecated"> 6095*dc5640d1SHerbert Xue <doc> 6096*dc5640d1SHerbert Xue <![CDATA[Returns the TypeLiteral that describes the type of elements in the set. 6097*dc5640d1SHerbert Xue <p> 6098*dc5640d1SHerbert Xue The elements will always match the type Set's generic type. For example, if getSetKey returns a 6099*dc5640d1SHerbert Xue key of <code>Set<String></code>, then this will always return a 6100*dc5640d1SHerbert Xue <code>TypeLiteral<String></code>.]]> 6101*dc5640d1SHerbert Xue </doc> 6102*dc5640d1SHerbert Xue </method> 6103*dc5640d1SHerbert Xue <method name="getElements" return="java.util.List<com.google.inject.Binding<?>>" 6104*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6105*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6106*dc5640d1SHerbert Xue deprecated="not deprecated"> 6107*dc5640d1SHerbert Xue <doc> 6108*dc5640d1SHerbert Xue <![CDATA[Returns all bindings that make up the set. This is only supported on bindings returned from an 6109*dc5640d1SHerbert Xue injector. This will throw {@link UnsupportedOperationException} if it is called on an element 6110*dc5640d1SHerbert Xue retrieved from {@link Elements#getElements}. 6111*dc5640d1SHerbert Xue <p> 6112*dc5640d1SHerbert Xue The elements will always match the type Set's generic type. For example, if getSetKey returns a 6113*dc5640d1SHerbert Xue key of <code>Set<String></code>, then this will always return a list of type 6114*dc5640d1SHerbert Xue <code>List<Binding<String>></code>.]]> 6115*dc5640d1SHerbert Xue </doc> 6116*dc5640d1SHerbert Xue </method> 6117*dc5640d1SHerbert Xue <method name="permitsDuplicates" return="boolean" 6118*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6119*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6120*dc5640d1SHerbert Xue deprecated="not deprecated"> 6121*dc5640d1SHerbert Xue <doc> 6122*dc5640d1SHerbert Xue <![CDATA[Returns true if the multibinder permits duplicates. This is only supported on bindings returned 6123*dc5640d1SHerbert Xue from an injector. This will throw {@link UnsupportedOperationException} if it is called on a 6124*dc5640d1SHerbert Xue MultibinderBinding retrieved from {@link Elements#getElements}.]]> 6125*dc5640d1SHerbert Xue </doc> 6126*dc5640d1SHerbert Xue </method> 6127*dc5640d1SHerbert Xue <method name="containsElement" return="boolean" 6128*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6129*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6130*dc5640d1SHerbert Xue deprecated="not deprecated"> 6131*dc5640d1SHerbert Xue <param name="element" type="com.google.inject.spi.Element"/> 6132*dc5640d1SHerbert Xue <doc> 6133*dc5640d1SHerbert Xue <![CDATA[Returns true if this Multibinder uses the given Element. This will be true for bindings that 6134*dc5640d1SHerbert Xue derive the elements of the set and other bindings that Multibinder uses internally. This will 6135*dc5640d1SHerbert Xue work for MultibinderBindings retrieved from an injector and {@link Elements#getElements}. 6136*dc5640d1SHerbert Xue Usually this is only necessary if you are working with elements retrieved from modules (without 6137*dc5640d1SHerbert Xue an Injector), otherwise {@link #getElements} and {@link #permitsDuplicates} are better options. 6138*dc5640d1SHerbert Xue <p> 6139*dc5640d1SHerbert Xue If you need to introspect the details of the set, such as the values or if it permits 6140*dc5640d1SHerbert Xue duplicates, it is necessary to pass the elements through an Injector and use 6141*dc5640d1SHerbert Xue {@link #getElements()} and {@link #permitsDuplicates()}.]]> 6142*dc5640d1SHerbert Xue </doc> 6143*dc5640d1SHerbert Xue </method> 6144*dc5640d1SHerbert Xue <doc> 6145*dc5640d1SHerbert Xue <![CDATA[A binding for a Multibinder. 6146*dc5640d1SHerbert Xue 6147*dc5640d1SHerbert Xue @param <T> The fully qualified type of the set, including Set. For example: 6148*dc5640d1SHerbert Xue <code>MultibinderBinding<Set<Boolean>></code> 6149*dc5640d1SHerbert Xue 6150*dc5640d1SHerbert Xue @since 3.0 6151*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin)]]> 6152*dc5640d1SHerbert Xue </doc> 6153*dc5640d1SHerbert Xue </interface> 6154*dc5640d1SHerbert Xue <!-- end interface com.google.inject.multibindings.MultibinderBinding --> 6155*dc5640d1SHerbert Xue <!-- start class com.google.inject.multibindings.MultibindingsScanner --> 6156*dc5640d1SHerbert Xue <class name="MultibindingsScanner" extends="java.lang.Object" 6157*dc5640d1SHerbert Xue abstract="false" 6158*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6159*dc5640d1SHerbert Xue deprecated="not deprecated"> 6160*dc5640d1SHerbert Xue <method name="asModule" return="com.google.inject.Module" 6161*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6162*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6163*dc5640d1SHerbert Xue deprecated="not deprecated"> 6164*dc5640d1SHerbert Xue <doc> 6165*dc5640d1SHerbert Xue <![CDATA[Returns a module that, when installed, will scan all modules for methods with the annotations 6166*dc5640d1SHerbert Xue {@literal @}{@link ProvidesIntoMap}, {@literal @}{@link ProvidesIntoSet}, and 6167*dc5640d1SHerbert Xue {@literal @}{@link ProvidesIntoOptional}. 6168*dc5640d1SHerbert Xue 6169*dc5640d1SHerbert Xue <p>This is a convenience method, equivalent to doing 6170*dc5640d1SHerbert Xue {@code binder().scanModulesForAnnotatedMethods(MultibindingsScanner.scanner())}.]]> 6171*dc5640d1SHerbert Xue </doc> 6172*dc5640d1SHerbert Xue </method> 6173*dc5640d1SHerbert Xue <method name="scanner" return="com.google.inject.spi.ModuleAnnotatedMethodScanner" 6174*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6175*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6176*dc5640d1SHerbert Xue deprecated="not deprecated"> 6177*dc5640d1SHerbert Xue <doc> 6178*dc5640d1SHerbert Xue <![CDATA[Returns a {@link ModuleAnnotatedMethodScanner} that, when bound, will scan all modules for 6179*dc5640d1SHerbert Xue methods with the annotations {@literal @}{@link ProvidesIntoMap}, 6180*dc5640d1SHerbert Xue {@literal @}{@link ProvidesIntoSet}, and {@literal @}{@link ProvidesIntoOptional}.]]> 6181*dc5640d1SHerbert Xue </doc> 6182*dc5640d1SHerbert Xue </method> 6183*dc5640d1SHerbert Xue <doc> 6184*dc5640d1SHerbert Xue <![CDATA[Scans a module for annotations that signal multibindings, mapbindings, and optional bindings. 6185*dc5640d1SHerbert Xue 6186*dc5640d1SHerbert Xue @since 4.0]]> 6187*dc5640d1SHerbert Xue </doc> 6188*dc5640d1SHerbert Xue </class> 6189*dc5640d1SHerbert Xue <!-- end class com.google.inject.multibindings.MultibindingsScanner --> 6190*dc5640d1SHerbert Xue <!-- start interface com.google.inject.multibindings.MultibindingsTargetVisitor --> 6191*dc5640d1SHerbert Xue <interface name="MultibindingsTargetVisitor" abstract="true" 6192*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6193*dc5640d1SHerbert Xue deprecated="not deprecated"> 6194*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 6195*dc5640d1SHerbert Xue <method name="visit" return="V" 6196*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6197*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6198*dc5640d1SHerbert Xue deprecated="not deprecated"> 6199*dc5640d1SHerbert Xue <param name="multibinding" type="com.google.inject.multibindings.MultibinderBinding<? extends T>"/> 6200*dc5640d1SHerbert Xue <doc> 6201*dc5640d1SHerbert Xue <![CDATA[Visits a binding created through {@link Multibinder}.]]> 6202*dc5640d1SHerbert Xue </doc> 6203*dc5640d1SHerbert Xue </method> 6204*dc5640d1SHerbert Xue <method name="visit" return="V" 6205*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6206*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6207*dc5640d1SHerbert Xue deprecated="not deprecated"> 6208*dc5640d1SHerbert Xue <param name="mapbinding" type="com.google.inject.multibindings.MapBinderBinding<? extends T>"/> 6209*dc5640d1SHerbert Xue <doc> 6210*dc5640d1SHerbert Xue <![CDATA[Visits a binding created through {@link MapBinder}.]]> 6211*dc5640d1SHerbert Xue </doc> 6212*dc5640d1SHerbert Xue </method> 6213*dc5640d1SHerbert Xue <method name="visit" return="V" 6214*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6215*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6216*dc5640d1SHerbert Xue deprecated="not deprecated"> 6217*dc5640d1SHerbert Xue <param name="optionalbinding" type="com.google.inject.multibindings.OptionalBinderBinding<? extends T>"/> 6218*dc5640d1SHerbert Xue <doc> 6219*dc5640d1SHerbert Xue <![CDATA[Visits a binding created through {@link OptionalBinder}. 6220*dc5640d1SHerbert Xue 6221*dc5640d1SHerbert Xue @since 4.0]]> 6222*dc5640d1SHerbert Xue </doc> 6223*dc5640d1SHerbert Xue </method> 6224*dc5640d1SHerbert Xue <doc> 6225*dc5640d1SHerbert Xue <![CDATA[A visitor for the multibinder extension. 6226*dc5640d1SHerbert Xue <p> 6227*dc5640d1SHerbert Xue If your {@link BindingTargetVisitor} implements this interface, bindings created by using 6228*dc5640d1SHerbert Xue {@link Multibinder}, {@link MapBinder} or {@link OptionalBinderBinding} will be visited through 6229*dc5640d1SHerbert Xue this interface. 6230*dc5640d1SHerbert Xue 6231*dc5640d1SHerbert Xue @since 3.0 6232*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin)]]> 6233*dc5640d1SHerbert Xue </doc> 6234*dc5640d1SHerbert Xue </interface> 6235*dc5640d1SHerbert Xue <!-- end interface com.google.inject.multibindings.MultibindingsTargetVisitor --> 6236*dc5640d1SHerbert Xue <!-- start class com.google.inject.multibindings.OptionalBinder --> 6237*dc5640d1SHerbert Xue <class name="OptionalBinder" extends="java.lang.Object" 6238*dc5640d1SHerbert Xue abstract="true" 6239*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6240*dc5640d1SHerbert Xue deprecated="not deprecated"> 6241*dc5640d1SHerbert Xue <method name="newOptionalBinder" return="com.google.inject.multibindings.OptionalBinder<T>" 6242*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6243*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6244*dc5640d1SHerbert Xue deprecated="not deprecated"> 6245*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 6246*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 6247*dc5640d1SHerbert Xue </method> 6248*dc5640d1SHerbert Xue <method name="newOptionalBinder" return="com.google.inject.multibindings.OptionalBinder<T>" 6249*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6250*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6251*dc5640d1SHerbert Xue deprecated="not deprecated"> 6252*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 6253*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<T>"/> 6254*dc5640d1SHerbert Xue </method> 6255*dc5640d1SHerbert Xue <method name="newOptionalBinder" return="com.google.inject.multibindings.OptionalBinder<T>" 6256*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6257*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6258*dc5640d1SHerbert Xue deprecated="not deprecated"> 6259*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 6260*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.Key<T>"/> 6261*dc5640d1SHerbert Xue </method> 6262*dc5640d1SHerbert Xue <method name="setDefault" return="com.google.inject.binder.LinkedBindingBuilder<T>" 6263*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6264*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6265*dc5640d1SHerbert Xue deprecated="not deprecated"> 6266*dc5640d1SHerbert Xue <doc> 6267*dc5640d1SHerbert Xue <![CDATA[Returns a binding builder used to set the default value that will be injected. 6268*dc5640d1SHerbert Xue The binding set by this method will be ignored if {@link #setBinding} is called. 6269*dc5640d1SHerbert Xue 6270*dc5640d1SHerbert Xue <p>It is an error to call this method without also calling one of the {@code to} 6271*dc5640d1SHerbert Xue methods on the returned binding builder.]]> 6272*dc5640d1SHerbert Xue </doc> 6273*dc5640d1SHerbert Xue </method> 6274*dc5640d1SHerbert Xue <method name="setBinding" return="com.google.inject.binder.LinkedBindingBuilder<T>" 6275*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6276*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6277*dc5640d1SHerbert Xue deprecated="not deprecated"> 6278*dc5640d1SHerbert Xue <doc> 6279*dc5640d1SHerbert Xue <![CDATA[Returns a binding builder used to set the actual value that will be injected. 6280*dc5640d1SHerbert Xue This overrides any binding set by {@link #setDefault}. 6281*dc5640d1SHerbert Xue 6282*dc5640d1SHerbert Xue <p>It is an error to call this method without also calling one of the {@code to} 6283*dc5640d1SHerbert Xue methods on the returned binding builder.]]> 6284*dc5640d1SHerbert Xue </doc> 6285*dc5640d1SHerbert Xue </method> 6286*dc5640d1SHerbert Xue <doc> 6287*dc5640d1SHerbert Xue <![CDATA[An API to bind optional values, optionally with a default value. 6288*dc5640d1SHerbert Xue OptionalBinder fulfills two roles: <ol> 6289*dc5640d1SHerbert Xue <li>It allows a framework to define an injection point that may or 6290*dc5640d1SHerbert Xue may not be bound by users. 6291*dc5640d1SHerbert Xue <li>It allows a framework to supply a default value that can be changed 6292*dc5640d1SHerbert Xue by users. 6293*dc5640d1SHerbert Xue </ol> 6294*dc5640d1SHerbert Xue 6295*dc5640d1SHerbert Xue <p>When an OptionalBinder is added, it will always supply the bindings: 6296*dc5640d1SHerbert Xue {@code Optional<T>} and {@code Optional<Provider<T>>}. If 6297*dc5640d1SHerbert Xue {@link #setBinding} or {@link #setDefault} are called, it will also 6298*dc5640d1SHerbert Xue bind {@code T}. 6299*dc5640d1SHerbert Xue 6300*dc5640d1SHerbert Xue <p>{@code setDefault} is intended for use by frameworks that need a default 6301*dc5640d1SHerbert Xue value. User code can call {@code setBinding} to override the default. 6302*dc5640d1SHerbert Xue <b>Warning: Even if setBinding is called, the default binding 6303*dc5640d1SHerbert Xue will still exist in the object graph. If it is a singleton, it will be 6304*dc5640d1SHerbert Xue instantiated in {@code Stage.PRODUCTION}.</b> 6305*dc5640d1SHerbert Xue 6306*dc5640d1SHerbert Xue <p>If setDefault or setBinding are linked to Providers, the Provider may return 6307*dc5640d1SHerbert Xue {@code null}. If it does, the Optional bindings will be absent. Binding 6308*dc5640d1SHerbert Xue setBinding to a Provider that returns null will not cause OptionalBinder 6309*dc5640d1SHerbert Xue to fall back to the setDefault binding. 6310*dc5640d1SHerbert Xue 6311*dc5640d1SHerbert Xue <p>If neither setDefault nor setBinding are called, it will try to link to a 6312*dc5640d1SHerbert Xue user-supplied binding of the same type. If no binding exists, the optionals 6313*dc5640d1SHerbert Xue will be absent. Otherwise, if a user-supplied binding of that type exists, 6314*dc5640d1SHerbert Xue or if setBinding or setDefault are called, the optionals will return present 6315*dc5640d1SHerbert Xue if they are bound to a non-null value. 6316*dc5640d1SHerbert Xue 6317*dc5640d1SHerbert Xue <p>Values are resolved at injection time. If a value is bound to a 6318*dc5640d1SHerbert Xue provider, that provider's get method will be called each time the optional 6319*dc5640d1SHerbert Xue is injected (unless the binding is also scoped, or an optional of provider is 6320*dc5640d1SHerbert Xue injected). 6321*dc5640d1SHerbert Xue 6322*dc5640d1SHerbert Xue <p>Annotations are used to create different optionals of the same key/value 6323*dc5640d1SHerbert Xue type. Each distinct annotation gets its own independent binding. 6324*dc5640d1SHerbert Xue 6325*dc5640d1SHerbert Xue <pre><code> 6326*dc5640d1SHerbert Xue public class FrameworkModule extends AbstractModule { 6327*dc5640d1SHerbert Xue protected void configure() { 6328*dc5640d1SHerbert Xue OptionalBinder.newOptionalBinder(binder(), Renamer.class); 6329*dc5640d1SHerbert Xue } 6330*dc5640d1SHerbert Xue }</code></pre> 6331*dc5640d1SHerbert Xue 6332*dc5640d1SHerbert Xue <p>With this module, an {@link Optional}{@code <Renamer>} can now be 6333*dc5640d1SHerbert Xue injected. With no other bindings, the optional will be absent. 6334*dc5640d1SHerbert Xue Users can specify bindings in one of two ways: 6335*dc5640d1SHerbert Xue 6336*dc5640d1SHerbert Xue <p>Option 1: 6337*dc5640d1SHerbert Xue <pre><code> 6338*dc5640d1SHerbert Xue public class UserRenamerModule extends AbstractModule { 6339*dc5640d1SHerbert Xue protected void configure() { 6340*dc5640d1SHerbert Xue bind(Renamer.class).to(ReplacingRenamer.class); 6341*dc5640d1SHerbert Xue } 6342*dc5640d1SHerbert Xue }</code></pre> 6343*dc5640d1SHerbert Xue 6344*dc5640d1SHerbert Xue <p>or Option 2: 6345*dc5640d1SHerbert Xue <pre><code> 6346*dc5640d1SHerbert Xue public class UserRenamerModule extends AbstractModule { 6347*dc5640d1SHerbert Xue protected void configure() { 6348*dc5640d1SHerbert Xue OptionalBinder.newOptionalBinder(binder(), Renamer.class) 6349*dc5640d1SHerbert Xue .setBinding().to(ReplacingRenamer.class); 6350*dc5640d1SHerbert Xue } 6351*dc5640d1SHerbert Xue }</code></pre> 6352*dc5640d1SHerbert Xue With both options, the {@code Optional<Renamer>} will be present and supply the 6353*dc5640d1SHerbert Xue ReplacingRenamer. 6354*dc5640d1SHerbert Xue 6355*dc5640d1SHerbert Xue <p>Default values can be supplied using: 6356*dc5640d1SHerbert Xue <pre><code> 6357*dc5640d1SHerbert Xue public class FrameworkModule extends AbstractModule { 6358*dc5640d1SHerbert Xue protected void configure() { 6359*dc5640d1SHerbert Xue OptionalBinder.newOptionalBinder(binder(), Key.get(String.class, LookupUrl.class)) 6360*dc5640d1SHerbert Xue .setDefault().toInstance(DEFAULT_LOOKUP_URL); 6361*dc5640d1SHerbert Xue } 6362*dc5640d1SHerbert Xue }</code></pre> 6363*dc5640d1SHerbert Xue With the above module, code can inject an {@code @LookupUrl String} and it 6364*dc5640d1SHerbert Xue will supply the DEFAULT_LOOKUP_URL. A user can change this value by binding 6365*dc5640d1SHerbert Xue <pre><code> 6366*dc5640d1SHerbert Xue public class UserLookupModule extends AbstractModule { 6367*dc5640d1SHerbert Xue protected void configure() { 6368*dc5640d1SHerbert Xue OptionalBinder.newOptionalBinder(binder(), Key.get(String.class, LookupUrl.class)) 6369*dc5640d1SHerbert Xue .setBinding().toInstance(CUSTOM_LOOKUP_URL); 6370*dc5640d1SHerbert Xue } 6371*dc5640d1SHerbert Xue }</code></pre> 6372*dc5640d1SHerbert Xue ... which will override the default value. 6373*dc5640d1SHerbert Xue 6374*dc5640d1SHerbert Xue <p>If one module uses setDefault the only way to override the default is to use setBinding. 6375*dc5640d1SHerbert Xue It is an error for a user to specify the binding without using OptionalBinder if 6376*dc5640d1SHerbert Xue setDefault or setBinding are called. For example, 6377*dc5640d1SHerbert Xue <pre><code> 6378*dc5640d1SHerbert Xue public class FrameworkModule extends AbstractModule { 6379*dc5640d1SHerbert Xue protected void configure() { 6380*dc5640d1SHerbert Xue OptionalBinder.newOptionalBinder(binder(), Key.get(String.class, LookupUrl.class)) 6381*dc5640d1SHerbert Xue .setDefault().toInstance(DEFAULT_LOOKUP_URL); 6382*dc5640d1SHerbert Xue } 6383*dc5640d1SHerbert Xue } 6384*dc5640d1SHerbert Xue public class UserLookupModule extends AbstractModule { 6385*dc5640d1SHerbert Xue protected void configure() { 6386*dc5640d1SHerbert Xue bind(Key.get(String.class, LookupUrl.class)).toInstance(CUSTOM_LOOKUP_URL); 6387*dc5640d1SHerbert Xue } 6388*dc5640d1SHerbert Xue }</code></pre> 6389*dc5640d1SHerbert Xue ... would generate an error, because both the framework and the user are trying to bind 6390*dc5640d1SHerbert Xue {@code @LookupUrl String}. 6391*dc5640d1SHerbert Xue 6392*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 6393*dc5640d1SHerbert Xue @since 4.0]]> 6394*dc5640d1SHerbert Xue </doc> 6395*dc5640d1SHerbert Xue </class> 6396*dc5640d1SHerbert Xue <!-- end class com.google.inject.multibindings.OptionalBinder --> 6397*dc5640d1SHerbert Xue <!-- start interface com.google.inject.multibindings.OptionalBinderBinding --> 6398*dc5640d1SHerbert Xue <interface name="OptionalBinderBinding" abstract="true" 6399*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6400*dc5640d1SHerbert Xue deprecated="not deprecated"> 6401*dc5640d1SHerbert Xue <method name="getKey" return="com.google.inject.Key<T>" 6402*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6403*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6404*dc5640d1SHerbert Xue deprecated="not deprecated"> 6405*dc5640d1SHerbert Xue <doc> 6406*dc5640d1SHerbert Xue <![CDATA[Returns the {@link Key} for this binding.]]> 6407*dc5640d1SHerbert Xue </doc> 6408*dc5640d1SHerbert Xue </method> 6409*dc5640d1SHerbert Xue <method name="getDefaultBinding" return="com.google.inject.Binding<?>" 6410*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6411*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6412*dc5640d1SHerbert Xue deprecated="not deprecated"> 6413*dc5640d1SHerbert Xue <doc> 6414*dc5640d1SHerbert Xue <![CDATA[Returns the default binding (set by {@link OptionalBinder#setDefault}) if one exists or null 6415*dc5640d1SHerbert Xue if no default binding is set. This will throw {@link UnsupportedOperationException} if it is 6416*dc5640d1SHerbert Xue called on an element retrieved from {@link Elements#getElements}. 6417*dc5640d1SHerbert Xue <p> 6418*dc5640d1SHerbert Xue The Binding's type will always match the type Optional's generic type. For example, if getKey 6419*dc5640d1SHerbert Xue returns a key of <code>Optional<String></code>, then this will always return a 6420*dc5640d1SHerbert Xue <code>Binding<String></code>.]]> 6421*dc5640d1SHerbert Xue </doc> 6422*dc5640d1SHerbert Xue </method> 6423*dc5640d1SHerbert Xue <method name="getActualBinding" return="com.google.inject.Binding<?>" 6424*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6425*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6426*dc5640d1SHerbert Xue deprecated="not deprecated"> 6427*dc5640d1SHerbert Xue <doc> 6428*dc5640d1SHerbert Xue <![CDATA[Returns the actual binding (set by {@link OptionalBinder#setBinding}) or null if not set. 6429*dc5640d1SHerbert Xue This will throw {@link UnsupportedOperationException} if it is called on an element retrieved 6430*dc5640d1SHerbert Xue from {@link Elements#getElements}. 6431*dc5640d1SHerbert Xue <p> 6432*dc5640d1SHerbert Xue The Binding's type will always match the type Optional's generic type. For example, if getKey 6433*dc5640d1SHerbert Xue returns a key of <code>Optional<String></code>, then this will always return a 6434*dc5640d1SHerbert Xue <code>Binding<String></code>.]]> 6435*dc5640d1SHerbert Xue </doc> 6436*dc5640d1SHerbert Xue </method> 6437*dc5640d1SHerbert Xue <method name="containsElement" return="boolean" 6438*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6439*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6440*dc5640d1SHerbert Xue deprecated="not deprecated"> 6441*dc5640d1SHerbert Xue <param name="element" type="com.google.inject.spi.Element"/> 6442*dc5640d1SHerbert Xue <doc> 6443*dc5640d1SHerbert Xue <![CDATA[Returns true if this OptionalBinder contains the given Element in order to build the optional 6444*dc5640d1SHerbert Xue binding or uses the given Element in order to support building and injecting its data. This 6445*dc5640d1SHerbert Xue will work for OptionalBinderBinding retrieved from an injector and 6446*dc5640d1SHerbert Xue {@link Elements#getElements}. Usually this is only necessary if you are working with elements 6447*dc5640d1SHerbert Xue retrieved from modules (without an Injector), otherwise {@link #getDefaultBinding} and 6448*dc5640d1SHerbert Xue {@link #getActualBinding} are better options.]]> 6449*dc5640d1SHerbert Xue </doc> 6450*dc5640d1SHerbert Xue </method> 6451*dc5640d1SHerbert Xue <doc> 6452*dc5640d1SHerbert Xue <![CDATA[A binding for a OptionalBinder. 6453*dc5640d1SHerbert Xue 6454*dc5640d1SHerbert Xue <p>Although OptionalBinders may be injected through a variety of types 6455*dc5640d1SHerbert Xue {@code T}, {@code Optional<T>}, {@code Optional<Provider<T>>}, etc..), an 6456*dc5640d1SHerbert Xue OptionalBinderBinding exists only on the Binding associated with the 6457*dc5640d1SHerbert Xue {@code Optional<T>} key. Other bindings can be validated to be derived from this 6458*dc5640d1SHerbert Xue OptionalBinderBinding using {@link #containsElement}. 6459*dc5640d1SHerbert Xue 6460*dc5640d1SHerbert Xue @param <T> The fully qualified type of the optional binding, including Optional. 6461*dc5640d1SHerbert Xue For example: {@code Optional<String>}. 6462*dc5640d1SHerbert Xue 6463*dc5640d1SHerbert Xue @since 4.0 6464*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin)]]> 6465*dc5640d1SHerbert Xue </doc> 6466*dc5640d1SHerbert Xue </interface> 6467*dc5640d1SHerbert Xue <!-- end interface com.google.inject.multibindings.OptionalBinderBinding --> 6468*dc5640d1SHerbert Xue <!-- start class com.google.inject.multibindings.ProvidesIntoMap --> 6469*dc5640d1SHerbert Xue <class name="ProvidesIntoMap" abstract="true" 6470*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6471*dc5640d1SHerbert Xue deprecated="not deprecated"> 6472*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 6473*dc5640d1SHerbert Xue <doc> 6474*dc5640d1SHerbert Xue <![CDATA[Annotates methods of a {@link Module} to add items to a {@link MapBinder}. 6475*dc5640d1SHerbert Xue The method's return type, binding annotation and additional key annotation determines 6476*dc5640d1SHerbert Xue what Map this will contribute to. For example, 6477*dc5640d1SHerbert Xue 6478*dc5640d1SHerbert Xue <pre> 6479*dc5640d1SHerbert Xue {@literal @}ProvidesIntoMap 6480*dc5640d1SHerbert Xue {@literal @}StringMapKey("Foo") 6481*dc5640d1SHerbert Xue {@literal @}Named("plugins") 6482*dc5640d1SHerbert Xue Plugin provideFooUrl(FooManager fm) { returm fm.getPlugin(); } 6483*dc5640d1SHerbert Xue 6484*dc5640d1SHerbert Xue {@literal @}ProvidesIntoMap 6485*dc5640d1SHerbert Xue {@literal @}StringMapKey("Bar") 6486*dc5640d1SHerbert Xue {@literal @}Named("urls") 6487*dc5640d1SHerbert Xue Plugin provideBarUrl(BarManager bm) { return bm.getPlugin(); } 6488*dc5640d1SHerbert Xue </pre> 6489*dc5640d1SHerbert Xue 6490*dc5640d1SHerbert Xue will add two items to the {@code @Named("urls") Map<String, Plugin>} map. The key 'Foo' 6491*dc5640d1SHerbert Xue will map to the provideFooUrl method, and the key 'Bar' will map to the provideBarUrl method. 6492*dc5640d1SHerbert Xue The values are bound as providers and will be evaluated at injection time. 6493*dc5640d1SHerbert Xue 6494*dc5640d1SHerbert Xue <p>Because the key is specified as an annotation, only Strings, Classes, enums, primitive 6495*dc5640d1SHerbert Xue types and annotation instances are supported as keys. 6496*dc5640d1SHerbert Xue 6497*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 6498*dc5640d1SHerbert Xue @since 4.0]]> 6499*dc5640d1SHerbert Xue </doc> 6500*dc5640d1SHerbert Xue </class> 6501*dc5640d1SHerbert Xue <!-- end class com.google.inject.multibindings.ProvidesIntoMap --> 6502*dc5640d1SHerbert Xue <!-- start class com.google.inject.multibindings.ProvidesIntoOptional --> 6503*dc5640d1SHerbert Xue <class name="ProvidesIntoOptional" abstract="true" 6504*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6505*dc5640d1SHerbert Xue deprecated="not deprecated"> 6506*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 6507*dc5640d1SHerbert Xue <doc> 6508*dc5640d1SHerbert Xue <![CDATA[Annotates methods of a {@link Module} to add items to a {@link Multibinder}. 6509*dc5640d1SHerbert Xue The method's return type and binding annotation determines what Optional this will 6510*dc5640d1SHerbert Xue contribute to. For example, 6511*dc5640d1SHerbert Xue 6512*dc5640d1SHerbert Xue <pre> 6513*dc5640d1SHerbert Xue {@literal @}ProvidesIntoOptional(DEFAULT) 6514*dc5640d1SHerbert Xue {@literal @}Named("url") 6515*dc5640d1SHerbert Xue String provideFooUrl(FooManager fm) { returm fm.getUrl(); } 6516*dc5640d1SHerbert Xue 6517*dc5640d1SHerbert Xue {@literal @}ProvidesIntoOptional(ACTUAL) 6518*dc5640d1SHerbert Xue {@literal @}Named("url") 6519*dc5640d1SHerbert Xue String provideBarUrl(BarManager bm) { return bm.getUrl(); } 6520*dc5640d1SHerbert Xue </pre> 6521*dc5640d1SHerbert Xue 6522*dc5640d1SHerbert Xue will set the default value of {@code @Named("url") Optional<String>} to foo's URL, 6523*dc5640d1SHerbert Xue and then override it to bar's URL. 6524*dc5640d1SHerbert Xue 6525*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 6526*dc5640d1SHerbert Xue @since 4.0]]> 6527*dc5640d1SHerbert Xue </doc> 6528*dc5640d1SHerbert Xue </class> 6529*dc5640d1SHerbert Xue <!-- end class com.google.inject.multibindings.ProvidesIntoOptional --> 6530*dc5640d1SHerbert Xue <!-- start class com.google.inject.multibindings.ProvidesIntoOptional.Type --> 6531*dc5640d1SHerbert Xue <class name="ProvidesIntoOptional.Type" extends="java.lang.Enum<com.google.inject.multibindings.ProvidesIntoOptional.Type>" 6532*dc5640d1SHerbert Xue abstract="false" 6533*dc5640d1SHerbert Xue static="true" final="true" visibility="public" 6534*dc5640d1SHerbert Xue deprecated="not deprecated"> 6535*dc5640d1SHerbert Xue <method name="values" return="com.google.inject.multibindings.ProvidesIntoOptional.Type[]" 6536*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6537*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6538*dc5640d1SHerbert Xue deprecated="not deprecated"> 6539*dc5640d1SHerbert Xue </method> 6540*dc5640d1SHerbert Xue <method name="valueOf" return="com.google.inject.multibindings.ProvidesIntoOptional.Type" 6541*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6542*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6543*dc5640d1SHerbert Xue deprecated="not deprecated"> 6544*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 6545*dc5640d1SHerbert Xue </method> 6546*dc5640d1SHerbert Xue <doc> 6547*dc5640d1SHerbert Xue <![CDATA[@since 4.0]]> 6548*dc5640d1SHerbert Xue </doc> 6549*dc5640d1SHerbert Xue </class> 6550*dc5640d1SHerbert Xue <!-- end class com.google.inject.multibindings.ProvidesIntoOptional.Type --> 6551*dc5640d1SHerbert Xue <!-- start class com.google.inject.multibindings.ProvidesIntoSet --> 6552*dc5640d1SHerbert Xue <class name="ProvidesIntoSet" abstract="true" 6553*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6554*dc5640d1SHerbert Xue deprecated="not deprecated"> 6555*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 6556*dc5640d1SHerbert Xue <doc> 6557*dc5640d1SHerbert Xue <![CDATA[Annotates methods of a {@link Module} to add items to a {@link Multibinder}. 6558*dc5640d1SHerbert Xue The method's return type and binding annotation determines what Set this will 6559*dc5640d1SHerbert Xue contribute to. For example, 6560*dc5640d1SHerbert Xue 6561*dc5640d1SHerbert Xue <pre> 6562*dc5640d1SHerbert Xue {@literal @}ProvidesIntoSet 6563*dc5640d1SHerbert Xue {@literal @}Named("urls") 6564*dc5640d1SHerbert Xue String provideFooUrl(FooManager fm) { returm fm.getUrl(); } 6565*dc5640d1SHerbert Xue 6566*dc5640d1SHerbert Xue {@literal @}ProvidesIntoSet 6567*dc5640d1SHerbert Xue {@literal @}Named("urls") 6568*dc5640d1SHerbert Xue String provideBarUrl(BarManager bm) { return bm.getUrl(); } 6569*dc5640d1SHerbert Xue </pre> 6570*dc5640d1SHerbert Xue 6571*dc5640d1SHerbert Xue will add two items to the {@code @Named("urls") Set<String>} set. The items are bound as 6572*dc5640d1SHerbert Xue providers and will be evaluated at injection time. 6573*dc5640d1SHerbert Xue 6574*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 6575*dc5640d1SHerbert Xue @since 4.0]]> 6576*dc5640d1SHerbert Xue </doc> 6577*dc5640d1SHerbert Xue </class> 6578*dc5640d1SHerbert Xue <!-- end class com.google.inject.multibindings.ProvidesIntoSet --> 6579*dc5640d1SHerbert Xue <!-- start class com.google.inject.multibindings.StringMapKey --> 6580*dc5640d1SHerbert Xue <class name="StringMapKey" abstract="true" 6581*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6582*dc5640d1SHerbert Xue deprecated="not deprecated"> 6583*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 6584*dc5640d1SHerbert Xue <doc> 6585*dc5640d1SHerbert Xue <![CDATA[Allows {@literal @}{@link ProvidesIntoMap} to specify a string map key. 6586*dc5640d1SHerbert Xue 6587*dc5640d1SHerbert Xue @since 4.0]]> 6588*dc5640d1SHerbert Xue </doc> 6589*dc5640d1SHerbert Xue </class> 6590*dc5640d1SHerbert Xue <!-- end class com.google.inject.multibindings.StringMapKey --> 6591*dc5640d1SHerbert Xue</package> 6592*dc5640d1SHerbert Xue<package name="com.google.inject.name"> 6593*dc5640d1SHerbert Xue <!-- start class com.google.inject.name.Named --> 6594*dc5640d1SHerbert Xue <class name="Named" abstract="true" 6595*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6596*dc5640d1SHerbert Xue deprecated="not deprecated"> 6597*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 6598*dc5640d1SHerbert Xue <doc> 6599*dc5640d1SHerbert Xue <![CDATA[Annotates named things. 6600*dc5640d1SHerbert Xue 6601*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 6602*dc5640d1SHerbert Xue </doc> 6603*dc5640d1SHerbert Xue </class> 6604*dc5640d1SHerbert Xue <!-- end class com.google.inject.name.Named --> 6605*dc5640d1SHerbert Xue <!-- start class com.google.inject.name.Names --> 6606*dc5640d1SHerbert Xue <class name="Names" extends="java.lang.Object" 6607*dc5640d1SHerbert Xue abstract="false" 6608*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6609*dc5640d1SHerbert Xue deprecated="not deprecated"> 6610*dc5640d1SHerbert Xue <method name="named" return="com.google.inject.name.Named" 6611*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6612*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6613*dc5640d1SHerbert Xue deprecated="not deprecated"> 6614*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 6615*dc5640d1SHerbert Xue <doc> 6616*dc5640d1SHerbert Xue <![CDATA[Creates a {@link Named} annotation with {@code name} as the value.]]> 6617*dc5640d1SHerbert Xue </doc> 6618*dc5640d1SHerbert Xue </method> 6619*dc5640d1SHerbert Xue <method name="bindProperties" 6620*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6621*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6622*dc5640d1SHerbert Xue deprecated="not deprecated"> 6623*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 6624*dc5640d1SHerbert Xue <param name="properties" type="java.util.Map<java.lang.String, java.lang.String>"/> 6625*dc5640d1SHerbert Xue <doc> 6626*dc5640d1SHerbert Xue <![CDATA[Creates a constant binding to {@code @Named(key)} for each entry in 6627*dc5640d1SHerbert Xue {@code properties}.]]> 6628*dc5640d1SHerbert Xue </doc> 6629*dc5640d1SHerbert Xue </method> 6630*dc5640d1SHerbert Xue <method name="bindProperties" 6631*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6632*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6633*dc5640d1SHerbert Xue deprecated="not deprecated"> 6634*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 6635*dc5640d1SHerbert Xue <param name="properties" type="java.util.Properties"/> 6636*dc5640d1SHerbert Xue <doc> 6637*dc5640d1SHerbert Xue <![CDATA[Creates a constant binding to {@code @Named(key)} for each property. This 6638*dc5640d1SHerbert Xue method binds all properties including those inherited from 6639*dc5640d1SHerbert Xue {@link Properties#defaults defaults}.]]> 6640*dc5640d1SHerbert Xue </doc> 6641*dc5640d1SHerbert Xue </method> 6642*dc5640d1SHerbert Xue <doc> 6643*dc5640d1SHerbert Xue <![CDATA[Utility methods for use with {@code @}{@link Named}. 6644*dc5640d1SHerbert Xue 6645*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 6646*dc5640d1SHerbert Xue </doc> 6647*dc5640d1SHerbert Xue </class> 6648*dc5640d1SHerbert Xue <!-- end class com.google.inject.name.Names --> 6649*dc5640d1SHerbert Xue</package> 6650*dc5640d1SHerbert Xue<package name="com.google.inject.persist"> 6651*dc5640d1SHerbert Xue <!-- start class com.google.inject.persist.PersistFilter --> 6652*dc5640d1SHerbert Xue <class name="PersistFilter" extends="java.lang.Object" 6653*dc5640d1SHerbert Xue abstract="false" 6654*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 6655*dc5640d1SHerbert Xue deprecated="not deprecated"> 6656*dc5640d1SHerbert Xue <implements name="javax.servlet.Filter"/> 6657*dc5640d1SHerbert Xue <constructor name="PersistFilter" type="com.google.inject.persist.UnitOfWork, com.google.inject.persist.PersistService" 6658*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6659*dc5640d1SHerbert Xue deprecated="not deprecated"> 6660*dc5640d1SHerbert Xue </constructor> 6661*dc5640d1SHerbert Xue <method name="init" 6662*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6663*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6664*dc5640d1SHerbert Xue deprecated="not deprecated"> 6665*dc5640d1SHerbert Xue <param name="filterConfig" type="javax.servlet.FilterConfig"/> 6666*dc5640d1SHerbert Xue <exception name="ServletException" type="javax.servlet.ServletException"/> 6667*dc5640d1SHerbert Xue </method> 6668*dc5640d1SHerbert Xue <method name="destroy" 6669*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6670*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6671*dc5640d1SHerbert Xue deprecated="not deprecated"> 6672*dc5640d1SHerbert Xue </method> 6673*dc5640d1SHerbert Xue <method name="doFilter" 6674*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6675*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6676*dc5640d1SHerbert Xue deprecated="not deprecated"> 6677*dc5640d1SHerbert Xue <param name="servletRequest" type="javax.servlet.ServletRequest"/> 6678*dc5640d1SHerbert Xue <param name="servletResponse" type="javax.servlet.ServletResponse"/> 6679*dc5640d1SHerbert Xue <param name="filterChain" type="javax.servlet.FilterChain"/> 6680*dc5640d1SHerbert Xue <exception name="IOException" type="java.io.IOException"/> 6681*dc5640d1SHerbert Xue <exception name="ServletException" type="javax.servlet.ServletException"/> 6682*dc5640d1SHerbert Xue </method> 6683*dc5640d1SHerbert Xue <doc> 6684*dc5640d1SHerbert Xue <![CDATA[Apply this filter to enable the HTTP Request unit of work and to have 6685*dc5640d1SHerbert Xue guice-persist manage the lifecycle of active units of work. 6686*dc5640d1SHerbert Xue The filter automatically starts and stops the relevant {@link PersistService} 6687*dc5640d1SHerbert Xue upon {@link javax.servlet.Filter#init(javax.servlet.FilterConfig)} and 6688*dc5640d1SHerbert Xue {@link javax.servlet.Filter#destroy()} respectively. 6689*dc5640d1SHerbert Xue 6690*dc5640d1SHerbert Xue <p> To be able to use the open session-in-view pattern (i.e. work per request), 6691*dc5640d1SHerbert Xue register this filter <b>once</b> in your Guice {@code ServletModule}. It is 6692*dc5640d1SHerbert Xue important that you register this filter before any other filter. 6693*dc5640d1SHerbert Xue 6694*dc5640d1SHerbert Xue For multiple providers, you should register this filter once per provider, inside 6695*dc5640d1SHerbert Xue a private module for each persist module installed (this must be the same private 6696*dc5640d1SHerbert Xue module where the specific persist module is itself installed). 6697*dc5640d1SHerbert Xue 6698*dc5640d1SHerbert Xue <p> 6699*dc5640d1SHerbert Xue Example configuration: 6700*dc5640d1SHerbert Xue <pre>{@code 6701*dc5640d1SHerbert Xue public class MyModule extends ServletModule { 6702*dc5640d1SHerbert Xue public void configureServlets() { 6703*dc5640d1SHerbert Xue filter("/*").through(PersistFilter.class); 6704*dc5640d1SHerbert Xue 6705*dc5640d1SHerbert Xue serve("/index.html").with(MyHtmlServlet.class); 6706*dc5640d1SHerbert Xue // Etc. 6707*dc5640d1SHerbert Xue } 6708*dc5640d1SHerbert Xue } 6709*dc5640d1SHerbert Xue }</pre> 6710*dc5640d1SHerbert Xue <p> 6711*dc5640d1SHerbert Xue This filter is thread safe and allows you to create injectors concurrently 6712*dc5640d1SHerbert Xue and deploy multiple guice-persist modules within the same injector, or even 6713*dc5640d1SHerbert Xue multiple injectors with persist modules withing the same JVM or web app. 6714*dc5640d1SHerbert Xue <p> 6715*dc5640d1SHerbert Xue This filter requires the Guice Servlet extension. 6716*dc5640d1SHerbert Xue 6717*dc5640d1SHerbert Xue @author Dhanji R. Prasanna ([email protected])]]> 6718*dc5640d1SHerbert Xue </doc> 6719*dc5640d1SHerbert Xue </class> 6720*dc5640d1SHerbert Xue <!-- end class com.google.inject.persist.PersistFilter --> 6721*dc5640d1SHerbert Xue <!-- start class com.google.inject.persist.PersistModule --> 6722*dc5640d1SHerbert Xue <class name="PersistModule" extends="com.google.inject.AbstractModule" 6723*dc5640d1SHerbert Xue abstract="true" 6724*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6725*dc5640d1SHerbert Xue deprecated="not deprecated"> 6726*dc5640d1SHerbert Xue <constructor name="PersistModule" 6727*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6728*dc5640d1SHerbert Xue deprecated="not deprecated"> 6729*dc5640d1SHerbert Xue </constructor> 6730*dc5640d1SHerbert Xue <method name="configure" 6731*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6732*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 6733*dc5640d1SHerbert Xue deprecated="not deprecated"> 6734*dc5640d1SHerbert Xue </method> 6735*dc5640d1SHerbert Xue <method name="configurePersistence" 6736*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6737*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 6738*dc5640d1SHerbert Xue deprecated="not deprecated"> 6739*dc5640d1SHerbert Xue </method> 6740*dc5640d1SHerbert Xue <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor" 6741*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6742*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 6743*dc5640d1SHerbert Xue deprecated="not deprecated"> 6744*dc5640d1SHerbert Xue </method> 6745*dc5640d1SHerbert Xue <doc> 6746*dc5640d1SHerbert Xue <![CDATA[Install this module to add guice-persist library support for JPA persistence 6747*dc5640d1SHerbert Xue providers. 6748*dc5640d1SHerbert Xue 6749*dc5640d1SHerbert Xue @author [email protected] (Dhanji R. Prasanna)]]> 6750*dc5640d1SHerbert Xue </doc> 6751*dc5640d1SHerbert Xue </class> 6752*dc5640d1SHerbert Xue <!-- end class com.google.inject.persist.PersistModule --> 6753*dc5640d1SHerbert Xue <!-- start interface com.google.inject.persist.PersistService --> 6754*dc5640d1SHerbert Xue <interface name="PersistService" abstract="true" 6755*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6756*dc5640d1SHerbert Xue deprecated="not deprecated"> 6757*dc5640d1SHerbert Xue <method name="start" 6758*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6759*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6760*dc5640d1SHerbert Xue deprecated="not deprecated"> 6761*dc5640d1SHerbert Xue <doc> 6762*dc5640d1SHerbert Xue <![CDATA[Starts the underlying persistence engine and makes guice-persist ready for 6763*dc5640d1SHerbert Xue use. For instance, with JPA, it creates an EntityManagerFactory and may 6764*dc5640d1SHerbert Xue open connection pools. This method must be called by your code prior to 6765*dc5640d1SHerbert Xue using any guice-persist or JPA artifacts. If already started, 6766*dc5640d1SHerbert Xue calling this method does nothing, if already stopped, it also does 6767*dc5640d1SHerbert Xue nothing.]]> 6768*dc5640d1SHerbert Xue </doc> 6769*dc5640d1SHerbert Xue </method> 6770*dc5640d1SHerbert Xue <method name="stop" 6771*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6772*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6773*dc5640d1SHerbert Xue deprecated="not deprecated"> 6774*dc5640d1SHerbert Xue <doc> 6775*dc5640d1SHerbert Xue <![CDATA[Stops the underlying persistence engine. For instance, with JPA, it 6776*dc5640d1SHerbert Xue closes the {@code EntityManagerFactory}. If already stopped, calling this 6777*dc5640d1SHerbert Xue method does nothing. If not yet started, it also does nothing.]]> 6778*dc5640d1SHerbert Xue </doc> 6779*dc5640d1SHerbert Xue </method> 6780*dc5640d1SHerbert Xue <doc> 6781*dc5640d1SHerbert Xue <![CDATA[Persistence provider service. Use this to manage the overall 6782*dc5640d1SHerbert Xue startup and stop of the persistence module(s). 6783*dc5640d1SHerbert Xue 6784*dc5640d1SHerbert Xue TODO(dhanji): Integrate with Service API when appropriate. 6785*dc5640d1SHerbert Xue 6786*dc5640d1SHerbert Xue @author [email protected] (Dhanji R. Prasanna)]]> 6787*dc5640d1SHerbert Xue </doc> 6788*dc5640d1SHerbert Xue </interface> 6789*dc5640d1SHerbert Xue <!-- end interface com.google.inject.persist.PersistService --> 6790*dc5640d1SHerbert Xue <!-- start class com.google.inject.persist.Transactional --> 6791*dc5640d1SHerbert Xue <class name="Transactional" abstract="true" 6792*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6793*dc5640d1SHerbert Xue deprecated="not deprecated"> 6794*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 6795*dc5640d1SHerbert Xue <doc> 6796*dc5640d1SHerbert Xue <![CDATA[<p> Any method or class marked with this annotation will be considered for transactionality. 6797*dc5640d1SHerbert Xue Consult the documentation on https://github.com/google/guice/wiki/GuicePersist for detailed 6798*dc5640d1SHerbert Xue semantics. 6799*dc5640d1SHerbert Xue Marking a method {@code @Transactional} will start a new transaction before the method 6800*dc5640d1SHerbert Xue executes and commit it after the method returns. 6801*dc5640d1SHerbert Xue <p> 6802*dc5640d1SHerbert Xue If the method throws an exception, the transaction will be rolled back <em>unless</em> 6803*dc5640d1SHerbert Xue you have specifically requested not to in the {@link #ignore()} clause. 6804*dc5640d1SHerbert Xue <p> 6805*dc5640d1SHerbert Xue Similarly, the set of exceptions that will trigger a rollback can be defined in 6806*dc5640d1SHerbert Xue the {@link #rollbackOn()} clause. By default, only unchecked exceptions trigger a 6807*dc5640d1SHerbert Xue rollback. 6808*dc5640d1SHerbert Xue 6809*dc5640d1SHerbert Xue @author Dhanji R. Prasanna ([email protected])]]> 6810*dc5640d1SHerbert Xue </doc> 6811*dc5640d1SHerbert Xue </class> 6812*dc5640d1SHerbert Xue <!-- end class com.google.inject.persist.Transactional --> 6813*dc5640d1SHerbert Xue <!-- start interface com.google.inject.persist.UnitOfWork --> 6814*dc5640d1SHerbert Xue <interface name="UnitOfWork" abstract="true" 6815*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6816*dc5640d1SHerbert Xue deprecated="not deprecated"> 6817*dc5640d1SHerbert Xue <method name="begin" 6818*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6819*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6820*dc5640d1SHerbert Xue deprecated="not deprecated"> 6821*dc5640d1SHerbert Xue <doc> 6822*dc5640d1SHerbert Xue <![CDATA[Starts a Unit Of Work. Underneath, causes a session to the data layer to be opened. If there 6823*dc5640d1SHerbert Xue is already one open, the invocation will do nothing. In this way, you can define arbitrary 6824*dc5640d1SHerbert Xue units-of-work that nest within one another safely. 6825*dc5640d1SHerbert Xue 6826*dc5640d1SHerbert Xue Transaction semantics are not affected.]]> 6827*dc5640d1SHerbert Xue </doc> 6828*dc5640d1SHerbert Xue </method> 6829*dc5640d1SHerbert Xue <method name="end" 6830*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 6831*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6832*dc5640d1SHerbert Xue deprecated="not deprecated"> 6833*dc5640d1SHerbert Xue <doc> 6834*dc5640d1SHerbert Xue <![CDATA[Declares an end to the current Unit of Work. Underneath, causes any open session to the data 6835*dc5640d1SHerbert Xue layer to close. If there is no Unit of work open, then the call returns silently. You can 6836*dc5640d1SHerbert Xue safely invoke end() repeatedly. 6837*dc5640d1SHerbert Xue <p> 6838*dc5640d1SHerbert Xue Transaction semantics are not affected.]]> 6839*dc5640d1SHerbert Xue </doc> 6840*dc5640d1SHerbert Xue </method> 6841*dc5640d1SHerbert Xue <doc> 6842*dc5640d1SHerbert Xue <![CDATA[This interface is used to gain manual control over the unit of work. This is mostly to do 6843*dc5640d1SHerbert Xue work in non-request, non-transactional threads. Or where more fine-grained control over the unit 6844*dc5640d1SHerbert Xue of work is required. Starting and ending a unit of work directly corresponds to opening and 6845*dc5640d1SHerbert Xue closing a {@code Session}, {@code EntityManager} or {@code ObjectContainer} respectively. 6846*dc5640d1SHerbert Xue <p> The 6847*dc5640d1SHerbert Xue Unit of Work referred to by UnitOfWork will always be local to the calling thread. Be careful to 6848*dc5640d1SHerbert Xue end() in a finally block. Neither JPA, nor Hibernate supports threadsafe sessions (reasoning 6849*dc5640d1SHerbert Xue behind thread-locality of Unit of Work semantics). 6850*dc5640d1SHerbert Xue 6851*dc5640d1SHerbert Xue <ul> 6852*dc5640d1SHerbert Xue <li>Using UnitOfWork with the PersistFilter inside a request is not recommended.</li> 6853*dc5640d1SHerbert Xue <li>Using UnitOfWork with session-per-txn strategy is not terribly clever either.</li> 6854*dc5640d1SHerbert Xue <li>Using UnitOfWork with session-per-request strategy but *outside* a request (i.e. in a 6855*dc5640d1SHerbert Xue background or bootstrap thread) is probably a good use case.</li> 6856*dc5640d1SHerbert Xue </ul> 6857*dc5640d1SHerbert Xue 6858*dc5640d1SHerbert Xue @author Dhanji R. Prasanna (dhanji@gmail com)]]> 6859*dc5640d1SHerbert Xue </doc> 6860*dc5640d1SHerbert Xue </interface> 6861*dc5640d1SHerbert Xue <!-- end interface com.google.inject.persist.UnitOfWork --> 6862*dc5640d1SHerbert Xue</package> 6863*dc5640d1SHerbert Xue<package name="com.google.inject.persist.finder"> 6864*dc5640d1SHerbert Xue <!-- start class com.google.inject.persist.finder.DynamicFinder --> 6865*dc5640d1SHerbert Xue <class name="DynamicFinder" extends="java.lang.Object" 6866*dc5640d1SHerbert Xue abstract="false" 6867*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 6868*dc5640d1SHerbert Xue deprecated="not deprecated"> 6869*dc5640d1SHerbert Xue <constructor name="DynamicFinder" type="java.lang.reflect.Method" 6870*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6871*dc5640d1SHerbert Xue deprecated="not deprecated"> 6872*dc5640d1SHerbert Xue </constructor> 6873*dc5640d1SHerbert Xue <method name="from" return="com.google.inject.persist.finder.DynamicFinder" 6874*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6875*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 6876*dc5640d1SHerbert Xue deprecated="not deprecated"> 6877*dc5640d1SHerbert Xue <param name="method" type="java.lang.reflect.Method"/> 6878*dc5640d1SHerbert Xue <doc> 6879*dc5640d1SHerbert Xue <![CDATA[Returns some metadata if the method is annotated {@code @Finder} or null. 6880*dc5640d1SHerbert Xue 6881*dc5640d1SHerbert Xue @param method a method you want to test as a dynamic finder]]> 6882*dc5640d1SHerbert Xue </doc> 6883*dc5640d1SHerbert Xue </method> 6884*dc5640d1SHerbert Xue <method name="metadata" return="com.google.inject.persist.finder.Finder" 6885*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6886*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6887*dc5640d1SHerbert Xue deprecated="not deprecated"> 6888*dc5640d1SHerbert Xue </method> 6889*dc5640d1SHerbert Xue <doc> 6890*dc5640d1SHerbert Xue <![CDATA[Utility that helps you introspect dynamic finder methods. 6891*dc5640d1SHerbert Xue 6892*dc5640d1SHerbert Xue @author [email protected] (Dhanji R. Prasanna)]]> 6893*dc5640d1SHerbert Xue </doc> 6894*dc5640d1SHerbert Xue </class> 6895*dc5640d1SHerbert Xue <!-- end class com.google.inject.persist.finder.DynamicFinder --> 6896*dc5640d1SHerbert Xue <!-- start class com.google.inject.persist.finder.Finder --> 6897*dc5640d1SHerbert Xue <class name="Finder" abstract="true" 6898*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6899*dc5640d1SHerbert Xue deprecated="not deprecated"> 6900*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 6901*dc5640d1SHerbert Xue <doc> 6902*dc5640d1SHerbert Xue <![CDATA[Marks a method stub as a dynamic finder. The method is intercepted and replaced with the 6903*dc5640d1SHerbert Xue specified JPAQL query. Provides result auto-boxing and automatic parameter binding. 6904*dc5640d1SHerbert Xue 6905*dc5640d1SHerbert Xue @author Dhanji R. Prasanna ([email protected])]]> 6906*dc5640d1SHerbert Xue </doc> 6907*dc5640d1SHerbert Xue </class> 6908*dc5640d1SHerbert Xue <!-- end class com.google.inject.persist.finder.Finder --> 6909*dc5640d1SHerbert Xue <!-- start class com.google.inject.persist.finder.FirstResult --> 6910*dc5640d1SHerbert Xue <class name="FirstResult" abstract="true" 6911*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6912*dc5640d1SHerbert Xue deprecated="not deprecated"> 6913*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 6914*dc5640d1SHerbert Xue <doc> 6915*dc5640d1SHerbert Xue <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in 6916*dc5640d1SHerbert Xue the index of the first result in the result set you are interested in. 6917*dc5640d1SHerbert Xue Useful for paging result sets. Complemented by {@link MaxResults}. 6918*dc5640d1SHerbert Xue 6919*dc5640d1SHerbert Xue @author Dhanji R. Prasanna ([email protected])]]> 6920*dc5640d1SHerbert Xue </doc> 6921*dc5640d1SHerbert Xue </class> 6922*dc5640d1SHerbert Xue <!-- end class com.google.inject.persist.finder.FirstResult --> 6923*dc5640d1SHerbert Xue <!-- start class com.google.inject.persist.finder.MaxResults --> 6924*dc5640d1SHerbert Xue <class name="MaxResults" abstract="true" 6925*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6926*dc5640d1SHerbert Xue deprecated="not deprecated"> 6927*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 6928*dc5640d1SHerbert Xue <doc> 6929*dc5640d1SHerbert Xue <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in 6930*dc5640d1SHerbert Xue the maximum size of returned result window. Usefule for paging result sets. 6931*dc5640d1SHerbert Xue Complement of {@link FirstResult}. 6932*dc5640d1SHerbert Xue 6933*dc5640d1SHerbert Xue @author Dhanji R. Prasanna ([email protected])]]> 6934*dc5640d1SHerbert Xue </doc> 6935*dc5640d1SHerbert Xue </class> 6936*dc5640d1SHerbert Xue <!-- end class com.google.inject.persist.finder.MaxResults --> 6937*dc5640d1SHerbert Xue</package> 6938*dc5640d1SHerbert Xue<package name="com.google.inject.persist.jpa"> 6939*dc5640d1SHerbert Xue <!-- start class com.google.inject.persist.jpa.JpaPersistModule --> 6940*dc5640d1SHerbert Xue <class name="JpaPersistModule" extends="com.google.inject.persist.PersistModule" 6941*dc5640d1SHerbert Xue abstract="false" 6942*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 6943*dc5640d1SHerbert Xue deprecated="not deprecated"> 6944*dc5640d1SHerbert Xue <constructor name="JpaPersistModule" type="java.lang.String" 6945*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6946*dc5640d1SHerbert Xue deprecated="not deprecated"> 6947*dc5640d1SHerbert Xue </constructor> 6948*dc5640d1SHerbert Xue <method name="configurePersistence" 6949*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6950*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 6951*dc5640d1SHerbert Xue deprecated="not deprecated"> 6952*dc5640d1SHerbert Xue </method> 6953*dc5640d1SHerbert Xue <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor" 6954*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6955*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 6956*dc5640d1SHerbert Xue deprecated="not deprecated"> 6957*dc5640d1SHerbert Xue </method> 6958*dc5640d1SHerbert Xue <method name="properties" return="com.google.inject.persist.jpa.JpaPersistModule" 6959*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6960*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6961*dc5640d1SHerbert Xue deprecated="not deprecated"> 6962*dc5640d1SHerbert Xue <param name="properties" type="java.util.Map<?, ?>"/> 6963*dc5640d1SHerbert Xue <doc> 6964*dc5640d1SHerbert Xue <![CDATA[Configures the JPA persistence provider with a set of properties. 6965*dc5640d1SHerbert Xue 6966*dc5640d1SHerbert Xue @param properties A set of name value pairs that configure a JPA persistence 6967*dc5640d1SHerbert Xue provider as per the specification. 6968*dc5640d1SHerbert Xue @since 4.0 (since 3.0 with a parameter type of {@code java.util.Properties})]]> 6969*dc5640d1SHerbert Xue </doc> 6970*dc5640d1SHerbert Xue </method> 6971*dc5640d1SHerbert Xue <method name="addFinder" return="com.google.inject.persist.jpa.JpaPersistModule" 6972*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 6973*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6974*dc5640d1SHerbert Xue deprecated="not deprecated"> 6975*dc5640d1SHerbert Xue <param name="iface" type="java.lang.Class<T>"/> 6976*dc5640d1SHerbert Xue <doc> 6977*dc5640d1SHerbert Xue <![CDATA[Adds an interface to this module to use as a dynamic finder. 6978*dc5640d1SHerbert Xue 6979*dc5640d1SHerbert Xue @param iface Any interface type whose methods are all dynamic finders.]]> 6980*dc5640d1SHerbert Xue </doc> 6981*dc5640d1SHerbert Xue </method> 6982*dc5640d1SHerbert Xue <doc> 6983*dc5640d1SHerbert Xue <![CDATA[JPA provider for guice persist. 6984*dc5640d1SHerbert Xue 6985*dc5640d1SHerbert Xue @author [email protected] (Dhanji R. Prasanna)]]> 6986*dc5640d1SHerbert Xue </doc> 6987*dc5640d1SHerbert Xue </class> 6988*dc5640d1SHerbert Xue <!-- end class com.google.inject.persist.jpa.JpaPersistModule --> 6989*dc5640d1SHerbert Xue</package> 6990*dc5640d1SHerbert Xue<package name="com.google.inject.servlet"> 6991*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.GuiceFilter --> 6992*dc5640d1SHerbert Xue <class name="GuiceFilter" extends="java.lang.Object" 6993*dc5640d1SHerbert Xue abstract="false" 6994*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6995*dc5640d1SHerbert Xue deprecated="not deprecated"> 6996*dc5640d1SHerbert Xue <implements name="javax.servlet.Filter"/> 6997*dc5640d1SHerbert Xue <constructor name="GuiceFilter" 6998*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 6999*dc5640d1SHerbert Xue deprecated="not deprecated"> 7000*dc5640d1SHerbert Xue </constructor> 7001*dc5640d1SHerbert Xue <method name="doFilter" 7002*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7003*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7004*dc5640d1SHerbert Xue deprecated="not deprecated"> 7005*dc5640d1SHerbert Xue <param name="servletRequest" type="javax.servlet.ServletRequest"/> 7006*dc5640d1SHerbert Xue <param name="servletResponse" type="javax.servlet.ServletResponse"/> 7007*dc5640d1SHerbert Xue <param name="filterChain" type="javax.servlet.FilterChain"/> 7008*dc5640d1SHerbert Xue <exception name="IOException" type="java.io.IOException"/> 7009*dc5640d1SHerbert Xue <exception name="ServletException" type="javax.servlet.ServletException"/> 7010*dc5640d1SHerbert Xue </method> 7011*dc5640d1SHerbert Xue <method name="init" 7012*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7013*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7014*dc5640d1SHerbert Xue deprecated="not deprecated"> 7015*dc5640d1SHerbert Xue <param name="filterConfig" type="javax.servlet.FilterConfig"/> 7016*dc5640d1SHerbert Xue <exception name="ServletException" type="javax.servlet.ServletException"/> 7017*dc5640d1SHerbert Xue </method> 7018*dc5640d1SHerbert Xue <method name="destroy" 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 </method> 7023*dc5640d1SHerbert Xue <doc> 7024*dc5640d1SHerbert Xue <![CDATA[<p> 7025*dc5640d1SHerbert Xue Apply this filter in web.xml above all other filters (typically), to all requests where you plan 7026*dc5640d1SHerbert Xue to use servlet scopes. This is also needed in order to dispatch requests to injectable filters 7027*dc5640d1SHerbert Xue and servlets: 7028*dc5640d1SHerbert Xue <pre> 7029*dc5640d1SHerbert Xue <filter> 7030*dc5640d1SHerbert Xue <filter-name>guiceFilter</filter-name> 7031*dc5640d1SHerbert Xue <filter-class><b>com.google.inject.servlet.GuiceFilter</b></filter-class> 7032*dc5640d1SHerbert Xue </filter> 7033*dc5640d1SHerbert Xue 7034*dc5640d1SHerbert Xue <filter-mapping> 7035*dc5640d1SHerbert Xue <filter-name>guiceFilter</filter-name> 7036*dc5640d1SHerbert Xue <url-pattern>/*</url-pattern> 7037*dc5640d1SHerbert Xue </filter-mapping> 7038*dc5640d1SHerbert Xue </pre> 7039*dc5640d1SHerbert Xue 7040*dc5640d1SHerbert Xue This filter must appear before every filter that makes use of Guice injection or servlet 7041*dc5640d1SHerbert Xue scopes functionality. Typically, you will only register this filter in web.xml and register 7042*dc5640d1SHerbert Xue any other filters (and servlets) using a {@link ServletModule}. 7043*dc5640d1SHerbert Xue 7044*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 7045*dc5640d1SHerbert Xue @author [email protected] (Dhanji R. Prasanna)]]> 7046*dc5640d1SHerbert Xue </doc> 7047*dc5640d1SHerbert Xue </class> 7048*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.GuiceFilter --> 7049*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.GuiceServletContextListener --> 7050*dc5640d1SHerbert Xue <class name="GuiceServletContextListener" extends="java.lang.Object" 7051*dc5640d1SHerbert Xue abstract="true" 7052*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7053*dc5640d1SHerbert Xue deprecated="not deprecated"> 7054*dc5640d1SHerbert Xue <implements name="javax.servlet.ServletContextListener"/> 7055*dc5640d1SHerbert Xue <constructor name="GuiceServletContextListener" 7056*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7057*dc5640d1SHerbert Xue deprecated="not deprecated"> 7058*dc5640d1SHerbert Xue </constructor> 7059*dc5640d1SHerbert Xue <method name="contextInitialized" 7060*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7061*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7062*dc5640d1SHerbert Xue deprecated="not deprecated"> 7063*dc5640d1SHerbert Xue <param name="servletContextEvent" type="javax.servlet.ServletContextEvent"/> 7064*dc5640d1SHerbert Xue </method> 7065*dc5640d1SHerbert Xue <method name="contextDestroyed" 7066*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7067*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7068*dc5640d1SHerbert Xue deprecated="not deprecated"> 7069*dc5640d1SHerbert Xue <param name="servletContextEvent" type="javax.servlet.ServletContextEvent"/> 7070*dc5640d1SHerbert Xue </method> 7071*dc5640d1SHerbert Xue <method name="getInjector" return="com.google.inject.Injector" 7072*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7073*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 7074*dc5640d1SHerbert Xue deprecated="not deprecated"> 7075*dc5640d1SHerbert Xue <doc> 7076*dc5640d1SHerbert Xue <![CDATA[Override this method to create (or otherwise obtain a reference to) your 7077*dc5640d1SHerbert Xue injector.]]> 7078*dc5640d1SHerbert Xue </doc> 7079*dc5640d1SHerbert Xue </method> 7080*dc5640d1SHerbert Xue <doc> 7081*dc5640d1SHerbert Xue <![CDATA[As of Guice 2.0 you can still use (your subclasses of) {@code GuiceServletContextListener} 7082*dc5640d1SHerbert Xue class as a logical place to create and configure your injector. This will ensure the injector 7083*dc5640d1SHerbert Xue is created when the web application is deployed. 7084*dc5640d1SHerbert Xue 7085*dc5640d1SHerbert Xue @author Kevin Bourrillion ([email protected]) 7086*dc5640d1SHerbert Xue @since 2.0]]> 7087*dc5640d1SHerbert Xue </doc> 7088*dc5640d1SHerbert Xue </class> 7089*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.GuiceServletContextListener --> 7090*dc5640d1SHerbert Xue <!-- start interface com.google.inject.servlet.InstanceFilterBinding --> 7091*dc5640d1SHerbert Xue <interface name="InstanceFilterBinding" abstract="true" 7092*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7093*dc5640d1SHerbert Xue deprecated="not deprecated"> 7094*dc5640d1SHerbert Xue <implements name="com.google.inject.servlet.ServletModuleBinding"/> 7095*dc5640d1SHerbert Xue <method name="getFilterInstance" return="javax.servlet.Filter" 7096*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7097*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7098*dc5640d1SHerbert Xue deprecated="not deprecated"> 7099*dc5640d1SHerbert Xue <doc> 7100*dc5640d1SHerbert Xue <![CDATA[Returns the filter instance that will be used.]]> 7101*dc5640d1SHerbert Xue </doc> 7102*dc5640d1SHerbert Xue </method> 7103*dc5640d1SHerbert Xue <doc> 7104*dc5640d1SHerbert Xue <![CDATA[A binding to a single instance of a filter. 7105*dc5640d1SHerbert Xue 7106*dc5640d1SHerbert Xue @author [email protected] 7107*dc5640d1SHerbert Xue @since 3.0]]> 7108*dc5640d1SHerbert Xue </doc> 7109*dc5640d1SHerbert Xue </interface> 7110*dc5640d1SHerbert Xue <!-- end interface com.google.inject.servlet.InstanceFilterBinding --> 7111*dc5640d1SHerbert Xue <!-- start interface com.google.inject.servlet.InstanceServletBinding --> 7112*dc5640d1SHerbert Xue <interface name="InstanceServletBinding" abstract="true" 7113*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7114*dc5640d1SHerbert Xue deprecated="not deprecated"> 7115*dc5640d1SHerbert Xue <implements name="com.google.inject.servlet.ServletModuleBinding"/> 7116*dc5640d1SHerbert Xue <method name="getServletInstance" return="javax.servlet.http.HttpServlet" 7117*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7118*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7119*dc5640d1SHerbert Xue deprecated="not deprecated"> 7120*dc5640d1SHerbert Xue <doc> 7121*dc5640d1SHerbert Xue <![CDATA[Returns the servlet instance that will be used.]]> 7122*dc5640d1SHerbert Xue </doc> 7123*dc5640d1SHerbert Xue </method> 7124*dc5640d1SHerbert Xue <doc> 7125*dc5640d1SHerbert Xue <![CDATA[A binding to a single instance of a servlet. 7126*dc5640d1SHerbert Xue 7127*dc5640d1SHerbert Xue @author [email protected] 7128*dc5640d1SHerbert Xue @since 3.0]]> 7129*dc5640d1SHerbert Xue </doc> 7130*dc5640d1SHerbert Xue </interface> 7131*dc5640d1SHerbert Xue <!-- end interface com.google.inject.servlet.InstanceServletBinding --> 7132*dc5640d1SHerbert Xue <!-- start interface com.google.inject.servlet.LinkedFilterBinding --> 7133*dc5640d1SHerbert Xue <interface name="LinkedFilterBinding" abstract="true" 7134*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7135*dc5640d1SHerbert Xue deprecated="not deprecated"> 7136*dc5640d1SHerbert Xue <implements name="com.google.inject.servlet.ServletModuleBinding"/> 7137*dc5640d1SHerbert Xue <method name="getLinkedKey" return="com.google.inject.Key<? extends javax.servlet.Filter>" 7138*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7139*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7140*dc5640d1SHerbert Xue deprecated="not deprecated"> 7141*dc5640d1SHerbert Xue <doc> 7142*dc5640d1SHerbert Xue <![CDATA[Returns the key used to lookup the filter instance.]]> 7143*dc5640d1SHerbert Xue </doc> 7144*dc5640d1SHerbert Xue </method> 7145*dc5640d1SHerbert Xue <doc> 7146*dc5640d1SHerbert Xue <![CDATA[A linked binding to a filter. 7147*dc5640d1SHerbert Xue 7148*dc5640d1SHerbert Xue @author [email protected] 7149*dc5640d1SHerbert Xue @since 3.0]]> 7150*dc5640d1SHerbert Xue </doc> 7151*dc5640d1SHerbert Xue </interface> 7152*dc5640d1SHerbert Xue <!-- end interface com.google.inject.servlet.LinkedFilterBinding --> 7153*dc5640d1SHerbert Xue <!-- start interface com.google.inject.servlet.LinkedServletBinding --> 7154*dc5640d1SHerbert Xue <interface name="LinkedServletBinding" abstract="true" 7155*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7156*dc5640d1SHerbert Xue deprecated="not deprecated"> 7157*dc5640d1SHerbert Xue <implements name="com.google.inject.servlet.ServletModuleBinding"/> 7158*dc5640d1SHerbert Xue <method name="getLinkedKey" return="com.google.inject.Key<? extends javax.servlet.http.HttpServlet>" 7159*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7160*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7161*dc5640d1SHerbert Xue deprecated="not deprecated"> 7162*dc5640d1SHerbert Xue <doc> 7163*dc5640d1SHerbert Xue <![CDATA[Returns the key used to lookup the servlet instance.]]> 7164*dc5640d1SHerbert Xue </doc> 7165*dc5640d1SHerbert Xue </method> 7166*dc5640d1SHerbert Xue <doc> 7167*dc5640d1SHerbert Xue <![CDATA[A linked binding to a servlet. 7168*dc5640d1SHerbert Xue 7169*dc5640d1SHerbert Xue @author [email protected] 7170*dc5640d1SHerbert Xue @since 3.0]]> 7171*dc5640d1SHerbert Xue </doc> 7172*dc5640d1SHerbert Xue </interface> 7173*dc5640d1SHerbert Xue <!-- end interface com.google.inject.servlet.LinkedServletBinding --> 7174*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.RequestParameters --> 7175*dc5640d1SHerbert Xue <class name="RequestParameters" abstract="true" 7176*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7177*dc5640d1SHerbert Xue deprecated="not deprecated"> 7178*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 7179*dc5640d1SHerbert Xue <doc> 7180*dc5640d1SHerbert Xue <![CDATA[Apply this to field or parameters of type {@code Map<String, String[]>} 7181*dc5640d1SHerbert Xue when you want the HTTP request parameter map to be injected. 7182*dc5640d1SHerbert Xue 7183*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 7184*dc5640d1SHerbert Xue </doc> 7185*dc5640d1SHerbert Xue </class> 7186*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.RequestParameters --> 7187*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.RequestScoped --> 7188*dc5640d1SHerbert Xue <class name="RequestScoped" abstract="true" 7189*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7190*dc5640d1SHerbert Xue deprecated="not deprecated"> 7191*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 7192*dc5640d1SHerbert Xue <doc> 7193*dc5640d1SHerbert Xue <![CDATA[Apply this to implementation classes when you want one instance per request. 7194*dc5640d1SHerbert Xue 7195*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 7196*dc5640d1SHerbert Xue </doc> 7197*dc5640d1SHerbert Xue </class> 7198*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.RequestScoped --> 7199*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.ScopingException --> 7200*dc5640d1SHerbert Xue <class name="ScopingException" extends="java.lang.IllegalStateException" 7201*dc5640d1SHerbert Xue abstract="false" 7202*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 7203*dc5640d1SHerbert Xue deprecated="not deprecated"> 7204*dc5640d1SHerbert Xue <constructor name="ScopingException" type="java.lang.String" 7205*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7206*dc5640d1SHerbert Xue deprecated="not deprecated"> 7207*dc5640d1SHerbert Xue </constructor> 7208*dc5640d1SHerbert Xue <doc> 7209*dc5640d1SHerbert Xue <![CDATA[Exception thrown when there was a failure entering request scope. 7210*dc5640d1SHerbert Xue 7211*dc5640d1SHerbert Xue @author Chris Nokleberg 7212*dc5640d1SHerbert Xue @since 4.0]]> 7213*dc5640d1SHerbert Xue </doc> 7214*dc5640d1SHerbert Xue </class> 7215*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.ScopingException --> 7216*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.ScopingOnly --> 7217*dc5640d1SHerbert Xue <class name="ScopingOnly" abstract="true" 7218*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7219*dc5640d1SHerbert Xue deprecated="not deprecated"> 7220*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 7221*dc5640d1SHerbert Xue <doc> 7222*dc5640d1SHerbert Xue <![CDATA[Annotates a {@link GuiceFilter} that provides scope functionality, but 7223*dc5640d1SHerbert Xue doesn't dispatch to {@link ServletModule} bound servlets or filters. 7224*dc5640d1SHerbert Xue 7225*dc5640d1SHerbert Xue @author [email protected] (Isaac Shum) 7226*dc5640d1SHerbert Xue @since 4.0]]> 7227*dc5640d1SHerbert Xue </doc> 7228*dc5640d1SHerbert Xue </class> 7229*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.ScopingOnly --> 7230*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.ServletModule --> 7231*dc5640d1SHerbert Xue <class name="ServletModule" extends="com.google.inject.AbstractModule" 7232*dc5640d1SHerbert Xue abstract="false" 7233*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7234*dc5640d1SHerbert Xue deprecated="not deprecated"> 7235*dc5640d1SHerbert Xue <constructor name="ServletModule" 7236*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7237*dc5640d1SHerbert Xue deprecated="not deprecated"> 7238*dc5640d1SHerbert Xue </constructor> 7239*dc5640d1SHerbert Xue <method name="configure" 7240*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7241*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 7242*dc5640d1SHerbert Xue deprecated="not deprecated"> 7243*dc5640d1SHerbert Xue </method> 7244*dc5640d1SHerbert Xue <method name="configureServlets" 7245*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7246*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 7247*dc5640d1SHerbert Xue deprecated="not deprecated"> 7248*dc5640d1SHerbert Xue <doc> 7249*dc5640d1SHerbert Xue <![CDATA[<h3>Servlet Mapping EDSL</h3> 7250*dc5640d1SHerbert Xue 7251*dc5640d1SHerbert Xue <p> Part of the EDSL builder language for configuring servlets 7252*dc5640d1SHerbert Xue and filters with guice-servlet. Think of this as an in-code replacement for web.xml. 7253*dc5640d1SHerbert Xue Filters and servlets are configured here using simple java method calls. Here is a typical 7254*dc5640d1SHerbert Xue example of registering a filter when creating your Guice injector: 7255*dc5640d1SHerbert Xue 7256*dc5640d1SHerbert Xue <pre> 7257*dc5640d1SHerbert Xue Guice.createInjector(..., new ServletModule() { 7258*dc5640d1SHerbert Xue 7259*dc5640d1SHerbert Xue {@literal @}Override 7260*dc5640d1SHerbert Xue protected void configureServlets() { 7261*dc5640d1SHerbert Xue <b>serve("*.html").with(MyServlet.class)</b> 7262*dc5640d1SHerbert Xue } 7263*dc5640d1SHerbert Xue } 7264*dc5640d1SHerbert Xue </pre> 7265*dc5640d1SHerbert Xue 7266*dc5640d1SHerbert Xue This registers a servlet (subclass of {@code HttpServlet}) called {@code MyServlet} to service 7267*dc5640d1SHerbert Xue any web pages ending in {@code .html}. You can also use a path-style syntax to register 7268*dc5640d1SHerbert Xue servlets: 7269*dc5640d1SHerbert Xue 7270*dc5640d1SHerbert Xue <pre> 7271*dc5640d1SHerbert Xue <b>serve("/my/*").with(MyServlet.class)</b> 7272*dc5640d1SHerbert Xue </pre> 7273*dc5640d1SHerbert Xue 7274*dc5640d1SHerbert Xue Every servlet (or filter) is required to be a singleton. If you cannot annotate the class 7275*dc5640d1SHerbert Xue directly, you should add a separate {@code bind(..).in(Singleton.class)} rule elsewhere in 7276*dc5640d1SHerbert Xue your module. Mapping a servlet that is bound under any other scope is an error. 7277*dc5640d1SHerbert Xue 7278*dc5640d1SHerbert Xue <p> 7279*dc5640d1SHerbert Xue <h4>Dispatch Order</h4> 7280*dc5640d1SHerbert Xue You are free to register as many servlets and filters as you like this way. They will 7281*dc5640d1SHerbert Xue be compared and dispatched in the order in which the filter methods are called: 7282*dc5640d1SHerbert Xue 7283*dc5640d1SHerbert Xue <pre> 7284*dc5640d1SHerbert Xue 7285*dc5640d1SHerbert Xue Guice.createInjector(..., new ServletModule() { 7286*dc5640d1SHerbert Xue 7287*dc5640d1SHerbert Xue {@literal @}Override 7288*dc5640d1SHerbert Xue protected void configureServlets() { 7289*dc5640d1SHerbert Xue filter("/*").through(MyFilter.class); 7290*dc5640d1SHerbert Xue filter("*.css").through(MyCssFilter.class); 7291*dc5640d1SHerbert Xue filter("*.jpg").through(new MyJpgFilter()); 7292*dc5640d1SHerbert Xue // etc.. 7293*dc5640d1SHerbert Xue 7294*dc5640d1SHerbert Xue serve("*.html").with(MyServlet.class); 7295*dc5640d1SHerbert Xue serve("/my/*").with(MyServlet.class); 7296*dc5640d1SHerbert Xue serve("*.jpg").with(new MyServlet()); 7297*dc5640d1SHerbert Xue // etc.. 7298*dc5640d1SHerbert Xue } 7299*dc5640d1SHerbert Xue } 7300*dc5640d1SHerbert Xue </pre> 7301*dc5640d1SHerbert Xue This will traverse down the list of rules in lexical order. For example, a url 7302*dc5640d1SHerbert Xue "{@code /my/file.js}" (after it runs through the matching filters) will first 7303*dc5640d1SHerbert Xue be compared against the servlet mapping: 7304*dc5640d1SHerbert Xue 7305*dc5640d1SHerbert Xue <pre> 7306*dc5640d1SHerbert Xue serve("*.html").with(MyServlet.class); 7307*dc5640d1SHerbert Xue </pre> 7308*dc5640d1SHerbert Xue And failing that, it will descend to the next servlet mapping: 7309*dc5640d1SHerbert Xue 7310*dc5640d1SHerbert Xue <pre> 7311*dc5640d1SHerbert Xue serve("/my/*").with(MyServlet.class); 7312*dc5640d1SHerbert Xue </pre> 7313*dc5640d1SHerbert Xue 7314*dc5640d1SHerbert Xue Since this rule matches, Guice Servlet will dispatch to {@code MyServlet}. These 7315*dc5640d1SHerbert Xue two mapping rules can also be written in more compact form using varargs syntax: 7316*dc5640d1SHerbert Xue 7317*dc5640d1SHerbert Xue <pre> 7318*dc5640d1SHerbert Xue serve(<b>"*.html", "/my/*"</b>).with(MyServlet.class); 7319*dc5640d1SHerbert Xue </pre> 7320*dc5640d1SHerbert Xue 7321*dc5640d1SHerbert Xue This way you can map several URI patterns to the same servlet. A similar syntax is 7322*dc5640d1SHerbert Xue also available for filter mappings. 7323*dc5640d1SHerbert Xue 7324*dc5640d1SHerbert Xue <p> 7325*dc5640d1SHerbert Xue <h4>Regular Expressions</h4> 7326*dc5640d1SHerbert Xue You can also map servlets (or filters) to URIs using regular expressions: 7327*dc5640d1SHerbert Xue <pre> 7328*dc5640d1SHerbert Xue <b>serveRegex("(.)*ajax(.)*").with(MyAjaxServlet.class)</b> 7329*dc5640d1SHerbert Xue </pre> 7330*dc5640d1SHerbert Xue 7331*dc5640d1SHerbert Xue This will map any URI containing the text "ajax" in it to {@code MyAjaxServlet}. Such as: 7332*dc5640d1SHerbert Xue <ul> 7333*dc5640d1SHerbert Xue <li>http://www.google.com/ajax.html</li> 7334*dc5640d1SHerbert Xue <li>http://www.google.com/content/ajax/index</li> 7335*dc5640d1SHerbert Xue <li>http://www.google.com/it/is_totally_ajaxian</li> 7336*dc5640d1SHerbert Xue </ul> 7337*dc5640d1SHerbert Xue 7338*dc5640d1SHerbert Xue 7339*dc5640d1SHerbert Xue <h3>Initialization Parameters</h3> 7340*dc5640d1SHerbert Xue 7341*dc5640d1SHerbert Xue Servlets (and filters) allow you to pass in init params 7342*dc5640d1SHerbert Xue using the {@code <init-param>} tag in web.xml. You can similarly pass in parameters to 7343*dc5640d1SHerbert Xue Servlets and filters registered in Guice-servlet using a {@link java.util.Map} of parameter 7344*dc5640d1SHerbert Xue name/value pairs. For example, to initialize {@code MyServlet} with two parameters 7345*dc5640d1SHerbert Xue ({@code name="Dhanji", site="google.com"}) you could write: 7346*dc5640d1SHerbert Xue 7347*dc5640d1SHerbert Xue <pre> 7348*dc5640d1SHerbert Xue Map<String, String> params = new HashMap<String, String>(); 7349*dc5640d1SHerbert Xue params.put("name", "Dhanji"); 7350*dc5640d1SHerbert Xue params.put("site", "google.com"); 7351*dc5640d1SHerbert Xue 7352*dc5640d1SHerbert Xue ... 7353*dc5640d1SHerbert Xue serve("/*").with(MyServlet.class, <b>params</b>) 7354*dc5640d1SHerbert Xue </pre> 7355*dc5640d1SHerbert Xue 7356*dc5640d1SHerbert Xue <p> 7357*dc5640d1SHerbert Xue <h3>Binding Keys</h3> 7358*dc5640d1SHerbert Xue 7359*dc5640d1SHerbert Xue You can also bind keys rather than classes. This lets you hide 7360*dc5640d1SHerbert Xue implementations with package-local visbility and expose them using 7361*dc5640d1SHerbert Xue only a Guice module and an annotation: 7362*dc5640d1SHerbert Xue 7363*dc5640d1SHerbert Xue <pre> 7364*dc5640d1SHerbert Xue ... 7365*dc5640d1SHerbert Xue filter("/*").through(<b>Key.get(Filter.class, Fave.class)</b>); 7366*dc5640d1SHerbert Xue </pre> 7367*dc5640d1SHerbert Xue 7368*dc5640d1SHerbert Xue Where {@code Filter.class} refers to the Servlet API interface and {@code Fave.class} is a 7369*dc5640d1SHerbert Xue custom binding annotation. Elsewhere (in one of your own modules) you can bind this 7370*dc5640d1SHerbert Xue filter's implementation: 7371*dc5640d1SHerbert Xue 7372*dc5640d1SHerbert Xue <pre> 7373*dc5640d1SHerbert Xue bind(Filter.class)<b>.annotatedWith(Fave.class)</b>.to(MyFilterImpl.class); 7374*dc5640d1SHerbert Xue </pre> 7375*dc5640d1SHerbert Xue 7376*dc5640d1SHerbert Xue See {@link com.google.inject.Binder} for more information on binding syntax. 7377*dc5640d1SHerbert Xue 7378*dc5640d1SHerbert Xue <p> 7379*dc5640d1SHerbert Xue <h3>Multiple Modules</h3> 7380*dc5640d1SHerbert Xue 7381*dc5640d1SHerbert Xue It is sometimes useful to capture servlet and filter mappings from multiple different 7382*dc5640d1SHerbert Xue modules. This is essential if you want to package and offer drop-in Guice plugins that 7383*dc5640d1SHerbert Xue provide servlet functionality. 7384*dc5640d1SHerbert Xue 7385*dc5640d1SHerbert Xue <p> 7386*dc5640d1SHerbert Xue Guice Servlet allows you to register several instances of {@code ServletModule} to your 7387*dc5640d1SHerbert Xue injector. The order in which these modules are installed determines the dispatch order 7388*dc5640d1SHerbert Xue of filters and the precedence order of servlets. For example, if you had two servlet modules, 7389*dc5640d1SHerbert Xue {@code RpcModule} and {@code WebServiceModule} and they each contained a filter that mapped 7390*dc5640d1SHerbert Xue to the same URI pattern, {@code "/*"}: 7391*dc5640d1SHerbert Xue 7392*dc5640d1SHerbert Xue <p> 7393*dc5640d1SHerbert Xue In {@code RpcModule}: 7394*dc5640d1SHerbert Xue <pre> 7395*dc5640d1SHerbert Xue filter("/*").through(RpcFilter.class); 7396*dc5640d1SHerbert Xue </pre> 7397*dc5640d1SHerbert Xue 7398*dc5640d1SHerbert Xue In {@code WebServiceModule}: 7399*dc5640d1SHerbert Xue <pre> 7400*dc5640d1SHerbert Xue filter("/*").through(WebServiceFilter.class); 7401*dc5640d1SHerbert Xue </pre> 7402*dc5640d1SHerbert Xue 7403*dc5640d1SHerbert Xue Then the order in which these filters are dispatched is determined by the order in which 7404*dc5640d1SHerbert Xue the modules are installed: 7405*dc5640d1SHerbert Xue 7406*dc5640d1SHerbert Xue <pre> 7407*dc5640d1SHerbert Xue <b>install(new WebServiceModule());</b> 7408*dc5640d1SHerbert Xue install(new RpcModule()); 7409*dc5640d1SHerbert Xue </pre> 7410*dc5640d1SHerbert Xue 7411*dc5640d1SHerbert Xue In the case shown above {@code WebServiceFilter} will run first. 7412*dc5640d1SHerbert Xue 7413*dc5640d1SHerbert Xue @since 2.0]]> 7414*dc5640d1SHerbert Xue </doc> 7415*dc5640d1SHerbert Xue </method> 7416*dc5640d1SHerbert Xue <method name="filter" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder" 7417*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7418*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 7419*dc5640d1SHerbert Xue deprecated="not deprecated"> 7420*dc5640d1SHerbert Xue <param name="urlPattern" type="java.lang.String"/> 7421*dc5640d1SHerbert Xue <param name="morePatterns" type="java.lang.String[]"/> 7422*dc5640d1SHerbert Xue <doc> 7423*dc5640d1SHerbert Xue <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc. 7424*dc5640d1SHerbert Xue @since 2.0]]> 7425*dc5640d1SHerbert Xue </doc> 7426*dc5640d1SHerbert Xue </method> 7427*dc5640d1SHerbert Xue <method name="filterRegex" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder" 7428*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7429*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 7430*dc5640d1SHerbert Xue deprecated="not deprecated"> 7431*dc5640d1SHerbert Xue <param name="regex" type="java.lang.String"/> 7432*dc5640d1SHerbert Xue <param name="regexes" type="java.lang.String[]"/> 7433*dc5640d1SHerbert Xue <doc> 7434*dc5640d1SHerbert Xue <![CDATA[@param regex Any Java-style regular expression. 7435*dc5640d1SHerbert Xue @since 2.0]]> 7436*dc5640d1SHerbert Xue </doc> 7437*dc5640d1SHerbert Xue </method> 7438*dc5640d1SHerbert Xue <method name="serve" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder" 7439*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7440*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 7441*dc5640d1SHerbert Xue deprecated="not deprecated"> 7442*dc5640d1SHerbert Xue <param name="urlPattern" type="java.lang.String"/> 7443*dc5640d1SHerbert Xue <param name="morePatterns" type="java.lang.String[]"/> 7444*dc5640d1SHerbert Xue <doc> 7445*dc5640d1SHerbert Xue <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc. 7446*dc5640d1SHerbert Xue @since 2.0]]> 7447*dc5640d1SHerbert Xue </doc> 7448*dc5640d1SHerbert Xue </method> 7449*dc5640d1SHerbert Xue <method name="serveRegex" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder" 7450*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7451*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 7452*dc5640d1SHerbert Xue deprecated="not deprecated"> 7453*dc5640d1SHerbert Xue <param name="regex" type="java.lang.String"/> 7454*dc5640d1SHerbert Xue <param name="regexes" type="java.lang.String[]"/> 7455*dc5640d1SHerbert Xue <doc> 7456*dc5640d1SHerbert Xue <![CDATA[@param regex Any Java-style regular expression. 7457*dc5640d1SHerbert Xue @since 2.0]]> 7458*dc5640d1SHerbert Xue </doc> 7459*dc5640d1SHerbert Xue </method> 7460*dc5640d1SHerbert Xue <method name="getServletContext" return="javax.servlet.ServletContext" 7461*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7462*dc5640d1SHerbert Xue static="false" final="true" visibility="protected" 7463*dc5640d1SHerbert Xue deprecated="not deprecated"> 7464*dc5640d1SHerbert Xue <doc> 7465*dc5640d1SHerbert Xue <![CDATA[This method only works if you are using the {@linkplain GuiceServletContextListener} to 7466*dc5640d1SHerbert Xue create your injector. Otherwise, it returns null. 7467*dc5640d1SHerbert Xue @return The current servlet context. 7468*dc5640d1SHerbert Xue @since 3.0]]> 7469*dc5640d1SHerbert Xue </doc> 7470*dc5640d1SHerbert Xue </method> 7471*dc5640d1SHerbert Xue <doc> 7472*dc5640d1SHerbert Xue <![CDATA[Configures the servlet scopes and creates bindings for the servlet API 7473*dc5640d1SHerbert Xue objects so you can inject the request, response, session, etc. 7474*dc5640d1SHerbert Xue 7475*dc5640d1SHerbert Xue <p> 7476*dc5640d1SHerbert Xue You should subclass this module to register servlets and 7477*dc5640d1SHerbert Xue filters in the {@link #configureServlets()} method. 7478*dc5640d1SHerbert Xue 7479*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 7480*dc5640d1SHerbert Xue @author [email protected] (Dhanji R. Prasanna)]]> 7481*dc5640d1SHerbert Xue </doc> 7482*dc5640d1SHerbert Xue </class> 7483*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.ServletModule --> 7484*dc5640d1SHerbert Xue <!-- start interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder --> 7485*dc5640d1SHerbert Xue <interface name="ServletModule.FilterKeyBindingBuilder" abstract="true" 7486*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 7487*dc5640d1SHerbert Xue deprecated="not deprecated"> 7488*dc5640d1SHerbert Xue <method name="through" 7489*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7490*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7491*dc5640d1SHerbert Xue deprecated="not deprecated"> 7492*dc5640d1SHerbert Xue <param name="filterKey" type="java.lang.Class<? extends javax.servlet.Filter>"/> 7493*dc5640d1SHerbert Xue </method> 7494*dc5640d1SHerbert Xue <method name="through" 7495*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7496*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7497*dc5640d1SHerbert Xue deprecated="not deprecated"> 7498*dc5640d1SHerbert Xue <param name="filterKey" type="com.google.inject.Key<? extends javax.servlet.Filter>"/> 7499*dc5640d1SHerbert Xue </method> 7500*dc5640d1SHerbert Xue <method name="through" 7501*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7502*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7503*dc5640d1SHerbert Xue deprecated="not deprecated"> 7504*dc5640d1SHerbert Xue <param name="filter" type="javax.servlet.Filter"/> 7505*dc5640d1SHerbert Xue <doc> 7506*dc5640d1SHerbert Xue <![CDATA[@since 3.0]]> 7507*dc5640d1SHerbert Xue </doc> 7508*dc5640d1SHerbert Xue </method> 7509*dc5640d1SHerbert Xue <method name="through" 7510*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7511*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7512*dc5640d1SHerbert Xue deprecated="not deprecated"> 7513*dc5640d1SHerbert Xue <param name="filterKey" type="java.lang.Class<? extends javax.servlet.Filter>"/> 7514*dc5640d1SHerbert Xue <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7515*dc5640d1SHerbert Xue </method> 7516*dc5640d1SHerbert Xue <method name="through" 7517*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7518*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7519*dc5640d1SHerbert Xue deprecated="not deprecated"> 7520*dc5640d1SHerbert Xue <param name="filterKey" type="com.google.inject.Key<? extends javax.servlet.Filter>"/> 7521*dc5640d1SHerbert Xue <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7522*dc5640d1SHerbert Xue </method> 7523*dc5640d1SHerbert Xue <method name="through" 7524*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7525*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7526*dc5640d1SHerbert Xue deprecated="not deprecated"> 7527*dc5640d1SHerbert Xue <param name="filter" type="javax.servlet.Filter"/> 7528*dc5640d1SHerbert Xue <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7529*dc5640d1SHerbert Xue <doc> 7530*dc5640d1SHerbert Xue <![CDATA[@since 3.0]]> 7531*dc5640d1SHerbert Xue </doc> 7532*dc5640d1SHerbert Xue </method> 7533*dc5640d1SHerbert Xue <doc> 7534*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()} 7535*dc5640d1SHerbert Xue 7536*dc5640d1SHerbert Xue @since 2.0]]> 7537*dc5640d1SHerbert Xue </doc> 7538*dc5640d1SHerbert Xue </interface> 7539*dc5640d1SHerbert Xue <!-- end interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder --> 7540*dc5640d1SHerbert Xue <!-- start interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder --> 7541*dc5640d1SHerbert Xue <interface name="ServletModule.ServletKeyBindingBuilder" abstract="true" 7542*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 7543*dc5640d1SHerbert Xue deprecated="not deprecated"> 7544*dc5640d1SHerbert Xue <method name="with" 7545*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7546*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7547*dc5640d1SHerbert Xue deprecated="not deprecated"> 7548*dc5640d1SHerbert Xue <param name="servletKey" type="java.lang.Class<? extends javax.servlet.http.HttpServlet>"/> 7549*dc5640d1SHerbert Xue </method> 7550*dc5640d1SHerbert Xue <method name="with" 7551*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7552*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7553*dc5640d1SHerbert Xue deprecated="not deprecated"> 7554*dc5640d1SHerbert Xue <param name="servletKey" type="com.google.inject.Key<? extends javax.servlet.http.HttpServlet>"/> 7555*dc5640d1SHerbert Xue </method> 7556*dc5640d1SHerbert Xue <method name="with" 7557*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7558*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7559*dc5640d1SHerbert Xue deprecated="not deprecated"> 7560*dc5640d1SHerbert Xue <param name="servlet" type="javax.servlet.http.HttpServlet"/> 7561*dc5640d1SHerbert Xue <doc> 7562*dc5640d1SHerbert Xue <![CDATA[@since 3.0]]> 7563*dc5640d1SHerbert Xue </doc> 7564*dc5640d1SHerbert Xue </method> 7565*dc5640d1SHerbert Xue <method name="with" 7566*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7567*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7568*dc5640d1SHerbert Xue deprecated="not deprecated"> 7569*dc5640d1SHerbert Xue <param name="servletKey" type="java.lang.Class<? extends javax.servlet.http.HttpServlet>"/> 7570*dc5640d1SHerbert Xue <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7571*dc5640d1SHerbert Xue </method> 7572*dc5640d1SHerbert Xue <method name="with" 7573*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7574*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7575*dc5640d1SHerbert Xue deprecated="not deprecated"> 7576*dc5640d1SHerbert Xue <param name="servletKey" type="com.google.inject.Key<? extends javax.servlet.http.HttpServlet>"/> 7577*dc5640d1SHerbert Xue <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7578*dc5640d1SHerbert Xue </method> 7579*dc5640d1SHerbert Xue <method name="with" 7580*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7581*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7582*dc5640d1SHerbert Xue deprecated="not deprecated"> 7583*dc5640d1SHerbert Xue <param name="servlet" type="javax.servlet.http.HttpServlet"/> 7584*dc5640d1SHerbert Xue <param name="initParams" type="java.util.Map<java.lang.String, java.lang.String>"/> 7585*dc5640d1SHerbert Xue <doc> 7586*dc5640d1SHerbert Xue <![CDATA[@since 3.0]]> 7587*dc5640d1SHerbert Xue </doc> 7588*dc5640d1SHerbert Xue </method> 7589*dc5640d1SHerbert Xue <doc> 7590*dc5640d1SHerbert Xue <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()} 7591*dc5640d1SHerbert Xue 7592*dc5640d1SHerbert Xue @since 2.0]]> 7593*dc5640d1SHerbert Xue </doc> 7594*dc5640d1SHerbert Xue </interface> 7595*dc5640d1SHerbert Xue <!-- end interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder --> 7596*dc5640d1SHerbert Xue <!-- start interface com.google.inject.servlet.ServletModuleBinding --> 7597*dc5640d1SHerbert Xue <interface name="ServletModuleBinding" abstract="true" 7598*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7599*dc5640d1SHerbert Xue deprecated="not deprecated"> 7600*dc5640d1SHerbert Xue <method name="getUriPatternType" return="com.google.inject.servlet.UriPatternType" 7601*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7602*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7603*dc5640d1SHerbert Xue deprecated="not deprecated"> 7604*dc5640d1SHerbert Xue <doc> 7605*dc5640d1SHerbert Xue <![CDATA[Returns the pattern type that this binding was created with.]]> 7606*dc5640d1SHerbert Xue </doc> 7607*dc5640d1SHerbert Xue </method> 7608*dc5640d1SHerbert Xue <method name="getPattern" return="java.lang.String" 7609*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7610*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7611*dc5640d1SHerbert Xue deprecated="not deprecated"> 7612*dc5640d1SHerbert Xue <doc> 7613*dc5640d1SHerbert Xue <![CDATA[Returns the pattern used to match against the binding.]]> 7614*dc5640d1SHerbert Xue </doc> 7615*dc5640d1SHerbert Xue </method> 7616*dc5640d1SHerbert Xue <method name="getInitParams" return="java.util.Map<java.lang.String, java.lang.String>" 7617*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7618*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7619*dc5640d1SHerbert Xue deprecated="not deprecated"> 7620*dc5640d1SHerbert Xue <doc> 7621*dc5640d1SHerbert Xue <![CDATA[Returns any context params supplied when creating the binding.]]> 7622*dc5640d1SHerbert Xue </doc> 7623*dc5640d1SHerbert Xue </method> 7624*dc5640d1SHerbert Xue <method name="matchesUri" return="boolean" 7625*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7626*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7627*dc5640d1SHerbert Xue deprecated="not deprecated"> 7628*dc5640d1SHerbert Xue <param name="uri" type="java.lang.String"/> 7629*dc5640d1SHerbert Xue <doc> 7630*dc5640d1SHerbert Xue <![CDATA[Returns true if the given URI will match this binding.]]> 7631*dc5640d1SHerbert Xue </doc> 7632*dc5640d1SHerbert Xue </method> 7633*dc5640d1SHerbert Xue <doc> 7634*dc5640d1SHerbert Xue <![CDATA[A binding created by {@link ServletModule}. 7635*dc5640d1SHerbert Xue 7636*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 7637*dc5640d1SHerbert Xue @since 3.0]]> 7638*dc5640d1SHerbert Xue </doc> 7639*dc5640d1SHerbert Xue </interface> 7640*dc5640d1SHerbert Xue <!-- end interface com.google.inject.servlet.ServletModuleBinding --> 7641*dc5640d1SHerbert Xue <!-- start interface com.google.inject.servlet.ServletModuleTargetVisitor --> 7642*dc5640d1SHerbert Xue <interface name="ServletModuleTargetVisitor" abstract="true" 7643*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7644*dc5640d1SHerbert Xue deprecated="not deprecated"> 7645*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 7646*dc5640d1SHerbert Xue <method name="visit" return="V" 7647*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7648*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7649*dc5640d1SHerbert Xue deprecated="not deprecated"> 7650*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.servlet.LinkedFilterBinding"/> 7651*dc5640d1SHerbert Xue <doc> 7652*dc5640d1SHerbert Xue <![CDATA[Visits a filter binding created by {@link ServletModule#filter}, where 7653*dc5640d1SHerbert Xue {@link FilterKeyBindingBuilder#through} is called with a Class or Key. 7654*dc5640d1SHerbert Xue 7655*dc5640d1SHerbert Xue If multiple patterns were specified, this will be called multiple times.]]> 7656*dc5640d1SHerbert Xue </doc> 7657*dc5640d1SHerbert Xue </method> 7658*dc5640d1SHerbert Xue <method name="visit" return="V" 7659*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7660*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7661*dc5640d1SHerbert Xue deprecated="not deprecated"> 7662*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.servlet.InstanceFilterBinding"/> 7663*dc5640d1SHerbert Xue <doc> 7664*dc5640d1SHerbert Xue <![CDATA[Visits a filter binding created by {@link ServletModule#filter} where 7665*dc5640d1SHerbert Xue {@link FilterKeyBindingBuilder#through} is called with a {@link Filter}. 7666*dc5640d1SHerbert Xue 7667*dc5640d1SHerbert Xue If multiple patterns were specified, this will be called multiple times.]]> 7668*dc5640d1SHerbert Xue </doc> 7669*dc5640d1SHerbert Xue </method> 7670*dc5640d1SHerbert Xue <method name="visit" return="V" 7671*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7672*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7673*dc5640d1SHerbert Xue deprecated="not deprecated"> 7674*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.servlet.LinkedServletBinding"/> 7675*dc5640d1SHerbert Xue <doc> 7676*dc5640d1SHerbert Xue <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where 7677*dc5640d1SHerbert Xue {@link ServletKeyBindingBuilder#with}, is called with a Class or Key. 7678*dc5640d1SHerbert Xue 7679*dc5640d1SHerbert Xue If multiple patterns were specified, this will be called multiple times.]]> 7680*dc5640d1SHerbert Xue </doc> 7681*dc5640d1SHerbert Xue </method> 7682*dc5640d1SHerbert Xue <method name="visit" return="V" 7683*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7684*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7685*dc5640d1SHerbert Xue deprecated="not deprecated"> 7686*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.servlet.InstanceServletBinding"/> 7687*dc5640d1SHerbert Xue <doc> 7688*dc5640d1SHerbert Xue <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where 7689*dc5640d1SHerbert Xue {@link ServletKeyBindingBuilder#with}, is called with an {@link HttpServlet}. 7690*dc5640d1SHerbert Xue 7691*dc5640d1SHerbert Xue If multiple patterns were specified, this will be called multiple times.]]> 7692*dc5640d1SHerbert Xue </doc> 7693*dc5640d1SHerbert Xue </method> 7694*dc5640d1SHerbert Xue <doc> 7695*dc5640d1SHerbert Xue <![CDATA[A visitor for the servlet extension. 7696*dc5640d1SHerbert Xue 7697*dc5640d1SHerbert Xue If your {@link BindingTargetVisitor} implements this interface, bindings created by using 7698*dc5640d1SHerbert Xue {@link ServletModule} will be visited through this interface. 7699*dc5640d1SHerbert Xue 7700*dc5640d1SHerbert Xue @since 3.0 7701*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin)]]> 7702*dc5640d1SHerbert Xue </doc> 7703*dc5640d1SHerbert Xue </interface> 7704*dc5640d1SHerbert Xue <!-- end interface com.google.inject.servlet.ServletModuleTargetVisitor --> 7705*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.ServletScopes --> 7706*dc5640d1SHerbert Xue <class name="ServletScopes" extends="java.lang.Object" 7707*dc5640d1SHerbert Xue abstract="false" 7708*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7709*dc5640d1SHerbert Xue deprecated="not deprecated"> 7710*dc5640d1SHerbert Xue <method name="continueRequest" return="java.util.concurrent.Callable<T>" 7711*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7712*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 7713*dc5640d1SHerbert Xue deprecated="not deprecated"> 7714*dc5640d1SHerbert Xue <param name="callable" type="java.util.concurrent.Callable<T>"/> 7715*dc5640d1SHerbert Xue <param name="seedMap" type="java.util.Map<com.google.inject.Key<?>, java.lang.Object>"/> 7716*dc5640d1SHerbert Xue <doc> 7717*dc5640d1SHerbert Xue <![CDATA[Wraps the given callable in a contextual callable that "continues" the 7718*dc5640d1SHerbert Xue HTTP request in another thread. This acts as a way of transporting 7719*dc5640d1SHerbert Xue request context data from the request processing thread to to worker 7720*dc5640d1SHerbert Xue threads. 7721*dc5640d1SHerbert Xue <p> 7722*dc5640d1SHerbert Xue There are some limitations: 7723*dc5640d1SHerbert Xue <ul> 7724*dc5640d1SHerbert Xue <li>Derived objects (i.e. anything marked @RequestScoped will not be 7725*dc5640d1SHerbert Xue transported.</li> 7726*dc5640d1SHerbert Xue <li>State changes to the HttpServletRequest after this method is called 7727*dc5640d1SHerbert Xue will not be seen in the continued thread.</li> 7728*dc5640d1SHerbert Xue <li>Only the HttpServletRequest, ServletContext and request parameter 7729*dc5640d1SHerbert Xue map are available in the continued thread. The response and session 7730*dc5640d1SHerbert Xue are not available.</li> 7731*dc5640d1SHerbert Xue </ul> 7732*dc5640d1SHerbert Xue 7733*dc5640d1SHerbert Xue <p>The returned callable will throw a {@link ScopingException} when called 7734*dc5640d1SHerbert Xue if the HTTP request scope is still active on the current thread. 7735*dc5640d1SHerbert Xue 7736*dc5640d1SHerbert Xue @param callable code to be executed in another thread, which depends on 7737*dc5640d1SHerbert Xue the request scope. 7738*dc5640d1SHerbert Xue @param seedMap the initial set of scoped instances for Guice to seed the 7739*dc5640d1SHerbert Xue request scope with. To seed a key with null, use {@code null} as 7740*dc5640d1SHerbert Xue the value. 7741*dc5640d1SHerbert Xue @return a callable that will invoke the given callable, making the request 7742*dc5640d1SHerbert Xue context available to it. 7743*dc5640d1SHerbert Xue @throws OutOfScopeException if this method is called from a non-request 7744*dc5640d1SHerbert Xue thread, or if the request has completed. 7745*dc5640d1SHerbert Xue 7746*dc5640d1SHerbert Xue @since 3.0]]> 7747*dc5640d1SHerbert Xue </doc> 7748*dc5640d1SHerbert Xue </method> 7749*dc5640d1SHerbert Xue <method name="transferRequest" return="java.util.concurrent.Callable<T>" 7750*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7751*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 7752*dc5640d1SHerbert Xue deprecated="not deprecated"> 7753*dc5640d1SHerbert Xue <param name="callable" type="java.util.concurrent.Callable<T>"/> 7754*dc5640d1SHerbert Xue <doc> 7755*dc5640d1SHerbert Xue <![CDATA[Wraps the given callable in a contextual callable that "transfers" the 7756*dc5640d1SHerbert Xue request to another thread. This acts as a way of transporting 7757*dc5640d1SHerbert Xue request context data from the current thread to a future thread. 7758*dc5640d1SHerbert Xue 7759*dc5640d1SHerbert Xue <p>As opposed to {@link #continueRequest}, this method propagates all 7760*dc5640d1SHerbert Xue existing scoped objects. The primary use case is in server implementations 7761*dc5640d1SHerbert Xue where you can detach the request processing thread while waiting for data, 7762*dc5640d1SHerbert Xue and reattach to a different thread to finish processing at a later time. 7763*dc5640d1SHerbert Xue 7764*dc5640d1SHerbert Xue <p>Because request-scoped objects are not typically thread-safe, the 7765*dc5640d1SHerbert Xue callable returned by this method must not be run on a different thread 7766*dc5640d1SHerbert Xue until the current request scope has terminated. The returned callable will 7767*dc5640d1SHerbert Xue block until the current thread has released the request scope. 7768*dc5640d1SHerbert Xue 7769*dc5640d1SHerbert Xue @param callable code to be executed in another thread, which depends on 7770*dc5640d1SHerbert Xue the request scope. 7771*dc5640d1SHerbert Xue @return a callable that will invoke the given callable, making the request 7772*dc5640d1SHerbert Xue context available to it. 7773*dc5640d1SHerbert Xue @throws OutOfScopeException if this method is called from a non-request 7774*dc5640d1SHerbert Xue thread, or if the request has completed. 7775*dc5640d1SHerbert Xue @since 4.0]]> 7776*dc5640d1SHerbert Xue </doc> 7777*dc5640d1SHerbert Xue </method> 7778*dc5640d1SHerbert Xue <method name="isRequestScoped" return="boolean" 7779*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7780*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 7781*dc5640d1SHerbert Xue deprecated="not deprecated"> 7782*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.Binding<?>"/> 7783*dc5640d1SHerbert Xue <doc> 7784*dc5640d1SHerbert Xue <![CDATA[Returns true if {@code binding} is request-scoped. If the binding is a 7785*dc5640d1SHerbert Xue {@link com.google.inject.spi.LinkedKeyBinding linked key binding} and 7786*dc5640d1SHerbert Xue belongs to an injector (i. e. it was retrieved via 7787*dc5640d1SHerbert Xue {@link Injector#getBinding Injector.getBinding()}), then this method will 7788*dc5640d1SHerbert Xue also return true if the target binding is request-scoped. 7789*dc5640d1SHerbert Xue 7790*dc5640d1SHerbert Xue @since 4.0]]> 7791*dc5640d1SHerbert Xue </doc> 7792*dc5640d1SHerbert Xue </method> 7793*dc5640d1SHerbert Xue <method name="scopeRequest" return="java.util.concurrent.Callable<T>" 7794*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7795*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 7796*dc5640d1SHerbert Xue deprecated="not deprecated"> 7797*dc5640d1SHerbert Xue <param name="callable" type="java.util.concurrent.Callable<T>"/> 7798*dc5640d1SHerbert Xue <param name="seedMap" type="java.util.Map<com.google.inject.Key<?>, java.lang.Object>"/> 7799*dc5640d1SHerbert Xue <doc> 7800*dc5640d1SHerbert Xue <![CDATA[Scopes the given callable inside a request scope. This is not the same 7801*dc5640d1SHerbert Xue as the HTTP request scope, but is used if no HTTP request scope is in 7802*dc5640d1SHerbert Xue progress. In this way, keys can be scoped as @RequestScoped and exist 7803*dc5640d1SHerbert Xue in non-HTTP requests (for example: RPC requests) as well as in HTTP 7804*dc5640d1SHerbert Xue request threads. 7805*dc5640d1SHerbert Xue 7806*dc5640d1SHerbert Xue <p>The returned callable will throw a {@link ScopingException} when called 7807*dc5640d1SHerbert Xue if there is a request scope already active on the current thread. 7808*dc5640d1SHerbert Xue 7809*dc5640d1SHerbert Xue @param callable code to be executed which depends on the request scope. 7810*dc5640d1SHerbert Xue Typically in another thread, but not necessarily so. 7811*dc5640d1SHerbert Xue @param seedMap the initial set of scoped instances for Guice to seed the 7812*dc5640d1SHerbert Xue request scope with. To seed a key with null, use {@code null} as 7813*dc5640d1SHerbert Xue the value. 7814*dc5640d1SHerbert Xue @return a callable that when called will run inside the a request scope 7815*dc5640d1SHerbert Xue that exposes the instances in the {@code seedMap} as scoped keys. 7816*dc5640d1SHerbert Xue @since 3.0]]> 7817*dc5640d1SHerbert Xue </doc> 7818*dc5640d1SHerbert Xue </method> 7819*dc5640d1SHerbert Xue <field name="REQUEST" type="com.google.inject.Scope" 7820*dc5640d1SHerbert Xue transient="false" volatile="false" 7821*dc5640d1SHerbert Xue static="true" final="true" visibility="public" 7822*dc5640d1SHerbert Xue deprecated="not deprecated"> 7823*dc5640d1SHerbert Xue <doc> 7824*dc5640d1SHerbert Xue <![CDATA[HTTP servlet request scope.]]> 7825*dc5640d1SHerbert Xue </doc> 7826*dc5640d1SHerbert Xue </field> 7827*dc5640d1SHerbert Xue <field name="SESSION" type="com.google.inject.Scope" 7828*dc5640d1SHerbert Xue transient="false" volatile="false" 7829*dc5640d1SHerbert Xue static="true" final="true" visibility="public" 7830*dc5640d1SHerbert Xue deprecated="not deprecated"> 7831*dc5640d1SHerbert Xue <doc> 7832*dc5640d1SHerbert Xue <![CDATA[HTTP session scope.]]> 7833*dc5640d1SHerbert Xue </doc> 7834*dc5640d1SHerbert Xue </field> 7835*dc5640d1SHerbert Xue <doc> 7836*dc5640d1SHerbert Xue <![CDATA[Servlet scopes. 7837*dc5640d1SHerbert Xue 7838*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 7839*dc5640d1SHerbert Xue </doc> 7840*dc5640d1SHerbert Xue </class> 7841*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.ServletScopes --> 7842*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.SessionScoped --> 7843*dc5640d1SHerbert Xue <class name="SessionScoped" abstract="true" 7844*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7845*dc5640d1SHerbert Xue deprecated="not deprecated"> 7846*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 7847*dc5640d1SHerbert Xue <doc> 7848*dc5640d1SHerbert Xue <![CDATA[Apply this to implementation classes when you want one instance per session. 7849*dc5640d1SHerbert Xue 7850*dc5640d1SHerbert Xue @see com.google.inject.Scopes#SINGLETON 7851*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 7852*dc5640d1SHerbert Xue </doc> 7853*dc5640d1SHerbert Xue </class> 7854*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.SessionScoped --> 7855*dc5640d1SHerbert Xue <!-- start class com.google.inject.servlet.UriPatternType --> 7856*dc5640d1SHerbert Xue <class name="UriPatternType" extends="java.lang.Enum<com.google.inject.servlet.UriPatternType>" 7857*dc5640d1SHerbert Xue abstract="false" 7858*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 7859*dc5640d1SHerbert Xue deprecated="not deprecated"> 7860*dc5640d1SHerbert Xue <method name="values" return="com.google.inject.servlet.UriPatternType[]" 7861*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7862*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 7863*dc5640d1SHerbert Xue deprecated="not deprecated"> 7864*dc5640d1SHerbert Xue </method> 7865*dc5640d1SHerbert Xue <method name="valueOf" return="com.google.inject.servlet.UriPatternType" 7866*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 7867*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 7868*dc5640d1SHerbert Xue deprecated="not deprecated"> 7869*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 7870*dc5640d1SHerbert Xue </method> 7871*dc5640d1SHerbert Xue <doc> 7872*dc5640d1SHerbert Xue <![CDATA[An enumeration of the available URI-pattern matching styles 7873*dc5640d1SHerbert Xue 7874*dc5640d1SHerbert Xue @since 3.0]]> 7875*dc5640d1SHerbert Xue </doc> 7876*dc5640d1SHerbert Xue </class> 7877*dc5640d1SHerbert Xue <!-- end class com.google.inject.servlet.UriPatternType --> 7878*dc5640d1SHerbert Xue</package> 7879*dc5640d1SHerbert Xue<package name="com.google.inject.spi"> 7880*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.BindingScopingVisitor --> 7881*dc5640d1SHerbert Xue <interface name="BindingScopingVisitor" abstract="true" 7882*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7883*dc5640d1SHerbert Xue deprecated="not deprecated"> 7884*dc5640d1SHerbert Xue <method name="visitEagerSingleton" return="V" 7885*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7886*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7887*dc5640d1SHerbert Xue deprecated="not deprecated"> 7888*dc5640d1SHerbert Xue <doc> 7889*dc5640d1SHerbert Xue <![CDATA[Visit an eager singleton or single instance. This scope strategy is found on both module and 7890*dc5640d1SHerbert Xue injector bindings.]]> 7891*dc5640d1SHerbert Xue </doc> 7892*dc5640d1SHerbert Xue </method> 7893*dc5640d1SHerbert Xue <method name="visitScope" return="V" 7894*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7895*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7896*dc5640d1SHerbert Xue deprecated="not deprecated"> 7897*dc5640d1SHerbert Xue <param name="scope" type="com.google.inject.Scope"/> 7898*dc5640d1SHerbert Xue <doc> 7899*dc5640d1SHerbert Xue <![CDATA[Visit a scope instance. This scope strategy is found on both module and injector bindings.]]> 7900*dc5640d1SHerbert Xue </doc> 7901*dc5640d1SHerbert Xue </method> 7902*dc5640d1SHerbert Xue <method name="visitScopeAnnotation" return="V" 7903*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7904*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7905*dc5640d1SHerbert Xue deprecated="not deprecated"> 7906*dc5640d1SHerbert Xue <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 7907*dc5640d1SHerbert Xue <doc> 7908*dc5640d1SHerbert Xue <![CDATA[Visit a scope annotation. This scope strategy is found only on module bindings. The instance 7909*dc5640d1SHerbert Xue that implements this scope is registered by {@link com.google.inject.Binder#bindScope(Class, 7910*dc5640d1SHerbert Xue Scope) Binder.bindScope()}.]]> 7911*dc5640d1SHerbert Xue </doc> 7912*dc5640d1SHerbert Xue </method> 7913*dc5640d1SHerbert Xue <method name="visitNoScoping" return="V" 7914*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7915*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7916*dc5640d1SHerbert Xue deprecated="not deprecated"> 7917*dc5640d1SHerbert Xue <doc> 7918*dc5640d1SHerbert Xue <![CDATA[Visit an unspecified or unscoped strategy. On a module, this strategy indicates that the 7919*dc5640d1SHerbert Xue injector should use scoping annotations to find a scope. On an injector, it indicates that 7920*dc5640d1SHerbert Xue no scope is applied to the binding. An unscoped binding will behave like a scoped one when it 7921*dc5640d1SHerbert Xue is linked to a scoped binding.]]> 7922*dc5640d1SHerbert Xue </doc> 7923*dc5640d1SHerbert Xue </method> 7924*dc5640d1SHerbert Xue <doc> 7925*dc5640d1SHerbert Xue <![CDATA[Visits each of the strategies used to scope an injection. 7926*dc5640d1SHerbert Xue 7927*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with 7928*dc5640d1SHerbert Xue {@code return null} if no return type is needed. 7929*dc5640d1SHerbert Xue @since 2.0]]> 7930*dc5640d1SHerbert Xue </doc> 7931*dc5640d1SHerbert Xue </interface> 7932*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.BindingScopingVisitor --> 7933*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.BindingTargetVisitor --> 7934*dc5640d1SHerbert Xue <interface name="BindingTargetVisitor" abstract="true" 7935*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7936*dc5640d1SHerbert Xue deprecated="not deprecated"> 7937*dc5640d1SHerbert Xue <method name="visit" return="V" 7938*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7939*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7940*dc5640d1SHerbert Xue deprecated="not deprecated"> 7941*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.InstanceBinding<? extends T>"/> 7942*dc5640d1SHerbert Xue <doc> 7943*dc5640d1SHerbert Xue <![CDATA[Visit a instance binding. The same instance is returned for every injection. This target is 7944*dc5640d1SHerbert Xue found in both module and injector bindings.]]> 7945*dc5640d1SHerbert Xue </doc> 7946*dc5640d1SHerbert Xue </method> 7947*dc5640d1SHerbert Xue <method name="visit" return="V" 7948*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7949*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7950*dc5640d1SHerbert Xue deprecated="not deprecated"> 7951*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding<? extends T>"/> 7952*dc5640d1SHerbert Xue <doc> 7953*dc5640d1SHerbert Xue <![CDATA[Visit a provider instance binding. The provider's {@code get} method is invoked to resolve 7954*dc5640d1SHerbert Xue injections. This target is found in both module and injector bindings.]]> 7955*dc5640d1SHerbert Xue </doc> 7956*dc5640d1SHerbert Xue </method> 7957*dc5640d1SHerbert Xue <method name="visit" return="V" 7958*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7959*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7960*dc5640d1SHerbert Xue deprecated="not deprecated"> 7961*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProviderKeyBinding<? extends T>"/> 7962*dc5640d1SHerbert Xue <doc> 7963*dc5640d1SHerbert Xue <![CDATA[Visit a provider key binding. To resolve injections, the provider key is first resolved, then 7964*dc5640d1SHerbert Xue that provider's {@code get} method is invoked. This target is found in both module and injector 7965*dc5640d1SHerbert Xue bindings.]]> 7966*dc5640d1SHerbert Xue </doc> 7967*dc5640d1SHerbert Xue </method> 7968*dc5640d1SHerbert Xue <method name="visit" return="V" 7969*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7970*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7971*dc5640d1SHerbert Xue deprecated="not deprecated"> 7972*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.LinkedKeyBinding<? extends T>"/> 7973*dc5640d1SHerbert Xue <doc> 7974*dc5640d1SHerbert Xue <![CDATA[Visit a linked key binding. The other key's binding is used to resolve injections. This 7975*dc5640d1SHerbert Xue target is found in both module and injector bindings.]]> 7976*dc5640d1SHerbert Xue </doc> 7977*dc5640d1SHerbert Xue </method> 7978*dc5640d1SHerbert Xue <method name="visit" return="V" 7979*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7980*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7981*dc5640d1SHerbert Xue deprecated="not deprecated"> 7982*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ExposedBinding<? extends T>"/> 7983*dc5640d1SHerbert Xue <doc> 7984*dc5640d1SHerbert Xue <![CDATA[Visit a binding to a key exposed from an enclosed private environment. This target is only 7985*dc5640d1SHerbert Xue found in injector bindings.]]> 7986*dc5640d1SHerbert Xue </doc> 7987*dc5640d1SHerbert Xue </method> 7988*dc5640d1SHerbert Xue <method name="visit" return="V" 7989*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 7990*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 7991*dc5640d1SHerbert Xue deprecated="not deprecated"> 7992*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.UntargettedBinding<? extends T>"/> 7993*dc5640d1SHerbert Xue <doc> 7994*dc5640d1SHerbert Xue <![CDATA[Visit an untargetted binding. This target is found only on module bindings. It indicates 7995*dc5640d1SHerbert Xue that the injector should use its implicit binding strategies to resolve injections.]]> 7996*dc5640d1SHerbert Xue </doc> 7997*dc5640d1SHerbert Xue </method> 7998*dc5640d1SHerbert Xue <method name="visit" return="V" 7999*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8000*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8001*dc5640d1SHerbert Xue deprecated="not deprecated"> 8002*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ConstructorBinding<? extends T>"/> 8003*dc5640d1SHerbert Xue <doc> 8004*dc5640d1SHerbert Xue <![CDATA[Visit a constructor binding. To resolve injections, an instance is instantiated by invoking 8005*dc5640d1SHerbert Xue {@code constructor}. This target is found only on injector bindings.]]> 8006*dc5640d1SHerbert Xue </doc> 8007*dc5640d1SHerbert Xue </method> 8008*dc5640d1SHerbert Xue <method name="visit" return="V" 8009*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8010*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8011*dc5640d1SHerbert Xue deprecated="not deprecated"> 8012*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding<? extends T>"/> 8013*dc5640d1SHerbert Xue <doc> 8014*dc5640d1SHerbert Xue <![CDATA[Visit a binding created from converting a bound instance to a new type. The source binding 8015*dc5640d1SHerbert Xue has the same binding annotation but a different type. This target is found only on injector 8016*dc5640d1SHerbert Xue bindings.]]> 8017*dc5640d1SHerbert Xue </doc> 8018*dc5640d1SHerbert Xue </method> 8019*dc5640d1SHerbert Xue <method name="visit" return="V" 8020*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8021*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8022*dc5640d1SHerbert Xue deprecated="not deprecated"> 8023*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProviderBinding<? extends T>"/> 8024*dc5640d1SHerbert Xue <doc> 8025*dc5640d1SHerbert Xue <![CDATA[Visit a binding to a {@link com.google.inject.Provider} that delegates to the binding for the 8026*dc5640d1SHerbert Xue provided type. This target is found only on injector bindings.]]> 8027*dc5640d1SHerbert Xue </doc> 8028*dc5640d1SHerbert Xue </method> 8029*dc5640d1SHerbert Xue <doc> 8030*dc5640d1SHerbert Xue <![CDATA[Visits each of the strategies used to find an instance to satisfy an injection. 8031*dc5640d1SHerbert Xue 8032*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with 8033*dc5640d1SHerbert Xue {@code return null} if no return type is needed. 8034*dc5640d1SHerbert Xue @since 2.0]]> 8035*dc5640d1SHerbert Xue </doc> 8036*dc5640d1SHerbert Xue </interface> 8037*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.BindingTargetVisitor --> 8038*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ConstructorBinding --> 8039*dc5640d1SHerbert Xue <interface name="ConstructorBinding" abstract="true" 8040*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8041*dc5640d1SHerbert Xue deprecated="not deprecated"> 8042*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 8043*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 8044*dc5640d1SHerbert Xue <method name="getConstructor" return="com.google.inject.spi.InjectionPoint" 8045*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8046*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8047*dc5640d1SHerbert Xue deprecated="not deprecated"> 8048*dc5640d1SHerbert Xue <doc> 8049*dc5640d1SHerbert Xue <![CDATA[Gets the constructor this binding injects.]]> 8050*dc5640d1SHerbert Xue </doc> 8051*dc5640d1SHerbert Xue </method> 8052*dc5640d1SHerbert Xue <method name="getInjectableMembers" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 8053*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8054*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8055*dc5640d1SHerbert Xue deprecated="not deprecated"> 8056*dc5640d1SHerbert Xue <doc> 8057*dc5640d1SHerbert Xue <![CDATA[Returns all instance method and field injection points on {@code type}. 8058*dc5640d1SHerbert Xue 8059*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All 8060*dc5640d1SHerbert Xue fields are returned and then all methods. Within the fields, supertype fields are returned 8061*dc5640d1SHerbert Xue before subtype fields. Similarly, supertype methods are returned before subtype methods.]]> 8062*dc5640d1SHerbert Xue </doc> 8063*dc5640d1SHerbert Xue </method> 8064*dc5640d1SHerbert Xue <method name="getMethodInterceptors" return="java.util.Map<java.lang.reflect.Method, java.util.List<org.aopalliance.intercept.MethodInterceptor>>" 8065*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8066*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8067*dc5640d1SHerbert Xue deprecated="not deprecated"> 8068*dc5640d1SHerbert Xue <doc> 8069*dc5640d1SHerbert Xue <![CDATA[Returns the interceptors applied to each method, in the order that they will be applied. 8070*dc5640d1SHerbert Xue 8071*dc5640d1SHerbert Xue @return a possibly empty map]]> 8072*dc5640d1SHerbert Xue </doc> 8073*dc5640d1SHerbert Xue </method> 8074*dc5640d1SHerbert Xue <doc> 8075*dc5640d1SHerbert Xue <![CDATA[A binding to the constructor of a concrete clss. To resolve injections, an instance is 8076*dc5640d1SHerbert Xue instantiated by invoking the constructor. 8077*dc5640d1SHerbert Xue 8078*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 8079*dc5640d1SHerbert Xue @since 2.0]]> 8080*dc5640d1SHerbert Xue </doc> 8081*dc5640d1SHerbert Xue </interface> 8082*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ConstructorBinding --> 8083*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ConvertedConstantBinding --> 8084*dc5640d1SHerbert Xue <interface name="ConvertedConstantBinding" abstract="true" 8085*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8086*dc5640d1SHerbert Xue deprecated="not deprecated"> 8087*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 8088*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 8089*dc5640d1SHerbert Xue <method name="getValue" return="T" 8090*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8091*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8092*dc5640d1SHerbert Xue deprecated="not deprecated"> 8093*dc5640d1SHerbert Xue <doc> 8094*dc5640d1SHerbert Xue <![CDATA[Returns the converted value.]]> 8095*dc5640d1SHerbert Xue </doc> 8096*dc5640d1SHerbert Xue </method> 8097*dc5640d1SHerbert Xue <method name="getTypeConverterBinding" return="com.google.inject.spi.TypeConverterBinding" 8098*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8099*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8100*dc5640d1SHerbert Xue deprecated="not deprecated"> 8101*dc5640d1SHerbert Xue <doc> 8102*dc5640d1SHerbert Xue <![CDATA[Returns the type converter binding used to convert the constant. 8103*dc5640d1SHerbert Xue 8104*dc5640d1SHerbert Xue @since 3.0]]> 8105*dc5640d1SHerbert Xue </doc> 8106*dc5640d1SHerbert Xue </method> 8107*dc5640d1SHerbert Xue <method name="getSourceKey" return="com.google.inject.Key<java.lang.String>" 8108*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8109*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8110*dc5640d1SHerbert Xue deprecated="not deprecated"> 8111*dc5640d1SHerbert Xue <doc> 8112*dc5640d1SHerbert Xue <![CDATA[Returns the key for the source binding. That binding can be retrieved from an injector using 8113*dc5640d1SHerbert Xue {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]> 8114*dc5640d1SHerbert Xue </doc> 8115*dc5640d1SHerbert Xue </method> 8116*dc5640d1SHerbert Xue <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 8117*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8118*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8119*dc5640d1SHerbert Xue deprecated="not deprecated"> 8120*dc5640d1SHerbert Xue <doc> 8121*dc5640d1SHerbert Xue <![CDATA[Returns a singleton set containing only the converted key.]]> 8122*dc5640d1SHerbert Xue </doc> 8123*dc5640d1SHerbert Xue </method> 8124*dc5640d1SHerbert Xue <doc> 8125*dc5640d1SHerbert Xue <![CDATA[A binding created from converting a bound instance to a new type. The source binding has the same 8126*dc5640d1SHerbert Xue binding annotation but a different type. 8127*dc5640d1SHerbert Xue 8128*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 8129*dc5640d1SHerbert Xue @since 2.0]]> 8130*dc5640d1SHerbert Xue </doc> 8131*dc5640d1SHerbert Xue </interface> 8132*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ConvertedConstantBinding --> 8133*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.DefaultBindingScopingVisitor --> 8134*dc5640d1SHerbert Xue <class name="DefaultBindingScopingVisitor" extends="java.lang.Object" 8135*dc5640d1SHerbert Xue abstract="false" 8136*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8137*dc5640d1SHerbert Xue deprecated="not deprecated"> 8138*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.BindingScopingVisitor<V>"/> 8139*dc5640d1SHerbert Xue <constructor name="DefaultBindingScopingVisitor" 8140*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8141*dc5640d1SHerbert Xue deprecated="not deprecated"> 8142*dc5640d1SHerbert Xue </constructor> 8143*dc5640d1SHerbert Xue <method name="visitOther" return="V" 8144*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8145*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 8146*dc5640d1SHerbert Xue deprecated="not deprecated"> 8147*dc5640d1SHerbert Xue <doc> 8148*dc5640d1SHerbert Xue <![CDATA[Default visit implementation. Returns {@code null}.]]> 8149*dc5640d1SHerbert Xue </doc> 8150*dc5640d1SHerbert Xue </method> 8151*dc5640d1SHerbert Xue <method name="visitEagerSingleton" return="V" 8152*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8153*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8154*dc5640d1SHerbert Xue deprecated="not deprecated"> 8155*dc5640d1SHerbert Xue </method> 8156*dc5640d1SHerbert Xue <method name="visitScope" return="V" 8157*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8158*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8159*dc5640d1SHerbert Xue deprecated="not deprecated"> 8160*dc5640d1SHerbert Xue <param name="scope" type="com.google.inject.Scope"/> 8161*dc5640d1SHerbert Xue </method> 8162*dc5640d1SHerbert Xue <method name="visitScopeAnnotation" return="V" 8163*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8164*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8165*dc5640d1SHerbert Xue deprecated="not deprecated"> 8166*dc5640d1SHerbert Xue <param name="scopeAnnotation" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 8167*dc5640d1SHerbert Xue </method> 8168*dc5640d1SHerbert Xue <method name="visitNoScoping" return="V" 8169*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8170*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8171*dc5640d1SHerbert Xue deprecated="not deprecated"> 8172*dc5640d1SHerbert Xue </method> 8173*dc5640d1SHerbert Xue <doc> 8174*dc5640d1SHerbert Xue <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to 8175*dc5640d1SHerbert Xue {@link #visitOther()}, returning its result. 8176*dc5640d1SHerbert Xue 8177*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with 8178*dc5640d1SHerbert Xue {@code return null} if no return type is needed. 8179*dc5640d1SHerbert Xue 8180*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 8181*dc5640d1SHerbert Xue @since 2.0]]> 8182*dc5640d1SHerbert Xue </doc> 8183*dc5640d1SHerbert Xue </class> 8184*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.DefaultBindingScopingVisitor --> 8185*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.DefaultBindingTargetVisitor --> 8186*dc5640d1SHerbert Xue <class name="DefaultBindingTargetVisitor" extends="java.lang.Object" 8187*dc5640d1SHerbert Xue abstract="true" 8188*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8189*dc5640d1SHerbert Xue deprecated="not deprecated"> 8190*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 8191*dc5640d1SHerbert Xue <constructor name="DefaultBindingTargetVisitor" 8192*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8193*dc5640d1SHerbert Xue deprecated="not deprecated"> 8194*dc5640d1SHerbert Xue </constructor> 8195*dc5640d1SHerbert Xue <method name="visitOther" return="V" 8196*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8197*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 8198*dc5640d1SHerbert Xue deprecated="not deprecated"> 8199*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.Binding<? extends T>"/> 8200*dc5640d1SHerbert Xue <doc> 8201*dc5640d1SHerbert Xue <![CDATA[Default visit implementation. Returns {@code null}.]]> 8202*dc5640d1SHerbert Xue </doc> 8203*dc5640d1SHerbert Xue </method> 8204*dc5640d1SHerbert Xue <method name="visit" return="V" 8205*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8206*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8207*dc5640d1SHerbert Xue deprecated="not deprecated"> 8208*dc5640d1SHerbert Xue <param name="instanceBinding" type="com.google.inject.spi.InstanceBinding<? extends T>"/> 8209*dc5640d1SHerbert Xue </method> 8210*dc5640d1SHerbert Xue <method name="visit" return="V" 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 <param name="providerInstanceBinding" type="com.google.inject.spi.ProviderInstanceBinding<? extends T>"/> 8215*dc5640d1SHerbert Xue </method> 8216*dc5640d1SHerbert Xue <method name="visit" return="V" 8217*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8218*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8219*dc5640d1SHerbert Xue deprecated="not deprecated"> 8220*dc5640d1SHerbert Xue <param name="providerKeyBinding" type="com.google.inject.spi.ProviderKeyBinding<? extends T>"/> 8221*dc5640d1SHerbert Xue </method> 8222*dc5640d1SHerbert Xue <method name="visit" return="V" 8223*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8224*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8225*dc5640d1SHerbert Xue deprecated="not deprecated"> 8226*dc5640d1SHerbert Xue <param name="linkedKeyBinding" type="com.google.inject.spi.LinkedKeyBinding<? extends T>"/> 8227*dc5640d1SHerbert Xue </method> 8228*dc5640d1SHerbert Xue <method name="visit" return="V" 8229*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8230*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8231*dc5640d1SHerbert Xue deprecated="not deprecated"> 8232*dc5640d1SHerbert Xue <param name="exposedBinding" type="com.google.inject.spi.ExposedBinding<? extends T>"/> 8233*dc5640d1SHerbert Xue </method> 8234*dc5640d1SHerbert Xue <method name="visit" return="V" 8235*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8236*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8237*dc5640d1SHerbert Xue deprecated="not deprecated"> 8238*dc5640d1SHerbert Xue <param name="untargettedBinding" type="com.google.inject.spi.UntargettedBinding<? extends T>"/> 8239*dc5640d1SHerbert Xue </method> 8240*dc5640d1SHerbert Xue <method name="visit" return="V" 8241*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8242*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8243*dc5640d1SHerbert Xue deprecated="not deprecated"> 8244*dc5640d1SHerbert Xue <param name="constructorBinding" type="com.google.inject.spi.ConstructorBinding<? extends T>"/> 8245*dc5640d1SHerbert Xue </method> 8246*dc5640d1SHerbert Xue <method name="visit" return="V" 8247*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8248*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8249*dc5640d1SHerbert Xue deprecated="not deprecated"> 8250*dc5640d1SHerbert Xue <param name="convertedConstantBinding" type="com.google.inject.spi.ConvertedConstantBinding<? extends T>"/> 8251*dc5640d1SHerbert Xue </method> 8252*dc5640d1SHerbert Xue <method name="visit" return="V" 8253*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8254*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8255*dc5640d1SHerbert Xue deprecated="not deprecated"> 8256*dc5640d1SHerbert Xue <param name="providerBinding" type="com.google.inject.spi.ProviderBinding<? extends T>"/> 8257*dc5640d1SHerbert Xue </method> 8258*dc5640d1SHerbert Xue <doc> 8259*dc5640d1SHerbert Xue <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to {@link 8260*dc5640d1SHerbert Xue #visitOther(Binding)}, returning its result. 8261*dc5640d1SHerbert Xue 8262*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with 8263*dc5640d1SHerbert Xue {@code return null} if no return type is needed. 8264*dc5640d1SHerbert Xue 8265*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 8266*dc5640d1SHerbert Xue @since 2.0]]> 8267*dc5640d1SHerbert Xue </doc> 8268*dc5640d1SHerbert Xue </class> 8269*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.DefaultBindingTargetVisitor --> 8270*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.DefaultElementVisitor --> 8271*dc5640d1SHerbert Xue <class name="DefaultElementVisitor" extends="java.lang.Object" 8272*dc5640d1SHerbert Xue abstract="true" 8273*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8274*dc5640d1SHerbert Xue deprecated="not deprecated"> 8275*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.ElementVisitor<V>"/> 8276*dc5640d1SHerbert Xue <constructor name="DefaultElementVisitor" 8277*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8278*dc5640d1SHerbert Xue deprecated="not deprecated"> 8279*dc5640d1SHerbert Xue </constructor> 8280*dc5640d1SHerbert Xue <method name="visitOther" return="V" 8281*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8282*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 8283*dc5640d1SHerbert Xue deprecated="not deprecated"> 8284*dc5640d1SHerbert Xue <param name="element" type="com.google.inject.spi.Element"/> 8285*dc5640d1SHerbert Xue <doc> 8286*dc5640d1SHerbert Xue <![CDATA[Default visit implementation. Returns {@code null}.]]> 8287*dc5640d1SHerbert Xue </doc> 8288*dc5640d1SHerbert Xue </method> 8289*dc5640d1SHerbert Xue <method name="visit" return="V" 8290*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8291*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8292*dc5640d1SHerbert Xue deprecated="not deprecated"> 8293*dc5640d1SHerbert Xue <param name="message" type="com.google.inject.spi.Message"/> 8294*dc5640d1SHerbert Xue </method> 8295*dc5640d1SHerbert Xue <method name="visit" return="V" 8296*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8297*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8298*dc5640d1SHerbert Xue deprecated="not deprecated"> 8299*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.Binding<T>"/> 8300*dc5640d1SHerbert Xue </method> 8301*dc5640d1SHerbert Xue <method name="visit" return="V" 8302*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8303*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8304*dc5640d1SHerbert Xue deprecated="not deprecated"> 8305*dc5640d1SHerbert Xue <param name="interceptorBinding" type="com.google.inject.spi.InterceptorBinding"/> 8306*dc5640d1SHerbert Xue </method> 8307*dc5640d1SHerbert Xue <method name="visit" return="V" 8308*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8309*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8310*dc5640d1SHerbert Xue deprecated="not deprecated"> 8311*dc5640d1SHerbert Xue <param name="scopeBinding" type="com.google.inject.spi.ScopeBinding"/> 8312*dc5640d1SHerbert Xue </method> 8313*dc5640d1SHerbert Xue <method name="visit" return="V" 8314*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8315*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8316*dc5640d1SHerbert Xue deprecated="not deprecated"> 8317*dc5640d1SHerbert Xue <param name="typeConverterBinding" type="com.google.inject.spi.TypeConverterBinding"/> 8318*dc5640d1SHerbert Xue </method> 8319*dc5640d1SHerbert Xue <method name="visit" return="V" 8320*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8321*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8322*dc5640d1SHerbert Xue deprecated="not deprecated"> 8323*dc5640d1SHerbert Xue <param name="providerLookup" type="com.google.inject.spi.ProviderLookup<T>"/> 8324*dc5640d1SHerbert Xue </method> 8325*dc5640d1SHerbert Xue <method name="visit" return="V" 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 <param name="injectionRequest" type="com.google.inject.spi.InjectionRequest<?>"/> 8330*dc5640d1SHerbert Xue </method> 8331*dc5640d1SHerbert Xue <method name="visit" return="V" 8332*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8333*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8334*dc5640d1SHerbert Xue deprecated="not deprecated"> 8335*dc5640d1SHerbert Xue <param name="staticInjectionRequest" type="com.google.inject.spi.StaticInjectionRequest"/> 8336*dc5640d1SHerbert Xue </method> 8337*dc5640d1SHerbert Xue <method name="visit" return="V" 8338*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8339*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8340*dc5640d1SHerbert Xue deprecated="not deprecated"> 8341*dc5640d1SHerbert Xue <param name="privateElements" type="com.google.inject.spi.PrivateElements"/> 8342*dc5640d1SHerbert Xue </method> 8343*dc5640d1SHerbert Xue <method name="visit" return="V" 8344*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8345*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8346*dc5640d1SHerbert Xue deprecated="not deprecated"> 8347*dc5640d1SHerbert Xue <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup<T>"/> 8348*dc5640d1SHerbert Xue </method> 8349*dc5640d1SHerbert Xue <method name="visit" return="V" 8350*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8351*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8352*dc5640d1SHerbert Xue deprecated="not deprecated"> 8353*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/> 8354*dc5640d1SHerbert Xue </method> 8355*dc5640d1SHerbert Xue <method name="visit" return="V" 8356*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8357*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8358*dc5640d1SHerbert Xue deprecated="not deprecated"> 8359*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProvisionListenerBinding"/> 8360*dc5640d1SHerbert Xue </method> 8361*dc5640d1SHerbert Xue <method name="visit" return="V" 8362*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8363*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8364*dc5640d1SHerbert Xue deprecated="not deprecated"> 8365*dc5640d1SHerbert Xue <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/> 8366*dc5640d1SHerbert Xue </method> 8367*dc5640d1SHerbert Xue <method name="visit" return="V" 8368*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8369*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8370*dc5640d1SHerbert Xue deprecated="not deprecated"> 8371*dc5640d1SHerbert Xue <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/> 8372*dc5640d1SHerbert Xue </method> 8373*dc5640d1SHerbert Xue <method name="visit" return="V" 8374*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8375*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8376*dc5640d1SHerbert Xue deprecated="not deprecated"> 8377*dc5640d1SHerbert Xue <param name="option" type="com.google.inject.spi.RequireAtInjectOnConstructorsOption"/> 8378*dc5640d1SHerbert Xue </method> 8379*dc5640d1SHerbert Xue <method name="visit" return="V" 8380*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8381*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8382*dc5640d1SHerbert Xue deprecated="not deprecated"> 8383*dc5640d1SHerbert Xue <param name="option" type="com.google.inject.spi.RequireExactBindingAnnotationsOption"/> 8384*dc5640d1SHerbert Xue </method> 8385*dc5640d1SHerbert Xue <method name="visit" return="V" 8386*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8387*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8388*dc5640d1SHerbert Xue deprecated="not deprecated"> 8389*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ModuleAnnotatedMethodScannerBinding"/> 8390*dc5640d1SHerbert Xue </method> 8391*dc5640d1SHerbert Xue <doc> 8392*dc5640d1SHerbert Xue <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to 8393*dc5640d1SHerbert Xue {@link #visitOther(Element)}, returning its result. 8394*dc5640d1SHerbert Xue 8395*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with 8396*dc5640d1SHerbert Xue {@code return null} if no return type is needed. 8397*dc5640d1SHerbert Xue 8398*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 8399*dc5640d1SHerbert Xue @since 2.0]]> 8400*dc5640d1SHerbert Xue </doc> 8401*dc5640d1SHerbert Xue </class> 8402*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.DefaultElementVisitor --> 8403*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.Dependency --> 8404*dc5640d1SHerbert Xue <class name="Dependency" extends="java.lang.Object" 8405*dc5640d1SHerbert Xue abstract="false" 8406*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 8407*dc5640d1SHerbert Xue deprecated="not deprecated"> 8408*dc5640d1SHerbert Xue <method name="get" return="com.google.inject.spi.Dependency<T>" 8409*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8410*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 8411*dc5640d1SHerbert Xue deprecated="not deprecated"> 8412*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 8413*dc5640d1SHerbert Xue <doc> 8414*dc5640d1SHerbert Xue <![CDATA[Returns a new dependency that is not attached to an injection point. The returned dependency is 8415*dc5640d1SHerbert Xue nullable.]]> 8416*dc5640d1SHerbert Xue </doc> 8417*dc5640d1SHerbert Xue </method> 8418*dc5640d1SHerbert Xue <method name="forInjectionPoints" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 8419*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8420*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 8421*dc5640d1SHerbert Xue deprecated="not deprecated"> 8422*dc5640d1SHerbert Xue <param name="injectionPoints" type="java.util.Set<com.google.inject.spi.InjectionPoint>"/> 8423*dc5640d1SHerbert Xue <doc> 8424*dc5640d1SHerbert Xue <![CDATA[Returns the dependencies from the given injection points.]]> 8425*dc5640d1SHerbert Xue </doc> 8426*dc5640d1SHerbert Xue </method> 8427*dc5640d1SHerbert Xue <method name="getKey" return="com.google.inject.Key<T>" 8428*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8429*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8430*dc5640d1SHerbert Xue deprecated="not deprecated"> 8431*dc5640d1SHerbert Xue <doc> 8432*dc5640d1SHerbert Xue <![CDATA[Returns the key to the binding that satisfies this dependency.]]> 8433*dc5640d1SHerbert Xue </doc> 8434*dc5640d1SHerbert Xue </method> 8435*dc5640d1SHerbert Xue <method name="isNullable" return="boolean" 8436*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8437*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8438*dc5640d1SHerbert Xue deprecated="not deprecated"> 8439*dc5640d1SHerbert Xue <doc> 8440*dc5640d1SHerbert Xue <![CDATA[Returns true if null is a legal value for this dependency.]]> 8441*dc5640d1SHerbert Xue </doc> 8442*dc5640d1SHerbert Xue </method> 8443*dc5640d1SHerbert Xue <method name="getInjectionPoint" return="com.google.inject.spi.InjectionPoint" 8444*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8445*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8446*dc5640d1SHerbert Xue deprecated="not deprecated"> 8447*dc5640d1SHerbert Xue <doc> 8448*dc5640d1SHerbert Xue <![CDATA[Returns the injection point to which this dependency belongs, or null if this dependency isn't 8449*dc5640d1SHerbert Xue attached to a particular injection point.]]> 8450*dc5640d1SHerbert Xue </doc> 8451*dc5640d1SHerbert Xue </method> 8452*dc5640d1SHerbert Xue <method name="getParameterIndex" return="int" 8453*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8454*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8455*dc5640d1SHerbert Xue deprecated="not deprecated"> 8456*dc5640d1SHerbert Xue <doc> 8457*dc5640d1SHerbert Xue <![CDATA[Returns the index of this dependency in the injection point's parameter list, or {@code -1} if 8458*dc5640d1SHerbert Xue this dependency does not belong to a parameter list. Only method and constuctor dependencies 8459*dc5640d1SHerbert Xue are elements in a parameter list.]]> 8460*dc5640d1SHerbert Xue </doc> 8461*dc5640d1SHerbert Xue </method> 8462*dc5640d1SHerbert Xue <method name="hashCode" return="int" 8463*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8464*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8465*dc5640d1SHerbert Xue deprecated="not deprecated"> 8466*dc5640d1SHerbert Xue </method> 8467*dc5640d1SHerbert Xue <method name="equals" return="boolean" 8468*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8469*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8470*dc5640d1SHerbert Xue deprecated="not deprecated"> 8471*dc5640d1SHerbert Xue <param name="o" type="java.lang.Object"/> 8472*dc5640d1SHerbert Xue </method> 8473*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 8474*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8475*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8476*dc5640d1SHerbert Xue deprecated="not deprecated"> 8477*dc5640d1SHerbert Xue </method> 8478*dc5640d1SHerbert Xue <doc> 8479*dc5640d1SHerbert Xue <![CDATA[A variable that can be resolved by an injector. 8480*dc5640d1SHerbert Xue 8481*dc5640d1SHerbert Xue <p>Use {@link #get} to build a freestanding dependency, or {@link InjectionPoint} to build one 8482*dc5640d1SHerbert Xue that's attached to a constructor, method or field. 8483*dc5640d1SHerbert Xue 8484*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 8485*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 8486*dc5640d1SHerbert Xue @since 2.0]]> 8487*dc5640d1SHerbert Xue </doc> 8488*dc5640d1SHerbert Xue </class> 8489*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.Dependency --> 8490*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.DependencyAndSource --> 8491*dc5640d1SHerbert Xue <class name="DependencyAndSource" extends="java.lang.Object" 8492*dc5640d1SHerbert Xue abstract="false" 8493*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 8494*dc5640d1SHerbert Xue deprecated="not deprecated"> 8495*dc5640d1SHerbert Xue <constructor name="DependencyAndSource" type="com.google.inject.spi.Dependency<?>, java.lang.Object" 8496*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8497*dc5640d1SHerbert Xue deprecated="not deprecated"> 8498*dc5640d1SHerbert Xue </constructor> 8499*dc5640d1SHerbert Xue <method name="getDependency" return="com.google.inject.spi.Dependency<?>" 8500*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8501*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8502*dc5640d1SHerbert Xue deprecated="not deprecated"> 8503*dc5640d1SHerbert Xue <doc> 8504*dc5640d1SHerbert Xue <![CDATA[Returns the Dependency, if one exists. For anything that can be referenced 8505*dc5640d1SHerbert Xue by {@link Injector#getBinding}, a dependency exists. A dependency will not 8506*dc5640d1SHerbert Xue exist (and this will return null) for types initialized with 8507*dc5640d1SHerbert Xue {@link Binder#requestInjection} or {@link Injector#injectMembers(Object)}, 8508*dc5640d1SHerbert Xue nor will it exist for objects injected into Providers bound with 8509*dc5640d1SHerbert Xue LinkedBindingBuilder#toProvider(Provider).]]> 8510*dc5640d1SHerbert Xue </doc> 8511*dc5640d1SHerbert Xue </method> 8512*dc5640d1SHerbert Xue <method name="getBindingSource" return="java.lang.String" 8513*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8514*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8515*dc5640d1SHerbert Xue deprecated="not deprecated"> 8516*dc5640d1SHerbert Xue <doc> 8517*dc5640d1SHerbert Xue <![CDATA[Returns a string describing where this dependency was bound. If the binding 8518*dc5640d1SHerbert Xue was just-in-time, there is no valid binding source, so this describes the 8519*dc5640d1SHerbert Xue class in question.]]> 8520*dc5640d1SHerbert Xue </doc> 8521*dc5640d1SHerbert Xue </method> 8522*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 8523*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8524*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8525*dc5640d1SHerbert Xue deprecated="not deprecated"> 8526*dc5640d1SHerbert Xue </method> 8527*dc5640d1SHerbert Xue <doc> 8528*dc5640d1SHerbert Xue <![CDATA[A combination of a {@link Dependency} and the {@link Binding#getSource() 8529*dc5640d1SHerbert Xue source} where the dependency was bound. 8530*dc5640d1SHerbert Xue 8531*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 8532*dc5640d1SHerbert Xue @since 4.0]]> 8533*dc5640d1SHerbert Xue </doc> 8534*dc5640d1SHerbert Xue </class> 8535*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.DependencyAndSource --> 8536*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.DisableCircularProxiesOption --> 8537*dc5640d1SHerbert Xue <class name="DisableCircularProxiesOption" extends="java.lang.Object" 8538*dc5640d1SHerbert Xue abstract="false" 8539*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 8540*dc5640d1SHerbert Xue deprecated="not deprecated"> 8541*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 8542*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 8543*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8544*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8545*dc5640d1SHerbert Xue deprecated="not deprecated"> 8546*dc5640d1SHerbert Xue </method> 8547*dc5640d1SHerbert Xue <method name="applyTo" 8548*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8549*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8550*dc5640d1SHerbert Xue deprecated="not deprecated"> 8551*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 8552*dc5640d1SHerbert Xue </method> 8553*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 8554*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8555*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8556*dc5640d1SHerbert Xue deprecated="not deprecated"> 8557*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 8558*dc5640d1SHerbert Xue </method> 8559*dc5640d1SHerbert Xue <doc> 8560*dc5640d1SHerbert Xue <![CDATA[A request to disable circular proxies. 8561*dc5640d1SHerbert Xue 8562*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 8563*dc5640d1SHerbert Xue @since 3.0]]> 8564*dc5640d1SHerbert Xue </doc> 8565*dc5640d1SHerbert Xue </class> 8566*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.DisableCircularProxiesOption --> 8567*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.Element --> 8568*dc5640d1SHerbert Xue <interface name="Element" abstract="true" 8569*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8570*dc5640d1SHerbert Xue deprecated="not deprecated"> 8571*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 8572*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8573*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8574*dc5640d1SHerbert Xue deprecated="not deprecated"> 8575*dc5640d1SHerbert Xue <doc> 8576*dc5640d1SHerbert Xue <![CDATA[Returns an arbitrary object containing information about the "place" where this element was 8577*dc5640d1SHerbert Xue configured. Used by Guice in the production of descriptive error messages. 8578*dc5640d1SHerbert Xue 8579*dc5640d1SHerbert Xue <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good 8580*dc5640d1SHerbert Xue example. Tools should simply call {@code toString()} on the source object if the type is 8581*dc5640d1SHerbert Xue unfamiliar.]]> 8582*dc5640d1SHerbert Xue </doc> 8583*dc5640d1SHerbert Xue </method> 8584*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 8585*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8586*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8587*dc5640d1SHerbert Xue deprecated="not deprecated"> 8588*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 8589*dc5640d1SHerbert Xue <doc> 8590*dc5640d1SHerbert Xue <![CDATA[Accepts an element visitor. Invokes the visitor method specific to this element's type. 8591*dc5640d1SHerbert Xue 8592*dc5640d1SHerbert Xue @param visitor to call back on]]> 8593*dc5640d1SHerbert Xue </doc> 8594*dc5640d1SHerbert Xue </method> 8595*dc5640d1SHerbert Xue <method name="applyTo" 8596*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8597*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8598*dc5640d1SHerbert Xue deprecated="not deprecated"> 8599*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 8600*dc5640d1SHerbert Xue <doc> 8601*dc5640d1SHerbert Xue <![CDATA[Writes this module element to the given binder (optional operation). 8602*dc5640d1SHerbert Xue 8603*dc5640d1SHerbert Xue @param binder to apply configuration element to 8604*dc5640d1SHerbert Xue @throws UnsupportedOperationException if the {@code applyTo} method is not supported by this 8605*dc5640d1SHerbert Xue element.]]> 8606*dc5640d1SHerbert Xue </doc> 8607*dc5640d1SHerbert Xue </method> 8608*dc5640d1SHerbert Xue <doc> 8609*dc5640d1SHerbert Xue <![CDATA[A core component of a module or injector. 8610*dc5640d1SHerbert Xue 8611*dc5640d1SHerbert Xue <p>The elements of a module can be inspected, validated and rewritten. Use {@link 8612*dc5640d1SHerbert Xue Elements#getElements(com.google.inject.Module[]) Elements.getElements()} to read the elements 8613*dc5640d1SHerbert Xue from a module, and {@link Elements#getModule(Iterable) Elements.getModule()} to rewrite them. 8614*dc5640d1SHerbert Xue This can be used for static analysis and generation of Guice modules. 8615*dc5640d1SHerbert Xue 8616*dc5640d1SHerbert Xue <p>The elements of an injector can be inspected and exercised. Use {@link 8617*dc5640d1SHerbert Xue com.google.inject.Injector#getBindings Injector.getBindings()} to reflect on Guice injectors. 8618*dc5640d1SHerbert Xue 8619*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 8620*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 8621*dc5640d1SHerbert Xue @since 2.0]]> 8622*dc5640d1SHerbert Xue </doc> 8623*dc5640d1SHerbert Xue </interface> 8624*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.Element --> 8625*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.Elements --> 8626*dc5640d1SHerbert Xue <class name="Elements" extends="java.lang.Object" 8627*dc5640d1SHerbert Xue abstract="false" 8628*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 8629*dc5640d1SHerbert Xue deprecated="not deprecated"> 8630*dc5640d1SHerbert Xue <constructor name="Elements" 8631*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8632*dc5640d1SHerbert Xue deprecated="not deprecated"> 8633*dc5640d1SHerbert Xue </constructor> 8634*dc5640d1SHerbert Xue <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 8635*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8636*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 8637*dc5640d1SHerbert Xue deprecated="not deprecated"> 8638*dc5640d1SHerbert Xue <param name="modules" type="com.google.inject.Module[]"/> 8639*dc5640d1SHerbert Xue <doc> 8640*dc5640d1SHerbert Xue <![CDATA[Records the elements executed by {@code modules}.]]> 8641*dc5640d1SHerbert Xue </doc> 8642*dc5640d1SHerbert Xue </method> 8643*dc5640d1SHerbert Xue <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 8644*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8645*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 8646*dc5640d1SHerbert Xue deprecated="not deprecated"> 8647*dc5640d1SHerbert Xue <param name="stage" type="com.google.inject.Stage"/> 8648*dc5640d1SHerbert Xue <param name="modules" type="com.google.inject.Module[]"/> 8649*dc5640d1SHerbert Xue <doc> 8650*dc5640d1SHerbert Xue <![CDATA[Records the elements executed by {@code modules}.]]> 8651*dc5640d1SHerbert Xue </doc> 8652*dc5640d1SHerbert Xue </method> 8653*dc5640d1SHerbert Xue <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 8654*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8655*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 8656*dc5640d1SHerbert Xue deprecated="not deprecated"> 8657*dc5640d1SHerbert Xue <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 8658*dc5640d1SHerbert Xue <doc> 8659*dc5640d1SHerbert Xue <![CDATA[Records the elements executed by {@code modules}.]]> 8660*dc5640d1SHerbert Xue </doc> 8661*dc5640d1SHerbert Xue </method> 8662*dc5640d1SHerbert Xue <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 8663*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8664*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 8665*dc5640d1SHerbert Xue deprecated="not deprecated"> 8666*dc5640d1SHerbert Xue <param name="stage" type="com.google.inject.Stage"/> 8667*dc5640d1SHerbert Xue <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 8668*dc5640d1SHerbert Xue <doc> 8669*dc5640d1SHerbert Xue <![CDATA[Records the elements executed by {@code modules}.]]> 8670*dc5640d1SHerbert Xue </doc> 8671*dc5640d1SHerbert Xue </method> 8672*dc5640d1SHerbert Xue <method name="getModule" return="com.google.inject.Module" 8673*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8674*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 8675*dc5640d1SHerbert Xue deprecated="not deprecated"> 8676*dc5640d1SHerbert Xue <param name="elements" type="java.lang.Iterable<? extends com.google.inject.spi.Element>"/> 8677*dc5640d1SHerbert Xue <doc> 8678*dc5640d1SHerbert Xue <![CDATA[Returns the module composed of {@code elements}.]]> 8679*dc5640d1SHerbert Xue </doc> 8680*dc5640d1SHerbert Xue </method> 8681*dc5640d1SHerbert Xue <doc> 8682*dc5640d1SHerbert Xue <![CDATA[Exposes elements of a module so they can be inspected, validated or {@link 8683*dc5640d1SHerbert Xue Element#applyTo(Binder) rewritten}. 8684*dc5640d1SHerbert Xue 8685*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 8686*dc5640d1SHerbert Xue @since 2.0]]> 8687*dc5640d1SHerbert Xue </doc> 8688*dc5640d1SHerbert Xue </class> 8689*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.Elements --> 8690*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.ElementSource --> 8691*dc5640d1SHerbert Xue <class name="ElementSource" extends="java.lang.Object" 8692*dc5640d1SHerbert Xue abstract="false" 8693*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 8694*dc5640d1SHerbert Xue deprecated="not deprecated"> 8695*dc5640d1SHerbert Xue <method name="getOriginalElementSource" return="com.google.inject.spi.ElementSource" 8696*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8697*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8698*dc5640d1SHerbert Xue deprecated="not deprecated"> 8699*dc5640d1SHerbert Xue <doc> 8700*dc5640d1SHerbert Xue <![CDATA[Returns the {@link ElementSource} of the element this was created or copied from. If this was 8701*dc5640d1SHerbert Xue not created or copied from another element, returns {@code null}.]]> 8702*dc5640d1SHerbert Xue </doc> 8703*dc5640d1SHerbert Xue </method> 8704*dc5640d1SHerbert Xue <method name="getDeclaringSource" return="java.lang.Object" 8705*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8706*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8707*dc5640d1SHerbert Xue deprecated="not deprecated"> 8708*dc5640d1SHerbert Xue <doc> 8709*dc5640d1SHerbert Xue <![CDATA[Returns a single location in source code that defines the element. It can be any object 8710*dc5640d1SHerbert Xue such as {@link java.lang.reflect.Constructor}, {@link java.lang.reflect.Method}, 8711*dc5640d1SHerbert Xue {@link java.lang.reflect.Field}, {@link StackTraceElement}, etc. For 8712*dc5640d1SHerbert Xue example, if the element is created from a method annotated by {@literal @Provides}, the 8713*dc5640d1SHerbert Xue declaring source of element would be the method itself.]]> 8714*dc5640d1SHerbert Xue </doc> 8715*dc5640d1SHerbert Xue </method> 8716*dc5640d1SHerbert Xue <method name="getModuleClassNames" return="java.util.List<java.lang.String>" 8717*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8718*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8719*dc5640d1SHerbert Xue deprecated="not deprecated"> 8720*dc5640d1SHerbert Xue <doc> 8721*dc5640d1SHerbert Xue <![CDATA[Returns the class names of modules involved in creating this {@link Element}. The first 8722*dc5640d1SHerbert Xue element (index 0) is the class name of module that defined the element, and the last element 8723*dc5640d1SHerbert Xue is the class name of root module.]]> 8724*dc5640d1SHerbert Xue </doc> 8725*dc5640d1SHerbert Xue </method> 8726*dc5640d1SHerbert Xue <method name="getModuleConfigurePositionsInStackTrace" return="java.util.List<java.lang.Integer>" 8727*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8728*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8729*dc5640d1SHerbert Xue deprecated="not deprecated"> 8730*dc5640d1SHerbert Xue <doc> 8731*dc5640d1SHerbert Xue <![CDATA[Returns the position of {@link com.google.inject.Module#configure configure(Binder)} method 8732*dc5640d1SHerbert Xue call in the {@link #getStackTrace stack trace} for modules that their classes returned by 8733*dc5640d1SHerbert Xue {@link #getModuleClassNames}. For example, if the stack trace looks like the following: 8734*dc5640d1SHerbert Xue <p> 8735*dc5640d1SHerbert Xue {@code 8736*dc5640d1SHerbert Xue 0 - Binder.bind(), 8737*dc5640d1SHerbert Xue 1 - ModuleTwo.configure(), 8738*dc5640d1SHerbert Xue 2 - Binder.install(), 8739*dc5640d1SHerbert Xue 3 - ModuleOne.configure(), 8740*dc5640d1SHerbert Xue 4 - theRest(). 8741*dc5640d1SHerbert Xue } 8742*dc5640d1SHerbert Xue <p> 8743*dc5640d1SHerbert Xue 1 and 3 are returned. 8744*dc5640d1SHerbert Xue <p> 8745*dc5640d1SHerbert Xue In the cases where stack trace is not available (i.e., the stack trace was not collected), 8746*dc5640d1SHerbert Xue it returns -1 for all module positions.]]> 8747*dc5640d1SHerbert Xue </doc> 8748*dc5640d1SHerbert Xue </method> 8749*dc5640d1SHerbert Xue <method name="getStackTrace" return="java.lang.StackTraceElement[]" 8750*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8751*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8752*dc5640d1SHerbert Xue deprecated="not deprecated"> 8753*dc5640d1SHerbert Xue <doc> 8754*dc5640d1SHerbert Xue <![CDATA[Returns the sequence of method calls that ends at one of {@link com.google.inject.Binder} 8755*dc5640d1SHerbert Xue {@code bindXXX()} methods and eventually defines the element. Note that 8756*dc5640d1SHerbert Xue {@link #getStackTrace} lists {@link StackTraceElement StackTraceElements} in reverse 8757*dc5640d1SHerbert Xue chronological order. The first element (index zero) is the last method call and the last 8758*dc5640d1SHerbert Xue element is the first method invocation. In the cases where stack trace is not available 8759*dc5640d1SHerbert Xue (i.e.,the stack trace was not collected), it returns an empty array.]]> 8760*dc5640d1SHerbert Xue </doc> 8761*dc5640d1SHerbert Xue </method> 8762*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 8763*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 8764*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8765*dc5640d1SHerbert Xue deprecated="not deprecated"> 8766*dc5640d1SHerbert Xue <doc> 8767*dc5640d1SHerbert Xue <![CDATA[Returns {@code getDeclaringSource().toString()} value.]]> 8768*dc5640d1SHerbert Xue </doc> 8769*dc5640d1SHerbert Xue </method> 8770*dc5640d1SHerbert Xue <doc> 8771*dc5640d1SHerbert Xue <![CDATA[Contains information about where and how an {@link Element element} was 8772*dc5640d1SHerbert Xue bound. 8773*dc5640d1SHerbert Xue <p> 8774*dc5640d1SHerbert Xue The {@link #getDeclaringSource() declaring source} refers to a location in 8775*dc5640d1SHerbert Xue source code that defines the Guice {@link Element element}. For example, if 8776*dc5640d1SHerbert Xue the element is created from a method annotated by {@literal @Provides}, the 8777*dc5640d1SHerbert Xue declaring source of element would be the method itself. 8778*dc5640d1SHerbert Xue <p> 8779*dc5640d1SHerbert Xue The {@link #getStackTrace()} refers to the sequence of calls ends at one of 8780*dc5640d1SHerbert Xue {@link com.google.inject.Binder} {@code bindXXX()} methods and eventually 8781*dc5640d1SHerbert Xue defines the element. Note that {@link #getStackTrace()} lists 8782*dc5640d1SHerbert Xue {@link StackTraceElement StackTraceElements} in reverse chronological order. 8783*dc5640d1SHerbert Xue The first element (index zero) is the last method call and the last element 8784*dc5640d1SHerbert Xue is the first method invocation. By default, the stack trace is not collected. 8785*dc5640d1SHerbert Xue The default behavior can be changed by setting the 8786*dc5640d1SHerbert Xue {@code guice_include_stack_traces} flag value. The value can be either 8787*dc5640d1SHerbert Xue {@code OFF}, {@code ONLY_FOR_DECLARING_SOURCE} or {@code COMPLETE}. Note that 8788*dc5640d1SHerbert Xue collecting stack traces for every binding can cause a performance hit when 8789*dc5640d1SHerbert Xue the injector is created. 8790*dc5640d1SHerbert Xue <p> 8791*dc5640d1SHerbert Xue The sequence of class names of {@link com.google.inject.Module modules} 8792*dc5640d1SHerbert Xue involved in the element creation can be retrieved by 8793*dc5640d1SHerbert Xue {@link #getModuleClassNames()}. Similar to {@link #getStackTrace()}, the 8794*dc5640d1SHerbert Xue order is reverse chronological. The first module (index 0) is the module that 8795*dc5640d1SHerbert Xue installs the {@link Element element}. The last module is the root module. 8796*dc5640d1SHerbert Xue <p> 8797*dc5640d1SHerbert Xue In order to support the cases where a Guice {@link Element element} is 8798*dc5640d1SHerbert Xue created from another Guice {@link Element element} (original) (e.g., by 8799*dc5640d1SHerbert Xue {@link Element#applyTo}), it also provides a reference to the original 8800*dc5640d1SHerbert Xue element source ({@link #getOriginalElementSource()}). 8801*dc5640d1SHerbert Xue 8802*dc5640d1SHerbert Xue @since 4.0]]> 8803*dc5640d1SHerbert Xue </doc> 8804*dc5640d1SHerbert Xue </class> 8805*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.ElementSource --> 8806*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ElementVisitor --> 8807*dc5640d1SHerbert Xue <interface name="ElementVisitor" abstract="true" 8808*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8809*dc5640d1SHerbert Xue deprecated="not deprecated"> 8810*dc5640d1SHerbert Xue <method name="visit" return="V" 8811*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8812*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8813*dc5640d1SHerbert Xue deprecated="not deprecated"> 8814*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.Binding<T>"/> 8815*dc5640d1SHerbert Xue <doc> 8816*dc5640d1SHerbert Xue <![CDATA[Visit a mapping from a key (type and optional annotation) to the strategy for getting 8817*dc5640d1SHerbert Xue instances of the type.]]> 8818*dc5640d1SHerbert Xue </doc> 8819*dc5640d1SHerbert Xue </method> 8820*dc5640d1SHerbert Xue <method name="visit" return="V" 8821*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8822*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8823*dc5640d1SHerbert Xue deprecated="not deprecated"> 8824*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.InterceptorBinding"/> 8825*dc5640d1SHerbert Xue <doc> 8826*dc5640d1SHerbert Xue <![CDATA[Visit a registration of interceptors for matching methods of matching classes.]]> 8827*dc5640d1SHerbert Xue </doc> 8828*dc5640d1SHerbert Xue </method> 8829*dc5640d1SHerbert Xue <method name="visit" return="V" 8830*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8831*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8832*dc5640d1SHerbert Xue deprecated="not deprecated"> 8833*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ScopeBinding"/> 8834*dc5640d1SHerbert Xue <doc> 8835*dc5640d1SHerbert Xue <![CDATA[Visit a registration of a scope annotation with the scope that implements it.]]> 8836*dc5640d1SHerbert Xue </doc> 8837*dc5640d1SHerbert Xue </method> 8838*dc5640d1SHerbert Xue <method name="visit" return="V" 8839*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8840*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8841*dc5640d1SHerbert Xue deprecated="not deprecated"> 8842*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.TypeConverterBinding"/> 8843*dc5640d1SHerbert Xue <doc> 8844*dc5640d1SHerbert Xue <![CDATA[Visit a registration of type converters for matching target types.]]> 8845*dc5640d1SHerbert Xue </doc> 8846*dc5640d1SHerbert Xue </method> 8847*dc5640d1SHerbert Xue <method name="visit" return="V" 8848*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8849*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8850*dc5640d1SHerbert Xue deprecated="not deprecated"> 8851*dc5640d1SHerbert Xue <param name="request" type="com.google.inject.spi.InjectionRequest<?>"/> 8852*dc5640d1SHerbert Xue <doc> 8853*dc5640d1SHerbert Xue <![CDATA[Visit a request to inject the instance fields and methods of an instance.]]> 8854*dc5640d1SHerbert Xue </doc> 8855*dc5640d1SHerbert Xue </method> 8856*dc5640d1SHerbert Xue <method name="visit" return="V" 8857*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8858*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8859*dc5640d1SHerbert Xue deprecated="not deprecated"> 8860*dc5640d1SHerbert Xue <param name="request" type="com.google.inject.spi.StaticInjectionRequest"/> 8861*dc5640d1SHerbert Xue <doc> 8862*dc5640d1SHerbert Xue <![CDATA[Visit a request to inject the static fields and methods of type.]]> 8863*dc5640d1SHerbert Xue </doc> 8864*dc5640d1SHerbert Xue </method> 8865*dc5640d1SHerbert Xue <method name="visit" return="V" 8866*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8867*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8868*dc5640d1SHerbert Xue deprecated="not deprecated"> 8869*dc5640d1SHerbert Xue <param name="lookup" type="com.google.inject.spi.ProviderLookup<T>"/> 8870*dc5640d1SHerbert Xue <doc> 8871*dc5640d1SHerbert Xue <![CDATA[Visit a lookup of the provider for a type.]]> 8872*dc5640d1SHerbert Xue </doc> 8873*dc5640d1SHerbert Xue </method> 8874*dc5640d1SHerbert Xue <method name="visit" return="V" 8875*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8876*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8877*dc5640d1SHerbert Xue deprecated="not deprecated"> 8878*dc5640d1SHerbert Xue <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup<T>"/> 8879*dc5640d1SHerbert Xue <doc> 8880*dc5640d1SHerbert Xue <![CDATA[Visit a lookup of the members injector.]]> 8881*dc5640d1SHerbert Xue </doc> 8882*dc5640d1SHerbert Xue </method> 8883*dc5640d1SHerbert Xue <method name="visit" return="V" 8884*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8885*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8886*dc5640d1SHerbert Xue deprecated="not deprecated"> 8887*dc5640d1SHerbert Xue <param name="message" type="com.google.inject.spi.Message"/> 8888*dc5640d1SHerbert Xue <doc> 8889*dc5640d1SHerbert Xue <![CDATA[Visit an error message and the context in which it occured.]]> 8890*dc5640d1SHerbert Xue </doc> 8891*dc5640d1SHerbert Xue </method> 8892*dc5640d1SHerbert Xue <method name="visit" return="V" 8893*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8894*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8895*dc5640d1SHerbert Xue deprecated="not deprecated"> 8896*dc5640d1SHerbert Xue <param name="elements" type="com.google.inject.spi.PrivateElements"/> 8897*dc5640d1SHerbert Xue <doc> 8898*dc5640d1SHerbert Xue <![CDATA[Visit a collection of configuration elements for a {@linkplain com.google.inject.PrivateBinder 8899*dc5640d1SHerbert Xue private binder}.]]> 8900*dc5640d1SHerbert Xue </doc> 8901*dc5640d1SHerbert Xue </method> 8902*dc5640d1SHerbert Xue <method name="visit" return="V" 8903*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8904*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8905*dc5640d1SHerbert Xue deprecated="not deprecated"> 8906*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/> 8907*dc5640d1SHerbert Xue <doc> 8908*dc5640d1SHerbert Xue <![CDATA[Visit an injectable type listener binding.]]> 8909*dc5640d1SHerbert Xue </doc> 8910*dc5640d1SHerbert Xue </method> 8911*dc5640d1SHerbert Xue <method name="visit" return="V" 8912*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8913*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8914*dc5640d1SHerbert Xue deprecated="not deprecated"> 8915*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProvisionListenerBinding"/> 8916*dc5640d1SHerbert Xue <doc> 8917*dc5640d1SHerbert Xue <![CDATA[Visit a provision listener binding. 8918*dc5640d1SHerbert Xue 8919*dc5640d1SHerbert Xue @since 4.0]]> 8920*dc5640d1SHerbert Xue </doc> 8921*dc5640d1SHerbert Xue </method> 8922*dc5640d1SHerbert Xue <method name="visit" return="V" 8923*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8924*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8925*dc5640d1SHerbert Xue deprecated="not deprecated"> 8926*dc5640d1SHerbert Xue <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/> 8927*dc5640d1SHerbert Xue <doc> 8928*dc5640d1SHerbert Xue <![CDATA[Visit a require explicit bindings command. 8929*dc5640d1SHerbert Xue 8930*dc5640d1SHerbert Xue @since 3.0]]> 8931*dc5640d1SHerbert Xue </doc> 8932*dc5640d1SHerbert Xue </method> 8933*dc5640d1SHerbert Xue <method name="visit" return="V" 8934*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8935*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8936*dc5640d1SHerbert Xue deprecated="not deprecated"> 8937*dc5640d1SHerbert Xue <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/> 8938*dc5640d1SHerbert Xue <doc> 8939*dc5640d1SHerbert Xue <![CDATA[Visit a disable circular proxies command. 8940*dc5640d1SHerbert Xue 8941*dc5640d1SHerbert Xue @since 3.0]]> 8942*dc5640d1SHerbert Xue </doc> 8943*dc5640d1SHerbert Xue </method> 8944*dc5640d1SHerbert Xue <method name="visit" return="V" 8945*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8946*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8947*dc5640d1SHerbert Xue deprecated="not deprecated"> 8948*dc5640d1SHerbert Xue <param name="option" type="com.google.inject.spi.RequireAtInjectOnConstructorsOption"/> 8949*dc5640d1SHerbert Xue <doc> 8950*dc5640d1SHerbert Xue <![CDATA[Visit a require explicit {@literal @}{@link Inject} command. 8951*dc5640d1SHerbert Xue 8952*dc5640d1SHerbert Xue @since 4.0]]> 8953*dc5640d1SHerbert Xue </doc> 8954*dc5640d1SHerbert Xue </method> 8955*dc5640d1SHerbert Xue <method name="visit" return="V" 8956*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8957*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8958*dc5640d1SHerbert Xue deprecated="not deprecated"> 8959*dc5640d1SHerbert Xue <param name="option" type="com.google.inject.spi.RequireExactBindingAnnotationsOption"/> 8960*dc5640d1SHerbert Xue <doc> 8961*dc5640d1SHerbert Xue <![CDATA[Visit a require exact binding annotations command. 8962*dc5640d1SHerbert Xue 8963*dc5640d1SHerbert Xue @since 4.0]]> 8964*dc5640d1SHerbert Xue </doc> 8965*dc5640d1SHerbert Xue </method> 8966*dc5640d1SHerbert Xue <method name="visit" return="V" 8967*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8968*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8969*dc5640d1SHerbert Xue deprecated="not deprecated"> 8970*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ModuleAnnotatedMethodScannerBinding"/> 8971*dc5640d1SHerbert Xue <doc> 8972*dc5640d1SHerbert Xue <![CDATA[Visits a {@link Binder#scanModulesForAnnotatedMethods} command. 8973*dc5640d1SHerbert Xue 8974*dc5640d1SHerbert Xue @since 4.0]]> 8975*dc5640d1SHerbert Xue </doc> 8976*dc5640d1SHerbert Xue </method> 8977*dc5640d1SHerbert Xue <doc> 8978*dc5640d1SHerbert Xue <![CDATA[Visit elements. 8979*dc5640d1SHerbert Xue 8980*dc5640d1SHerbert Xue @param <V> any type to be returned by the visit method. Use {@link Void} with 8981*dc5640d1SHerbert Xue {@code return null} if no return type is needed. 8982*dc5640d1SHerbert Xue 8983*dc5640d1SHerbert Xue @since 2.0]]> 8984*dc5640d1SHerbert Xue </doc> 8985*dc5640d1SHerbert Xue </interface> 8986*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ElementVisitor --> 8987*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ExposedBinding --> 8988*dc5640d1SHerbert Xue <interface name="ExposedBinding" abstract="true" 8989*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8990*dc5640d1SHerbert Xue deprecated="not deprecated"> 8991*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 8992*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 8993*dc5640d1SHerbert Xue <method name="getPrivateElements" return="com.google.inject.spi.PrivateElements" 8994*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 8995*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 8996*dc5640d1SHerbert Xue deprecated="not deprecated"> 8997*dc5640d1SHerbert Xue <doc> 8998*dc5640d1SHerbert Xue <![CDATA[Returns the enclosed environment that holds the original binding.]]> 8999*dc5640d1SHerbert Xue </doc> 9000*dc5640d1SHerbert Xue </method> 9001*dc5640d1SHerbert Xue <method name="applyTo" 9002*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 9003*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9004*dc5640d1SHerbert Xue deprecated="not deprecated"> 9005*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 9006*dc5640d1SHerbert Xue <doc> 9007*dc5640d1SHerbert Xue <![CDATA[Unsupported. Always throws {@link UnsupportedOperationException}.]]> 9008*dc5640d1SHerbert Xue </doc> 9009*dc5640d1SHerbert Xue </method> 9010*dc5640d1SHerbert Xue <doc> 9011*dc5640d1SHerbert Xue <![CDATA[A binding to a key exposed from an enclosed private environment. 9012*dc5640d1SHerbert Xue 9013*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 9014*dc5640d1SHerbert Xue @since 2.0]]> 9015*dc5640d1SHerbert Xue </doc> 9016*dc5640d1SHerbert Xue </interface> 9017*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ExposedBinding --> 9018*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.HasDependencies --> 9019*dc5640d1SHerbert Xue <interface name="HasDependencies" abstract="true" 9020*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9021*dc5640d1SHerbert Xue deprecated="not deprecated"> 9022*dc5640d1SHerbert Xue <method name="getDependencies" return="java.util.Set<com.google.inject.spi.Dependency<?>>" 9023*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 9024*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9025*dc5640d1SHerbert Xue deprecated="not deprecated"> 9026*dc5640d1SHerbert Xue <doc> 9027*dc5640d1SHerbert Xue <![CDATA[Returns the known dependencies for this type. If this has dependencies whose values are not 9028*dc5640d1SHerbert Xue known statically, a dependency for the {@link com.google.inject.Injector Injector} will be 9029*dc5640d1SHerbert Xue included in the returned set. 9030*dc5640d1SHerbert Xue 9031*dc5640d1SHerbert Xue @return a possibly empty set]]> 9032*dc5640d1SHerbert Xue </doc> 9033*dc5640d1SHerbert Xue </method> 9034*dc5640d1SHerbert Xue <doc> 9035*dc5640d1SHerbert Xue <![CDATA[Implemented by {@link com.google.inject.Binding bindings}, {@link com.google.inject.Provider 9036*dc5640d1SHerbert Xue providers} and instances that expose their dependencies explicitly. 9037*dc5640d1SHerbert Xue 9038*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 9039*dc5640d1SHerbert Xue @since 2.0]]> 9040*dc5640d1SHerbert Xue </doc> 9041*dc5640d1SHerbert Xue </interface> 9042*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.HasDependencies --> 9043*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.InjectionListener --> 9044*dc5640d1SHerbert Xue <interface name="InjectionListener" abstract="true" 9045*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9046*dc5640d1SHerbert Xue deprecated="not deprecated"> 9047*dc5640d1SHerbert Xue <method name="afterInjection" 9048*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 9049*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9050*dc5640d1SHerbert Xue deprecated="not deprecated"> 9051*dc5640d1SHerbert Xue <param name="injectee" type="I"/> 9052*dc5640d1SHerbert Xue <doc> 9053*dc5640d1SHerbert Xue <![CDATA[Invoked by Guice after it injects the fields and methods of instance. 9054*dc5640d1SHerbert Xue 9055*dc5640d1SHerbert Xue @param injectee instance that Guice injected dependencies into]]> 9056*dc5640d1SHerbert Xue </doc> 9057*dc5640d1SHerbert Xue </method> 9058*dc5640d1SHerbert Xue <doc> 9059*dc5640d1SHerbert Xue <![CDATA[Listens for injections into instances of type {@code I}. Useful for performing further 9060*dc5640d1SHerbert Xue injections, post-injection initialization, and more. 9061*dc5640d1SHerbert Xue 9062*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 9063*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 9064*dc5640d1SHerbert Xue @since 2.0]]> 9065*dc5640d1SHerbert Xue </doc> 9066*dc5640d1SHerbert Xue </interface> 9067*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.InjectionListener --> 9068*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.InjectionPoint --> 9069*dc5640d1SHerbert Xue <class name="InjectionPoint" extends="java.lang.Object" 9070*dc5640d1SHerbert Xue abstract="false" 9071*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 9072*dc5640d1SHerbert Xue deprecated="not deprecated"> 9073*dc5640d1SHerbert Xue <method name="getMember" return="java.lang.reflect.Member" 9074*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9075*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9076*dc5640d1SHerbert Xue deprecated="not deprecated"> 9077*dc5640d1SHerbert Xue <doc> 9078*dc5640d1SHerbert Xue <![CDATA[Returns the injected constructor, field, or method.]]> 9079*dc5640d1SHerbert Xue </doc> 9080*dc5640d1SHerbert Xue </method> 9081*dc5640d1SHerbert Xue <method name="getDependencies" return="java.util.List<com.google.inject.spi.Dependency<?>>" 9082*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9083*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9084*dc5640d1SHerbert Xue deprecated="not deprecated"> 9085*dc5640d1SHerbert Xue <doc> 9086*dc5640d1SHerbert Xue <![CDATA[Returns the dependencies for this injection point. If the injection point is for a method or 9087*dc5640d1SHerbert Xue constructor, the dependencies will correspond to that member's parameters. Field injection 9088*dc5640d1SHerbert Xue points always have a single dependency for the field itself. 9089*dc5640d1SHerbert Xue 9090*dc5640d1SHerbert Xue @return a possibly-empty list]]> 9091*dc5640d1SHerbert Xue </doc> 9092*dc5640d1SHerbert Xue </method> 9093*dc5640d1SHerbert Xue <method name="isOptional" return="boolean" 9094*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9095*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9096*dc5640d1SHerbert Xue deprecated="not deprecated"> 9097*dc5640d1SHerbert Xue <doc> 9098*dc5640d1SHerbert Xue <![CDATA[Returns true if this injection point shall be skipped if the injector cannot resolve bindings 9099*dc5640d1SHerbert Xue for all required dependencies. Both explicit bindings (as specified in a module), and implicit 9100*dc5640d1SHerbert Xue bindings ({@literal @}{@link com.google.inject.ImplementedBy ImplementedBy}, default 9101*dc5640d1SHerbert Xue constructors etc.) may be used to satisfy optional injection points.]]> 9102*dc5640d1SHerbert Xue </doc> 9103*dc5640d1SHerbert Xue </method> 9104*dc5640d1SHerbert Xue <method name="isToolable" return="boolean" 9105*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9106*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9107*dc5640d1SHerbert Xue deprecated="not deprecated"> 9108*dc5640d1SHerbert Xue <doc> 9109*dc5640d1SHerbert Xue <![CDATA[Returns true if the element is annotated with {@literal @}{@link Toolable}. 9110*dc5640d1SHerbert Xue 9111*dc5640d1SHerbert Xue @since 3.0]]> 9112*dc5640d1SHerbert Xue </doc> 9113*dc5640d1SHerbert Xue </method> 9114*dc5640d1SHerbert Xue <method name="getDeclaringType" return="com.google.inject.TypeLiteral<?>" 9115*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9116*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9117*dc5640d1SHerbert Xue deprecated="not deprecated"> 9118*dc5640d1SHerbert Xue <doc> 9119*dc5640d1SHerbert Xue <![CDATA[Returns the generic type that defines this injection point. If the member exists on a 9120*dc5640d1SHerbert Xue parameterized type, the result will include more type information than the member's {@link 9121*dc5640d1SHerbert Xue Member#getDeclaringClass() raw declaring class}. 9122*dc5640d1SHerbert Xue 9123*dc5640d1SHerbert Xue @since 3.0]]> 9124*dc5640d1SHerbert Xue </doc> 9125*dc5640d1SHerbert Xue </method> 9126*dc5640d1SHerbert Xue <method name="equals" return="boolean" 9127*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9128*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9129*dc5640d1SHerbert Xue deprecated="not deprecated"> 9130*dc5640d1SHerbert Xue <param name="o" type="java.lang.Object"/> 9131*dc5640d1SHerbert Xue </method> 9132*dc5640d1SHerbert Xue <method name="hashCode" return="int" 9133*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9134*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9135*dc5640d1SHerbert Xue deprecated="not deprecated"> 9136*dc5640d1SHerbert Xue </method> 9137*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 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="forConstructor" return="com.google.inject.spi.InjectionPoint" 9143*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9144*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 9145*dc5640d1SHerbert Xue deprecated="not deprecated"> 9146*dc5640d1SHerbert Xue <param name="constructor" type="java.lang.reflect.Constructor<T>"/> 9147*dc5640d1SHerbert Xue <doc> 9148*dc5640d1SHerbert Xue <![CDATA[Returns a new injection point for the specified constructor. If the declaring type of {@code 9149*dc5640d1SHerbert Xue constructor} is parameterized (such as {@code List<T>}), prefer the overload that includes a 9150*dc5640d1SHerbert Xue type literal. 9151*dc5640d1SHerbert Xue 9152*dc5640d1SHerbert Xue @param constructor any single constructor present on {@code type}. 9153*dc5640d1SHerbert Xue 9154*dc5640d1SHerbert Xue @since 3.0]]> 9155*dc5640d1SHerbert Xue </doc> 9156*dc5640d1SHerbert Xue </method> 9157*dc5640d1SHerbert Xue <method name="forConstructor" return="com.google.inject.spi.InjectionPoint" 9158*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9159*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 9160*dc5640d1SHerbert Xue deprecated="not deprecated"> 9161*dc5640d1SHerbert Xue <param name="constructor" type="java.lang.reflect.Constructor<T>"/> 9162*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<? extends T>"/> 9163*dc5640d1SHerbert Xue <doc> 9164*dc5640d1SHerbert Xue <![CDATA[Returns a new injection point for the specified constructor of {@code type}. 9165*dc5640d1SHerbert Xue 9166*dc5640d1SHerbert Xue @param constructor any single constructor present on {@code type}. 9167*dc5640d1SHerbert Xue @param type the concrete type that defines {@code constructor}. 9168*dc5640d1SHerbert Xue 9169*dc5640d1SHerbert Xue @since 3.0]]> 9170*dc5640d1SHerbert Xue </doc> 9171*dc5640d1SHerbert Xue </method> 9172*dc5640d1SHerbert Xue <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint" 9173*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9174*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 9175*dc5640d1SHerbert Xue deprecated="not deprecated"> 9176*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<?>"/> 9177*dc5640d1SHerbert Xue <doc> 9178*dc5640d1SHerbert Xue <![CDATA[Returns a new injection point for the injectable constructor of {@code type}. 9179*dc5640d1SHerbert Xue 9180*dc5640d1SHerbert Xue @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject}, 9181*dc5640d1SHerbert Xue or a no-arguments constructor that is not private. 9182*dc5640d1SHerbert Xue @throws ConfigurationException if there is no injectable constructor, more than one injectable 9183*dc5640d1SHerbert Xue constructor, or if parameters of the injectable constructor are malformed, such as a 9184*dc5640d1SHerbert Xue parameter with multiple binding annotations.]]> 9185*dc5640d1SHerbert Xue </doc> 9186*dc5640d1SHerbert Xue </method> 9187*dc5640d1SHerbert Xue <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint" 9188*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9189*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 9190*dc5640d1SHerbert Xue deprecated="not deprecated"> 9191*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<?>"/> 9192*dc5640d1SHerbert Xue <doc> 9193*dc5640d1SHerbert Xue <![CDATA[Returns a new injection point for the injectable constructor of {@code type}. 9194*dc5640d1SHerbert Xue 9195*dc5640d1SHerbert Xue @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject}, 9196*dc5640d1SHerbert Xue or a no-arguments constructor that is not private. 9197*dc5640d1SHerbert Xue @throws ConfigurationException if there is no injectable constructor, more than one injectable 9198*dc5640d1SHerbert Xue constructor, or if parameters of the injectable constructor are malformed, such as a 9199*dc5640d1SHerbert Xue parameter with multiple binding annotations.]]> 9200*dc5640d1SHerbert Xue </doc> 9201*dc5640d1SHerbert Xue </method> 9202*dc5640d1SHerbert Xue <method name="forMethod" return="com.google.inject.spi.InjectionPoint" 9203*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9204*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 9205*dc5640d1SHerbert Xue deprecated="not deprecated"> 9206*dc5640d1SHerbert Xue <param name="method" type="java.lang.reflect.Method"/> 9207*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<T>"/> 9208*dc5640d1SHerbert Xue <doc> 9209*dc5640d1SHerbert Xue <![CDATA[Returns a new injection point for the specified method of {@code type}. 9210*dc5640d1SHerbert Xue This is useful for extensions that need to build dependency graphs from 9211*dc5640d1SHerbert Xue arbitrary methods. 9212*dc5640d1SHerbert Xue 9213*dc5640d1SHerbert Xue @param method any single method present on {@code type}. 9214*dc5640d1SHerbert Xue @param type the concrete type that defines {@code method}. 9215*dc5640d1SHerbert Xue 9216*dc5640d1SHerbert Xue @since 4.0]]> 9217*dc5640d1SHerbert Xue </doc> 9218*dc5640d1SHerbert Xue </method> 9219*dc5640d1SHerbert Xue <method name="forStaticMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9220*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9221*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 9222*dc5640d1SHerbert Xue deprecated="not deprecated"> 9223*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<?>"/> 9224*dc5640d1SHerbert Xue <doc> 9225*dc5640d1SHerbert Xue <![CDATA[Returns all static method and field injection points on {@code type}. 9226*dc5640d1SHerbert Xue 9227*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All 9228*dc5640d1SHerbert Xue fields are returned and then all methods. Within the fields, supertype fields are returned 9229*dc5640d1SHerbert Xue before subtype fields. Similarly, supertype methods are returned before subtype methods. 9230*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 9231*dc5640d1SHerbert Xue a field with multiple binding annotations. The exception's {@link 9232*dc5640d1SHerbert Xue ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 9233*dc5640d1SHerbert Xue of the valid injection points.]]> 9234*dc5640d1SHerbert Xue </doc> 9235*dc5640d1SHerbert Xue </method> 9236*dc5640d1SHerbert Xue <method name="forStaticMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9237*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9238*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 9239*dc5640d1SHerbert Xue deprecated="not deprecated"> 9240*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<?>"/> 9241*dc5640d1SHerbert Xue <doc> 9242*dc5640d1SHerbert Xue <![CDATA[Returns all static method and field injection points on {@code type}. 9243*dc5640d1SHerbert Xue 9244*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All 9245*dc5640d1SHerbert Xue fields are returned and then all methods. Within the fields, supertype fields are returned 9246*dc5640d1SHerbert Xue before subtype fields. Similarly, supertype methods are returned before subtype methods. 9247*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 9248*dc5640d1SHerbert Xue a field with multiple binding annotations. The exception's {@link 9249*dc5640d1SHerbert Xue ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 9250*dc5640d1SHerbert Xue of the valid injection points.]]> 9251*dc5640d1SHerbert Xue </doc> 9252*dc5640d1SHerbert Xue </method> 9253*dc5640d1SHerbert Xue <method name="forInstanceMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9254*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9255*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 9256*dc5640d1SHerbert Xue deprecated="not deprecated"> 9257*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<?>"/> 9258*dc5640d1SHerbert Xue <doc> 9259*dc5640d1SHerbert Xue <![CDATA[Returns all instance method and field injection points on {@code type}. 9260*dc5640d1SHerbert Xue 9261*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All 9262*dc5640d1SHerbert Xue fields are returned and then all methods. Within the fields, supertype fields are returned 9263*dc5640d1SHerbert Xue before subtype fields. Similarly, supertype methods are returned before subtype methods. 9264*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 9265*dc5640d1SHerbert Xue a field with multiple binding annotations. The exception's {@link 9266*dc5640d1SHerbert Xue ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 9267*dc5640d1SHerbert Xue of the valid injection points.]]> 9268*dc5640d1SHerbert Xue </doc> 9269*dc5640d1SHerbert Xue </method> 9270*dc5640d1SHerbert Xue <method name="forInstanceMethodsAndFields" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9271*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9272*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 9273*dc5640d1SHerbert Xue deprecated="not deprecated"> 9274*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<?>"/> 9275*dc5640d1SHerbert Xue <doc> 9276*dc5640d1SHerbert Xue <![CDATA[Returns all instance method and field injection points on {@code type}. 9277*dc5640d1SHerbert Xue 9278*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All 9279*dc5640d1SHerbert Xue fields are returned and then all methods. Within the fields, supertype fields are returned 9280*dc5640d1SHerbert Xue before subtype fields. Similarly, supertype methods are returned before subtype methods. 9281*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 9282*dc5640d1SHerbert Xue a field with multiple binding annotations. The exception's {@link 9283*dc5640d1SHerbert Xue ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 9284*dc5640d1SHerbert Xue of the valid injection points.]]> 9285*dc5640d1SHerbert Xue </doc> 9286*dc5640d1SHerbert Xue </method> 9287*dc5640d1SHerbert Xue <doc> 9288*dc5640d1SHerbert Xue <![CDATA[A constructor, field or method that can receive injections. Typically this is a member with the 9289*dc5640d1SHerbert Xue {@literal @}{@link Inject} annotation. For non-private, no argument constructors, the member may 9290*dc5640d1SHerbert Xue omit the annotation. 9291*dc5640d1SHerbert Xue 9292*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 9293*dc5640d1SHerbert Xue @since 2.0]]> 9294*dc5640d1SHerbert Xue </doc> 9295*dc5640d1SHerbert Xue </class> 9296*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.InjectionPoint --> 9297*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.InjectionRequest --> 9298*dc5640d1SHerbert Xue <class name="InjectionRequest" extends="java.lang.Object" 9299*dc5640d1SHerbert Xue abstract="false" 9300*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 9301*dc5640d1SHerbert Xue deprecated="not deprecated"> 9302*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 9303*dc5640d1SHerbert Xue <constructor name="InjectionRequest" type="java.lang.Object, com.google.inject.TypeLiteral<T>, T" 9304*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9305*dc5640d1SHerbert Xue deprecated="not deprecated"> 9306*dc5640d1SHerbert Xue </constructor> 9307*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 9308*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9309*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9310*dc5640d1SHerbert Xue deprecated="not deprecated"> 9311*dc5640d1SHerbert Xue </method> 9312*dc5640d1SHerbert Xue <method name="getInstance" return="T" 9313*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9314*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9315*dc5640d1SHerbert Xue deprecated="not deprecated"> 9316*dc5640d1SHerbert Xue </method> 9317*dc5640d1SHerbert Xue <method name="getType" return="com.google.inject.TypeLiteral<T>" 9318*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9319*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9320*dc5640d1SHerbert Xue deprecated="not deprecated"> 9321*dc5640d1SHerbert Xue </method> 9322*dc5640d1SHerbert Xue <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9323*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9324*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9325*dc5640d1SHerbert Xue deprecated="not deprecated"> 9326*dc5640d1SHerbert Xue <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/> 9327*dc5640d1SHerbert Xue <doc> 9328*dc5640d1SHerbert Xue <![CDATA[Returns the instance methods and fields of {@code instance} that will be injected to fulfill 9329*dc5640d1SHerbert Xue this request. 9330*dc5640d1SHerbert Xue 9331*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All 9332*dc5640d1SHerbert Xue fields are returned and then all methods. Within the fields, supertype fields are returned 9333*dc5640d1SHerbert Xue before subtype fields. Similarly, supertype methods are returned before subtype methods. 9334*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on the class of {@code 9335*dc5640d1SHerbert Xue instance}, such as a field with multiple binding annotations. The exception's {@link 9336*dc5640d1SHerbert Xue ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 9337*dc5640d1SHerbert Xue of the valid injection points.]]> 9338*dc5640d1SHerbert Xue </doc> 9339*dc5640d1SHerbert Xue </method> 9340*dc5640d1SHerbert Xue <method name="acceptVisitor" return="R" 9341*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9342*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9343*dc5640d1SHerbert Xue deprecated="not deprecated"> 9344*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<R>"/> 9345*dc5640d1SHerbert Xue </method> 9346*dc5640d1SHerbert Xue <method name="applyTo" 9347*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9348*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9349*dc5640d1SHerbert Xue deprecated="not deprecated"> 9350*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 9351*dc5640d1SHerbert Xue </method> 9352*dc5640d1SHerbert Xue <doc> 9353*dc5640d1SHerbert Xue <![CDATA[A request to inject the instance fields and methods of an instance. Requests are created 9354*dc5640d1SHerbert Xue explicitly in a module using {@link com.google.inject.Binder#requestInjection(Object) 9355*dc5640d1SHerbert Xue requestInjection()} statements: 9356*dc5640d1SHerbert Xue <pre> 9357*dc5640d1SHerbert Xue requestInjection(serviceInstance);</pre> 9358*dc5640d1SHerbert Xue 9359*dc5640d1SHerbert Xue @author [email protected] (Mike Ward) 9360*dc5640d1SHerbert Xue @since 2.0]]> 9361*dc5640d1SHerbert Xue </doc> 9362*dc5640d1SHerbert Xue </class> 9363*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.InjectionRequest --> 9364*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.InstanceBinding --> 9365*dc5640d1SHerbert Xue <interface name="InstanceBinding" abstract="true" 9366*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9367*dc5640d1SHerbert Xue deprecated="not deprecated"> 9368*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 9369*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 9370*dc5640d1SHerbert Xue <method name="getInstance" return="T" 9371*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 9372*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9373*dc5640d1SHerbert Xue deprecated="not deprecated"> 9374*dc5640d1SHerbert Xue <doc> 9375*dc5640d1SHerbert Xue <![CDATA[Returns the user-supplied instance.]]> 9376*dc5640d1SHerbert Xue </doc> 9377*dc5640d1SHerbert Xue </method> 9378*dc5640d1SHerbert Xue <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9379*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 9380*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9381*dc5640d1SHerbert Xue deprecated="not deprecated"> 9382*dc5640d1SHerbert Xue <doc> 9383*dc5640d1SHerbert Xue <![CDATA[Returns the field and method injection points of the instance, injected at injector-creation 9384*dc5640d1SHerbert Xue time only. 9385*dc5640d1SHerbert Xue 9386*dc5640d1SHerbert Xue @return a possibly empty set]]> 9387*dc5640d1SHerbert Xue </doc> 9388*dc5640d1SHerbert Xue </method> 9389*dc5640d1SHerbert Xue <doc> 9390*dc5640d1SHerbert Xue <![CDATA[A binding to a single instance. The same instance is returned for every injection. 9391*dc5640d1SHerbert Xue 9392*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 9393*dc5640d1SHerbert Xue @since 2.0]]> 9394*dc5640d1SHerbert Xue </doc> 9395*dc5640d1SHerbert Xue </interface> 9396*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.InstanceBinding --> 9397*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.InterceptorBinding --> 9398*dc5640d1SHerbert Xue <class name="InterceptorBinding" extends="java.lang.Object" 9399*dc5640d1SHerbert Xue abstract="false" 9400*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 9401*dc5640d1SHerbert Xue deprecated="not deprecated"> 9402*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 9403*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 9404*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9405*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9406*dc5640d1SHerbert Xue deprecated="not deprecated"> 9407*dc5640d1SHerbert Xue </method> 9408*dc5640d1SHerbert Xue <method name="getClassMatcher" return="com.google.inject.matcher.Matcher<? super java.lang.Class<?>>" 9409*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9410*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9411*dc5640d1SHerbert Xue deprecated="not deprecated"> 9412*dc5640d1SHerbert Xue </method> 9413*dc5640d1SHerbert Xue <method name="getMethodMatcher" return="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>" 9414*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9415*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9416*dc5640d1SHerbert Xue deprecated="not deprecated"> 9417*dc5640d1SHerbert Xue </method> 9418*dc5640d1SHerbert Xue <method name="getInterceptors" return="java.util.List<org.aopalliance.intercept.MethodInterceptor>" 9419*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9420*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9421*dc5640d1SHerbert Xue deprecated="not deprecated"> 9422*dc5640d1SHerbert Xue </method> 9423*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 9424*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9425*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9426*dc5640d1SHerbert Xue deprecated="not deprecated"> 9427*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9428*dc5640d1SHerbert Xue </method> 9429*dc5640d1SHerbert Xue <method name="applyTo" 9430*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9431*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9432*dc5640d1SHerbert Xue deprecated="not deprecated"> 9433*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 9434*dc5640d1SHerbert Xue </method> 9435*dc5640d1SHerbert Xue <doc> 9436*dc5640d1SHerbert Xue <![CDATA[Registration of interceptors for matching methods of matching classes. Instances are created 9437*dc5640d1SHerbert Xue explicitly in a module using {@link com.google.inject.Binder#bindInterceptor( 9438*dc5640d1SHerbert Xue Matcher, Matcher, MethodInterceptor[]) bindInterceptor()} statements: 9439*dc5640d1SHerbert Xue <pre> 9440*dc5640d1SHerbert Xue bindInterceptor(Matchers.subclassesOf(MyAction.class), 9441*dc5640d1SHerbert Xue Matchers.annotatedWith(Transactional.class), 9442*dc5640d1SHerbert Xue new MyTransactionInterceptor());</pre> 9443*dc5640d1SHerbert Xue 9444*dc5640d1SHerbert Xue or from an injectable type listener using {@link TypeEncounter#bindInterceptor(Matcher, 9445*dc5640d1SHerbert Xue org.aopalliance.intercept.MethodInterceptor[]) TypeEncounter.bindInterceptor()}. 9446*dc5640d1SHerbert Xue 9447*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 9448*dc5640d1SHerbert Xue @since 2.0]]> 9449*dc5640d1SHerbert Xue </doc> 9450*dc5640d1SHerbert Xue </class> 9451*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.InterceptorBinding --> 9452*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.LinkedKeyBinding --> 9453*dc5640d1SHerbert Xue <interface name="LinkedKeyBinding" abstract="true" 9454*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9455*dc5640d1SHerbert Xue deprecated="not deprecated"> 9456*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 9457*dc5640d1SHerbert Xue <method name="getLinkedKey" return="com.google.inject.Key<? extends T>" 9458*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 9459*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9460*dc5640d1SHerbert Xue deprecated="not deprecated"> 9461*dc5640d1SHerbert Xue <doc> 9462*dc5640d1SHerbert Xue <![CDATA[Returns the linked key used to resolve injections. That binding can be retrieved from an 9463*dc5640d1SHerbert Xue injector using {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]> 9464*dc5640d1SHerbert Xue </doc> 9465*dc5640d1SHerbert Xue </method> 9466*dc5640d1SHerbert Xue <doc> 9467*dc5640d1SHerbert Xue <![CDATA[A binding to a linked key. The other key's binding is used to resolve injections. 9468*dc5640d1SHerbert Xue 9469*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 9470*dc5640d1SHerbert Xue @since 2.0]]> 9471*dc5640d1SHerbert Xue </doc> 9472*dc5640d1SHerbert Xue </interface> 9473*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.LinkedKeyBinding --> 9474*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.MembersInjectorLookup --> 9475*dc5640d1SHerbert Xue <class name="MembersInjectorLookup" extends="java.lang.Object" 9476*dc5640d1SHerbert Xue abstract="false" 9477*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 9478*dc5640d1SHerbert Xue deprecated="not deprecated"> 9479*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 9480*dc5640d1SHerbert Xue <constructor name="MembersInjectorLookup" type="java.lang.Object, com.google.inject.TypeLiteral<T>" 9481*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9482*dc5640d1SHerbert Xue deprecated="not deprecated"> 9483*dc5640d1SHerbert Xue </constructor> 9484*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 9485*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9486*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9487*dc5640d1SHerbert Xue deprecated="not deprecated"> 9488*dc5640d1SHerbert Xue </method> 9489*dc5640d1SHerbert Xue <method name="getType" return="com.google.inject.TypeLiteral<T>" 9490*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9491*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9492*dc5640d1SHerbert Xue deprecated="not deprecated"> 9493*dc5640d1SHerbert Xue <doc> 9494*dc5640d1SHerbert Xue <![CDATA[Gets the type containing the members to be injected.]]> 9495*dc5640d1SHerbert Xue </doc> 9496*dc5640d1SHerbert Xue </method> 9497*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 9498*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9499*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9500*dc5640d1SHerbert Xue deprecated="not deprecated"> 9501*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9502*dc5640d1SHerbert Xue </method> 9503*dc5640d1SHerbert Xue <method name="initializeDelegate" 9504*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9505*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9506*dc5640d1SHerbert Xue deprecated="not deprecated"> 9507*dc5640d1SHerbert Xue <param name="delegate" type="com.google.inject.MembersInjector<T>"/> 9508*dc5640d1SHerbert Xue <doc> 9509*dc5640d1SHerbert Xue <![CDATA[Sets the actual members injector. 9510*dc5640d1SHerbert Xue 9511*dc5640d1SHerbert Xue @throws IllegalStateException if the delegate is already set]]> 9512*dc5640d1SHerbert Xue </doc> 9513*dc5640d1SHerbert Xue </method> 9514*dc5640d1SHerbert Xue <method name="applyTo" 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 <param name="binder" type="com.google.inject.Binder"/> 9519*dc5640d1SHerbert Xue </method> 9520*dc5640d1SHerbert Xue <method name="getDelegate" return="com.google.inject.MembersInjector<T>" 9521*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9522*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9523*dc5640d1SHerbert Xue deprecated="not deprecated"> 9524*dc5640d1SHerbert Xue <doc> 9525*dc5640d1SHerbert Xue <![CDATA[Returns the delegate members injector, or {@code null} if it has not yet been initialized. 9526*dc5640d1SHerbert Xue The delegate will be initialized when this element is processed, or otherwise used to create 9527*dc5640d1SHerbert Xue an injector.]]> 9528*dc5640d1SHerbert Xue </doc> 9529*dc5640d1SHerbert Xue </method> 9530*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 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 <doc> 9535*dc5640d1SHerbert Xue <![CDATA[Returns the looked up members injector. The result is not valid until this lookup has been 9536*dc5640d1SHerbert Xue initialized, which usually happens when the injector is created. The members injector will 9537*dc5640d1SHerbert Xue throw an {@code IllegalStateException} if you try to use it beforehand.]]> 9538*dc5640d1SHerbert Xue </doc> 9539*dc5640d1SHerbert Xue </method> 9540*dc5640d1SHerbert Xue <doc> 9541*dc5640d1SHerbert Xue <![CDATA[A lookup of the members injector for a type. Lookups are created explicitly in a module using 9542*dc5640d1SHerbert Xue {@link com.google.inject.Binder#getMembersInjector(Class) getMembersInjector()} statements: 9543*dc5640d1SHerbert Xue <pre> 9544*dc5640d1SHerbert Xue MembersInjector<PaymentService> membersInjector 9545*dc5640d1SHerbert Xue = getMembersInjector(PaymentService.class);</pre> 9546*dc5640d1SHerbert Xue 9547*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 9548*dc5640d1SHerbert Xue @since 2.0]]> 9549*dc5640d1SHerbert Xue </doc> 9550*dc5640d1SHerbert Xue </class> 9551*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.MembersInjectorLookup --> 9552*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.Message --> 9553*dc5640d1SHerbert Xue <class name="Message" extends="java.lang.Object" 9554*dc5640d1SHerbert Xue abstract="false" 9555*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 9556*dc5640d1SHerbert Xue deprecated="not deprecated"> 9557*dc5640d1SHerbert Xue <implements name="java.io.Serializable"/> 9558*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 9559*dc5640d1SHerbert Xue <constructor name="Message" type="java.util.List<java.lang.Object>, java.lang.String, java.lang.Throwable" 9560*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9561*dc5640d1SHerbert Xue deprecated="not deprecated"> 9562*dc5640d1SHerbert Xue <doc> 9563*dc5640d1SHerbert Xue <![CDATA[@since 2.0]]> 9564*dc5640d1SHerbert Xue </doc> 9565*dc5640d1SHerbert Xue </constructor> 9566*dc5640d1SHerbert Xue <constructor name="Message" type="java.lang.String, java.lang.Throwable" 9567*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9568*dc5640d1SHerbert Xue deprecated="not deprecated"> 9569*dc5640d1SHerbert Xue <doc> 9570*dc5640d1SHerbert Xue <![CDATA[@since 4.0]]> 9571*dc5640d1SHerbert Xue </doc> 9572*dc5640d1SHerbert Xue </constructor> 9573*dc5640d1SHerbert Xue <constructor name="Message" type="java.lang.Object, java.lang.String" 9574*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9575*dc5640d1SHerbert Xue deprecated="not deprecated"> 9576*dc5640d1SHerbert Xue </constructor> 9577*dc5640d1SHerbert Xue <constructor name="Message" type="java.lang.String" 9578*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9579*dc5640d1SHerbert Xue deprecated="not deprecated"> 9580*dc5640d1SHerbert Xue </constructor> 9581*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.String" 9582*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9583*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9584*dc5640d1SHerbert Xue deprecated="not deprecated"> 9585*dc5640d1SHerbert Xue </method> 9586*dc5640d1SHerbert Xue <method name="getSources" return="java.util.List<java.lang.Object>" 9587*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9588*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9589*dc5640d1SHerbert Xue deprecated="not deprecated"> 9590*dc5640d1SHerbert Xue <doc> 9591*dc5640d1SHerbert Xue <![CDATA[@since 2.0]]> 9592*dc5640d1SHerbert Xue </doc> 9593*dc5640d1SHerbert Xue </method> 9594*dc5640d1SHerbert Xue <method name="getMessage" return="java.lang.String" 9595*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9596*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9597*dc5640d1SHerbert Xue deprecated="not deprecated"> 9598*dc5640d1SHerbert Xue <doc> 9599*dc5640d1SHerbert Xue <![CDATA[Gets the error message text.]]> 9600*dc5640d1SHerbert Xue </doc> 9601*dc5640d1SHerbert Xue </method> 9602*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 9603*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9604*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9605*dc5640d1SHerbert Xue deprecated="not deprecated"> 9606*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9607*dc5640d1SHerbert Xue <doc> 9608*dc5640d1SHerbert Xue <![CDATA[@since 2.0]]> 9609*dc5640d1SHerbert Xue </doc> 9610*dc5640d1SHerbert Xue </method> 9611*dc5640d1SHerbert Xue <method name="getCause" return="java.lang.Throwable" 9612*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9613*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9614*dc5640d1SHerbert Xue deprecated="not deprecated"> 9615*dc5640d1SHerbert Xue <doc> 9616*dc5640d1SHerbert Xue <![CDATA[Returns the throwable that caused this message, or {@code null} if this 9617*dc5640d1SHerbert Xue message was not caused by a throwable. 9618*dc5640d1SHerbert Xue 9619*dc5640d1SHerbert Xue @since 2.0]]> 9620*dc5640d1SHerbert Xue </doc> 9621*dc5640d1SHerbert Xue </method> 9622*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 9623*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9624*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9625*dc5640d1SHerbert Xue deprecated="not deprecated"> 9626*dc5640d1SHerbert Xue </method> 9627*dc5640d1SHerbert Xue <method name="hashCode" return="int" 9628*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9629*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9630*dc5640d1SHerbert Xue deprecated="not deprecated"> 9631*dc5640d1SHerbert Xue </method> 9632*dc5640d1SHerbert Xue <method name="equals" return="boolean" 9633*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9634*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9635*dc5640d1SHerbert Xue deprecated="not deprecated"> 9636*dc5640d1SHerbert Xue <param name="o" type="java.lang.Object"/> 9637*dc5640d1SHerbert Xue </method> 9638*dc5640d1SHerbert Xue <method name="applyTo" 9639*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9640*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9641*dc5640d1SHerbert Xue deprecated="not deprecated"> 9642*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 9643*dc5640d1SHerbert Xue <doc> 9644*dc5640d1SHerbert Xue <![CDATA[@since 2.0]]> 9645*dc5640d1SHerbert Xue </doc> 9646*dc5640d1SHerbert Xue </method> 9647*dc5640d1SHerbert Xue <doc> 9648*dc5640d1SHerbert Xue <![CDATA[An error message and the context in which it occured. Messages are usually created internally by 9649*dc5640d1SHerbert Xue Guice and its extensions. Messages can be created explicitly in a module using {@link 9650*dc5640d1SHerbert Xue com.google.inject.Binder#addError(Throwable) addError()} statements: 9651*dc5640d1SHerbert Xue <pre> 9652*dc5640d1SHerbert Xue try { 9653*dc5640d1SHerbert Xue bindPropertiesFromFile(); 9654*dc5640d1SHerbert Xue } catch (IOException e) { 9655*dc5640d1SHerbert Xue addError(e); 9656*dc5640d1SHerbert Xue }</pre> 9657*dc5640d1SHerbert Xue 9658*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 9659*dc5640d1SHerbert Xue </doc> 9660*dc5640d1SHerbert Xue </class> 9661*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.Message --> 9662*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.ModuleAnnotatedMethodScanner --> 9663*dc5640d1SHerbert Xue <class name="ModuleAnnotatedMethodScanner" extends="java.lang.Object" 9664*dc5640d1SHerbert Xue abstract="true" 9665*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9666*dc5640d1SHerbert Xue deprecated="not deprecated"> 9667*dc5640d1SHerbert Xue <constructor name="ModuleAnnotatedMethodScanner" 9668*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9669*dc5640d1SHerbert Xue deprecated="not deprecated"> 9670*dc5640d1SHerbert Xue </constructor> 9671*dc5640d1SHerbert Xue <method name="annotationClasses" return="java.util.Set<? extends java.lang.Class<? extends java.lang.annotation.Annotation>>" 9672*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 9673*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9674*dc5640d1SHerbert Xue deprecated="not deprecated"> 9675*dc5640d1SHerbert Xue <doc> 9676*dc5640d1SHerbert Xue <![CDATA[Returns the annotations this should scan for. Every method in the module that has one of these 9677*dc5640d1SHerbert Xue annotations will create a Provider binding, with the return value of the binding being what's 9678*dc5640d1SHerbert Xue provided and the parameters of the method being dependencies of the provider.]]> 9679*dc5640d1SHerbert Xue </doc> 9680*dc5640d1SHerbert Xue </method> 9681*dc5640d1SHerbert Xue <method name="prepareMethod" return="com.google.inject.Key<T>" 9682*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 9683*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9684*dc5640d1SHerbert Xue deprecated="not deprecated"> 9685*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 9686*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 9687*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 9688*dc5640d1SHerbert Xue <param name="injectionPoint" type="com.google.inject.spi.InjectionPoint"/> 9689*dc5640d1SHerbert Xue <doc> 9690*dc5640d1SHerbert Xue <![CDATA[Prepares a method for binding. This {@code key} parameter is the key discovered from looking at 9691*dc5640d1SHerbert Xue the binding annotation and return value of the method. Implementations can modify the key to 9692*dc5640d1SHerbert Xue instead bind to another key. For example, Multibinder may want to change 9693*dc5640d1SHerbert Xue {@code @SetProvides String provideFoo()} to bind into a unique Key within the multibinder 9694*dc5640d1SHerbert Xue instead of binding {@code String}. 9695*dc5640d1SHerbert Xue 9696*dc5640d1SHerbert Xue <p>The injection point and annotation are provided in case the implementation wants to set the 9697*dc5640d1SHerbert Xue key based on the property of the annotation or if any additional preparation is needed for any 9698*dc5640d1SHerbert Xue of the dependencies. The annotation is guaranteed to be an instance of one the classes returned 9699*dc5640d1SHerbert Xue by {@link #annotationClasses}.]]> 9700*dc5640d1SHerbert Xue </doc> 9701*dc5640d1SHerbert Xue </method> 9702*dc5640d1SHerbert Xue <doc> 9703*dc5640d1SHerbert Xue <![CDATA[Allows extensions to scan modules for annotated methods and bind those methods 9704*dc5640d1SHerbert Xue as providers, similar to {@code @Provides} methods. 9705*dc5640d1SHerbert Xue 9706*dc5640d1SHerbert Xue @since 4.0]]> 9707*dc5640d1SHerbert Xue </doc> 9708*dc5640d1SHerbert Xue </class> 9709*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.ModuleAnnotatedMethodScanner --> 9710*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.ModuleAnnotatedMethodScannerBinding --> 9711*dc5640d1SHerbert Xue <class name="ModuleAnnotatedMethodScannerBinding" extends="java.lang.Object" 9712*dc5640d1SHerbert Xue abstract="false" 9713*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 9714*dc5640d1SHerbert Xue deprecated="not deprecated"> 9715*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 9716*dc5640d1SHerbert Xue <constructor name="ModuleAnnotatedMethodScannerBinding" type="java.lang.Object, com.google.inject.spi.ModuleAnnotatedMethodScanner" 9717*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9718*dc5640d1SHerbert Xue deprecated="not deprecated"> 9719*dc5640d1SHerbert Xue </constructor> 9720*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 9721*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9722*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9723*dc5640d1SHerbert Xue deprecated="not deprecated"> 9724*dc5640d1SHerbert Xue </method> 9725*dc5640d1SHerbert Xue <method name="getScanner" return="com.google.inject.spi.ModuleAnnotatedMethodScanner" 9726*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9727*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9728*dc5640d1SHerbert Xue deprecated="not deprecated"> 9729*dc5640d1SHerbert Xue </method> 9730*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 9731*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9732*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9733*dc5640d1SHerbert Xue deprecated="not deprecated"> 9734*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9735*dc5640d1SHerbert Xue </method> 9736*dc5640d1SHerbert Xue <method name="applyTo" 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 <param name="binder" type="com.google.inject.Binder"/> 9741*dc5640d1SHerbert Xue </method> 9742*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 9743*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9744*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9745*dc5640d1SHerbert Xue deprecated="not deprecated"> 9746*dc5640d1SHerbert Xue </method> 9747*dc5640d1SHerbert Xue <doc> 9748*dc5640d1SHerbert Xue <![CDATA[Represents a call to {@link Binder#scanModulesForAnnotatedMethods} in a module. 9749*dc5640d1SHerbert Xue 9750*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 9751*dc5640d1SHerbert Xue @since 4.0]]> 9752*dc5640d1SHerbert Xue </doc> 9753*dc5640d1SHerbert Xue </class> 9754*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.ModuleAnnotatedMethodScannerBinding --> 9755*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.PrivateElements --> 9756*dc5640d1SHerbert Xue <interface name="PrivateElements" abstract="true" 9757*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9758*dc5640d1SHerbert Xue deprecated="not deprecated"> 9759*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 9760*dc5640d1SHerbert Xue <method name="getElements" return="java.util.List<com.google.inject.spi.Element>" 9761*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 9762*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9763*dc5640d1SHerbert Xue deprecated="not deprecated"> 9764*dc5640d1SHerbert Xue <doc> 9765*dc5640d1SHerbert Xue <![CDATA[Returns the configuration information in this private environment.]]> 9766*dc5640d1SHerbert Xue </doc> 9767*dc5640d1SHerbert Xue </method> 9768*dc5640d1SHerbert Xue <method name="getInjector" return="com.google.inject.Injector" 9769*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 9770*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9771*dc5640d1SHerbert Xue deprecated="not deprecated"> 9772*dc5640d1SHerbert Xue <doc> 9773*dc5640d1SHerbert Xue <![CDATA[Returns the child injector that hosts these private elements, or null if the elements haven't 9774*dc5640d1SHerbert Xue been used to create an injector.]]> 9775*dc5640d1SHerbert Xue </doc> 9776*dc5640d1SHerbert Xue </method> 9777*dc5640d1SHerbert Xue <method name="getExposedKeys" return="java.util.Set<com.google.inject.Key<?>>" 9778*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 9779*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9780*dc5640d1SHerbert Xue deprecated="not deprecated"> 9781*dc5640d1SHerbert Xue <doc> 9782*dc5640d1SHerbert Xue <![CDATA[Returns the unique exposed keys for these private elements.]]> 9783*dc5640d1SHerbert Xue </doc> 9784*dc5640d1SHerbert Xue </method> 9785*dc5640d1SHerbert Xue <method name="getExposedSource" return="java.lang.Object" 9786*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 9787*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9788*dc5640d1SHerbert Xue deprecated="not deprecated"> 9789*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<?>"/> 9790*dc5640d1SHerbert Xue <doc> 9791*dc5640d1SHerbert Xue <![CDATA[Returns an arbitrary object containing information about the "place" where this key was 9792*dc5640d1SHerbert Xue exposed. Used by Guice in the production of descriptive error messages. 9793*dc5640d1SHerbert Xue 9794*dc5640d1SHerbert Xue <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good 9795*dc5640d1SHerbert Xue example. Tools should simply call {@code toString()} on the source object if the type is 9796*dc5640d1SHerbert Xue unfamiliar. 9797*dc5640d1SHerbert Xue 9798*dc5640d1SHerbert Xue @param key one of the keys exposed by this module.]]> 9799*dc5640d1SHerbert Xue </doc> 9800*dc5640d1SHerbert Xue </method> 9801*dc5640d1SHerbert Xue <doc> 9802*dc5640d1SHerbert Xue <![CDATA[A private collection of elements that are hidden from the enclosing injector or module by 9803*dc5640d1SHerbert Xue default. See {@link com.google.inject.PrivateModule PrivateModule} for details. 9804*dc5640d1SHerbert Xue 9805*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 9806*dc5640d1SHerbert Xue @since 2.0]]> 9807*dc5640d1SHerbert Xue </doc> 9808*dc5640d1SHerbert Xue </interface> 9809*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.PrivateElements --> 9810*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ProviderBinding --> 9811*dc5640d1SHerbert Xue <interface name="ProviderBinding" abstract="true" 9812*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9813*dc5640d1SHerbert Xue deprecated="not deprecated"> 9814*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 9815*dc5640d1SHerbert Xue <method name="getProvidedKey" return="com.google.inject.Key<?>" 9816*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 9817*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9818*dc5640d1SHerbert Xue deprecated="not deprecated"> 9819*dc5640d1SHerbert Xue <doc> 9820*dc5640d1SHerbert Xue <![CDATA[Returns the key whose binding is used to {@link Provider#get provide instances}. That binding 9821*dc5640d1SHerbert Xue can be retrieved from an injector using {@link com.google.inject.Injector#getBinding(Key) 9822*dc5640d1SHerbert Xue Injector.getBinding(providedKey)}]]> 9823*dc5640d1SHerbert Xue </doc> 9824*dc5640d1SHerbert Xue </method> 9825*dc5640d1SHerbert Xue <doc> 9826*dc5640d1SHerbert Xue <![CDATA[A binding to a {@link Provider} that delegates to the binding for the provided type. This binding 9827*dc5640d1SHerbert Xue is used whenever a {@code Provider<T>} is injected (as opposed to injecting {@code T} directly). 9828*dc5640d1SHerbert Xue 9829*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 9830*dc5640d1SHerbert Xue @since 2.0]]> 9831*dc5640d1SHerbert Xue </doc> 9832*dc5640d1SHerbert Xue </interface> 9833*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ProviderBinding --> 9834*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ProviderInstanceBinding --> 9835*dc5640d1SHerbert Xue <interface name="ProviderInstanceBinding" abstract="true" 9836*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9837*dc5640d1SHerbert Xue deprecated="not deprecated"> 9838*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 9839*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 9840*dc5640d1SHerbert Xue <method name="getProviderInstance" return="com.google.inject.Provider<? extends T>" 9841*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 9842*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9843*dc5640d1SHerbert Xue deprecated="Use {@link #getUserSuppliedProvider} instead."> 9844*dc5640d1SHerbert Xue <doc> 9845*dc5640d1SHerbert Xue <![CDATA[If the user supplied a JSR330 binding, then this will wrap that one. To always return the 9846*dc5640d1SHerbert Xue user-supplied provider, use {@link #getUserSuppliedProvider}. 9847*dc5640d1SHerbert Xue 9848*dc5640d1SHerbert Xue @deprecated Use {@link #getUserSuppliedProvider} instead.]]> 9849*dc5640d1SHerbert Xue </doc> 9850*dc5640d1SHerbert Xue </method> 9851*dc5640d1SHerbert Xue <method name="getUserSuppliedProvider" return="javax.inject.Provider<? extends T>" 9852*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 9853*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9854*dc5640d1SHerbert Xue deprecated="not deprecated"> 9855*dc5640d1SHerbert Xue <doc> 9856*dc5640d1SHerbert Xue <![CDATA[Returns the user-supplied, unscoped provider. 9857*dc5640d1SHerbert Xue @since 4.0]]> 9858*dc5640d1SHerbert Xue </doc> 9859*dc5640d1SHerbert Xue </method> 9860*dc5640d1SHerbert Xue <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 9861*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 9862*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9863*dc5640d1SHerbert Xue deprecated="not deprecated"> 9864*dc5640d1SHerbert Xue <doc> 9865*dc5640d1SHerbert Xue <![CDATA[Returns the field and method injection points of the provider, injected at injector-creation 9866*dc5640d1SHerbert Xue time only. 9867*dc5640d1SHerbert Xue 9868*dc5640d1SHerbert Xue @return a possibly empty set]]> 9869*dc5640d1SHerbert Xue </doc> 9870*dc5640d1SHerbert Xue </method> 9871*dc5640d1SHerbert Xue <doc> 9872*dc5640d1SHerbert Xue <![CDATA[A binding to a provider instance. The provider's {@code get} method is invoked to resolve 9873*dc5640d1SHerbert Xue injections. 9874*dc5640d1SHerbert Xue 9875*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 9876*dc5640d1SHerbert Xue @since 2.0]]> 9877*dc5640d1SHerbert Xue </doc> 9878*dc5640d1SHerbert Xue </interface> 9879*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ProviderInstanceBinding --> 9880*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ProviderKeyBinding --> 9881*dc5640d1SHerbert Xue <interface name="ProviderKeyBinding" abstract="true" 9882*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9883*dc5640d1SHerbert Xue deprecated="not deprecated"> 9884*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 9885*dc5640d1SHerbert Xue <method name="getProviderKey" return="com.google.inject.Key<? extends javax.inject.Provider<? extends T>>" 9886*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 9887*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9888*dc5640d1SHerbert Xue deprecated="not deprecated"> 9889*dc5640d1SHerbert Xue <doc> 9890*dc5640d1SHerbert Xue <![CDATA[Returns the key used to resolve the provider's binding. That binding can be retrieved from an 9891*dc5640d1SHerbert Xue injector using {@link com.google.inject.Injector#getBinding(Key) 9892*dc5640d1SHerbert Xue Injector.getBinding(providerKey)}]]> 9893*dc5640d1SHerbert Xue </doc> 9894*dc5640d1SHerbert Xue </method> 9895*dc5640d1SHerbert Xue <doc> 9896*dc5640d1SHerbert Xue <![CDATA[A binding to a provider key. To resolve injections, the provider key is first resolved, then that 9897*dc5640d1SHerbert Xue provider's {@code get} method is invoked. 9898*dc5640d1SHerbert Xue 9899*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 9900*dc5640d1SHerbert Xue @since 2.0]]> 9901*dc5640d1SHerbert Xue </doc> 9902*dc5640d1SHerbert Xue </interface> 9903*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ProviderKeyBinding --> 9904*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.ProviderLookup --> 9905*dc5640d1SHerbert Xue <class name="ProviderLookup" extends="java.lang.Object" 9906*dc5640d1SHerbert Xue abstract="false" 9907*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 9908*dc5640d1SHerbert Xue deprecated="not deprecated"> 9909*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 9910*dc5640d1SHerbert Xue <constructor name="ProviderLookup" type="java.lang.Object, com.google.inject.Key<T>" 9911*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9912*dc5640d1SHerbert Xue deprecated="not deprecated"> 9913*dc5640d1SHerbert Xue </constructor> 9914*dc5640d1SHerbert Xue <constructor name="ProviderLookup" type="java.lang.Object, com.google.inject.spi.Dependency<T>" 9915*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9916*dc5640d1SHerbert Xue deprecated="not deprecated"> 9917*dc5640d1SHerbert Xue <doc> 9918*dc5640d1SHerbert Xue <![CDATA[@since 4.0]]> 9919*dc5640d1SHerbert Xue </doc> 9920*dc5640d1SHerbert Xue </constructor> 9921*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 9922*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9923*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9924*dc5640d1SHerbert Xue deprecated="not deprecated"> 9925*dc5640d1SHerbert Xue </method> 9926*dc5640d1SHerbert Xue <method name="getKey" return="com.google.inject.Key<T>" 9927*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9928*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9929*dc5640d1SHerbert Xue deprecated="not deprecated"> 9930*dc5640d1SHerbert Xue </method> 9931*dc5640d1SHerbert Xue <method name="getDependency" return="com.google.inject.spi.Dependency<T>" 9932*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9933*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9934*dc5640d1SHerbert Xue deprecated="not deprecated"> 9935*dc5640d1SHerbert Xue <doc> 9936*dc5640d1SHerbert Xue <![CDATA[@since 4.0]]> 9937*dc5640d1SHerbert Xue </doc> 9938*dc5640d1SHerbert Xue </method> 9939*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 9940*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9941*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9942*dc5640d1SHerbert Xue deprecated="not deprecated"> 9943*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 9944*dc5640d1SHerbert Xue </method> 9945*dc5640d1SHerbert Xue <method name="initializeDelegate" 9946*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9947*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9948*dc5640d1SHerbert Xue deprecated="not deprecated"> 9949*dc5640d1SHerbert Xue <param name="delegate" type="com.google.inject.Provider<T>"/> 9950*dc5640d1SHerbert Xue <doc> 9951*dc5640d1SHerbert Xue <![CDATA[Sets the actual provider. 9952*dc5640d1SHerbert Xue 9953*dc5640d1SHerbert Xue @throws IllegalStateException if the delegate is already set]]> 9954*dc5640d1SHerbert Xue </doc> 9955*dc5640d1SHerbert Xue </method> 9956*dc5640d1SHerbert Xue <method name="applyTo" 9957*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9958*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9959*dc5640d1SHerbert Xue deprecated="not deprecated"> 9960*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 9961*dc5640d1SHerbert Xue </method> 9962*dc5640d1SHerbert Xue <method name="getDelegate" return="com.google.inject.Provider<T>" 9963*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9964*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9965*dc5640d1SHerbert Xue deprecated="not deprecated"> 9966*dc5640d1SHerbert Xue <doc> 9967*dc5640d1SHerbert Xue <![CDATA[Returns the delegate provider, or {@code null} if it has not yet been initialized. The delegate 9968*dc5640d1SHerbert Xue will be initialized when this element is processed, or otherwise used to create an injector.]]> 9969*dc5640d1SHerbert Xue </doc> 9970*dc5640d1SHerbert Xue </method> 9971*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 9972*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 9973*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9974*dc5640d1SHerbert Xue deprecated="not deprecated"> 9975*dc5640d1SHerbert Xue <doc> 9976*dc5640d1SHerbert Xue <![CDATA[Returns the looked up provider. The result is not valid until this lookup has been initialized, 9977*dc5640d1SHerbert Xue which usually happens when the injector is created. The provider will throw an {@code 9978*dc5640d1SHerbert Xue IllegalStateException} if you try to use it beforehand.]]> 9979*dc5640d1SHerbert Xue </doc> 9980*dc5640d1SHerbert Xue </method> 9981*dc5640d1SHerbert Xue <doc> 9982*dc5640d1SHerbert Xue <![CDATA[A lookup of the provider for a type. Lookups are created explicitly in a module using 9983*dc5640d1SHerbert Xue {@link com.google.inject.Binder#getProvider(Class) getProvider()} statements: 9984*dc5640d1SHerbert Xue <pre> 9985*dc5640d1SHerbert Xue Provider<PaymentService> paymentServiceProvider 9986*dc5640d1SHerbert Xue = getProvider(PaymentService.class);</pre> 9987*dc5640d1SHerbert Xue 9988*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 9989*dc5640d1SHerbert Xue @since 2.0]]> 9990*dc5640d1SHerbert Xue </doc> 9991*dc5640d1SHerbert Xue </class> 9992*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.ProviderLookup --> 9993*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ProviderWithDependencies --> 9994*dc5640d1SHerbert Xue <interface name="ProviderWithDependencies" abstract="true" 9995*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 9996*dc5640d1SHerbert Xue deprecated="not deprecated"> 9997*dc5640d1SHerbert Xue <implements name="com.google.inject.Provider<T>"/> 9998*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 9999*dc5640d1SHerbert Xue <doc> 10000*dc5640d1SHerbert Xue <![CDATA[A provider with dependencies on other injected types. If a {@link Provider} has dependencies that 10001*dc5640d1SHerbert Xue aren't specified in injections, this interface should be used to expose all dependencies. 10002*dc5640d1SHerbert Xue 10003*dc5640d1SHerbert Xue @since 2.0]]> 10004*dc5640d1SHerbert Xue </doc> 10005*dc5640d1SHerbert Xue </interface> 10006*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ProviderWithDependencies --> 10007*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ProviderWithExtensionVisitor --> 10008*dc5640d1SHerbert Xue <interface name="ProviderWithExtensionVisitor" abstract="true" 10009*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10010*dc5640d1SHerbert Xue deprecated="not deprecated"> 10011*dc5640d1SHerbert Xue <implements name="com.google.inject.Provider<T>"/> 10012*dc5640d1SHerbert Xue <method name="acceptExtensionVisitor" return="V" 10013*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10014*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10015*dc5640d1SHerbert Xue deprecated="not deprecated"> 10016*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor<B, V>"/> 10017*dc5640d1SHerbert Xue <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding<? extends B>"/> 10018*dc5640d1SHerbert Xue <doc> 10019*dc5640d1SHerbert Xue <![CDATA[Instructs the extension determine if the visitor is an instance of a custom 10020*dc5640d1SHerbert Xue extension visitor, and if so, visit it using that method. If the visitor is 10021*dc5640d1SHerbert Xue not an instance of the custom extension visitor, this method <b>MUST</b> 10022*dc5640d1SHerbert Xue call visitor.visit(binding). 10023*dc5640d1SHerbert Xue <p> 10024*dc5640d1SHerbert Xue Due to issues with generics, the type parameters of this method do not 10025*dc5640d1SHerbert Xue relate to the type of the provider. In practice, the 'B' type will always 10026*dc5640d1SHerbert Xue be a supertype of 'T'.]]> 10027*dc5640d1SHerbert Xue </doc> 10028*dc5640d1SHerbert Xue </method> 10029*dc5640d1SHerbert Xue <doc> 10030*dc5640d1SHerbert Xue <![CDATA[A Provider that is part of an extension which supports a custom 10031*dc5640d1SHerbert Xue BindingTargetVisitor. 10032*dc5640d1SHerbert Xue <p> 10033*dc5640d1SHerbert Xue When an extension binds a provider instance, the provider can implement this 10034*dc5640d1SHerbert Xue interface to allow users using the 10035*dc5640d1SHerbert Xue {@link Binding#acceptTargetVisitor(BindingTargetVisitor)} method to visit a 10036*dc5640d1SHerbert Xue custom visitor designed for that extension. A typical implementation within 10037*dc5640d1SHerbert Xue the extension would look like 10038*dc5640d1SHerbert Xue <pre> 10039*dc5640d1SHerbert Xue <V, B> V acceptExtensionVisitor(BindingTargetVisitor<B, V> visitor, ProviderInstanceBinding<? extends B> binding) { 10040*dc5640d1SHerbert Xue if(visitor instanceof MyCustomExtensionVisitor) { 10041*dc5640d1SHerbert Xue return ((MyCustomExtensionVisitor<B, V>)visitor).visitCustomExtension(customProperties, binding); 10042*dc5640d1SHerbert Xue } else { 10043*dc5640d1SHerbert Xue return visitor.visit(binding); 10044*dc5640d1SHerbert Xue } 10045*dc5640d1SHerbert Xue }</pre> 10046*dc5640d1SHerbert Xue 'MyCustomExtensionVisitor' in the example above would be an interface the 10047*dc5640d1SHerbert Xue extension provides that users can implement in order to be notified of custom 10048*dc5640d1SHerbert Xue extension information. These visitor interfaces must extend from 10049*dc5640d1SHerbert Xue BindingTargetVisitor. 10050*dc5640d1SHerbert Xue 10051*dc5640d1SHerbert Xue @since 3.0 10052*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin)]]> 10053*dc5640d1SHerbert Xue </doc> 10054*dc5640d1SHerbert Xue </interface> 10055*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ProviderWithExtensionVisitor --> 10056*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ProvidesMethodBinding --> 10057*dc5640d1SHerbert Xue <interface name="ProvidesMethodBinding" abstract="true" 10058*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10059*dc5640d1SHerbert Xue deprecated="not deprecated"> 10060*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.HasDependencies"/> 10061*dc5640d1SHerbert Xue <method name="getMethod" return="java.lang.reflect.Method" 10062*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10063*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10064*dc5640d1SHerbert Xue deprecated="not deprecated"> 10065*dc5640d1SHerbert Xue <doc> 10066*dc5640d1SHerbert Xue <![CDATA[Returns the method this binding uses.]]> 10067*dc5640d1SHerbert Xue </doc> 10068*dc5640d1SHerbert Xue </method> 10069*dc5640d1SHerbert Xue <method name="getEnclosingInstance" return="java.lang.Object" 10070*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10071*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10072*dc5640d1SHerbert Xue deprecated="not deprecated"> 10073*dc5640d1SHerbert Xue <doc> 10074*dc5640d1SHerbert Xue <![CDATA[Returns the instance of the object the method is defined in.]]> 10075*dc5640d1SHerbert Xue </doc> 10076*dc5640d1SHerbert Xue </method> 10077*dc5640d1SHerbert Xue <method name="getKey" return="com.google.inject.Key<T>" 10078*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10079*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10080*dc5640d1SHerbert Xue deprecated="not deprecated"> 10081*dc5640d1SHerbert Xue <doc> 10082*dc5640d1SHerbert Xue <![CDATA[Returns the key of the binding.]]> 10083*dc5640d1SHerbert Xue </doc> 10084*dc5640d1SHerbert Xue </method> 10085*dc5640d1SHerbert Xue <method name="getAnnotation" return="java.lang.annotation.Annotation" 10086*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10087*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10088*dc5640d1SHerbert Xue deprecated="not deprecated"> 10089*dc5640d1SHerbert Xue <doc> 10090*dc5640d1SHerbert Xue <![CDATA[Returns the annotation that caused this binding to be created. For {@code @Provides} methods, 10091*dc5640d1SHerbert Xue this is an instance of the {@code @Provides} annotation. For bindings from 10092*dc5640d1SHerbert Xue {@link ModuleAnnotatedMethodScanner}, this is the annotation that caused the scanner to produce 10093*dc5640d1SHerbert Xue the binding.]]> 10094*dc5640d1SHerbert Xue </doc> 10095*dc5640d1SHerbert Xue </method> 10096*dc5640d1SHerbert Xue <doc> 10097*dc5640d1SHerbert Xue <![CDATA[An {@literal @}{@link Provides} binding or binding produced by a 10098*dc5640d1SHerbert Xue {@link ModuleAnnotatedMethodScanner}. 10099*dc5640d1SHerbert Xue 10100*dc5640d1SHerbert Xue @since 4.0 10101*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin)]]> 10102*dc5640d1SHerbert Xue </doc> 10103*dc5640d1SHerbert Xue </interface> 10104*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ProvidesMethodBinding --> 10105*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ProvidesMethodTargetVisitor --> 10106*dc5640d1SHerbert Xue <interface name="ProvidesMethodTargetVisitor" abstract="true" 10107*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10108*dc5640d1SHerbert Xue deprecated="not deprecated"> 10109*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.BindingTargetVisitor<T, V>"/> 10110*dc5640d1SHerbert Xue <method name="visit" return="V" 10111*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10112*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10113*dc5640d1SHerbert Xue deprecated="not deprecated"> 10114*dc5640d1SHerbert Xue <param name="providesMethodBinding" type="com.google.inject.spi.ProvidesMethodBinding<? extends T>"/> 10115*dc5640d1SHerbert Xue <doc> 10116*dc5640d1SHerbert Xue <![CDATA[Visits an {@link ProvidesMethodBinding} created with an {@literal @}{@link Provides} method.]]> 10117*dc5640d1SHerbert Xue </doc> 10118*dc5640d1SHerbert Xue </method> 10119*dc5640d1SHerbert Xue <doc> 10120*dc5640d1SHerbert Xue <![CDATA[A visitor for the {@literal @}{@link Provides} bindings. 10121*dc5640d1SHerbert Xue <p> 10122*dc5640d1SHerbert Xue If your {@link BindingTargetVisitor} implements this interface, bindings created by using 10123*dc5640d1SHerbert Xue {@code @Provides} will be visited through this interface. 10124*dc5640d1SHerbert Xue 10125*dc5640d1SHerbert Xue @since 4.0 10126*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin)]]> 10127*dc5640d1SHerbert Xue </doc> 10128*dc5640d1SHerbert Xue </interface> 10129*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ProvidesMethodTargetVisitor --> 10130*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.ProvisionListener --> 10131*dc5640d1SHerbert Xue <interface name="ProvisionListener" abstract="true" 10132*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10133*dc5640d1SHerbert Xue deprecated="not deprecated"> 10134*dc5640d1SHerbert Xue <method name="onProvision" 10135*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10136*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10137*dc5640d1SHerbert Xue deprecated="not deprecated"> 10138*dc5640d1SHerbert Xue <param name="provision" type="com.google.inject.spi.ProvisionListener.ProvisionInvocation<T>"/> 10139*dc5640d1SHerbert Xue <doc> 10140*dc5640d1SHerbert Xue <![CDATA[Invoked by Guice when an object requires provisioning. Provisioning occurs 10141*dc5640d1SHerbert Xue when Guice locates and injects the dependencies for a binding. For types 10142*dc5640d1SHerbert Xue bound to a Provider, provisioning encapsulates the {@link Provider#get} 10143*dc5640d1SHerbert Xue method. For toInstance or constant bindings, provisioning encapsulates 10144*dc5640d1SHerbert Xue the injecting of {@literal @}{@code Inject}ed fields or methods. 10145*dc5640d1SHerbert Xue For other types, provisioning encapsulates the construction of the 10146*dc5640d1SHerbert Xue object. If a type is bound within a {@link Scope}, provisioning depends on 10147*dc5640d1SHerbert Xue the scope. Types bound in Singleton scope will only be provisioned once. 10148*dc5640d1SHerbert Xue Types bound in no scope will be provisioned every time they are injected. 10149*dc5640d1SHerbert Xue Other scopes define their own behavior for provisioning. 10150*dc5640d1SHerbert Xue <p> 10151*dc5640d1SHerbert Xue To perform the provision, call {@link ProvisionInvocation#provision()}. 10152*dc5640d1SHerbert Xue If you do not explicitly call provision, it will be automatically done after 10153*dc5640d1SHerbert Xue this method returns. It is an error to call provision more than once.]]> 10154*dc5640d1SHerbert Xue </doc> 10155*dc5640d1SHerbert Xue </method> 10156*dc5640d1SHerbert Xue <doc> 10157*dc5640d1SHerbert Xue <![CDATA[Listens for provisioning of objects. Useful for gathering timing information 10158*dc5640d1SHerbert Xue about provisioning, post-provision initialization, and more. 10159*dc5640d1SHerbert Xue 10160*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 10161*dc5640d1SHerbert Xue @since 4.0]]> 10162*dc5640d1SHerbert Xue </doc> 10163*dc5640d1SHerbert Xue </interface> 10164*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.ProvisionListener --> 10165*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.ProvisionListener.ProvisionInvocation --> 10166*dc5640d1SHerbert Xue <class name="ProvisionListener.ProvisionInvocation" extends="java.lang.Object" 10167*dc5640d1SHerbert Xue abstract="true" 10168*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 10169*dc5640d1SHerbert Xue deprecated="not deprecated"> 10170*dc5640d1SHerbert Xue <constructor name="ProvisionInvocation" 10171*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10172*dc5640d1SHerbert Xue deprecated="not deprecated"> 10173*dc5640d1SHerbert Xue </constructor> 10174*dc5640d1SHerbert Xue <method name="getBinding" return="com.google.inject.Binding<T>" 10175*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10176*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10177*dc5640d1SHerbert Xue deprecated="not deprecated"> 10178*dc5640d1SHerbert Xue <doc> 10179*dc5640d1SHerbert Xue <![CDATA[Returns the Binding this is provisioning. 10180*dc5640d1SHerbert Xue <p> 10181*dc5640d1SHerbert Xue You must not call {@link Provider#get()} on the provider returned by 10182*dc5640d1SHerbert Xue {@link Binding#getProvider}, otherwise you will get confusing error messages.]]> 10183*dc5640d1SHerbert Xue </doc> 10184*dc5640d1SHerbert Xue </method> 10185*dc5640d1SHerbert Xue <method name="provision" return="T" 10186*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10187*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10188*dc5640d1SHerbert Xue deprecated="not deprecated"> 10189*dc5640d1SHerbert Xue <doc> 10190*dc5640d1SHerbert Xue <![CDATA[Performs the provision, returning the object provisioned.]]> 10191*dc5640d1SHerbert Xue </doc> 10192*dc5640d1SHerbert Xue </method> 10193*dc5640d1SHerbert Xue <method name="getDependencyChain" return="java.util.List<com.google.inject.spi.DependencyAndSource>" 10194*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10195*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10196*dc5640d1SHerbert Xue deprecated="not deprecated"> 10197*dc5640d1SHerbert Xue <doc> 10198*dc5640d1SHerbert Xue <![CDATA[Returns the dependency chain that led to this object being provisioned.]]> 10199*dc5640d1SHerbert Xue </doc> 10200*dc5640d1SHerbert Xue </method> 10201*dc5640d1SHerbert Xue <doc> 10202*dc5640d1SHerbert Xue <![CDATA[Encapsulates a single act of provisioning. 10203*dc5640d1SHerbert Xue 10204*dc5640d1SHerbert Xue @since 4.0]]> 10205*dc5640d1SHerbert Xue </doc> 10206*dc5640d1SHerbert Xue </class> 10207*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.ProvisionListener.ProvisionInvocation --> 10208*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.ProvisionListenerBinding --> 10209*dc5640d1SHerbert Xue <class name="ProvisionListenerBinding" extends="java.lang.Object" 10210*dc5640d1SHerbert Xue abstract="false" 10211*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 10212*dc5640d1SHerbert Xue deprecated="not deprecated"> 10213*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 10214*dc5640d1SHerbert Xue <method name="getListeners" return="java.util.List<com.google.inject.spi.ProvisionListener>" 10215*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10216*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10217*dc5640d1SHerbert Xue deprecated="not deprecated"> 10218*dc5640d1SHerbert Xue <doc> 10219*dc5640d1SHerbert Xue <![CDATA[Returns the registered listeners.]]> 10220*dc5640d1SHerbert Xue </doc> 10221*dc5640d1SHerbert Xue </method> 10222*dc5640d1SHerbert Xue <method name="getBindingMatcher" return="com.google.inject.matcher.Matcher<? super com.google.inject.Binding<?>>" 10223*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10224*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10225*dc5640d1SHerbert Xue deprecated="not deprecated"> 10226*dc5640d1SHerbert Xue <doc> 10227*dc5640d1SHerbert Xue <![CDATA[Returns the binding matcher which chooses which bindings the listener should be notified of.]]> 10228*dc5640d1SHerbert Xue </doc> 10229*dc5640d1SHerbert Xue </method> 10230*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 10231*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10232*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10233*dc5640d1SHerbert Xue deprecated="not deprecated"> 10234*dc5640d1SHerbert Xue </method> 10235*dc5640d1SHerbert Xue <method name="acceptVisitor" return="R" 10236*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10237*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10238*dc5640d1SHerbert Xue deprecated="not deprecated"> 10239*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<R>"/> 10240*dc5640d1SHerbert Xue </method> 10241*dc5640d1SHerbert Xue <method name="applyTo" 10242*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10243*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10244*dc5640d1SHerbert Xue deprecated="not deprecated"> 10245*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 10246*dc5640d1SHerbert Xue </method> 10247*dc5640d1SHerbert Xue <doc> 10248*dc5640d1SHerbert Xue <![CDATA[Binds keys (picked using a Matcher) to a provision listener. Listeners are created explicitly in 10249*dc5640d1SHerbert Xue a module using {@link Binder#bindListener(Matcher, ProvisionListener...)} statements: 10250*dc5640d1SHerbert Xue 10251*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 10252*dc5640d1SHerbert Xue @since 4.0]]> 10253*dc5640d1SHerbert Xue </doc> 10254*dc5640d1SHerbert Xue </class> 10255*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.ProvisionListenerBinding --> 10256*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.RequireAtInjectOnConstructorsOption --> 10257*dc5640d1SHerbert Xue <class name="RequireAtInjectOnConstructorsOption" extends="java.lang.Object" 10258*dc5640d1SHerbert Xue abstract="false" 10259*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 10260*dc5640d1SHerbert Xue deprecated="not deprecated"> 10261*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 10262*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 10263*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10264*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10265*dc5640d1SHerbert Xue deprecated="not deprecated"> 10266*dc5640d1SHerbert Xue </method> 10267*dc5640d1SHerbert Xue <method name="applyTo" 10268*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10269*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10270*dc5640d1SHerbert Xue deprecated="not deprecated"> 10271*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 10272*dc5640d1SHerbert Xue </method> 10273*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 10274*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10275*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10276*dc5640d1SHerbert Xue deprecated="not deprecated"> 10277*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10278*dc5640d1SHerbert Xue </method> 10279*dc5640d1SHerbert Xue <doc> 10280*dc5640d1SHerbert Xue <![CDATA[A request to require explicit {@literal @}{@link Inject} annotations on constructors. 10281*dc5640d1SHerbert Xue 10282*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 10283*dc5640d1SHerbert Xue @since 4.0]]> 10284*dc5640d1SHerbert Xue </doc> 10285*dc5640d1SHerbert Xue </class> 10286*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.RequireAtInjectOnConstructorsOption --> 10287*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.RequireExactBindingAnnotationsOption --> 10288*dc5640d1SHerbert Xue <class name="RequireExactBindingAnnotationsOption" extends="java.lang.Object" 10289*dc5640d1SHerbert Xue abstract="false" 10290*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 10291*dc5640d1SHerbert Xue deprecated="not deprecated"> 10292*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 10293*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 10294*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10295*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10296*dc5640d1SHerbert Xue deprecated="not deprecated"> 10297*dc5640d1SHerbert Xue </method> 10298*dc5640d1SHerbert Xue <method name="applyTo" 10299*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10300*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10301*dc5640d1SHerbert Xue deprecated="not deprecated"> 10302*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 10303*dc5640d1SHerbert Xue </method> 10304*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 10305*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10306*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10307*dc5640d1SHerbert Xue deprecated="not deprecated"> 10308*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10309*dc5640d1SHerbert Xue </method> 10310*dc5640d1SHerbert Xue <doc> 10311*dc5640d1SHerbert Xue <![CDATA[A request to require exact binding annotations. 10312*dc5640d1SHerbert Xue 10313*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 10314*dc5640d1SHerbert Xue @since 4.0]]> 10315*dc5640d1SHerbert Xue </doc> 10316*dc5640d1SHerbert Xue </class> 10317*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.RequireExactBindingAnnotationsOption --> 10318*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.RequireExplicitBindingsOption --> 10319*dc5640d1SHerbert Xue <class name="RequireExplicitBindingsOption" extends="java.lang.Object" 10320*dc5640d1SHerbert Xue abstract="false" 10321*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 10322*dc5640d1SHerbert Xue deprecated="not deprecated"> 10323*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 10324*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 10325*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10326*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10327*dc5640d1SHerbert Xue deprecated="not deprecated"> 10328*dc5640d1SHerbert Xue </method> 10329*dc5640d1SHerbert Xue <method name="applyTo" 10330*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10331*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10332*dc5640d1SHerbert Xue deprecated="not deprecated"> 10333*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 10334*dc5640d1SHerbert Xue </method> 10335*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 10336*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10337*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10338*dc5640d1SHerbert Xue deprecated="not deprecated"> 10339*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10340*dc5640d1SHerbert Xue </method> 10341*dc5640d1SHerbert Xue <doc> 10342*dc5640d1SHerbert Xue <![CDATA[A request to require explicit bindings. 10343*dc5640d1SHerbert Xue 10344*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 10345*dc5640d1SHerbert Xue @since 3.0]]> 10346*dc5640d1SHerbert Xue </doc> 10347*dc5640d1SHerbert Xue </class> 10348*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.RequireExplicitBindingsOption --> 10349*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.ScopeBinding --> 10350*dc5640d1SHerbert Xue <class name="ScopeBinding" extends="java.lang.Object" 10351*dc5640d1SHerbert Xue abstract="false" 10352*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 10353*dc5640d1SHerbert Xue deprecated="not deprecated"> 10354*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 10355*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 10356*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10357*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10358*dc5640d1SHerbert Xue deprecated="not deprecated"> 10359*dc5640d1SHerbert Xue </method> 10360*dc5640d1SHerbert Xue <method name="getAnnotationType" return="java.lang.Class<? extends java.lang.annotation.Annotation>" 10361*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10362*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10363*dc5640d1SHerbert Xue deprecated="not deprecated"> 10364*dc5640d1SHerbert Xue </method> 10365*dc5640d1SHerbert Xue <method name="getScope" return="com.google.inject.Scope" 10366*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10367*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10368*dc5640d1SHerbert Xue deprecated="not deprecated"> 10369*dc5640d1SHerbert Xue </method> 10370*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 10371*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10372*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10373*dc5640d1SHerbert Xue deprecated="not deprecated"> 10374*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10375*dc5640d1SHerbert Xue </method> 10376*dc5640d1SHerbert Xue <method name="applyTo" 10377*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10378*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10379*dc5640d1SHerbert Xue deprecated="not deprecated"> 10380*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 10381*dc5640d1SHerbert Xue </method> 10382*dc5640d1SHerbert Xue <doc> 10383*dc5640d1SHerbert Xue <![CDATA[Registration of a scope annotation with the scope that implements it. Instances are created 10384*dc5640d1SHerbert Xue explicitly in a module using {@link com.google.inject.Binder#bindScope(Class, Scope) bindScope()} 10385*dc5640d1SHerbert Xue statements: 10386*dc5640d1SHerbert Xue <pre> 10387*dc5640d1SHerbert Xue Scope recordScope = new RecordScope(); 10388*dc5640d1SHerbert Xue bindScope(RecordScoped.class, new RecordScope());</pre> 10389*dc5640d1SHerbert Xue 10390*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 10391*dc5640d1SHerbert Xue @since 2.0]]> 10392*dc5640d1SHerbert Xue </doc> 10393*dc5640d1SHerbert Xue </class> 10394*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.ScopeBinding --> 10395*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.StaticInjectionRequest --> 10396*dc5640d1SHerbert Xue <class name="StaticInjectionRequest" extends="java.lang.Object" 10397*dc5640d1SHerbert Xue abstract="false" 10398*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 10399*dc5640d1SHerbert Xue deprecated="not deprecated"> 10400*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 10401*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 10402*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10403*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10404*dc5640d1SHerbert Xue deprecated="not deprecated"> 10405*dc5640d1SHerbert Xue </method> 10406*dc5640d1SHerbert Xue <method name="getType" return="java.lang.Class<?>" 10407*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10408*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10409*dc5640d1SHerbert Xue deprecated="not deprecated"> 10410*dc5640d1SHerbert Xue </method> 10411*dc5640d1SHerbert Xue <method name="getInjectionPoints" return="java.util.Set<com.google.inject.spi.InjectionPoint>" 10412*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10413*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10414*dc5640d1SHerbert Xue deprecated="not deprecated"> 10415*dc5640d1SHerbert Xue <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/> 10416*dc5640d1SHerbert Xue <doc> 10417*dc5640d1SHerbert Xue <![CDATA[Returns the static methods and fields of {@code type} that will be injected to fulfill this 10418*dc5640d1SHerbert Xue request. 10419*dc5640d1SHerbert Xue 10420*dc5640d1SHerbert Xue @return a possibly empty set of injection points. The set has a specified iteration order. All 10421*dc5640d1SHerbert Xue fields are returned and then all methods. Within the fields, supertype fields are returned 10422*dc5640d1SHerbert Xue before subtype fields. Similarly, supertype methods are returned before subtype methods. 10423*dc5640d1SHerbert Xue @throws ConfigurationException if there is a malformed injection point on {@code type}, such as 10424*dc5640d1SHerbert Xue a field with multiple binding annotations. The exception's {@link 10425*dc5640d1SHerbert Xue ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>} 10426*dc5640d1SHerbert Xue of the valid injection points.]]> 10427*dc5640d1SHerbert Xue </doc> 10428*dc5640d1SHerbert Xue </method> 10429*dc5640d1SHerbert Xue <method name="applyTo" 10430*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10431*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10432*dc5640d1SHerbert Xue deprecated="not deprecated"> 10433*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 10434*dc5640d1SHerbert Xue </method> 10435*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 10436*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10437*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10438*dc5640d1SHerbert Xue deprecated="not deprecated"> 10439*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10440*dc5640d1SHerbert Xue </method> 10441*dc5640d1SHerbert Xue <doc> 10442*dc5640d1SHerbert Xue <![CDATA[A request to inject the static fields and methods of a type. Requests are created 10443*dc5640d1SHerbert Xue explicitly in a module using {@link com.google.inject.Binder#requestStaticInjection(Class[]) 10444*dc5640d1SHerbert Xue requestStaticInjection()} statements: 10445*dc5640d1SHerbert Xue <pre> 10446*dc5640d1SHerbert Xue requestStaticInjection(MyLegacyService.class);</pre> 10447*dc5640d1SHerbert Xue 10448*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 10449*dc5640d1SHerbert Xue @since 2.0]]> 10450*dc5640d1SHerbert Xue </doc> 10451*dc5640d1SHerbert Xue </class> 10452*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.StaticInjectionRequest --> 10453*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.Toolable --> 10454*dc5640d1SHerbert Xue <class name="Toolable" abstract="true" 10455*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10456*dc5640d1SHerbert Xue deprecated="not deprecated"> 10457*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 10458*dc5640d1SHerbert Xue <doc> 10459*dc5640d1SHerbert Xue <![CDATA[Instructs an {@link Injector} running in {@link Stage#TOOL} that a method should be injected. 10460*dc5640d1SHerbert Xue This is typically useful for for extensions to Guice that perform additional validation in an 10461*dc5640d1SHerbert Xue injected method or field. This only applies to objects that are already constructed when 10462*dc5640d1SHerbert Xue bindings are created (ie., something bound using {@link 10463*dc5640d1SHerbert Xue com.google.inject.binder.LinkedBindingBuilder#toProvider toProvider}, {@link 10464*dc5640d1SHerbert Xue com.google.inject.binder.LinkedBindingBuilder#toInstance toInstance}, or {@link 10465*dc5640d1SHerbert Xue com.google.inject.Binder#requestInjection requestInjection}. 10466*dc5640d1SHerbert Xue 10467*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 10468*dc5640d1SHerbert Xue @since 3.0]]> 10469*dc5640d1SHerbert Xue </doc> 10470*dc5640d1SHerbert Xue </class> 10471*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.Toolable --> 10472*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.TypeConverter --> 10473*dc5640d1SHerbert Xue <interface name="TypeConverter" abstract="true" 10474*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10475*dc5640d1SHerbert Xue deprecated="not deprecated"> 10476*dc5640d1SHerbert Xue <method name="convert" return="java.lang.Object" 10477*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10478*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10479*dc5640d1SHerbert Xue deprecated="not deprecated"> 10480*dc5640d1SHerbert Xue <param name="value" type="java.lang.String"/> 10481*dc5640d1SHerbert Xue <param name="toType" type="com.google.inject.TypeLiteral<?>"/> 10482*dc5640d1SHerbert Xue <doc> 10483*dc5640d1SHerbert Xue <![CDATA[Converts a string value. Throws an exception if a conversion error occurs.]]> 10484*dc5640d1SHerbert Xue </doc> 10485*dc5640d1SHerbert Xue </method> 10486*dc5640d1SHerbert Xue <doc> 10487*dc5640d1SHerbert Xue <![CDATA[Converts constant string values to a different type. 10488*dc5640d1SHerbert Xue 10489*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 10490*dc5640d1SHerbert Xue @since 2.0]]> 10491*dc5640d1SHerbert Xue </doc> 10492*dc5640d1SHerbert Xue </interface> 10493*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.TypeConverter --> 10494*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.TypeConverterBinding --> 10495*dc5640d1SHerbert Xue <class name="TypeConverterBinding" extends="java.lang.Object" 10496*dc5640d1SHerbert Xue abstract="false" 10497*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 10498*dc5640d1SHerbert Xue deprecated="not deprecated"> 10499*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 10500*dc5640d1SHerbert Xue <constructor name="TypeConverterBinding" type="java.lang.Object, com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>, com.google.inject.spi.TypeConverter" 10501*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10502*dc5640d1SHerbert Xue deprecated="not deprecated"> 10503*dc5640d1SHerbert Xue <doc> 10504*dc5640d1SHerbert Xue <![CDATA[@since 3.0]]> 10505*dc5640d1SHerbert Xue </doc> 10506*dc5640d1SHerbert Xue </constructor> 10507*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 10508*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10509*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10510*dc5640d1SHerbert Xue deprecated="not deprecated"> 10511*dc5640d1SHerbert Xue </method> 10512*dc5640d1SHerbert Xue <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>" 10513*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10514*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10515*dc5640d1SHerbert Xue deprecated="not deprecated"> 10516*dc5640d1SHerbert Xue </method> 10517*dc5640d1SHerbert Xue <method name="getTypeConverter" return="com.google.inject.spi.TypeConverter" 10518*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10519*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10520*dc5640d1SHerbert Xue deprecated="not deprecated"> 10521*dc5640d1SHerbert Xue </method> 10522*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 10523*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10524*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10525*dc5640d1SHerbert Xue deprecated="not deprecated"> 10526*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10527*dc5640d1SHerbert Xue </method> 10528*dc5640d1SHerbert Xue <method name="applyTo" 10529*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10530*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10531*dc5640d1SHerbert Xue deprecated="not deprecated"> 10532*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 10533*dc5640d1SHerbert Xue </method> 10534*dc5640d1SHerbert Xue <method name="toString" return="java.lang.String" 10535*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10536*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10537*dc5640d1SHerbert Xue deprecated="not deprecated"> 10538*dc5640d1SHerbert Xue </method> 10539*dc5640d1SHerbert Xue <doc> 10540*dc5640d1SHerbert Xue <![CDATA[Registration of type converters for matching target types. Instances are created 10541*dc5640d1SHerbert Xue explicitly in a module using {@link com.google.inject.Binder#convertToTypes(Matcher, 10542*dc5640d1SHerbert Xue TypeConverter) convertToTypes()} statements: 10543*dc5640d1SHerbert Xue <pre> 10544*dc5640d1SHerbert Xue convertToTypes(Matchers.only(TypeLiteral.get(DateTime.class)), new DateTimeConverter());</pre> 10545*dc5640d1SHerbert Xue 10546*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 10547*dc5640d1SHerbert Xue @since 2.0]]> 10548*dc5640d1SHerbert Xue </doc> 10549*dc5640d1SHerbert Xue </class> 10550*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.TypeConverterBinding --> 10551*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.TypeEncounter --> 10552*dc5640d1SHerbert Xue <interface name="TypeEncounter" abstract="true" 10553*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10554*dc5640d1SHerbert Xue deprecated="not deprecated"> 10555*dc5640d1SHerbert Xue <method name="addError" 10556*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10557*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10558*dc5640d1SHerbert Xue deprecated="not deprecated"> 10559*dc5640d1SHerbert Xue <param name="message" type="java.lang.String"/> 10560*dc5640d1SHerbert Xue <param name="arguments" type="java.lang.Object[]"/> 10561*dc5640d1SHerbert Xue <doc> 10562*dc5640d1SHerbert Xue <![CDATA[Records an error message for type {@code I} which will be presented to the user at a later 10563*dc5640d1SHerbert Xue time. Unlike throwing an exception, this enable us to continue configuring the Injector and 10564*dc5640d1SHerbert Xue discover more errors. Uses {@link String#format(String, Object[])} to insert the arguments 10565*dc5640d1SHerbert Xue into the message.]]> 10566*dc5640d1SHerbert Xue </doc> 10567*dc5640d1SHerbert Xue </method> 10568*dc5640d1SHerbert Xue <method name="addError" 10569*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10570*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10571*dc5640d1SHerbert Xue deprecated="not deprecated"> 10572*dc5640d1SHerbert Xue <param name="t" type="java.lang.Throwable"/> 10573*dc5640d1SHerbert Xue <doc> 10574*dc5640d1SHerbert Xue <![CDATA[Records an exception for type {@code I}, the full details of which will be logged, and the 10575*dc5640d1SHerbert Xue message of which will be presented to the user at a later time. If your type listener calls 10576*dc5640d1SHerbert Xue something that you worry may fail, you should catch the exception and pass it to this method.]]> 10577*dc5640d1SHerbert Xue </doc> 10578*dc5640d1SHerbert Xue </method> 10579*dc5640d1SHerbert Xue <method name="addError" 10580*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10581*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10582*dc5640d1SHerbert Xue deprecated="not deprecated"> 10583*dc5640d1SHerbert Xue <param name="message" type="com.google.inject.spi.Message"/> 10584*dc5640d1SHerbert Xue <doc> 10585*dc5640d1SHerbert Xue <![CDATA[Records an error message to be presented to the user at a later time.]]> 10586*dc5640d1SHerbert Xue </doc> 10587*dc5640d1SHerbert Xue </method> 10588*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 10589*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10590*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10591*dc5640d1SHerbert Xue deprecated="not deprecated"> 10592*dc5640d1SHerbert Xue <param name="key" type="com.google.inject.Key<T>"/> 10593*dc5640d1SHerbert Xue <doc> 10594*dc5640d1SHerbert Xue <![CDATA[Returns the provider used to obtain instances for the given injection key. The returned 10595*dc5640d1SHerbert Xue provider will not be valid until the injector has been created. The provider will throw an 10596*dc5640d1SHerbert Xue {@code IllegalStateException} if you try to use it beforehand.]]> 10597*dc5640d1SHerbert Xue </doc> 10598*dc5640d1SHerbert Xue </method> 10599*dc5640d1SHerbert Xue <method name="getProvider" return="com.google.inject.Provider<T>" 10600*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10601*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10602*dc5640d1SHerbert Xue deprecated="not deprecated"> 10603*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 10604*dc5640d1SHerbert Xue <doc> 10605*dc5640d1SHerbert Xue <![CDATA[Returns the provider used to obtain instances for the given injection type. The returned 10606*dc5640d1SHerbert Xue provider will not be valid until the injector has been created. The provider will throw an 10607*dc5640d1SHerbert Xue {@code IllegalStateException} if you try to use it beforehand.]]> 10608*dc5640d1SHerbert Xue </doc> 10609*dc5640d1SHerbert Xue </method> 10610*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 10611*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10612*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10613*dc5640d1SHerbert Xue deprecated="not deprecated"> 10614*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 10615*dc5640d1SHerbert Xue <doc> 10616*dc5640d1SHerbert Xue <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 10617*dc5640d1SHerbert Xue of the given type {@code T}. The returned members injector will not be valid until the main 10618*dc5640d1SHerbert Xue injector has been created. The members injector will throw an {@code IllegalStateException} 10619*dc5640d1SHerbert Xue if you try to use it beforehand. 10620*dc5640d1SHerbert Xue 10621*dc5640d1SHerbert Xue @param typeLiteral type to get members injector for]]> 10622*dc5640d1SHerbert Xue </doc> 10623*dc5640d1SHerbert Xue </method> 10624*dc5640d1SHerbert Xue <method name="getMembersInjector" return="com.google.inject.MembersInjector<T>" 10625*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10626*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10627*dc5640d1SHerbert Xue deprecated="not deprecated"> 10628*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 10629*dc5640d1SHerbert Xue <doc> 10630*dc5640d1SHerbert Xue <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances 10631*dc5640d1SHerbert Xue of the given type {@code T}. The returned members injector will not be valid until the main 10632*dc5640d1SHerbert Xue injector has been created. The members injector will throw an {@code IllegalStateException} 10633*dc5640d1SHerbert Xue if you try to use it beforehand. 10634*dc5640d1SHerbert Xue 10635*dc5640d1SHerbert Xue @param type type to get members injector for]]> 10636*dc5640d1SHerbert Xue </doc> 10637*dc5640d1SHerbert Xue </method> 10638*dc5640d1SHerbert Xue <method name="register" 10639*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10640*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10641*dc5640d1SHerbert Xue deprecated="not deprecated"> 10642*dc5640d1SHerbert Xue <param name="membersInjector" type="com.google.inject.MembersInjector<? super I>"/> 10643*dc5640d1SHerbert Xue <doc> 10644*dc5640d1SHerbert Xue <![CDATA[Registers a members injector for type {@code I}. Guice will use the members injector after its 10645*dc5640d1SHerbert Xue performed its own injections on an instance of {@code I}.]]> 10646*dc5640d1SHerbert Xue </doc> 10647*dc5640d1SHerbert Xue </method> 10648*dc5640d1SHerbert Xue <method name="register" 10649*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10650*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10651*dc5640d1SHerbert Xue deprecated="not deprecated"> 10652*dc5640d1SHerbert Xue <param name="listener" type="com.google.inject.spi.InjectionListener<? super I>"/> 10653*dc5640d1SHerbert Xue <doc> 10654*dc5640d1SHerbert Xue <![CDATA[Registers an injection listener for type {@code I}. Guice will notify the listener after all 10655*dc5640d1SHerbert Xue injections have been performed on an instance of {@code I}.]]> 10656*dc5640d1SHerbert Xue </doc> 10657*dc5640d1SHerbert Xue </method> 10658*dc5640d1SHerbert Xue <method name="bindInterceptor" 10659*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10660*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10661*dc5640d1SHerbert Xue deprecated="not deprecated"> 10662*dc5640d1SHerbert Xue <param name="methodMatcher" type="com.google.inject.matcher.Matcher<? super java.lang.reflect.Method>"/> 10663*dc5640d1SHerbert Xue <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/> 10664*dc5640d1SHerbert Xue <doc> 10665*dc5640d1SHerbert Xue <![CDATA[Binds method interceptor[s] to methods matched in type {@code I} and its supertypes. A 10666*dc5640d1SHerbert Xue method is eligible for interception if: 10667*dc5640d1SHerbert Xue 10668*dc5640d1SHerbert Xue <ul> 10669*dc5640d1SHerbert Xue <li>Guice created the instance the method is on</li> 10670*dc5640d1SHerbert Xue <li>Neither the enclosing type nor the method is final</li> 10671*dc5640d1SHerbert Xue <li>And the method is package-private or more accessible</li> 10672*dc5640d1SHerbert Xue </ul> 10673*dc5640d1SHerbert Xue 10674*dc5640d1SHerbert Xue @param methodMatcher matches methods the interceptor should apply to. For 10675*dc5640d1SHerbert Xue example: {@code annotatedWith(Transactional.class)}. 10676*dc5640d1SHerbert Xue @param interceptors to bind]]> 10677*dc5640d1SHerbert Xue </doc> 10678*dc5640d1SHerbert Xue </method> 10679*dc5640d1SHerbert Xue <doc> 10680*dc5640d1SHerbert Xue <![CDATA[Context of an injectable type encounter. Enables reporting errors, registering injection 10681*dc5640d1SHerbert Xue listeners and binding method interceptors for injectable type {@code I}. It is an error to use 10682*dc5640d1SHerbert Xue an encounter after the {@link TypeListener#hear(TypeLiteral, TypeEncounter) hear()} method has 10683*dc5640d1SHerbert Xue returned. 10684*dc5640d1SHerbert Xue 10685*dc5640d1SHerbert Xue @param <I> the injectable type encountered 10686*dc5640d1SHerbert Xue @since 2.0]]> 10687*dc5640d1SHerbert Xue </doc> 10688*dc5640d1SHerbert Xue </interface> 10689*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.TypeEncounter --> 10690*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.TypeListener --> 10691*dc5640d1SHerbert Xue <interface name="TypeListener" abstract="true" 10692*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10693*dc5640d1SHerbert Xue deprecated="not deprecated"> 10694*dc5640d1SHerbert Xue <method name="hear" 10695*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 10696*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10697*dc5640d1SHerbert Xue deprecated="not deprecated"> 10698*dc5640d1SHerbert Xue <param name="type" type="com.google.inject.TypeLiteral<I>"/> 10699*dc5640d1SHerbert Xue <param name="encounter" type="com.google.inject.spi.TypeEncounter<I>"/> 10700*dc5640d1SHerbert Xue <doc> 10701*dc5640d1SHerbert Xue <![CDATA[Invoked when Guice encounters a new type eligible for constructor or members injection. 10702*dc5640d1SHerbert Xue Called during injector creation (or afterwords if Guice encounters a type at run time and 10703*dc5640d1SHerbert Xue creates a JIT binding). 10704*dc5640d1SHerbert Xue 10705*dc5640d1SHerbert Xue @param type encountered by Guice 10706*dc5640d1SHerbert Xue @param encounter context of this encounter, enables reporting errors, registering injection 10707*dc5640d1SHerbert Xue listeners and binding method interceptors for {@code type}. 10708*dc5640d1SHerbert Xue 10709*dc5640d1SHerbert Xue @param <I> the injectable type]]> 10710*dc5640d1SHerbert Xue </doc> 10711*dc5640d1SHerbert Xue </method> 10712*dc5640d1SHerbert Xue <doc> 10713*dc5640d1SHerbert Xue <![CDATA[Listens for Guice to encounter injectable types. If a given type has its constructor injected in 10714*dc5640d1SHerbert Xue one situation but only its methods and fields injected in another, Guice will notify this 10715*dc5640d1SHerbert Xue listener once. 10716*dc5640d1SHerbert Xue 10717*dc5640d1SHerbert Xue <p>Useful for extra type checking, {@linkplain TypeEncounter#register(InjectionListener) 10718*dc5640d1SHerbert Xue registering injection listeners}, and {@linkplain TypeEncounter#bindInterceptor( 10719*dc5640d1SHerbert Xue com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[]) 10720*dc5640d1SHerbert Xue binding method interceptors}. 10721*dc5640d1SHerbert Xue 10722*dc5640d1SHerbert Xue @since 2.0]]> 10723*dc5640d1SHerbert Xue </doc> 10724*dc5640d1SHerbert Xue </interface> 10725*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.TypeListener --> 10726*dc5640d1SHerbert Xue <!-- start class com.google.inject.spi.TypeListenerBinding --> 10727*dc5640d1SHerbert Xue <class name="TypeListenerBinding" extends="java.lang.Object" 10728*dc5640d1SHerbert Xue abstract="false" 10729*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 10730*dc5640d1SHerbert Xue deprecated="not deprecated"> 10731*dc5640d1SHerbert Xue <implements name="com.google.inject.spi.Element"/> 10732*dc5640d1SHerbert Xue <method name="getListener" return="com.google.inject.spi.TypeListener" 10733*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10734*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10735*dc5640d1SHerbert Xue deprecated="not deprecated"> 10736*dc5640d1SHerbert Xue <doc> 10737*dc5640d1SHerbert Xue <![CDATA[Returns the registered listener.]]> 10738*dc5640d1SHerbert Xue </doc> 10739*dc5640d1SHerbert Xue </method> 10740*dc5640d1SHerbert Xue <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher<? super com.google.inject.TypeLiteral<?>>" 10741*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10742*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10743*dc5640d1SHerbert Xue deprecated="not deprecated"> 10744*dc5640d1SHerbert Xue <doc> 10745*dc5640d1SHerbert Xue <![CDATA[Returns the type matcher which chooses which types the listener should be notified of.]]> 10746*dc5640d1SHerbert Xue </doc> 10747*dc5640d1SHerbert Xue </method> 10748*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.Object" 10749*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10750*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10751*dc5640d1SHerbert Xue deprecated="not deprecated"> 10752*dc5640d1SHerbert Xue </method> 10753*dc5640d1SHerbert Xue <method name="acceptVisitor" return="T" 10754*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10755*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10756*dc5640d1SHerbert Xue deprecated="not deprecated"> 10757*dc5640d1SHerbert Xue <param name="visitor" type="com.google.inject.spi.ElementVisitor<T>"/> 10758*dc5640d1SHerbert Xue </method> 10759*dc5640d1SHerbert Xue <method name="applyTo" 10760*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10761*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10762*dc5640d1SHerbert Xue deprecated="not deprecated"> 10763*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 10764*dc5640d1SHerbert Xue </method> 10765*dc5640d1SHerbert Xue <doc> 10766*dc5640d1SHerbert Xue <![CDATA[Binds types (picked using a Matcher) to an type listener. Registrations are created explicitly in 10767*dc5640d1SHerbert Xue a module using {@link com.google.inject.Binder#bindListener(Matcher, TypeListener)} statements: 10768*dc5640d1SHerbert Xue 10769*dc5640d1SHerbert Xue <pre> 10770*dc5640d1SHerbert Xue register(only(new TypeLiteral<PaymentService<CreditCard>>() {}), listener);</pre> 10771*dc5640d1SHerbert Xue 10772*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 10773*dc5640d1SHerbert Xue @since 2.0]]> 10774*dc5640d1SHerbert Xue </doc> 10775*dc5640d1SHerbert Xue </class> 10776*dc5640d1SHerbert Xue <!-- end class com.google.inject.spi.TypeListenerBinding --> 10777*dc5640d1SHerbert Xue <!-- start interface com.google.inject.spi.UntargettedBinding --> 10778*dc5640d1SHerbert Xue <interface name="UntargettedBinding" abstract="true" 10779*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10780*dc5640d1SHerbert Xue deprecated="not deprecated"> 10781*dc5640d1SHerbert Xue <implements name="com.google.inject.Binding<T>"/> 10782*dc5640d1SHerbert Xue <doc> 10783*dc5640d1SHerbert Xue <![CDATA[An untargetted binding. This binding indicates that the injector should use its implicit binding 10784*dc5640d1SHerbert Xue strategies to resolve injections. 10785*dc5640d1SHerbert Xue 10786*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 10787*dc5640d1SHerbert Xue @since 2.0]]> 10788*dc5640d1SHerbert Xue </doc> 10789*dc5640d1SHerbert Xue </interface> 10790*dc5640d1SHerbert Xue <!-- end interface com.google.inject.spi.UntargettedBinding --> 10791*dc5640d1SHerbert Xue</package> 10792*dc5640d1SHerbert Xue<package name="com.google.inject.spring"> 10793*dc5640d1SHerbert Xue <!-- start class com.google.inject.spring.SpringIntegration --> 10794*dc5640d1SHerbert Xue <class name="SpringIntegration" extends="java.lang.Object" 10795*dc5640d1SHerbert Xue abstract="false" 10796*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10797*dc5640d1SHerbert Xue deprecated="not deprecated"> 10798*dc5640d1SHerbert Xue <method name="fromSpring" return="com.google.inject.Provider<T>" 10799*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10800*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 10801*dc5640d1SHerbert Xue deprecated="not deprecated"> 10802*dc5640d1SHerbert Xue <param name="type" type="java.lang.Class<T>"/> 10803*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 10804*dc5640d1SHerbert Xue <doc> 10805*dc5640d1SHerbert Xue <![CDATA[Creates a provider which looks up objects from Spring using the given name. 10806*dc5640d1SHerbert Xue Expects a binding to {@link 10807*dc5640d1SHerbert Xue org.springframework.beans.factory.BeanFactory}. Example usage: 10808*dc5640d1SHerbert Xue 10809*dc5640d1SHerbert Xue <pre> 10810*dc5640d1SHerbert Xue bind(DataSource.class) 10811*dc5640d1SHerbert Xue .toProvider(fromSpring(DataSource.class, "dataSource")); 10812*dc5640d1SHerbert Xue </pre>]]> 10813*dc5640d1SHerbert Xue </doc> 10814*dc5640d1SHerbert Xue </method> 10815*dc5640d1SHerbert Xue <method name="bindAll" 10816*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10817*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 10818*dc5640d1SHerbert Xue deprecated="not deprecated"> 10819*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 10820*dc5640d1SHerbert Xue <param name="beanFactory" type="org.springframework.beans.factory.ListableBeanFactory"/> 10821*dc5640d1SHerbert Xue <doc> 10822*dc5640d1SHerbert Xue <![CDATA[Binds all Spring beans from the given factory by name. For a Spring bean 10823*dc5640d1SHerbert Xue named "foo", this method creates a binding to the bean's type and 10824*dc5640d1SHerbert Xue {@code @Named("foo")}. 10825*dc5640d1SHerbert Xue 10826*dc5640d1SHerbert Xue @see com.google.inject.name.Named 10827*dc5640d1SHerbert Xue @see com.google.inject.name.Names#named(String)]]> 10828*dc5640d1SHerbert Xue </doc> 10829*dc5640d1SHerbert Xue </method> 10830*dc5640d1SHerbert Xue <doc> 10831*dc5640d1SHerbert Xue <![CDATA[Integrates Guice with Spring. 10832*dc5640d1SHerbert Xue 10833*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 10834*dc5640d1SHerbert Xue </doc> 10835*dc5640d1SHerbert Xue </class> 10836*dc5640d1SHerbert Xue <!-- end class com.google.inject.spring.SpringIntegration --> 10837*dc5640d1SHerbert Xue</package> 10838*dc5640d1SHerbert Xue<package name="com.google.inject.struts2"> 10839*dc5640d1SHerbert Xue <!-- start class com.google.inject.struts2.GuiceObjectFactory --> 10840*dc5640d1SHerbert Xue <class name="GuiceObjectFactory" extends="com.opensymphony.xwork2.ObjectFactory" 10841*dc5640d1SHerbert Xue abstract="false" 10842*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10843*dc5640d1SHerbert Xue deprecated="Use {@link com.google.inject.struts2.Struts2Factory} instead."> 10844*dc5640d1SHerbert Xue <constructor name="GuiceObjectFactory" 10845*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10846*dc5640d1SHerbert Xue deprecated="not deprecated"> 10847*dc5640d1SHerbert Xue </constructor> 10848*dc5640d1SHerbert Xue <method name="isNoArgConstructorRequired" return="boolean" 10849*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10850*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10851*dc5640d1SHerbert Xue deprecated="not deprecated"> 10852*dc5640d1SHerbert Xue </method> 10853*dc5640d1SHerbert Xue <method name="getClassInstance" return="java.lang.Class" 10854*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10855*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10856*dc5640d1SHerbert Xue deprecated="not deprecated"> 10857*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 10858*dc5640d1SHerbert Xue <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/> 10859*dc5640d1SHerbert Xue </method> 10860*dc5640d1SHerbert Xue <method name="buildBean" return="java.lang.Object" 10861*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10862*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10863*dc5640d1SHerbert Xue deprecated="not deprecated"> 10864*dc5640d1SHerbert Xue <param name="clazz" type="java.lang.Class"/> 10865*dc5640d1SHerbert Xue <param name="extraContext" type="java.util.Map"/> 10866*dc5640d1SHerbert Xue </method> 10867*dc5640d1SHerbert Xue <method name="buildInterceptor" return="com.opensymphony.xwork2.interceptor.Interceptor" 10868*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10869*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10870*dc5640d1SHerbert Xue deprecated="not deprecated"> 10871*dc5640d1SHerbert Xue <param name="interceptorConfig" type="com.opensymphony.xwork2.config.entities.InterceptorConfig"/> 10872*dc5640d1SHerbert Xue <param name="interceptorRefParams" type="java.util.Map"/> 10873*dc5640d1SHerbert Xue <exception name="ConfigurationException" type="com.opensymphony.xwork2.config.ConfigurationException"/> 10874*dc5640d1SHerbert Xue </method> 10875*dc5640d1SHerbert Xue <doc> 10876*dc5640d1SHerbert Xue <![CDATA[@deprecated Use {@link com.google.inject.struts2.Struts2Factory} instead.]]> 10877*dc5640d1SHerbert Xue </doc> 10878*dc5640d1SHerbert Xue </class> 10879*dc5640d1SHerbert Xue <!-- end class com.google.inject.struts2.GuiceObjectFactory --> 10880*dc5640d1SHerbert Xue <!-- start class com.google.inject.struts2.Struts2Factory --> 10881*dc5640d1SHerbert Xue <class name="Struts2Factory" extends="com.opensymphony.xwork2.ObjectFactory" 10882*dc5640d1SHerbert Xue abstract="false" 10883*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10884*dc5640d1SHerbert Xue deprecated="not deprecated"> 10885*dc5640d1SHerbert Xue <constructor name="Struts2Factory" 10886*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10887*dc5640d1SHerbert Xue deprecated="not deprecated"> 10888*dc5640d1SHerbert Xue </constructor> 10889*dc5640d1SHerbert Xue <method name="isNoArgConstructorRequired" return="boolean" 10890*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10891*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10892*dc5640d1SHerbert Xue deprecated="not deprecated"> 10893*dc5640d1SHerbert Xue </method> 10894*dc5640d1SHerbert Xue <method name="getClassInstance" return="java.lang.Class<?>" 10895*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10896*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10897*dc5640d1SHerbert Xue deprecated="not deprecated"> 10898*dc5640d1SHerbert Xue <param name="name" type="java.lang.String"/> 10899*dc5640d1SHerbert Xue <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/> 10900*dc5640d1SHerbert Xue </method> 10901*dc5640d1SHerbert Xue <method name="buildBean" return="java.lang.Object" 10902*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10903*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10904*dc5640d1SHerbert Xue deprecated="not deprecated"> 10905*dc5640d1SHerbert Xue <param name="clazz" type="java.lang.Class"/> 10906*dc5640d1SHerbert Xue <param name="extraContext" type="java.util.Map<java.lang.String, java.lang.Object>"/> 10907*dc5640d1SHerbert Xue </method> 10908*dc5640d1SHerbert Xue <method name="buildInterceptor" return="com.opensymphony.xwork2.interceptor.Interceptor" 10909*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10910*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10911*dc5640d1SHerbert Xue deprecated="not deprecated"> 10912*dc5640d1SHerbert Xue <param name="interceptorConfig" type="com.opensymphony.xwork2.config.entities.InterceptorConfig"/> 10913*dc5640d1SHerbert Xue <param name="interceptorRefParams" type="java.util.Map"/> 10914*dc5640d1SHerbert Xue <exception name="ConfigurationException" type="com.opensymphony.xwork2.config.ConfigurationException"/> 10915*dc5640d1SHerbert Xue </method> 10916*dc5640d1SHerbert Xue <doc> 10917*dc5640d1SHerbert Xue <![CDATA[Cleanup up version from Bob's GuiceObjectFactory. Now works properly with 10918*dc5640d1SHerbert Xue GS2 and fixes several bugs. 10919*dc5640d1SHerbert Xue 10920*dc5640d1SHerbert Xue @author [email protected] 10921*dc5640d1SHerbert Xue @author benmccann.com]]> 10922*dc5640d1SHerbert Xue </doc> 10923*dc5640d1SHerbert Xue </class> 10924*dc5640d1SHerbert Xue <!-- end class com.google.inject.struts2.Struts2Factory --> 10925*dc5640d1SHerbert Xue <!-- start class com.google.inject.struts2.Struts2GuicePluginModule --> 10926*dc5640d1SHerbert Xue <class name="Struts2GuicePluginModule" extends="com.google.inject.AbstractModule" 10927*dc5640d1SHerbert Xue abstract="false" 10928*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10929*dc5640d1SHerbert Xue deprecated="not deprecated"> 10930*dc5640d1SHerbert Xue <constructor name="Struts2GuicePluginModule" 10931*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10932*dc5640d1SHerbert Xue deprecated="not deprecated"> 10933*dc5640d1SHerbert Xue </constructor> 10934*dc5640d1SHerbert Xue <method name="configure" 10935*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10936*dc5640d1SHerbert Xue static="false" final="false" visibility="protected" 10937*dc5640d1SHerbert Xue deprecated="not deprecated"> 10938*dc5640d1SHerbert Xue </method> 10939*dc5640d1SHerbert Xue <doc> 10940*dc5640d1SHerbert Xue <![CDATA[Initializes the Struts 2 Guice Plugin. Must be added to the injector returned 10941*dc5640d1SHerbert Xue by {@link com.google.inject.servlet.GuiceServletContextListener#getInjector}. 10942*dc5640d1SHerbert Xue 10943*dc5640d1SHerbert Xue @author benmccann.com]]> 10944*dc5640d1SHerbert Xue </doc> 10945*dc5640d1SHerbert Xue </class> 10946*dc5640d1SHerbert Xue <!-- end class com.google.inject.struts2.Struts2GuicePluginModule --> 10947*dc5640d1SHerbert Xue</package> 10948*dc5640d1SHerbert Xue<package name="com.google.inject.testing.fieldbinder"> 10949*dc5640d1SHerbert Xue <!-- start class com.google.inject.testing.fieldbinder.Bind --> 10950*dc5640d1SHerbert Xue <class name="Bind" abstract="true" 10951*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10952*dc5640d1SHerbert Xue deprecated="not deprecated"> 10953*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 10954*dc5640d1SHerbert Xue <doc> 10955*dc5640d1SHerbert Xue <![CDATA[Annotation used by {@link BoundFieldModule} to indicate that a field should be bound to its 10956*dc5640d1SHerbert Xue value using Guice. 10957*dc5640d1SHerbert Xue 10958*dc5640d1SHerbert Xue @see BoundFieldModule 10959*dc5640d1SHerbert Xue @author [email protected] (Russ Harmon)]]> 10960*dc5640d1SHerbert Xue </doc> 10961*dc5640d1SHerbert Xue </class> 10962*dc5640d1SHerbert Xue <!-- end class com.google.inject.testing.fieldbinder.Bind --> 10963*dc5640d1SHerbert Xue <!-- start class com.google.inject.testing.fieldbinder.BoundFieldModule --> 10964*dc5640d1SHerbert Xue <class name="BoundFieldModule" extends="java.lang.Object" 10965*dc5640d1SHerbert Xue abstract="false" 10966*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 10967*dc5640d1SHerbert Xue deprecated="not deprecated"> 10968*dc5640d1SHerbert Xue <implements name="com.google.inject.Module"/> 10969*dc5640d1SHerbert Xue <method name="of" return="com.google.inject.testing.fieldbinder.BoundFieldModule" 10970*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10971*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 10972*dc5640d1SHerbert Xue deprecated="not deprecated"> 10973*dc5640d1SHerbert Xue <param name="instance" type="java.lang.Object"/> 10974*dc5640d1SHerbert Xue <doc> 10975*dc5640d1SHerbert Xue <![CDATA[Create a BoundFieldModule which binds the {@link Bind} annotated fields of {@code instance}. 10976*dc5640d1SHerbert Xue 10977*dc5640d1SHerbert Xue @param instance the instance whose fields will be bound. 10978*dc5640d1SHerbert Xue @return a module which will bind the {@link Bind} annotated fields of {@code instance}.]]> 10979*dc5640d1SHerbert Xue </doc> 10980*dc5640d1SHerbert Xue </method> 10981*dc5640d1SHerbert Xue <method name="configure" 10982*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 10983*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 10984*dc5640d1SHerbert Xue deprecated="not deprecated"> 10985*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 10986*dc5640d1SHerbert Xue </method> 10987*dc5640d1SHerbert Xue <doc> 10988*dc5640d1SHerbert Xue <![CDATA[Automatically creates Guice bindings for fields in an object annotated with {@link Bind}. 10989*dc5640d1SHerbert Xue 10990*dc5640d1SHerbert Xue <p>This module is intended for use in tests to reduce the code needed to bind local fields 10991*dc5640d1SHerbert Xue (usually mocks) for injection. 10992*dc5640d1SHerbert Xue 10993*dc5640d1SHerbert Xue <p>The following rules are followed in determining how fields are bound using this module: 10994*dc5640d1SHerbert Xue 10995*dc5640d1SHerbert Xue <ul> 10996*dc5640d1SHerbert Xue <li> 10997*dc5640d1SHerbert Xue For each {@link Bind} annotated field of an object and its superclasses, this module will bind 10998*dc5640d1SHerbert Xue that field's type to that field's value at injector creation time. This includes both instance 10999*dc5640d1SHerbert Xue and static fields. 11000*dc5640d1SHerbert Xue </li> 11001*dc5640d1SHerbert Xue <li> 11002*dc5640d1SHerbert Xue If {@link Bind#to} is specified, the field's value will be bound to the class specified by 11003*dc5640d1SHerbert Xue {@link Bind#to} instead of the field's actual type. 11004*dc5640d1SHerbert Xue </li> 11005*dc5640d1SHerbert Xue <li> 11006*dc5640d1SHerbert Xue If a {@link BindingAnnotation} or {@link javax.inject.Qualifier} is present on the field, 11007*dc5640d1SHerbert Xue that field will be bound using that annotation via {@link AnnotatedBindingBuilder#annotatedWith}. 11008*dc5640d1SHerbert Xue For example, {@code bind(Foo.class).annotatedWith(BarAnnotation.class).toInstance(theValue)}. 11009*dc5640d1SHerbert Xue It is an error to supply more than one {@link BindingAnnotation} or 11010*dc5640d1SHerbert Xue {@link javax.inject.Qualifier}. 11011*dc5640d1SHerbert Xue </li> 11012*dc5640d1SHerbert Xue <li> 11013*dc5640d1SHerbert Xue If the field is of type {@link Provider}, the field's value will be bound as a {@link Provider} 11014*dc5640d1SHerbert Xue using {@link LinkedBindingBuilder#toProvider} to the provider's parameterized type. For example, 11015*dc5640d1SHerbert Xue {@code Provider<Integer>} binds to {@link Integer}. Attempting to bind a non-parameterized 11016*dc5640d1SHerbert Xue {@link Provider} without a {@link Bind#to} clause is an error. 11017*dc5640d1SHerbert Xue </li> 11018*dc5640d1SHerbert Xue </ul> 11019*dc5640d1SHerbert Xue 11020*dc5640d1SHerbert Xue <p>Example use: 11021*dc5640d1SHerbert Xue <pre><code> 11022*dc5640d1SHerbert Xue public class TestFoo { 11023*dc5640d1SHerbert Xue // bind(new TypeLiteral{@code <List<Object>>}() {}).toInstance(listOfObjects); 11024*dc5640d1SHerbert Xue {@literal @}Bind private List{@code <Object>} listOfObjects = Lists.of(); 11025*dc5640d1SHerbert Xue 11026*dc5640d1SHerbert Xue // bind(String.class).toProvider(new Provider() { public String get() { return userName; }}); 11027*dc5640d1SHerbert Xue {@literal @}Bind(lazy = true) private String userName; 11028*dc5640d1SHerbert Xue 11029*dc5640d1SHerbert Xue // bind(SuperClass.class).toInstance(aSubClass); 11030*dc5640d1SHerbert Xue {@literal @}Bind(to = SuperClass.class) private SubClass aSubClass = new SubClass(); 11031*dc5640d1SHerbert Xue 11032*dc5640d1SHerbert Xue // bind(Object.class).annotatedWith(MyBindingAnnotation.class).toInstance(object2); 11033*dc5640d1SHerbert Xue {@literal @}Bind 11034*dc5640d1SHerbert Xue {@literal @}MyBindingAnnotation 11035*dc5640d1SHerbert Xue private String myString = "hello"; 11036*dc5640d1SHerbert Xue 11037*dc5640d1SHerbert Xue // bind(Object.class).toProvider(myProvider); 11038*dc5640d1SHerbert Xue {@literal @}Bind private Provider{@code <Object>} myProvider = getProvider(); 11039*dc5640d1SHerbert Xue 11040*dc5640d1SHerbert Xue {@literal @}Before public void setUp() { 11041*dc5640d1SHerbert Xue Guice.createInjector(BoundFieldModule.of(this)).injectMembers(this); 11042*dc5640d1SHerbert Xue } 11043*dc5640d1SHerbert Xue } 11044*dc5640d1SHerbert Xue </code></pre> 11045*dc5640d1SHerbert Xue 11046*dc5640d1SHerbert Xue @see Bind 11047*dc5640d1SHerbert Xue @author [email protected] (Russ Harmon)]]> 11048*dc5640d1SHerbert Xue </doc> 11049*dc5640d1SHerbert Xue </class> 11050*dc5640d1SHerbert Xue <!-- end class com.google.inject.testing.fieldbinder.BoundFieldModule --> 11051*dc5640d1SHerbert Xue</package> 11052*dc5640d1SHerbert Xue<package name="com.google.inject.throwingproviders"> 11053*dc5640d1SHerbert Xue <!-- start interface com.google.inject.throwingproviders.CheckedProvider --> 11054*dc5640d1SHerbert Xue <interface name="CheckedProvider" abstract="true" 11055*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11056*dc5640d1SHerbert Xue deprecated="not deprecated"> 11057*dc5640d1SHerbert Xue <method name="get" return="T" 11058*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 11059*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11060*dc5640d1SHerbert Xue deprecated="not deprecated"> 11061*dc5640d1SHerbert Xue <exception name="Exception" type="java.lang.Exception"/> 11062*dc5640d1SHerbert Xue </method> 11063*dc5640d1SHerbert Xue <doc> 11064*dc5640d1SHerbert Xue <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws 11065*dc5640d1SHerbert Xue a checked Exception. Users may not inject {@code T} directly. 11066*dc5640d1SHerbert Xue 11067*dc5640d1SHerbert Xue <p>This interface must be extended to use application-specific exception types. 11068*dc5640d1SHerbert Xue Such subinterfaces may not define new methods, but may narrow the exception type. 11069*dc5640d1SHerbert Xue <pre> 11070*dc5640d1SHerbert Xue public interface RemoteProvider<T> extends CheckedProvider<T> { 11071*dc5640d1SHerbert Xue T get() throws CustomExceptionOne, CustomExceptionTwo; 11072*dc5640d1SHerbert Xue } 11073*dc5640d1SHerbert Xue </pre> 11074*dc5640d1SHerbert Xue 11075*dc5640d1SHerbert Xue <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned 11076*dc5640d1SHerbert Xue or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get} 11077*dc5640d1SHerbert Xue will invoked at most once within each scope. 11078*dc5640d1SHerbert Xue 11079*dc5640d1SHerbert Xue @since 3.0]]> 11080*dc5640d1SHerbert Xue </doc> 11081*dc5640d1SHerbert Xue </interface> 11082*dc5640d1SHerbert Xue <!-- end interface com.google.inject.throwingproviders.CheckedProvider --> 11083*dc5640d1SHerbert Xue <!-- start class com.google.inject.throwingproviders.CheckedProvides --> 11084*dc5640d1SHerbert Xue <class name="CheckedProvides" abstract="true" 11085*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11086*dc5640d1SHerbert Xue deprecated="not deprecated"> 11087*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 11088*dc5640d1SHerbert Xue <doc> 11089*dc5640d1SHerbert Xue <![CDATA[Annotates methods of a {@link com.google.inject.Module} to create a 11090*dc5640d1SHerbert Xue {@link CheckedProvider} method binding that can throw exceptions. The 11091*dc5640d1SHerbert Xue method's return type is bound to a {@link CheckedProvider} that can be 11092*dc5640d1SHerbert Xue injected. Guice will pass dependencies to the method as parameters. Install 11093*dc5640d1SHerbert Xue {@literal @}CheckedProvides methods by using 11094*dc5640d1SHerbert Xue {@link ThrowingProviderBinder#forModule(com.google.inject.Module)} on the 11095*dc5640d1SHerbert Xue module where the methods are declared. 11096*dc5640d1SHerbert Xue 11097*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 11098*dc5640d1SHerbert Xue @since 3.0]]> 11099*dc5640d1SHerbert Xue </doc> 11100*dc5640d1SHerbert Xue </class> 11101*dc5640d1SHerbert Xue <!-- end class com.google.inject.throwingproviders.CheckedProvides --> 11102*dc5640d1SHerbert Xue <!-- start class com.google.inject.throwingproviders.ThrowingInject --> 11103*dc5640d1SHerbert Xue <class name="ThrowingInject" abstract="true" 11104*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11105*dc5640d1SHerbert Xue deprecated="not deprecated"> 11106*dc5640d1SHerbert Xue <implements name="java.lang.annotation.Annotation"/> 11107*dc5640d1SHerbert Xue <doc> 11108*dc5640d1SHerbert Xue <![CDATA[A version of {@literal @}{@link Inject} designed for ThrowingProviders. Use by: 11109*dc5640d1SHerbert Xue <pre><code>ThrowingProviderBinder.create(binder()) 11110*dc5640d1SHerbert Xue .bind(RemoteProvider.class, Customer.class) 11111*dc5640d1SHerbert Xue .providing(CustomerImpl.class); 11112*dc5640d1SHerbert Xue </code></pre> 11113*dc5640d1SHerbert Xue where CustomerImpl has a constructor annotated with ThrowingInject. 11114*dc5640d1SHerbert Xue 11115*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin) 11116*dc5640d1SHerbert Xue @since 4.0]]> 11117*dc5640d1SHerbert Xue </doc> 11118*dc5640d1SHerbert Xue </class> 11119*dc5640d1SHerbert Xue <!-- end class com.google.inject.throwingproviders.ThrowingInject --> 11120*dc5640d1SHerbert Xue <!-- start interface com.google.inject.throwingproviders.ThrowingProvider --> 11121*dc5640d1SHerbert Xue <interface name="ThrowingProvider" abstract="true" 11122*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11123*dc5640d1SHerbert Xue deprecated="use {@link CheckedProvider} instead."> 11124*dc5640d1SHerbert Xue <implements name="com.google.inject.throwingproviders.CheckedProvider<T>"/> 11125*dc5640d1SHerbert Xue <method name="get" return="T" 11126*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 11127*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11128*dc5640d1SHerbert Xue deprecated="not deprecated"> 11129*dc5640d1SHerbert Xue <exception name="Exception" type="java.lang.Exception"/> 11130*dc5640d1SHerbert Xue </method> 11131*dc5640d1SHerbert Xue <doc> 11132*dc5640d1SHerbert Xue <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws 11133*dc5640d1SHerbert Xue a checked Exception. Users may not inject {@code T} directly. 11134*dc5640d1SHerbert Xue 11135*dc5640d1SHerbert Xue <p>This interface must be extended to use application-specific exception types. 11136*dc5640d1SHerbert Xue Such subinterfaces may not define new methods: 11137*dc5640d1SHerbert Xue <pre> 11138*dc5640d1SHerbert Xue public interface RemoteProvider<T> extends ThrowingProvider<T, RemoteException> { } 11139*dc5640d1SHerbert Xue </pre> 11140*dc5640d1SHerbert Xue 11141*dc5640d1SHerbert Xue <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned 11142*dc5640d1SHerbert Xue or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get} 11143*dc5640d1SHerbert Xue will invoked at most once within each scope. 11144*dc5640d1SHerbert Xue 11145*dc5640d1SHerbert Xue @author [email protected] (Jerome Mourits) 11146*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 11147*dc5640d1SHerbert Xue @deprecated use {@link CheckedProvider} instead.]]> 11148*dc5640d1SHerbert Xue </doc> 11149*dc5640d1SHerbert Xue </interface> 11150*dc5640d1SHerbert Xue <!-- end interface com.google.inject.throwingproviders.ThrowingProvider --> 11151*dc5640d1SHerbert Xue <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder --> 11152*dc5640d1SHerbert Xue <class name="ThrowingProviderBinder" extends="java.lang.Object" 11153*dc5640d1SHerbert Xue abstract="false" 11154*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11155*dc5640d1SHerbert Xue deprecated="not deprecated"> 11156*dc5640d1SHerbert Xue <method name="create" return="com.google.inject.throwingproviders.ThrowingProviderBinder" 11157*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11158*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 11159*dc5640d1SHerbert Xue deprecated="not deprecated"> 11160*dc5640d1SHerbert Xue <param name="binder" type="com.google.inject.Binder"/> 11161*dc5640d1SHerbert Xue </method> 11162*dc5640d1SHerbert Xue <method name="forModule" return="com.google.inject.Module" 11163*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11164*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 11165*dc5640d1SHerbert Xue deprecated="not deprecated"> 11166*dc5640d1SHerbert Xue <param name="module" type="com.google.inject.Module"/> 11167*dc5640d1SHerbert Xue <doc> 11168*dc5640d1SHerbert Xue <![CDATA[Returns a module that installs {@literal @}{@link CheckedProvides} methods. 11169*dc5640d1SHerbert Xue 11170*dc5640d1SHerbert Xue @since 3.0]]> 11171*dc5640d1SHerbert Xue </doc> 11172*dc5640d1SHerbert Xue </method> 11173*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P, ?>" 11174*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11175*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11176*dc5640d1SHerbert Xue deprecated="Use {@link #bind(Class, Class)} or {@link #bind(Class, TypeLiteral)} instead."> 11177*dc5640d1SHerbert Xue <param name="interfaceType" type="java.lang.Class<P>"/> 11178*dc5640d1SHerbert Xue <param name="clazz" type="java.lang.reflect.Type"/> 11179*dc5640d1SHerbert Xue <doc> 11180*dc5640d1SHerbert Xue <![CDATA[@deprecated Use {@link #bind(Class, Class)} or {@link #bind(Class, TypeLiteral)} instead.]]> 11181*dc5640d1SHerbert Xue </doc> 11182*dc5640d1SHerbert Xue </method> 11183*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P, T>" 11184*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11185*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11186*dc5640d1SHerbert Xue deprecated="not deprecated"> 11187*dc5640d1SHerbert Xue <param name="interfaceType" type="java.lang.Class<P>"/> 11188*dc5640d1SHerbert Xue <param name="clazz" type="java.lang.Class<T>"/> 11189*dc5640d1SHerbert Xue <doc> 11190*dc5640d1SHerbert Xue <![CDATA[@since 4.0]]> 11191*dc5640d1SHerbert Xue </doc> 11192*dc5640d1SHerbert Xue </method> 11193*dc5640d1SHerbert Xue <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P, T>" 11194*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11195*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11196*dc5640d1SHerbert Xue deprecated="not deprecated"> 11197*dc5640d1SHerbert Xue <param name="interfaceType" type="java.lang.Class<P>"/> 11198*dc5640d1SHerbert Xue <param name="typeLiteral" type="com.google.inject.TypeLiteral<T>"/> 11199*dc5640d1SHerbert Xue <doc> 11200*dc5640d1SHerbert Xue <![CDATA[@since 4.0]]> 11201*dc5640d1SHerbert Xue </doc> 11202*dc5640d1SHerbert Xue </method> 11203*dc5640d1SHerbert Xue <doc> 11204*dc5640d1SHerbert Xue <![CDATA[<p>Builds a binding for a {@link CheckedProvider}. 11205*dc5640d1SHerbert Xue 11206*dc5640d1SHerbert Xue <p>You can use a fluent API and custom providers: 11207*dc5640d1SHerbert Xue <pre><code>ThrowingProviderBinder.create(binder()) 11208*dc5640d1SHerbert Xue .bind(RemoteProvider.class, Customer.class) 11209*dc5640d1SHerbert Xue .to(RemoteCustomerProvider.class) 11210*dc5640d1SHerbert Xue .in(RequestScope.class); 11211*dc5640d1SHerbert Xue </code></pre> 11212*dc5640d1SHerbert Xue or, you can use throwing provider methods: 11213*dc5640d1SHerbert Xue <pre><code>class MyModule extends AbstractModule { 11214*dc5640d1SHerbert Xue configure() { 11215*dc5640d1SHerbert Xue ThrowingProviderBinder.install(this, binder()); 11216*dc5640d1SHerbert Xue } 11217*dc5640d1SHerbert Xue 11218*dc5640d1SHerbert Xue {@literal @}CheckedProvides(RemoteProvider.class) 11219*dc5640d1SHerbert Xue {@literal @}RequestScope 11220*dc5640d1SHerbert Xue Customer provideCustomer(FlakyCustomerCreator creator) throws RemoteException { 11221*dc5640d1SHerbert Xue return creator.getCustomerOrThrow(); 11222*dc5640d1SHerbert Xue } 11223*dc5640d1SHerbert Xue } 11224*dc5640d1SHerbert Xue </code></pre> 11225*dc5640d1SHerbert Xue You also can declare that a CheckedProvider construct 11226*dc5640d1SHerbert Xue a particular class whose constructor throws an exception: 11227*dc5640d1SHerbert Xue <pre><code>ThrowingProviderBinder.create(binder()) 11228*dc5640d1SHerbert Xue .bind(RemoteProvider.class, Customer.class) 11229*dc5640d1SHerbert Xue .providing(CustomerImpl.class) 11230*dc5640d1SHerbert Xue .in(RequestScope.class); 11231*dc5640d1SHerbert Xue </code></pre> 11232*dc5640d1SHerbert Xue 11233*dc5640d1SHerbert Xue @author [email protected] (Jerome Mourits) 11234*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 11235*dc5640d1SHerbert Xue @author [email protected] (Sam Berlin)]]> 11236*dc5640d1SHerbert Xue </doc> 11237*dc5640d1SHerbert Xue </class> 11238*dc5640d1SHerbert Xue <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder --> 11239*dc5640d1SHerbert Xue <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder --> 11240*dc5640d1SHerbert Xue <class name="ThrowingProviderBinder.SecondaryBinder" extends="java.lang.Object" 11241*dc5640d1SHerbert Xue abstract="false" 11242*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11243*dc5640d1SHerbert Xue deprecated="not deprecated"> 11244*dc5640d1SHerbert Xue <constructor name="SecondaryBinder" type="java.lang.Class<P>, java.lang.reflect.Type" 11245*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11246*dc5640d1SHerbert Xue deprecated="not deprecated"> 11247*dc5640d1SHerbert Xue </constructor> 11248*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P, T>" 11249*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11250*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11251*dc5640d1SHerbert Xue deprecated="not deprecated"> 11252*dc5640d1SHerbert Xue <param name="annotationType" type="java.lang.Class<? extends java.lang.annotation.Annotation>"/> 11253*dc5640d1SHerbert Xue </method> 11254*dc5640d1SHerbert Xue <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P, T>" 11255*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11256*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11257*dc5640d1SHerbert Xue deprecated="not deprecated"> 11258*dc5640d1SHerbert Xue <param name="annotation" type="java.lang.annotation.Annotation"/> 11259*dc5640d1SHerbert Xue </method> 11260*dc5640d1SHerbert Xue <method name="scopeExceptions" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder<P, T>" 11261*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11262*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11263*dc5640d1SHerbert Xue deprecated="not deprecated"> 11264*dc5640d1SHerbert Xue <param name="scopeExceptions" type="boolean"/> 11265*dc5640d1SHerbert Xue <doc> 11266*dc5640d1SHerbert Xue <![CDATA[Determines if exceptions should be scoped. By default exceptions are scoped. 11267*dc5640d1SHerbert Xue 11268*dc5640d1SHerbert Xue @param scopeExceptions whether exceptions should be scoped. 11269*dc5640d1SHerbert Xue @since 4.0]]> 11270*dc5640d1SHerbert Xue </doc> 11271*dc5640d1SHerbert Xue </method> 11272*dc5640d1SHerbert Xue <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 11273*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11274*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11275*dc5640d1SHerbert Xue deprecated="not deprecated"> 11276*dc5640d1SHerbert Xue <param name="target" type="P extends com.google.inject.throwingproviders.CheckedProvider"/> 11277*dc5640d1SHerbert Xue </method> 11278*dc5640d1SHerbert Xue <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 11279*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11280*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11281*dc5640d1SHerbert Xue deprecated="not deprecated"> 11282*dc5640d1SHerbert Xue <param name="targetType" type="java.lang.Class<? extends P>"/> 11283*dc5640d1SHerbert Xue </method> 11284*dc5640d1SHerbert Xue <method name="providing" return="com.google.inject.binder.ScopedBindingBuilder" 11285*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11286*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11287*dc5640d1SHerbert Xue deprecated="not deprecated"> 11288*dc5640d1SHerbert Xue <param name="cxtorClass" type="java.lang.Class<? extends T>"/> 11289*dc5640d1SHerbert Xue <doc> 11290*dc5640d1SHerbert Xue <![CDATA[@since 4.0]]> 11291*dc5640d1SHerbert Xue </doc> 11292*dc5640d1SHerbert Xue </method> 11293*dc5640d1SHerbert Xue <method name="providing" return="com.google.inject.binder.ScopedBindingBuilder" 11294*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11295*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11296*dc5640d1SHerbert Xue deprecated="not deprecated"> 11297*dc5640d1SHerbert Xue <param name="cxtorLiteral" type="com.google.inject.TypeLiteral<? extends T>"/> 11298*dc5640d1SHerbert Xue <doc> 11299*dc5640d1SHerbert Xue <![CDATA[@since 4.0]]> 11300*dc5640d1SHerbert Xue </doc> 11301*dc5640d1SHerbert Xue </method> 11302*dc5640d1SHerbert Xue <method name="to" return="com.google.inject.binder.ScopedBindingBuilder" 11303*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11304*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11305*dc5640d1SHerbert Xue deprecated="not deprecated"> 11306*dc5640d1SHerbert Xue <param name="targetKey" type="com.google.inject.Key<? extends P>"/> 11307*dc5640d1SHerbert Xue </method> 11308*dc5640d1SHerbert Xue </class> 11309*dc5640d1SHerbert Xue <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder --> 11310*dc5640d1SHerbert Xue</package> 11311*dc5640d1SHerbert Xue<package name="com.google.inject.tools.jmx"> 11312*dc5640d1SHerbert Xue <!-- start interface com.google.inject.tools.jmx.ManagedBindingMBean --> 11313*dc5640d1SHerbert Xue <interface name="ManagedBindingMBean" abstract="true" 11314*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11315*dc5640d1SHerbert Xue deprecated="not deprecated"> 11316*dc5640d1SHerbert Xue <method name="getSource" return="java.lang.String" 11317*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 11318*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11319*dc5640d1SHerbert Xue deprecated="not deprecated"> 11320*dc5640d1SHerbert Xue <doc> 11321*dc5640d1SHerbert Xue <![CDATA[Gets the source of this binding.]]> 11322*dc5640d1SHerbert Xue </doc> 11323*dc5640d1SHerbert Xue </method> 11324*dc5640d1SHerbert Xue <method name="getProvider" return="java.lang.String" 11325*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 11326*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11327*dc5640d1SHerbert Xue deprecated="not deprecated"> 11328*dc5640d1SHerbert Xue <doc> 11329*dc5640d1SHerbert Xue <![CDATA[Gets the provider to which this binding is bound.]]> 11330*dc5640d1SHerbert Xue </doc> 11331*dc5640d1SHerbert Xue </method> 11332*dc5640d1SHerbert Xue <method name="getKey" return="java.lang.String" 11333*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 11334*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11335*dc5640d1SHerbert Xue deprecated="not deprecated"> 11336*dc5640d1SHerbert Xue <doc> 11337*dc5640d1SHerbert Xue <![CDATA[Gets the binding key.]]> 11338*dc5640d1SHerbert Xue </doc> 11339*dc5640d1SHerbert Xue </method> 11340*dc5640d1SHerbert Xue <doc> 11341*dc5640d1SHerbert Xue <![CDATA[JMX interface to bindings. 11342*dc5640d1SHerbert Xue 11343*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 11344*dc5640d1SHerbert Xue </doc> 11345*dc5640d1SHerbert Xue </interface> 11346*dc5640d1SHerbert Xue <!-- end interface com.google.inject.tools.jmx.ManagedBindingMBean --> 11347*dc5640d1SHerbert Xue <!-- start class com.google.inject.tools.jmx.Manager --> 11348*dc5640d1SHerbert Xue <class name="Manager" extends="java.lang.Object" 11349*dc5640d1SHerbert Xue abstract="false" 11350*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11351*dc5640d1SHerbert Xue deprecated="not deprecated"> 11352*dc5640d1SHerbert Xue <constructor name="Manager" 11353*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11354*dc5640d1SHerbert Xue deprecated="not deprecated"> 11355*dc5640d1SHerbert Xue </constructor> 11356*dc5640d1SHerbert Xue <method name="manage" 11357*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11358*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 11359*dc5640d1SHerbert Xue deprecated="not deprecated"> 11360*dc5640d1SHerbert Xue <param name="domain" type="java.lang.String"/> 11361*dc5640d1SHerbert Xue <param name="injector" type="com.google.inject.Injector"/> 11362*dc5640d1SHerbert Xue <doc> 11363*dc5640d1SHerbert Xue <![CDATA[Registers all the bindings of an Injector with the platform MBean server. 11364*dc5640d1SHerbert Xue Consider using the name of your root {@link Module} class as the domain.]]> 11365*dc5640d1SHerbert Xue </doc> 11366*dc5640d1SHerbert Xue </method> 11367*dc5640d1SHerbert Xue <method name="manage" 11368*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11369*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 11370*dc5640d1SHerbert Xue deprecated="not deprecated"> 11371*dc5640d1SHerbert Xue <param name="server" type="javax.management.MBeanServer"/> 11372*dc5640d1SHerbert Xue <param name="domain" type="java.lang.String"/> 11373*dc5640d1SHerbert Xue <param name="injector" type="com.google.inject.Injector"/> 11374*dc5640d1SHerbert Xue <doc> 11375*dc5640d1SHerbert Xue <![CDATA[Registers all the bindings of an Injector with the given MBean server. 11376*dc5640d1SHerbert Xue Consider using the name of your root {@link Module} class as the domain.]]> 11377*dc5640d1SHerbert Xue </doc> 11378*dc5640d1SHerbert Xue </method> 11379*dc5640d1SHerbert Xue <method name="main" 11380*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11381*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 11382*dc5640d1SHerbert Xue deprecated="not deprecated"> 11383*dc5640d1SHerbert Xue <param name="args" type="java.lang.String[]"/> 11384*dc5640d1SHerbert Xue <exception name="Exception" type="java.lang.Exception"/> 11385*dc5640d1SHerbert Xue <doc> 11386*dc5640d1SHerbert Xue <![CDATA[Run with no arguments for usage instructions.]]> 11387*dc5640d1SHerbert Xue </doc> 11388*dc5640d1SHerbert Xue </method> 11389*dc5640d1SHerbert Xue <doc> 11390*dc5640d1SHerbert Xue <![CDATA[Provides a JMX interface to Guice. 11391*dc5640d1SHerbert Xue 11392*dc5640d1SHerbert Xue @author [email protected] (Bob Lee)]]> 11393*dc5640d1SHerbert Xue </doc> 11394*dc5640d1SHerbert Xue </class> 11395*dc5640d1SHerbert Xue <!-- end class com.google.inject.tools.jmx.Manager --> 11396*dc5640d1SHerbert Xue</package> 11397*dc5640d1SHerbert Xue<package name="com.google.inject.util"> 11398*dc5640d1SHerbert Xue <!-- start class com.google.inject.util.Modules --> 11399*dc5640d1SHerbert Xue <class name="Modules" extends="java.lang.Object" 11400*dc5640d1SHerbert Xue abstract="false" 11401*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 11402*dc5640d1SHerbert Xue deprecated="not deprecated"> 11403*dc5640d1SHerbert Xue <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder" 11404*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11405*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 11406*dc5640d1SHerbert Xue deprecated="not deprecated"> 11407*dc5640d1SHerbert Xue <param name="modules" type="com.google.inject.Module[]"/> 11408*dc5640d1SHerbert Xue <doc> 11409*dc5640d1SHerbert Xue <![CDATA[Returns a builder that creates a module that overlays override modules over the given 11410*dc5640d1SHerbert Xue modules. If a key is bound in both sets of modules, only the binding from the override modules 11411*dc5640d1SHerbert Xue is kept. If a single {@link PrivateModule} is supplied or all elements are from 11412*dc5640d1SHerbert Xue a single {@link PrivateBinder}, then this will overwrite the private bindings. 11413*dc5640d1SHerbert Xue Otherwise, private bindings will not be overwritten unless they are exposed. 11414*dc5640d1SHerbert Xue This can be used to replace the bindings of a production module with test bindings: 11415*dc5640d1SHerbert Xue <pre> 11416*dc5640d1SHerbert Xue Module functionalTestModule 11417*dc5640d1SHerbert Xue = Modules.override(new ProductionModule()).with(new TestModule()); 11418*dc5640d1SHerbert Xue </pre> 11419*dc5640d1SHerbert Xue 11420*dc5640d1SHerbert Xue <p>Prefer to write smaller modules that can be reused and tested without overrides. 11421*dc5640d1SHerbert Xue 11422*dc5640d1SHerbert Xue @param modules the modules whose bindings are open to be overridden]]> 11423*dc5640d1SHerbert Xue </doc> 11424*dc5640d1SHerbert Xue </method> 11425*dc5640d1SHerbert Xue <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder" 11426*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11427*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 11428*dc5640d1SHerbert Xue deprecated="not deprecated"> 11429*dc5640d1SHerbert Xue <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 11430*dc5640d1SHerbert Xue <doc> 11431*dc5640d1SHerbert Xue <![CDATA[Returns a builder that creates a module that overlays override modules over the given 11432*dc5640d1SHerbert Xue modules. If a key is bound in both sets of modules, only the binding from the override modules 11433*dc5640d1SHerbert Xue is kept. If a single {@link PrivateModule} is supplied or all elements are from 11434*dc5640d1SHerbert Xue a single {@link PrivateBinder}, then this will overwrite the private bindings. 11435*dc5640d1SHerbert Xue Otherwise, private bindings will not be overwritten unless they are exposed. 11436*dc5640d1SHerbert Xue This can be used to replace the bindings of a production module with test bindings: 11437*dc5640d1SHerbert Xue <pre> 11438*dc5640d1SHerbert Xue Module functionalTestModule 11439*dc5640d1SHerbert Xue = Modules.override(getProductionModules()).with(getTestModules()); 11440*dc5640d1SHerbert Xue </pre> 11441*dc5640d1SHerbert Xue 11442*dc5640d1SHerbert Xue <p>Prefer to write smaller modules that can be reused and tested without overrides. 11443*dc5640d1SHerbert Xue 11444*dc5640d1SHerbert Xue @param modules the modules whose bindings are open to be overridden]]> 11445*dc5640d1SHerbert Xue </doc> 11446*dc5640d1SHerbert Xue </method> 11447*dc5640d1SHerbert Xue <method name="combine" return="com.google.inject.Module" 11448*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11449*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 11450*dc5640d1SHerbert Xue deprecated="not deprecated"> 11451*dc5640d1SHerbert Xue <param name="modules" type="com.google.inject.Module[]"/> 11452*dc5640d1SHerbert Xue <doc> 11453*dc5640d1SHerbert Xue <![CDATA[Returns a new module that installs all of {@code modules}.]]> 11454*dc5640d1SHerbert Xue </doc> 11455*dc5640d1SHerbert Xue </method> 11456*dc5640d1SHerbert Xue <method name="combine" return="com.google.inject.Module" 11457*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11458*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 11459*dc5640d1SHerbert Xue deprecated="not deprecated"> 11460*dc5640d1SHerbert Xue <param name="modules" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 11461*dc5640d1SHerbert Xue <doc> 11462*dc5640d1SHerbert Xue <![CDATA[Returns a new module that installs all of {@code modules}.]]> 11463*dc5640d1SHerbert Xue </doc> 11464*dc5640d1SHerbert Xue </method> 11465*dc5640d1SHerbert Xue <field name="EMPTY_MODULE" type="com.google.inject.Module" 11466*dc5640d1SHerbert Xue transient="false" volatile="false" 11467*dc5640d1SHerbert Xue static="true" final="true" visibility="public" 11468*dc5640d1SHerbert Xue deprecated="not deprecated"> 11469*dc5640d1SHerbert Xue </field> 11470*dc5640d1SHerbert Xue <doc> 11471*dc5640d1SHerbert Xue <![CDATA[Static utility methods for creating and working with instances of {@link Module}. 11472*dc5640d1SHerbert Xue 11473*dc5640d1SHerbert Xue @author [email protected] (Jesse Wilson) 11474*dc5640d1SHerbert Xue @since 2.0]]> 11475*dc5640d1SHerbert Xue </doc> 11476*dc5640d1SHerbert Xue </class> 11477*dc5640d1SHerbert Xue <!-- end class com.google.inject.util.Modules --> 11478*dc5640d1SHerbert Xue <!-- start interface com.google.inject.util.Modules.OverriddenModuleBuilder --> 11479*dc5640d1SHerbert Xue <interface name="Modules.OverriddenModuleBuilder" abstract="true" 11480*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 11481*dc5640d1SHerbert Xue deprecated="not deprecated"> 11482*dc5640d1SHerbert Xue <method name="with" return="com.google.inject.Module" 11483*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 11484*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11485*dc5640d1SHerbert Xue deprecated="not deprecated"> 11486*dc5640d1SHerbert Xue <param name="overrides" type="com.google.inject.Module[]"/> 11487*dc5640d1SHerbert Xue <doc> 11488*dc5640d1SHerbert Xue <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]> 11489*dc5640d1SHerbert Xue </doc> 11490*dc5640d1SHerbert Xue </method> 11491*dc5640d1SHerbert Xue <method name="with" return="com.google.inject.Module" 11492*dc5640d1SHerbert Xue abstract="true" native="false" synchronized="false" 11493*dc5640d1SHerbert Xue static="false" final="false" visibility="public" 11494*dc5640d1SHerbert Xue deprecated="not deprecated"> 11495*dc5640d1SHerbert Xue <param name="overrides" type="java.lang.Iterable<? extends com.google.inject.Module>"/> 11496*dc5640d1SHerbert Xue <doc> 11497*dc5640d1SHerbert Xue <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]> 11498*dc5640d1SHerbert Xue </doc> 11499*dc5640d1SHerbert Xue </method> 11500*dc5640d1SHerbert Xue <doc> 11501*dc5640d1SHerbert Xue <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]> 11502*dc5640d1SHerbert Xue </doc> 11503*dc5640d1SHerbert Xue </interface> 11504*dc5640d1SHerbert Xue <!-- end interface com.google.inject.util.Modules.OverriddenModuleBuilder --> 11505*dc5640d1SHerbert Xue <!-- start class com.google.inject.util.Providers --> 11506*dc5640d1SHerbert Xue <class name="Providers" extends="java.lang.Object" 11507*dc5640d1SHerbert Xue abstract="false" 11508*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 11509*dc5640d1SHerbert Xue deprecated="not deprecated"> 11510*dc5640d1SHerbert Xue <method name="of" return="com.google.inject.Provider<T>" 11511*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11512*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 11513*dc5640d1SHerbert Xue deprecated="not deprecated"> 11514*dc5640d1SHerbert Xue <param name="instance" type="T"/> 11515*dc5640d1SHerbert Xue <doc> 11516*dc5640d1SHerbert Xue <![CDATA[Returns a provider which always provides {@code instance}. This should not 11517*dc5640d1SHerbert Xue be necessary to use in your application, but is helpful for several types 11518*dc5640d1SHerbert Xue of unit tests. 11519*dc5640d1SHerbert Xue 11520*dc5640d1SHerbert Xue @param instance the instance that should always be provided. This is also 11521*dc5640d1SHerbert Xue permitted to be null, to enable aggressive testing, although in real 11522*dc5640d1SHerbert Xue life a Guice-supplied Provider will never return null.]]> 11523*dc5640d1SHerbert Xue </doc> 11524*dc5640d1SHerbert Xue </method> 11525*dc5640d1SHerbert Xue <method name="guicify" return="com.google.inject.Provider<T>" 11526*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11527*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 11528*dc5640d1SHerbert Xue deprecated="not deprecated"> 11529*dc5640d1SHerbert Xue <param name="provider" type="javax.inject.Provider<T>"/> 11530*dc5640d1SHerbert Xue <doc> 11531*dc5640d1SHerbert Xue <![CDATA[Returns a Guice-friendly {@code com.google.inject.Provider} for the given 11532*dc5640d1SHerbert Xue JSR-330 {@code javax.inject.Provider}. The converse method is unnecessary, 11533*dc5640d1SHerbert Xue since Guice providers directly implement the JSR-330 interface. 11534*dc5640d1SHerbert Xue 11535*dc5640d1SHerbert Xue @since 3.0]]> 11536*dc5640d1SHerbert Xue </doc> 11537*dc5640d1SHerbert Xue </method> 11538*dc5640d1SHerbert Xue <doc> 11539*dc5640d1SHerbert Xue <![CDATA[Static utility methods for creating and working with instances of 11540*dc5640d1SHerbert Xue {@link Provider}. 11541*dc5640d1SHerbert Xue 11542*dc5640d1SHerbert Xue @author Kevin Bourrillion ([email protected]) 11543*dc5640d1SHerbert Xue @since 2.0]]> 11544*dc5640d1SHerbert Xue </doc> 11545*dc5640d1SHerbert Xue </class> 11546*dc5640d1SHerbert Xue <!-- end class com.google.inject.util.Providers --> 11547*dc5640d1SHerbert Xue <!-- start class com.google.inject.util.Types --> 11548*dc5640d1SHerbert Xue <class name="Types" extends="java.lang.Object" 11549*dc5640d1SHerbert Xue abstract="false" 11550*dc5640d1SHerbert Xue static="false" final="true" visibility="public" 11551*dc5640d1SHerbert Xue deprecated="not deprecated"> 11552*dc5640d1SHerbert Xue <method name="newParameterizedType" return="java.lang.reflect.ParameterizedType" 11553*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11554*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 11555*dc5640d1SHerbert Xue deprecated="not deprecated"> 11556*dc5640d1SHerbert Xue <param name="rawType" type="java.lang.reflect.Type"/> 11557*dc5640d1SHerbert Xue <param name="typeArguments" type="java.lang.reflect.Type[]"/> 11558*dc5640d1SHerbert Xue <doc> 11559*dc5640d1SHerbert Xue <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to 11560*dc5640d1SHerbert Xue {@code rawType}. The returned type does not have an owner type. 11561*dc5640d1SHerbert Xue 11562*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]> 11563*dc5640d1SHerbert Xue </doc> 11564*dc5640d1SHerbert Xue </method> 11565*dc5640d1SHerbert Xue <method name="newParameterizedTypeWithOwner" return="java.lang.reflect.ParameterizedType" 11566*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11567*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 11568*dc5640d1SHerbert Xue deprecated="not deprecated"> 11569*dc5640d1SHerbert Xue <param name="ownerType" type="java.lang.reflect.Type"/> 11570*dc5640d1SHerbert Xue <param name="rawType" type="java.lang.reflect.Type"/> 11571*dc5640d1SHerbert Xue <param name="typeArguments" type="java.lang.reflect.Type[]"/> 11572*dc5640d1SHerbert Xue <doc> 11573*dc5640d1SHerbert Xue <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to 11574*dc5640d1SHerbert Xue {@code rawType} and enclosed by {@code ownerType}. 11575*dc5640d1SHerbert Xue 11576*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]> 11577*dc5640d1SHerbert Xue </doc> 11578*dc5640d1SHerbert Xue </method> 11579*dc5640d1SHerbert Xue <method name="arrayOf" return="java.lang.reflect.GenericArrayType" 11580*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11581*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 11582*dc5640d1SHerbert Xue deprecated="not deprecated"> 11583*dc5640d1SHerbert Xue <param name="componentType" type="java.lang.reflect.Type"/> 11584*dc5640d1SHerbert Xue <doc> 11585*dc5640d1SHerbert Xue <![CDATA[Returns an array type whose elements are all instances of 11586*dc5640d1SHerbert Xue {@code componentType}. 11587*dc5640d1SHerbert Xue 11588*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} generic array type.]]> 11589*dc5640d1SHerbert Xue </doc> 11590*dc5640d1SHerbert Xue </method> 11591*dc5640d1SHerbert Xue <method name="subtypeOf" return="java.lang.reflect.WildcardType" 11592*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11593*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 11594*dc5640d1SHerbert Xue deprecated="not deprecated"> 11595*dc5640d1SHerbert Xue <param name="bound" type="java.lang.reflect.Type"/> 11596*dc5640d1SHerbert Xue <doc> 11597*dc5640d1SHerbert Xue <![CDATA[Returns a type that represents an unknown type that extends {@code bound}. 11598*dc5640d1SHerbert Xue For example, if {@code bound} is {@code CharSequence.class}, this returns 11599*dc5640d1SHerbert Xue {@code ? extends CharSequence}. If {@code bound} is {@code Object.class}, 11600*dc5640d1SHerbert Xue this returns {@code ?}, which is shorthand for {@code ? extends Object}.]]> 11601*dc5640d1SHerbert Xue </doc> 11602*dc5640d1SHerbert Xue </method> 11603*dc5640d1SHerbert Xue <method name="supertypeOf" return="java.lang.reflect.WildcardType" 11604*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11605*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 11606*dc5640d1SHerbert Xue deprecated="not deprecated"> 11607*dc5640d1SHerbert Xue <param name="bound" type="java.lang.reflect.Type"/> 11608*dc5640d1SHerbert Xue <doc> 11609*dc5640d1SHerbert Xue <![CDATA[Returns a type that represents an unknown supertype of {@code bound}. For 11610*dc5640d1SHerbert Xue example, if {@code bound} is {@code String.class}, this returns {@code ? 11611*dc5640d1SHerbert Xue super String}.]]> 11612*dc5640d1SHerbert Xue </doc> 11613*dc5640d1SHerbert Xue </method> 11614*dc5640d1SHerbert Xue <method name="listOf" return="java.lang.reflect.ParameterizedType" 11615*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11616*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 11617*dc5640d1SHerbert Xue deprecated="not deprecated"> 11618*dc5640d1SHerbert Xue <param name="elementType" type="java.lang.reflect.Type"/> 11619*dc5640d1SHerbert Xue <doc> 11620*dc5640d1SHerbert Xue <![CDATA[Returns a type modelling a {@link List} whose elements are of type 11621*dc5640d1SHerbert Xue {@code elementType}. 11622*dc5640d1SHerbert Xue 11623*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]> 11624*dc5640d1SHerbert Xue </doc> 11625*dc5640d1SHerbert Xue </method> 11626*dc5640d1SHerbert Xue <method name="setOf" return="java.lang.reflect.ParameterizedType" 11627*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11628*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 11629*dc5640d1SHerbert Xue deprecated="not deprecated"> 11630*dc5640d1SHerbert Xue <param name="elementType" type="java.lang.reflect.Type"/> 11631*dc5640d1SHerbert Xue <doc> 11632*dc5640d1SHerbert Xue <![CDATA[Returns a type modelling a {@link Set} whose elements are of type 11633*dc5640d1SHerbert Xue {@code elementType}. 11634*dc5640d1SHerbert Xue 11635*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]> 11636*dc5640d1SHerbert Xue </doc> 11637*dc5640d1SHerbert Xue </method> 11638*dc5640d1SHerbert Xue <method name="mapOf" return="java.lang.reflect.ParameterizedType" 11639*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11640*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 11641*dc5640d1SHerbert Xue deprecated="not deprecated"> 11642*dc5640d1SHerbert Xue <param name="keyType" type="java.lang.reflect.Type"/> 11643*dc5640d1SHerbert Xue <param name="valueType" type="java.lang.reflect.Type"/> 11644*dc5640d1SHerbert Xue <doc> 11645*dc5640d1SHerbert Xue <![CDATA[Returns a type modelling a {@link Map} whose keys are of type 11646*dc5640d1SHerbert Xue {@code keyType} and whose values are of type {@code valueType}. 11647*dc5640d1SHerbert Xue 11648*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]> 11649*dc5640d1SHerbert Xue </doc> 11650*dc5640d1SHerbert Xue </method> 11651*dc5640d1SHerbert Xue <method name="providerOf" return="java.lang.reflect.ParameterizedType" 11652*dc5640d1SHerbert Xue abstract="false" native="false" synchronized="false" 11653*dc5640d1SHerbert Xue static="true" final="false" visibility="public" 11654*dc5640d1SHerbert Xue deprecated="not deprecated"> 11655*dc5640d1SHerbert Xue <param name="providedType" type="java.lang.reflect.Type"/> 11656*dc5640d1SHerbert Xue <doc> 11657*dc5640d1SHerbert Xue <![CDATA[Returns a type modelling a {@link Provider} that provides elements of type 11658*dc5640d1SHerbert Xue {@code elementType}. 11659*dc5640d1SHerbert Xue 11660*dc5640d1SHerbert Xue @return a {@link java.io.Serializable serializable} parameterized type.]]> 11661*dc5640d1SHerbert Xue </doc> 11662*dc5640d1SHerbert Xue </method> 11663*dc5640d1SHerbert Xue <doc> 11664*dc5640d1SHerbert Xue <![CDATA[Static methods for working with types. 11665*dc5640d1SHerbert Xue 11666*dc5640d1SHerbert Xue @author [email protected] (Bob Lee) 11667*dc5640d1SHerbert Xue @since 2.0]]> 11668*dc5640d1SHerbert Xue </doc> 11669*dc5640d1SHerbert Xue </class> 11670*dc5640d1SHerbert Xue <!-- end class com.google.inject.util.Types --> 11671*dc5640d1SHerbert Xue</package> 11672*dc5640d1SHerbert Xue 11673*dc5640d1SHerbert Xue</api> 11674