Working on fp and di.

This commit is contained in:
JesseBrault0709 2024-05-13 16:42:57 +02:00
parent 11312c2807
commit ebe778fbaf
4 changed files with 23 additions and 3 deletions

View File

@ -8,6 +8,7 @@ plugins {
dependencies {
api libs.jakarta.inject
api libs.groovy
compileOnlyApi libs.jetbrains.anotations
implementation libs.slf4j.api, libs.groovy
}

View File

@ -75,8 +75,8 @@ public abstract class AbstractRegistryObjectFactory extends AbstractInjectingObj
}
@Override
public void configureRegistry(Consumer<? super Registry> use) {
use.accept(this.registry);
public Registry getRegistry() {
return this.registry;
}
@Override

View File

@ -6,6 +6,7 @@ import java.util.function.Consumer;
import java.util.function.Predicate;
public interface Registry extends ExtensionContainer, QualifierHandlerContainer, ScopeHandlerContainer {
<T> void bind(Class<T> key, Consumer<? super BindingConfigurator<T>> configure);
@Nullable <T> Binding<T> getBinding(Class<T> key);
void removeBinding(Class<?> key);

View File

@ -1,5 +1,9 @@
package groowt.util.di;
import groovy.lang.Closure;
import groovy.lang.DelegatesTo;
import groovy.transform.stc.ClosureParams;
import groovy.transform.stc.FromString;
import groowt.util.di.filters.FilterHandler;
import groowt.util.di.filters.IterableFilterHandler;
import jakarta.inject.Provider;
@ -22,7 +26,21 @@ public interface RegistryObjectFactory extends ObjectFactory {
T build();
}
void configureRegistry(Consumer<? super Registry> use);
Registry getRegistry();
default void configureRegistry(Consumer<? super Registry> use) {
use.accept(this.getRegistry());
}
default void configureRegistry(
@DelegatesTo(Registry.class)
@ClosureParams(value = FromString.class, options = "groowt.util.di.Registry")
Closure<?> configureClosure
) {
final Registry registry = this.getRegistry();
configureClosure.setDelegate(registry);
configureClosure.call(registry);
}
<A extends Annotation> @Nullable ScopeHandler<A> findScopeHandler(Class<A> scopeType);