2222import org .metafacture .metafix .api .FixContext ;
2323import org .metafacture .metafix .api .FixFunction ;
2424import org .metafacture .metafix .api .FixPredicate ;
25+ import org .metafacture .metafix .api .FixRegistry ;
2526import org .metafacture .metafix .fix .Do ;
2627import org .metafacture .metafix .fix .ElsIf ;
2728import org .metafacture .metafix .fix .Else ;
@@ -62,6 +63,7 @@ public class RecordTransformer { // checkstyle-disable-line ClassFanOutComplexit
6263
6364 private static final Logger LOG = LoggerFactory .getLogger (RecordTransformer .class );
6465
66+ private final FixRegistry registry ;
6567 private final List <Consumer <Record >> consumers = new LinkedList <>();
6668 private final List <Map <String , String >> vars = new ArrayList <>(Collections .nCopies (Vars .values ().length , null ));
6769 private final Metafix metafix ;
@@ -82,6 +84,7 @@ private enum Vars {
8284 private RecordTransformer (final Metafix metafix , final List <Expression > expressions , final RecordTransformer parent ) {
8385 this .metafix = metafix ;
8486 this .parent = parent ;
87+ this .registry = metafix .getRegistry ();
8588
8689 expressions .forEach (e -> {
8790 final Params params = new Params (e .getParams (), this );
@@ -143,7 +146,7 @@ public void transform(final Record record) {
143146
144147 private void processDo (final Do expression , final Params params , final Options options ) {
145148 processFix (() -> executionExceptionMessage (expression ), () -> {
146- final FixContext context = getInstance (expression .getName (), FixContext .class , FixBind :: valueOf );
149+ final FixContext context = getInstance (expression .getName (), FixContext .class , registry :: getBind );
147150 final RecordTransformer recordTransformer = childTransformer (expression .getElements ());
148151
149152 return record -> context .execute (metafix , record , params .resolve (), options .resolve (), recordTransformer );
@@ -158,10 +161,10 @@ private void processIf(final If ifExpression, final Params ifParams, final Optio
158161 final Supplier <String > elseMessageSupplier = () -> executionExceptionMessage (elseExpression , elseExpression .eResource ());
159162
160163 processFix (() -> executionExceptionMessage (ifExpression , ifExpression .eResource ()), () -> {
161- final FixPredicate ifPredicate = getInstance (ifExpression .getName (), FixPredicate .class , FixConditional :: valueOf );
164+ final FixPredicate ifPredicate = getInstance (ifExpression .getName (), FixPredicate .class , registry :: getConditional );
162165 final RecordTransformer ifTransformer = childTransformer (ifExpression .getElements ());
163166
164- final List <FixPredicate > elseIfPredicates = mapList (elseIfExpressions , e -> getInstance (e .getName (), FixPredicate .class , FixConditional :: valueOf ));
167+ final List <FixPredicate > elseIfPredicates = mapList (elseIfExpressions , e -> getInstance (e .getName (), FixPredicate .class , registry :: getConditional ));
165168 final List <Params > elseIfParamsList = mapList (elseIfExpressions , e -> new Params (e .getParams (), this ));
166169 final List <Options > elseIfOptionsList = mapList (elseIfExpressions , e -> new Options (e .getOptions (), this ));
167170 final List <RecordTransformer > elseIfTransformers = mapList (elseIfExpressions , e -> childTransformer (e .getElements ()));
@@ -200,7 +203,7 @@ private void processIf(final If ifExpression, final Params ifParams, final Optio
200203
201204 private void processUnless (final Unless expression , final Params params , final Options options ) {
202205 processFix (() -> executionExceptionMessage (expression , expression .eResource ()), () -> {
203- final FixPredicate predicate = getInstance (expression .getName (), FixPredicate .class , FixConditional :: valueOf );
206+ final FixPredicate predicate = getInstance (expression .getName (), FixPredicate .class , registry :: getConditional );
204207 final RecordTransformer recordTransformer = childTransformer (expression .getElements ());
205208
206209 return record -> {
@@ -213,7 +216,7 @@ private void processUnless(final Unless expression, final Params params, final O
213216
214217 private void processFunction (final MethodCall expression , final Params params , final Options options ) {
215218 processFix (() -> executionExceptionMessage (expression ), () -> {
216- final FixFunction function = getInstance (expression .getName (), FixFunction .class , FixMethod :: valueOf );
219+ final FixFunction function = getInstance (expression .getName (), FixFunction .class , registry :: getMethod );
217220 return record -> function .apply (metafix , record , params .resolve (), options .resolve ());
218221 });
219222 }
0 commit comments