Record Class DefaultInjectionLayer<I extends Injector>
java.lang.Object
java.lang.Record
eu.cloudnetservice.driver.inject.DefaultInjectionLayer<I>
- Type Parameters:
I- the type of injector this layer uses.- Record Components:
injector- the injector to use for the layer.autoModule- the auto registry to use for the layer.name- the name of this injection layer.
- All Implemented Interfaces:
Named, InjectionLayer<I>, AutoCloseable
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final @NonNull dev.derklaro.aerogel.auto.AerogelAutoModuleThe field for theautoModulerecord component.private final IThe field for theinjectorrecord component.The field for thenamerecord component.Fields inherited from interface InjectionLayer
AUTO_CONFIGURE_FILE_NAME_FORMAT -
Constructor Summary
ConstructorsConstructorDescriptionDefaultInjectionLayer(I injector, @NonNull dev.derklaro.aerogel.auto.AerogelAutoModule autoModule, @NonNull String name) Creates an instance of aDefaultInjectionLayerrecord class. -
Method Summary
Modifier and TypeMethodDescriptionMakes this injection layer not closeable, returning the same layer if it is already not closeable.@NonNull dev.derklaro.aerogel.auto.AerogelAutoModuleReturns the value of theautoModulerecord component.voidclose()Closes this injector and removes all leftover bindings (if any).final booleanIndicates whether some other object is "equal to" this one.final inthashCode()Returns a hash code value for this object.injector()Gets the underlying injector of this layer.voidinstall(@NonNull DynamicBinding binding) Installs a dynamic binding into the underlying injector.voidinstall(@NonNull UninstalledBinding<?> binding) Installs the uninstalled binding into the underlying injector.voidinstallAutoConfigureBindings(@NonNull ClassLoader loader, @NonNull String component) Installs the autoconfiguration bindings for the given component.<T> @UnknownNullability Tinstance(@NonNull BindingKey<T> bindingKey) Convince method to create or get the instance of the given binding key.<T> @UnknownNullability TConvince method to create or get the instance of the given class type.<T> @UnknownNullability Tinstance(@NonNull Class<T> type, @NonNull UnaryOperator<InjectionRequest<T>> decorator) Convince method to create or get the instance of the given type, while allowing to specifically influence the injection context.name()Returns the value of thenamerecord component.Registers this injection layer to the injection layer registry.final StringtoString()Returns a string representation of this record class.
-
Field Details
-
injector
-
autoModule
The field for theautoModulerecord component. -
name
-
-
Constructor Details
-
DefaultInjectionLayer
DefaultInjectionLayer(@NonNull I injector, @NonNull @NonNull dev.derklaro.aerogel.auto.AerogelAutoModule autoModule, @NonNull @NonNull String name) Creates an instance of aDefaultInjectionLayerrecord class.- Parameters:
injector- the value for theinjectorrecord componentautoModule- the value for theautoModulerecord componentname- the value for thenamerecord component
-
-
Method Details
-
injector
-
instance
Convince method to create or get the instance of the given class type.- Specified by:
instancein interfaceInjectionLayer<I extends Injector>- Type Parameters:
T- the type of the class modeled by the given class object.- Parameters:
type- the type of the element to get.- Returns:
- the constructed instance of the class type, may be null.
-
instance
Convince method to create or get the instance of the given binding key.- Specified by:
instancein interfaceInjectionLayer<I extends Injector>- Type Parameters:
T- the type of the return value modeled by the given binding key.- Parameters:
bindingKey- the binding key for the instance to resolve.- Returns:
- the constructed instance of the class type, may be null.
-
instance
public <T> @UnknownNullability T instance(@NonNull @NonNull Class<T> type, @NonNull @NonNull UnaryOperator<InjectionRequest<T>> decorator) Convince method to create or get the instance of the given type, while allowing to specifically influence the injection context.- Specified by:
instancein interfaceInjectionLayer<I extends Injector>- Type Parameters:
T- the type of the return value modeled by the given element.- Parameters:
type- the type of the element to get.decorator- the decorator for the injection request.- Returns:
- the constructed instance of the class type, may be null.
-
install
Installs the uninstalled binding into the underlying injector.- Specified by:
installin interfaceInjectionLayer<I extends Injector>- Parameters:
binding- the binding to install.
-
install
Installs a dynamic binding into the underlying injector. The dynamic binding can be used to provide bindings based on the presence of annotations and other matching criteria. Dynamic bindings have a lower priority thanUninstalledBinding.- Specified by:
installin interfaceInjectionLayer<I extends Injector>- Parameters:
binding- the dynamic binding to install.
-
installAutoConfigureBindings
public void installAutoConfigureBindings(@NonNull @NonNull ClassLoader loader, @NonNull @NonNull String component) Installs the autoconfiguration bindings for the given component. For this method to work the autoconfiguration bindings must be located atautoconfigure/<component>.aero.This method binds the autoconfiguration bindings to the underlying injector of this layer.
- Specified by:
installAutoConfigureBindingsin interfaceInjectionLayer<I extends Injector>- Parameters:
loader- the loader in which the file resource is located.component- the name of the component to load the autoconfiguration bindings of.
-
asUncloseable
Makes this injection layer not closeable, returning the same layer if it is already not closeable.- Specified by:
asUncloseablein interfaceInjectionLayer<I extends Injector>- Returns:
- the same injection layer from the functionality, but not closeable.
-
register
Registers this injection layer to the injection layer registry. Subsequent calls toInjectionLayer.findLayerOf(Object)will be able to resolve the layer if the given object value is the exact the same as given as one of the hints (exact as by using the==compare operation).Note that the layer lookup order is predictable based on the call order of register. If different layers are registered for the same objects, the first layer to be registered will be found.
- Specified by:
registerin interfaceInjectionLayer<I extends Injector>- Parameters:
hints- the hints to use for the layer registration.- Returns:
- the same layer as used to call the method, for chaining.
-
close
public void close()Closes this injector and removes all leftover bindings (if any).- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceInjectionLayer<I extends Injector>
-
toString
-
hashCode
-
equals
Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared withObjects::equals(Object,Object). -
autoModule
Returns the value of theautoModulerecord component.- Returns:
- the value of the
autoModulerecord component
-
name
-