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:57 UTC
[plc4x] 01/04: Next step in the Refactoring,
class structure is way cleaner now.
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 b80c6039991e62c1c5cbf83fbadeb17497baa590
Author: julian <j....@pragmaticminds.de>
AuthorDate: Sun May 5 17:51:43 2019 +0200
Next step in the Refactoring, class structure is way cleaner now.
---
.../java/org/apache/plc4x/codegen/DFDLUtil.java | 5 +-
...{ClassDefinition.java => ClassDeclaration.java} | 8 +-
.../{ConstantNode.java => ConstantExpression.java} | 10 +-
.../{FieldReference.java => ExceptionType.java} | 18 ++--
.../org/apache/plc4x/codegen/ast/Expressions.java | 119 ++++++++++++++++++++-
.../apache/plc4x/codegen/ast/FieldReference.java | 12 ++-
.../org/apache/plc4x/codegen/ast/FileNode.java | 6 +-
.../org/apache/plc4x/codegen/ast/Generator.java | 6 +-
.../org/apache/plc4x/codegen/ast/IfStatement.java | 7 +-
.../apache/plc4x/codegen/ast/JavaGenerator.java | 13 ++-
.../java/org/apache/plc4x/codegen/ast/Method.java | 6 +-
.../apache/plc4x/codegen/ast/MethodDefinition.java | 2 +-
.../org/apache/plc4x/codegen/ast/NodeVisitor.java | 2 +-
.../apache/plc4x/codegen/ast/PythonGenerator.java | 29 +++--
.../ast/{ConstantNode.java => UnknownType.java} | 28 ++---
.../org/apache/plc4x/codegen/util/EnumFactory.java | 12 ++-
.../org/apache/plc4x/codegen/util/PojoFactory.java | 16 +--
.../plc4x/codegen/ast/JavaGeneratorTest.java | 70 ++++++------
.../plc4x/codegen/ast/PythonGeneratorTest.java | 12 +--
.../codegen/{ast => util}/EnumFactoryTest.java | 33 +++---
.../codegen/{ast => util}/PojoFactoryTest.java | 11 +-
21 files changed, 296 insertions(+), 129 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 eae3e45..7a97ae1 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
@@ -19,6 +19,7 @@ under the License.
package org.apache.plc4x.codegen;
import org.apache.plc4x.codegen.ast.*;
+import org.apache.plc4x.codegen.util.PojoFactory;
import org.dom4j.*;
import org.dom4j.io.SAXReader;
@@ -58,12 +59,12 @@ public class DFDLUtil {
fields.add(new PojoFactory.Field(new TypeNode(elem.attributeValue("type")), elem.attributeValue("name")));
}
final PojoFactory.PojoDescription desc = new PojoFactory.PojoDescription(element.attributeValue("name"), fields);
- final ClassDefinition classDefinition = factory.create(desc);
+ final ClassDeclaration classDeclaration = factory.create(desc);
// Now generate the code for that
final CodeWriter writer = new CodeWriter(4);
final Generator generator = new JavaGenerator(writer);
- classDefinition.write(generator);
+ classDeclaration.write(generator);
System.out.println("Class Definition");
System.out.println("----------------------------");
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ClassDefinition.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ClassDeclaration.java
similarity index 84%
rename from sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ClassDefinition.java
rename to sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ClassDeclaration.java
index 87828fb..8c10a75 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ClassDefinition.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ClassDeclaration.java
@@ -20,7 +20,7 @@ package org.apache.plc4x.codegen.ast;
import java.util.List;
-public class ClassDefinition implements Node {
+public class ClassDeclaration implements Node {
private final String namespace;
private final String className;
@@ -28,9 +28,9 @@ public class ClassDefinition implements Node {
private final List<FieldDeclaration> fields;
private final List<ConstructorDeclaration> constructors;
private final List<MethodDefinition> methods;
- private final List<ClassDefinition> innerClasses;
+ private final List<ClassDeclaration> innerClasses;
- public ClassDefinition(String namespace, String className, List<FieldDeclaration> fields, List<ConstructorDeclaration> constructors, List<MethodDefinition> methods, List<ClassDefinition> innerClasses) {
+ public ClassDeclaration(String namespace, String className, List<FieldDeclaration> fields, List<ConstructorDeclaration> constructors, List<MethodDefinition> methods, List<ClassDeclaration> innerClasses) {
this.namespace = namespace;
this.className = className;
this.fields = fields;
@@ -59,7 +59,7 @@ public class ClassDefinition implements Node {
return methods;
}
- public List<ClassDefinition> getInnerClasses() {
+ public List<ClassDeclaration> getInnerClasses() {
return innerClasses;
}
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ConstantNode.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ConstantExpression.java
similarity index 82%
copy from sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ConstantNode.java
copy to sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ConstantExpression.java
index 6b4e52a..83b71e1 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ConstantNode.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ConstantExpression.java
@@ -18,15 +18,19 @@ under the License.
*/
package org.apache.plc4x.codegen.ast;
-public class ConstantNode extends Expression {
+public class ConstantExpression extends Expression {
private Object value;
- public ConstantNode(Object value) {
- super(TypeUtil.infer(value));
+ public ConstantExpression(TypeNode type, Object value) {
+ super(type);
this.value = value;
}
+ public ConstantExpression(Object value) {
+ this(TypeUtil.infer(value), value);
+ }
+
public Object getValue() {
return value;
}
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/ExceptionType.java
similarity index 73%
copy from sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/FieldReference.java
copy to sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ExceptionType.java
index f85e129..9e165c8 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/ExceptionType.java
@@ -18,17 +18,23 @@ under the License.
*/
package org.apache.plc4x.codegen.ast;
-public class FieldReference extends ParameterExpression {
+/**
+ * Defines an Exception-Type.
+ */
+public class ExceptionType extends TypeNode {
- public FieldReference(TypeNode type, String name) {
- super(type, name);
+ public ExceptionType(String typeString) {
+ super(typeString);
}
- @Override public <T> T accept(NodeVisitor<T> visitor) {
+ @Override
+ public <T> T accept(NodeVisitor<T> visitor) {
return null;
}
- @Override public void write(Generator writer) {
- writer.generateFieldReference(type, getName());
+ @Override
+ public void write(Generator writer) {
+
}
+
}
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 728021a..6f7008a 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
@@ -1,10 +1,35 @@
+/*
+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;
+import java.util.Collections;
+import java.util.List;
+
/**
* General Factory method to use.
*/
public class Expressions {
+ private Expressions() {
+ // do not instantiate
+ }
+
/**
* Assign a value to a target (field or parameter)
* @param target Where the value is assigned
@@ -25,7 +50,7 @@ public class Expressions {
* @param op
* @return
*/
- public static Expression binaryExpression(TypeNode type, Node left, Node right, Operation op) {
+ public static Expression binaryExpression(TypeNode type, Node left, Node right, BinaryExpression.Operation op) {
return new BinaryExpression(type, left, right, op);
}
@@ -53,8 +78,8 @@ public class Expressions {
* @param method
* @param arguments
*/
- public static Expression call(Node instance, Method method, Arguments... arguments) {
- return new CallExpression(method, target, arguments);
+ public static Expression call(Node instance, Method method, Node... arguments) {
+ return new CallExpression(method, instance, arguments);
}
/**
@@ -65,11 +90,19 @@ public class Expressions {
* @param method
* @param arguments
*/
- public static Expression staticCall(Method method, Arguments... arguments) {
+ public static Expression staticCall(Method method, Node... arguments) {
return new CallExpression(method, null, arguments);
}
/**
+ * Simple if-then-else.
+ * If no else is needed, orElse can be null.
+ */
+ public static Statement ifElse(Expression condition, Block then, Block orElse) {
+ return new IfStatement(condition, then, orElse);
+ }
+
+ /**
* Conditional Statement of the form
* <code>
* if (cond1) {
@@ -84,4 +117,82 @@ public class Expressions {
public static Statement conditionalStatement(List<Expression> condition, List<Block> blocks) {
return new IfStatement(condition, blocks);
}
+
+ /**
+ * Defines a compile time constant and infers the type based on what java would do.
+ */
+ public static Expression constant(Object value) {
+ return new ConstantExpression(value);
+ }
+
+ /**
+ * 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) {
+ return new ConstantExpression(value);
+ }
+
+ /**
+ * Declares a constant (no field).
+ * Variable type is infered from the initializing expression.
+ */
+ public static Statement declaration(String variable, Expression initializer) {
+ return new DeclarationStatement(parameter(variable, initializer.getType()), initializer);
+ }
+
+ /**
+ * Declares a constant (no field), which is not initialized.
+ */
+ public static Statement declaration(String variable, TypeNode type) {
+ return new DeclarationStatement(parameter(variable, type), null);
+ }
+
+ /**
+ * Reference to a field in the surrounding class.
+ */
+ public static Expression field(String name) {
+ return new FieldReference(new UnknownType(), name);
+ }
+
+ /**
+ * Reference to a field on the given target
+ */
+ public static Expression field(Node target, String name) {
+ return new FieldReference(new UnknownType(), name, target);
+ }
+
+ /**
+ * Adds a line of comment.
+ */
+ public static Node comment(String comment) {
+ return new LineComment(comment);
+ }
+
+ /**
+ * Simple call to a method which throws no exception and that stuff.
+ */
+ 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()),
+ target,
+ 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) {
+ return new Method(definingClass, name, returnType, parameterTypes, exceptions);
+ }
+
+ /**
+ * Declares a variable.
+ */
+ public static ParameterExpression parameter(String name, TypeNode type) {
+ return new ParameterExpression(type, name);
+ }
}
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 f85e129..aa9f14d 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
@@ -20,8 +20,18 @@ package org.apache.plc4x.codegen.ast;
public class FieldReference extends ParameterExpression {
- public FieldReference(TypeNode type, String name) {
+ private final Node target;
+
+ /**
+ * if target == null, reference on a field in the surrounding class ("this")
+ */
+ public FieldReference(TypeNode type, String name, Node target) {
super(type, name);
+ this.target = target;
+ }
+
+ public FieldReference(TypeNode type, String name) {
+ this(type, name, null);
}
@Override public <T> T accept(NodeVisitor<T> visitor) {
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/FileNode.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/FileNode.java
index df67708..3906979 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/FileNode.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/FileNode.java
@@ -25,10 +25,10 @@ import java.util.List;
*/
public class FileNode implements Node {
- private final ClassDefinition mainClass;
- private final List<ClassDefinition> innerClasses;
+ private final ClassDeclaration mainClass;
+ private final List<ClassDeclaration> innerClasses;
- public FileNode(ClassDefinition mainClass, List<ClassDefinition> innerClasses) {
+ public FileNode(ClassDeclaration mainClass, List<ClassDeclaration> innerClasses) {
this.mainClass = mainClass;
this.innerClasses = innerClasses;
}
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 6179060..4fdf6c3 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
@@ -30,7 +30,7 @@ public interface Generator {
*/
Node prepare(Node root);
- void generate(ConstantNode constantNode);
+ void generate(ConstantExpression constantExpression);
void generateDeclarationWithInitializer(DeclarationStatement declarationStatement);
@@ -58,7 +58,7 @@ public interface Generator {
void generateReturn(Expression value);
- void generateClass(String namespace, String className, List<FieldDeclaration> fields, List<ConstructorDeclaration> constructors, List<MethodDefinition> methods, List<ClassDefinition> innerClasses, boolean mainClass);
+ 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);
@@ -66,7 +66,7 @@ public interface Generator {
void generateConstructor(Set<Modifier> modifiers, String className, List<ParameterExpression> parameters, Block body);
- void generateFile(ClassDefinition mainClass, List<ClassDefinition> innerClasses);
+ void generateFile(ClassDeclaration mainClass, List<ClassDeclaration> innerClasses);
void generateType(String typeString);
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/IfStatement.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/IfStatement.java
index f8f30ca..14aa327 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/IfStatement.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/IfStatement.java
@@ -27,7 +27,12 @@ public class IfStatement extends Statement {
private List<Block> blocks;
public IfStatement(Expression condition, Block body, Block orElse) {
- this(Arrays.asList(condition), Arrays.asList(body, orElse));
+ this.condition = Arrays.asList(condition);
+ if (orElse == null) {
+ this.blocks = Arrays.asList(body);
+ } else {
+ this.blocks = Arrays.asList(body, orElse);
+ }
}
public IfStatement(List<Expression> condition, List<Block> blocks) {
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 d9a14c9..f46a039 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
@@ -35,8 +35,8 @@ public class JavaGenerator implements Generator {
return root;
}
- @Override public void generate(ConstantNode constantNode) {
- writer.write(constantNode.getValue().toString());
+ @Override public void generate(ConstantExpression constantExpression) {
+ writer.write(constantExpression.getValue().toString());
}
@Override public void generateDeclarationWithInitializer(DeclarationStatement declarationStatement) {
@@ -102,6 +102,9 @@ public class JavaGenerator implements Generator {
}
@Override public void writeBlock(Block statements) {
+ if (statements == null) {
+ return;
+ }
writer.startBlock();
for (Node statement : statements.getStatements()) {
// Dont to the wrapping for If Statements
@@ -199,7 +202,7 @@ public class JavaGenerator implements Generator {
value.write(this);
}
- @Override public void generateClass(String namespace, String className, List<FieldDeclaration> fields, List<ConstructorDeclaration> constructors, List<MethodDefinition> methods, List<ClassDefinition> innerClasses, boolean mainClass) {
+ @Override public void generateClass(String namespace, String className, List<FieldDeclaration> fields, List<ConstructorDeclaration> constructors, List<MethodDefinition> methods, List<ClassDeclaration> innerClasses, boolean mainClass) {
// Add static?!
// Own File?
writer.startLine(PUBLIC_);
@@ -236,7 +239,7 @@ public class JavaGenerator implements Generator {
// If there are inner classes, implement them
if (innerClasses != null) {
- for (ClassDefinition innerClass : innerClasses) {
+ for (ClassDeclaration innerClass : innerClasses) {
this.generateClass(innerClass.getNamespace(), innerClass.getClassName(), innerClass.getFields(), innerClass.getConstructors(), innerClass.getMethods(), innerClass.getInnerClasses(), false);
}
}
@@ -296,7 +299,7 @@ public class JavaGenerator implements Generator {
writer.writeLine("}");
}
- @Override public void generateFile(ClassDefinition mainClass, List<ClassDefinition> innerClasses) {
+ @Override public void generateFile(ClassDeclaration mainClass, List<ClassDeclaration> innerClasses) {
generateClass(mainClass.getNamespace(), mainClass.getClassName(), mainClass.getFields(), mainClass.getConstructors(), mainClass.getMethods(), innerClasses, true);
}
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 89b5491..b3555ed 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
@@ -31,9 +31,9 @@ public class Method implements Node {
private final String name;
private final TypeNode returnType;
private final List<TypeNode> parameterTypes;
- private final List<TypeNode> expressionTypes;
+ private final List<ExceptionType> expressionTypes;
- public Method(TypeNode type, String name, TypeNode returnType, List<TypeNode> parameterTypes, List<TypeNode> expressionTypes) {
+ public Method(TypeNode type, String name, TypeNode returnType, List<TypeNode> parameterTypes, List<ExceptionType> expressionTypes) {
this.type = type;
this.name = name;
this.returnType = returnType;
@@ -57,7 +57,7 @@ public class Method implements Node {
return parameterTypes;
}
- public List<TypeNode> getExpressionTypes() {
+ public List<ExceptionType> getExpressionTypes() {
return expressionTypes;
}
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 fc41598..3e71599 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
@@ -39,7 +39,7 @@ public class MethodDefinition implements Node {
}
public MethodDefinition(String name, TypeNode resultType, List<ParameterExpression> parameters, Block body) {
- this(Collections.emptySet(), name, resultType, parameters, body);
+ this(Collections.<Modifier>emptySet(), name, resultType, parameters, body);
}
public Set<Modifier> getModifiers() {
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/NodeVisitor.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/NodeVisitor.java
index 76737c6..508a1a2 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/NodeVisitor.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/NodeVisitor.java
@@ -20,7 +20,7 @@ package org.apache.plc4x.codegen.ast;
public interface NodeVisitor<T> {
- T visit(ConstantNode constantNode);
+ T visit(ConstantExpression constantExpression);
T visit(DeclarationStatement declarationStatement);
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 31087b5..6eb9314 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
@@ -33,8 +33,8 @@ public class PythonGenerator implements Generator {
return null;
}
- @Override public void generate(ConstantNode constantNode) {
- writer.write(constantNode.getValue().toString());
+ @Override public void generate(ConstantExpression constantExpression) {
+ writer.write(constantExpression.getValue().toString());
}
@Override public void generateDeclarationWithInitializer(DeclarationStatement declarationStatement) {
@@ -57,7 +57,24 @@ public class PythonGenerator implements Generator {
}
@Override public void generatePrimitive(Primitive.DataType primitive) {
- writer.write(primitive.getTypeString());
+ switch (primitive) {
+ case STRING:
+ writer.write("string");
+ break;
+ case LONG:
+ case INTEGER:
+ writer.write("long");
+ break;
+ case DOUBLE:
+ writer.write("float");
+ break;
+ case BOOLEAN:
+ writer.write("bool");
+ break;
+ case VOID:
+ default:
+ throw new UnsupportedOperationException("Primitive type " + primitive + " is not implemented!");
+ }
}
@Override public void generate(IfStatement ifStatement) {
@@ -191,7 +208,7 @@ public class PythonGenerator implements Generator {
value.write(this);
}
- @Override public void generateClass(String namespace, String className, List<FieldDeclaration> fields, List<ConstructorDeclaration> constructors, List<MethodDefinition> methods, List<ClassDefinition> innerClasses, boolean mainClass) {
+ @Override public void generateClass(String namespace, String className, List<FieldDeclaration> fields, List<ConstructorDeclaration> constructors, List<MethodDefinition> methods, List<ClassDeclaration> innerClasses, boolean mainClass) {
// Add static?!
// Own File?
writer.startLine("class ");
@@ -230,7 +247,7 @@ public class PythonGenerator implements Generator {
// If there are inner classes, implement them
if (innerClasses != null) {
- for (ClassDefinition innerClass : innerClasses) {
+ for (ClassDeclaration innerClass : innerClasses) {
this.generateClass(innerClass.getNamespace(), innerClass.getClassName(), innerClass.getFields(), innerClass.getConstructors(), innerClass.getMethods(), innerClass.getInnerClasses(), false);
}
}
@@ -273,7 +290,7 @@ public class PythonGenerator implements Generator {
body.write(this);
}
- @Override public void generateFile(ClassDefinition mainClass, List<ClassDefinition> innerClasses) {
+ @Override public void generateFile(ClassDeclaration mainClass, List<ClassDeclaration> innerClasses) {
generateClass(mainClass.getNamespace(), mainClass.getClassName(), mainClass.getFields(), mainClass.getConstructors(), mainClass.getMethods(), innerClasses, true);
}
diff --git a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ConstantNode.java b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/UnknownType.java
similarity index 61%
rename from sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ConstantNode.java
rename to sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/UnknownType.java
index 6b4e52a..0fd9508 100644
--- a/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/ConstantNode.java
+++ b/sandbox/code-gen/src/main/java/org/apache/plc4x/codegen/ast/UnknownType.java
@@ -18,25 +18,29 @@ under the License.
*/
package org.apache.plc4x.codegen.ast;
-public class ConstantNode extends Expression {
+/**
+ * Represents an Unknown Type.
+ */
+public class UnknownType extends TypeNode {
- private Object value;
+ public static final UnknownType INSTANCE = new UnknownType();
- public ConstantNode(Object value) {
- super(TypeUtil.infer(value));
- this.value = value;
+ public UnknownType() {
+ super("");
}
- public Object getValue() {
- return value;
+ @Override
+ String getTypeString() {
+ throw new UnsupportedOperationException();
}
- @Override public <T> T accept(NodeVisitor<T> visitor) {
- return visitor.visit(this);
+ @Override
+ public <T> T accept(NodeVisitor<T> visitor) {
+ throw new UnsupportedOperationException();
}
- @Override public void write(Generator generator) {
- generator.generate(this);
+ @Override
+ public void write(Generator writer) {
+ throw new UnsupportedOperationException();
}
-
}
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 faef7b1..d64bd02 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
@@ -16,7 +16,9 @@ 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;
+package org.apache.plc4x.codegen.util;
+
+import org.apache.plc4x.codegen.ast.*;
import java.util.*;
import java.util.stream.Collectors;
@@ -26,14 +28,14 @@ import java.util.stream.Collectors;
*/
public class EnumFactory {
- public ClassDefinition create(PojoDescription desc, List<EnumEntry> enumEntries) {
+ public ClassDeclaration create(PojoDescription desc, List<EnumEntry> enumEntries) {
// Create all Fields first
final List<Node> constructorStatements = new ArrayList<>();
final List<FieldDeclaration> fields = new ArrayList<>();
for (Field field1 : desc.fields) {
FieldDeclaration fieldDeclaration = new FieldDeclaration(field1.getType(), field1.getName(), Modifier.PRIVATE, Modifier.FINAL);
fields.add(fieldDeclaration);
- constructorStatements.add(new AssignementExpression(
+ constructorStatements.add(Expressions.assignment(
new FieldReference(field1.getType(), field1.getName()),
new ParameterExpression(field1.getType(), field1.getName())
));
@@ -70,7 +72,7 @@ public class EnumFactory {
new Block(constructorStatements));
- return new ClassDefinition("", desc.getName(), finalFields, Arrays.asList(constructor), methods, null);
+ return new ClassDeclaration("", desc.getName(), finalFields, Arrays.asList(constructor), methods, null);
}
static MethodDefinition getGetterDefinition(String name, TypeNode type) {
@@ -82,7 +84,7 @@ public class EnumFactory {
static MethodDefinition getSetterDefinition(String name, TypeNode type) {
String getter = "set" + name.substring(0, 1).toUpperCase() + name.substring(1);
final ParameterExpression param = new ParameterExpression(type, name);
- Block body = new Block(new AssignementExpression(new FieldReference(type, name), param));
+ Block body = new Block(Expressions.assignment(new FieldReference(type, name), param));
return new MethodDefinition(getter, type, Collections.singletonList(param), body);
}
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 085bf5a..3370746 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
@@ -16,7 +16,9 @@ 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;
+package org.apache.plc4x.codegen.util;
+
+import org.apache.plc4x.codegen.ast.*;
import java.util.ArrayList;
import java.util.Arrays;
@@ -24,16 +26,16 @@ import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
-import static org.apache.plc4x.codegen.ast.EnumFactory.getGetterDefinition;
-import static org.apache.plc4x.codegen.ast.EnumFactory.getSetterDefinition;
+import static org.apache.plc4x.codegen.util.EnumFactory.getGetterDefinition;
+import static org.apache.plc4x.codegen.util.EnumFactory.getSetterDefinition;
public class PojoFactory {
private TypeNode BUFFER_TYPE;
- private Method readByte = new Method(BUFFER_TYPE, "readByte", Primitive.BYTE, Collections.emptyList(), Collections.emptyList());
+ private Method readByte = new Method(BUFFER_TYPE, "readByte", Primitive.INTEGER, Collections.emptyList(), Collections.emptyList());
- public ClassDefinition create(PojoDescription desc) {
+ public ClassDeclaration create(PojoDescription desc) {
// Create all Fields first
final List<FieldDeclaration> fields = desc.fields.stream()
.map(field -> new FieldDeclaration(field.getType(), field.getName()))
@@ -67,13 +69,13 @@ public class PojoFactory {
methods.add(new MethodDefinition(Collections.singleton(Modifier.STATIC), "decode", clazz, Collections.singletonList(
buffer
), new Block(
- new AssignementExpression(instance, new NewExpression(clazz)),
+ Expressions.assignment(instance, new NewExpression(clazz)),
new CallExpression(readByte, buffer),
new ReturnStatement(instance)
)));
- return new ClassDefinition("", desc.getName(), fields, Arrays.asList(new ConstructorDeclaration(Collections.emptyList(), new Block())), methods, null);
+ return new ClassDeclaration("", desc.getName(), fields, Arrays.asList(new ConstructorDeclaration(Collections.emptyList(), new Block())), methods, null);
}
public static class PojoDescription {
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 4f83b98..c214c14 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
@@ -39,22 +39,22 @@ public class JavaGeneratorTest {
@Test
public void writeDeclaration() {
- final DeclarationStatement stmt = new DeclarationStatement(new ParameterExpression(Primitive.DOUBLE, "a"), new ConstantNode(5.0));
+ final DeclarationStatement stmt = new DeclarationStatement(new ParameterExpression(Primitive.DOUBLE, "a"), new ConstantExpression(5.0));
stmt.write(generator);
final String code = writer.getCode();
- assertEquals("double a = 5.0", code);
+ assertEquals("Double a = 5.0", code);
}
@Test
public void ifStatement() {
final Statement stmt = new IfStatement(
new BinaryExpression(Primitive.DOUBLE, new ParameterExpression(Primitive.DOUBLE, "a"),
- new ConstantNode(10.0),
+ new ConstantExpression(10.0),
BinaryExpression.Operation.EQ),
- new Block(new DeclarationStatement(new ParameterExpression(Primitive.DOUBLE, "b"), new ConstantNode(5.0))),
- new Block(new DeclarationStatement(new ParameterExpression(Primitive.DOUBLE, "b"), new ConstantNode(3.0)))
+ new Block(new DeclarationStatement(new ParameterExpression(Primitive.DOUBLE, "b"), new ConstantExpression(5.0))),
+ new Block(new DeclarationStatement(new ParameterExpression(Primitive.DOUBLE, "b"), new ConstantExpression(3.0)))
);
stmt.write(generator);
@@ -62,9 +62,9 @@ public class JavaGeneratorTest {
final String code = writer.getCode();
assertEquals("if (a == 10.0) {\n" +
- " double b = 5.0;\n" +
+ " Double b = 5.0;\n" +
"} else {\n" +
- " double b = 3.0;\n" +
+ " Double b = 3.0;\n" +
"}\n", code);
}
@@ -74,16 +74,16 @@ public class JavaGeneratorTest {
new DeclarationStatement(new ParameterExpression(Primitive.DOUBLE, "c"), null),
new IfStatement(
new BinaryExpression(Primitive.DOUBLE, new ParameterExpression(Primitive.DOUBLE, "a"),
- new ConstantNode(10.0),
+ new ConstantExpression(10.0),
BinaryExpression.Operation.EQ),
new Block(
new IfStatement(
new BinaryExpression(Primitive.DOUBLE, new ParameterExpression(Primitive.DOUBLE, "b"),
- new ConstantNode(10.0),
+ new ConstantExpression(10.0),
BinaryExpression.Operation.EQ),
new Block(
- new AssignementExpression(new ParameterExpression(Primitive.DOUBLE, "c"), new ConstantNode(5.0)),
- new DeclarationStatement(new ParameterExpression(Primitive.DOUBLE, "d"), new ConstantNode(100.0))
+ new AssignementExpression(new ParameterExpression(Primitive.DOUBLE, "c"), new ConstantExpression(5.0)),
+ new DeclarationStatement(new ParameterExpression(Primitive.DOUBLE, "d"), new ConstantExpression(100.0))
),
null
)
@@ -95,19 +95,19 @@ public class JavaGeneratorTest {
final String code = writer.getCode();
- assertEquals(" double c;\n" +
+ assertEquals(" Double c;\n" +
" if (a == 10.0) {\n" +
" if (b == 10.0) {\n" +
" c = 5.0;\n" +
- " double d = 100.0;\n" +
+ " Double d = 100.0;\n" +
" }\n" +
" }\n", code);
}
@Test
public void callStaticMethod() {
- final TypeNode myClazz = new Primitive("MyClazz");
- Expression expr = new CallExpression(new Method(myClazz, "toString", Primitive.VOID, Collections.singletonList(Primitive.DOUBLE), Collections.EMPTY_LIST), null, new ConstantNode(5.0));
+ final TypeNode myClazz = new TypeNode("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,8 +118,8 @@ public class JavaGeneratorTest {
@Test
public void callMethod() {
- final TypeNode myClazz = new Primitive("MyClazz");
- Expression expr = new CallExpression(new Method(myClazz, "toString", Primitive.VOID, Collections.singletonList(Primitive.DOUBLE), Collections.EMPTY_LIST), new ParameterExpression(myClazz, "a"), new ConstantNode(5.0));
+ final TypeNode myClazz = new TypeNode("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 Primitive("MyClazz");
+ final TypeNode myClazz = new TypeNode("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());
@@ -147,8 +147,8 @@ public class JavaGeneratorTest {
assertEquals(" MyClazz instance;\n" +
" instance = new MyClazz();\n" +
" instance = new MyClazz(new MyClazz());\n" +
- " double a = instance.getNumber();\n" +
- " double b = MyClazz.staticMethod();\n", code);
+ " Double a = instance.getNumber();\n" +
+ " Double b = MyClazz.staticMethod();\n", code);
}
@Test
@@ -169,7 +169,7 @@ public class JavaGeneratorTest {
decl.write(generator);
final String code = writer.getCode();
- assertEquals("public double add(double a, double b) {\n" +
+ assertEquals("public Double add(Double a, Double b) {\n" +
" return a + b;\n" +
"}\n", code);
}
@@ -197,24 +197,24 @@ public class JavaGeneratorTest {
new Block(
new AssignementExpression(
currentRef,
- new BinaryExpression(currentRef.getType(), currentRef, new ConstantNode(1.0), BinaryExpression.Operation.PLUS)
+ new BinaryExpression(currentRef.getType(), currentRef, new ConstantExpression(1.0), BinaryExpression.Operation.PLUS)
)
)
);
- final ClassDefinition clazz = new ClassDefinition("org.apache.plc4x", "MyClazz", Arrays.asList(current), Collections.emptyList(), Arrays.asList(inc, decl), null);
+ final ClassDeclaration clazz = new ClassDeclaration("org.apache.plc4x", "MyClazz", Arrays.asList(current), Collections.emptyList(), Arrays.asList(inc, decl), null);
clazz.write(generator);
final String code = writer.getCode();
assertEquals("public class MyClazz {\n" +
" \n" +
- " public double current;\n" +
+ " public Double current;\n" +
" \n" +
- " public void inc() {\n" +
+ " public Void inc() {\n" +
" this.current = this.current + 1.0;\n" +
" }\n" +
" \n" +
- " public double add(double a, double b) {\n" +
+ " public Double add(Double a, Double b) {\n" +
" return a + b;\n" +
" }\n" +
" \n" +
@@ -228,7 +228,7 @@ public class JavaGeneratorTest {
final FieldReference currentRef = new FieldReference(Primitive.DOUBLE, "current");
final ParameterExpression value = new ParameterExpression(Primitive.DOUBLE, "value");
- final ClassDefinition clazz = new ClassDefinition("org.apache.plc4x",
+ final ClassDeclaration clazz = new ClassDeclaration("org.apache.plc4x",
"MyClazz",
Arrays.asList(current),
Arrays.asList(
@@ -243,9 +243,9 @@ public class JavaGeneratorTest {
final String code = writer.getCode();
assertEquals("public class MyClazz {\n" +
" \n" +
- " public double current;\n" +
+ " public Double current;\n" +
" \n" +
- " public MyClazz(double value) {\n" +
+ " public MyClazz(Double value) {\n" +
" this.current = value;\n" +
" }\n" +
" \n" +
@@ -261,9 +261,9 @@ public class JavaGeneratorTest {
final ParameterExpression value = new ParameterExpression(Primitive.DOUBLE, "value");
// Define Inner Class
- final ClassDefinition innerClass = new ClassDefinition("", "MyInnerClazz", Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), null);
+ final ClassDeclaration innerClass = new ClassDeclaration("", "MyInnerClazz", Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), null);
- final ClassDefinition clazz = new ClassDefinition("org.apache.plc4x",
+ final ClassDeclaration clazz = new ClassDeclaration("org.apache.plc4x",
"MyClazz",
Arrays.asList(current),
Arrays.asList(
@@ -279,9 +279,9 @@ public class JavaGeneratorTest {
final String code = writer.getCode();
assertEquals("public class MyClazz {\n" +
" \n" +
- " public double current;\n" +
+ " public Double current;\n" +
" \n" +
- " public MyClazz(double value) {\n" +
+ " public MyClazz(Double value) {\n" +
" this.current = value;\n" +
" }\n" +
" \n" +
@@ -295,8 +295,8 @@ public class JavaGeneratorTest {
public void ifMultipleElse() {
final IfStatement stmt = new IfStatement(
Arrays.asList(
- new BinaryExpression(Primitive.DOUBLE, new ParameterExpression(Primitive.DOUBLE, "a"), new ConstantNode(10.0), BinaryExpression.Operation.EQ),
- new BinaryExpression(Primitive.DOUBLE, new ParameterExpression(Primitive.DOUBLE, "a"), new ConstantNode(5.0), BinaryExpression.Operation.EQ)
+ new BinaryExpression(Primitive.DOUBLE, new ParameterExpression(Primitive.DOUBLE, "a"), new ConstantExpression(10.0), BinaryExpression.Operation.EQ),
+ new BinaryExpression(Primitive.DOUBLE, new ParameterExpression(Primitive.DOUBLE, "a"), new ConstantExpression(5.0), BinaryExpression.Operation.EQ)
),
Arrays.asList(
new Block(),
diff --git a/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/PythonGeneratorTest.java b/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/PythonGeneratorTest.java
index 741a6ff..c66b934 100644
--- a/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/PythonGeneratorTest.java
+++ b/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/PythonGeneratorTest.java
@@ -46,9 +46,9 @@ public class PythonGeneratorTest {
final ParameterExpression value = new ParameterExpression(Primitive.DOUBLE, "value");
// Define Inner Class
- final ClassDefinition innerClass = new ClassDefinition("", "MyInnerClazz", Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), null);
+ final ClassDeclaration innerClass = new ClassDeclaration("", "MyInnerClazz", Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), null);
- final ClassDefinition clazz = new ClassDefinition("org.apache.plc4x",
+ final ClassDeclaration clazz = new ClassDeclaration("org.apache.plc4x",
"MyClazz",
Arrays.asList(current),
Arrays.asList(
@@ -64,9 +64,9 @@ public class PythonGeneratorTest {
final String code = writer.getCode();
assertEquals("class MyClazz:\n" +
" \n" +
- " self.current: double\n" +
+ " current: float\n" +
" \n" +
- " def __init__(double value):\n" +
+ " def __init__(float value):\n" +
" self.current = value\n" +
" \n" +
" class MyInnerClazz:\n" +
@@ -78,8 +78,8 @@ public class PythonGeneratorTest {
public void ifMultipleElse() {
final IfStatement stmt = new IfStatement(
Arrays.asList(
- new BinaryExpression(Primitive.DOUBLE, new ParameterExpression(Primitive.DOUBLE, "a"), new ConstantNode(10.0), BinaryExpression.Operation.EQ),
- new BinaryExpression(Primitive.DOUBLE, new ParameterExpression(Primitive.DOUBLE, "a"), new ConstantNode(5.0), BinaryExpression.Operation.EQ)
+ new BinaryExpression(Primitive.DOUBLE, new ParameterExpression(Primitive.DOUBLE, "a"), new ConstantExpression(10.0), BinaryExpression.Operation.EQ),
+ new BinaryExpression(Primitive.DOUBLE, new ParameterExpression(Primitive.DOUBLE, "a"), new ConstantExpression(5.0), BinaryExpression.Operation.EQ)
),
Arrays.asList(
new Block(),
diff --git a/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/EnumFactoryTest.java b/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/util/EnumFactoryTest.java
similarity index 74%
rename from sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/EnumFactoryTest.java
rename to sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/util/EnumFactoryTest.java
index 798de27..245438d 100644
--- a/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/EnumFactoryTest.java
+++ b/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/util/EnumFactoryTest.java
@@ -16,8 +16,9 @@ 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;
+package org.apache.plc4x.codegen.util;
+import org.apache.plc4x.codegen.ast.*;
import org.apache.plc4x.codegen.util.EnumFactory;
import org.junit.Test;
@@ -29,7 +30,7 @@ public class EnumFactoryTest {
public void createEnums() {
System.out.println("Java:");
System.out.println("----------");
- final ClassDefinition MyEnum = newEnum();
+ final ClassDeclaration MyEnum = newEnum();
final CodeWriter writer = new CodeWriter(4);
final JavaGenerator generator = new JavaGenerator(writer);
@@ -43,7 +44,7 @@ public class EnumFactoryTest {
public void createEnumsInPython() {
System.out.println("Python:");
System.out.println("----------");
- final ClassDefinition MyEnum = newEnum();
+ final ClassDeclaration MyEnum = newEnum();
final CodeWriter writer = new CodeWriter(4);
final PythonGenerator generator = new PythonGenerator(writer);
@@ -53,7 +54,7 @@ public class EnumFactoryTest {
System.out.println(writer.getCode());
}
- private ClassDefinition newEnum() {
+ private ClassDeclaration newEnum() {
final EnumFactory factory = new EnumFactory();
final EnumFactory.PojoDescription description = new EnumFactory.PojoDescription("MyPojo",
new EnumFactory.Field(Primitive.DOUBLE, "field1"),
@@ -63,24 +64,24 @@ public class EnumFactoryTest {
return factory.create(description,
Arrays.asList(
new EnumFactory.EnumEntry("alternative1", Arrays.asList(
- new ConstantNode(1.0),
- new ConstantNode(2.0),
- new ConstantNode(3.0)
+ new ConstantExpression(1.0),
+ new ConstantExpression(2.0),
+ new ConstantExpression(3.0)
)),
new EnumFactory.EnumEntry("alternative2", Arrays.asList(
- new ConstantNode(1.0),
- new ConstantNode(2.0),
- new ConstantNode(3.0)
+ new ConstantExpression(1.0),
+ new ConstantExpression(2.0),
+ new ConstantExpression(3.0)
)),
new EnumFactory.EnumEntry("alternative3", Arrays.asList(
- new ConstantNode(1.0),
- new ConstantNode(2.0),
- new ConstantNode(3.0)
+ new ConstantExpression(1.0),
+ new ConstantExpression(2.0),
+ new ConstantExpression(3.0)
)),
new EnumFactory.EnumEntry("alternative4", Arrays.asList(
- new ConstantNode(1.0),
- new ConstantNode(2.0),
- new ConstantNode(3.0)
+ new ConstantExpression(1.0),
+ new ConstantExpression(2.0),
+ new ConstantExpression(3.0)
))
)
);
diff --git a/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/PojoFactoryTest.java b/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/util/PojoFactoryTest.java
similarity index 89%
rename from sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/PojoFactoryTest.java
rename to sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/util/PojoFactoryTest.java
index 2035b77..b04ae77 100644
--- a/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/PojoFactoryTest.java
+++ b/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/util/PojoFactoryTest.java
@@ -16,9 +16,10 @@ 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;
+package org.apache.plc4x.codegen.util;
+
+import org.apache.plc4x.codegen.ast.*;
-import org.apache.plc4x.codegen.util.PojoFactory;
import org.junit.Test;
public class PojoFactoryTest {
@@ -27,7 +28,7 @@ public class PojoFactoryTest {
public void createPojoJava() {
System.out.println("Java:");
System.out.println("----------");
- final ClassDefinition pojo = newPojo();
+ final ClassDeclaration pojo = newPojo();
final CodeWriter writer = new CodeWriter(4);
final JavaGenerator generator = new JavaGenerator(writer);
@@ -41,7 +42,7 @@ public class PojoFactoryTest {
public void createPojoPython() {
System.out.println("Python:");
System.out.println("----------");
- final ClassDefinition pojo = newPojo();
+ final ClassDeclaration pojo = newPojo();
final CodeWriter writer = new CodeWriter(4);
final PythonGenerator generator = new PythonGenerator(writer);
@@ -51,7 +52,7 @@ public class PojoFactoryTest {
System.out.println(writer.getCode());
}
- private ClassDefinition newPojo() {
+ private ClassDeclaration newPojo() {
final PojoFactory factory = new PojoFactory();
final PojoFactory.PojoDescription description = new PojoFactory.PojoDescription("MyPojo",
new PojoFactory.Field(Primitive.DOUBLE, "field1"),