com.google.inject.spi
Class InjectionPoint

java.lang.Object
  extended by com.google.inject.spi.InjectionPoint
All Implemented Interfaces:
Serializable

public final class InjectionPoint
extends Object
implements Serializable

A constructor, field or method that can receive injections. Typically this is a member with the @Inject annotation. For non-private, no argument constructors, the member may omit the annotation.

See Also:
Serialized Form

Method Summary
static void addForInstanceMethodsAndFields(Class<?> type, Collection<InjectionPoint> sink)
          Adds all instance method and field injection points on type to injectionPoints.
static void addForStaticMethodsAndFields(Class<?> type, Collection<InjectionPoint> sink)
          Adds all static method and field injection points on type to injectionPoints.
 boolean equals(Object o)
           
static InjectionPoint forConstructorOf(Class<?> type)
          Returns a new injection point for the injectable constructor of type.
 List<Dependency<?>> getDependencies()
          Returns the dependencies for this injection point.
 Member getMember()
          Returns the injected constructor, field, or method.
 int hashCode()
           
 boolean isOptional()
          Returns true if this injection point shall be skipped if the injector cannot resolve bindings for all required dependencies.
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Method Detail

getMember

public Member getMember()
Returns the injected constructor, field, or method.


getDependencies

public List<Dependency<?>> getDependencies()
Returns the dependencies for this injection point. If the injection point is for a method or constructor, the dependencies will correspond to that member's parameters. Field injection points always have a single dependency for the field itself.

Returns:
a possibly-empty list

isOptional

public boolean isOptional()
Returns true if this injection point shall be skipped if the injector cannot resolve bindings for all required dependencies. Both explicit bindings (as specified in a module), and implicit bindings (@ImplementedBy, default constructors etc.) may be used to satisfy optional injection points.


equals

public boolean equals(Object o)
Overrides:
equals in class Object

hashCode

public int hashCode()
Overrides:
hashCode in class Object

toString

public String toString()
Overrides:
toString in class Object

forConstructorOf

public static InjectionPoint forConstructorOf(Class<?> type)
Returns a new injection point for the injectable constructor of type.

Parameters:
type - a concrete type with exactly one constructor annotated @Inject, or a no-arguments constructor that is not private.
Throws:
RuntimeException - if there is no injectable constructor, more than one injectable constructor, or if parameters of the injectable constructor are malformed, such as a parameter with multiple binding annotations.

addForStaticMethodsAndFields

public static void addForStaticMethodsAndFields(Class<?> type,
                                                Collection<InjectionPoint> sink)
Adds all static method and field injection points on type to injectionPoints. All fields are added first, and then all methods. Within the fields, supertype fields are added before subtype fields. Similarly, supertype methods are added before subtype methods.

Throws:
RuntimeException - if there is a malformed injection point on type, such as a field with multiple binding annotations. When such an exception is thrown, the valid injection points are still added to the collection.

addForInstanceMethodsAndFields

public static void addForInstanceMethodsAndFields(Class<?> type,
                                                  Collection<InjectionPoint> sink)
Adds all instance method and field injection points on type to injectionPoints. All fields are added first, and then all methods. Within the fields, supertype fields are added before subtype fields. Similarly, supertype methods are added before subtype methods.

Throws:
RuntimeException - if there is a malformed injection point on type, such as a field with multiple binding annotations. When such an exception is thrown, the valid injection points are still added to the collection.