Top Description Fields Constructors Methods
com.google.inject.internal

public abstract Class Scoping

extends Object
Class Inheritance
Imports
com.google.common.base.Objects, com.google.inject.Key, .Provider, .Scope, .Scopes, .Singleton, .Stage, com.google.inject.binder.ScopedBindingBuilder, com.google.inject.spi.BindingScopingVisitor, .ScopeBinding, java.lang.annotation.Annotation

References a scope, either directly (as a scope instance), or indirectly (as a scope annotation). The scope's eager or laziness is also exposed.
Author
[email protected] (Jesse Wilson)

Field Summary

Modifier and TypeField and Description
public static final Scoping
private static final Scoping
EXPLICITLY_UNSCOPED

No scoping annotation has been applied explicitly.

public static final Scoping
public static final Scoping
public static final Scoping
UNSCOPED

No scoping annotation has been applied.

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public abstract <V> V
public abstract void
applyTo(ScopedBindingBuilder scopedBindingBuilder)

public boolean
equals(Object
the reference object with which to compare.
obj
)

Overrides java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.
public static Scoping
forAnnotation(final Class<? extends Annotation> scopingAnnotation)

public static Scoping
forInstance(final Scope scope)

public Class<? extends Annotation>
getScopeAnnotation()

Returns the scope annotation, or null if that isn't known for this instance.

public Scope
getScopeInstance()

Returns the scope instance, or null if that isn't known for this instance.

public int
hashCode()

Overrides java.lang.Object.hashCode.

Returns a hash code value for this object.
public boolean
isEagerSingleton(Stage stage)

Returns true if this scope is a singleton that should be loaded eagerly in stage.

public boolean
isExplicitlyScoped()

Returns true if this scope was explicitly applied.

public boolean
isNoScope()

Returns true if this is the default scope.

pack-priv static Scoping
makeInjectable(Scoping scoping, InjectorImpl injector, Errors errors)

Replaces annotation scopes with instance scopes using the Injector's annotation-to-instance map.

pack-priv static <T> InternalFactory<? extends T>
scope(Key<T> key, InjectorImpl injector, InternalFactory<? extends T> creator, Object source, Scoping scoping)

Scopes an internal factory.

Inherited from java.lang.Object:
clonefinalizegetClassnotifynotifyAlltoStringwaitwaitwait

Field Detail

EAGER_SINGLETONback to summary
public static final Scoping EAGER_SINGLETON
EXPLICITLY_UNSCOPEDback to summary
private static final Scoping EXPLICITLY_UNSCOPED

No scoping annotation has been applied explicitly. Note that this is is the same as in(Scopes.NO_SCOPE).

SINGLETON_ANNOTATIONback to summary
public static final Scoping SINGLETON_ANNOTATION
SINGLETON_INSTANCEback to summary
public static final Scoping SINGLETON_INSTANCE
UNSCOPEDback to summary
public static final Scoping UNSCOPED

No scoping annotation has been applied. Note that this is different from in(Scopes.NO_SCOPE), where the 'NO_SCOPE' has been explicitly applied.

Constructor Detail

Scopingback to summary
private Scoping()

Method Detail

acceptVisitorback to summary
public abstract <V> V acceptVisitor(BindingScopingVisitor<V> visitor)
applyToback to summary
public abstract void applyTo(ScopedBindingBuilder scopedBindingBuilder)
equalsback to summary
public boolean equals(Object obj)

Overrides java.lang.Object.equals.

Doc from java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
obj:Object

the reference object with which to compare.

Returns:boolean

true if this object is the same as the obj argument; false otherwise.

Annotations
@Override
forAnnotationback to summary
public static Scoping forAnnotation(final Class<? extends Annotation> scopingAnnotation)
forInstanceback to summary
public static Scoping forInstance(final Scope scope)
getScopeAnnotationback to summary
public Class<? extends Annotation> getScopeAnnotation()

Returns the scope annotation, or null if that isn't known for this instance.

getScopeInstanceback to summary
public Scope getScopeInstance()

Returns the scope instance, or null if that isn't known for this instance.

hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Doc from java.lang.Object.hashCode.

Returns a hash code value for this object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
Returns:int

a hash code value for this object

Annotations
@Override
isEagerSingletonback to summary
public boolean isEagerSingleton(Stage stage)

Returns true if this scope is a singleton that should be loaded eagerly in stage.

isExplicitlyScopedback to summary
public boolean isExplicitlyScoped()

Returns true if this scope was explicitly applied. If no scope was explicitly applied then the scoping annotation will be used.

isNoScopeback to summary
public boolean isNoScope()

Returns true if this is the default scope. In this case a new instance will be provided for each injection.

makeInjectableback to summary
pack-priv static Scoping makeInjectable(Scoping scoping, InjectorImpl injector, Errors errors)

Replaces annotation scopes with instance scopes using the Injector's annotation-to-instance map. If the scope annotation has no corresponding instance, an error will be added and unscoped will be returned.

scopeback to summary
pack-priv static <T> InternalFactory<? extends T> scope(Key<T> key, InjectorImpl injector, InternalFactory<? extends T> creator, Object source, Scoping scoping)

Scopes an internal factory.