com.google.gwt.inject.rebind.binding
Class FactoryBinding

java.lang.Object
  extended by com.google.gwt.inject.rebind.binding.FactoryBinding
All Implemented Interfaces:
Binding

public class FactoryBinding
extends java.lang.Object
implements Binding

Binder producing assisted inject factories.

For each method in the factory interface, the binder will determine the implementation type from the return type and the provided bindings. It will then check all constructors in the implementation type against the method parameters (taking named @Assisted annotations into account) and pick a matching one (if available). To inject the selected constructor the binder will write a common method injection, replacing the parameters commonly retrieved through key-specific getter methods with values obtained from the matching method arguments. Finally, after an instance has been constructed, it will be member-injected before it is returned to the caller of the method.


Method Summary
 Context getContext()
          Returns the context in which this binding was created.
 SourceSnippet getCreationStatements(NameGenerator nameGenerator, java.util.List<InjectorMethod> methodsOutput)
          Gets one or more fully formed Java statements that create the bound value and store it in a new local variable named result.
 java.util.Collection<Dependency> getDependencies()
          Returns the set of dependencies that this binding produces.
 java.lang.String getGetterMethodPackage()
          Returns the package in which the getter for the bound key is created.
 java.util.Collection<TypeLiteral<?>> getMemberInjectRequests()
          Returns the set of types for which this binding requires member injection methods to be written.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.google.gwt.inject.rebind.binding.Binding
getContext, getGetterMethodPackage
 

Method Detail

getCreationStatements

public SourceSnippet getCreationStatements(NameGenerator nameGenerator,
                                           java.util.List<InjectorMethod> methodsOutput)
                                    throws NoSourceNameException
Description copied from interface: Binding
Gets one or more fully formed Java statements that create the bound value and store it in a new local variable named result. If additional methods are to be created, the given NameGenerator should be used to choose their names, and they should be added to methodsOutput.

Specified by:
getCreationStatements in interface Binding
Throws:
NoSourceNameException - if source name is not available for type

getDependencies

public java.util.Collection<Dependency> getDependencies()
Description copied from interface: Binding
Returns the set of dependencies that this binding produces. This contains edges coming into the key that this type binds (from Dependency.GINJECTOR) as well as dependencies that this binding needs.

Specified by:
getDependencies in interface Binding

getMemberInjectRequests

public java.util.Collection<TypeLiteral<?>> getMemberInjectRequests()
Description copied from interface: Binding
Returns the set of types for which this binding requires member injection methods to be written.

Specified by:
getMemberInjectRequests in interface Binding

getContext

public Context getContext()
Description copied from interface: Binding
Returns the context in which this binding was created.

Specified by:
getContext in interface Binding

getGetterMethodPackage

public java.lang.String getGetterMethodPackage()
Description copied from interface: Binding
Returns the package in which the getter for the bound key is created. This is used by other bindings and by the top-level interface to determine which package this binding's method was written to. Implementors may assume that all other bindings have been created and placed in their respective GinjectorBindings objects.

Typically this will be the package containing the type that is returned by the getter, but the only requirement is that it has to be a package where the return type is visible.

Specified by:
getGetterMethodPackage in interface Binding