From 04c02127daa4cb8218a8a39b46fe8af543b3dd88 Mon Sep 17 00:00:00 2001 From: Christofer Dutz Date: Thu, 28 Aug 2025 13:53:19 +0200 Subject: [PATCH 1/8] feat: Updated the mspec parser to allow using mspec keywords as id expressions (names of fields) feat: Added support for "constants" types. --- .../freemarker/FreemarkerLanguageOutput.java | 46 ++++- .../language/java/JavaLanguageOutput.java | 5 + .../java/constants-template.java.ftlh | 84 +++++++++ .../codegenerator/language/mspec/MSpec.g4 | 166 +++++++++++++----- .../DefaultConstantsTypeDefinition.java | 63 +++++++ .../mspec/model/fields/DefaultStateField.java | 60 +++++++ .../mspec/parser/MessageFormatListener.java | 160 ++++++++++++----- .../readwrite/AdsDiscoveryConstants.java | 127 -------------- .../ads/discovery/readwrite/Constants.java | 42 +++++ .../java/ads/readwrite/AdsConstants.java | 122 ------------- .../plc4x/java/ads/readwrite/Constants.java | 42 +++++ .../AdsTcpTransportConfiguration.java | 4 +- .../java/ads/discovery/AdsPlcDiscoverer.java | 7 +- .../java/ads/protocol/AdsProtocolLogic.java | 5 +- .../ads/ProbeAdsDiscoveryCommands.java | 4 +- .../bacnetip/readwrite/BACnetVendorId.java | 8 + .../bacnetip/readwrite/BacnetConstants.java | 125 ------------- .../java/bacnetip/readwrite/Constants.java | 42 +++++ ...acNetPcapReplayTransportConfiguration.java | 4 +- ...BacNetRawSocketTransportConfiguration.java | 4 +- .../BacNetUdpTransportConfiguration.java | 4 +- .../java/cbus/readwrite/CBusConstants.java | 124 ------------- .../plc4x/java/cbus/readwrite/Constants.java | 42 +++++ .../CBusTcpTransportConfiguration.java | 4 +- .../plc4x/java/eip/readwrite/Constants.java | 43 +++++ .../java/eip/readwrite/EipConstants.java | 142 --------------- .../eip/base/discovery/EipPlcDiscoverer.java | 6 +- .../iec608705104/readwrite/Constants.java | 42 +++++ .../readwrite/IEC608705104Constants.java | 122 ------------- ...Iec608705014TcpTransportConfiguration.java | 4 +- .../knxnetip/readwrite/KnxManufacturer.java | 10 +- .../java/modbus/readwrite/Constants.java | 42 +++++ .../modbus/readwrite/ModbusConstants.java | 125 ------------- .../ModbusTcpTransportConfiguration.java | 4 +- .../tcp/discovery/ModbusPlcDiscoverer.java | 2 +- .../openprotocol/readwrite/Constants.java | 81 +-------- .../plc4x/java/plc4x/readwrite/Constants.java | 42 +++++ .../java/plc4x/readwrite/Plc4xConstants.java | 124 ------------- .../Plc4xTcpTransportConfiguration.java | 4 +- .../server/bacnet/BacnetServerModule.java | 4 +- .../server/cbus/CBusServerModule.java | 4 +- pom.xml | 2 +- .../protocols/ads/ads-discovery.mspec | 2 +- .../main/resources/protocols/ads/ads.mspec | 2 +- .../protocols/bacnetip/bacnet-vendorids.mspec | 7 + .../protocols/bacnetip/bacnet-tags.mspec | 2 + .../protocols/bacnetip/bacnetip.mspec | 2 +- .../main/resources/protocols/cbus/c-bus.mspec | 31 +++- .../main/resources/protocols/eip/eip.mspec | 2 +- .../iec608705104/iec-60870-5-104.mspec | 2 +- .../protocols/knxnetip/knx-master-data.mspec | 10 +- .../resources/protocols/modbus/modbus.mspec | 2 +- .../openprotocol/open-protocol.mspec | 2 +- .../resources/protocols/plc4x/v0/plc4x.mspec | 2 +- .../main/resources/protocols/umas/umas.mspec | 2 +- 55 files changed, 925 insertions(+), 1240 deletions(-) create mode 100644 code-generation/language/java/src/main/resources/templates/java/constants-template.java.ftlh create mode 100644 code-generation/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/definitions/DefaultConstantsTypeDefinition.java create mode 100644 code-generation/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/fields/DefaultStateField.java delete mode 100644 plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryConstants.java create mode 100644 plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/Constants.java delete mode 100644 plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsConstants.java create mode 100644 plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/Constants.java delete mode 100644 plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BacnetConstants.java create mode 100644 plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/Constants.java delete mode 100644 plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/CBusConstants.java create mode 100644 plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/Constants.java create mode 100644 plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/Constants.java delete mode 100644 plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/EipConstants.java create mode 100644 plc4j/drivers/iec-60870/src/main/generated/org/apache/plc4x/java/iec608705104/readwrite/Constants.java delete mode 100644 plc4j/drivers/iec-60870/src/main/generated/org/apache/plc4x/java/iec608705104/readwrite/IEC608705104Constants.java create mode 100644 plc4j/drivers/modbus/src/main/generated/org/apache/plc4x/java/modbus/readwrite/Constants.java delete mode 100644 plc4j/drivers/modbus/src/main/generated/org/apache/plc4x/java/modbus/readwrite/ModbusConstants.java create mode 100644 plc4j/drivers/plc4x/src/main/generated/org/apache/plc4x/java/plc4x/readwrite/Constants.java delete mode 100644 plc4j/drivers/plc4x/src/main/generated/org/apache/plc4x/java/plc4x/readwrite/Plc4xConstants.java diff --git a/code-generation/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/FreemarkerLanguageOutput.java b/code-generation/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/FreemarkerLanguageOutput.java index 8e1390ba0f3..2fcb68002c2 100644 --- a/code-generation/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/FreemarkerLanguageOutput.java +++ b/code-generation/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/FreemarkerLanguageOutput.java @@ -21,6 +21,7 @@ import freemarker.cache.ClassTemplateLoader; import freemarker.template.*; import org.apache.plc4x.plugins.codegenerator.language.LanguageOutput; +import org.apache.plc4x.plugins.codegenerator.types.definitions.ConstantsTypeDefinition; import org.apache.plc4x.plugins.codegenerator.types.definitions.EnumTypeDefinition; import org.apache.plc4x.plugins.codegenerator.types.definitions.DataIoTypeDefinition; import org.apache.plc4x.plugins.codegenerator.types.definitions.TypeDefinition; @@ -31,10 +32,7 @@ import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.Files; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; public abstract class FreemarkerLanguageOutput implements LanguageOutput { @@ -53,13 +51,15 @@ public void generate(File outputDir, String version, String languageName, String freemarkerConfiguration.setTemplateLoader(classTemplateLoader); // Initialize all templates - List