Skip to content

Commit

Permalink
fix(codegen): fix several small issues
Browse files Browse the repository at this point in the history
  • Loading branch information
sruehl authored and chrisdutz committed Nov 17, 2021
1 parent 346d4ab commit d3d22f1
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1111,7 +1111,7 @@ public String getVariableName(Field field) {
}
} else if (curField instanceof OptionalField) {
OptionalField optionalField = (OptionalField) curField;
if (optionalField.getConditionExpression().isPresent() && optionalField.getConditionExpression().get().contains(name)) {
if (optionalField.getConditionExpression().isPresent() && optionalField.getConditionExpression().orElseThrow(IllegalStateException::new).contains(name)) {
return name;
}
} else if (curField instanceof SwitchField) {
Expand Down Expand Up @@ -1213,7 +1213,7 @@ public boolean requiresVariable(Field curField, String variable) {
}
} else if (curField instanceof OptionalField) {
OptionalField optionalField = (OptionalField) curField;
if (optionalField.getConditionExpression().isPresent() && optionalField.getConditionExpression().get().contains(variable)) {
if (optionalField.getConditionExpression().isPresent() && optionalField.getConditionExpression().orElseThrow(IllegalStateException::new).contains(variable)) {
return true;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public static boolean contains(Field field, String label) {
}
case "optional": {
OptionalField optionalField = (OptionalField) field;
return optionalField.getConditionExpression().isPresent() && optionalField.getConditionExpression().get().contains(label);
return optionalField.getConditionExpression().isPresent() && optionalField.getConditionExpression().orElseThrow(IllegalStateException::new).contains(label);
}
case "padding": {
PaddingField paddingField = (PaddingField) field;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -448,7 +448,7 @@ public class ${type.name}IO implements <#if outputFlavor != "passive">MessageIO<
curPos = readBuffer.getPos();
try {
</#if>
<#if optionalField.conditionExpression.present && optionalField.conditionExpression.get().contains("curPos")>
<#if optionalField.conditionExpression.present && optionalField.conditionExpression.orElseThrow().contains("curPos")>
curPos = readBuffer.getPos();
</#if>
${helper.getLanguageTypeNameForField(field)} ${optionalField.name} = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -282,8 +282,11 @@ public void enterManualField(MSpecParser.ManualFieldContext ctx) {
public void enterOptionalField(MSpecParser.OptionalFieldContext ctx) {
TypeReference type = getTypeReference(ctx.type);
String name = getIdString(ctx.name);
String conditionExpressionString = getExprString(ctx.condition);
Term conditionExpression = getExpressionTerm(conditionExpressionString);
Term conditionExpression = null;
if (ctx.condition != null) {
String conditionExpressionString = getExprString(ctx.condition);
conditionExpression = getExpressionTerm(conditionExpressionString);
}
MSpecParser.FieldDefinitionContext fieldDefinitionContext = (MSpecParser.FieldDefinitionContext) ctx.parent.parent;
List<Term> params = getFieldParams(fieldDefinitionContext);
Field field = new DefaultOptionalField(null, type, name, conditionExpression, params);
Expand Down Expand Up @@ -475,7 +478,7 @@ private SimpleTypeReference getSimpleTypeReference(MSpecParser.DataTypeContext c
SimpleTypeReference.SimpleBaseType.valueOf(ctx.base.getText().toUpperCase());
// String types need an additional "encoding" field and length expression.
if ((simpleBaseType == SimpleTypeReference.SimpleBaseType.STRING) ||
(simpleBaseType == SimpleTypeReference.SimpleBaseType.VSTRING)) {
(simpleBaseType == SimpleTypeReference.SimpleBaseType.VSTRING)) {
if (simpleBaseType == SimpleTypeReference.SimpleBaseType.VSTRING) {
Term lengthExpression = getExpressionTerm(ctx.length.getText().substring(1, ctx.length.getText().length() - 1));
return new DefaultStringTypeReference(simpleBaseType, lengthExpression, "UTF-8");
Expand Down
4 changes: 4 additions & 0 deletions protocols/knxnetip/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,10 @@
<artifactId>plc4x-code-generation-protocol-base-mspec</artifactId>
<version>0.10.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>

<!-- Generally used for the metadata generator to not pollute the classpath -->
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,41 +22,45 @@
import org.apache.plc4x.plugins.codegenerator.protocol.Protocol;
import org.apache.plc4x.plugins.codegenerator.types.definitions.TypeDefinition;
import org.apache.plc4x.plugins.codegenerator.types.exceptions.GenerationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.InputStream;
import java.util.LinkedHashMap;
import java.util.Map;

public class KnxNetIpProtocol implements Protocol {

private static final Logger LOGGER = LoggerFactory.getLogger(KnxNetIpProtocol.class);

@Override
public String getName() {
return "knxnetip";
}

@Override
public Map<String, TypeDefinition> getTypeDefinitions() throws GenerationException {
System.out.println("Parsing: knxnetip.mspec");
LOGGER.info("Parsing: knxnetip.mspec");
InputStream schemaInputStream = KnxNetIpProtocol.class.getResourceAsStream(
"/protocols/knxnetip/knxnetip.mspec");
if(schemaInputStream == null) {
if (schemaInputStream == null) {
throw new GenerationException("Error loading message-format schema for protocol '" + getName() + "'");
}
Map<String, TypeDefinition> typeDefinitionMap =
new LinkedHashMap<>(new MessageFormatParser().parse(schemaInputStream));

System.out.println("Parsing: knx-master-data.mspec");
LOGGER.info("Parsing: knx-master-data.mspec");
InputStream masterDataInputStream = KnxNetIpProtocol.class.getResourceAsStream(
"/protocols/knxnetip/knx-master-data.mspec");
if(masterDataInputStream == null) {
if (masterDataInputStream == null) {
throw new GenerationException("Error loading knx-master-data schema for protocol '" + getName() + "'");
}
typeDefinitionMap.putAll(new MessageFormatParser().parse(masterDataInputStream));

System.out.println("Parsing: device-info.mspec");
LOGGER.info("Parsing: device-info.mspec");
InputStream deviceDataInputStream = KnxNetIpProtocol.class.getResourceAsStream(
"/protocols/knxnetip/device-info.mspec");
if(deviceDataInputStream == null) {
if (deviceDataInputStream == null) {
throw new GenerationException("Error loading device-info schema for protocol '" + getName() + "'");
}
typeDefinitionMap.putAll(new MessageFormatParser().parse(deviceDataInputStream));
Expand Down

0 comments on commit d3d22f1

Please sign in to comment.