You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2019/12/06 15:08:00 UTC

[plc4x] 03/07: cleanup tests and reformat code

This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch feature/ams_ads_mpsec
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 877319f0bfa9996ea1cae5d501673d079ff60862
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Fri Nov 29 12:00:02 2019 +0100

    cleanup tests and reformat code
---
 .../mspec/expression/ExpressionStringListener.java |  32 ++--
 .../mspec/expression/ExpressionStringParser.java   |  14 +-
 .../definitions/DefaultComplexTypeDefinition.java  |   8 +-
 .../DefaultDiscriminatedComplexTypeDefinition.java |   2 +-
 .../definitions/DefaultEnumTypeDefinition.java     |   2 +-
 .../mspec/parser/MessageFormatListener.java        |  70 ++++-----
 .../language/mspec/parser/MessageFormatParser.java |  45 +-----
 .../mspec/parser/MessageFormatListenerTest.java    | 162 ---------------------
 .../mspec/parser/MessageFormatParserTest.java      |  44 +-----
 9 files changed, 67 insertions(+), 312 deletions(-)

diff --git a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/expression/ExpressionStringListener.java b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/expression/ExpressionStringListener.java
index bec1f9d..f4ae9e3 100644
--- a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/expression/ExpressionStringListener.java
+++ b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/expression/ExpressionStringListener.java
@@ -45,10 +45,10 @@ public class ExpressionStringListener extends ExpressionBaseListener {
     @Override
     public void exitExpressionString(ExpressionParser.ExpressionStringContext ctx) {
         List<Term> roots = parserContexts.pop();
-        if(roots.isEmpty()) {
+        if (roots.isEmpty()) {
             throw new RuntimeException("Empty Expression not supported.");
         }
-        if(roots.size() != 1) {
+        if (roots.size() != 1) {
             throw new RuntimeException("Expression can only contain one root term.");
         }
         root = roots.get(0);
@@ -65,13 +65,13 @@ public class ExpressionStringListener extends ExpressionBaseListener {
 
     @Override
     public void exitBoolExpression(ExpressionParser.BoolExpressionContext ctx) {
-        parserContexts.peek().add(new BooleanLiteral(Boolean.valueOf(ctx.getText())));
+        parserContexts.peek().add(new BooleanLiteral(Boolean.parseBoolean(ctx.getText())));
     }
 
     @Override
     public void exitNumberExpression(ExpressionParser.NumberExpressionContext ctx) {
         String strValue = ctx.Number().getText();
-        if(strValue.contains(".")) {
+        if (strValue.contains(".")) {
             parserContexts.peek().add(new NumericLiteral(Double.valueOf(strValue)));
         } else {
             parserContexts.peek().add(new NumericLiteral(Long.valueOf(strValue)));
@@ -95,11 +95,11 @@ public class ExpressionStringListener extends ExpressionBaseListener {
         IndexContext indexContext = null;
         RestContext restContext = null;
         for (Term arg : args) {
-            if(arg instanceof ArgsContext) {
+            if (arg instanceof ArgsContext) {
                 argsContext = (ArgsContext) arg;
-            } else if(arg instanceof IndexContext) {
+            } else if (arg instanceof IndexContext) {
                 indexContext = (IndexContext) arg;
-            } else if(arg instanceof RestContext) {
+            } else if (arg instanceof RestContext) {
                 restContext = (RestContext) arg;
             }
         }
@@ -107,11 +107,11 @@ public class ExpressionStringListener extends ExpressionBaseListener {
         String name = ctx.name.getText();
 
         int index = VariableLiteral.NO_INDEX;
-        if(indexContext != null) {
+        if (indexContext != null) {
             index = indexContext.getFirst().getNumber().intValue();
         }
         VariableLiteral rest = null;
-        if(restContext != null) {
+        if (restContext != null) {
             rest = restContext.getFirst();
         }
         parserContexts.peek().add(new VariableLiteral(name, argsContext, index, rest));
@@ -288,7 +288,7 @@ public class ExpressionStringListener extends ExpressionBaseListener {
     /////////////////////////////////////////////////////////////////////////////////////////
 
     private UnaryTerm getUnaryTerm(String op, List<Term> terms) {
-        if(terms.size() != 1) {
+        if (terms.size() != 1) {
             throw new RuntimeException(op + " should be a unary operation");
         }
         Term a = terms.get(0);
@@ -296,7 +296,7 @@ public class ExpressionStringListener extends ExpressionBaseListener {
     }
 
     private BinaryTerm getBinaryTerm(String op, List<Term> terms) {
-        if(terms.size() != 2) {
+        if (terms.size() != 2) {
             throw new RuntimeException(op + " should be a binary operation");
         }
         Term a = terms.get(0);
@@ -305,7 +305,7 @@ public class ExpressionStringListener extends ExpressionBaseListener {
     }
 
     private TernaryTerm getTernaryTerm(String op, List<Term> terms) {
-        if(terms.size() != 3) {
+        if (terms.size() != 3) {
             throw new RuntimeException(op + " should be a ternary operation");
         }
         Term a = terms.get(0);
@@ -315,7 +315,7 @@ public class ExpressionStringListener extends ExpressionBaseListener {
     }
 
     static class ArgsContext extends LinkedList<Term> implements Term {
-        public ArgsContext(Collection c) {
+        ArgsContext(Collection c) {
             super(c);
         }
 
@@ -324,8 +324,9 @@ public class ExpressionStringListener extends ExpressionBaseListener {
             return false;
         }
     }
+
     static class IndexContext extends LinkedList<NumericLiteral> implements Term {
-        public IndexContext(Collection c) {
+        IndexContext(Collection c) {
             super(c);
         }
 
@@ -334,8 +335,9 @@ public class ExpressionStringListener extends ExpressionBaseListener {
             return false;
         }
     }
+
     static class RestContext extends LinkedList<VariableLiteral> implements Term {
-        public RestContext(Collection c) {
+        RestContext(Collection c) {
             super(c);
         }
 
diff --git a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/expression/ExpressionStringParser.java b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/expression/ExpressionStringParser.java
index 76c131d..7b9f124 100644
--- a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/expression/ExpressionStringParser.java
+++ b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/expression/ExpressionStringParser.java
@@ -21,7 +21,6 @@ package org.apache.plc4x.plugins.codegenerator.language.mspec.expression;
 
 import org.antlr.v4.runtime.CharStreams;
 import org.antlr.v4.runtime.CommonTokenStream;
-import org.antlr.v4.runtime.tree.ParseTree;
 import org.antlr.v4.runtime.tree.ParseTreeWalker;
 import org.apache.plc4x.plugins.codegenerator.types.terms.Term;
 
@@ -31,18 +30,15 @@ import java.io.InputStream;
 public class ExpressionStringParser {
 
     public Term parse(InputStream source) {
+        ExpressionLexer lexer;
         try {
-            ExpressionLexer lexer = new ExpressionLexer(CharStreams.fromStream(source));
-            CommonTokenStream tokens = new CommonTokenStream(lexer);
-            ExpressionParser parser = new ExpressionParser(tokens);
-            ParseTree tree = parser.expressionString();
-            ParseTreeWalker walker = new ParseTreeWalker();
-            ExpressionStringListener listener = new ExpressionStringListener();
-            walker.walk(listener, tree);
-            return listener.getRoot();
+            lexer = new ExpressionLexer(CharStreams.fromStream(source));
         } catch (IOException e) {
             throw new RuntimeException(e);
         }
+        ExpressionStringListener listener = new ExpressionStringListener();
+        new ParseTreeWalker().walk(listener, new ExpressionParser(new CommonTokenStream(lexer)).expressionString());
+        return listener.getRoot();
     }
 
 }
diff --git a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/definitions/DefaultComplexTypeDefinition.java b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/definitions/DefaultComplexTypeDefinition.java
index 4dbf73d..39d87f4 100644
--- a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/definitions/DefaultComplexTypeDefinition.java
+++ b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/definitions/DefaultComplexTypeDefinition.java
@@ -74,8 +74,8 @@ public class DefaultComplexTypeDefinition extends DefaultTypeDefinition implemen
     @Override
     public List<PropertyField> getAllPropertyFields() {
         List<PropertyField> fields = new LinkedList<>();
-        if(getParentType() != null) {
-            fields.addAll(((ComplexTypeDefinition)getParentType()).getAllPropertyFields());
+        if (getParentType() != null) {
+            fields.addAll(((ComplexTypeDefinition) getParentType()).getAllPropertyFields());
         }
         fields.addAll(getPropertyFields());
         return fields;
@@ -83,8 +83,8 @@ public class DefaultComplexTypeDefinition extends DefaultTypeDefinition implemen
 
     @Override
     public List<PropertyField> getParentPropertyFields() {
-        if(getParentType() != null) {
-            return ((ComplexTypeDefinition)getParentType()).getAllPropertyFields();
+        if (getParentType() != null) {
+            return ((ComplexTypeDefinition) getParentType()).getAllPropertyFields();
         }
         return Collections.emptyList();
     }
diff --git a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/definitions/DefaultDiscriminatedComplexTypeDefinition.java b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/definitions/DefaultDiscriminatedComplexTypeDefinition.java
index 65aac2b..8d64b08 100644
--- a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/definitions/DefaultDiscriminatedComplexTypeDefinition.java
+++ b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/definitions/DefaultDiscriminatedComplexTypeDefinition.java
@@ -40,7 +40,7 @@ public class DefaultDiscriminatedComplexTypeDefinition extends DefaultComplexTyp
         // which is always a DefaultComplexTypeDefinition instance.
         return ((DefaultComplexTypeDefinition) getParentType()).getFields().stream().filter(
             field -> field instanceof DiscriminatorField).map(
-                field -> (DiscriminatorField) field).findFirst().orElse(null);
+            field -> (DiscriminatorField) field).findFirst().orElse(null);
     }
 
     public String[] getDiscriminatorValues() {
diff --git a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/definitions/DefaultEnumTypeDefinition.java b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/definitions/DefaultEnumTypeDefinition.java
index b81136c..67d0d60 100644
--- a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/definitions/DefaultEnumTypeDefinition.java
+++ b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/definitions/DefaultEnumTypeDefinition.java
@@ -39,7 +39,7 @@ public class DefaultEnumTypeDefinition extends DefaultTypeDefinition implements
         this.type = type;
         this.enumValues = enumValues;
         this.constants = new HashMap<>();
-        if(constants != null) {
+        if (constants != null) {
             for (Argument constant : constants) {
                 this.constants.put(constant.getName(), constant.getType());
             }
diff --git a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListener.java b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListener.java
index 42c3ce3..57214a5 100644
--- a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListener.java
+++ b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListener.java
@@ -76,7 +76,7 @@ public class MessageFormatListener extends MSpecBaseListener {
 
     @Override
     public void enterComplexType(MSpecParser.ComplexTypeContext ctx) {
-        if(ctx.enumValues != null) {
+        if (ctx.enumValues != null) {
             List<EnumValue> enumContext = new LinkedList<>();
             enumContexts.push(enumContext);
         } else {
@@ -89,11 +89,11 @@ public class MessageFormatListener extends MSpecBaseListener {
     public void exitComplexType(MSpecParser.ComplexTypeContext ctx) {
         String typeName = ctx.name.id.getText();
         Argument[] parserArguments = null;
-        if(ctx.params != null) {
+        if (ctx.params != null) {
             parserArguments = getParserArguments(ctx.params.argument());
         }
 
-        if(ctx.enumValues != null) {
+        if (ctx.enumValues != null) {
             TypeReference type = getTypeReference(ctx.type);
             EnumValue[] enumValues = getEnumValues();
             DefaultEnumTypeDefinition enumType = new DefaultEnumTypeDefinition(typeName, type, enumValues,
@@ -126,10 +126,10 @@ public class MessageFormatListener extends MSpecBaseListener {
         String name = ctx.name.id.getText();
         ArrayField.LoopType loopType = ArrayField.LoopType.valueOf(ctx.loopType.getText().toUpperCase());
         String loopExpressionString = ctx.loopExpression.expr.getText();
-        Term loopExpression =  getExpressionTerm(loopExpressionString);
+        Term loopExpression = getExpressionTerm(loopExpressionString);
         Term[] params = getFieldParams((MSpecParser.FieldDefinitionContext) ctx.parent.parent);
         Field field = new DefaultArrayField(null, type, name, loopType, loopExpression, params);
-        if(parserContexts.peek() != null) {
+        if (parserContexts.peek() != null) {
             parserContexts.peek().add(field);
         }
     }
@@ -141,7 +141,7 @@ public class MessageFormatListener extends MSpecBaseListener {
         String checksumExpressionString = ctx.checksumExpression.expr.getText();
         Term checksumExpression = getExpressionTerm(checksumExpressionString);
         Field field = new DefaultChecksumField(null, type, name, checksumExpression);
-        if(parserContexts.peek() != null) {
+        if (parserContexts.peek() != null) {
             parserContexts.peek().add(field);
         }
     }
@@ -152,7 +152,7 @@ public class MessageFormatListener extends MSpecBaseListener {
         String name = ctx.name.id.getText();
         String expected = ctx.expected.expr.getText();
         Field field = new DefaultConstField(null, type, name, expected);
-        if(parserContexts.peek() != null) {
+        if (parserContexts.peek() != null) {
             parserContexts.peek().add(field);
         }
     }
@@ -162,7 +162,7 @@ public class MessageFormatListener extends MSpecBaseListener {
         SimpleTypeReference type = getSimpleTypeReference(ctx.type);
         String name = ctx.name.id.getText();
         Field field = new DefaultDiscriminatorField(null, type, name);
-        if(parserContexts.peek() != null) {
+        if (parserContexts.peek() != null) {
             parserContexts.peek().add(field);
         }
     }
@@ -173,7 +173,7 @@ public class MessageFormatListener extends MSpecBaseListener {
         String name = ctx.name.id.getText();
         Term[] params = getFieldParams((MSpecParser.FieldDefinitionContext) ctx.parent.parent);
         Field field = new DefaultEnumField(null, type, name, params);
-        if(parserContexts.peek() != null) {
+        if (parserContexts.peek() != null) {
             parserContexts.peek().add(field);
         }
     }
@@ -185,7 +185,7 @@ public class MessageFormatListener extends MSpecBaseListener {
         String serializationExpressionString = ctx.serializationExpression.expr.getText();
         Term serializationExpression = getExpressionTerm(serializationExpressionString);
         Field field = new DefaultImplicitField(null, type, name, serializationExpression);
-        if(parserContexts.peek() != null) {
+        if (parserContexts.peek() != null) {
             parserContexts.peek().add(field);
         }
     }
@@ -197,17 +197,17 @@ public class MessageFormatListener extends MSpecBaseListener {
         ManualArrayField.LoopType loopType = ManualArrayField.LoopType.valueOf(
             ctx.loopType.getText().toUpperCase());
         String loopExpressionString = ctx.loopExpression.expr.getText();
-        Term loopExpression =  getExpressionTerm(loopExpressionString);
+        Term loopExpression = getExpressionTerm(loopExpressionString);
         String serializationExpressionString = ctx.serializationExpression.expr.getText();
         Term serializationExpression = getExpressionTerm(serializationExpressionString);
         String deserializationExpressionString = ctx.deserializationExpression.expr.getText();
         Term deserializationExpression = getExpressionTerm(deserializationExpressionString);
         String lengthExpressionString = ctx.lengthExpression.expr.getText();
-        Term lengthExpression =  getExpressionTerm(lengthExpressionString);
+        Term lengthExpression = getExpressionTerm(lengthExpressionString);
         Term[] params = getFieldParams((MSpecParser.FieldDefinitionContext) ctx.parent.parent);
         Field field = new DefaultManualArrayField(null, type, name, loopType, loopExpression, serializationExpression,
             deserializationExpression, lengthExpression, params);
-        if(parserContexts.peek() != null) {
+        if (parserContexts.peek() != null) {
             parserContexts.peek().add(field);
         }
     }
@@ -221,11 +221,11 @@ public class MessageFormatListener extends MSpecBaseListener {
         String deserializationExpressionString = ctx.deserializationExpression.expr.getText();
         Term deserializationExpression = getExpressionTerm(deserializationExpressionString);
         String lengthExpressionString = ctx.lengthExpression.expr.getText();
-        Term lengthExpression =  getExpressionTerm(lengthExpressionString);
+        Term lengthExpression = getExpressionTerm(lengthExpressionString);
         Term[] params = getFieldParams((MSpecParser.FieldDefinitionContext) ctx.parent.parent);
         Field field = new DefaultManualField(null, type, name, serializationExpression, deserializationExpression,
             lengthExpression, params);
-        if(parserContexts.peek() != null) {
+        if (parserContexts.peek() != null) {
             parserContexts.peek().add(field);
         }
     }
@@ -238,7 +238,7 @@ public class MessageFormatListener extends MSpecBaseListener {
         Term conditionExpression = getExpressionTerm(conditionExpressionString);
         Term[] params = getFieldParams((MSpecParser.FieldDefinitionContext) ctx.parent.parent);
         Field field = new DefaultOptionalField(null, type, name, conditionExpression, params);
-        if(parserContexts.peek() != null) {
+        if (parserContexts.peek() != null) {
             parserContexts.peek().add(field);
         }
     }
@@ -253,7 +253,7 @@ public class MessageFormatListener extends MSpecBaseListener {
         Term paddingCondition = getExpressionTerm(paddingConditionString);
         Term[] params = getFieldParams((MSpecParser.FieldDefinitionContext) ctx.parent.parent);
         Field field = new DefaultPaddingField(null, type, name, paddingValue, paddingCondition, params);
-        if(parserContexts.peek() != null) {
+        if (parserContexts.peek() != null) {
             parserContexts.peek().add(field);
         }
     }
@@ -263,7 +263,7 @@ public class MessageFormatListener extends MSpecBaseListener {
         SimpleTypeReference type = getSimpleTypeReference(ctx.type);
         String expected = ctx.expected.expr.getText();
         Field field = new DefaultReservedField(null, type, expected);
-        if(parserContexts.peek() != null) {
+        if (parserContexts.peek() != null) {
             parserContexts.peek().add(field);
         }
     }
@@ -274,7 +274,7 @@ public class MessageFormatListener extends MSpecBaseListener {
         String name = ctx.name.id.getText();
         Term[] params = getFieldParams((MSpecParser.FieldDefinitionContext) ctx.parent.parent);
         Field field = new DefaultSimpleField(null, type, name, params);
-        if(parserContexts.peek() != null) {
+        if (parserContexts.peek() != null) {
             parserContexts.peek().add(field);
         }
     }
@@ -283,11 +283,11 @@ public class MessageFormatListener extends MSpecBaseListener {
     public void enterTypeSwitchField(MSpecParser.TypeSwitchFieldContext ctx) {
         int numDiscriminators = ctx.discriminators.expression().size();
         String[] discriminatorNames = new String[numDiscriminators];
-        for(int i = 0; i < numDiscriminators; i++) {
+        for (int i = 0; i < numDiscriminators; i++) {
             discriminatorNames[i] = ctx.discriminators.expression().get(i).expr.getText();
         }
         DefaultSwitchField field = new DefaultSwitchField(discriminatorNames);
-        if(parserContexts.peek() != null) {
+        if (parserContexts.peek() != null) {
             parserContexts.peek().add(field);
         }
     }
@@ -299,7 +299,7 @@ public class MessageFormatListener extends MSpecBaseListener {
         String valueExpressionString = ctx.valueExpression.expr.getText();
         Term valueExpression = getExpressionTerm(valueExpressionString);
         Field field = new DefaultVirtualField(null, type, name, valueExpression);
-        if(parserContexts.peek() != null) {
+        if (parserContexts.peek() != null) {
             parserContexts.peek().add(field);
         }
     }
@@ -315,17 +315,17 @@ public class MessageFormatListener extends MSpecBaseListener {
         String typeName = ctx.name.getText();
         List<Argument> parserArguments = new LinkedList<>();
         // Add all the arguments from the parent type.
-        if(((MSpecParser.ComplexTypeContext) ctx.parent.parent.parent.parent).params != null) {
+        if (((MSpecParser.ComplexTypeContext) ctx.parent.parent.parent.parent).params != null) {
             parserArguments.addAll(Arrays.asList(getParserArguments(
                 ((MSpecParser.ComplexTypeContext) ctx.parent.parent.parent.parent).params.argument())));
         }
         // Add all eventually existing local arguments.
-        if(ctx.argumentList() != null) {
+        if (ctx.argumentList() != null) {
             parserArguments.addAll(Arrays.asList(getParserArguments(ctx.argumentList().argument())));
         }
 
         String[] discriminatorValues;
-        if(ctx.discriminatorValues != null) {
+        if (ctx.discriminatorValues != null) {
             List<MSpecParser.ExpressionContext> expressions = ctx.discriminatorValues.expression();
             discriminatorValues = new String[expressions.size()];
             for (int i = 0; i < expressions.size(); i++) {
@@ -340,7 +340,7 @@ public class MessageFormatListener extends MSpecBaseListener {
 
         // Add the type to the switch field definition.
         DefaultSwitchField switchField = getSwitchField();
-        if(switchField == null) {
+        if (switchField == null) {
             throw new RuntimeException("This shouldn't have happened");
         }
         switchField.addCase(type);
@@ -354,12 +354,12 @@ public class MessageFormatListener extends MSpecBaseListener {
         String value = unquoteString(ctx.valueExpression.getText());
         String name = ctx.name.getText();
         Map<String, String> constants = null;
-        if(ctx.constantValueExpressions != null) {
+        if (ctx.constantValueExpressions != null) {
             MSpecParser.ComplexTypeContext parentCtx = (MSpecParser.ComplexTypeContext) ctx.parent;
             int numConstantValues = parentCtx.params.argument().size();
             int numExpressionValues = ctx.constantValueExpressions.expression().size();
             // This only works if we provide exactly the same number of expressions as we defined constants
-            if(numConstantValues != numExpressionValues) {
+            if (numConstantValues != numExpressionValues) {
                 throw new RuntimeException("Number of constant value expressions doesn't match the number of " +
                     "defined constants. Expecting " + numConstantValues + " but got " + numExpressionValues);
             }
@@ -390,10 +390,10 @@ public class MessageFormatListener extends MSpecBaseListener {
     }
 
     private TypeReference getTypeReference(MSpecParser.TypeReferenceContext ctx) {
-        if(ctx.simpleTypeReference != null) {
+        if (ctx.simpleTypeReference != null) {
             SimpleTypeReference.SimpleBaseType simpleBaseType = SimpleTypeReference.SimpleBaseType.valueOf(
                 ctx.simpleTypeReference.base.getText().toUpperCase());
-            if(ctx.simpleTypeReference.size != null) {
+            if (ctx.simpleTypeReference.size != null) {
                 int size = Integer.parseInt(ctx.simpleTypeReference.size.getText());
                 return new DefaultSimpleTypeReference(simpleBaseType, size);
             } else {
@@ -407,7 +407,7 @@ public class MessageFormatListener extends MSpecBaseListener {
     private SimpleTypeReference getSimpleTypeReference(MSpecParser.DataTypeContext ctx) {
         SimpleTypeReference.SimpleBaseType simpleBaseType =
             SimpleTypeReference.SimpleBaseType.valueOf(ctx.base.getText().toUpperCase());
-        if(ctx.size != null) {
+        if (ctx.size != null) {
             int size = Integer.parseInt(ctx.size.getText());
             return new DefaultSimpleTypeReference(simpleBaseType, size);
         } else {
@@ -417,7 +417,7 @@ public class MessageFormatListener extends MSpecBaseListener {
 
     private DefaultSwitchField getSwitchField() {
         for (Field field : Objects.requireNonNull(parserContexts.peek())) {
-            if(field instanceof DefaultSwitchField) {
+            if (field instanceof DefaultSwitchField) {
                 return (DefaultSwitchField) field;
             }
         }
@@ -440,9 +440,9 @@ public class MessageFormatListener extends MSpecBaseListener {
 
     private Term[] getFieldParams(MSpecParser.FieldDefinitionContext parentCtx) {
         Term[] params = null;
-        if(parentCtx.params != null) {
+        if (parentCtx.params != null) {
             params = new Term[parentCtx.params.expression().size()];
-            for(int i = 0; i < parentCtx.params.expression().size(); i++) {
+            for (int i = 0; i < parentCtx.params.expression().size(); i++) {
                 params[i] = parseExpression(parentCtx.params.expression().get(i).expr.getText());
             }
         }
@@ -460,7 +460,7 @@ public class MessageFormatListener extends MSpecBaseListener {
     }
 
     private String unquoteString(String quotedString) {
-        if(quotedString != null && quotedString.length() > 2) {
+        if (quotedString != null && quotedString.length() > 2) {
             return quotedString.substring(1, quotedString.length() - 1);
         }
         return quotedString;
diff --git a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatParser.java b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatParser.java
index a134666..cc6f9df 100644
--- a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatParser.java
+++ b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatParser.java
@@ -19,10 +19,8 @@
 
 package org.apache.plc4x.plugins.codegenerator.language.mspec.parser;
 
-import org.antlr.v4.runtime.CharStream;
 import org.antlr.v4.runtime.CharStreams;
 import org.antlr.v4.runtime.CommonTokenStream;
-import org.antlr.v4.runtime.tree.ParseTree;
 import org.antlr.v4.runtime.tree.ParseTreeWalker;
 import org.apache.plc4x.plugins.codegenerator.language.mspec.MSpecLexer;
 import org.apache.plc4x.plugins.codegenerator.language.mspec.MSpecParser;
@@ -31,55 +29,18 @@ import org.apache.plc4x.plugins.codegenerator.types.definitions.TypeDefinition;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Map;
-import java.util.function.Function;
-import java.util.function.Supplier;
 
 public class MessageFormatParser {
 
-    // TODO: can be used a instance once thread safety is asserted
-    private Function<CharStream, MSpecLexer> lexerBuilder;
-
-    // TODO: can be used a instance once thread safety is asserted
-    private Function<MSpecLexer, CommonTokenStream> commonTokenStreamBuilder;
-
-    // TODO: can be used a instance once thread safety is asserted
-    private Function<CommonTokenStream, MSpecParser> commonTokenStreamMSpecParserBuilder;
-
-    // TODO: can be used a instance once thread safety is asserted
-    private Supplier<ParseTreeWalker> voidParseTreeWalkerBuilder;
-
-    // TODO: can be used a instance once thread safety is asserted
-    private Supplier<MessageFormatListener> messageFormatListenerBuilder;
-
-    public MessageFormatParser() {
-        lexerBuilder = MSpecLexer::new;
-        commonTokenStreamBuilder = CommonTokenStream::new;
-        commonTokenStreamMSpecParserBuilder = MSpecParser::new;
-        voidParseTreeWalkerBuilder = ParseTreeWalker::new;
-        messageFormatListenerBuilder = MessageFormatListener::new;
-    }
-
-    MessageFormatParser(Function<CharStream, MSpecLexer> lexerBuilder, Function<MSpecLexer, CommonTokenStream> commonTokenStreamBuilder, Function<CommonTokenStream, MSpecParser> commonTokenStreamMSpecParserBuilder, Supplier<ParseTreeWalker> voidParseTreeWalkerBuilder, Supplier<MessageFormatListener> messageFormatListenerBuilder) {
-        this.lexerBuilder = lexerBuilder;
-        this.commonTokenStreamBuilder = commonTokenStreamBuilder;
-        this.commonTokenStreamMSpecParserBuilder = commonTokenStreamMSpecParserBuilder;
-        this.voidParseTreeWalkerBuilder = voidParseTreeWalkerBuilder;
-        this.messageFormatListenerBuilder = messageFormatListenerBuilder;
-    }
-
     public Map<String, TypeDefinition> parse(InputStream source) {
         MSpecLexer lexer;
         try {
-            lexer = lexerBuilder.apply(CharStreams.fromStream(source));
+            lexer = new MSpecLexer(CharStreams.fromStream(source));
         } catch (IOException e) {
             throw new RuntimeException(e);
         }
-        CommonTokenStream tokens = commonTokenStreamBuilder.apply(lexer);
-        MSpecParser parser = commonTokenStreamMSpecParserBuilder.apply(tokens);
-        ParseTree tree = parser.file();
-        ParseTreeWalker walker = voidParseTreeWalkerBuilder.get();
-        MessageFormatListener listener = messageFormatListenerBuilder.get();
-        walker.walk(listener, tree);
+        MessageFormatListener listener = new MessageFormatListener();
+        new ParseTreeWalker().walk(listener, new MSpecParser(new CommonTokenStream(lexer)).file());
         return listener.getTypes();
     }
 
diff --git a/build-utils/protocol-base-mspec/src/test/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListenerTest.java b/build-utils/protocol-base-mspec/src/test/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListenerTest.java
deleted file mode 100644
index 3d9f4c4..0000000
--- a/build-utils/protocol-base-mspec/src/test/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListenerTest.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
- */
-
-package org.apache.plc4x.plugins.codegenerator.language.mspec.parser;
-
-import org.antlr.v4.runtime.CommonToken;
-import org.apache.plc4x.plugins.codegenerator.language.mspec.MSpecParser;
-import org.apache.plc4x.plugins.codegenerator.types.definitions.TypeDefinition;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.junit.jupiter.MockitoExtension;
-
-import java.util.Map;
-
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.hasSize;
-
-// TODO: implement me
-@ExtendWith(MockitoExtension.class)
-class MessageFormatListenerTest {
-
-    MessageFormatListener SUT;
-
-    @BeforeEach
-    void setUp() {
-        SUT = new MessageFormatListener();
-    }
-
-    @Test
-    void getTypes() {
-        Map<String, TypeDefinition> types = SUT.getTypes();
-        assertThat(types, nullValue());
-    }
-
-    @Test
-    void enterFile() {
-        assertThat(SUT.getParserContexts(), nullValue());
-        assertThat(SUT.getEnumContexts(), nullValue());
-        assertThat(SUT.getTypes(), nullValue());
-        SUT.enterFile(null);
-        assertThat(SUT.getParserContexts(), not(nullValue()));
-        assertThat(SUT.getEnumContexts(), not(nullValue()));
-        assertThat(SUT.getTypes(), not(nullValue()));
-    }
-
-    @Test
-    void enterComplexType() {
-        assertThat(SUT.getParserContexts(), nullValue());
-        assertThat(SUT.getEnumContexts(), nullValue());
-        assertThat(SUT.getTypes(), nullValue());
-        SUT.enterFile(null);
-        MSpecParser.ComplexTypeContext complexTypeContext = new MSpecParser.ComplexTypeContext(null, 0);
-        SUT.enterComplexType(complexTypeContext);
-        assertThat(SUT.getParserContexts(), hasSize(1));
-        assertThat(SUT.getEnumContexts(), hasSize(0));
-        assertThat(SUT.getTypes().values(), hasSize(0));
-        complexTypeContext.enumValues = new MSpecParser.EnumValueDefinitionContext(null, 0);
-        SUT.enterComplexType(complexTypeContext);
-        assertThat(SUT.getParserContexts(), hasSize(1));
-        assertThat(SUT.getEnumContexts(), hasSize(1));
-        assertThat(SUT.getTypes().values(), hasSize(0));
-    }
-
-    @Test
-    void exitComplexType() {
-        MSpecParser.ComplexTypeContext complexTypeContext = new MSpecParser.ComplexTypeContext(null, 0);
-        complexTypeContext.name = new MSpecParser.IdExpressionContext(null, 0);
-        complexTypeContext.name.id = new CommonToken(0);
-        SUT.exitComplexType(complexTypeContext);
-    }
-
-    @Test
-    void enterArrayField() {
-    }
-
-    @Test
-    void enterChecksumField() {
-    }
-
-    @Test
-    void enterConstField() {
-    }
-
-    @Test
-    void enterDiscriminatorField() {
-    }
-
-    @Test
-    void enterEnumField() {
-    }
-
-    @Test
-    void enterImplicitField() {
-    }
-
-    @Test
-    void enterManualArrayField() {
-    }
-
-    @Test
-    void enterManualField() {
-    }
-
-    @Test
-    void enterOptionalField() {
-    }
-
-    @Test
-    void enterPaddingField() {
-    }
-
-    @Test
-    void enterReservedField() {
-    }
-
-    @Test
-    void enterSimpleField() {
-    }
-
-    @Test
-    void enterTypeSwitchField() {
-    }
-
-    @Test
-    void enterVirtualField() {
-    }
-
-    @Test
-    void enterCaseStatement() {
-    }
-
-    @Test
-    void exitCaseStatement() {
-    }
-
-    @Test
-    void enterEnumValueDefinition() {
-    }
-
-    @Test
-    void main() {
-    }
-}
\ No newline at end of file
diff --git a/build-utils/protocol-base-mspec/src/test/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatParserTest.java b/build-utils/protocol-base-mspec/src/test/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatParserTest.java
index 7aa47d2..37b9720 100644
--- a/build-utils/protocol-base-mspec/src/test/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatParserTest.java
+++ b/build-utils/protocol-base-mspec/src/test/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatParserTest.java
@@ -19,56 +19,18 @@
 
 package org.apache.plc4x.plugins.codegenerator.language.mspec.parser;
 
-import org.antlr.v4.runtime.CommonTokenStream;
-import org.antlr.v4.runtime.tree.ParseTreeWalker;
 import org.apache.commons.io.IOUtils;
-import org.apache.plc4x.plugins.codegenerator.language.mspec.MSpecLexer;
-import org.apache.plc4x.plugins.codegenerator.language.mspec.MSpecParser;
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
 
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 
 import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.mockito.Mockito.mock;
 
-// TODO: implement me
-@ExtendWith(MockitoExtension.class)
 class MessageFormatParserTest {
 
-    //@InjectMocks
-    MessageFormatParser SUT;
-
-    @Mock
-    MSpecLexer mSpecLexer;
-
-    @Mock
-    CommonTokenStream commonTokenStream;
-
-    @Mock
-    MSpecParser mSpecParser;
-
-    @Mock
-    ParseTreeWalker parseTreeWalker;
-
-    @Mock
-    MessageFormatListener messageFormatListener;
-
-    @BeforeEach
-    void setUp() {
-        SUT = new MessageFormatParser(
-            (_ignore) -> mSpecLexer,
-            (_ignore) -> commonTokenStream,
-            (_ignore) -> mSpecParser,
-            () -> parseTreeWalker,
-            () -> messageFormatListener
-        );
-    }
+    MessageFormatParser SUT = new MessageFormatParser();
 
     @Test
     void parseNull() {
@@ -78,10 +40,6 @@ class MessageFormatParserTest {
     @Disabled("mockito broken because of NPE in REAL code")
     @Test
     void parseSomething() {
-        // TODO: seems like mockito is broken somehow...
-        MSpecParser mSpecParser = mock(MSpecParser.class);
-        // TODO: ... because this throws a NPE... (somehow call ends up in real code)
-        mSpecParser.file();
         InputStream is = IOUtils.toInputStream("test", StandardCharsets.UTF_8);
         SUT.parse(is);
     }