You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by tm...@apache.org on 2019/05/05 16:38:58 UTC

[plc4x] 02/04: Further Refactoring.

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

tmitsch pushed a commit to branch feature/code-gen
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 7e88bdb3ac90e37c4d8495aceb1e1a0e9c21487f
Author: julian <j....@pragmaticminds.de>
AuthorDate: Sun May 5 18:00:22 2019 +0200

    Further Refactoring.
---
 .../java/org/apache/plc4x/codegen/DFDLUtil.java    |  2 +-
 .../org/apache/plc4x/codegen/ast/AbstractNode.java |  6 +--
 .../apache/plc4x/codegen/ast/BinaryExpression.java |  2 +-
 .../plc4x/codegen/ast/ConditionalStatement.java    |  2 +-
 .../plc4x/codegen/ast/ConstantExpression.java      |  2 +-
 .../apache/plc4x/codegen/ast/ExceptionType.java    |  2 +-
 .../org/apache/plc4x/codegen/ast/Expression.java   |  2 +-
 .../org/apache/plc4x/codegen/ast/Expressions.java  | 44 +++++++++++++++++++---
 .../apache/plc4x/codegen/ast/FieldDeclaration.java |  8 ++--
 .../apache/plc4x/codegen/ast/FieldReference.java   |  4 +-
 .../org/apache/plc4x/codegen/ast/Generator.java    |  4 +-
 .../apache/plc4x/codegen/ast/JavaGenerator.java    |  4 +-
 .../java/org/apache/plc4x/codegen/ast/Method.java  | 14 +++----
 .../apache/plc4x/codegen/ast/MethodDefinition.java |  8 ++--
 .../apache/plc4x/codegen/ast/NewExpression.java    |  4 +-
 .../java/org/apache/plc4x/codegen/ast/NoOp.java    | 37 ------------------
 .../plc4x/codegen/ast/ParameterExpression.java     |  2 +-
 .../org/apache/plc4x/codegen/ast/Primitive.java    |  2 +-
 .../apache/plc4x/codegen/ast/PythonGenerator.java  |  4 +-
 .../ast/{TypeNode.java => TypeDefinition.java}     |  6 +--
 .../org/apache/plc4x/codegen/ast/TypeUtil.java     |  2 +-
 .../org/apache/plc4x/codegen/ast/UnknownType.java  |  2 +-
 .../org/apache/plc4x/codegen/util/EnumFactory.java | 12 +++---
 .../org/apache/plc4x/codegen/util/PojoFactory.java | 14 +++----
 .../plc4x/codegen/ast/JavaGeneratorTest.java       |  6 +--
 25 files changed, 95 insertions(+), 100 deletions(-)

diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/DFDLUtil.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/DFDLUtil.java
index 7a97ae1..b3bdaf5 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/DFDLUtil.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/DFDLUtil.java
@@ -56,7 +56,7 @@ public class DFDLUtil {
             final Iterator<Element> elementIterator = sequence.elementIterator(ELEMENT);
             while (elementIterator.hasNext()) {
                 final Element elem = elementIterator.next();
-                fields.add(new PojoFactory.Field(new TypeNode(elem.attributeValue("type")), elem.attributeValue("name")));
+                fields.add(new PojoFactory.Field(new TypeDefinition(elem.attributeValue("type")), elem.attributeValue("name")));
             }
             final PojoFactory.PojoDescription desc = new PojoFactory.PojoDescription(element.attributeValue("name"), fields);
             final ClassDeclaration classDeclaration = factory.create(desc);
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/AbstractNode.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/AbstractNode.java
index 962bfba..aa41770 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/AbstractNode.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/AbstractNode.java
@@ -20,13 +20,13 @@ package org.apache.plc4x.codegen.ast;
 
 public abstract class AbstractNode implements Node {
 
-    public final TypeNode type;
+    public final TypeDefinition type;
 
-    protected AbstractNode(TypeNode type) {
+    protected AbstractNode(TypeDefinition type) {
         this.type = type;
     }
 
-    public TypeNode getType() {
+    public TypeDefinition getType() {
         return this.type;
     }
 }
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/BinaryExpression.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/BinaryExpression.java
index 9635ab3..65b9a31 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/BinaryExpression.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/BinaryExpression.java
@@ -24,7 +24,7 @@ public class BinaryExpression extends Expression {
     private final Node right;
     private final Operation op;
 
-    protected BinaryExpression(TypeNode type, Node left, Node right, Operation op) {
+    protected BinaryExpression(TypeDefinition type, Node left, Node right, Operation op) {
         super(type);
         this.left = left;
         this.right = right;
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ConditionalStatement.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ConditionalStatement.java
index 701a48c..049cf60 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ConditionalStatement.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ConditionalStatement.java
@@ -20,7 +20,7 @@ package org.apache.plc4x.codegen.ast;
 
 public class ConditionalStatement extends Expression {
 
-    protected ConditionalStatement(TypeNode type) {
+    protected ConditionalStatement(TypeDefinition type) {
         super(type);
     }
 
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ConstantExpression.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ConstantExpression.java
index 83b71e1..d98a2d6 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ConstantExpression.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ConstantExpression.java
@@ -22,7 +22,7 @@ public class ConstantExpression extends Expression {
 
     private Object value;
 
-    public ConstantExpression(TypeNode type, Object value) {
+    public ConstantExpression(TypeDefinition type, Object value) {
         super(type);
         this.value = value;
     }
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ExceptionType.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ExceptionType.java
index 9e165c8..be42228 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ExceptionType.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ExceptionType.java
@@ -21,7 +21,7 @@ package org.apache.plc4x.codegen.ast;
 /**
  * Defines an Exception-Type.
  */
-public class ExceptionType extends TypeNode {
+public class ExceptionType extends TypeDefinition {
 
     public ExceptionType(String typeString) {
         super(typeString);
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/Expression.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/Expression.java
index f120cff..75ca271 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/Expression.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/Expression.java
@@ -20,7 +20,7 @@ package org.apache.plc4x.codegen.ast;
 
 public abstract class Expression extends AbstractNode {
 
-    protected Expression(TypeNode type) {
+    protected Expression(TypeDefinition type) {
         super(type);
     }
 
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/Expressions.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/Expressions.java
index 6f7008a..5c2f1e2 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/Expressions.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/Expressions.java
@@ -50,7 +50,7 @@ public class Expressions {
      * @param op
      * @return
      */
-    public static Expression binaryExpression(TypeNode type, Node left, Node right, BinaryExpression.Operation op) {
+    public static Expression binaryExpression(TypeDefinition type, Node left, Node right, BinaryExpression.Operation op) {
         return new BinaryExpression(type, left, right, op);
     }
 
@@ -129,7 +129,7 @@ public class Expressions {
      * Define a compile time constant and also passes
      * the expected type for usage in the code generation later.
      */
-    public static Expression constant(TypeNode type, Object value) {
+    public static Expression constant(TypeDefinition type, Object value) {
         return new ConstantExpression(value);
     }
 
@@ -144,7 +144,7 @@ public class Expressions {
     /**
      * Declares a constant (no field), which is not initialized.
      */
-    public static Statement declaration(String variable, TypeNode type) {
+    public static Statement declaration(String variable, TypeDefinition type) {
         return new DeclarationStatement(parameter(variable, type), null);
     }
 
@@ -175,24 +175,56 @@ public class Expressions {
     public static Expression call(Node target, String methodName, Node... arguments) {
         return new CallExpression(
             new Method(UnknownType.INSTANCE, methodName, UnknownType.INSTANCE,
-                Collections.<TypeNode>emptyList(), Collections.<ExceptionType>emptyList()),
+                Collections.<TypeDefinition>emptyList(), Collections.<ExceptionType>emptyList()),
             target,
             arguments
         );
     }
 
+    public static Expression call(Method method, Node target, Node... arguments) {
+        return new CallExpression(method, target, arguments);
+    }
+
+    /**
+     * Static call.
+     */
+    public static Expression call(Method method, Node... arguments) {
+        return new CallExpression(method, null, arguments);
+    }
+
     /**
      * Reference to a Method, similar than field-reference
      * @return
      */
-    public static Method method(TypeNode definingClass, String name, TypeNode returnType, List<TypeNode> parameterTypes, List<ExceptionType> exceptions) {
+    public static Method method(TypeDefinition definingClass, String name, TypeDefinition returnType, List<TypeDefinition> parameterTypes, List<ExceptionType> exceptions) {
         return new Method(definingClass, name, returnType, parameterTypes, exceptions);
     }
 
     /**
      * Declares a variable.
      */
-    public static ParameterExpression parameter(String name, TypeNode type) {
+    public static ParameterExpression parameter(String name, TypeDefinition type) {
         return new ParameterExpression(type, name);
     }
+
+    /**
+     * New Instance of Class / Type.
+     */
+    public static Expression new_(TypeDefinition type, Node... arguments) {
+        return new NewExpression(type, arguments);
+    }
+
+    /**
+     * New Instance of Class / Type.
+     */
+    public static Expression new_(TypeDefinition type, List<Node> arguments) {
+        return new NewExpression(type, arguments);
+    }
+
+    /**
+     * Return Statements.
+     */
+    public static ReturnStatement return_(Expression value) {
+        return new ReturnStatement(value);
+    }
 }
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/FieldDeclaration.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/FieldDeclaration.java
index 5231a4a..426dabb 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/FieldDeclaration.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/FieldDeclaration.java
@@ -26,23 +26,23 @@ import java.util.Set;
 public class FieldDeclaration implements Node {
 
     private final Set<Modifier> modifiers;
-    private final TypeNode type;
+    private final TypeDefinition type;
     private final String name;
 
     private final Expression initializer;
 
-    public FieldDeclaration(Set<Modifier> modifiers, TypeNode type, String name, Expression initializer) {
+    public FieldDeclaration(Set<Modifier> modifiers, TypeDefinition type, String name, Expression initializer) {
         this.modifiers = modifiers;
         this.type = type;
         this.name = name;
         this.initializer = initializer;
     }
 
-    public FieldDeclaration(TypeNode type, String name) {
+    public FieldDeclaration(TypeDefinition type, String name) {
         this(Collections.emptySet(), type, name, null);
     }
 
-    public FieldDeclaration(TypeNode type, String name, Modifier... modifiers) {
+    public FieldDeclaration(TypeDefinition type, String name, Modifier... modifiers) {
         this(new HashSet<>(Arrays.asList(modifiers)), type, name, null);
     }
 
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/FieldReference.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/FieldReference.java
index aa9f14d..cc954e8 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/FieldReference.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/FieldReference.java
@@ -25,12 +25,12 @@ public class FieldReference extends ParameterExpression {
     /**
      * if target == null, reference on a field in the surrounding class ("this")
      */
-    public FieldReference(TypeNode type, String name, Node target) {
+    public FieldReference(TypeDefinition type, String name, Node target) {
         super(type, name);
         this.target = target;
     }
 
-    public FieldReference(TypeNode type, String name) {
+    public FieldReference(TypeDefinition type, String name) {
         this(type, name, null);
     }
 
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/Generator.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/Generator.java
index 4fdf6c3..d725c1b 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/Generator.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/Generator.java
@@ -60,9 +60,9 @@ public interface Generator {
 
     void generateClass(String namespace, String className, List<FieldDeclaration> fields, List<ConstructorDeclaration> constructors, List<MethodDefinition> methods, List<ClassDeclaration> innerClasses, boolean mainClass);
 
-    void generateFieldDeclaration(Set<Modifier> modifiers, TypeNode type, String name, Expression initializer);
+    void generateFieldDeclaration(Set<Modifier> modifiers, TypeDefinition type, String name, Expression initializer);
 
-    void generateFieldReference(TypeNode type, String name);
+    void generateFieldReference(TypeDefinition type, String name);
 
     void generateConstructor(Set<Modifier> modifiers, String className, List<ParameterExpression> parameters, Block body);
 
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/JavaGenerator.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/JavaGenerator.java
index f46a039..90b9b35 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/JavaGenerator.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/JavaGenerator.java
@@ -248,7 +248,7 @@ public class JavaGenerator implements Generator {
         writer.writeLine("}");
     }
 
-    @Override public void generateFieldDeclaration(Set<Modifier> modifiers, TypeNode type, String name, Expression initializer) {
+    @Override public void generateFieldDeclaration(Set<Modifier> modifiers, TypeDefinition type, String name, Expression initializer) {
         if (modifiers.contains(Modifier.PRIVATE)) {
             writer.startLine("private ");
         } else {
@@ -272,7 +272,7 @@ public class JavaGenerator implements Generator {
         writer.endLine();
     }
 
-    @Override public void generateFieldReference(TypeNode type, String name) {
+    @Override public void generateFieldReference(TypeDefinition type, String name) {
         writer.write("this.");
         writer.write(name);
     }
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/Method.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/Method.java
index b3555ed..1e44fe1 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/Method.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/Method.java
@@ -27,13 +27,13 @@ import java.util.List;
  */
 public class Method implements Node {
 
-    private final TypeNode type;    // Type where this thing is defined on
+    private final TypeDefinition type;    // Type where this thing is defined on
     private final String name;
-    private final TypeNode returnType;
-    private final List<TypeNode> parameterTypes;
+    private final TypeDefinition returnType;
+    private final List<TypeDefinition> parameterTypes;
     private final List<ExceptionType> expressionTypes;
 
-    public Method(TypeNode type, String name, TypeNode returnType, List<TypeNode> parameterTypes, List<ExceptionType> expressionTypes) {
+    public Method(TypeDefinition type, String name, TypeDefinition returnType, List<TypeDefinition> parameterTypes, List<ExceptionType> expressionTypes) {
         this.type = type;
         this.name = name;
         this.returnType = returnType;
@@ -41,7 +41,7 @@ public class Method implements Node {
         this.expressionTypes = expressionTypes;
     }
 
-    public TypeNode getType() {
+    public TypeDefinition getType() {
         return type;
     }
 
@@ -49,11 +49,11 @@ public class Method implements Node {
         return name;
     }
 
-    public TypeNode getReturnType() {
+    public TypeDefinition getReturnType() {
         return returnType;
     }
 
-    public List<TypeNode> getParameterTypes() {
+    public List<TypeDefinition> getParameterTypes() {
         return parameterTypes;
     }
 
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/MethodDefinition.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/MethodDefinition.java
index 3e71599..999fd44 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/MethodDefinition.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/MethodDefinition.java
@@ -26,11 +26,11 @@ public class MethodDefinition implements Node {
 
     private final Set<Modifier> modifiers;
     private final String name;
-    private final TypeNode resultType;
+    private final TypeDefinition resultType;
     private final List<ParameterExpression> parameters;
     private final Block body;
 
-    public MethodDefinition(Set<Modifier> modifiers, String name, TypeNode resultType, List<ParameterExpression> parameters, Block body) {
+    public MethodDefinition(Set<Modifier> modifiers, String name, TypeDefinition resultType, List<ParameterExpression> parameters, Block body) {
         this.modifiers = modifiers;
         this.name = name;
         this.resultType = resultType;
@@ -38,7 +38,7 @@ public class MethodDefinition implements Node {
         this.body = body;
     }
 
-    public MethodDefinition(String name, TypeNode resultType, List<ParameterExpression> parameters, Block body) {
+    public MethodDefinition(String name, TypeDefinition resultType, List<ParameterExpression> parameters, Block body) {
         this(Collections.<Modifier>emptySet(), name, resultType, parameters, body);
     }
 
@@ -50,7 +50,7 @@ public class MethodDefinition implements Node {
         return name;
     }
 
-    public TypeNode getResultType() {
+    public TypeDefinition getResultType() {
         return resultType;
     }
 
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/NewExpression.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/NewExpression.java
index 8b29a4e..42d17c6 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/NewExpression.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/NewExpression.java
@@ -25,12 +25,12 @@ public class NewExpression extends Expression {
 
     private List<Node> arguments;
 
-    public NewExpression(TypeNode myClazz, List<Node> arguments) {
+    public NewExpression(TypeDefinition myClazz, List<Node> arguments) {
         super(myClazz);
         this.arguments = arguments;
     }
 
-    public NewExpression(TypeNode myClazz, Node... arguments) {
+    public NewExpression(TypeDefinition myClazz, Node... arguments) {
         this(myClazz, Arrays.asList(arguments));
     }
 
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/NoOp.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/NoOp.java
deleted file mode 100644
index 583670a..0000000
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/NoOp.java
+++ /dev/null
@@ -1,37 +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.codegen.ast;
-
-/**
- * Do Nothing command;
- */
-public class NoOp extends Expression {
-
-    protected NoOp() {
-        super(Primitive.VOID);
-    }
-
-    @Override public <T> T accept(NodeVisitor<T> visitor) {
-        return null;
-    }
-
-    @Override public void write(Generator writer) {
-        writer.generateNoOp();
-    }
-}
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ParameterExpression.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ParameterExpression.java
index bbaf56a..1d0887c 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ParameterExpression.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ParameterExpression.java
@@ -22,7 +22,7 @@ public class ParameterExpression extends Expression {
 
     private final String name;
 
-    public ParameterExpression(TypeNode type, String name) {
+    public ParameterExpression(TypeDefinition type, String name) {
         super(type);
         this.name = name;
     }
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/Primitive.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/Primitive.java
index 61e7ce3..4d6ecb7 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/Primitive.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/Primitive.java
@@ -18,7 +18,7 @@ under the License.
 */
 package org.apache.plc4x.codegen.ast;
 
-public class Primitive extends TypeNode {
+public class Primitive extends TypeDefinition {
 
     // Shorthands
     public static final Primitive VOID = new Primitive(DataType.VOID);
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/PythonGenerator.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/PythonGenerator.java
index 6eb9314..9e4b17e 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/PythonGenerator.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/PythonGenerator.java
@@ -255,7 +255,7 @@ public class PythonGenerator implements Generator {
         writer.endBlock();
     }
 
-    @Override public void generateFieldDeclaration(Set<Modifier> modifiers, TypeNode type, String name, Expression initializer) {
+    @Override public void generateFieldDeclaration(Set<Modifier> modifiers, TypeDefinition type, String name, Expression initializer) {
         writer.startLine("");
         writer.write(name);
         writer.write(": ");
@@ -270,7 +270,7 @@ public class PythonGenerator implements Generator {
         writer.endLine();
     }
 
-    @Override public void generateFieldReference(TypeNode type, String name) {
+    @Override public void generateFieldReference(TypeDefinition type, String name) {
         writer.write("self.");
         writer.write(name);
     }
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/TypeNode.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/TypeDefinition.java
similarity index 90%
rename from sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/TypeNode.java
rename to sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/TypeDefinition.java
index 5f55cf8..65d195a 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/TypeNode.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/TypeDefinition.java
@@ -19,13 +19,13 @@ under the License.
 package org.apache.plc4x.codegen.ast;
 
 /**
- * Stub for the Type System.
+ * Definition of a Type / Class.
  */
-public class TypeNode implements Node {
+public class TypeDefinition implements Node {
 
     private final String typeString;
 
-    public TypeNode(String typeString) {
+    public TypeDefinition(String typeString) {
         this.typeString = typeString;
     }
 
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/TypeUtil.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/TypeUtil.java
index 4d3c308..e27d2aa 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/TypeUtil.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/TypeUtil.java
@@ -20,7 +20,7 @@ package org.apache.plc4x.codegen.ast;
 
 public class TypeUtil {
 
-    public static TypeNode infer(Object o) {
+    public static TypeDefinition infer(Object o) {
         if (o instanceof Double) {
             return Primitive.DOUBLE;
         }
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/UnknownType.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/UnknownType.java
index 0fd9508..97bb34b 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/UnknownType.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/UnknownType.java
@@ -21,7 +21,7 @@ package org.apache.plc4x.codegen.ast;
 /**
  * Represents an Unknown Type.
  */
-public class UnknownType extends TypeNode {
+public class UnknownType extends TypeDefinition {
 
     public static final UnknownType INSTANCE = new UnknownType();
 
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/util/EnumFactory.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/util/EnumFactory.java
index d64bd02..3185007 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/util/EnumFactory.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/util/EnumFactory.java
@@ -53,7 +53,7 @@ public class EnumFactory {
 
         // Now add all these static methods on top
         for (EnumEntry enumEntry : enumEntries) {
-            final TypeNode clazzType = new TypeNode(desc.getName());
+            final TypeDefinition clazzType = new TypeDefinition(desc.getName());
             final String fieldName = enumEntry.getName().toUpperCase();
             finalFields.add(new FieldDeclaration(
                 new HashSet<>(Arrays.asList(Modifier.STATIC, Modifier.FINAL)),
@@ -75,13 +75,13 @@ public class EnumFactory {
         return new ClassDeclaration("", desc.getName(), finalFields, Arrays.asList(constructor), methods, null);
     }
 
-    static MethodDefinition getGetterDefinition(String name, TypeNode type) {
+    static MethodDefinition getGetterDefinition(String name, TypeDefinition type) {
         String getter = "get" + name.substring(0, 1).toUpperCase() + name.substring(1);
         Block body = new Block(new ReturnStatement(new FieldReference(type, name)));
         return new MethodDefinition(getter, type, Collections.emptyList(), body);
     }
 
-    static MethodDefinition getSetterDefinition(String name, TypeNode type) {
+    static MethodDefinition getSetterDefinition(String name, TypeDefinition type) {
         String getter = "set" + name.substring(0, 1).toUpperCase() + name.substring(1);
         final ParameterExpression param = new ParameterExpression(type, name);
         Block body = new Block(Expressions.assignment(new FieldReference(type, name), param));
@@ -133,15 +133,15 @@ public class EnumFactory {
 
     public static class Field {
 
-        private final TypeNode type;
+        private final TypeDefinition type;
         private final String name;
 
-        public Field(TypeNode type, String name) {
+        public Field(TypeDefinition type, String name) {
             this.type = type;
             this.name = name;
         }
 
-        public TypeNode getType() {
+        public TypeDefinition getType() {
             return type;
         }
 
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/util/PojoFactory.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/util/PojoFactory.java
index 3370746..775c679 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/util/PojoFactory.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/util/PojoFactory.java
@@ -31,7 +31,7 @@ import static org.apache.plc4x.codegen.util.EnumFactory.getSetterDefinition;
 
 public class PojoFactory {
 
-    private TypeNode BUFFER_TYPE;
+    private TypeDefinition BUFFER_TYPE;
 
     private Method readByte = new Method(BUFFER_TYPE, "readByte", Primitive.INTEGER, Collections.emptyList(), Collections.emptyList());
 
@@ -58,13 +58,13 @@ public class PojoFactory {
 
         // Encode Method
         methods.add(new MethodDefinition("encode", Primitive.VOID, Collections.singletonList(
-            new ParameterExpression(new TypeNode("org.apache.plc4x.api.Buffer"), "buffer")
+            new ParameterExpression(new TypeDefinition("org.apache.plc4x.api.Buffer"), "buffer")
         ), new Block()));
 
         // Decode Method
-        BUFFER_TYPE = new TypeNode("org.apache.plc4x.api.Buffer");
+        BUFFER_TYPE = new TypeDefinition("org.apache.plc4x.api.Buffer");
         final ParameterExpression buffer = new ParameterExpression(BUFFER_TYPE, "buffer");
-        final TypeNode clazz = new TypeNode(desc.getName());
+        final TypeDefinition clazz = new TypeDefinition(desc.getName());
         final ParameterExpression instance = new ParameterExpression(clazz, "instance");
         methods.add(new MethodDefinition(Collections.singleton(Modifier.STATIC), "decode", clazz, Collections.singletonList(
             buffer
@@ -104,15 +104,15 @@ public class PojoFactory {
 
     public static class Field {
 
-        private final TypeNode type;
+        private final TypeDefinition type;
         private final String name;
 
-        public Field(TypeNode type, String name) {
+        public Field(TypeDefinition type, String name) {
             this.type = type;
             this.name = name;
         }
 
-        public TypeNode getType() {
+        public TypeDefinition getType() {
             return type;
         }
 
diff --git a/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/JavaGeneratorTest.java b/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/JavaGeneratorTest.java
index c214c14..530c15c 100644
--- a/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/JavaGeneratorTest.java
+++ b/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/JavaGeneratorTest.java
@@ -106,7 +106,7 @@ public class JavaGeneratorTest {
 
     @Test
     public void callStaticMethod() {
-        final TypeNode myClazz = new TypeNode("MyClazz");
+        final TypeDefinition myClazz = new TypeDefinition("MyClazz");
         Expression expr = new CallExpression(new Method(myClazz, "toString", Primitive.VOID, Collections.singletonList(Primitive.DOUBLE), Collections.EMPTY_LIST), null, new ConstantExpression(5.0));
 
         expr.write(generator);
@@ -118,7 +118,7 @@ public class JavaGeneratorTest {
 
     @Test
     public void callMethod() {
-        final TypeNode myClazz = new TypeNode("MyClazz");
+        final TypeDefinition myClazz = new TypeDefinition("MyClazz");
         Expression expr = new CallExpression(new Method(myClazz, "toString", Primitive.VOID, Collections.singletonList(Primitive.DOUBLE), Collections.EMPTY_LIST), new ParameterExpression(myClazz, "a"), new ConstantExpression(5.0));
 
         expr.write(generator);
@@ -130,7 +130,7 @@ public class JavaGeneratorTest {
 
     @Test
     public void complexCallAssignment() {
-        final TypeNode myClazz = new TypeNode("MyClazz");
+        final TypeDefinition myClazz = new TypeDefinition("MyClazz");
         final ParameterExpression instance = new ParameterExpression(myClazz, "instance");
         final Method getNumberMethod = new Method(myClazz, "getNumber", Primitive.DOUBLE, Collections.emptyList(), Collections.emptyList());
         final Method staticMethod = new Method(myClazz, "staticMethod", Primitive.DOUBLE, Collections.emptyList(), Collections.emptyList());