Helping out ssg.

This commit is contained in:
JesseBrault0709 2024-05-16 17:25:36 +02:00
parent ebe778fbaf
commit 4dcab43b6a
5 changed files with 23 additions and 13 deletions

View File

@ -13,6 +13,10 @@ dependencies {
implementation libs.slf4j.api, libs.groovy
}
java {
withSourcesJar()
}
jar {
archiveBaseName = 'groowt-util-di'
}

View File

@ -27,6 +27,10 @@ public final class BindingUtil {
return bc -> {};
}
public static <T> KeyHolder<NamedRegistryExtension, String, T> named(String name, Class<T> type) {
return new SimpleKeyHolder<>(NamedRegistryExtension.class, type, name);
}
private BindingUtil() {}
}

View File

@ -1,9 +1,3 @@
package groowt.util.di;
public interface NamedRegistryExtension extends RegistryExtension, KeyBinder<String>, QualifierHandlerContainer {
static <T> KeyHolder<NamedRegistryExtension, String, T> named(String name, Class<T> type) {
return new SimpleKeyHolder<>(NamedRegistryExtension.class, type, name);
}
}
public interface NamedRegistryExtension extends RegistryExtension, KeyBinder<String>, QualifierHandlerContainer {}

View File

@ -2,8 +2,6 @@ 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;
@ -20,10 +18,22 @@ import java.util.function.Consumer;
public interface RegistryObjectFactory extends ObjectFactory {
interface Builder<T extends RegistryObjectFactory> {
void configureRegistry(Consumer<? super Registry> configure);
default void configureRegistry(@DelegatesTo(Registry.class) Closure<?> configureClosure) {
this.configureRegistry(registry -> {
configureClosure.setDelegate(registry);
configureClosure.call();
});
}
void addFilterHandler(FilterHandler<?, ?> handler);
void addIterableFilterHandler(IterableFilterHandler<?, ?> handler);
T build();
}
Registry getRegistry();
@ -33,13 +43,12 @@ public interface RegistryObjectFactory extends ObjectFactory {
}
default void configureRegistry(
@DelegatesTo(Registry.class)
@ClosureParams(value = FromString.class, options = "groowt.util.di.Registry")
@DelegatesTo(value = Registry.class)
Closure<?> configureClosure
) {
final Registry registry = this.getRegistry();
configureClosure.setDelegate(registry);
configureClosure.call(registry);
configureClosure.call();
}
<A extends Annotation> @Nullable ScopeHandler<A> findScopeHandler(Class<A> scopeType);

View File

@ -5,7 +5,6 @@ import jakarta.inject.Named;
import org.junit.jupiter.api.Test;
import static groowt.util.di.BindingUtil.*;
import static groowt.util.di.NamedRegistryExtension.named;
import static org.junit.jupiter.api.Assertions.*;
public class DefaultRegistryObjectFactoryTests {