diff --git a/lib/src/main/java/net/tomatentum/cutin/factory/ImmutableMethodFactory.java b/lib/src/main/java/net/tomatentum/cutin/factory/ImmutableMethodFactory.java new file mode 100644 index 0000000..6555efb --- /dev/null +++ b/lib/src/main/java/net/tomatentum/cutin/factory/ImmutableMethodFactory.java @@ -0,0 +1,20 @@ +package net.tomatentum.cutin.factory; + +import java.util.Set; + +import net.tomatentum.cutin.MethodParser; + +public abstract class ImmutableMethodFactory implements ReflectedMethodFactory.Factory { + + protected Set parser; + + protected ImmutableMethodFactory(MethodParser... parser) { + this.parser = Set.of(parser); + } + + @Override + public Set parser() { + return this.parser; + } + +} diff --git a/lib/src/main/java/net/tomatentum/cutin/factory/MutableMethodFactory.java b/lib/src/main/java/net/tomatentum/cutin/factory/MutableMethodFactory.java new file mode 100644 index 0000000..5318a38 --- /dev/null +++ b/lib/src/main/java/net/tomatentum/cutin/factory/MutableMethodFactory.java @@ -0,0 +1,17 @@ +package net.tomatentum.cutin.factory; + +import net.tomatentum.cutin.MethodParser; + +public abstract class MutableMethodFactory extends ImmutableMethodFactory { + + public MutableMethodFactory addParser(MethodParser parser) { + super.parser.add(parser); + return this; + } + + public MutableMethodFactory removeParser(MethodParser parser) { + super.parser.remove(parser); + return this; + } + +} diff --git a/lib/src/main/java/net/tomatentum/cutin/factory/ReflectedMethodFactory.java b/lib/src/main/java/net/tomatentum/cutin/factory/ReflectedMethodFactory.java index e7f1d5c..01b20d2 100644 --- a/lib/src/main/java/net/tomatentum/cutin/factory/ReflectedMethodFactory.java +++ b/lib/src/main/java/net/tomatentum/cutin/factory/ReflectedMethodFactory.java @@ -17,7 +17,7 @@ public interface ReflectedMethodFactory { public interface Factory { Optional> produce(Method method, Object containingObject, ParserResults parserResults); - void addParser(Set parser); + Set parser(); } diff --git a/lib/src/main/java/net/tomatentum/cutin/factory/ReflectedMethodFactoryImpl.java b/lib/src/main/java/net/tomatentum/cutin/factory/ReflectedMethodFactoryImpl.java index 48bdb12..87e0f26 100644 --- a/lib/src/main/java/net/tomatentum/cutin/factory/ReflectedMethodFactoryImpl.java +++ b/lib/src/main/java/net/tomatentum/cutin/factory/ReflectedMethodFactoryImpl.java @@ -55,8 +55,7 @@ public class ReflectedMethodFactoryImpl impl } private Optional> factoryProduce(Factory factory, Method method, Object containingClass) { - Set parser = new HashSet<>(); - factory.addParser(parser); + Set parser = factory.parser(); ParserResults results = ParserResults.create(parser, method, containingClass); return factory.produce(method, containingClass, results); }