You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2019/07/30 09:50:13 UTC

[plc4x] branch develop updated: - Make the code generation of arrayFields work with simple fields.

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

cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to refs/heads/develop by this push:
     new 8c9e36a  - Make the code generation of arrayFields work with simple fields.
8c9e36a is described below

commit 8c9e36a9740a013492f12ee2b8f242110a25ce94
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Tue Jul 30 11:50:03 2019 +0200

    - Make the code generation of arrayFields work with simple fields.
---
 .../language/java/JavaLanguageTemplateHelper.java  | 30 ++++++++++++++--------
 .../main/resources/templates/java/io-template.ftlh |  2 +-
 2 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java b/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
index 0f7745d..35531bc 100644
--- a/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
+++ b/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
@@ -47,49 +47,57 @@ public class JavaLanguageTemplateHelper implements FreemarkerLanguageTemplateHel
 
     public String getLanguageTypeNameForField(TypedField field) {
         boolean optional = field instanceof OptionalField;
+        return getLanguageTypeNameForField(!optional, field);
+    }
+
+    public String getNonPrimitiveLanguageTypeNameForField(TypedField field) {
+        return getLanguageTypeNameForField(false, field);
+    }
+
+    private String getLanguageTypeNameForField(boolean allowPrimitive, TypedField field) {
         TypeReference typeReference = field.getType();
         if(typeReference instanceof SimpleTypeReference) {
             SimpleTypeReference simpleTypeReference = (SimpleTypeReference) typeReference;
             switch (simpleTypeReference.getBaseType()) {
                 case BIT: {
-                    return optional ? "Boolean" : "boolean";
+                    return allowPrimitive ? "boolean" : "Boolean";
                 }
                 case UINT: {
                     if (simpleTypeReference.getSize() <= 4) {
-                        return optional ? "Byte" : "byte";
+                        return allowPrimitive ? "byte" : "Byte";
                     }
                     if (simpleTypeReference.getSize() <= 8) {
-                        return optional ? "Short" : "short";
+                        return allowPrimitive ? "short" : "Short";
                     }
                     if (simpleTypeReference.getSize() <= 16) {
-                        return optional ? "Integer" : "int";
+                        return allowPrimitive ? "int" : "Integer";
                     }
                     if (simpleTypeReference.getSize() <= 32) {
-                        return optional ? "Long" : "long";
+                        return allowPrimitive ? "long" : "Long";
                     }
                     return "BigInteger";
                 }
                 case INT: {
                     if (simpleTypeReference.getSize() <= 8) {
-                        return optional ? "Byte" : "byte";
+                        return allowPrimitive ? "byte" : "Byte";
                     }
                     if (simpleTypeReference.getSize() <= 16) {
-                        return optional ? "Short" : "short";
+                        return allowPrimitive ? "short" : "Short";
                     }
                     if (simpleTypeReference.getSize() <= 32) {
-                        return optional ? "Integer" : "int";
+                        return allowPrimitive ? "int" : "Integer";
                     }
                     if (simpleTypeReference.getSize() <= 64) {
-                        return optional ? "Long" : "long";
+                        return allowPrimitive ? "long" : "Long";
                     }
                     return "BigInteger";
                 }
                 case FLOAT: {
                     if (simpleTypeReference.getSize() <= 32) {
-                        return optional ? "Float" : "float";
+                        return allowPrimitive ? "float" : "Float";
                     }
                     if (simpleTypeReference.getSize() <= 64) {
-                        return optional ? "Double" : "double";
+                        return allowPrimitive ? "double" : "Double";
                     }
                     return "BigDecimal";
                 }
diff --git a/build-utils/language-java/src/main/resources/templates/java/io-template.ftlh b/build-utils/language-java/src/main/resources/templates/java/io-template.ftlh
index bfdee08..f4b0880 100644
--- a/build-utils/language-java/src/main/resources/templates/java/io-template.ftlh
+++ b/build-utils/language-java/src/main/resources/templates/java/io-template.ftlh
@@ -89,7 +89,7 @@ public class ${typeName}IO implements MessageIO<${typeName}<#if helper.isDiscrim
             ${field.name}[i] = <#if helper.isSimpleType(field.type)>io.${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name?uncap_first}IO.parse(io<#if field.params?has_content>, <#list field.params as parserArgument>${parserArgument}<#sep>, </#sep></#list></#if>)</#if>;
         }
         <#else>
-        List<${helper.getLanguageTypeNameForField(field)}> ${field.name}List = <#if helper.isCountArray(field)>new ArrayList<>(size)<#else>new LinkedList<>()</#if>;
+        List<${helper.getNonPrimitiveLanguageTypeNameForField(field)}> ${field.name}List = <#if helper.isCountArray(field)>new ArrayList<>(size)<#else>new LinkedList<>()</#if>;
         int ${field.name}EndPos = io.getPos() + ${field.name}Size;
         while(io.getPos() < ${field.name}EndPos) {
             <#if field.lengthExpression.contains("curPos")>