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 2021/10/11 19:13:02 UTC
[plc4x] 02/02: - Worked on the float types
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch feature/mspec-ng
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit 9c70d8b73800de549832c04e3df8cc9acf59b31f
Author: cdutz <ch...@c-ware.de>
AuthorDate: Mon Oct 11 21:12:51 2021 +0200
- Worked on the float types
---
.../org/apache/plc4x/language/java/JavaLanguageOutput.java | 8 ++++++--
.../plc4x/language/java/JavaLanguageTemplateHelper.java | 11 +++++------
.../src/main/resources/templates/java/io-template.java.ftlh | 8 +++++++-
3 files changed, 18 insertions(+), 9 deletions(-)
diff --git a/code-generation/language-java-ng/src/main/java/org/apache/plc4x/language/java/JavaLanguageOutput.java b/code-generation/language-java-ng/src/main/java/org/apache/plc4x/language/java/JavaLanguageOutput.java
index bcc2ec6..f01fca1 100644
--- a/code-generation/language-java-ng/src/main/java/org/apache/plc4x/language/java/JavaLanguageOutput.java
+++ b/code-generation/language-java-ng/src/main/java/org/apache/plc4x/language/java/JavaLanguageOutput.java
@@ -26,6 +26,8 @@ import org.apache.commons.io.FileUtils;
import org.apache.plc4x.plugins.codegenerator.protocol.freemarker.FreemarkerLanguageOutput;
import org.apache.plc4x.plugins.codegenerator.protocol.freemarker.FreemarkerLanguageTemplateHelper;
import org.apache.plc4x.plugins.codegenerator.types.definitions.TypeDefinition;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
@@ -34,7 +36,9 @@ import java.util.*;
public class JavaLanguageOutput extends FreemarkerLanguageOutput {
- private Formatter formatter = new Formatter();
+ private static final Logger LOGGER = LoggerFactory.getLogger(JavaLanguageOutput.class);
+
+ private final Formatter formatter = new Formatter();
@Override
public String getName() {
@@ -93,7 +97,7 @@ public class JavaLanguageOutput extends FreemarkerLanguageOutput {
StandardCharsets.UTF_8
);
} catch (IOException | FormatterException e) {
- throw new RuntimeException("Error formatting " + outputFile, e);
+ LOGGER.error("Error formatting {}", outputFile, e);
}
}
}
diff --git a/code-generation/language-java-ng/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java b/code-generation/language-java-ng/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
index 863727e..04337bf 100644
--- a/code-generation/language-java-ng/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
+++ b/code-generation/language-java-ng/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
@@ -60,19 +60,18 @@ public class JavaLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHe
@Override
public String getLanguageTypeNameForField(Field field) {
- boolean optional = field instanceof OptionalField;
// If the referenced type is a DataIo type, the value is of type PlcValue.
- if (field instanceof PropertyField) {
- PropertyField propertyField = (PropertyField) field;
- if (propertyField.getType() instanceof ComplexTypeReference) {
- ComplexTypeReference complexTypeReference = (ComplexTypeReference) propertyField.getType();
+ if (field.isPropertyField()) {
+ PropertyField propertyField = field.asPropertyField().orElseThrow(IllegalStateException::new);
+ if (propertyField.getType().isComplexTypeReference()) {
+ ComplexTypeReference complexTypeReference = propertyField.getType().asComplexTypeReference().orElseThrow(IllegalStateException::new);
final TypeDefinition typeDefinition = getTypeDefinitions().get(complexTypeReference.getName());
if (typeDefinition instanceof DataIoTypeDefinition) {
return "PlcValue";
}
}
}
- return getLanguageTypeNameForTypeReference(((TypedField) field).getType(), !optional);
+ return getLanguageTypeNameForTypeReference(((TypedField) field).getType(), !field.isOptionalField());
}
public String getNonPrimitiveLanguageTypeNameForField(TypedField field) {
diff --git a/code-generation/language-java-ng/src/main/resources/templates/java/io-template.java.ftlh b/code-generation/language-java-ng/src/main/resources/templates/java/io-template.java.ftlh
index b8b3201..00d4ec4 100644
--- a/code-generation/language-java-ng/src/main/resources/templates/java/io-template.java.ftlh
+++ b/code-generation/language-java-ng/src/main/resources/templates/java/io-template.java.ftlh
@@ -53,7 +53,9 @@ import ${helper.packageName(protocolName, languageName, outputFlavor)}.*;
import ${helper.packageName(protocolName, languageName, outputFlavor)}.types.*;
import org.apache.plc4x.java.spi.codegen.fields.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
import org.apache.plc4x.java.spi.codegen.io.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
import org.apache.plc4x.java.spi.generation.*;
import org.apache.plc4x.java.api.value.PlcValue;
@@ -324,6 +326,7 @@ public class ${type.name}IO implements <#if outputFlavor != "passive">MessageIO<
<#assign typeRefForDataCall = helper.getEnumBaseTypeReference(constField.type)>
<#assign dataReaderCall>new DataReaderEnumDefault(${helper.getLanguageTypeNameForField(field)}::enumForValue, ${helper.getDataReaderCall(typeRefForDataCall)})</#assign>
</#if>
+ ${helper.getLanguageTypeNameForField(field)} ${constField.name} = read${field.typeName?cap_first}Field("${constField.name}", ${dataReaderCall}, ${type.name}.${constField.name?upper_case});
<#break>
<#case "discriminator">
<#assign discriminatorField = field.asDiscriminatorField().orElseThrow()>
@@ -496,6 +499,9 @@ public class ${type.name}IO implements <#if outputFlavor != "passive">MessageIO<
<#if optionalField.conditionExpression.present>
}
</#if>
+ if (1 == 2) {
+ throw new ParseAssertException("oh no java");
+ }
} catch(ParseAssertException ignore){
readBuffer.reset(curPos);
}
@@ -547,7 +553,7 @@ public class ${type.name}IO implements <#if outputFlavor != "passive">MessageIO<
int _timesPadding = (int) (${helper.toParseExpression(paddingField, paddingField.paddingCondition, parserArguments)});
while ((readBuffer.hasMore(${helper.getNumBits(simpleTypeReference)})) && (_timesPadding-- > 0)) {
// Just read the padding data and ignore it
- ${helper.getReadBufferReadMethodCall(simpleTypeReference, "", paddingField)};
+ Object ignore = ${helper.getReadBufferReadMethodCall(simpleTypeReference, "", paddingField)};
}
readBuffer.closeContext("padding", WithReaderWriterArgs.WithRenderAsList(true));
}