feat(factory): introduce Mutable and Immutable methodfactory and change parser pipeline
All checks were successful
Build / Gradle-Build (push) Successful in 2m12s
Test / Gradle-Test (push) Successful in 32s

This commit is contained in:
tueem 2025-05-02 13:00:28 +02:00
parent ad2c4c00f6
commit a2bdb549f9
Signed by: tueem
GPG Key ID: 65C8667EC17A88FB
4 changed files with 39 additions and 3 deletions

View File

@ -0,0 +1,20 @@
package net.tomatentum.cutin.factory;
import java.util.Set;
import net.tomatentum.cutin.MethodParser;
public abstract class ImmutableMethodFactory<I extends Object, C extends Object> implements ReflectedMethodFactory.Factory<I, C> {
protected Set<MethodParser> parser;
protected ImmutableMethodFactory(MethodParser... parser) {
this.parser = Set.of(parser);
}
@Override
public Set<MethodParser> parser() {
return this.parser;
}
}

View File

@ -0,0 +1,17 @@
package net.tomatentum.cutin.factory;
import net.tomatentum.cutin.MethodParser;
public abstract class MutableMethodFactory<I extends Object, C extends Object> extends ImmutableMethodFactory<I, C> {
public MutableMethodFactory<I, C> addParser(MethodParser parser) {
super.parser.add(parser);
return this;
}
public MutableMethodFactory<I, C> removeParser(MethodParser parser) {
super.parser.remove(parser);
return this;
}
}

View File

@ -17,7 +17,7 @@ public interface ReflectedMethodFactory<I extends Object, C extends Object> {
public interface Factory<I extends Object, C extends Object> { public interface Factory<I extends Object, C extends Object> {
Optional<ReflectedMethod<I, C>> produce(Method method, Object containingObject, ParserResults parserResults); Optional<ReflectedMethod<I, C>> produce(Method method, Object containingObject, ParserResults parserResults);
void addParser(Set<MethodParser> parser); Set<MethodParser> parser();
} }

View File

@ -55,8 +55,7 @@ public class ReflectedMethodFactoryImpl<I extends Object, C extends Object> impl
} }
private Optional<ReflectedMethod<I, C>> factoryProduce(Factory<I, C> factory, Method method, Object containingClass) { private Optional<ReflectedMethod<I, C>> factoryProduce(Factory<I, C> factory, Method method, Object containingClass) {
Set<MethodParser> parser = new HashSet<>(); Set<MethodParser> parser = factory.parser();
factory.addParser(parser);
ParserResults results = ParserResults.create(parser, method, containingClass); ParserResults results = ParserResults.create(parser, method, containingClass);
return factory.produce(method, containingClass, results); return factory.produce(method, containingClass, results);
} }