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 2024/01/06 13:26:38 UTC
(plc4x) 09/10: chore: Added the missing generated files.
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch feature/new-ui-tool
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit aa88c288cba0fdca3010546814edc33e417a7e47
Author: Christofer Dutz <cd...@apache.org>
AuthorDate: Sat Jan 6 14:07:03 2024 +0100
chore: Added the missing generated files.
---
.../java/test/readwrite/AbstractTypeTest.java | 166 +
.../test/readwrite/AbstractTypeTestSubType.java | 260 +
.../plc4x/java/test/readwrite/ArrayTypeTest.java | 248 +
.../java/test/readwrite/CheckSumTypeTest.java | 141 +
.../test/readwrite/ComplexOfComplexUsageA.java | 131 +
.../test/readwrite/ComplexOfComplexUsageB.java | 158 +
.../test/readwrite/ComplexOfComplexUsageC.java | 127 +
.../test/readwrite/ComplexOfComplexUsageD.java | 127 +
.../plc4x/java/test/readwrite/ConstTypeTest.java | 196 +
.../plc4x/java/test/readwrite/DataIOType.java | 110 +
.../java/test/readwrite/EnumDiscriminatedType.java | 155 +
.../test/readwrite/EnumDiscriminatedTypeA.java | 141 +
.../test/readwrite/EnumDiscriminatedTypeB.java | 141 +
.../test/readwrite/EnumDiscriminatedTypeC.java | 141 +
.../readwrite/EnumDiscriminatedTypeMultiple.java | 190 +
.../readwrite/EnumDiscriminatedTypeMultipleA.java | 147 +
.../readwrite/EnumDiscriminatedTypeMultipleB.java | 147 +
.../readwrite/EnumDiscriminatedTypeMultipleC.java | 147 +
.../readwrite/EnumDiscriminatedTypeParameter.java | 160 +
.../readwrite/EnumDiscriminatedTypeParameterA.java | 144 +
.../readwrite/EnumDiscriminatedTypeParameterB.java | 144 +
.../readwrite/EnumDiscriminatedTypeParameterC.java | 144 +
.../EnumDiscriminatedTypeParameterMultiple.java | 183 +
.../EnumDiscriminatedTypeParameterMultipleA.java | 149 +
.../EnumDiscriminatedTypeParameterMultipleB.java | 149 +
.../EnumDiscriminatedTypeParameterMultipleC.java | 149 +
.../apache/plc4x/java/test/readwrite/EnumType.java | 57 +
.../plc4x/java/test/readwrite/EnumTypeBit.java | 55 +
.../plc4x/java/test/readwrite/EnumTypeInt.java | 56 +
.../java/test/readwrite/EnumTypeParameters.java | 188 +
.../plc4x/java/test/readwrite/EnumTypeTest.java | 138 +
.../plc4x/java/test/readwrite/FieldTypeTest.java | 322 +
.../readwrite/FieldTypeTestWithUnknownField.java | 222 +
.../readwrite/ImplicitPascalStringTypeTest.java | 138 +
.../java/test/readwrite/ImplicitTypeTest.java | 187 +
.../plc4x/java/test/readwrite/IntTypeTest.java | 217 +
.../plc4x/java/test/readwrite/LengthLoopTest.java | 137 +
.../java/test/readwrite/OptionalTypeTest.java | 146 +
.../plc4x/java/test/readwrite/PaddingTypeTest.java | 139 +
.../java/test/readwrite/PascalStringTypeTest.java | 143 +
.../java/test/readwrite/ReservedTypeTest.java | 120 +
.../java/test/readwrite/ReservedTypeTestChild.java | 128 +
.../test/readwrite/ReservedTypeTestParent.java | 163 +
.../java/test/readwrite/SimpleBitTypeTest.java | 127 +
.../test/readwrite/SimpleDiscriminatedType.java | 147 +
.../test/readwrite/SimpleDiscriminatedTypeA.java | 141 +
.../test/readwrite/SimpleDiscriminatedTypeB.java | 141 +
.../test/readwrite/SimpleDiscriminatedTypeC.java | 141 +
.../plc4x/java/test/readwrite/SimpleTypeTest.java | 234 +
.../plc4x/java/test/readwrite/UIntTypeTest.java | 219 +
.../java/test/readwrite/VirtualFieldTest.java | 194 +
.../java/firmata/readwrite/FirmataCommand.java | 172 +
.../readwrite/FirmataCommandProtocolVersion.java | 161 +
.../FirmataCommandSetDigitalPinValue.java | 167 +
.../readwrite/FirmataCommandSetPinMode.java | 169 +
.../firmata/readwrite/FirmataCommandSysex.java | 154 +
.../readwrite/FirmataCommandSystemReset.java | 122 +
.../java/firmata/readwrite/FirmataMessage.java | 182 +
.../firmata/readwrite/FirmataMessageAnalogIO.java | 177 +
.../firmata/readwrite/FirmataMessageCommand.java | 150 +
.../firmata/readwrite/FirmataMessageDigitalIO.java | 179 +
.../FirmataMessageSubscribeAnalogPinValue.java | 190 +
.../FirmataMessageSubscribeDigitalPinValue.java | 190 +
.../plc4x/java/firmata/readwrite/PinMode.java | 65 +
.../plc4x/java/firmata/readwrite/SysexCommand.java | 206 +
.../SysexCommandAnalogMappingQueryRequest.java | 126 +
.../SysexCommandAnalogMappingQueryResponse.java | 145 +
.../SysexCommandAnalogMappingResponse.java | 126 +
.../readwrite/SysexCommandCapabilityQuery.java | 125 +
.../readwrite/SysexCommandCapabilityResponse.java | 126 +
.../readwrite/SysexCommandExtendedAnalog.java | 125 +
.../firmata/readwrite/SysexCommandExtendedId.java | 146 +
.../readwrite/SysexCommandPinStateQuery.java | 144 +
.../readwrite/SysexCommandPinStateResponse.java | 181 +
.../SysexCommandReportFirmwareRequest.java | 126 +
.../SysexCommandReportFirmwareResponse.java | 201 +
.../readwrite/SysexCommandSamplingInterval.java | 126 +
.../firmata/readwrite/SysexCommandStringData.java | 125 +
.../readwrite/SysexCommandSysexNonRealtime.java | 126 +
.../readwrite/SysexCommandSysexRealtime.java | 125 +
.../plc4x/java/knxnetip/readwrite/AccessLevel.java | 110 +
.../apache/plc4x/java/knxnetip/readwrite/Apdu.java | 187 +
.../plc4x/java/knxnetip/readwrite/ApduControl.java | 153 +
.../java/knxnetip/readwrite/ApduControlAck.java | 120 +
.../knxnetip/readwrite/ApduControlConnect.java | 120 +
.../knxnetip/readwrite/ApduControlContainer.java | 143 +
.../knxnetip/readwrite/ApduControlDisconnect.java | 120 +
.../java/knxnetip/readwrite/ApduControlNack.java | 120 +
.../plc4x/java/knxnetip/readwrite/ApduData.java | 192 +
.../java/knxnetip/readwrite/ApduDataAdcRead.java | 120 +
.../knxnetip/readwrite/ApduDataAdcResponse.java | 120 +
.../java/knxnetip/readwrite/ApduDataContainer.java | 143 +
.../readwrite/ApduDataDeviceDescriptorRead.java | 140 +
.../ApduDataDeviceDescriptorResponse.java | 164 +
.../plc4x/java/knxnetip/readwrite/ApduDataExt.java | 270 +
.../readwrite/ApduDataExtAuthorizeRequest.java | 162 +
.../readwrite/ApduDataExtAuthorizeResponse.java | 141 +
.../readwrite/ApduDataExtDomainAddressRead.java | 122 +
.../ApduDataExtDomainAddressResponse.java | 122 +
.../ApduDataExtDomainAddressSelectiveRead.java | 122 +
.../ApduDataExtDomainAddressSerialNumberRead.java | 122 +
...duDataExtDomainAddressSerialNumberResponse.java | 123 +
.../ApduDataExtDomainAddressSerialNumberWrite.java | 122 +
.../readwrite/ApduDataExtDomainAddressWrite.java | 122 +
.../readwrite/ApduDataExtFileStreamInfoReport.java | 122 +
.../ApduDataExtGroupPropertyValueInfoReport.java | 122 +
.../ApduDataExtGroupPropertyValueRead.java | 122 +
.../ApduDataExtGroupPropertyValueResponse.java | 122 +
.../ApduDataExtGroupPropertyValueWrite.java | 122 +
...duDataExtIndividualAddressSerialNumberRead.java | 123 +
...taExtIndividualAddressSerialNumberResponse.java | 125 +
...uDataExtIndividualAddressSerialNumberWrite.java | 123 +
.../knxnetip/readwrite/ApduDataExtKeyResponse.java | 120 +
.../knxnetip/readwrite/ApduDataExtKeyWrite.java | 120 +
.../knxnetip/readwrite/ApduDataExtLinkRead.java | 120 +
.../readwrite/ApduDataExtLinkResponse.java | 120 +
.../knxnetip/readwrite/ApduDataExtLinkWrite.java | 120 +
.../readwrite/ApduDataExtMemoryBitWrite.java | 121 +
.../readwrite/ApduDataExtNetworkParameterRead.java | 122 +
.../ApduDataExtNetworkParameterResponse.java | 122 +
.../ApduDataExtNetworkParameterWrite.java | 122 +
.../ApduDataExtOpenRoutingTableRequest.java | 122 +
.../ApduDataExtPropertyDescriptionRead.java | 178 +
.../ApduDataExtPropertyDescriptionResponse.java | 353 +
.../readwrite/ApduDataExtPropertyValueRead.java | 197 +
.../ApduDataExtPropertyValueResponse.java | 217 +
.../readwrite/ApduDataExtPropertyValueWrite.java | 217 +
.../ApduDataExtReadRouterMemoryRequest.java | 122 +
.../ApduDataExtReadRouterMemoryResponse.java | 122 +
.../ApduDataExtReadRouterStatusRequest.java | 122 +
.../ApduDataExtReadRouterStatusResponse.java | 122 +
.../ApduDataExtReadRoutingTableRequest.java | 122 +
.../ApduDataExtReadRoutingTableResponse.java | 122 +
.../ApduDataExtWriteRouterMemoryRequest.java | 122 +
.../ApduDataExtWriteRouterStatusRequest.java | 122 +
.../ApduDataExtWriteRoutingTableRequest.java | 122 +
.../knxnetip/readwrite/ApduDataGroupValueRead.java | 129 +
.../readwrite/ApduDataGroupValueResponse.java | 163 +
.../readwrite/ApduDataGroupValueWrite.java | 163 +
.../readwrite/ApduDataIndividualAddressRead.java | 121 +
.../ApduDataIndividualAddressResponse.java | 122 +
.../readwrite/ApduDataIndividualAddressWrite.java | 122 +
.../knxnetip/readwrite/ApduDataMemoryRead.java | 158 +
.../knxnetip/readwrite/ApduDataMemoryResponse.java | 170 +
.../knxnetip/readwrite/ApduDataMemoryWrite.java | 120 +
.../java/knxnetip/readwrite/ApduDataOther.java | 143 +
.../java/knxnetip/readwrite/ApduDataRestart.java | 120 +
.../knxnetip/readwrite/ApduDataUserMessage.java | 120 +
.../apache/plc4x/java/knxnetip/readwrite/CEMI.java | 203 +
.../readwrite/CEMIAdditionalInformation.java | 157 +
.../CEMIAdditionalInformationBusmonitorInfo.java | 268 +
...CEMIAdditionalInformationRelativeTimestamp.java | 169 +
.../java/knxnetip/readwrite/CEMIPriority.java | 57 +
.../knxnetip/readwrite/ChannelInformation.java | 143 +
.../java/knxnetip/readwrite/ComObjectTable.java | 161 +
.../readwrite/ComObjectTableAddresses.java | 1956 +++
.../readwrite/ComObjectTableRealisationType1.java | 200 +
.../readwrite/ComObjectTableRealisationType2.java | 200 +
.../readwrite/ComObjectTableRealisationType6.java | 151 +
.../knxnetip/readwrite/ComObjectValueType.java | 95 +
.../java/knxnetip/readwrite/ConnectionRequest.java | 217 +
.../readwrite/ConnectionRequestInformation.java | 166 +
...nnectionRequestInformationDeviceManagement.java | 125 +
...nnectionRequestInformationTunnelConnection.java | 162 +
.../knxnetip/readwrite/ConnectionResponse.java | 253 +
.../readwrite/ConnectionResponseDataBlock.java | 166 +
...onnectionResponseDataBlockDeviceManagement.java | 125 +
...onnectionResponseDataBlockTunnelConnection.java | 147 +
.../knxnetip/readwrite/ConnectionStateRequest.java | 197 +
.../readwrite/ConnectionStateResponse.java | 180 +
.../java/knxnetip/readwrite/DIBDeviceInfo.java | 326 +
.../knxnetip/readwrite/DIBSuppSvcFamilies.java | 161 +
.../knxnetip/readwrite/DescriptionRequest.java | 152 +
.../knxnetip/readwrite/DescriptionResponse.java | 179 +
.../knxnetip/readwrite/DeviceConfigurationAck.java | 154 +
.../readwrite/DeviceConfigurationAckDataBlock.java | 182 +
.../readwrite/DeviceConfigurationRequest.java | 189 +
.../DeviceConfigurationRequestDataBlock.java | 166 +
.../java/knxnetip/readwrite/DeviceDescriptor.java | 139 +
.../readwrite/DeviceDescriptorMediumType.java | 59 +
.../knxnetip/readwrite/DeviceDescriptorType2.java | 310 +
.../java/knxnetip/readwrite/DeviceStatus.java | 136 +
.../java/knxnetip/readwrite/DisconnectRequest.java | 196 +
.../knxnetip/readwrite/DisconnectResponse.java | 180 +
.../java/knxnetip/readwrite/FirmwareType.java | 69 +
.../GroupObjectDescriptorRealisationType1.java | 291 +
.../GroupObjectDescriptorRealisationType2.java | 300 +
.../GroupObjectDescriptorRealisationType6.java | 112 +
.../GroupObjectDescriptorRealisationType7.java | 300 +
.../GroupObjectDescriptorRealisationTypeB.java | 282 +
.../knxnetip/readwrite/HPAIControlEndpoint.java | 183 +
.../java/knxnetip/readwrite/HPAIDataEndpoint.java | 183 +
.../knxnetip/readwrite/HPAIDiscoveryEndpoint.java | 183 +
.../java/knxnetip/readwrite/HostProtocolCode.java | 55 +
.../plc4x/java/knxnetip/readwrite/IPAddress.java | 128 +
.../plc4x/java/knxnetip/readwrite/KnxAddress.java | 158 +
.../java/knxnetip/readwrite/KnxDatapoint.java | 16108 +++++++++++++++++++
.../knxnetip/readwrite/KnxDatapointMainType.java | 199 +
.../java/knxnetip/readwrite/KnxDatapointType.java | 1266 ++
.../java/knxnetip/readwrite/KnxGroupAddress.java | 158 +
.../knxnetip/readwrite/KnxGroupAddress2Level.java | 160 +
.../knxnetip/readwrite/KnxGroupAddress3Level.java | 178 +
.../readwrite/KnxGroupAddressFreeLevel.java | 141 +
.../readwrite/KnxInterfaceObjectProperty.java | 1460 ++
.../knxnetip/readwrite/KnxInterfaceObjectType.java | 132 +
.../plc4x/java/knxnetip/readwrite/KnxLayer.java | 56 +
.../java/knxnetip/readwrite/KnxManufacturer.java | 837 +
.../plc4x/java/knxnetip/readwrite/KnxMedium.java | 59 +
.../java/knxnetip/readwrite/KnxNetIpCore.java | 139 +
.../readwrite/KnxNetIpDeviceManagement.java | 139 +
.../java/knxnetip/readwrite/KnxNetIpMessage.java | 242 +
.../java/knxnetip/readwrite/KnxNetIpRouting.java | 139 +
.../java/knxnetip/readwrite/KnxNetIpTunneling.java | 139 +
.../knxnetip/readwrite/KnxNetObjectServer.java | 139 +
.../KnxNetRemoteConfigurationAndDiagnosis.java | 141 +
.../knxnetip/readwrite/KnxNetRemoteLogging.java | 139 +
.../plc4x/java/knxnetip/readwrite/KnxProperty.java | 1795 +++
.../knxnetip/readwrite/KnxPropertyDataType.java | 180 +
.../plc4x/java/knxnetip/readwrite/LBusmonInd.java | 226 +
.../plc4x/java/knxnetip/readwrite/LDataCon.java | 202 +
.../java/knxnetip/readwrite/LDataExtended.java | 292 +
.../plc4x/java/knxnetip/readwrite/LDataFrame.java | 265 +
.../java/knxnetip/readwrite/LDataFrameACK.java | 135 +
.../plc4x/java/knxnetip/readwrite/LDataInd.java | 202 +
.../plc4x/java/knxnetip/readwrite/LDataReq.java | 202 +
.../plc4x/java/knxnetip/readwrite/LPollData.java | 219 +
.../java/knxnetip/readwrite/LPollDataCon.java | 120 +
.../java/knxnetip/readwrite/LPollDataReq.java | 120 +
.../plc4x/java/knxnetip/readwrite/LRawCon.java | 120 +
.../plc4x/java/knxnetip/readwrite/LRawInd.java | 120 +
.../plc4x/java/knxnetip/readwrite/LRawReq.java | 120 +
.../plc4x/java/knxnetip/readwrite/MACAddress.java | 129 +
.../knxnetip/readwrite/MFuncPropCommandReq.java | 120 +
.../java/knxnetip/readwrite/MFuncPropCon.java | 120 +
.../knxnetip/readwrite/MFuncPropStateReadReq.java | 120 +
.../java/knxnetip/readwrite/MPropInfoInd.java | 120 +
.../java/knxnetip/readwrite/MPropReadCon.java | 249 +
.../java/knxnetip/readwrite/MPropReadReq.java | 229 +
.../java/knxnetip/readwrite/MPropWriteCon.java | 120 +
.../java/knxnetip/readwrite/MPropWriteReq.java | 120 +
.../plc4x/java/knxnetip/readwrite/MResetInd.java | 120 +
.../plc4x/java/knxnetip/readwrite/MResetReq.java | 120 +
.../readwrite/ProjectInstallationIdentifier.java | 146 +
.../java/knxnetip/readwrite/RelativeTimestamp.java | 127 +
.../java/knxnetip/readwrite/RoutingIndication.java | 122 +
.../java/knxnetip/readwrite/SearchRequest.java | 151 +
.../java/knxnetip/readwrite/SearchResponse.java | 210 +
.../plc4x/java/knxnetip/readwrite/ServiceId.java | 158 +
.../plc4x/java/knxnetip/readwrite/Status.java | 65 +
.../knxnetip/readwrite/SupportedPhysicalMedia.java | 132 +
.../java/knxnetip/readwrite/TDataConnectedInd.java | 120 +
.../java/knxnetip/readwrite/TDataConnectedReq.java | 120 +
.../knxnetip/readwrite/TDataIndividualInd.java | 120 +
.../knxnetip/readwrite/TDataIndividualReq.java | 120 +
.../java/knxnetip/readwrite/TunnelingRequest.java | 185 +
.../readwrite/TunnelingRequestDataBlock.java | 165 +
.../java/knxnetip/readwrite/TunnelingResponse.java | 152 +
.../readwrite/TunnelingResponseDataBlock.java | 182 +
.../java/knxnetip/readwrite/UnknownMessage.java | 150 +
.../plc4x/java/modbus/readwrite/DataItem.java | 917 ++
.../plc4x/java/modbus/readwrite/DriverType.java | 56 +
.../plc4x/java/modbus/readwrite/ModbusADU.java | 167 +
.../java/modbus/readwrite/ModbusAsciiADU.java | 195 +
.../java/modbus/readwrite/ModbusConstants.java | 131 +
.../java/modbus/readwrite/ModbusDataType.java | 107 +
.../ModbusDeviceInformationConformityLevel.java | 57 +
.../readwrite/ModbusDeviceInformationLevel.java | 57 +
.../ModbusDeviceInformationMoreFollows.java | 55 +
.../readwrite/ModbusDeviceInformationObject.java | 154 +
.../java/modbus/readwrite/ModbusErrorCode.java | 63 +
.../plc4x/java/modbus/readwrite/ModbusPDU.java | 361 +
.../readwrite/ModbusPDUDiagnosticRequest.java | 167 +
.../readwrite/ModbusPDUDiagnosticResponse.java | 167 +
.../java/modbus/readwrite/ModbusPDUError.java | 157 +
.../ModbusPDUGetComEventCounterRequest.java | 130 +
.../ModbusPDUGetComEventCounterResponse.java | 168 +
.../readwrite/ModbusPDUGetComEventLogRequest.java | 130 +
.../readwrite/ModbusPDUGetComEventLogResponse.java | 217 +
.../ModbusPDUMaskWriteHoldingRegisterRequest.java | 187 +
.../ModbusPDUMaskWriteHoldingRegisterResponse.java | 187 +
.../readwrite/ModbusPDUReadCoilsRequest.java | 167 +
.../readwrite/ModbusPDUReadCoilsResponse.java | 159 +
.../ModbusPDUReadDeviceIdentificationRequest.java | 201 +
.../ModbusPDUReadDeviceIdentificationResponse.java | 335 +
.../ModbusPDUReadDiscreteInputsRequest.java | 168 +
.../ModbusPDUReadDiscreteInputsResponse.java | 161 +
.../ModbusPDUReadExceptionStatusRequest.java | 130 +
.../ModbusPDUReadExceptionStatusResponse.java | 149 +
.../readwrite/ModbusPDUReadFifoQueueRequest.java | 149 +
.../readwrite/ModbusPDUReadFifoQueueResponse.java | 172 +
.../readwrite/ModbusPDUReadFileRecordRequest.java | 169 +
.../ModbusPDUReadFileRecordRequestItem.java | 177 +
.../readwrite/ModbusPDUReadFileRecordResponse.java | 169 +
.../ModbusPDUReadFileRecordResponseItem.java | 155 +
.../ModbusPDUReadHoldingRegistersRequest.java | 168 +
.../ModbusPDUReadHoldingRegistersResponse.java | 161 +
.../ModbusPDUReadInputRegistersRequest.java | 168 +
.../ModbusPDUReadInputRegistersResponse.java | 161 +
...DUReadWriteMultipleHoldingRegistersRequest.java | 255 +
...UReadWriteMultipleHoldingRegistersResponse.java | 164 +
.../readwrite/ModbusPDUReportServerIdRequest.java | 130 +
.../readwrite/ModbusPDUReportServerIdResponse.java | 161 +
.../readwrite/ModbusPDUWriteFileRecordRequest.java | 169 +
.../ModbusPDUWriteFileRecordRequestItem.java | 190 +
.../ModbusPDUWriteFileRecordResponse.java | 169 +
.../ModbusPDUWriteFileRecordResponseItem.java | 189 +
.../ModbusPDUWriteMultipleCoilsRequest.java | 198 +
.../ModbusPDUWriteMultipleCoilsResponse.java | 168 +
...busPDUWriteMultipleHoldingRegistersRequest.java | 201 +
...usPDUWriteMultipleHoldingRegistersResponse.java | 171 +
.../readwrite/ModbusPDUWriteSingleCoilRequest.java | 168 +
.../ModbusPDUWriteSingleCoilResponse.java | 168 +
.../ModbusPDUWriteSingleRegisterRequest.java | 168 +
.../ModbusPDUWriteSingleRegisterResponse.java | 168 +
.../plc4x/java/modbus/readwrite/ModbusRtuADU.java | 194 +
.../plc4x/java/modbus/readwrite/ModbusTcpADU.java | 243 +
.../java/opcua/readwrite/AccessLevelExType.java | 67 +
.../java/opcua/readwrite/AccessLevelType.java | 61 +
.../opcua/readwrite/AccessRestrictionType.java | 58 +
.../opcua/readwrite/ActivateSessionRequest.java | 353 +
.../opcua/readwrite/ActivateSessionResponse.java | 285 +
.../plc4x/java/opcua/readwrite/AddNodesItem.java | 316 +
.../java/opcua/readwrite/AddNodesRequest.java | 201 +
.../java/opcua/readwrite/AddNodesResponse.java | 258 +
.../plc4x/java/opcua/readwrite/AddNodesResult.java | 166 +
.../java/opcua/readwrite/AddReferencesItem.java | 288 +
.../java/opcua/readwrite/AddReferencesRequest.java | 202 +
.../opcua/readwrite/AddReferencesResponse.java | 256 +
.../opcua/readwrite/AdditionalParametersType.java | 174 +
.../opcua/readwrite/AggregateConfiguration.java | 259 +
.../plc4x/java/opcua/readwrite/AlarmMask.java | 57 +
.../java/opcua/readwrite/AliasNameDataType.java | 196 +
.../plc4x/java/opcua/readwrite/Annotation.java | 183 +
.../java/opcua/readwrite/AnnotationDataType.java | 187 +
.../opcua/readwrite/AnonymousIdentityToken.java | 122 +
.../opcua/readwrite/ApplicationDescription.java | 343 +
.../readwrite/ApplicationInstanceCertificate.java | 112 +
.../java/opcua/readwrite/ApplicationType.java | 57 +
.../plc4x/java/opcua/readwrite/Argument.java | 265 +
.../java/opcua/readwrite/AttributeWriteMask.java | 80 +
.../plc4x/java/opcua/readwrite/AudioDataType.java | 111 +
.../java/opcua/readwrite/AxisInformation.java | 280 +
.../java/opcua/readwrite/AxisScaleEnumeration.java | 56 +
.../java/opcua/readwrite/BitFieldDefinition.java | 236 +
.../java/opcua/readwrite/BitFieldMaskDataType.java | 111 +
.../readwrite/BrokerTransportQualityOfService.java | 58 +
.../java/opcua/readwrite/BrowseDescription.java | 276 +
.../java/opcua/readwrite/BrowseDirection.java | 57 +
.../java/opcua/readwrite/BrowseNextRequest.java | 239 +
.../java/opcua/readwrite/BrowseNextResponse.java | 258 +
.../plc4x/java/opcua/readwrite/BrowsePath.java | 168 +
.../java/opcua/readwrite/BrowsePathResult.java | 194 +
.../java/opcua/readwrite/BrowsePathTarget.java | 165 +
.../plc4x/java/opcua/readwrite/BrowseRequest.java | 256 +
.../plc4x/java/opcua/readwrite/BrowseResponse.java | 258 +
.../plc4x/java/opcua/readwrite/BrowseResult.java | 228 +
.../java/opcua/readwrite/BrowseResultMask.java | 63 +
.../plc4x/java/opcua/readwrite/BuildInfo.java | 267 +
.../java/opcua/readwrite/ByteStringArray.java | 143 +
.../java/opcua/readwrite/ByteStringNodeId.java | 147 +
.../java/opcua/readwrite/CallMethodRequest.java | 218 +
.../java/opcua/readwrite/CallMethodResult.java | 323 +
.../plc4x/java/opcua/readwrite/CallRequest.java | 201 +
.../plc4x/java/opcua/readwrite/CallResponse.java | 258 +
.../plc4x/java/opcua/readwrite/CancelRequest.java | 165 +
.../plc4x/java/opcua/readwrite/CancelResponse.java | 165 +
.../java/opcua/readwrite/CartesianCoordinates.java | 122 +
.../java/opcua/readwrite/ChannelSecurityToken.java | 197 +
.../opcua/readwrite/CloseSecureChannelRequest.java | 147 +
.../readwrite/CloseSecureChannelResponse.java | 147 +
.../java/opcua/readwrite/CloseSessionRequest.java | 176 +
.../java/opcua/readwrite/CloseSessionResponse.java | 146 +
.../java/opcua/readwrite/ComplexNumberType.java | 160 +
.../readwrite/ConfigurationVersionDataType.java | 161 +
.../readwrite/ConnectionTransportDataType.java | 122 +
.../plc4x/java/opcua/readwrite/ContentFilter.java | 172 +
.../java/opcua/readwrite/ContentFilterElement.java | 204 +
.../readwrite/ContentFilterElementResult.java | 266 +
.../java/opcua/readwrite/ContentFilterResult.java | 238 +
.../java/opcua/readwrite/ContinuationPoint.java | 111 +
.../java/opcua/readwrite/ConversionLimitEnum.java | 56 +
.../apache/plc4x/java/opcua/readwrite/Counter.java | 110 +
.../readwrite/CreateMonitoredItemsRequest.java | 259 +
.../readwrite/CreateMonitoredItemsResponse.java | 258 +
.../java/opcua/readwrite/CreateSessionRequest.java | 359 +
.../opcua/readwrite/CreateSessionResponse.java | 451 +
.../opcua/readwrite/CreateSubscriptionRequest.java | 308 +
.../readwrite/CreateSubscriptionResponse.java | 249 +
.../java/opcua/readwrite/CurrencyUnitType.java | 205 +
.../opcua/readwrite/DataChangeNotification.java | 243 +
.../java/opcua/readwrite/DataChangeTrigger.java | 56 +
.../opcua/readwrite/DataSetFieldContentMask.java | 60 +
.../java/opcua/readwrite/DataSetFieldFlags.java | 55 +
.../java/opcua/readwrite/DataSetOrderingType.java | 56 +
.../readwrite/DataSetReaderMessageDataType.java | 123 +
.../readwrite/DataSetReaderTransportDataType.java | 123 +
.../opcua/readwrite/DataSetWriterDataType.java | 401 +
.../readwrite/DataSetWriterMessageDataType.java | 123 +
.../readwrite/DataSetWriterTransportDataType.java | 123 +
.../java/opcua/readwrite/DataTypeDefinition.java | 122 +
.../java/opcua/readwrite/DataTypeDescription.java | 167 +
.../java/opcua/readwrite/DataTypeSchemaHeader.java | 358 +
.../plc4x/java/opcua/readwrite/DataValue.java | 374 +
.../plc4x/java/opcua/readwrite/DateString.java | 111 +
.../plc4x/java/opcua/readwrite/DeadbandType.java | 56 +
.../plc4x/java/opcua/readwrite/DecimalString.java | 111 +
.../readwrite/DeleteMonitoredItemsRequest.java | 221 +
.../readwrite/DeleteMonitoredItemsResponse.java | 256 +
.../java/opcua/readwrite/DeleteNodesItem.java | 173 +
.../java/opcua/readwrite/DeleteNodesRequest.java | 202 +
.../java/opcua/readwrite/DeleteNodesResponse.java | 256 +
.../java/opcua/readwrite/DeleteReferencesItem.java | 259 +
.../opcua/readwrite/DeleteReferencesRequest.java | 205 +
.../opcua/readwrite/DeleteReferencesResponse.java | 256 +
.../readwrite/DeleteSubscriptionsRequest.java | 196 +
.../readwrite/DeleteSubscriptionsResponse.java | 256 +
.../plc4x/java/opcua/readwrite/DiagnosticInfo.java | 415 +
.../java/opcua/readwrite/DiagnosticsLevel.java | 58 +
.../opcua/readwrite/DiscoveryConfiguration.java | 122 +
.../opcua/readwrite/DoubleComplexNumberType.java | 161 +
.../apache/plc4x/java/opcua/readwrite/Duplex.java | 56 +
.../plc4x/java/opcua/readwrite/DurationString.java | 111 +
.../plc4x/java/opcua/readwrite/EUInformation.java | 212 +
.../java/opcua/readwrite/EccEncryptedSecret.java | 111 +
.../plc4x/java/opcua/readwrite/EncodedTicket.java | 111 +
.../opcua/readwrite/EndpointConfiguration.java | 337 +
.../java/opcua/readwrite/EndpointDescription.java | 373 +
.../plc4x/java/opcua/readwrite/EndpointType.java | 232 +
.../opcua/readwrite/EndpointUrlListDataType.java | 172 +
.../plc4x/java/opcua/readwrite/EnumValueType.java | 186 +
.../java/opcua/readwrite/EphemeralKeyType.java | 168 +
.../plc4x/java/opcua/readwrite/EventFieldList.java | 190 +
.../opcua/readwrite/EventNotificationList.java | 183 +
.../java/opcua/readwrite/EventNotifierType.java | 57 +
.../opcua/readwrite/ExceptionDeviationFormat.java | 58 +
.../plc4x/java/opcua/readwrite/ExpandedNodeId.java | 225 +
.../java/opcua/readwrite/ExtensionHeader.java | 149 +
.../java/opcua/readwrite/ExtensionObject.java | 203 +
.../opcua/readwrite/ExtensionObjectDefinition.java | 879 +
.../readwrite/ExtensionObjectEncodingMask.java | 168 +
.../plc4x/java/opcua/readwrite/FieldMetaData.java | 434 +
.../java/opcua/readwrite/FieldTargetDataType.java | 311 +
.../plc4x/java/opcua/readwrite/FilterOperand.java | 122 +
.../plc4x/java/opcua/readwrite/FilterOperator.java | 71 +
.../readwrite/FindServersOnNetworkRequest.java | 256 +
.../readwrite/FindServersOnNetworkResponse.java | 229 +
.../java/opcua/readwrite/FindServersRequest.java | 278 +
.../java/opcua/readwrite/FindServersResponse.java | 201 +
.../plc4x/java/opcua/readwrite/FourByteNodeId.java | 143 +
.../apache/plc4x/java/opcua/readwrite/Frame.java | 122 +
.../opcua/readwrite/GenericAttributeValue.java | 163 +
.../java/opcua/readwrite/GetEndpointsRequest.java | 278 +
.../java/opcua/readwrite/GetEndpointsResponse.java | 201 +
.../plc4x/java/opcua/readwrite/GuidNodeId.java | 146 +
.../plc4x/java/opcua/readwrite/GuidValue.java | 191 +
.../apache/plc4x/java/opcua/readwrite/Handle.java | 110 +
.../plc4x/java/opcua/readwrite/HistoryData.java | 170 +
.../plc4x/java/opcua/readwrite/HistoryEvent.java | 172 +
.../opcua/readwrite/HistoryEventFieldList.java | 171 +
.../java/opcua/readwrite/HistoryReadDetails.java | 122 +
.../java/opcua/readwrite/HistoryReadRequest.java | 305 +
.../java/opcua/readwrite/HistoryReadResponse.java | 258 +
.../java/opcua/readwrite/HistoryReadResult.java | 193 +
.../java/opcua/readwrite/HistoryReadValueId.java | 219 +
.../java/opcua/readwrite/HistoryUpdateDetails.java | 122 +
.../java/opcua/readwrite/HistoryUpdateRequest.java | 207 +
.../opcua/readwrite/HistoryUpdateResponse.java | 258 +
.../java/opcua/readwrite/HistoryUpdateResult.java | 259 +
.../java/opcua/readwrite/HistoryUpdateType.java | 57 +
.../apache/plc4x/java/opcua/readwrite/IdType.java | 57 +
.../java/opcua/readwrite/IdentityCriteriaType.java | 61 +
.../opcua/readwrite/IdentityMappingRuleType.java | 177 +
.../plc4x/java/opcua/readwrite/ImageBMP.java | 110 +
.../plc4x/java/opcua/readwrite/ImageGIF.java | 110 +
.../plc4x/java/opcua/readwrite/ImageJPG.java | 110 +
.../plc4x/java/opcua/readwrite/ImagePNG.java | 110 +
.../apache/plc4x/java/opcua/readwrite/Index.java | 110 +
.../plc4x/java/opcua/readwrite/IntegerId.java | 110 +
.../java/opcua/readwrite/InterfaceAdminStatus.java | 56 +
.../java/opcua/readwrite/InterfaceOperStatus.java | 60 +
.../java/opcua/readwrite/IssuedIdentityToken.java | 170 +
.../readwrite/JsonDataSetMessageContentMask.java | 65 +
.../readwrite/JsonNetworkMessageContentMask.java | 61 +
.../plc4x/java/opcua/readwrite/KeyValuePair.java | 167 +
.../opcua/readwrite/LinearConversionDataType.java | 199 +
.../plc4x/java/opcua/readwrite/LocaleId.java | 110 +
.../plc4x/java/opcua/readwrite/LocalizedText.java | 195 +
.../plc4x/java/opcua/readwrite/MessagePDU.java | 189 +
.../java/opcua/readwrite/MessageSecurityMode.java | 57 +
.../readwrite/ModelChangeStructureDataType.java | 185 +
.../readwrite/ModelChangeStructureVerbMask.java | 58 +
.../java/opcua/readwrite/ModificationInfo.java | 195 +
.../readwrite/ModifyMonitoredItemsRequest.java | 259 +
.../readwrite/ModifyMonitoredItemsResponse.java | 258 +
.../opcua/readwrite/ModifySubscriptionRequest.java | 299 +
.../readwrite/ModifySubscriptionResponse.java | 224 +
.../readwrite/MonitoredItemCreateRequest.java | 207 +
.../opcua/readwrite/MonitoredItemCreateResult.java | 239 +
.../readwrite/MonitoredItemModifyRequest.java | 169 +
.../opcua/readwrite/MonitoredItemModifyResult.java | 219 +
.../opcua/readwrite/MonitoredItemNotification.java | 164 +
.../java/opcua/readwrite/MonitoringFilter.java | 122 +
.../opcua/readwrite/MonitoringFilterResult.java | 122 +
.../plc4x/java/opcua/readwrite/MonitoringMode.java | 56 +
.../java/opcua/readwrite/MonitoringParameters.java | 243 +
.../plc4x/java/opcua/readwrite/NamingRuleType.java | 56 +
.../java/opcua/readwrite/NegotiationStatus.java | 58 +
.../opcua/readwrite/NetworkAddressDataType.java | 145 +
.../java/opcua/readwrite/NetworkGroupDataType.java | 197 +
.../plc4x/java/opcua/readwrite/NodeAttributes.java | 240 +
.../java/opcua/readwrite/NodeAttributesMask.java | 88 +
.../plc4x/java/opcua/readwrite/NodeClass.java | 62 +
.../apache/plc4x/java/opcua/readwrite/NodeId.java | 149 +
.../java/opcua/readwrite/NodeIdByteString.java | 175 +
.../plc4x/java/opcua/readwrite/NodeIdFourByte.java | 171 +
.../plc4x/java/opcua/readwrite/NodeIdGuid.java | 173 +
.../plc4x/java/opcua/readwrite/NodeIdNumeric.java | 171 +
.../plc4x/java/opcua/readwrite/NodeIdString.java | 174 +
.../plc4x/java/opcua/readwrite/NodeIdTwoByte.java | 152 +
.../plc4x/java/opcua/readwrite/NodeIdType.java | 59 +
.../java/opcua/readwrite/NodeIdTypeDefinition.java | 167 +
.../plc4x/java/opcua/readwrite/NodeReference.java | 258 +
.../java/opcua/readwrite/NodeTypeDescription.java | 236 +
.../java/opcua/readwrite/NormalizedString.java | 111 +
.../java/opcua/readwrite/NotificationData.java | 122 +
.../java/opcua/readwrite/NotificationMessage.java | 222 +
.../plc4x/java/opcua/readwrite/NullExtension.java | 122 +
.../plc4x/java/opcua/readwrite/NumericNodeId.java | 143 +
.../plc4x/java/opcua/readwrite/NumericRange.java | 111 +
.../plc4x/java/opcua/readwrite/OpcuaAPU.java | 150 +
.../opcua/readwrite/OpcuaAcknowledgeResponse.java | 262 +
.../java/opcua/readwrite/OpcuaCloseRequest.java | 266 +
.../plc4x/java/opcua/readwrite/OpcuaDataType.java | 104 +
.../java/opcua/readwrite/OpcuaHelloRequest.java | 291 +
.../java/opcua/readwrite/OpcuaIdentifierType.java | 57 +
.../java/opcua/readwrite/OpcuaMessageError.java | 202 +
.../java/opcua/readwrite/OpcuaMessageRequest.java | 264 +
.../java/opcua/readwrite/OpcuaMessageResponse.java | 264 +
.../readwrite/OpcuaNodeIdServicesDataType.java | 499 +
.../opcua/readwrite/OpcuaNodeIdServicesMethod.java | 1947 +++
.../opcua/readwrite/OpcuaNodeIdServicesObject.java | 1537 ++
.../readwrite/OpcuaNodeIdServicesObjectType.java | 316 +
.../OpcuaNodeIdServicesReferenceType.java | 125 +
.../OpcuaNodeIdServicesVariableAccess.java | 56 +
...OpcuaNodeIdServicesVariableAcknowledgeable.java | 83 +
.../readwrite/OpcuaNodeIdServicesVariableAdd.java | 86 +
.../OpcuaNodeIdServicesVariableAggregate.java | 58 +
.../OpcuaNodeIdServicesVariableAlarm.java | 320 +
.../OpcuaNodeIdServicesVariableAlias.java | 59 +
.../OpcuaNodeIdServicesVariableAliases.java | 56 +
.../OpcuaNodeIdServicesVariableAllow.java | 54 +
.../OpcuaNodeIdServicesVariableAlternative.java | 57 +
.../OpcuaNodeIdServicesVariableAnalog.java | 56 +
.../OpcuaNodeIdServicesVariableAnnotations.java | 55 +
.../OpcuaNodeIdServicesVariableApplication.java | 59 +
.../OpcuaNodeIdServicesVariableArray.java | 58 +
.../OpcuaNodeIdServicesVariableAttribute.java | 55 +
.../OpcuaNodeIdServicesVariableAudio.java | 56 +
.../OpcuaNodeIdServicesVariableAudit.java | 132 +
.../OpcuaNodeIdServicesVariableAuthorization.java | 62 +
.../readwrite/OpcuaNodeIdServicesVariableAxis.java | 54 +
.../readwrite/OpcuaNodeIdServicesVariableBase.java | 69 +
.../readwrite/OpcuaNodeIdServicesVariableBit.java | 56 +
.../OpcuaNodeIdServicesVariableBroker.java | 71 +
.../OpcuaNodeIdServicesVariableBrowse.java | 55 +
.../OpcuaNodeIdServicesVariableBuild.java | 59 +
.../OpcuaNodeIdServicesVariableCartesian.java | 55 +
.../OpcuaNodeIdServicesVariableCertificate.java | 2471 +++
.../OpcuaNodeIdServicesVariableChange.java | 54 +
.../OpcuaNodeIdServicesVariableClose.java | 58 +
.../OpcuaNodeIdServicesVariableCondition.java | 84 +
.../OpcuaNodeIdServicesVariableConnect.java | 55 +
.../OpcuaNodeIdServicesVariableConversion.java | 55 +
.../OpcuaNodeIdServicesVariableCreate.java | 61 +
.../readwrite/OpcuaNodeIdServicesVariableCube.java | 56 +
.../OpcuaNodeIdServicesVariableCurrency.java | 54 +
.../readwrite/OpcuaNodeIdServicesVariableData.java | 250 +
.../OpcuaNodeIdServicesVariableDatagram.java | 79 +
.../OpcuaNodeIdServicesVariableDeadband.java | 54 +
.../OpcuaNodeIdServicesVariableDefault.java | 71 +
.../OpcuaNodeIdServicesVariableDelete.java | 55 +
.../OpcuaNodeIdServicesVariableDiagnostics.java | 55 +
.../OpcuaNodeIdServicesVariableDialog.java | 81 +
.../OpcuaNodeIdServicesVariableDisconnect.java | 56 +
.../OpcuaNodeIdServicesVariableDiscrepancy.java | 57 +
.../OpcuaNodeIdServicesVariableDuplex.java | 54 +
.../OpcuaNodeIdServicesVariableEngineering.java | 55 +
.../readwrite/OpcuaNodeIdServicesVariableEnum.java | 55 +
.../OpcuaNodeIdServicesVariableEvent.java | 54 +
.../OpcuaNodeIdServicesVariableException.java | 55 +
.../OpcuaNodeIdServicesVariableExclusive.java | 87 +
.../OpcuaNodeIdServicesVariableExpression.java | 55 +
.../OpcuaNodeIdServicesVariableExtension.java | 58 +
.../readwrite/OpcuaNodeIdServicesVariableFile.java | 121 +
.../OpcuaNodeIdServicesVariableFilter.java | 54 +
.../readwrite/OpcuaNodeIdServicesVariableFind.java | 55 +
.../OpcuaNodeIdServicesVariableFinite.java | 68 +
.../OpcuaNodeIdServicesVariableFrame.java | 60 +
.../OpcuaNodeIdServicesVariableGeneral.java | 54 +
.../OpcuaNodeIdServicesVariableGenerate.java | 57 +
.../readwrite/OpcuaNodeIdServicesVariableGet.java | 75 +
.../readwrite/OpcuaNodeIdServicesVariableH.java | 68 +
.../OpcuaNodeIdServicesVariableHistorical.java | 79 +
.../OpcuaNodeIdServicesVariableHistory.java | 84 +
.../readwrite/OpcuaNodeIdServicesVariableI.java | 101 +
.../readwrite/OpcuaNodeIdServicesVariableIcon.java | 54 +
.../readwrite/OpcuaNodeIdServicesVariableId.java | 54 +
.../OpcuaNodeIdServicesVariableIdentity.java | 54 +
.../readwrite/OpcuaNodeIdServicesVariableIetf.java | 62 +
.../OpcuaNodeIdServicesVariableImage.java | 55 +
.../OpcuaNodeIdServicesVariableInput.java | 54 +
.../OpcuaNodeIdServicesVariableInterface.java | 56 +
.../readwrite/OpcuaNodeIdServicesVariableJson.java | 59 +
.../readwrite/OpcuaNodeIdServicesVariableKey.java | 77 +
.../OpcuaNodeIdServicesVariableLimit.java | 69 +
.../OpcuaNodeIdServicesVariableLocal.java | 54 +
.../readwrite/OpcuaNodeIdServicesVariableMax.java | 57 +
.../OpcuaNodeIdServicesVariableMessage.java | 54 +
.../OpcuaNodeIdServicesVariableModel.java | 54 +
.../OpcuaNodeIdServicesVariableModify.java | 64 +
.../OpcuaNodeIdServicesVariableMonitoring.java | 55 +
.../readwrite/OpcuaNodeIdServicesVariableMove.java | 55 +
.../OpcuaNodeIdServicesVariableMulti.java | 59 +
.../readwrite/OpcuaNodeIdServicesVariableN.java | 54 +
.../OpcuaNodeIdServicesVariableNamespace.java | 82 +
.../OpcuaNodeIdServicesVariableNamespaces.java | 85 +
.../OpcuaNodeIdServicesVariableNaming.java | 54 +
.../OpcuaNodeIdServicesVariableNegotiation.java | 55 +
.../OpcuaNodeIdServicesVariableNetwork.java | 58 +
.../readwrite/OpcuaNodeIdServicesVariableNode.java | 56 +
.../readwrite/OpcuaNodeIdServicesVariableNon.java | 105 +
.../readwrite/OpcuaNodeIdServicesVariableO.java | 81 +
.../readwrite/OpcuaNodeIdServicesVariableOff.java | 54 +
.../readwrite/OpcuaNodeIdServicesVariableOpc.java | 1027 ++
.../readwrite/OpcuaNodeIdServicesVariableOpen.java | 58 +
.../OpcuaNodeIdServicesVariableOperation.java | 66 +
.../OpcuaNodeIdServicesVariableOption.java | 57 +
.../OpcuaNodeIdServicesVariableOrdered.java | 55 +
.../OpcuaNodeIdServicesVariableOrientation.java | 55 +
.../OpcuaNodeIdServicesVariableOutput.java | 54 +
.../OpcuaNodeIdServicesVariableOverride.java | 54 +
.../OpcuaNodeIdServicesVariablePassword.java | 54 +
.../OpcuaNodeIdServicesVariablePerform.java | 54 +
.../OpcuaNodeIdServicesVariablePermission.java | 55 +
.../OpcuaNodeIdServicesVariablePriority.java | 56 +
.../OpcuaNodeIdServicesVariableProgram.java | 126 +
.../OpcuaNodeIdServicesVariableProgress.java | 55 +
.../OpcuaNodeIdServicesVariableProvisionable.java | 1931 +++
.../readwrite/OpcuaNodeIdServicesVariablePub.java | 775 +
.../OpcuaNodeIdServicesVariablePublish.java | 405 +
.../OpcuaNodeIdServicesVariablePublished.java | 186 +
.../OpcuaNodeIdServicesVariableQuantities.java | 59 +
.../OpcuaNodeIdServicesVariableQuantity.java | 67 +
.../OpcuaNodeIdServicesVariableRational.java | 55 +
.../readwrite/OpcuaNodeIdServicesVariableRead.java | 55 +
.../OpcuaNodeIdServicesVariableReader.java | 251 +
.../OpcuaNodeIdServicesVariableRedundancy.java | 55 +
.../OpcuaNodeIdServicesVariableRedundant.java | 55 +
.../OpcuaNodeIdServicesVariableReference.java | 55 +
.../OpcuaNodeIdServicesVariableRemove.java | 68 +
.../OpcuaNodeIdServicesVariableRequest.java | 55 +
.../OpcuaNodeIdServicesVariableResend.java | 54 +
.../readwrite/OpcuaNodeIdServicesVariableRole.java | 80 +
.../OpcuaNodeIdServicesVariableSampling.java | 65 +
.../OpcuaNodeIdServicesVariableSecurity.java | 85 +
.../OpcuaNodeIdServicesVariableSelection.java | 57 +
.../OpcuaNodeIdServicesVariableSemantic.java | 54 +
.../OpcuaNodeIdServicesVariableServer.java | 3978 +++++
.../OpcuaNodeIdServicesVariableSession.java | 216 +
.../OpcuaNodeIdServicesVariableSessions.java | 156 +
.../readwrite/OpcuaNodeIdServicesVariableSet.java | 58 +
.../OpcuaNodeIdServicesVariableShelved.java | 67 +
.../OpcuaNodeIdServicesVariableStandalone.java | 56 +
.../OpcuaNodeIdServicesVariableState.java | 69 +
.../OpcuaNodeIdServicesVariableStructure.java | 55 +
.../OpcuaNodeIdServicesVariableSubscribed.java | 75 +
.../OpcuaNodeIdServicesVariableSubscription.java | 122 +
.../OpcuaNodeIdServicesVariableSyntax.java | 54 +
.../OpcuaNodeIdServicesVariableSystem.java | 54 +
.../readwrite/OpcuaNodeIdServicesVariableTag.java | 56 +
.../OpcuaNodeIdServicesVariableTarget.java | 62 +
.../OpcuaNodeIdServicesVariableTemporary.java | 76 +
.../OpcuaNodeIdServicesVariableThree.java | 73 +
.../OpcuaNodeIdServicesVariableTimed.java | 55 +
.../OpcuaNodeIdServicesVariableTimestamps.java | 55 +
.../OpcuaNodeIdServicesVariableTopics.java | 56 +
.../OpcuaNodeIdServicesVariableTransaction.java | 60 +
.../OpcuaNodeIdServicesVariableTransition.java | 76 +
.../OpcuaNodeIdServicesVariableTransparent.java | 56 +
.../OpcuaNodeIdServicesVariableTrust.java | 69 +
.../readwrite/OpcuaNodeIdServicesVariableTsn.java | 57 +
.../readwrite/OpcuaNodeIdServicesVariableTwo.java | 60 +
.../readwrite/OpcuaNodeIdServicesVariableType.java | 115 +
.../readwrite/OpcuaNodeIdServicesVariableUadp.java | 73 +
.../readwrite/OpcuaNodeIdServicesVariableUnit.java | 57 +
.../OpcuaNodeIdServicesVariableUpdate.java | 55 +
.../readwrite/OpcuaNodeIdServicesVariableUser.java | 71 +
.../OpcuaNodeIdServicesVariableValue.java | 54 +
.../OpcuaNodeIdServicesVariableVector.java | 54 +
.../readwrite/OpcuaNodeIdServicesVariableView.java | 54 +
.../readwrite/OpcuaNodeIdServicesVariableWell.java | 185 +
.../readwrite/OpcuaNodeIdServicesVariableWith.java | 54 +
.../OpcuaNodeIdServicesVariableWrite.java | 54 +
.../OpcuaNodeIdServicesVariableWriter.java | 231 +
.../readwrite/OpcuaNodeIdServicesVariableX.java | 54 +
.../readwrite/OpcuaNodeIdServicesVariableY.java | 54 +
.../java/opcua/readwrite/OpcuaOpenRequest.java | 347 +
.../java/opcua/readwrite/OpcuaOpenResponse.java | 348 +
.../java/opcua/readwrite/OpcuaStatusCode.java | 324 +
.../plc4x/java/opcua/readwrite/OpcuaVector.java | 122 +
.../plc4x/java/opcua/readwrite/OpenFileMode.java | 57 +
.../opcua/readwrite/OpenSecureChannelRequest.java | 295 +
.../opcua/readwrite/OpenSecureChannelResponse.java | 226 +
.../plc4x/java/opcua/readwrite/OptionSet.java | 168 +
.../plc4x/java/opcua/readwrite/Orientation.java | 122 +
.../opcua/readwrite/OverrideValueHandling.java | 56 +
.../plc4x/java/opcua/readwrite/ParsingResult.java | 264 +
.../java/opcua/readwrite/PascalByteString.java | 147 +
.../plc4x/java/opcua/readwrite/PascalString.java | 160 +
.../java/opcua/readwrite/PasswordOptionsMask.java | 63 +
.../java/opcua/readwrite/PerformUpdateType.java | 57 +
.../plc4x/java/opcua/readwrite/PermissionType.java | 71 +
.../opcua/readwrite/PortableQualifiedName.java | 166 +
.../opcua/readwrite/PriorityMappingEntryType.java | 218 +
.../readwrite/ProgramDiagnostic2DataType.java | 559 +
.../opcua/readwrite/ProgramDiagnosticDataType.java | 449 +
.../readwrite/PubSubConfigurationDataType.java | 265 +
.../readwrite/PubSubConfigurationRefDataType.java | 222 +
.../readwrite/PubSubConfigurationRefMask.java | 67 +
.../opcua/readwrite/PubSubConnectionDataType.java | 462 +
.../PubSubDiagnosticsCounterClassification.java | 56 +
.../java/opcua/readwrite/PubSubGroupDataType.java | 382 +
.../readwrite/PubSubKeyPushTargetDataType.java | 442 +
.../plc4x/java/opcua/readwrite/PubSubState.java | 58 +
.../plc4x/java/opcua/readwrite/PublishRequest.java | 212 +
.../java/opcua/readwrite/PublishResponse.java | 400 +
.../readwrite/PublishedDataSetSourceDataType.java | 123 +
.../opcua/readwrite/PublishedVariableDataType.java | 350 +
.../plc4x/java/opcua/readwrite/QosDataType.java | 122 +
.../plc4x/java/opcua/readwrite/QualifiedName.java | 146 +
.../java/opcua/readwrite/QuantityDimension.java | 316 +
.../java/opcua/readwrite/QueryDataDescription.java | 188 +
.../plc4x/java/opcua/readwrite/QueryDataSet.java | 222 +
.../java/opcua/readwrite/QueryFirstRequest.java | 313 +
.../java/opcua/readwrite/QueryFirstResponse.java | 376 +
.../java/opcua/readwrite/QueryNextRequest.java | 210 +
.../java/opcua/readwrite/QueryNextResponse.java | 234 +
.../apache/plc4x/java/opcua/readwrite/Range.java | 160 +
.../plc4x/java/opcua/readwrite/RationalNumber.java | 160 +
.../plc4x/java/opcua/readwrite/ReadRequest.java | 258 +
.../plc4x/java/opcua/readwrite/ReadResponse.java | 256 +
.../plc4x/java/opcua/readwrite/ReadValueId.java | 207 +
.../readwrite/ReaderGroupMessageDataType.java | 122 +
.../readwrite/ReaderGroupTransportDataType.java | 123 +
.../java/opcua/readwrite/RedundancySupport.java | 59 +
.../opcua/readwrite/RedundantServerDataType.java | 193 +
.../java/opcua/readwrite/RedundantServerMode.java | 57 +
.../java/opcua/readwrite/ReferenceDescription.java | 314 +
.../readwrite/ReferenceDescriptionDataType.java | 218 +
.../readwrite/ReferenceListEntryDataType.java | 196 +
.../java/opcua/readwrite/RegisterNodesRequest.java | 200 +
.../opcua/readwrite/RegisterNodesResponse.java | 203 +
.../opcua/readwrite/RegisterServer2Request.java | 233 +
.../opcua/readwrite/RegisterServer2Response.java | 266 +
.../opcua/readwrite/RegisterServerRequest.java | 173 +
.../opcua/readwrite/RegisterServerResponse.java | 146 +
.../java/opcua/readwrite/RegisteredServer.java | 401 +
.../plc4x/java/opcua/readwrite/RelativePath.java | 172 +
.../java/opcua/readwrite/RelativePathElement.java | 226 +
.../java/opcua/readwrite/RepublishRequest.java | 190 +
.../java/opcua/readwrite/RepublishResponse.java | 174 +
.../plc4x/java/opcua/readwrite/RequestHeader.java | 294 +
.../plc4x/java/opcua/readwrite/ResponseHeader.java | 305 +
.../java/opcua/readwrite/RolePermissionType.java | 173 +
.../java/opcua/readwrite/RsaEncryptedSecret.java | 111 +
.../SamplingIntervalDiagnosticsDataType.java | 221 +
.../opcua/readwrite/SecurityGroupDataType.java | 439 +
.../opcua/readwrite/SecurityTokenRequestType.java | 55 +
.../readwrite/SemanticChangeStructureDataType.java | 167 +
.../opcua/readwrite/SemanticVersionString.java | 111 +
.../ServerDiagnosticsSummaryDataType.java | 418 +
.../java/opcua/readwrite/ServerOnNetwork.java | 248 +
.../plc4x/java/opcua/readwrite/ServerState.java | 61 +
.../java/opcua/readwrite/ServerStatusDataType.java | 271 +
.../opcua/readwrite/ServiceCounterDataType.java | 161 +
.../plc4x/java/opcua/readwrite/ServiceFault.java | 146 +
.../readwrite/SessionAuthenticationToken.java | 112 +
.../readwrite/SessionDiagnosticsDataType.java | 1331 ++
.../SessionSecurityDiagnosticsDataType.java | 404 +
.../readwrite/SessionlessInvokeRequestType.java | 334 +
.../readwrite/SessionlessInvokeResponseType.java | 250 +
.../opcua/readwrite/SetMonitoringModeRequest.java | 255 +
.../opcua/readwrite/SetMonitoringModeResponse.java | 256 +
.../opcua/readwrite/SetPublishingModeRequest.java | 229 +
.../opcua/readwrite/SetPublishingModeResponse.java | 256 +
.../java/opcua/readwrite/SetTriggeringRequest.java | 293 +
.../opcua/readwrite/SetTriggeringResponse.java | 377 +
.../plc4x/java/opcua/readwrite/SignatureData.java | 167 +
.../opcua/readwrite/SignedSoftwareCertificate.java | 171 +
.../opcua/readwrite/StatusChangeNotification.java | 178 +
.../plc4x/java/opcua/readwrite/StatusCode.java | 127 +
.../plc4x/java/opcua/readwrite/StatusResult.java | 167 +
.../plc4x/java/opcua/readwrite/StringNodeId.java | 146 +
.../plc4x/java/opcua/readwrite/Structure.java | 110 +
.../plc4x/java/opcua/readwrite/StructureField.java | 328 +
.../plc4x/java/opcua/readwrite/StructureType.java | 58 +
.../opcua/readwrite/SubscribedDataSetDataType.java | 122 +
.../readwrite/SubscriptionAcknowledgement.java | 161 +
.../readwrite/SubscriptionDiagnosticsDataType.java | 877 +
.../plc4x/java/opcua/readwrite/TimeString.java | 111 +
.../java/opcua/readwrite/TimeZoneDataType.java | 170 +
.../java/opcua/readwrite/TimestampsToReturn.java | 58 +
.../java/opcua/readwrite/TransactionErrorType.java | 189 +
.../plc4x/java/opcua/readwrite/TransferResult.java | 203 +
.../readwrite/TransferSubscriptionsRequest.java | 229 +
.../readwrite/TransferSubscriptionsResponse.java | 258 +
.../TranslateBrowsePathsToNodeIdsRequest.java | 204 +
.../TranslateBrowsePathsToNodeIdsResponse.java | 259 +
.../plc4x/java/opcua/readwrite/TrimmedString.java | 111 +
.../java/opcua/readwrite/TrustListDataType.java | 374 +
.../plc4x/java/opcua/readwrite/TrustListMasks.java | 59 +
.../readwrite/TrustListValidationOptions.java | 61 +
.../plc4x/java/opcua/readwrite/TsnFailureCode.java | 79 +
.../java/opcua/readwrite/TsnListenerStatus.java | 57 +
.../plc4x/java/opcua/readwrite/TsnStreamState.java | 58 +
.../java/opcua/readwrite/TsnTalkerStatus.java | 56 +
.../plc4x/java/opcua/readwrite/TwoByteNodeId.java | 127 +
.../readwrite/UadpDataSetMessageContentMask.java | 60 +
.../readwrite/UadpNetworkMessageContentMask.java | 65 +
.../apache/plc4x/java/opcua/readwrite/Union.java | 122 +
.../opcua/readwrite/UnregisterNodesRequest.java | 203 +
.../opcua/readwrite/UnregisterNodesResponse.java | 146 +
.../opcua/readwrite/UnsignedRationalNumber.java | 161 +
.../plc4x/java/opcua/readwrite/UriString.java | 110 +
.../opcua/readwrite/UserConfigurationMask.java | 58 +
.../java/opcua/readwrite/UserIdentityToken.java | 189 +
.../readwrite/UserIdentityTokenDefinition.java | 166 +
.../opcua/readwrite/UserManagementDataType.java | 198 +
.../opcua/readwrite/UserNameIdentityToken.java | 191 +
.../java/opcua/readwrite/UserTokenPolicy.java | 255 +
.../plc4x/java/opcua/readwrite/UserTokenType.java | 57 +
.../apache/plc4x/java/opcua/readwrite/UtcTime.java | 110 +
.../apache/plc4x/java/opcua/readwrite/Variant.java | 287 +
.../plc4x/java/opcua/readwrite/VariantBoolean.java | 182 +
.../plc4x/java/opcua/readwrite/VariantByte.java | 184 +
.../java/opcua/readwrite/VariantByteString.java | 189 +
.../java/opcua/readwrite/VariantDataValue.java | 188 +
.../java/opcua/readwrite/VariantDateTime.java | 182 +
.../opcua/readwrite/VariantDiagnosticInfo.java | 189 +
.../plc4x/java/opcua/readwrite/VariantDouble.java | 182 +
.../opcua/readwrite/VariantExpandedNodeId.java | 189 +
.../opcua/readwrite/VariantExtensionObject.java | 189 +
.../plc4x/java/opcua/readwrite/VariantFloat.java | 182 +
.../plc4x/java/opcua/readwrite/VariantGuid.java | 188 +
.../plc4x/java/opcua/readwrite/VariantInt16.java | 184 +
.../plc4x/java/opcua/readwrite/VariantInt32.java | 182 +
.../plc4x/java/opcua/readwrite/VariantInt64.java | 182 +
.../java/opcua/readwrite/VariantLocalizedText.java | 188 +
.../plc4x/java/opcua/readwrite/VariantNodeId.java | 188 +
.../plc4x/java/opcua/readwrite/VariantNull.java | 130 +
.../java/opcua/readwrite/VariantQualifiedName.java | 188 +
.../plc4x/java/opcua/readwrite/VariantSByte.java | 182 +
.../java/opcua/readwrite/VariantStatusCode.java | 188 +
.../plc4x/java/opcua/readwrite/VariantString.java | 188 +
.../plc4x/java/opcua/readwrite/VariantUInt16.java | 184 +
.../plc4x/java/opcua/readwrite/VariantUInt32.java | 184 +
.../plc4x/java/opcua/readwrite/VariantUInt64.java | 185 +
.../plc4x/java/opcua/readwrite/VariantVariant.java | 188 +
.../java/opcua/readwrite/VariantXmlElement.java | 188 +
.../plc4x/java/opcua/readwrite/VersionTime.java | 111 +
.../java/opcua/readwrite/ViewDescription.java | 180 +
.../plc4x/java/opcua/readwrite/WriteRequest.java | 201 +
.../plc4x/java/opcua/readwrite/WriteResponse.java | 256 +
.../plc4x/java/opcua/readwrite/WriteValue.java | 205 +
.../readwrite/WriterGroupMessageDataType.java | 122 +
.../readwrite/WriterGroupTransportDataType.java | 123 +
.../java/opcua/readwrite/X509IdentityToken.java | 146 +
.../apache/plc4x/java/opcua/readwrite/XVType.java | 157 +
.../plc4x/java/opcua/readwrite/XmlElement.java | 143 +
.../openprotocol/readwrite/AlarmActiveStatus.java | 55 +
.../readwrite/ApplicationCommunicationError.java | 142 +
.../java/openprotocol/readwrite/BatchStatus.java | 56 +
.../java/openprotocol/readwrite/Constants.java | 126 +
.../java/openprotocol/readwrite/ForcedOrder.java | 56 +
.../openprotocol/readwrite/IdentifierResult.java | 55 +
.../java/openprotocol/readwrite/JobBatchMode.java | 55 +
.../LinkLevelNegativeAcknowledgeError.java | 58 +
.../plc4x/java/openprotocol/readwrite/Mid.java | 239 +
.../plc4x/java/openprotocol/readwrite/NoYes.java | 55 +
.../plc4x/java/openprotocol/readwrite/NokOk.java | 55 +
.../plc4x/java/openprotocol/readwrite/OkNok.java | 55 +
.../readwrite/OpenProtocolMessage.java | 568 +
.../readwrite/OpenProtocolMessageAlarm.java | 194 +
.../OpenProtocolMessageAlarmAcknowledge.java | 192 +
.../OpenProtocolMessageAlarmAcknowledgeRev1.java | 153 +
.../readwrite/OpenProtocolMessageAlarmRev1.java | 354 +
.../readwrite/OpenProtocolMessageAlarmRev2.java | 402 +
.../readwrite/OpenProtocolMessageAlarmStatus.java | 196 +
.../OpenProtocolMessageAlarmStatusAcknowledge.java | 192 +
...nProtocolMessageAlarmStatusAcknowledgeRev1.java | 155 +
.../OpenProtocolMessageAlarmStatusRev1.java | 416 +
.../OpenProtocolMessageAlarmStatusRev2.java | 416 +
.../OpenProtocolMessageAlarmSubscribe.java | 192 +
.../OpenProtocolMessageAlarmSubscribeRev1.java | 153 +
.../OpenProtocolMessageAlarmUnsubscribe.java | 192 +
.../OpenProtocolMessageAlarmUnsubscribeRev1.java | 153 +
...nProtocolMessageApplicationCommandAccepted.java | 194 +
...tocolMessageApplicationCommandAcceptedRev1.java | 187 +
...OpenProtocolMessageApplicationCommandError.java | 193 +
...ProtocolMessageApplicationCommandErrorRev1.java | 223 +
...otocolMessageApplicationCommunicationStart.java | 154 +
...geApplicationCommunicationStartAcknowledge.java | 219 +
...plicationCommunicationStartAcknowledgeRev1.java | 302 +
...plicationCommunicationStartAcknowledgeRev2.java | 350 +
...plicationCommunicationStartAcknowledgeRev3.java | 515 +
...plicationCommunicationStartAcknowledgeRev4.java | 612 +
...plicationCommunicationStartAcknowledgeRev5.java | 708 +
...plicationCommunicationStartAcknowledgeRev6.java | 961 ++
...rotocolMessageApplicationCommunicationStop.java | 154 +
...otocolMessageApplicationGenericDataRequest.java | 194 +
...olMessageApplicationGenericDataRequestRev1.java | 253 +
...tocolMessageApplicationGenericSubscription.java | 194 +
...lMessageApplicationGenericSubscriptionRev1.java | 254 +
...otocolMessageApplicationGenericUnsubscribe.java | 194 +
...olMessageApplicationGenericUnsubscribeRev1.java | 254 +
.../readwrite/OpenProtocolMessageDisableTool.java | 192 +
.../OpenProtocolMessageDisableToolRev1.java | 153 +
.../OpenProtocolMessageDynamicPsetSelection.java | 192 +
...penProtocolMessageDynamicPsetSelectionRev1.java | 235 +
.../readwrite/OpenProtocolMessageEnableTool.java | 190 +
.../OpenProtocolMessageEnableToolRev1.java | 153 +
...penProtocolMessageExecuteDynamicJobRequest.java | 197 +
...rotocolMessageExecuteDynamicJobRequestRev1.java | 1115 ++
...tocolMessageExecuteDynamicJobRequestRev999.java | 1115 ++
...enProtocolMessageIdentifierDownloadRequest.java | 193 +
...otocolMessageIdentifierDownloadRequestRev1.java | 183 +
...lMessageKeepAliveOpenProtocolCommunication.java | 194 +
...sageKeepAliveOpenProtocolCommunicationRev1.java | 156 +
...penProtocolMessageLastTighteningResultData.java | 225 +
...rotocolMessageLastTighteningResultDataRev1.java | 1314 ++
...rotocolMessageLastTighteningResultDataRev2.java | 3300 ++++
...rotocolMessageLastTighteningResultDataRev3.java | 2612 +++
...rotocolMessageLastTighteningResultDataRev4.java | 2762 ++++
...rotocolMessageLastTighteningResultDataRev5.java | 2814 ++++
...rotocolMessageLastTighteningResultDataRev6.java | 2921 ++++
...rotocolMessageLastTighteningResultDataRev7.java | 2990 ++++
...tocolMessageLastTighteningResultDataRev998.java | 3036 ++++
...MessageLastTighteningResultDataRev999Light.java | 560 +
...olMessageLastTighteningResultDataSubscribe.java | 194 +
...ssageLastTighteningResultDataSubscribeRev1.java | 156 +
...rotocolMessageLinkLevelNegativeAcknowledge.java | 194 +
...colMessageLinkLevelNegativeAcknowledgeRev1.java | 223 +
...rotocolMessageLinkLevelPositiveAcknowledge.java | 194 +
...colMessageLinkLevelPositiveAcknowledgeRev1.java | 187 +
...penProtocolMessageLockAtBatchDoneSubscribe.java | 193 +
...rotocolMessageLockAtBatchDoneSubscribeRev1.java | 156 +
...nProtocolMessageLockAtBatchDoneUnsubscribe.java | 194 +
...tocolMessageLockAtBatchDoneUnsubscribeRev1.java | 156 +
.../OpenProtocolMessageLockAtBatchDoneUpload.java | 192 +
...colMessageLockAtBatchDoneUploadAcknowledge.java | 194 +
...essageLockAtBatchDoneUploadAcknowledgeRev1.java | 156 +
...enProtocolMessageLockAtBatchDoneUploadRev1.java | 182 +
...ProtocolMessageParameterSetDataUploadReply.java | 199 +
...ocolMessageParameterSetDataUploadReplyRev1.java | 667 +
...ocolMessageParameterSetDataUploadReplyRev2.java | 767 +
...otocolMessageParameterSetDataUploadRequest.java | 199 +
...olMessageParameterSetDataUploadRequestRev1.java | 183 +
...olMessageParameterSetDataUploadRequestRev2.java | 183 +
...enProtocolMessageParameterSetIdUploadReply.java | 201 +
...otocolMessageParameterSetIdUploadReplyRev1.java | 204 +
...otocolMessageParameterSetIdUploadReplyRev2.java | 238 +
...otocolMessageParameterSetIdUploadReplyRev3.java | 268 +
...ProtocolMessageParameterSetIdUploadRequest.java | 194 +
...ocolMessageParameterSetIdUploadRequestRev1.java | 156 +
.../OpenProtocolMessageParameterSetSelected.java | 196 +
...ocolMessageParameterSetSelectedAcknowledge.java | 194 +
...MessageParameterSetSelectedAcknowledgeRev1.java | 156 +
...penProtocolMessageParameterSetSelectedRev1.java | 215 +
...penProtocolMessageParameterSetSelectedRev2.java | 820 +
...otocolMessageParameterSetSelectedSubscribe.java | 194 +
...olMessageParameterSetSelectedSubscribeRev1.java | 156 +
...ocolMessageParameterSetSelectedUnsubscribe.java | 194 +
...MessageParameterSetSelectedUnsubscribeRev1.java | 156 +
...colMessageProgramPsetSelectionInDynamicJob.java | 194 +
...essageProgramPsetSelectionInDynamicJobRev1.java | 183 +
...otocolMessageResetParameterSetBatchCounter.java | 194 +
...olMessageResetParameterSetBatchCounterRev1.java | 183 +
.../OpenProtocolMessageResultTracesCurve.java | 192 +
...enProtocolMessageResultTracesCurvePlotData.java | 193 +
...otocolMessageResultTracesCurvePlotDataRev1.java | 259 +
.../OpenProtocolMessageResultTracesCurveRev1.java | 153 +
.../OpenProtocolMessageSelectParameterSet.java | 192 +
.../OpenProtocolMessageSelectParameterSetRev1.java | 181 +
...penProtocolMessageSetParameterSetBatchSize.java | 193 +
...rotocolMessageSetParameterSetBatchSizeRev1.java | 212 +
.../readwrite/OpenProtocolMessageSetTime.java | 190 +
.../readwrite/OpenProtocolMessageSetTimeRev1.java | 174 +
.../java/openprotocol/readwrite/ResultType.java | 61 +
.../openprotocol/readwrite/RotationDirection.java | 56 +
.../java/openprotocol/readwrite/StageResult.java | 157 +
.../plc4x/java/openprotocol/readwrite/Status.java | 56 +
.../java/openprotocol/readwrite/Strategy.java | 80 +
.../java/openprotocol/readwrite/ToolLoosening.java | 56 +
.../java/openprotocol/readwrite/TraceType.java | 60 +
.../plc4x/java/openprotocol/readwrite/Unit.java | 61 +
.../openprotocol/readwrite/VariableDataField.java | 225 +
.../java/plc4x/readwrite/Plc4xConnectRequest.java | 166 +
.../java/plc4x/readwrite/Plc4xConnectResponse.java | 181 +
.../plc4x/java/plc4x/readwrite/Plc4xConstants.java | 130 +
.../plc4x/java/plc4x/readwrite/Plc4xMessage.java | 234 +
.../java/plc4x/readwrite/Plc4xReadRequest.java | 197 +
.../java/plc4x/readwrite/Plc4xReadResponse.java | 234 +
.../java/plc4x/readwrite/Plc4xRequestType.java | 65 +
.../java/plc4x/readwrite/Plc4xResponseCode.java | 64 +
.../plc4x/readwrite/Plc4xSubscriptionType.java | 56 +
.../plc4x/java/plc4x/readwrite/Plc4xTag.java | 160 +
.../java/plc4x/readwrite/Plc4xTagRequest.java | 130 +
.../java/plc4x/readwrite/Plc4xTagResponse.java | 156 +
.../java/plc4x/readwrite/Plc4xTagValueRequest.java | 183 +
.../plc4x/readwrite/Plc4xTagValueResponse.java | 211 +
.../plc4x/java/plc4x/readwrite/Plc4xValue.java | 467 +
.../plc4x/java/plc4x/readwrite/Plc4xValueType.java | 84 +
.../java/plc4x/readwrite/Plc4xWriteRequest.java | 197 +
.../java/plc4x/readwrite/Plc4xWriteResponse.java | 234 +
.../java/profinet/readwrite/CharacterEncoding.java | 55 +
.../plc4x/java/profinet/readwrite/CheckPeers.java | 280 +
.../plc4x/java/profinet/readwrite/DataItem.java | 1139 ++
.../profinet/readwrite/DceRpc_ActivityUuid.java | 175 +
.../profinet/readwrite/DceRpc_InterfaceUuid.java | 279 +
.../DceRpc_InterfaceUuid_ControllerInterface.java | 124 +
.../DceRpc_InterfaceUuid_DeviceInterface.java | 123 +
.../DceRpc_InterfaceUuid_ParameterInterface.java | 124 +
.../DceRpc_InterfaceUuid_SupervisorInterface.java | 124 +
.../java/profinet/readwrite/DceRpc_ObjectUuid.java | 268 +
.../java/profinet/readwrite/DceRpc_Operation.java | 59 +
.../java/profinet/readwrite/DceRpc_Packet.java | 967 ++
.../java/profinet/readwrite/DceRpc_PacketType.java | 64 +
.../plc4x/java/profinet/readwrite/EndOfLldp.java | 120 +
.../java/profinet/readwrite/Ethernet_Frame.java | 183 +
.../profinet/readwrite/Ethernet_FramePayload.java | 154 +
.../readwrite/Ethernet_FramePayload_IPv4.java | 518 +
.../readwrite/Ethernet_FramePayload_LLDP.java | 144 +
.../readwrite/Ethernet_FramePayload_PnDcp.java | 145 +
.../Ethernet_FramePayload_VirtualLan.java | 213 +
.../profinet/readwrite/FloatingPointEncoding.java | 57 +
.../profinet/readwrite/IODReadRequestHeader.java | 495 +
.../profinet/readwrite/IODReadResponseHeader.java | 521 +
.../profinet/readwrite/IODWriteRequestHeader.java | 497 +
.../profinet/readwrite/IODWriteResponseHeader.java | 459 +
.../java/profinet/readwrite/IntegerEncoding.java | 55 +
.../plc4x/java/profinet/readwrite/IpAddress.java | 128 +
.../plc4x/java/profinet/readwrite/LldpUnit.java | 184 +
.../plc4x/java/profinet/readwrite/Lldp_Pdu.java | 146 +
.../plc4x/java/profinet/readwrite/MacAddress.java | 129 +
.../readwrite/ManagementAddressSubType.java | 55 +
.../MultipleInterfaceModeNameOfDevice.java | 55 +
.../java/profinet/readwrite/PDInterfaceAdjust.java | 304 +
.../java/profinet/readwrite/PDPortDataCheck.java | 310 +
.../java/profinet/readwrite/PascalString.java | 161 +
.../readwrite/PascalString16BitLength.java | 161 +
.../java/profinet/readwrite/PcDcp_GetSet_Pdu.java | 342 +
.../profinet/readwrite/PcDcp_Pdu_DelayReq.java | 388 +
.../plc4x/java/profinet/readwrite/PnDcp_Block.java | 295 +
.../profinet/readwrite/PnDcp_BlockOptions.java | 59 +
.../readwrite/PnDcp_Block_ALLSelector.java | 124 +
.../PnDcp_Block_ControlOptionFactoryReset.java | 126 +
.../PnDcp_Block_ControlOptionResetToFactory.java | 126 +
.../PnDcp_Block_ControlOptionResponse.java | 126 +
.../readwrite/PnDcp_Block_ControlOptionSignal.java | 126 +
.../readwrite/PnDcp_Block_ControlOptionStart.java | 126 +
.../readwrite/PnDcp_Block_ControlOptionStop.java | 126 +
.../PnDcp_Block_DeviceInitiativeOption.java | 126 +
.../PnDcp_Block_DevicePropertiesAliasName.java | 214 +
.../PnDcp_Block_DevicePropertiesDeviceId.java | 204 +
...PnDcp_Block_DevicePropertiesDeviceInstance.java | 207 +
.../PnDcp_Block_DevicePropertiesDeviceOptions.java | 192 +
.../PnDcp_Block_DevicePropertiesDeviceRole.java | 291 +
.../PnDcp_Block_DevicePropertiesDeviceVendor.java | 214 +
.../PnDcp_Block_DevicePropertiesNameOfStation.java | 214 +
.../PnDcp_Block_DevicePropertiesOemDeviceId.java | 126 +
...nDcp_Block_DevicePropertiesStandardGateway.java | 127 +
.../PnDcp_Block_DhcpOptionClassIdentifier.java | 126 +
...PnDcp_Block_DhcpOptionDhcpClientIdentifier.java | 127 +
...p_Block_DhcpOptionFullyQualifiedDomainName.java | 128 +
.../readwrite/PnDcp_Block_DhcpOptionHostName.java | 126 +
...PnDcp_Block_DhcpOptionParameterRequestList.java | 127 +
.../PnDcp_Block_DhcpOptionServerIdentifier.java | 126 +
.../PnDcp_Block_DhcpOptionUuidBasedClient.java | 126 +
..._Block_DhcpOptionVendorSpecificInformation.java | 129 +
.../readwrite/PnDcp_Block_FullIpSuite.java | 124 +
.../readwrite/PnDcp_Block_IpMacAddress.java | 175 +
.../readwrite/PnDcp_Block_IpParameter.java | 349 +
.../java/profinet/readwrite/PnDcp_FrameId.java | 72 +
.../plc4x/java/profinet/readwrite/PnDcp_Pdu.java | 184 +
.../profinet/readwrite/PnDcp_Pdu_AlarmLow.java | 413 +
.../profinet/readwrite/PnDcp_Pdu_IdentifyReq.java | 336 +
.../profinet/readwrite/PnDcp_Pdu_IdentifyRes.java | 336 +
.../readwrite/PnDcp_Pdu_IdentifyRes_Payload.java | 254 +
.../readwrite/PnDcp_Pdu_RealTimeCyclic.java | 436 +
.../java/profinet/readwrite/PnDcp_ServiceId.java | 57 +
.../java/profinet/readwrite/PnDcp_ServiceType.java | 197 +
.../readwrite/PnDcp_SupportedDeviceOption.java | 164 +
.../java/profinet/readwrite/PnIoCm_AddInfo.java | 54 +
.../profinet/readwrite/PnIoCm_AlarmCrType.java | 54 +
.../java/profinet/readwrite/PnIoCm_ArInfo.java | 54 +
.../java/profinet/readwrite/PnIoCm_ArType.java | 54 +
.../java/profinet/readwrite/PnIoCm_Block.java | 216 +
.../java/profinet/readwrite/PnIoCm_BlockType.java | 138 +
.../readwrite/PnIoCm_Block_AlarmCrReq.java | 530 +
.../readwrite/PnIoCm_Block_AlarmCrRes.java | 297 +
.../profinet/readwrite/PnIoCm_Block_ArReq.java | 793 +
.../profinet/readwrite/PnIoCm_Block_ArRes.java | 358 +
.../profinet/readwrite/PnIoCm_Block_ArServer.java | 241 +
.../PnIoCm_Block_ExpectedSubmoduleReq.java | 249 +
.../profinet/readwrite/PnIoCm_Block_IAndM0.java | 532 +
.../profinet/readwrite/PnIoCm_Block_IAndM1.java | 251 +
.../profinet/readwrite/PnIoCm_Block_IAndM2.java | 221 +
.../profinet/readwrite/PnIoCm_Block_IAndM3.java | 220 +
.../profinet/readwrite/PnIoCm_Block_IAndM4.java | 220 +
.../profinet/readwrite/PnIoCm_Block_IoCrReq.java | 881 +
.../profinet/readwrite/PnIoCm_Block_IoCrRes.java | 290 +
.../readwrite/PnIoCm_Block_ModuleDiff.java | 244 +
.../PnIoCm_Block_RealIdentificationData.java | 245 +
.../PnIoCm_Block_ReqPlugAlarmApplicationReady.java | 122 +
.../profinet/readwrite/PnIoCm_CompanionArType.java | 54 +
.../PnIoCm_Control_Request_ApplicationReady.java | 362 +
.../PnIoCm_Control_Request_ParameterEnd.java | 362 +
.../PnIoCm_Control_Response_ApplicationReady.java | 373 +
.../PnIoCm_Control_Response_ParameterEnd.java | 362 +
.../readwrite/PnIoCm_DataUnitDataObject.java | 180 +
.../profinet/readwrite/PnIoCm_DataUnitIoCs.java | 199 +
.../profinet/readwrite/PnIoCm_DescriptionType.java | 54 +
.../PnIoCm_ExpectedSubmoduleBlockReqApi.java | 260 +
.../java/profinet/readwrite/PnIoCm_IdentInfo.java | 54 +
.../profinet/readwrite/PnIoCm_IoCrBlockReqApi.java | 231 +
.../java/profinet/readwrite/PnIoCm_IoCrType.java | 55 +
.../plc4x/java/profinet/readwrite/PnIoCm_IoCs.java | 182 +
.../profinet/readwrite/PnIoCm_IoDataObject.java | 183 +
.../readwrite/PnIoCm_ModuleDiffBlockApi.java | 182 +
.../PnIoCm_ModuleDiffBlockApi_Module.java | 241 +
.../PnIoCm_ModuleDiffBlockApi_Submodule.java | 387 +
.../profinet/readwrite/PnIoCm_ModuleState.java | 54 +
.../java/profinet/readwrite/PnIoCm_Packet.java | 171 +
.../PnIoCm_Packet_ConnectionlessCancel.java | 123 +
.../profinet/readwrite/PnIoCm_Packet_Fault.java | 140 +
.../profinet/readwrite/PnIoCm_Packet_NoCall.java | 122 +
.../profinet/readwrite/PnIoCm_Packet_Ping.java | 121 +
.../java/profinet/readwrite/PnIoCm_Packet_Rej.java | 140 +
.../java/profinet/readwrite/PnIoCm_Packet_Req.java | 225 +
.../java/profinet/readwrite/PnIoCm_Packet_Res.java | 309 +
.../profinet/readwrite/PnIoCm_Packet_Working.java | 122 +
.../readwrite/PnIoCm_RealIdentificationApi.java | 183 +
.../PnIoCm_RealIdentificationApi_Slot.java | 208 +
.../PnIoCm_RealIdentificationApi_Subslot.java | 161 +
.../java/profinet/readwrite/PnIoCm_RtClass.java | 54 +
.../java/profinet/readwrite/PnIoCm_State.java | 54 +
.../java/profinet/readwrite/PnIoCm_Submodule.java | 348 +
.../profinet/readwrite/PnIoCm_SubmoduleType.java | 57 +
.../PnIoCm_Submodule_InputAndOutputData.java | 342 +
.../readwrite/PnIoCm_Submodule_InputData.java | 246 +
.../PnIoCm_Submodule_NoInputNoOutputData.java | 237 +
.../readwrite/PnIoCm_Submodule_OutputData.java | 246 +
.../readwrite/PnIo_CyclicServiceDataUnit.java | 148 +
.../java/profinet/readwrite/ProfinetDataType.java | 138 +
.../profinet/readwrite/ProfinetDeviceState.java | 61 +
.../java/profinet/readwrite/TlvChassisId.java | 160 +
.../java/profinet/readwrite/TlvIEEESubType.java | 55 +
.../readwrite/TlvIeee8023MacPhyConfigStatus.java | 189 +
.../readwrite/TlvIeee8023MaxFrameSize.java | 141 +
.../profinet/readwrite/TlvManagementAddress.java | 261 +
.../profinet/readwrite/TlvOrgSpecificIeee8023.java | 145 +
.../readwrite/TlvOrgSpecificIeee8023Unit.java | 156 +
.../profinet/readwrite/TlvOrgSpecificProfibus.java | 145 +
.../readwrite/TlvOrgSpecificProfibusUnit.java | 165 +
.../readwrite/TlvOrganizationSpecific.java | 151 +
.../readwrite/TlvOrganizationSpecificUnit.java | 150 +
.../profinet/readwrite/TlvPortDescription.java | 139 +
.../plc4x/java/profinet/readwrite/TlvPortId.java | 159 +
.../profinet/readwrite/TlvProfibusSubType.java | 57 +
.../readwrite/TlvProfibusSubTypeChassisMac.java | 145 +
.../readwrite/TlvProfibusSubTypeMeasuredDelay.java | 234 +
.../readwrite/TlvProfibusSubTypeMrpPortStatus.java | 164 +
.../readwrite/TlvProfibusSubTypePortStatus.java | 249 +
.../profinet/readwrite/TlvSystemCapabilities.java | 524 +
.../profinet/readwrite/TlvSystemDescription.java | 139 +
.../java/profinet/readwrite/TlvSystemName.java | 139 +
.../java/profinet/readwrite/TlvTimeToLive.java | 139 +
.../plc4x/java/profinet/readwrite/TlvType.java | 63 +
.../plc4x/java/profinet/readwrite/UserData.java | 155 +
.../apache/plc4x/java/profinet/readwrite/Uuid.java | 128 +
.../profinet/readwrite/VirtualLanPriority.java | 88 +
.../java/profinet/readwrite/CharacterEncoding.java | 55 +
.../plc4x/java/profinet/readwrite/CheckPeers.java | 280 +
.../plc4x/java/profinet/readwrite/DataItem.java | 1139 ++
.../profinet/readwrite/DceRpc_ActivityUuid.java | 175 +
.../profinet/readwrite/DceRpc_InterfaceUuid.java | 279 +
.../DceRpc_InterfaceUuid_ControllerInterface.java | 124 +
.../DceRpc_InterfaceUuid_DeviceInterface.java | 123 +
.../DceRpc_InterfaceUuid_ParameterInterface.java | 124 +
.../DceRpc_InterfaceUuid_SupervisorInterface.java | 124 +
.../java/profinet/readwrite/DceRpc_ObjectUuid.java | 268 +
.../java/profinet/readwrite/DceRpc_Operation.java | 59 +
.../java/profinet/readwrite/DceRpc_Packet.java | 967 ++
.../java/profinet/readwrite/DceRpc_PacketType.java | 64 +
.../plc4x/java/profinet/readwrite/EndOfLldp.java | 120 +
.../java/profinet/readwrite/Ethernet_Frame.java | 183 +
.../profinet/readwrite/Ethernet_FramePayload.java | 154 +
.../readwrite/Ethernet_FramePayload_IPv4.java | 518 +
.../readwrite/Ethernet_FramePayload_LLDP.java | 144 +
.../readwrite/Ethernet_FramePayload_PnDcp.java | 145 +
.../Ethernet_FramePayload_VirtualLan.java | 213 +
.../profinet/readwrite/FloatingPointEncoding.java | 57 +
.../profinet/readwrite/IODReadRequestHeader.java | 495 +
.../profinet/readwrite/IODReadResponseHeader.java | 521 +
.../profinet/readwrite/IODWriteRequestHeader.java | 497 +
.../profinet/readwrite/IODWriteResponseHeader.java | 459 +
.../java/profinet/readwrite/IntegerEncoding.java | 55 +
.../plc4x/java/profinet/readwrite/IpAddress.java | 128 +
.../plc4x/java/profinet/readwrite/LldpUnit.java | 184 +
.../plc4x/java/profinet/readwrite/Lldp_Pdu.java | 146 +
.../plc4x/java/profinet/readwrite/MacAddress.java | 129 +
.../readwrite/ManagementAddressSubType.java | 55 +
.../MultipleInterfaceModeNameOfDevice.java | 55 +
.../java/profinet/readwrite/PDInterfaceAdjust.java | 304 +
.../java/profinet/readwrite/PDPortDataCheck.java | 310 +
.../java/profinet/readwrite/PascalString.java | 161 +
.../readwrite/PascalString16BitLength.java | 161 +
.../java/profinet/readwrite/PcDcp_GetSet_Pdu.java | 342 +
.../profinet/readwrite/PcDcp_Pdu_DelayReq.java | 388 +
.../plc4x/java/profinet/readwrite/PnDcp_Block.java | 295 +
.../profinet/readwrite/PnDcp_BlockOptions.java | 59 +
.../readwrite/PnDcp_Block_ALLSelector.java | 124 +
.../PnDcp_Block_ControlOptionFactoryReset.java | 126 +
.../PnDcp_Block_ControlOptionResetToFactory.java | 126 +
.../PnDcp_Block_ControlOptionResponse.java | 126 +
.../readwrite/PnDcp_Block_ControlOptionSignal.java | 126 +
.../readwrite/PnDcp_Block_ControlOptionStart.java | 126 +
.../readwrite/PnDcp_Block_ControlOptionStop.java | 126 +
.../PnDcp_Block_DeviceInitiativeOption.java | 126 +
.../PnDcp_Block_DevicePropertiesAliasName.java | 214 +
.../PnDcp_Block_DevicePropertiesDeviceId.java | 204 +
...PnDcp_Block_DevicePropertiesDeviceInstance.java | 207 +
.../PnDcp_Block_DevicePropertiesDeviceOptions.java | 192 +
.../PnDcp_Block_DevicePropertiesDeviceRole.java | 291 +
.../PnDcp_Block_DevicePropertiesDeviceVendor.java | 214 +
.../PnDcp_Block_DevicePropertiesNameOfStation.java | 214 +
.../PnDcp_Block_DevicePropertiesOemDeviceId.java | 126 +
...nDcp_Block_DevicePropertiesStandardGateway.java | 127 +
.../PnDcp_Block_DhcpOptionClassIdentifier.java | 126 +
...PnDcp_Block_DhcpOptionDhcpClientIdentifier.java | 127 +
...p_Block_DhcpOptionFullyQualifiedDomainName.java | 128 +
.../readwrite/PnDcp_Block_DhcpOptionHostName.java | 126 +
...PnDcp_Block_DhcpOptionParameterRequestList.java | 127 +
.../PnDcp_Block_DhcpOptionServerIdentifier.java | 126 +
.../PnDcp_Block_DhcpOptionUuidBasedClient.java | 126 +
..._Block_DhcpOptionVendorSpecificInformation.java | 129 +
.../readwrite/PnDcp_Block_FullIpSuite.java | 124 +
.../readwrite/PnDcp_Block_IpMacAddress.java | 175 +
.../readwrite/PnDcp_Block_IpParameter.java | 349 +
.../java/profinet/readwrite/PnDcp_FrameId.java | 72 +
.../plc4x/java/profinet/readwrite/PnDcp_Pdu.java | 184 +
.../profinet/readwrite/PnDcp_Pdu_AlarmLow.java | 413 +
.../profinet/readwrite/PnDcp_Pdu_IdentifyReq.java | 336 +
.../profinet/readwrite/PnDcp_Pdu_IdentifyRes.java | 336 +
.../readwrite/PnDcp_Pdu_IdentifyRes_Payload.java | 254 +
.../readwrite/PnDcp_Pdu_RealTimeCyclic.java | 436 +
.../java/profinet/readwrite/PnDcp_ServiceId.java | 57 +
.../java/profinet/readwrite/PnDcp_ServiceType.java | 197 +
.../readwrite/PnDcp_SupportedDeviceOption.java | 164 +
.../java/profinet/readwrite/PnIoCm_AddInfo.java | 54 +
.../profinet/readwrite/PnIoCm_AlarmCrType.java | 54 +
.../java/profinet/readwrite/PnIoCm_ArInfo.java | 54 +
.../java/profinet/readwrite/PnIoCm_ArType.java | 54 +
.../java/profinet/readwrite/PnIoCm_Block.java | 216 +
.../java/profinet/readwrite/PnIoCm_BlockType.java | 138 +
.../readwrite/PnIoCm_Block_AlarmCrReq.java | 530 +
.../readwrite/PnIoCm_Block_AlarmCrRes.java | 297 +
.../profinet/readwrite/PnIoCm_Block_ArReq.java | 793 +
.../profinet/readwrite/PnIoCm_Block_ArRes.java | 358 +
.../profinet/readwrite/PnIoCm_Block_ArServer.java | 241 +
.../PnIoCm_Block_ExpectedSubmoduleReq.java | 249 +
.../profinet/readwrite/PnIoCm_Block_IAndM0.java | 532 +
.../profinet/readwrite/PnIoCm_Block_IAndM1.java | 251 +
.../profinet/readwrite/PnIoCm_Block_IAndM2.java | 221 +
.../profinet/readwrite/PnIoCm_Block_IAndM3.java | 220 +
.../profinet/readwrite/PnIoCm_Block_IAndM4.java | 220 +
.../profinet/readwrite/PnIoCm_Block_IoCrReq.java | 881 +
.../profinet/readwrite/PnIoCm_Block_IoCrRes.java | 290 +
.../readwrite/PnIoCm_Block_ModuleDiff.java | 244 +
.../PnIoCm_Block_RealIdentificationData.java | 245 +
.../PnIoCm_Block_ReqPlugAlarmApplicationReady.java | 122 +
.../profinet/readwrite/PnIoCm_CompanionArType.java | 54 +
.../PnIoCm_Control_Request_ApplicationReady.java | 362 +
.../PnIoCm_Control_Request_ParameterEnd.java | 362 +
.../PnIoCm_Control_Response_ApplicationReady.java | 373 +
.../PnIoCm_Control_Response_ParameterEnd.java | 362 +
.../readwrite/PnIoCm_DataUnitDataObject.java | 180 +
.../profinet/readwrite/PnIoCm_DataUnitIoCs.java | 199 +
.../profinet/readwrite/PnIoCm_DescriptionType.java | 54 +
.../PnIoCm_ExpectedSubmoduleBlockReqApi.java | 260 +
.../java/profinet/readwrite/PnIoCm_IdentInfo.java | 54 +
.../profinet/readwrite/PnIoCm_IoCrBlockReqApi.java | 231 +
.../java/profinet/readwrite/PnIoCm_IoCrType.java | 55 +
.../plc4x/java/profinet/readwrite/PnIoCm_IoCs.java | 182 +
.../profinet/readwrite/PnIoCm_IoDataObject.java | 183 +
.../readwrite/PnIoCm_ModuleDiffBlockApi.java | 182 +
.../PnIoCm_ModuleDiffBlockApi_Module.java | 241 +
.../PnIoCm_ModuleDiffBlockApi_Submodule.java | 387 +
.../profinet/readwrite/PnIoCm_ModuleState.java | 54 +
.../java/profinet/readwrite/PnIoCm_Packet.java | 171 +
.../PnIoCm_Packet_ConnectionlessCancel.java | 123 +
.../profinet/readwrite/PnIoCm_Packet_Fault.java | 140 +
.../profinet/readwrite/PnIoCm_Packet_NoCall.java | 122 +
.../profinet/readwrite/PnIoCm_Packet_Ping.java | 121 +
.../java/profinet/readwrite/PnIoCm_Packet_Rej.java | 140 +
.../java/profinet/readwrite/PnIoCm_Packet_Req.java | 225 +
.../java/profinet/readwrite/PnIoCm_Packet_Res.java | 309 +
.../profinet/readwrite/PnIoCm_Packet_Working.java | 122 +
.../readwrite/PnIoCm_RealIdentificationApi.java | 183 +
.../PnIoCm_RealIdentificationApi_Slot.java | 208 +
.../PnIoCm_RealIdentificationApi_Subslot.java | 161 +
.../java/profinet/readwrite/PnIoCm_RtClass.java | 54 +
.../java/profinet/readwrite/PnIoCm_State.java | 54 +
.../java/profinet/readwrite/PnIoCm_Submodule.java | 348 +
.../profinet/readwrite/PnIoCm_SubmoduleType.java | 57 +
.../PnIoCm_Submodule_InputAndOutputData.java | 342 +
.../readwrite/PnIoCm_Submodule_InputData.java | 246 +
.../PnIoCm_Submodule_NoInputNoOutputData.java | 237 +
.../readwrite/PnIoCm_Submodule_OutputData.java | 246 +
.../readwrite/PnIo_CyclicServiceDataUnit.java | 148 +
.../java/profinet/readwrite/ProfinetDataType.java | 138 +
.../profinet/readwrite/ProfinetDeviceState.java | 61 +
.../java/profinet/readwrite/TlvChassisId.java | 160 +
.../java/profinet/readwrite/TlvIEEESubType.java | 55 +
.../readwrite/TlvIeee8023MacPhyConfigStatus.java | 189 +
.../readwrite/TlvIeee8023MaxFrameSize.java | 141 +
.../profinet/readwrite/TlvManagementAddress.java | 261 +
.../profinet/readwrite/TlvOrgSpecificIeee8023.java | 145 +
.../readwrite/TlvOrgSpecificIeee8023Unit.java | 156 +
.../profinet/readwrite/TlvOrgSpecificProfibus.java | 145 +
.../readwrite/TlvOrgSpecificProfibusUnit.java | 165 +
.../readwrite/TlvOrganizationSpecific.java | 151 +
.../readwrite/TlvOrganizationSpecificUnit.java | 150 +
.../profinet/readwrite/TlvPortDescription.java | 139 +
.../plc4x/java/profinet/readwrite/TlvPortId.java | 159 +
.../profinet/readwrite/TlvProfibusSubType.java | 57 +
.../readwrite/TlvProfibusSubTypeChassisMac.java | 145 +
.../readwrite/TlvProfibusSubTypeMeasuredDelay.java | 234 +
.../readwrite/TlvProfibusSubTypeMrpPortStatus.java | 164 +
.../readwrite/TlvProfibusSubTypePortStatus.java | 249 +
.../profinet/readwrite/TlvSystemCapabilities.java | 524 +
.../profinet/readwrite/TlvSystemDescription.java | 139 +
.../java/profinet/readwrite/TlvSystemName.java | 139 +
.../java/profinet/readwrite/TlvTimeToLive.java | 139 +
.../plc4x/java/profinet/readwrite/TlvType.java | 63 +
.../plc4x/java/profinet/readwrite/UserData.java | 155 +
.../apache/plc4x/java/profinet/readwrite/Uuid.java | 128 +
.../profinet/readwrite/VirtualLanPriority.java | 88 +
.../plc4x/java/simulated/readwrite/DataItem.java | 994 ++
.../plc4x/java/simulated/readwrite/Dummy.java | 134 +
.../readwrite/SimulatedDataTypeSizes.java | 107 +
1361 files changed, 299165 insertions(+)
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/AbstractTypeTest.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/AbstractTypeTest.java
new file mode 100644
index 0000000000..d7ede560f5
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/AbstractTypeTest.java
@@ -0,0 +1,166 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public abstract class AbstractTypeTest implements Message {
+
+ // Abstract accessors for discriminator values.
+
+ // Properties.
+ protected final short simpleField;
+
+ public AbstractTypeTest(short simpleField) {
+ super();
+ this.simpleField = simpleField;
+ }
+
+ public abstract boolean getAbstractBitField();
+
+ public abstract byte getAbstractIntField();
+
+ public abstract short getAbstractUintField();
+
+ public abstract float getAbstractFloatField();
+
+ public abstract double getAbstractDoubleField();
+
+ public abstract String getAbstractStringField();
+
+ public short getSimpleField() {
+ return simpleField;
+ }
+
+ protected abstract void serializeAbstractTypeTestChild(WriteBuffer writeBuffer)
+ throws SerializationException;
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("AbstractTypeTest");
+
+ // Simple Field (simpleField)
+ writeSimpleField("simpleField", simpleField, writeUnsignedShort(writeBuffer, 8));
+
+ // Switch field (Serialize the sub-type)
+ serializeAbstractTypeTestChild(writeBuffer);
+
+ writeBuffer.popContext("AbstractTypeTest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ AbstractTypeTest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpleField)
+ lengthInBits += 8;
+
+ // Length of sub-type elements will be added by sub-type...
+
+ return lengthInBits;
+ }
+
+ public static AbstractTypeTest staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static AbstractTypeTest staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("AbstractTypeTest");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpleField = readSimpleField("simpleField", readUnsignedShort(readBuffer, 8));
+
+ // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+ AbstractTypeTestBuilder builder = null;
+ if (EvaluationHelper.equals(simpleField, (short) 0)) {
+ builder = AbstractTypeTestSubType.staticParseAbstractTypeTestBuilder(readBuffer);
+ }
+ if (builder == null) {
+ throw new ParseException(
+ "Unsupported case for discriminated type"
+ + " parameters ["
+ + "simpleField="
+ + simpleField
+ + "]");
+ }
+
+ readBuffer.closeContext("AbstractTypeTest");
+ // Create the instance
+ AbstractTypeTest _abstractTypeTest = builder.build(simpleField);
+ return _abstractTypeTest;
+ }
+
+ public interface AbstractTypeTestBuilder {
+ AbstractTypeTest build(short simpleField);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof AbstractTypeTest)) {
+ return false;
+ }
+ AbstractTypeTest that = (AbstractTypeTest) o;
+ return (getSimpleField() == that.getSimpleField()) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getSimpleField());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/AbstractTypeTestSubType.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/AbstractTypeTestSubType.java
new file mode 100644
index 0000000000..38a79a9884
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/AbstractTypeTestSubType.java
@@ -0,0 +1,260 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class AbstractTypeTestSubType extends AbstractTypeTest implements Message {
+
+ // Accessors for discriminator values.
+
+ // Properties.
+ protected final boolean abstractBitField;
+ protected final byte abstractIntField;
+ protected final short abstractUintField;
+ protected final float abstractFloatField;
+ protected final double abstractDoubleField;
+ protected final String abstractStringField;
+
+ public AbstractTypeTestSubType(
+ short simpleField,
+ boolean abstractBitField,
+ byte abstractIntField,
+ short abstractUintField,
+ float abstractFloatField,
+ double abstractDoubleField,
+ String abstractStringField) {
+ super(simpleField);
+ this.abstractBitField = abstractBitField;
+ this.abstractIntField = abstractIntField;
+ this.abstractUintField = abstractUintField;
+ this.abstractFloatField = abstractFloatField;
+ this.abstractDoubleField = abstractDoubleField;
+ this.abstractStringField = abstractStringField;
+ }
+
+ public boolean getAbstractBitField() {
+ return abstractBitField;
+ }
+
+ public byte getAbstractIntField() {
+ return abstractIntField;
+ }
+
+ public short getAbstractUintField() {
+ return abstractUintField;
+ }
+
+ public float getAbstractFloatField() {
+ return abstractFloatField;
+ }
+
+ public double getAbstractDoubleField() {
+ return abstractDoubleField;
+ }
+
+ public String getAbstractStringField() {
+ return abstractStringField;
+ }
+
+ @Override
+ protected void serializeAbstractTypeTestChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("AbstractTypeTestSubType");
+
+ // Simple Field (abstractBitField)
+ writeSimpleField("abstractBitField", abstractBitField, writeBoolean(writeBuffer));
+
+ // Simple Field (abstractIntField)
+ writeSimpleField("abstractIntField", abstractIntField, writeSignedByte(writeBuffer, 8));
+
+ // Simple Field (abstractUintField)
+ writeSimpleField("abstractUintField", abstractUintField, writeUnsignedShort(writeBuffer, 8));
+
+ // Simple Field (abstractFloatField)
+ writeSimpleField("abstractFloatField", abstractFloatField, writeFloat(writeBuffer, 32));
+
+ // Simple Field (abstractDoubleField)
+ writeSimpleField("abstractDoubleField", abstractDoubleField, writeDouble(writeBuffer, 64));
+
+ // Simple Field (abstractStringField)
+ writeSimpleField("abstractStringField", abstractStringField, writeString(writeBuffer, 8));
+
+ writeBuffer.popContext("AbstractTypeTestSubType");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ AbstractTypeTestSubType _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (abstractBitField)
+ lengthInBits += 1;
+
+ // Simple field (abstractIntField)
+ lengthInBits += 8;
+
+ // Simple field (abstractUintField)
+ lengthInBits += 8;
+
+ // Simple field (abstractFloatField)
+ lengthInBits += 32;
+
+ // Simple field (abstractDoubleField)
+ lengthInBits += 64;
+
+ // Simple field (abstractStringField)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static AbstractTypeTestBuilder staticParseAbstractTypeTestBuilder(ReadBuffer readBuffer)
+ throws ParseException {
+ readBuffer.pullContext("AbstractTypeTestSubType");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ boolean abstractBitField = readSimpleField("abstractBitField", readBoolean(readBuffer));
+
+ byte abstractIntField = readSimpleField("abstractIntField", readSignedByte(readBuffer, 8));
+
+ short abstractUintField =
+ readSimpleField("abstractUintField", readUnsignedShort(readBuffer, 8));
+
+ float abstractFloatField = readSimpleField("abstractFloatField", readFloat(readBuffer, 32));
+
+ double abstractDoubleField = readSimpleField("abstractDoubleField", readDouble(readBuffer, 64));
+
+ String abstractStringField = readSimpleField("abstractStringField", readString(readBuffer, 8));
+
+ readBuffer.closeContext("AbstractTypeTestSubType");
+ // Create the instance
+ return new AbstractTypeTestSubTypeBuilderImpl(
+ abstractBitField,
+ abstractIntField,
+ abstractUintField,
+ abstractFloatField,
+ abstractDoubleField,
+ abstractStringField);
+ }
+
+ public static class AbstractTypeTestSubTypeBuilderImpl
+ implements AbstractTypeTest.AbstractTypeTestBuilder {
+ private final boolean abstractBitField;
+ private final byte abstractIntField;
+ private final short abstractUintField;
+ private final float abstractFloatField;
+ private final double abstractDoubleField;
+ private final String abstractStringField;
+
+ public AbstractTypeTestSubTypeBuilderImpl(
+ boolean abstractBitField,
+ byte abstractIntField,
+ short abstractUintField,
+ float abstractFloatField,
+ double abstractDoubleField,
+ String abstractStringField) {
+ this.abstractBitField = abstractBitField;
+ this.abstractIntField = abstractIntField;
+ this.abstractUintField = abstractUintField;
+ this.abstractFloatField = abstractFloatField;
+ this.abstractDoubleField = abstractDoubleField;
+ this.abstractStringField = abstractStringField;
+ }
+
+ public AbstractTypeTestSubType build(short simpleField) {
+ AbstractTypeTestSubType abstractTypeTestSubType =
+ new AbstractTypeTestSubType(
+ simpleField,
+ abstractBitField,
+ abstractIntField,
+ abstractUintField,
+ abstractFloatField,
+ abstractDoubleField,
+ abstractStringField);
+ return abstractTypeTestSubType;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof AbstractTypeTestSubType)) {
+ return false;
+ }
+ AbstractTypeTestSubType that = (AbstractTypeTestSubType) o;
+ return (getAbstractBitField() == that.getAbstractBitField())
+ && (getAbstractIntField() == that.getAbstractIntField())
+ && (getAbstractUintField() == that.getAbstractUintField())
+ && (getAbstractFloatField() == that.getAbstractFloatField())
+ && (getAbstractDoubleField() == that.getAbstractDoubleField())
+ && (getAbstractStringField() == that.getAbstractStringField())
+ && super.equals(that)
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ super.hashCode(),
+ getAbstractBitField(),
+ getAbstractIntField(),
+ getAbstractUintField(),
+ getAbstractFloatField(),
+ getAbstractDoubleField(),
+ getAbstractStringField());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ArrayTypeTest.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ArrayTypeTest.java
new file mode 100644
index 0000000000..a530a73ff1
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ArrayTypeTest.java
@@ -0,0 +1,248 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class ArrayTypeTest implements Message {
+
+ // Properties.
+ protected final List<Boolean> bitField;
+ protected final byte[] byteField;
+ protected final List<Byte> intField;
+ protected final List<Short> uintField;
+ protected final List<Float> floatField;
+ protected final List<Double> doubleField;
+ protected final List<String> stringField;
+
+ public ArrayTypeTest(
+ List<Boolean> bitField,
+ byte[] byteField,
+ List<Byte> intField,
+ List<Short> uintField,
+ List<Float> floatField,
+ List<Double> doubleField,
+ List<String> stringField) {
+ super();
+ this.bitField = bitField;
+ this.byteField = byteField;
+ this.intField = intField;
+ this.uintField = uintField;
+ this.floatField = floatField;
+ this.doubleField = doubleField;
+ this.stringField = stringField;
+ }
+
+ public List<Boolean> getBitField() {
+ return bitField;
+ }
+
+ public byte[] getByteField() {
+ return byteField;
+ }
+
+ public List<Byte> getIntField() {
+ return intField;
+ }
+
+ public List<Short> getUintField() {
+ return uintField;
+ }
+
+ public List<Float> getFloatField() {
+ return floatField;
+ }
+
+ public List<Double> getDoubleField() {
+ return doubleField;
+ }
+
+ public List<String> getStringField() {
+ return stringField;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("ArrayTypeTest");
+
+ // Array Field (bitField)
+ writeSimpleTypeArrayField("bitField", bitField, writeBoolean(writeBuffer));
+
+ // Array Field (byteField)
+ writeByteArrayField("byteField", byteField, writeByteArray(writeBuffer, 8));
+
+ // Array Field (intField)
+ writeSimpleTypeArrayField("intField", intField, writeSignedByte(writeBuffer, 8));
+
+ // Array Field (uintField)
+ writeSimpleTypeArrayField("uintField", uintField, writeUnsignedShort(writeBuffer, 8));
+
+ // Array Field (floatField)
+ writeSimpleTypeArrayField("floatField", floatField, writeFloat(writeBuffer, 32));
+
+ // Array Field (doubleField)
+ writeSimpleTypeArrayField("doubleField", doubleField, writeDouble(writeBuffer, 64));
+
+ // Array Field (stringField)
+ writeSimpleTypeArrayField("stringField", stringField, writeString(writeBuffer, 8));
+
+ writeBuffer.popContext("ArrayTypeTest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ ArrayTypeTest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Array field
+ if (bitField != null) {
+ lengthInBits += 1 * bitField.size();
+ }
+
+ // Array field
+ if (byteField != null) {
+ lengthInBits += 8 * byteField.length;
+ }
+
+ // Array field
+ if (intField != null) {
+ lengthInBits += 8 * intField.size();
+ }
+
+ // Array field
+ if (uintField != null) {
+ lengthInBits += 8 * uintField.size();
+ }
+
+ // Array field
+ if (floatField != null) {
+ lengthInBits += 32 * floatField.size();
+ }
+
+ // Array field
+ if (doubleField != null) {
+ lengthInBits += 64 * doubleField.size();
+ }
+
+ // Array field
+ if (stringField != null) {
+ lengthInBits += 8 * stringField.size();
+ }
+
+ return lengthInBits;
+ }
+
+ public static ArrayTypeTest staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static ArrayTypeTest staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ArrayTypeTest");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ List<Boolean> bitField = readCountArrayField("bitField", readBoolean(readBuffer), 5);
+
+ byte[] byteField = readBuffer.readByteArray("byteField", Math.toIntExact(5));
+
+ List<Byte> intField = readCountArrayField("intField", readSignedByte(readBuffer, 8), 5);
+
+ List<Short> uintField = readCountArrayField("uintField", readUnsignedShort(readBuffer, 8), 5);
+
+ List<Float> floatField = readCountArrayField("floatField", readFloat(readBuffer, 32), 5);
+
+ List<Double> doubleField = readCountArrayField("doubleField", readDouble(readBuffer, 64), 5);
+
+ List<String> stringField = readCountArrayField("stringField", readString(readBuffer, 8), 5);
+
+ readBuffer.closeContext("ArrayTypeTest");
+ // Create the instance
+ ArrayTypeTest _arrayTypeTest;
+ _arrayTypeTest =
+ new ArrayTypeTest(
+ bitField, byteField, intField, uintField, floatField, doubleField, stringField);
+ return _arrayTypeTest;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ArrayTypeTest)) {
+ return false;
+ }
+ ArrayTypeTest that = (ArrayTypeTest) o;
+ return (getBitField() == that.getBitField())
+ && (getByteField() == that.getByteField())
+ && (getIntField() == that.getIntField())
+ && (getUintField() == that.getUintField())
+ && (getFloatField() == that.getFloatField())
+ && (getDoubleField() == that.getDoubleField())
+ && (getStringField() == that.getStringField())
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ getBitField(),
+ getByteField(),
+ getIntField(),
+ getUintField(),
+ getFloatField(),
+ getDoubleField(),
+ getStringField());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/CheckSumTypeTest.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/CheckSumTypeTest.java
new file mode 100644
index 0000000000..5226c1af8f
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/CheckSumTypeTest.java
@@ -0,0 +1,141 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class CheckSumTypeTest implements Message {
+
+ public CheckSumTypeTest() {
+ super();
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("CheckSumTypeTest");
+
+ // Checksum Field (checksum) (Calculated)
+ writeChecksumField(
+ "intField",
+ (byte) (org.apache.plc4x.java.test.readwrite.utils.StaticHelper.crcInt8(-(23))),
+ writeSignedByte(writeBuffer, 8));
+
+ // Checksum Field (checksum) (Calculated)
+ writeChecksumField(
+ "uintField",
+ (short) (org.apache.plc4x.java.test.readwrite.utils.StaticHelper.crcUint8(42)),
+ writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("CheckSumTypeTest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ CheckSumTypeTest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Checksum Field (checksum)
+ lengthInBits += 8;
+
+ // Checksum Field (checksum)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static CheckSumTypeTest staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static CheckSumTypeTest staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("CheckSumTypeTest");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ byte intField =
+ readChecksumField(
+ "intField",
+ readSignedByte(readBuffer, 8),
+ (byte) (org.apache.plc4x.java.test.readwrite.utils.StaticHelper.crcInt8(-(23))));
+
+ short uintField =
+ readChecksumField(
+ "uintField",
+ readUnsignedShort(readBuffer, 8),
+ (short) (org.apache.plc4x.java.test.readwrite.utils.StaticHelper.crcUint8(42)));
+
+ readBuffer.closeContext("CheckSumTypeTest");
+ // Create the instance
+ CheckSumTypeTest _checkSumTypeTest;
+ _checkSumTypeTest = new CheckSumTypeTest();
+ return _checkSumTypeTest;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof CheckSumTypeTest)) {
+ return false;
+ }
+ CheckSumTypeTest that = (CheckSumTypeTest) o;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash();
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ComplexOfComplexUsageA.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ComplexOfComplexUsageA.java
new file mode 100644
index 0000000000..99f01237dd
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ComplexOfComplexUsageA.java
@@ -0,0 +1,131 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class ComplexOfComplexUsageA implements Message {
+
+ // Properties.
+ protected final ComplexOfComplexUsageB b;
+
+ public ComplexOfComplexUsageA(ComplexOfComplexUsageB b) {
+ super();
+ this.b = b;
+ }
+
+ public ComplexOfComplexUsageB getB() {
+ return b;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("ComplexOfComplexUsageA");
+
+ // Simple Field (b)
+ writeSimpleField("b", b, new DataWriterComplexDefault<>(writeBuffer));
+
+ writeBuffer.popContext("ComplexOfComplexUsageA");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ ComplexOfComplexUsageA _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (b)
+ lengthInBits += b.getLengthInBits();
+
+ return lengthInBits;
+ }
+
+ public static ComplexOfComplexUsageA staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static ComplexOfComplexUsageA staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ComplexOfComplexUsageA");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ ComplexOfComplexUsageB b =
+ readSimpleField(
+ "b",
+ new DataReaderComplexDefault<>(
+ () -> ComplexOfComplexUsageB.staticParse(readBuffer), readBuffer));
+
+ readBuffer.closeContext("ComplexOfComplexUsageA");
+ // Create the instance
+ ComplexOfComplexUsageA _complexOfComplexUsageA;
+ _complexOfComplexUsageA = new ComplexOfComplexUsageA(b);
+ return _complexOfComplexUsageA;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ComplexOfComplexUsageA)) {
+ return false;
+ }
+ ComplexOfComplexUsageA that = (ComplexOfComplexUsageA) o;
+ return (getB() == that.getB()) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getB());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ComplexOfComplexUsageB.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ComplexOfComplexUsageB.java
new file mode 100644
index 0000000000..6408dcf20d
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ComplexOfComplexUsageB.java
@@ -0,0 +1,158 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class ComplexOfComplexUsageB implements Message {
+
+ // Properties.
+ protected final ComplexOfComplexUsageC c;
+ protected final List<ComplexOfComplexUsageD> ds;
+
+ public ComplexOfComplexUsageB(ComplexOfComplexUsageC c, List<ComplexOfComplexUsageD> ds) {
+ super();
+ this.c = c;
+ this.ds = ds;
+ }
+
+ public ComplexOfComplexUsageC getC() {
+ return c;
+ }
+
+ public List<ComplexOfComplexUsageD> getDs() {
+ return ds;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("ComplexOfComplexUsageB");
+
+ // Optional Field (c) (Can be skipped, if the value is null)
+ writeOptionalField("c", c, new DataWriterComplexDefault<>(writeBuffer));
+
+ // Array Field (ds)
+ writeComplexTypeArrayField("ds", ds, writeBuffer);
+
+ writeBuffer.popContext("ComplexOfComplexUsageB");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ ComplexOfComplexUsageB _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Optional Field (c)
+ if (c != null) {
+ lengthInBits += c.getLengthInBits();
+ }
+
+ // Array field
+ if (ds != null) {
+ int i = 0;
+ for (ComplexOfComplexUsageD element : ds) {
+ ThreadLocalHelper.lastItemThreadLocal.set(++i >= ds.size());
+ lengthInBits += element.getLengthInBits();
+ }
+ }
+
+ return lengthInBits;
+ }
+
+ public static ComplexOfComplexUsageB staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static ComplexOfComplexUsageB staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ComplexOfComplexUsageB");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ ComplexOfComplexUsageC c =
+ readOptionalField(
+ "c",
+ new DataReaderComplexDefault<>(
+ () -> ComplexOfComplexUsageC.staticParse(readBuffer), readBuffer));
+
+ List<ComplexOfComplexUsageD> ds =
+ readCountArrayField(
+ "ds",
+ new DataReaderComplexDefault<>(
+ () -> ComplexOfComplexUsageD.staticParse(readBuffer), readBuffer),
+ 5);
+
+ readBuffer.closeContext("ComplexOfComplexUsageB");
+ // Create the instance
+ ComplexOfComplexUsageB _complexOfComplexUsageB;
+ _complexOfComplexUsageB = new ComplexOfComplexUsageB(c, ds);
+ return _complexOfComplexUsageB;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ComplexOfComplexUsageB)) {
+ return false;
+ }
+ ComplexOfComplexUsageB that = (ComplexOfComplexUsageB) o;
+ return (getC() == that.getC()) && (getDs() == that.getDs()) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getC(), getDs());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ComplexOfComplexUsageC.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ComplexOfComplexUsageC.java
new file mode 100644
index 0000000000..b0568be162
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ComplexOfComplexUsageC.java
@@ -0,0 +1,127 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class ComplexOfComplexUsageC implements Message {
+
+ // Properties.
+ protected final short irrelevant;
+
+ public ComplexOfComplexUsageC(short irrelevant) {
+ super();
+ this.irrelevant = irrelevant;
+ }
+
+ public short getIrrelevant() {
+ return irrelevant;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("ComplexOfComplexUsageC");
+
+ // Simple Field (irrelevant)
+ writeSimpleField("irrelevant", irrelevant, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("ComplexOfComplexUsageC");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ ComplexOfComplexUsageC _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (irrelevant)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static ComplexOfComplexUsageC staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static ComplexOfComplexUsageC staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ComplexOfComplexUsageC");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short irrelevant = readSimpleField("irrelevant", readUnsignedShort(readBuffer, 8));
+
+ readBuffer.closeContext("ComplexOfComplexUsageC");
+ // Create the instance
+ ComplexOfComplexUsageC _complexOfComplexUsageC;
+ _complexOfComplexUsageC = new ComplexOfComplexUsageC(irrelevant);
+ return _complexOfComplexUsageC;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ComplexOfComplexUsageC)) {
+ return false;
+ }
+ ComplexOfComplexUsageC that = (ComplexOfComplexUsageC) o;
+ return (getIrrelevant() == that.getIrrelevant()) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getIrrelevant());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ComplexOfComplexUsageD.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ComplexOfComplexUsageD.java
new file mode 100644
index 0000000000..a1238d79b5
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ComplexOfComplexUsageD.java
@@ -0,0 +1,127 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class ComplexOfComplexUsageD implements Message {
+
+ // Properties.
+ protected final short irrelevant;
+
+ public ComplexOfComplexUsageD(short irrelevant) {
+ super();
+ this.irrelevant = irrelevant;
+ }
+
+ public short getIrrelevant() {
+ return irrelevant;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("ComplexOfComplexUsageD");
+
+ // Simple Field (irrelevant)
+ writeSimpleField("irrelevant", irrelevant, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("ComplexOfComplexUsageD");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ ComplexOfComplexUsageD _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (irrelevant)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static ComplexOfComplexUsageD staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static ComplexOfComplexUsageD staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ComplexOfComplexUsageD");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short irrelevant = readSimpleField("irrelevant", readUnsignedShort(readBuffer, 8));
+
+ readBuffer.closeContext("ComplexOfComplexUsageD");
+ // Create the instance
+ ComplexOfComplexUsageD _complexOfComplexUsageD;
+ _complexOfComplexUsageD = new ComplexOfComplexUsageD(irrelevant);
+ return _complexOfComplexUsageD;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ComplexOfComplexUsageD)) {
+ return false;
+ }
+ ComplexOfComplexUsageD that = (ComplexOfComplexUsageD) o;
+ return (getIrrelevant() == that.getIrrelevant()) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getIrrelevant());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ConstTypeTest.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ConstTypeTest.java
new file mode 100644
index 0000000000..6dbd68b6b2
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ConstTypeTest.java
@@ -0,0 +1,196 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class ConstTypeTest implements Message {
+
+ // Constant values.
+ public static final Boolean BITFIELD = true;
+ public static final Byte INTFIELD = 100;
+ public static final Short UINTFIELD = 100;
+ public static final Float FLOATFIELD = 100.0F;
+ public static final Double DOUBLEFIELD = 100.0;
+ public static final String STRINGFIELD = "HELLO TODDY";
+
+ public ConstTypeTest() {
+ super();
+ }
+
+ public boolean getBitField() {
+ return BITFIELD;
+ }
+
+ public byte getIntField() {
+ return INTFIELD;
+ }
+
+ public short getUintField() {
+ return UINTFIELD;
+ }
+
+ public float getFloatField() {
+ return FLOATFIELD;
+ }
+
+ public double getDoubleField() {
+ return DOUBLEFIELD;
+ }
+
+ public String getStringField() {
+ return STRINGFIELD;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("ConstTypeTest");
+
+ // Const Field (bitField)
+ writeConstField("bitField", BITFIELD, writeBoolean(writeBuffer));
+
+ // Const Field (intField)
+ writeConstField("intField", INTFIELD, writeSignedByte(writeBuffer, 8));
+
+ // Const Field (uintField)
+ writeConstField("uintField", UINTFIELD, writeUnsignedShort(writeBuffer, 8));
+
+ // Const Field (floatField)
+ writeConstField("floatField", FLOATFIELD, writeFloat(writeBuffer, 32));
+
+ // Const Field (doubleField)
+ writeConstField("doubleField", DOUBLEFIELD, writeDouble(writeBuffer, 64));
+
+ // Const Field (stringField)
+ writeConstField("stringField", STRINGFIELD, writeString(writeBuffer, 8));
+
+ writeBuffer.popContext("ConstTypeTest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ ConstTypeTest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Const Field (bitField)
+ lengthInBits += 1;
+
+ // Const Field (intField)
+ lengthInBits += 8;
+
+ // Const Field (uintField)
+ lengthInBits += 8;
+
+ // Const Field (floatField)
+ lengthInBits += 32;
+
+ // Const Field (doubleField)
+ lengthInBits += 64;
+
+ // Const Field (stringField)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static ConstTypeTest staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static ConstTypeTest staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ConstTypeTest");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ boolean bitField = readConstField("bitField", readBoolean(readBuffer), ConstTypeTest.BITFIELD);
+
+ byte intField =
+ readConstField("intField", readSignedByte(readBuffer, 8), ConstTypeTest.INTFIELD);
+
+ short uintField =
+ readConstField("uintField", readUnsignedShort(readBuffer, 8), ConstTypeTest.UINTFIELD);
+
+ float floatField =
+ readConstField("floatField", readFloat(readBuffer, 32), ConstTypeTest.FLOATFIELD);
+
+ double doubleField =
+ readConstField("doubleField", readDouble(readBuffer, 64), ConstTypeTest.DOUBLEFIELD);
+
+ String stringField =
+ readConstField("stringField", readString(readBuffer, 8), ConstTypeTest.STRINGFIELD);
+
+ readBuffer.closeContext("ConstTypeTest");
+ // Create the instance
+ ConstTypeTest _constTypeTest;
+ _constTypeTest = new ConstTypeTest();
+ return _constTypeTest;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ConstTypeTest)) {
+ return false;
+ }
+ ConstTypeTest that = (ConstTypeTest) o;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash();
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/DataIOType.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/DataIOType.java
new file mode 100644
index 0000000000..4872ae7fd4
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/DataIOType.java
@@ -0,0 +1,110 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.generation.ByteOrder;
+import org.apache.plc4x.java.spi.generation.EvaluationHelper;
+import org.apache.plc4x.java.spi.generation.ParseException;
+import org.apache.plc4x.java.spi.generation.ReadBuffer;
+import org.apache.plc4x.java.spi.generation.SerializationException;
+import org.apache.plc4x.java.spi.generation.WriteBuffer;
+import org.apache.plc4x.java.spi.values.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class DataIOType {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(DataIOType.class);
+
+ public static PlcValue staticParse(ReadBuffer readBuffer, EnumType dataType)
+ throws ParseException {
+ if (EvaluationHelper.equals(dataType, EnumType.BOOL)) { // BOOL
+
+ // Simple Field (value)
+ Boolean value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readBit("");
+
+ return new PlcBOOL(value);
+ } else if (EvaluationHelper.equals(dataType, EnumType.UINT)) { // USINT
+
+ // Simple Field (value)
+ Short value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedShort("", 8);
+
+ return new PlcUSINT(value);
+ } else if (EvaluationHelper.equals(dataType, EnumType.INT)) { // UINT
+
+ // Simple Field (value)
+ Integer value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readUnsignedInt("", 16);
+
+ return new PlcUINT(value);
+ }
+ return null;
+ }
+
+ public static void staticSerialize(WriteBuffer writeBuffer, PlcValue _value, EnumType dataType)
+ throws SerializationException {
+ staticSerialize(writeBuffer, _value, dataType, ByteOrder.BIG_ENDIAN);
+ }
+
+ public static void staticSerialize(
+ WriteBuffer writeBuffer, PlcValue _value, EnumType dataType, ByteOrder byteOrder)
+ throws SerializationException {
+ if (EvaluationHelper.equals(dataType, EnumType.BOOL)) { // BOOL
+ // Simple Field (value)
+ boolean value = (boolean) _value.getBoolean();
+ /*TODO: migrate me*/
+ /*TODO: migrate me*/ writeBuffer.writeBit("", (boolean) (value));
+ } else if (EvaluationHelper.equals(dataType, EnumType.UINT)) { // USINT
+ // Simple Field (value)
+ short value = (short) _value.getShort();
+ /*TODO: migrate me*/
+ /*TODO: migrate me*/ writeBuffer.writeUnsignedShort("", 8, ((Number) (value)).shortValue());
+ } else if (EvaluationHelper.equals(dataType, EnumType.INT)) { // UINT
+ // Simple Field (value)
+ int value = (int) _value.getInt();
+ /*TODO: migrate me*/
+ /*TODO: migrate me*/ writeBuffer.writeUnsignedInt("", 16, ((Number) (value)).intValue());
+ }
+ }
+
+ public static int getLengthInBytes(PlcValue _value, EnumType dataType) {
+ return (int) Math.ceil((float) getLengthInBits(_value, dataType) / 8.0);
+ }
+
+ public static int getLengthInBits(PlcValue _value, EnumType dataType) {
+ int sizeInBits = 0;
+ if (EvaluationHelper.equals(dataType, EnumType.BOOL)) { // BOOL
+ // Simple Field (value)
+ sizeInBits += 1;
+ } else if (EvaluationHelper.equals(dataType, EnumType.UINT)) { // USINT
+ // Simple Field (value)
+ sizeInBits += 8;
+ } else if (EvaluationHelper.equals(dataType, EnumType.INT)) { // UINT
+ // Simple Field (value)
+ sizeInBits += 16;
+ }
+ return sizeInBits;
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedType.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedType.java
new file mode 100644
index 0000000000..2ad3c735bf
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedType.java
@@ -0,0 +1,155 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public abstract class EnumDiscriminatedType implements Message {
+
+ // Abstract accessors for discriminator values.
+ public abstract EnumType getDiscr();
+
+ public EnumDiscriminatedType() {
+ super();
+ }
+
+ protected abstract void serializeEnumDiscriminatedTypeChild(WriteBuffer writeBuffer)
+ throws SerializationException;
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("EnumDiscriminatedType");
+
+ // Discriminator Field (discr) (Used as input to a switch field)
+ writeDiscriminatorEnumField(
+ "discr",
+ "EnumType",
+ getDiscr(),
+ new DataWriterEnumDefault<>(
+ EnumType::getValue, EnumType::name, writeUnsignedShort(writeBuffer, 8)));
+
+ // Switch field (Serialize the sub-type)
+ serializeEnumDiscriminatedTypeChild(writeBuffer);
+
+ writeBuffer.popContext("EnumDiscriminatedType");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ EnumDiscriminatedType _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Discriminator Field (discr)
+ lengthInBits += 8;
+
+ // Length of sub-type elements will be added by sub-type...
+
+ return lengthInBits;
+ }
+
+ public static EnumDiscriminatedType staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static EnumDiscriminatedType staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("EnumDiscriminatedType");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ EnumType discr =
+ readDiscriminatorField(
+ "discr",
+ new DataReaderEnumDefault<>(EnumType::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+ // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+ EnumDiscriminatedTypeBuilder builder = null;
+ if (EvaluationHelper.equals(discr, EnumType.BOOL)) {
+ builder = EnumDiscriminatedTypeA.staticParseEnumDiscriminatedTypeBuilder(readBuffer);
+ } else if (EvaluationHelper.equals(discr, EnumType.UINT)) {
+ builder = EnumDiscriminatedTypeB.staticParseEnumDiscriminatedTypeBuilder(readBuffer);
+ } else if (EvaluationHelper.equals(discr, EnumType.INT)) {
+ builder = EnumDiscriminatedTypeC.staticParseEnumDiscriminatedTypeBuilder(readBuffer);
+ }
+ if (builder == null) {
+ throw new ParseException(
+ "Unsupported case for discriminated type" + " parameters [" + "discr=" + discr + "]");
+ }
+
+ readBuffer.closeContext("EnumDiscriminatedType");
+ // Create the instance
+ EnumDiscriminatedType _enumDiscriminatedType = builder.build();
+ return _enumDiscriminatedType;
+ }
+
+ public interface EnumDiscriminatedTypeBuilder {
+ EnumDiscriminatedType build();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof EnumDiscriminatedType)) {
+ return false;
+ }
+ EnumDiscriminatedType that = (EnumDiscriminatedType) o;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash();
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeA.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeA.java
new file mode 100644
index 0000000000..c8dcb2aea0
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeA.java
@@ -0,0 +1,141 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class EnumDiscriminatedTypeA extends EnumDiscriminatedType implements Message {
+
+ // Accessors for discriminator values.
+ public EnumType getDiscr() {
+ return EnumType.BOOL;
+ }
+
+ // Properties.
+ protected final short simpA;
+
+ public EnumDiscriminatedTypeA(short simpA) {
+ super();
+ this.simpA = simpA;
+ }
+
+ public short getSimpA() {
+ return simpA;
+ }
+
+ @Override
+ protected void serializeEnumDiscriminatedTypeChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("EnumDiscriminatedTypeA");
+
+ // Simple Field (simpA)
+ writeSimpleField("simpA", simpA, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("EnumDiscriminatedTypeA");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ EnumDiscriminatedTypeA _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpA)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static EnumDiscriminatedTypeBuilder staticParseEnumDiscriminatedTypeBuilder(
+ ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("EnumDiscriminatedTypeA");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpA = readSimpleField("simpA", readUnsignedShort(readBuffer, 8));
+
+ readBuffer.closeContext("EnumDiscriminatedTypeA");
+ // Create the instance
+ return new EnumDiscriminatedTypeABuilderImpl(simpA);
+ }
+
+ public static class EnumDiscriminatedTypeABuilderImpl
+ implements EnumDiscriminatedType.EnumDiscriminatedTypeBuilder {
+ private final short simpA;
+
+ public EnumDiscriminatedTypeABuilderImpl(short simpA) {
+ this.simpA = simpA;
+ }
+
+ public EnumDiscriminatedTypeA build() {
+ EnumDiscriminatedTypeA enumDiscriminatedTypeA = new EnumDiscriminatedTypeA(simpA);
+ return enumDiscriminatedTypeA;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof EnumDiscriminatedTypeA)) {
+ return false;
+ }
+ EnumDiscriminatedTypeA that = (EnumDiscriminatedTypeA) o;
+ return (getSimpA() == that.getSimpA()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getSimpA());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeB.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeB.java
new file mode 100644
index 0000000000..e286ebce4c
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeB.java
@@ -0,0 +1,141 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class EnumDiscriminatedTypeB extends EnumDiscriminatedType implements Message {
+
+ // Accessors for discriminator values.
+ public EnumType getDiscr() {
+ return EnumType.UINT;
+ }
+
+ // Properties.
+ protected final short simpB;
+
+ public EnumDiscriminatedTypeB(short simpB) {
+ super();
+ this.simpB = simpB;
+ }
+
+ public short getSimpB() {
+ return simpB;
+ }
+
+ @Override
+ protected void serializeEnumDiscriminatedTypeChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("EnumDiscriminatedTypeB");
+
+ // Simple Field (simpB)
+ writeSimpleField("simpB", simpB, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("EnumDiscriminatedTypeB");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ EnumDiscriminatedTypeB _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpB)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static EnumDiscriminatedTypeBuilder staticParseEnumDiscriminatedTypeBuilder(
+ ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("EnumDiscriminatedTypeB");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpB = readSimpleField("simpB", readUnsignedShort(readBuffer, 8));
+
+ readBuffer.closeContext("EnumDiscriminatedTypeB");
+ // Create the instance
+ return new EnumDiscriminatedTypeBBuilderImpl(simpB);
+ }
+
+ public static class EnumDiscriminatedTypeBBuilderImpl
+ implements EnumDiscriminatedType.EnumDiscriminatedTypeBuilder {
+ private final short simpB;
+
+ public EnumDiscriminatedTypeBBuilderImpl(short simpB) {
+ this.simpB = simpB;
+ }
+
+ public EnumDiscriminatedTypeB build() {
+ EnumDiscriminatedTypeB enumDiscriminatedTypeB = new EnumDiscriminatedTypeB(simpB);
+ return enumDiscriminatedTypeB;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof EnumDiscriminatedTypeB)) {
+ return false;
+ }
+ EnumDiscriminatedTypeB that = (EnumDiscriminatedTypeB) o;
+ return (getSimpB() == that.getSimpB()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getSimpB());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeC.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeC.java
new file mode 100644
index 0000000000..b923ccac2b
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeC.java
@@ -0,0 +1,141 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class EnumDiscriminatedTypeC extends EnumDiscriminatedType implements Message {
+
+ // Accessors for discriminator values.
+ public EnumType getDiscr() {
+ return EnumType.INT;
+ }
+
+ // Properties.
+ protected final short simpC;
+
+ public EnumDiscriminatedTypeC(short simpC) {
+ super();
+ this.simpC = simpC;
+ }
+
+ public short getSimpC() {
+ return simpC;
+ }
+
+ @Override
+ protected void serializeEnumDiscriminatedTypeChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("EnumDiscriminatedTypeC");
+
+ // Simple Field (simpC)
+ writeSimpleField("simpC", simpC, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("EnumDiscriminatedTypeC");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ EnumDiscriminatedTypeC _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpC)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static EnumDiscriminatedTypeBuilder staticParseEnumDiscriminatedTypeBuilder(
+ ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("EnumDiscriminatedTypeC");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpC = readSimpleField("simpC", readUnsignedShort(readBuffer, 8));
+
+ readBuffer.closeContext("EnumDiscriminatedTypeC");
+ // Create the instance
+ return new EnumDiscriminatedTypeCBuilderImpl(simpC);
+ }
+
+ public static class EnumDiscriminatedTypeCBuilderImpl
+ implements EnumDiscriminatedType.EnumDiscriminatedTypeBuilder {
+ private final short simpC;
+
+ public EnumDiscriminatedTypeCBuilderImpl(short simpC) {
+ this.simpC = simpC;
+ }
+
+ public EnumDiscriminatedTypeC build() {
+ EnumDiscriminatedTypeC enumDiscriminatedTypeC = new EnumDiscriminatedTypeC(simpC);
+ return enumDiscriminatedTypeC;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof EnumDiscriminatedTypeC)) {
+ return false;
+ }
+ EnumDiscriminatedTypeC that = (EnumDiscriminatedTypeC) o;
+ return (getSimpC() == that.getSimpC()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getSimpC());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeMultiple.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeMultiple.java
new file mode 100644
index 0000000000..8ea49794d1
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeMultiple.java
@@ -0,0 +1,190 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public abstract class EnumDiscriminatedTypeMultiple implements Message {
+
+ // Abstract accessors for discriminator values.
+ public abstract EnumType getDiscr1();
+
+ public abstract EnumTypeInt getDiscr2();
+
+ public EnumDiscriminatedTypeMultiple() {
+ super();
+ }
+
+ protected abstract void serializeEnumDiscriminatedTypeMultipleChild(WriteBuffer writeBuffer)
+ throws SerializationException;
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("EnumDiscriminatedTypeMultiple");
+
+ // Discriminator Field (discr1) (Used as input to a switch field)
+ writeDiscriminatorEnumField(
+ "discr1",
+ "EnumType",
+ getDiscr1(),
+ new DataWriterEnumDefault<>(
+ EnumType::getValue, EnumType::name, writeUnsignedShort(writeBuffer, 8)));
+
+ // Discriminator Field (discr2) (Used as input to a switch field)
+ writeDiscriminatorEnumField(
+ "discr2",
+ "EnumTypeInt",
+ getDiscr2(),
+ new DataWriterEnumDefault<>(
+ EnumTypeInt::getValue, EnumTypeInt::name, writeSignedByte(writeBuffer, 8)));
+
+ // Switch field (Serialize the sub-type)
+ serializeEnumDiscriminatedTypeMultipleChild(writeBuffer);
+
+ writeBuffer.popContext("EnumDiscriminatedTypeMultiple");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ EnumDiscriminatedTypeMultiple _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Discriminator Field (discr1)
+ lengthInBits += 8;
+
+ // Discriminator Field (discr2)
+ lengthInBits += 8;
+
+ // Length of sub-type elements will be added by sub-type...
+
+ return lengthInBits;
+ }
+
+ public static EnumDiscriminatedTypeMultiple staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static EnumDiscriminatedTypeMultiple staticParse(ReadBuffer readBuffer)
+ throws ParseException {
+ readBuffer.pullContext("EnumDiscriminatedTypeMultiple");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ EnumType discr1 =
+ readDiscriminatorField(
+ "discr1",
+ new DataReaderEnumDefault<>(EnumType::enumForValue, readUnsignedShort(readBuffer, 8)));
+
+ EnumTypeInt discr2 =
+ readDiscriminatorField(
+ "discr2",
+ new DataReaderEnumDefault<>(EnumTypeInt::enumForValue, readSignedByte(readBuffer, 8)));
+
+ // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+ EnumDiscriminatedTypeMultipleBuilder builder = null;
+ if (EvaluationHelper.equals(discr1, EnumType.BOOL)
+ && EvaluationHelper.equals(discr2, EnumTypeInt.BOOLINT)) {
+ builder =
+ EnumDiscriminatedTypeMultipleA.staticParseEnumDiscriminatedTypeMultipleBuilder(
+ readBuffer);
+ } else if (EvaluationHelper.equals(discr1, EnumType.UINT)
+ && EvaluationHelper.equals(discr2, EnumTypeInt.UINTINT)) {
+ builder =
+ EnumDiscriminatedTypeMultipleB.staticParseEnumDiscriminatedTypeMultipleBuilder(
+ readBuffer);
+ } else if (EvaluationHelper.equals(discr1, EnumType.INT)
+ && EvaluationHelper.equals(discr2, EnumTypeInt.INTINT)) {
+ builder =
+ EnumDiscriminatedTypeMultipleC.staticParseEnumDiscriminatedTypeMultipleBuilder(
+ readBuffer);
+ }
+ if (builder == null) {
+ throw new ParseException(
+ "Unsupported case for discriminated type"
+ + " parameters ["
+ + "discr1="
+ + discr1
+ + " "
+ + "discr2="
+ + discr2
+ + "]");
+ }
+
+ readBuffer.closeContext("EnumDiscriminatedTypeMultiple");
+ // Create the instance
+ EnumDiscriminatedTypeMultiple _enumDiscriminatedTypeMultiple = builder.build();
+ return _enumDiscriminatedTypeMultiple;
+ }
+
+ public interface EnumDiscriminatedTypeMultipleBuilder {
+ EnumDiscriminatedTypeMultiple build();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof EnumDiscriminatedTypeMultiple)) {
+ return false;
+ }
+ EnumDiscriminatedTypeMultiple that = (EnumDiscriminatedTypeMultiple) o;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash();
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeMultipleA.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeMultipleA.java
new file mode 100644
index 0000000000..df93defe84
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeMultipleA.java
@@ -0,0 +1,147 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class EnumDiscriminatedTypeMultipleA extends EnumDiscriminatedTypeMultiple
+ implements Message {
+
+ // Accessors for discriminator values.
+ public EnumType getDiscr1() {
+ return EnumType.BOOL;
+ }
+
+ public EnumTypeInt getDiscr2() {
+ return EnumTypeInt.BOOLINT;
+ }
+
+ // Properties.
+ protected final short simpA;
+
+ public EnumDiscriminatedTypeMultipleA(short simpA) {
+ super();
+ this.simpA = simpA;
+ }
+
+ public short getSimpA() {
+ return simpA;
+ }
+
+ @Override
+ protected void serializeEnumDiscriminatedTypeMultipleChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("EnumDiscriminatedTypeMultipleA");
+
+ // Simple Field (simpA)
+ writeSimpleField("simpA", simpA, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("EnumDiscriminatedTypeMultipleA");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ EnumDiscriminatedTypeMultipleA _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpA)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static EnumDiscriminatedTypeMultipleBuilder
+ staticParseEnumDiscriminatedTypeMultipleBuilder(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("EnumDiscriminatedTypeMultipleA");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpA = readSimpleField("simpA", readUnsignedShort(readBuffer, 8));
+
+ readBuffer.closeContext("EnumDiscriminatedTypeMultipleA");
+ // Create the instance
+ return new EnumDiscriminatedTypeMultipleABuilderImpl(simpA);
+ }
+
+ public static class EnumDiscriminatedTypeMultipleABuilderImpl
+ implements EnumDiscriminatedTypeMultiple.EnumDiscriminatedTypeMultipleBuilder {
+ private final short simpA;
+
+ public EnumDiscriminatedTypeMultipleABuilderImpl(short simpA) {
+ this.simpA = simpA;
+ }
+
+ public EnumDiscriminatedTypeMultipleA build() {
+ EnumDiscriminatedTypeMultipleA enumDiscriminatedTypeMultipleA =
+ new EnumDiscriminatedTypeMultipleA(simpA);
+ return enumDiscriminatedTypeMultipleA;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof EnumDiscriminatedTypeMultipleA)) {
+ return false;
+ }
+ EnumDiscriminatedTypeMultipleA that = (EnumDiscriminatedTypeMultipleA) o;
+ return (getSimpA() == that.getSimpA()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getSimpA());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeMultipleB.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeMultipleB.java
new file mode 100644
index 0000000000..b4408df718
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeMultipleB.java
@@ -0,0 +1,147 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class EnumDiscriminatedTypeMultipleB extends EnumDiscriminatedTypeMultiple
+ implements Message {
+
+ // Accessors for discriminator values.
+ public EnumType getDiscr1() {
+ return EnumType.UINT;
+ }
+
+ public EnumTypeInt getDiscr2() {
+ return EnumTypeInt.UINTINT;
+ }
+
+ // Properties.
+ protected final short simpB;
+
+ public EnumDiscriminatedTypeMultipleB(short simpB) {
+ super();
+ this.simpB = simpB;
+ }
+
+ public short getSimpB() {
+ return simpB;
+ }
+
+ @Override
+ protected void serializeEnumDiscriminatedTypeMultipleChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("EnumDiscriminatedTypeMultipleB");
+
+ // Simple Field (simpB)
+ writeSimpleField("simpB", simpB, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("EnumDiscriminatedTypeMultipleB");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ EnumDiscriminatedTypeMultipleB _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpB)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static EnumDiscriminatedTypeMultipleBuilder
+ staticParseEnumDiscriminatedTypeMultipleBuilder(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("EnumDiscriminatedTypeMultipleB");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpB = readSimpleField("simpB", readUnsignedShort(readBuffer, 8));
+
+ readBuffer.closeContext("EnumDiscriminatedTypeMultipleB");
+ // Create the instance
+ return new EnumDiscriminatedTypeMultipleBBuilderImpl(simpB);
+ }
+
+ public static class EnumDiscriminatedTypeMultipleBBuilderImpl
+ implements EnumDiscriminatedTypeMultiple.EnumDiscriminatedTypeMultipleBuilder {
+ private final short simpB;
+
+ public EnumDiscriminatedTypeMultipleBBuilderImpl(short simpB) {
+ this.simpB = simpB;
+ }
+
+ public EnumDiscriminatedTypeMultipleB build() {
+ EnumDiscriminatedTypeMultipleB enumDiscriminatedTypeMultipleB =
+ new EnumDiscriminatedTypeMultipleB(simpB);
+ return enumDiscriminatedTypeMultipleB;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof EnumDiscriminatedTypeMultipleB)) {
+ return false;
+ }
+ EnumDiscriminatedTypeMultipleB that = (EnumDiscriminatedTypeMultipleB) o;
+ return (getSimpB() == that.getSimpB()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getSimpB());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeMultipleC.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeMultipleC.java
new file mode 100644
index 0000000000..921e380583
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeMultipleC.java
@@ -0,0 +1,147 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class EnumDiscriminatedTypeMultipleC extends EnumDiscriminatedTypeMultiple
+ implements Message {
+
+ // Accessors for discriminator values.
+ public EnumType getDiscr1() {
+ return EnumType.INT;
+ }
+
+ public EnumTypeInt getDiscr2() {
+ return EnumTypeInt.INTINT;
+ }
+
+ // Properties.
+ protected final short simpC;
+
+ public EnumDiscriminatedTypeMultipleC(short simpC) {
+ super();
+ this.simpC = simpC;
+ }
+
+ public short getSimpC() {
+ return simpC;
+ }
+
+ @Override
+ protected void serializeEnumDiscriminatedTypeMultipleChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("EnumDiscriminatedTypeMultipleC");
+
+ // Simple Field (simpC)
+ writeSimpleField("simpC", simpC, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("EnumDiscriminatedTypeMultipleC");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ EnumDiscriminatedTypeMultipleC _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpC)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static EnumDiscriminatedTypeMultipleBuilder
+ staticParseEnumDiscriminatedTypeMultipleBuilder(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("EnumDiscriminatedTypeMultipleC");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpC = readSimpleField("simpC", readUnsignedShort(readBuffer, 8));
+
+ readBuffer.closeContext("EnumDiscriminatedTypeMultipleC");
+ // Create the instance
+ return new EnumDiscriminatedTypeMultipleCBuilderImpl(simpC);
+ }
+
+ public static class EnumDiscriminatedTypeMultipleCBuilderImpl
+ implements EnumDiscriminatedTypeMultiple.EnumDiscriminatedTypeMultipleBuilder {
+ private final short simpC;
+
+ public EnumDiscriminatedTypeMultipleCBuilderImpl(short simpC) {
+ this.simpC = simpC;
+ }
+
+ public EnumDiscriminatedTypeMultipleC build() {
+ EnumDiscriminatedTypeMultipleC enumDiscriminatedTypeMultipleC =
+ new EnumDiscriminatedTypeMultipleC(simpC);
+ return enumDiscriminatedTypeMultipleC;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof EnumDiscriminatedTypeMultipleC)) {
+ return false;
+ }
+ EnumDiscriminatedTypeMultipleC that = (EnumDiscriminatedTypeMultipleC) o;
+ return (getSimpC() == that.getSimpC()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getSimpC());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameter.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameter.java
new file mode 100644
index 0000000000..b0201b8e48
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameter.java
@@ -0,0 +1,160 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public abstract class EnumDiscriminatedTypeParameter implements Message {
+
+ // Abstract accessors for discriminator values.
+ public abstract EnumType getDiscr();
+
+ public EnumDiscriminatedTypeParameter() {
+ super();
+ }
+
+ protected abstract void serializeEnumDiscriminatedTypeParameterChild(WriteBuffer writeBuffer)
+ throws SerializationException;
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("EnumDiscriminatedTypeParameter");
+
+ // Switch field (Serialize the sub-type)
+ serializeEnumDiscriminatedTypeParameterChild(writeBuffer);
+
+ writeBuffer.popContext("EnumDiscriminatedTypeParameter");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ EnumDiscriminatedTypeParameter _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Length of sub-type elements will be added by sub-type...
+
+ return lengthInBits;
+ }
+
+ public static EnumDiscriminatedTypeParameter staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ if ((args == null) || (args.length != 1)) {
+ throw new PlcRuntimeException(
+ "Wrong number of arguments, expected 1, but got " + args.length);
+ }
+ EnumType discr;
+ if (args[0] instanceof EnumType) {
+ discr = (EnumType) args[0];
+ } else if (args[0] instanceof String) {
+ discr = EnumType.valueOf((String) args[0]);
+ } else {
+ throw new PlcRuntimeException(
+ "Argument 0 expected to be of type EnumType or a string which is parseable but was "
+ + args[0].getClass().getName());
+ }
+ return staticParse(readBuffer, discr);
+ }
+
+ public static EnumDiscriminatedTypeParameter staticParse(ReadBuffer readBuffer, EnumType discr)
+ throws ParseException {
+ readBuffer.pullContext("EnumDiscriminatedTypeParameter");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+ EnumDiscriminatedTypeParameterBuilder builder = null;
+ if (EvaluationHelper.equals(discr, EnumType.BOOL)) {
+ builder =
+ EnumDiscriminatedTypeParameterA.staticParseEnumDiscriminatedTypeParameterBuilder(
+ readBuffer, discr);
+ } else if (EvaluationHelper.equals(discr, EnumType.UINT)) {
+ builder =
+ EnumDiscriminatedTypeParameterB.staticParseEnumDiscriminatedTypeParameterBuilder(
+ readBuffer, discr);
+ } else if (EvaluationHelper.equals(discr, EnumType.INT)) {
+ builder =
+ EnumDiscriminatedTypeParameterC.staticParseEnumDiscriminatedTypeParameterBuilder(
+ readBuffer, discr);
+ }
+ if (builder == null) {
+ throw new ParseException(
+ "Unsupported case for discriminated type" + " parameters [" + "discr=" + discr + "]");
+ }
+
+ readBuffer.closeContext("EnumDiscriminatedTypeParameter");
+ // Create the instance
+ EnumDiscriminatedTypeParameter _enumDiscriminatedTypeParameter = builder.build();
+ return _enumDiscriminatedTypeParameter;
+ }
+
+ public interface EnumDiscriminatedTypeParameterBuilder {
+ EnumDiscriminatedTypeParameter build();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof EnumDiscriminatedTypeParameter)) {
+ return false;
+ }
+ EnumDiscriminatedTypeParameter that = (EnumDiscriminatedTypeParameter) o;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash();
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameterA.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameterA.java
new file mode 100644
index 0000000000..4d06ceee2b
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameterA.java
@@ -0,0 +1,144 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class EnumDiscriminatedTypeParameterA extends EnumDiscriminatedTypeParameter
+ implements Message {
+
+ // Accessors for discriminator values.
+ public EnumType getDiscr() {
+ return EnumType.BOOL;
+ }
+
+ // Properties.
+ protected final short simpA;
+
+ public EnumDiscriminatedTypeParameterA(short simpA) {
+ super();
+ this.simpA = simpA;
+ }
+
+ public short getSimpA() {
+ return simpA;
+ }
+
+ @Override
+ protected void serializeEnumDiscriminatedTypeParameterChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("EnumDiscriminatedTypeParameterA");
+
+ // Simple Field (simpA)
+ writeSimpleField("simpA", simpA, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("EnumDiscriminatedTypeParameterA");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ EnumDiscriminatedTypeParameterA _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpA)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static EnumDiscriminatedTypeParameterBuilder
+ staticParseEnumDiscriminatedTypeParameterBuilder(ReadBuffer readBuffer, EnumType discr)
+ throws ParseException {
+ readBuffer.pullContext("EnumDiscriminatedTypeParameterA");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpA = readSimpleField("simpA", readUnsignedShort(readBuffer, 8));
+
+ readBuffer.closeContext("EnumDiscriminatedTypeParameterA");
+ // Create the instance
+ return new EnumDiscriminatedTypeParameterABuilderImpl(simpA);
+ }
+
+ public static class EnumDiscriminatedTypeParameterABuilderImpl
+ implements EnumDiscriminatedTypeParameter.EnumDiscriminatedTypeParameterBuilder {
+ private final short simpA;
+
+ public EnumDiscriminatedTypeParameterABuilderImpl(short simpA) {
+ this.simpA = simpA;
+ }
+
+ public EnumDiscriminatedTypeParameterA build() {
+ EnumDiscriminatedTypeParameterA enumDiscriminatedTypeParameterA =
+ new EnumDiscriminatedTypeParameterA(simpA);
+ return enumDiscriminatedTypeParameterA;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof EnumDiscriminatedTypeParameterA)) {
+ return false;
+ }
+ EnumDiscriminatedTypeParameterA that = (EnumDiscriminatedTypeParameterA) o;
+ return (getSimpA() == that.getSimpA()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getSimpA());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameterB.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameterB.java
new file mode 100644
index 0000000000..9efd680971
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameterB.java
@@ -0,0 +1,144 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class EnumDiscriminatedTypeParameterB extends EnumDiscriminatedTypeParameter
+ implements Message {
+
+ // Accessors for discriminator values.
+ public EnumType getDiscr() {
+ return EnumType.UINT;
+ }
+
+ // Properties.
+ protected final short simpB;
+
+ public EnumDiscriminatedTypeParameterB(short simpB) {
+ super();
+ this.simpB = simpB;
+ }
+
+ public short getSimpB() {
+ return simpB;
+ }
+
+ @Override
+ protected void serializeEnumDiscriminatedTypeParameterChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("EnumDiscriminatedTypeParameterB");
+
+ // Simple Field (simpB)
+ writeSimpleField("simpB", simpB, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("EnumDiscriminatedTypeParameterB");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ EnumDiscriminatedTypeParameterB _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpB)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static EnumDiscriminatedTypeParameterBuilder
+ staticParseEnumDiscriminatedTypeParameterBuilder(ReadBuffer readBuffer, EnumType discr)
+ throws ParseException {
+ readBuffer.pullContext("EnumDiscriminatedTypeParameterB");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpB = readSimpleField("simpB", readUnsignedShort(readBuffer, 8));
+
+ readBuffer.closeContext("EnumDiscriminatedTypeParameterB");
+ // Create the instance
+ return new EnumDiscriminatedTypeParameterBBuilderImpl(simpB);
+ }
+
+ public static class EnumDiscriminatedTypeParameterBBuilderImpl
+ implements EnumDiscriminatedTypeParameter.EnumDiscriminatedTypeParameterBuilder {
+ private final short simpB;
+
+ public EnumDiscriminatedTypeParameterBBuilderImpl(short simpB) {
+ this.simpB = simpB;
+ }
+
+ public EnumDiscriminatedTypeParameterB build() {
+ EnumDiscriminatedTypeParameterB enumDiscriminatedTypeParameterB =
+ new EnumDiscriminatedTypeParameterB(simpB);
+ return enumDiscriminatedTypeParameterB;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof EnumDiscriminatedTypeParameterB)) {
+ return false;
+ }
+ EnumDiscriminatedTypeParameterB that = (EnumDiscriminatedTypeParameterB) o;
+ return (getSimpB() == that.getSimpB()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getSimpB());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameterC.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameterC.java
new file mode 100644
index 0000000000..d5512a4c15
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameterC.java
@@ -0,0 +1,144 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class EnumDiscriminatedTypeParameterC extends EnumDiscriminatedTypeParameter
+ implements Message {
+
+ // Accessors for discriminator values.
+ public EnumType getDiscr() {
+ return EnumType.INT;
+ }
+
+ // Properties.
+ protected final short simpC;
+
+ public EnumDiscriminatedTypeParameterC(short simpC) {
+ super();
+ this.simpC = simpC;
+ }
+
+ public short getSimpC() {
+ return simpC;
+ }
+
+ @Override
+ protected void serializeEnumDiscriminatedTypeParameterChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("EnumDiscriminatedTypeParameterC");
+
+ // Simple Field (simpC)
+ writeSimpleField("simpC", simpC, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("EnumDiscriminatedTypeParameterC");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ EnumDiscriminatedTypeParameterC _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpC)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static EnumDiscriminatedTypeParameterBuilder
+ staticParseEnumDiscriminatedTypeParameterBuilder(ReadBuffer readBuffer, EnumType discr)
+ throws ParseException {
+ readBuffer.pullContext("EnumDiscriminatedTypeParameterC");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpC = readSimpleField("simpC", readUnsignedShort(readBuffer, 8));
+
+ readBuffer.closeContext("EnumDiscriminatedTypeParameterC");
+ // Create the instance
+ return new EnumDiscriminatedTypeParameterCBuilderImpl(simpC);
+ }
+
+ public static class EnumDiscriminatedTypeParameterCBuilderImpl
+ implements EnumDiscriminatedTypeParameter.EnumDiscriminatedTypeParameterBuilder {
+ private final short simpC;
+
+ public EnumDiscriminatedTypeParameterCBuilderImpl(short simpC) {
+ this.simpC = simpC;
+ }
+
+ public EnumDiscriminatedTypeParameterC build() {
+ EnumDiscriminatedTypeParameterC enumDiscriminatedTypeParameterC =
+ new EnumDiscriminatedTypeParameterC(simpC);
+ return enumDiscriminatedTypeParameterC;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof EnumDiscriminatedTypeParameterC)) {
+ return false;
+ }
+ EnumDiscriminatedTypeParameterC that = (EnumDiscriminatedTypeParameterC) o;
+ return (getSimpC() == that.getSimpC()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getSimpC());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameterMultiple.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameterMultiple.java
new file mode 100644
index 0000000000..50ed8ab94b
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameterMultiple.java
@@ -0,0 +1,183 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public abstract class EnumDiscriminatedTypeParameterMultiple implements Message {
+
+ // Abstract accessors for discriminator values.
+ public abstract EnumType getDiscr1();
+
+ public abstract EnumTypeInt getDiscr2();
+
+ public EnumDiscriminatedTypeParameterMultiple() {
+ super();
+ }
+
+ protected abstract void serializeEnumDiscriminatedTypeParameterMultipleChild(
+ WriteBuffer writeBuffer) throws SerializationException;
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("EnumDiscriminatedTypeParameterMultiple");
+
+ // Switch field (Serialize the sub-type)
+ serializeEnumDiscriminatedTypeParameterMultipleChild(writeBuffer);
+
+ writeBuffer.popContext("EnumDiscriminatedTypeParameterMultiple");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ EnumDiscriminatedTypeParameterMultiple _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Length of sub-type elements will be added by sub-type...
+
+ return lengthInBits;
+ }
+
+ public static EnumDiscriminatedTypeParameterMultiple staticParse(
+ ReadBuffer readBuffer, Object... args) throws ParseException {
+ PositionAware positionAware = readBuffer;
+ if ((args == null) || (args.length != 2)) {
+ throw new PlcRuntimeException(
+ "Wrong number of arguments, expected 2, but got " + args.length);
+ }
+ EnumType discr1;
+ if (args[0] instanceof EnumType) {
+ discr1 = (EnumType) args[0];
+ } else if (args[0] instanceof String) {
+ discr1 = EnumType.valueOf((String) args[0]);
+ } else {
+ throw new PlcRuntimeException(
+ "Argument 0 expected to be of type EnumType or a string which is parseable but was "
+ + args[0].getClass().getName());
+ }
+ EnumTypeInt discr2;
+ if (args[1] instanceof EnumTypeInt) {
+ discr2 = (EnumTypeInt) args[1];
+ } else if (args[1] instanceof String) {
+ discr2 = EnumTypeInt.valueOf((String) args[1]);
+ } else {
+ throw new PlcRuntimeException(
+ "Argument 1 expected to be of type EnumTypeInt or a string which is parseable but was "
+ + args[1].getClass().getName());
+ }
+ return staticParse(readBuffer, discr1, discr2);
+ }
+
+ public static EnumDiscriminatedTypeParameterMultiple staticParse(
+ ReadBuffer readBuffer, EnumType discr1, EnumTypeInt discr2) throws ParseException {
+ readBuffer.pullContext("EnumDiscriminatedTypeParameterMultiple");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+ EnumDiscriminatedTypeParameterMultipleBuilder builder = null;
+ if (EvaluationHelper.equals(discr1, EnumType.BOOL)
+ && EvaluationHelper.equals(discr2, EnumTypeInt.BOOLINT)) {
+ builder =
+ EnumDiscriminatedTypeParameterMultipleA
+ .staticParseEnumDiscriminatedTypeParameterMultipleBuilder(readBuffer, discr1, discr2);
+ } else if (EvaluationHelper.equals(discr1, EnumType.UINT)
+ && EvaluationHelper.equals(discr2, EnumTypeInt.UINTINT)) {
+ builder =
+ EnumDiscriminatedTypeParameterMultipleB
+ .staticParseEnumDiscriminatedTypeParameterMultipleBuilder(readBuffer, discr1, discr2);
+ } else if (EvaluationHelper.equals(discr1, EnumType.INT)
+ && EvaluationHelper.equals(discr2, EnumTypeInt.INTINT)) {
+ builder =
+ EnumDiscriminatedTypeParameterMultipleC
+ .staticParseEnumDiscriminatedTypeParameterMultipleBuilder(readBuffer, discr1, discr2);
+ }
+ if (builder == null) {
+ throw new ParseException(
+ "Unsupported case for discriminated type"
+ + " parameters ["
+ + "discr1="
+ + discr1
+ + " "
+ + "discr2="
+ + discr2
+ + "]");
+ }
+
+ readBuffer.closeContext("EnumDiscriminatedTypeParameterMultiple");
+ // Create the instance
+ EnumDiscriminatedTypeParameterMultiple _enumDiscriminatedTypeParameterMultiple =
+ builder.build();
+ return _enumDiscriminatedTypeParameterMultiple;
+ }
+
+ public interface EnumDiscriminatedTypeParameterMultipleBuilder {
+ EnumDiscriminatedTypeParameterMultiple build();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof EnumDiscriminatedTypeParameterMultiple)) {
+ return false;
+ }
+ EnumDiscriminatedTypeParameterMultiple that = (EnumDiscriminatedTypeParameterMultiple) o;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash();
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameterMultipleA.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameterMultipleA.java
new file mode 100644
index 0000000000..0ac5d6da74
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameterMultipleA.java
@@ -0,0 +1,149 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class EnumDiscriminatedTypeParameterMultipleA extends EnumDiscriminatedTypeParameterMultiple
+ implements Message {
+
+ // Accessors for discriminator values.
+ public EnumType getDiscr1() {
+ return EnumType.BOOL;
+ }
+
+ public EnumTypeInt getDiscr2() {
+ return EnumTypeInt.BOOLINT;
+ }
+
+ // Properties.
+ protected final short simpA;
+
+ public EnumDiscriminatedTypeParameterMultipleA(short simpA) {
+ super();
+ this.simpA = simpA;
+ }
+
+ public short getSimpA() {
+ return simpA;
+ }
+
+ @Override
+ protected void serializeEnumDiscriminatedTypeParameterMultipleChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("EnumDiscriminatedTypeParameterMultipleA");
+
+ // Simple Field (simpA)
+ writeSimpleField("simpA", simpA, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("EnumDiscriminatedTypeParameterMultipleA");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ EnumDiscriminatedTypeParameterMultipleA _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpA)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static EnumDiscriminatedTypeParameterMultipleBuilder
+ staticParseEnumDiscriminatedTypeParameterMultipleBuilder(
+ ReadBuffer readBuffer, EnumType discr1, EnumTypeInt discr2) throws ParseException {
+ readBuffer.pullContext("EnumDiscriminatedTypeParameterMultipleA");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpA = readSimpleField("simpA", readUnsignedShort(readBuffer, 8));
+
+ readBuffer.closeContext("EnumDiscriminatedTypeParameterMultipleA");
+ // Create the instance
+ return new EnumDiscriminatedTypeParameterMultipleABuilderImpl(simpA);
+ }
+
+ public static class EnumDiscriminatedTypeParameterMultipleABuilderImpl
+ implements EnumDiscriminatedTypeParameterMultiple
+ .EnumDiscriminatedTypeParameterMultipleBuilder {
+ private final short simpA;
+
+ public EnumDiscriminatedTypeParameterMultipleABuilderImpl(short simpA) {
+ this.simpA = simpA;
+ }
+
+ public EnumDiscriminatedTypeParameterMultipleA build() {
+ EnumDiscriminatedTypeParameterMultipleA enumDiscriminatedTypeParameterMultipleA =
+ new EnumDiscriminatedTypeParameterMultipleA(simpA);
+ return enumDiscriminatedTypeParameterMultipleA;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof EnumDiscriminatedTypeParameterMultipleA)) {
+ return false;
+ }
+ EnumDiscriminatedTypeParameterMultipleA that = (EnumDiscriminatedTypeParameterMultipleA) o;
+ return (getSimpA() == that.getSimpA()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getSimpA());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameterMultipleB.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameterMultipleB.java
new file mode 100644
index 0000000000..77b9a546ec
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameterMultipleB.java
@@ -0,0 +1,149 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class EnumDiscriminatedTypeParameterMultipleB extends EnumDiscriminatedTypeParameterMultiple
+ implements Message {
+
+ // Accessors for discriminator values.
+ public EnumType getDiscr1() {
+ return EnumType.UINT;
+ }
+
+ public EnumTypeInt getDiscr2() {
+ return EnumTypeInt.UINTINT;
+ }
+
+ // Properties.
+ protected final short simpB;
+
+ public EnumDiscriminatedTypeParameterMultipleB(short simpB) {
+ super();
+ this.simpB = simpB;
+ }
+
+ public short getSimpB() {
+ return simpB;
+ }
+
+ @Override
+ protected void serializeEnumDiscriminatedTypeParameterMultipleChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("EnumDiscriminatedTypeParameterMultipleB");
+
+ // Simple Field (simpB)
+ writeSimpleField("simpB", simpB, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("EnumDiscriminatedTypeParameterMultipleB");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ EnumDiscriminatedTypeParameterMultipleB _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpB)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static EnumDiscriminatedTypeParameterMultipleBuilder
+ staticParseEnumDiscriminatedTypeParameterMultipleBuilder(
+ ReadBuffer readBuffer, EnumType discr1, EnumTypeInt discr2) throws ParseException {
+ readBuffer.pullContext("EnumDiscriminatedTypeParameterMultipleB");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpB = readSimpleField("simpB", readUnsignedShort(readBuffer, 8));
+
+ readBuffer.closeContext("EnumDiscriminatedTypeParameterMultipleB");
+ // Create the instance
+ return new EnumDiscriminatedTypeParameterMultipleBBuilderImpl(simpB);
+ }
+
+ public static class EnumDiscriminatedTypeParameterMultipleBBuilderImpl
+ implements EnumDiscriminatedTypeParameterMultiple
+ .EnumDiscriminatedTypeParameterMultipleBuilder {
+ private final short simpB;
+
+ public EnumDiscriminatedTypeParameterMultipleBBuilderImpl(short simpB) {
+ this.simpB = simpB;
+ }
+
+ public EnumDiscriminatedTypeParameterMultipleB build() {
+ EnumDiscriminatedTypeParameterMultipleB enumDiscriminatedTypeParameterMultipleB =
+ new EnumDiscriminatedTypeParameterMultipleB(simpB);
+ return enumDiscriminatedTypeParameterMultipleB;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof EnumDiscriminatedTypeParameterMultipleB)) {
+ return false;
+ }
+ EnumDiscriminatedTypeParameterMultipleB that = (EnumDiscriminatedTypeParameterMultipleB) o;
+ return (getSimpB() == that.getSimpB()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getSimpB());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameterMultipleC.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameterMultipleC.java
new file mode 100644
index 0000000000..b364796e2b
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumDiscriminatedTypeParameterMultipleC.java
@@ -0,0 +1,149 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class EnumDiscriminatedTypeParameterMultipleC extends EnumDiscriminatedTypeParameterMultiple
+ implements Message {
+
+ // Accessors for discriminator values.
+ public EnumType getDiscr1() {
+ return EnumType.INT;
+ }
+
+ public EnumTypeInt getDiscr2() {
+ return EnumTypeInt.INTINT;
+ }
+
+ // Properties.
+ protected final short simpC;
+
+ public EnumDiscriminatedTypeParameterMultipleC(short simpC) {
+ super();
+ this.simpC = simpC;
+ }
+
+ public short getSimpC() {
+ return simpC;
+ }
+
+ @Override
+ protected void serializeEnumDiscriminatedTypeParameterMultipleChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("EnumDiscriminatedTypeParameterMultipleC");
+
+ // Simple Field (simpC)
+ writeSimpleField("simpC", simpC, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("EnumDiscriminatedTypeParameterMultipleC");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ EnumDiscriminatedTypeParameterMultipleC _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpC)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static EnumDiscriminatedTypeParameterMultipleBuilder
+ staticParseEnumDiscriminatedTypeParameterMultipleBuilder(
+ ReadBuffer readBuffer, EnumType discr1, EnumTypeInt discr2) throws ParseException {
+ readBuffer.pullContext("EnumDiscriminatedTypeParameterMultipleC");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpC = readSimpleField("simpC", readUnsignedShort(readBuffer, 8));
+
+ readBuffer.closeContext("EnumDiscriminatedTypeParameterMultipleC");
+ // Create the instance
+ return new EnumDiscriminatedTypeParameterMultipleCBuilderImpl(simpC);
+ }
+
+ public static class EnumDiscriminatedTypeParameterMultipleCBuilderImpl
+ implements EnumDiscriminatedTypeParameterMultiple
+ .EnumDiscriminatedTypeParameterMultipleBuilder {
+ private final short simpC;
+
+ public EnumDiscriminatedTypeParameterMultipleCBuilderImpl(short simpC) {
+ this.simpC = simpC;
+ }
+
+ public EnumDiscriminatedTypeParameterMultipleC build() {
+ EnumDiscriminatedTypeParameterMultipleC enumDiscriminatedTypeParameterMultipleC =
+ new EnumDiscriminatedTypeParameterMultipleC(simpC);
+ return enumDiscriminatedTypeParameterMultipleC;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof EnumDiscriminatedTypeParameterMultipleC)) {
+ return false;
+ }
+ EnumDiscriminatedTypeParameterMultipleC that = (EnumDiscriminatedTypeParameterMultipleC) o;
+ return (getSimpC() == that.getSimpC()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getSimpC());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumType.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumType.java
new file mode 100644
index 0000000000..609be2b273
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumType.java
@@ -0,0 +1,57 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import java.util.HashMap;
+import java.util.Map;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public enum EnumType {
+ BOOL((short) 0x01),
+ UINT((short) 0x02),
+ INT((short) 0x03),
+ BYTE_ARRAY((short) 0x11);
+ private static final Map<Short, EnumType> map;
+
+ static {
+ map = new HashMap<>();
+ for (EnumType value : EnumType.values()) {
+ map.put((short) value.getValue(), value);
+ }
+ }
+
+ private final short value;
+
+ EnumType(short value) {
+ this.value = value;
+ }
+
+ public short getValue() {
+ return value;
+ }
+
+ public static EnumType enumForValue(short value) {
+ return map.get(value);
+ }
+
+ public static Boolean isDefined(short value) {
+ return map.containsKey(value);
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumTypeBit.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumTypeBit.java
new file mode 100644
index 0000000000..beea4d448f
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumTypeBit.java
@@ -0,0 +1,55 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import java.util.HashMap;
+import java.util.Map;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public enum EnumTypeBit {
+ TRUE((boolean) true),
+ FALSE((boolean) false);
+ private static final Map<Boolean, EnumTypeBit> map;
+
+ static {
+ map = new HashMap<>();
+ for (EnumTypeBit value : EnumTypeBit.values()) {
+ map.put((boolean) value.getValue(), value);
+ }
+ }
+
+ private final boolean value;
+
+ EnumTypeBit(boolean value) {
+ this.value = value;
+ }
+
+ public boolean getValue() {
+ return value;
+ }
+
+ public static EnumTypeBit enumForValue(boolean value) {
+ return map.get(value);
+ }
+
+ public static Boolean isDefined(boolean value) {
+ return map.containsKey(value);
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumTypeInt.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumTypeInt.java
new file mode 100644
index 0000000000..d8314c4079
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumTypeInt.java
@@ -0,0 +1,56 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import java.util.HashMap;
+import java.util.Map;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public enum EnumTypeInt {
+ BOOLINT((byte) 0x01),
+ UINTINT((byte) 0x02),
+ INTINT((byte) 0x03);
+ private static final Map<Byte, EnumTypeInt> map;
+
+ static {
+ map = new HashMap<>();
+ for (EnumTypeInt value : EnumTypeInt.values()) {
+ map.put((byte) value.getValue(), value);
+ }
+ }
+
+ private final byte value;
+
+ EnumTypeInt(byte value) {
+ this.value = value;
+ }
+
+ public byte getValue() {
+ return value;
+ }
+
+ public static EnumTypeInt enumForValue(byte value) {
+ return map.get(value);
+ }
+
+ public static Boolean isDefined(byte value) {
+ return map.containsKey(value);
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumTypeParameters.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumTypeParameters.java
new file mode 100644
index 0000000000..81ec27443a
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumTypeParameters.java
@@ -0,0 +1,188 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public enum EnumTypeParameters {
+ BOOL((byte) 0x01, (short) 1, (byte) 1, (String) "BOOL", EnumType.BOOL, (boolean) false),
+ BYTE((byte) 0x02, (short) 2, (byte) 2, (String) "BYTE", EnumType.UINT, (boolean) true);
+ private static final Map<Byte, EnumTypeParameters> map;
+
+ static {
+ map = new HashMap<>();
+ for (EnumTypeParameters value : EnumTypeParameters.values()) {
+ map.put((byte) value.getValue(), value);
+ }
+ }
+
+ private final byte value;
+ private final short uintType;
+ private final byte intType;
+ private final String stringType;
+ private final EnumType enumType;
+ private final boolean bitType;
+
+ EnumTypeParameters(
+ byte value,
+ short uintType,
+ byte intType,
+ String stringType,
+ EnumType enumType,
+ boolean bitType) {
+ this.value = value;
+ this.uintType = uintType;
+ this.intType = intType;
+ this.stringType = stringType;
+ this.enumType = enumType;
+ this.bitType = bitType;
+ }
+
+ public byte getValue() {
+ return value;
+ }
+
+ public short getUintType() {
+ return uintType;
+ }
+
+ public static EnumTypeParameters firstEnumForFieldUintType(short fieldValue) {
+ for (EnumTypeParameters _val : EnumTypeParameters.values()) {
+ if (_val.getUintType() == fieldValue) {
+ return _val;
+ }
+ }
+ return null;
+ }
+
+ public static List<EnumTypeParameters> enumsForFieldUintType(short fieldValue) {
+ List<EnumTypeParameters> _values = new ArrayList<>();
+ for (EnumTypeParameters _val : EnumTypeParameters.values()) {
+ if (_val.getUintType() == fieldValue) {
+ _values.add(_val);
+ }
+ }
+ return _values;
+ }
+
+ public byte getIntType() {
+ return intType;
+ }
+
+ public static EnumTypeParameters firstEnumForFieldIntType(byte fieldValue) {
+ for (EnumTypeParameters _val : EnumTypeParameters.values()) {
+ if (_val.getIntType() == fieldValue) {
+ return _val;
+ }
+ }
+ return null;
+ }
+
+ public static List<EnumTypeParameters> enumsForFieldIntType(byte fieldValue) {
+ List<EnumTypeParameters> _values = new ArrayList<>();
+ for (EnumTypeParameters _val : EnumTypeParameters.values()) {
+ if (_val.getIntType() == fieldValue) {
+ _values.add(_val);
+ }
+ }
+ return _values;
+ }
+
+ public String getStringType() {
+ return stringType;
+ }
+
+ public static EnumTypeParameters firstEnumForFieldStringType(String fieldValue) {
+ for (EnumTypeParameters _val : EnumTypeParameters.values()) {
+ if (_val.getStringType().equals(fieldValue)) {
+ return _val;
+ }
+ }
+ return null;
+ }
+
+ public static List<EnumTypeParameters> enumsForFieldStringType(String fieldValue) {
+ List<EnumTypeParameters> _values = new ArrayList<>();
+ for (EnumTypeParameters _val : EnumTypeParameters.values()) {
+ if (_val.getStringType().equals(fieldValue)) {
+ _values.add(_val);
+ }
+ }
+ return _values;
+ }
+
+ public EnumType getEnumType() {
+ return enumType;
+ }
+
+ public static EnumTypeParameters firstEnumForFieldEnumType(EnumType fieldValue) {
+ for (EnumTypeParameters _val : EnumTypeParameters.values()) {
+ if (_val.getEnumType() == fieldValue) {
+ return _val;
+ }
+ }
+ return null;
+ }
+
+ public static List<EnumTypeParameters> enumsForFieldEnumType(EnumType fieldValue) {
+ List<EnumTypeParameters> _values = new ArrayList<>();
+ for (EnumTypeParameters _val : EnumTypeParameters.values()) {
+ if (_val.getEnumType() == fieldValue) {
+ _values.add(_val);
+ }
+ }
+ return _values;
+ }
+
+ public boolean getBitType() {
+ return bitType;
+ }
+
+ public static EnumTypeParameters firstEnumForFieldBitType(boolean fieldValue) {
+ for (EnumTypeParameters _val : EnumTypeParameters.values()) {
+ if (_val.getBitType() == fieldValue) {
+ return _val;
+ }
+ }
+ return null;
+ }
+
+ public static List<EnumTypeParameters> enumsForFieldBitType(boolean fieldValue) {
+ List<EnumTypeParameters> _values = new ArrayList<>();
+ for (EnumTypeParameters _val : EnumTypeParameters.values()) {
+ if (_val.getBitType() == fieldValue) {
+ _values.add(_val);
+ }
+ }
+ return _values;
+ }
+
+ public static EnumTypeParameters enumForValue(byte value) {
+ return map.get(value);
+ }
+
+ public static Boolean isDefined(byte value) {
+ return map.containsKey(value);
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumTypeTest.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumTypeTest.java
new file mode 100644
index 0000000000..71f2bbadf2
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/EnumTypeTest.java
@@ -0,0 +1,138 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class EnumTypeTest implements Message {
+
+ // Properties.
+ protected final EnumTypeParameters enumField;
+
+ public EnumTypeTest(EnumTypeParameters enumField) {
+ super();
+ this.enumField = enumField;
+ }
+
+ public EnumTypeParameters getEnumField() {
+ return enumField;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("EnumTypeTest");
+
+ // Enum field (enumField)
+ writeEnumField(
+ "enumField",
+ "EnumTypeParameters",
+ enumField,
+ new DataWriterEnumDefault<>(
+ EnumTypeParameters::getIntType,
+ EnumTypeParameters::name,
+ writeSignedByte(writeBuffer, 8)));
+
+ writeBuffer.popContext("EnumTypeTest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ EnumTypeTest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Enum Field (enumField)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static EnumTypeTest staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static EnumTypeTest staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("EnumTypeTest");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ EnumTypeParameters enumField =
+ readEnumField(
+ "enumField",
+ "EnumTypeParameters",
+ readEnum(EnumTypeParameters::firstEnumForFieldIntType, readSignedByte(readBuffer, 8)));
+
+ readBuffer.closeContext("EnumTypeTest");
+ // Create the instance
+ EnumTypeTest _enumTypeTest;
+ _enumTypeTest = new EnumTypeTest(enumField);
+ return _enumTypeTest;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof EnumTypeTest)) {
+ return false;
+ }
+ EnumTypeTest that = (EnumTypeTest) o;
+ return (getEnumField() == that.getEnumField()) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getEnumField());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/FieldTypeTest.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/FieldTypeTest.java
new file mode 100644
index 0000000000..000ee98f77
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/FieldTypeTest.java
@@ -0,0 +1,322 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class FieldTypeTest implements Message {
+
+ // Constant values.
+ public static final Short CONSTFIELD = 5;
+
+ // Properties.
+ protected final short simpleField;
+ protected final List<Short> arrayFieldCount;
+ protected final List<Short> arrayFieldLength;
+ protected final List<Short> arrayFieldTerminated;
+ protected final short assertField;
+ protected final EnumTypeParameters enumField;
+ protected final short manualField;
+ protected final Short optionalField;
+ protected final short peekField;
+
+ public FieldTypeTest(
+ short simpleField,
+ List<Short> arrayFieldCount,
+ List<Short> arrayFieldLength,
+ List<Short> arrayFieldTerminated,
+ short assertField,
+ EnumTypeParameters enumField,
+ short manualField,
+ Short optionalField,
+ short peekField) {
+ super();
+ this.simpleField = simpleField;
+ this.arrayFieldCount = arrayFieldCount;
+ this.arrayFieldLength = arrayFieldLength;
+ this.arrayFieldTerminated = arrayFieldTerminated;
+ this.assertField = assertField;
+ this.enumField = enumField;
+ this.manualField = manualField;
+ this.optionalField = optionalField;
+ this.peekField = peekField;
+ }
+
+ public short getSimpleField() {
+ return simpleField;
+ }
+
+ public List<Short> getArrayFieldCount() {
+ return arrayFieldCount;
+ }
+
+ public List<Short> getArrayFieldLength() {
+ return arrayFieldLength;
+ }
+
+ public List<Short> getArrayFieldTerminated() {
+ return arrayFieldTerminated;
+ }
+
+ public short getAssertField() {
+ return assertField;
+ }
+
+ public EnumTypeParameters getEnumField() {
+ return enumField;
+ }
+
+ public short getManualField() {
+ return manualField;
+ }
+
+ public Short getOptionalField() {
+ return optionalField;
+ }
+
+ public short getPeekField() {
+ return peekField;
+ }
+
+ public short getVirtualField() {
+ return (short) ((getConstField()) + (10));
+ }
+
+ public short getConstField() {
+ return CONSTFIELD;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ throw new SerializationException("Unknown field not serializable");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ FieldTypeTest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpleField)
+ lengthInBits += 8;
+
+ // Array field
+ if (arrayFieldCount != null) {
+ lengthInBits += 8 * arrayFieldCount.size();
+ }
+
+ // Array field
+ if (arrayFieldLength != null) {
+ lengthInBits += 8 * arrayFieldLength.size();
+ }
+
+ // Array field
+ if (arrayFieldTerminated != null) {
+ lengthInBits += 8 * arrayFieldTerminated.size();
+ }
+
+ // Checksum Field (checksum)
+ lengthInBits += 8;
+
+ // Const Field (constField)
+ lengthInBits += 8;
+
+ // Enum Field (enumField)
+ lengthInBits += 8;
+
+ // Implicit Field (implicitField)
+ lengthInBits += 8;
+
+ // Manual Field (manualField)
+ lengthInBits += (simpleField) * (8);
+
+ // Optional Field (optionalField)
+ if (optionalField != null) {
+ lengthInBits += 8;
+ }
+
+ // Padding Field (padding)
+ int _timesPadding = (int) (simpleField);
+ while (_timesPadding-- > 0) {
+ lengthInBits += 8;
+ }
+
+ // Reserved Field (reserved)
+ lengthInBits += 8;
+
+ // Unknown field
+ lengthInBits += 8;
+
+ // A virtual field doesn't have any in- or output.
+
+ return lengthInBits;
+ }
+
+ public static FieldTypeTest staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static FieldTypeTest staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("FieldTypeTest");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpleField = readSimpleField("simpleField", readUnsignedShort(readBuffer, 8));
+
+ List<Short> arrayFieldCount =
+ readCountArrayField("arrayFieldCount", readUnsignedShort(readBuffer, 8), 5);
+
+ List<Short> arrayFieldLength =
+ readLengthArrayField("arrayFieldLength", readUnsignedShort(readBuffer, 8), 5);
+
+ List<Short> arrayFieldTerminated =
+ readTerminatedArrayField(
+ "arrayFieldTerminated", readUnsignedShort(readBuffer, 8), () -> ((boolean) (true)));
+
+ short assertField =
+ readAssertField("assertField", readUnsignedShort(readBuffer, 8), (short) (42));
+
+ short checksumField =
+ readChecksumField(
+ "checksumField",
+ readUnsignedShort(readBuffer, 8),
+ (short) (org.apache.plc4x.java.test.readwrite.utils.StaticHelper.crcUint8(-(23))));
+
+ short constField =
+ readConstField("constField", readUnsignedShort(readBuffer, 8), FieldTypeTest.CONSTFIELD);
+
+ EnumTypeParameters enumField =
+ readEnumField(
+ "enumField",
+ "EnumTypeParameters",
+ readEnum(EnumTypeParameters::firstEnumForFieldIntType, readSignedByte(readBuffer, 8)));
+
+ short implicitField = readImplicitField("implicitField", readUnsignedShort(readBuffer, 8));
+
+ short manualField =
+ readManualField(
+ "manualField",
+ readBuffer,
+ () ->
+ (short)
+ (org.apache.plc4x.java.test.readwrite.utils.StaticHelper.readManualField(
+ readBuffer, simpleField)));
+
+ Short optionalField =
+ readOptionalField("optionalField", readUnsignedShort(readBuffer, 8), (simpleField) == (5));
+
+ readPaddingField(readUnsignedShort(readBuffer, 8), (int) (simpleField));
+
+ Short reservedField0 =
+ readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x00);
+
+ readUnknownField("unknown", readUnsignedShort(readBuffer, 8));
+ short virtualField = readVirtualField("virtualField", short.class, (constField) + (10));
+ // Validation
+ if (!(false)) {
+ throw new ParseValidationException("Validation Message");
+ }
+
+ short peekField = readPeekField("peekField", readUnsignedShort(readBuffer, 8));
+
+ readBuffer.closeContext("FieldTypeTest");
+ // Create the instance
+ FieldTypeTest _fieldTypeTest;
+ _fieldTypeTest =
+ new FieldTypeTest(
+ simpleField,
+ arrayFieldCount,
+ arrayFieldLength,
+ arrayFieldTerminated,
+ assertField,
+ enumField,
+ manualField,
+ optionalField,
+ peekField);
+ return _fieldTypeTest;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof FieldTypeTest)) {
+ return false;
+ }
+ FieldTypeTest that = (FieldTypeTest) o;
+ return (getSimpleField() == that.getSimpleField())
+ && (getArrayFieldCount() == that.getArrayFieldCount())
+ && (getArrayFieldLength() == that.getArrayFieldLength())
+ && (getArrayFieldTerminated() == that.getArrayFieldTerminated())
+ && (getAssertField() == that.getAssertField())
+ && (getEnumField() == that.getEnumField())
+ && (getManualField() == that.getManualField())
+ && (getOptionalField() == that.getOptionalField())
+ && (getPeekField() == that.getPeekField())
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ getSimpleField(),
+ getArrayFieldCount(),
+ getArrayFieldLength(),
+ getArrayFieldTerminated(),
+ getAssertField(),
+ getEnumField(),
+ getManualField(),
+ getOptionalField(),
+ getPeekField());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/FieldTypeTestWithUnknownField.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/FieldTypeTestWithUnknownField.java
new file mode 100644
index 0000000000..e5fa537bfc
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/FieldTypeTestWithUnknownField.java
@@ -0,0 +1,222 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class FieldTypeTestWithUnknownField implements Message {
+
+ // Constant values.
+ public static final Short CONSTFIELD = 5;
+
+ // Properties.
+ protected final short simpleField;
+ protected final List<Short> arrayField;
+ protected final EnumTypeParameters enumField;
+ protected final Short optionalField;
+
+ public FieldTypeTestWithUnknownField(
+ short simpleField,
+ List<Short> arrayField,
+ EnumTypeParameters enumField,
+ Short optionalField) {
+ super();
+ this.simpleField = simpleField;
+ this.arrayField = arrayField;
+ this.enumField = enumField;
+ this.optionalField = optionalField;
+ }
+
+ public short getSimpleField() {
+ return simpleField;
+ }
+
+ public List<Short> getArrayField() {
+ return arrayField;
+ }
+
+ public EnumTypeParameters getEnumField() {
+ return enumField;
+ }
+
+ public Short getOptionalField() {
+ return optionalField;
+ }
+
+ public short getConstField() {
+ return CONSTFIELD;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ throw new SerializationException("Unknown field not serializable");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ FieldTypeTestWithUnknownField _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpleField)
+ lengthInBits += 8;
+
+ // Array field
+ if (arrayField != null) {
+ lengthInBits += 8 * arrayField.size();
+ }
+
+ // Checksum Field (checksum)
+ lengthInBits += 8;
+
+ // Const Field (constField)
+ lengthInBits += 8;
+
+ // Enum Field (enumField)
+ lengthInBits += 8;
+
+ // Implicit Field (implicitField)
+ lengthInBits += 8;
+
+ // Optional Field (optionalField)
+ if (optionalField != null) {
+ lengthInBits += 8;
+ }
+
+ // Padding Field (padding)
+ int _timesPadding = (int) (simpleField);
+ while (_timesPadding-- > 0) {
+ lengthInBits += 8;
+ }
+
+ // Reserved Field (reserved)
+ lengthInBits += 8;
+
+ // Unknown field
+ lengthInBits += 16;
+
+ return lengthInBits;
+ }
+
+ public static FieldTypeTestWithUnknownField staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static FieldTypeTestWithUnknownField staticParse(ReadBuffer readBuffer)
+ throws ParseException {
+ readBuffer.pullContext("FieldTypeTestWithUnknownField");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpleField = readSimpleField("simpleField", readUnsignedShort(readBuffer, 8));
+
+ List<Short> arrayField = readCountArrayField("arrayField", readUnsignedShort(readBuffer, 8), 5);
+
+ short checksumField =
+ readChecksumField(
+ "checksumField",
+ readUnsignedShort(readBuffer, 8),
+ (short) (org.apache.plc4x.java.test.readwrite.utils.StaticHelper.crcUint8(-(23))));
+
+ short constField =
+ readConstField(
+ "constField",
+ readUnsignedShort(readBuffer, 8),
+ FieldTypeTestWithUnknownField.CONSTFIELD);
+
+ EnumTypeParameters enumField =
+ readEnumField(
+ "enumField",
+ "EnumTypeParameters",
+ readEnum(EnumTypeParameters::firstEnumForFieldIntType, readSignedByte(readBuffer, 8)));
+
+ short implicitField = readImplicitField("implicitField", readUnsignedShort(readBuffer, 8));
+
+ Short optionalField =
+ readOptionalField("optionalField", readUnsignedShort(readBuffer, 8), (simpleField) == (5));
+
+ readPaddingField(readUnsignedShort(readBuffer, 8), (int) (simpleField));
+
+ Short reservedField0 =
+ readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x00);
+
+ readUnknownField("unknown", readUnsignedInt(readBuffer, 16));
+
+ readBuffer.closeContext("FieldTypeTestWithUnknownField");
+ // Create the instance
+ FieldTypeTestWithUnknownField _fieldTypeTestWithUnknownField;
+ _fieldTypeTestWithUnknownField =
+ new FieldTypeTestWithUnknownField(simpleField, arrayField, enumField, optionalField);
+ return _fieldTypeTestWithUnknownField;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof FieldTypeTestWithUnknownField)) {
+ return false;
+ }
+ FieldTypeTestWithUnknownField that = (FieldTypeTestWithUnknownField) o;
+ return (getSimpleField() == that.getSimpleField())
+ && (getArrayField() == that.getArrayField())
+ && (getEnumField() == that.getEnumField())
+ && (getOptionalField() == that.getOptionalField())
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getSimpleField(), getArrayField(), getEnumField(), getOptionalField());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ImplicitPascalStringTypeTest.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ImplicitPascalStringTypeTest.java
new file mode 100644
index 0000000000..c4e7700473
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ImplicitPascalStringTypeTest.java
@@ -0,0 +1,138 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class ImplicitPascalStringTypeTest implements Message {
+
+ // Properties.
+ protected final String stringField;
+
+ public ImplicitPascalStringTypeTest(String stringField) {
+ super();
+ this.stringField = stringField;
+ }
+
+ public String getStringField() {
+ return stringField;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("ImplicitPascalStringTypeTest");
+
+ // Implicit Field (stringLength) (Used for parsing, but its value is not stored as it's
+ // implicitly given by the objects content)
+ byte stringLength = (byte) (getStringField().length());
+ writeImplicitField("stringLength", stringLength, writeSignedByte(writeBuffer, 8));
+
+ // Simple Field (stringField)
+ writeSimpleField("stringField", stringField, writeString(writeBuffer, stringLength));
+
+ writeBuffer.popContext("ImplicitPascalStringTypeTest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ ImplicitPascalStringTypeTest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Implicit Field (stringLength)
+ lengthInBits += 8;
+
+ // Simple field (stringField)
+ lengthInBits += getStringField().length();
+
+ return lengthInBits;
+ }
+
+ public static ImplicitPascalStringTypeTest staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static ImplicitPascalStringTypeTest staticParse(ReadBuffer readBuffer)
+ throws ParseException {
+ readBuffer.pullContext("ImplicitPascalStringTypeTest");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ byte stringLength = readImplicitField("stringLength", readSignedByte(readBuffer, 8));
+
+ String stringField = readSimpleField("stringField", readString(readBuffer, stringLength));
+
+ readBuffer.closeContext("ImplicitPascalStringTypeTest");
+ // Create the instance
+ ImplicitPascalStringTypeTest _implicitPascalStringTypeTest;
+ _implicitPascalStringTypeTest = new ImplicitPascalStringTypeTest(stringField);
+ return _implicitPascalStringTypeTest;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ImplicitPascalStringTypeTest)) {
+ return false;
+ }
+ ImplicitPascalStringTypeTest that = (ImplicitPascalStringTypeTest) o;
+ return (getStringField() == that.getStringField()) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getStringField());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ImplicitTypeTest.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ImplicitTypeTest.java
new file mode 100644
index 0000000000..b721b7330c
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ImplicitTypeTest.java
@@ -0,0 +1,187 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class ImplicitTypeTest implements Message {
+
+ // Properties.
+ protected final short simpleField;
+
+ public ImplicitTypeTest(short simpleField) {
+ super();
+ this.simpleField = simpleField;
+ }
+
+ public short getSimpleField() {
+ return simpleField;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("ImplicitTypeTest");
+
+ // Simple Field (simpleField)
+ writeSimpleField("simpleField", simpleField, writeUnsignedShort(writeBuffer, 8));
+
+ // Implicit Field (bitField) (Used for parsing, but its value is not stored as it's implicitly
+ // given by the objects content)
+ boolean bitField = (boolean) ((getSimpleField()) > (0));
+ writeImplicitField("bitField", bitField, writeBoolean(writeBuffer));
+
+ // Implicit Field (intField) (Used for parsing, but its value is not stored as it's implicitly
+ // given by the objects content)
+ byte intField = (byte) (getSimpleField());
+ writeImplicitField("intField", intField, writeSignedByte(writeBuffer, 8));
+
+ // Implicit Field (uintField) (Used for parsing, but its value is not stored as it's implicitly
+ // given by the objects content)
+ short uintField = (short) (getSimpleField());
+ writeImplicitField("uintField", uintField, writeUnsignedShort(writeBuffer, 8));
+
+ // Implicit Field (floatField) (Used for parsing, but its value is not stored as it's implicitly
+ // given by the objects content)
+ float floatField = (float) (getSimpleField());
+ writeImplicitField("floatField", floatField, writeFloat(writeBuffer, 32));
+
+ // Implicit Field (doubleField) (Used for parsing, but its value is not stored as it's
+ // implicitly given by the objects content)
+ double doubleField = (double) (getSimpleField());
+ writeImplicitField("doubleField", doubleField, writeDouble(writeBuffer, 64));
+
+ // Implicit Field (stringField) (Used for parsing, but its value is not stored as it's
+ // implicitly given by the objects content)
+ String stringField = (String) ((((getSimpleField()) > (0)) ? "HELLO TODDY" : "BYE TODDY"));
+ writeImplicitField("stringField", stringField, writeString(writeBuffer, 8));
+
+ writeBuffer.popContext("ImplicitTypeTest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ ImplicitTypeTest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpleField)
+ lengthInBits += 8;
+
+ // Implicit Field (bitField)
+ lengthInBits += 1;
+
+ // Implicit Field (intField)
+ lengthInBits += 8;
+
+ // Implicit Field (uintField)
+ lengthInBits += 8;
+
+ // Implicit Field (floatField)
+ lengthInBits += 32;
+
+ // Implicit Field (doubleField)
+ lengthInBits += 64;
+
+ // Implicit Field (stringField)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static ImplicitTypeTest staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static ImplicitTypeTest staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ImplicitTypeTest");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpleField = readSimpleField("simpleField", readUnsignedShort(readBuffer, 8));
+
+ boolean bitField = readImplicitField("bitField", readBoolean(readBuffer));
+
+ byte intField = readImplicitField("intField", readSignedByte(readBuffer, 8));
+
+ short uintField = readImplicitField("uintField", readUnsignedShort(readBuffer, 8));
+
+ float floatField = readImplicitField("floatField", readFloat(readBuffer, 32));
+
+ double doubleField = readImplicitField("doubleField", readDouble(readBuffer, 64));
+
+ String stringField = readImplicitField("stringField", readString(readBuffer, 8));
+
+ readBuffer.closeContext("ImplicitTypeTest");
+ // Create the instance
+ ImplicitTypeTest _implicitTypeTest;
+ _implicitTypeTest = new ImplicitTypeTest(simpleField);
+ return _implicitTypeTest;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ImplicitTypeTest)) {
+ return false;
+ }
+ ImplicitTypeTest that = (ImplicitTypeTest) o;
+ return (getSimpleField() == that.getSimpleField()) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getSimpleField());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/IntTypeTest.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/IntTypeTest.java
new file mode 100644
index 0000000000..5ccd564878
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/IntTypeTest.java
@@ -0,0 +1,217 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class IntTypeTest implements Message {
+
+ // Properties.
+ protected final byte ThreeField;
+ protected final byte ByteField;
+ protected final short WordField;
+ protected final int WordPlusByteField;
+ protected final int DoubleIntField;
+ protected final long QuadIntField;
+
+ public IntTypeTest(
+ byte ThreeField,
+ byte ByteField,
+ short WordField,
+ int WordPlusByteField,
+ int DoubleIntField,
+ long QuadIntField) {
+ super();
+ this.ThreeField = ThreeField;
+ this.ByteField = ByteField;
+ this.WordField = WordField;
+ this.WordPlusByteField = WordPlusByteField;
+ this.DoubleIntField = DoubleIntField;
+ this.QuadIntField = QuadIntField;
+ }
+
+ public byte getThreeField() {
+ return ThreeField;
+ }
+
+ public byte getByteField() {
+ return ByteField;
+ }
+
+ public short getWordField() {
+ return WordField;
+ }
+
+ public int getWordPlusByteField() {
+ return WordPlusByteField;
+ }
+
+ public int getDoubleIntField() {
+ return DoubleIntField;
+ }
+
+ public long getQuadIntField() {
+ return QuadIntField;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("IntTypeTest");
+
+ // Simple Field (ThreeField)
+ writeSimpleField("ThreeField", ThreeField, writeSignedByte(writeBuffer, 3));
+
+ // Simple Field (ByteField)
+ writeSimpleField("ByteField", ByteField, writeSignedByte(writeBuffer, 8));
+
+ // Simple Field (WordField)
+ writeSimpleField("WordField", WordField, writeSignedShort(writeBuffer, 16));
+
+ // Simple Field (WordPlusByteField)
+ writeSimpleField("WordPlusByteField", WordPlusByteField, writeSignedInt(writeBuffer, 24));
+
+ // Simple Field (DoubleIntField)
+ writeSimpleField("DoubleIntField", DoubleIntField, writeSignedInt(writeBuffer, 32));
+
+ // Simple Field (QuadIntField)
+ writeSimpleField("QuadIntField", QuadIntField, writeSignedLong(writeBuffer, 64));
+
+ writeBuffer.popContext("IntTypeTest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ IntTypeTest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (ThreeField)
+ lengthInBits += 3;
+
+ // Simple field (ByteField)
+ lengthInBits += 8;
+
+ // Simple field (WordField)
+ lengthInBits += 16;
+
+ // Simple field (WordPlusByteField)
+ lengthInBits += 24;
+
+ // Simple field (DoubleIntField)
+ lengthInBits += 32;
+
+ // Simple field (QuadIntField)
+ lengthInBits += 64;
+
+ return lengthInBits;
+ }
+
+ public static IntTypeTest staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static IntTypeTest staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("IntTypeTest");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ byte ThreeField = readSimpleField("ThreeField", readSignedByte(readBuffer, 3));
+
+ byte ByteField = readSimpleField("ByteField", readSignedByte(readBuffer, 8));
+
+ short WordField = readSimpleField("WordField", readSignedShort(readBuffer, 16));
+
+ int WordPlusByteField = readSimpleField("WordPlusByteField", readSignedInt(readBuffer, 24));
+
+ int DoubleIntField = readSimpleField("DoubleIntField", readSignedInt(readBuffer, 32));
+
+ long QuadIntField = readSimpleField("QuadIntField", readSignedLong(readBuffer, 64));
+
+ readBuffer.closeContext("IntTypeTest");
+ // Create the instance
+ IntTypeTest _intTypeTest;
+ _intTypeTest =
+ new IntTypeTest(
+ ThreeField, ByteField, WordField, WordPlusByteField, DoubleIntField, QuadIntField);
+ return _intTypeTest;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof IntTypeTest)) {
+ return false;
+ }
+ IntTypeTest that = (IntTypeTest) o;
+ return (getThreeField() == that.getThreeField())
+ && (getByteField() == that.getByteField())
+ && (getWordField() == that.getWordField())
+ && (getWordPlusByteField() == that.getWordPlusByteField())
+ && (getDoubleIntField() == that.getDoubleIntField())
+ && (getQuadIntField() == that.getQuadIntField())
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ getThreeField(),
+ getByteField(),
+ getWordField(),
+ getWordPlusByteField(),
+ getDoubleIntField(),
+ getQuadIntField());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/LengthLoopTest.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/LengthLoopTest.java
new file mode 100644
index 0000000000..f3a80c09ee
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/LengthLoopTest.java
@@ -0,0 +1,137 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class LengthLoopTest implements Message {
+
+ // Properties.
+ protected final int commandType;
+
+ public LengthLoopTest(int commandType) {
+ super();
+ this.commandType = commandType;
+ }
+
+ public int getCommandType() {
+ return commandType;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("LengthLoopTest");
+
+ // Simple Field (commandType)
+ writeSimpleField("commandType", commandType, writeUnsignedInt(writeBuffer, 16));
+
+ // Implicit Field (len) (Used for parsing, but its value is not stored as it's implicitly given
+ // by the objects content)
+ int len = (int) ((getLengthInBytes()) - (8));
+ writeImplicitField("len", len, writeUnsignedInt(writeBuffer, 16));
+
+ writeBuffer.popContext("LengthLoopTest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ LengthLoopTest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (commandType)
+ lengthInBits += 16;
+
+ // Implicit Field (len)
+ lengthInBits += 16;
+
+ return lengthInBits;
+ }
+
+ public static LengthLoopTest staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static LengthLoopTest staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("LengthLoopTest");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ int commandType = readSimpleField("commandType", readUnsignedInt(readBuffer, 16));
+
+ int len = readImplicitField("len", readUnsignedInt(readBuffer, 16));
+
+ readBuffer.closeContext("LengthLoopTest");
+ // Create the instance
+ LengthLoopTest _lengthLoopTest;
+ _lengthLoopTest = new LengthLoopTest(commandType);
+ return _lengthLoopTest;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof LengthLoopTest)) {
+ return false;
+ }
+ LengthLoopTest that = (LengthLoopTest) o;
+ return (getCommandType() == that.getCommandType()) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getCommandType());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/OptionalTypeTest.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/OptionalTypeTest.java
new file mode 100644
index 0000000000..3973c301b5
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/OptionalTypeTest.java
@@ -0,0 +1,146 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class OptionalTypeTest implements Message {
+
+ // Properties.
+ protected final short simpleField;
+ protected final Short optionalField;
+
+ public OptionalTypeTest(short simpleField, Short optionalField) {
+ super();
+ this.simpleField = simpleField;
+ this.optionalField = optionalField;
+ }
+
+ public short getSimpleField() {
+ return simpleField;
+ }
+
+ public Short getOptionalField() {
+ return optionalField;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("OptionalTypeTest");
+
+ // Simple Field (simpleField)
+ writeSimpleField("simpleField", simpleField, writeUnsignedShort(writeBuffer, 8));
+
+ // Optional Field (optionalField) (Can be skipped, if the value is null)
+ writeOptionalField("optionalField", optionalField, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("OptionalTypeTest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ OptionalTypeTest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpleField)
+ lengthInBits += 8;
+
+ // Optional Field (optionalField)
+ if (optionalField != null) {
+ lengthInBits += 8;
+ }
+
+ return lengthInBits;
+ }
+
+ public static OptionalTypeTest staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static OptionalTypeTest staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("OptionalTypeTest");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpleField = readSimpleField("simpleField", readUnsignedShort(readBuffer, 8));
+
+ Short optionalField =
+ readOptionalField("optionalField", readUnsignedShort(readBuffer, 8), (simpleField) == (5));
+
+ readBuffer.closeContext("OptionalTypeTest");
+ // Create the instance
+ OptionalTypeTest _optionalTypeTest;
+ _optionalTypeTest = new OptionalTypeTest(simpleField, optionalField);
+ return _optionalTypeTest;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof OptionalTypeTest)) {
+ return false;
+ }
+ OptionalTypeTest that = (OptionalTypeTest) o;
+ return (getSimpleField() == that.getSimpleField())
+ && (getOptionalField() == that.getOptionalField())
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getSimpleField(), getOptionalField());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/PaddingTypeTest.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/PaddingTypeTest.java
new file mode 100644
index 0000000000..2eea0789a8
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/PaddingTypeTest.java
@@ -0,0 +1,139 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class PaddingTypeTest implements Message {
+
+ // Properties.
+ protected final short simpleField;
+
+ public PaddingTypeTest(short simpleField) {
+ super();
+ this.simpleField = simpleField;
+ }
+
+ public short getSimpleField() {
+ return simpleField;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("PaddingTypeTest");
+
+ // Simple Field (simpleField)
+ writeSimpleField("simpleField", simpleField, writeUnsignedShort(writeBuffer, 8));
+
+ // Padding Field (padding)
+ writePaddingField(
+ "padding", (int) (simpleField), (short) 0x00, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("PaddingTypeTest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ PaddingTypeTest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpleField)
+ lengthInBits += 8;
+
+ // Padding Field (padding)
+ int _timesPadding = (int) (simpleField);
+ while (_timesPadding-- > 0) {
+ lengthInBits += 8;
+ }
+
+ return lengthInBits;
+ }
+
+ public static PaddingTypeTest staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static PaddingTypeTest staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("PaddingTypeTest");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpleField = readSimpleField("simpleField", readUnsignedShort(readBuffer, 8));
+
+ readPaddingField(readUnsignedShort(readBuffer, 8), (int) (simpleField));
+
+ readBuffer.closeContext("PaddingTypeTest");
+ // Create the instance
+ PaddingTypeTest _paddingTypeTest;
+ _paddingTypeTest = new PaddingTypeTest(simpleField);
+ return _paddingTypeTest;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof PaddingTypeTest)) {
+ return false;
+ }
+ PaddingTypeTest that = (PaddingTypeTest) o;
+ return (getSimpleField() == that.getSimpleField()) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getSimpleField());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/PascalStringTypeTest.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/PascalStringTypeTest.java
new file mode 100644
index 0000000000..831b25a620
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/PascalStringTypeTest.java
@@ -0,0 +1,143 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class PascalStringTypeTest implements Message {
+
+ // Properties.
+ protected final byte stringLength;
+ protected final String stringField;
+
+ public PascalStringTypeTest(byte stringLength, String stringField) {
+ super();
+ this.stringLength = stringLength;
+ this.stringField = stringField;
+ }
+
+ public byte getStringLength() {
+ return stringLength;
+ }
+
+ public String getStringField() {
+ return stringField;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("PascalStringTypeTest");
+
+ // Simple Field (stringLength)
+ writeSimpleField("stringLength", stringLength, writeSignedByte(writeBuffer, 8));
+
+ // Simple Field (stringField)
+ writeSimpleField("stringField", stringField, writeString(writeBuffer, stringLength));
+
+ writeBuffer.popContext("PascalStringTypeTest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ PascalStringTypeTest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (stringLength)
+ lengthInBits += 8;
+
+ // Simple field (stringField)
+ lengthInBits += getStringLength();
+
+ return lengthInBits;
+ }
+
+ public static PascalStringTypeTest staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static PascalStringTypeTest staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("PascalStringTypeTest");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ byte stringLength = readSimpleField("stringLength", readSignedByte(readBuffer, 8));
+
+ String stringField = readSimpleField("stringField", readString(readBuffer, stringLength));
+
+ readBuffer.closeContext("PascalStringTypeTest");
+ // Create the instance
+ PascalStringTypeTest _pascalStringTypeTest;
+ _pascalStringTypeTest = new PascalStringTypeTest(stringLength, stringField);
+ return _pascalStringTypeTest;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof PascalStringTypeTest)) {
+ return false;
+ }
+ PascalStringTypeTest that = (PascalStringTypeTest) o;
+ return (getStringLength() == that.getStringLength())
+ && (getStringField() == that.getStringField())
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getStringLength(), getStringField());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ReservedTypeTest.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ReservedTypeTest.java
new file mode 100644
index 0000000000..8bb4fb2f27
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ReservedTypeTest.java
@@ -0,0 +1,120 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class ReservedTypeTest implements Message {
+
+ public ReservedTypeTest() {
+ super();
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("ReservedTypeTest");
+
+ // Reserved Field (reserved)
+ writeReservedField("reserved", (short) 0x00, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("ReservedTypeTest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ ReservedTypeTest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Reserved Field (reserved)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static ReservedTypeTest staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static ReservedTypeTest staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ReservedTypeTest");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ Short reservedField0 =
+ readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x00);
+
+ readBuffer.closeContext("ReservedTypeTest");
+ // Create the instance
+ ReservedTypeTest _reservedTypeTest;
+ _reservedTypeTest = new ReservedTypeTest();
+ return _reservedTypeTest;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ReservedTypeTest)) {
+ return false;
+ }
+ ReservedTypeTest that = (ReservedTypeTest) o;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash();
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ReservedTypeTestChild.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ReservedTypeTestChild.java
new file mode 100644
index 0000000000..85bb3a3790
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ReservedTypeTestChild.java
@@ -0,0 +1,128 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class ReservedTypeTestChild extends ReservedTypeTestParent implements Message {
+
+ // Accessors for discriminator values.
+
+ public ReservedTypeTestChild(short simpleField) {
+ super(simpleField);
+ }
+
+ @Override
+ protected void serializeReservedTypeTestParentChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("ReservedTypeTestChild");
+
+ // Reserved Field (reserved)
+ writeReservedField("reserved", (short) 0x00, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("ReservedTypeTestChild");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ ReservedTypeTestChild _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Reserved Field (reserved)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static ReservedTypeTestParentBuilder staticParseReservedTypeTestParentBuilder(
+ ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ReservedTypeTestChild");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ Short reservedField0 =
+ readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x00);
+
+ readBuffer.closeContext("ReservedTypeTestChild");
+ // Create the instance
+ return new ReservedTypeTestChildBuilderImpl();
+ }
+
+ public static class ReservedTypeTestChildBuilderImpl
+ implements ReservedTypeTestParent.ReservedTypeTestParentBuilder {
+
+ public ReservedTypeTestChildBuilderImpl() {}
+
+ public ReservedTypeTestChild build(short simpleField) {
+ ReservedTypeTestChild reservedTypeTestChild = new ReservedTypeTestChild(simpleField);
+ return reservedTypeTestChild;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ReservedTypeTestChild)) {
+ return false;
+ }
+ ReservedTypeTestChild that = (ReservedTypeTestChild) o;
+ return super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ReservedTypeTestParent.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ReservedTypeTestParent.java
new file mode 100644
index 0000000000..1f450bcb5c
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/ReservedTypeTestParent.java
@@ -0,0 +1,163 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public abstract class ReservedTypeTestParent implements Message {
+
+ // Abstract accessors for discriminator values.
+
+ // Properties.
+ protected final short simpleField;
+
+ public ReservedTypeTestParent(short simpleField) {
+ super();
+ this.simpleField = simpleField;
+ }
+
+ public short getSimpleField() {
+ return simpleField;
+ }
+
+ protected abstract void serializeReservedTypeTestParentChild(WriteBuffer writeBuffer)
+ throws SerializationException;
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("ReservedTypeTestParent");
+
+ // Reserved Field (reserved)
+ writeReservedField("reserved", (short) 0x00, writeUnsignedShort(writeBuffer, 8));
+
+ // Simple Field (simpleField)
+ writeSimpleField("simpleField", simpleField, writeUnsignedShort(writeBuffer, 8));
+
+ // Switch field (Serialize the sub-type)
+ serializeReservedTypeTestParentChild(writeBuffer);
+
+ writeBuffer.popContext("ReservedTypeTestParent");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ ReservedTypeTestParent _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Reserved Field (reserved)
+ lengthInBits += 8;
+
+ // Simple field (simpleField)
+ lengthInBits += 8;
+
+ // Length of sub-type elements will be added by sub-type...
+
+ return lengthInBits;
+ }
+
+ public static ReservedTypeTestParent staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static ReservedTypeTestParent staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("ReservedTypeTestParent");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ Short reservedField0 =
+ readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x00);
+
+ short simpleField = readSimpleField("simpleField", readUnsignedShort(readBuffer, 8));
+
+ // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+ ReservedTypeTestParentBuilder builder = null;
+ if (EvaluationHelper.equals(simpleField, (short) 0)) {
+ builder = ReservedTypeTestChild.staticParseReservedTypeTestParentBuilder(readBuffer);
+ }
+ if (builder == null) {
+ throw new ParseException(
+ "Unsupported case for discriminated type"
+ + " parameters ["
+ + "simpleField="
+ + simpleField
+ + "]");
+ }
+
+ readBuffer.closeContext("ReservedTypeTestParent");
+ // Create the instance
+ ReservedTypeTestParent _reservedTypeTestParent = builder.build(simpleField);
+ return _reservedTypeTestParent;
+ }
+
+ public interface ReservedTypeTestParentBuilder {
+ ReservedTypeTestParent build(short simpleField);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ReservedTypeTestParent)) {
+ return false;
+ }
+ ReservedTypeTestParent that = (ReservedTypeTestParent) o;
+ return (getSimpleField() == that.getSimpleField()) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getSimpleField());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/SimpleBitTypeTest.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/SimpleBitTypeTest.java
new file mode 100644
index 0000000000..eb62286604
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/SimpleBitTypeTest.java
@@ -0,0 +1,127 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class SimpleBitTypeTest implements Message {
+
+ // Properties.
+ protected final boolean bitField;
+
+ public SimpleBitTypeTest(boolean bitField) {
+ super();
+ this.bitField = bitField;
+ }
+
+ public boolean getBitField() {
+ return bitField;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("SimpleBitTypeTest");
+
+ // Simple Field (bitField)
+ writeSimpleField("bitField", bitField, writeBoolean(writeBuffer));
+
+ writeBuffer.popContext("SimpleBitTypeTest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ SimpleBitTypeTest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (bitField)
+ lengthInBits += 1;
+
+ return lengthInBits;
+ }
+
+ public static SimpleBitTypeTest staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static SimpleBitTypeTest staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("SimpleBitTypeTest");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ boolean bitField = readSimpleField("bitField", readBoolean(readBuffer));
+
+ readBuffer.closeContext("SimpleBitTypeTest");
+ // Create the instance
+ SimpleBitTypeTest _simpleBitTypeTest;
+ _simpleBitTypeTest = new SimpleBitTypeTest(bitField);
+ return _simpleBitTypeTest;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof SimpleBitTypeTest)) {
+ return false;
+ }
+ SimpleBitTypeTest that = (SimpleBitTypeTest) o;
+ return (getBitField() == that.getBitField()) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getBitField());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/SimpleDiscriminatedType.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/SimpleDiscriminatedType.java
new file mode 100644
index 0000000000..3be4febaf8
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/SimpleDiscriminatedType.java
@@ -0,0 +1,147 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public abstract class SimpleDiscriminatedType implements Message {
+
+ // Abstract accessors for discriminator values.
+ public abstract Short getDiscr();
+
+ public SimpleDiscriminatedType() {
+ super();
+ }
+
+ protected abstract void serializeSimpleDiscriminatedTypeChild(WriteBuffer writeBuffer)
+ throws SerializationException;
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("SimpleDiscriminatedType");
+
+ // Discriminator Field (discr) (Used as input to a switch field)
+ writeDiscriminatorField("discr", getDiscr(), writeUnsignedShort(writeBuffer, 8));
+
+ // Switch field (Serialize the sub-type)
+ serializeSimpleDiscriminatedTypeChild(writeBuffer);
+
+ writeBuffer.popContext("SimpleDiscriminatedType");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ SimpleDiscriminatedType _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Discriminator Field (discr)
+ lengthInBits += 8;
+
+ // Length of sub-type elements will be added by sub-type...
+
+ return lengthInBits;
+ }
+
+ public static SimpleDiscriminatedType staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static SimpleDiscriminatedType staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("SimpleDiscriminatedType");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short discr = readDiscriminatorField("discr", readUnsignedShort(readBuffer, 8));
+
+ // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+ SimpleDiscriminatedTypeBuilder builder = null;
+ if (EvaluationHelper.equals(discr, (short) 0x00)) {
+ builder = SimpleDiscriminatedTypeA.staticParseSimpleDiscriminatedTypeBuilder(readBuffer);
+ } else if (EvaluationHelper.equals(discr, (short) 0x01)) {
+ builder = SimpleDiscriminatedTypeB.staticParseSimpleDiscriminatedTypeBuilder(readBuffer);
+ } else if (EvaluationHelper.equals(discr, (short) 0x02)) {
+ builder = SimpleDiscriminatedTypeC.staticParseSimpleDiscriminatedTypeBuilder(readBuffer);
+ }
+ if (builder == null) {
+ throw new ParseException(
+ "Unsupported case for discriminated type" + " parameters [" + "discr=" + discr + "]");
+ }
+
+ readBuffer.closeContext("SimpleDiscriminatedType");
+ // Create the instance
+ SimpleDiscriminatedType _simpleDiscriminatedType = builder.build();
+ return _simpleDiscriminatedType;
+ }
+
+ public interface SimpleDiscriminatedTypeBuilder {
+ SimpleDiscriminatedType build();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof SimpleDiscriminatedType)) {
+ return false;
+ }
+ SimpleDiscriminatedType that = (SimpleDiscriminatedType) o;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash();
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/SimpleDiscriminatedTypeA.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/SimpleDiscriminatedTypeA.java
new file mode 100644
index 0000000000..125015b7f9
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/SimpleDiscriminatedTypeA.java
@@ -0,0 +1,141 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class SimpleDiscriminatedTypeA extends SimpleDiscriminatedType implements Message {
+
+ // Accessors for discriminator values.
+ public Short getDiscr() {
+ return (short) 0x00;
+ }
+
+ // Properties.
+ protected final short simpA;
+
+ public SimpleDiscriminatedTypeA(short simpA) {
+ super();
+ this.simpA = simpA;
+ }
+
+ public short getSimpA() {
+ return simpA;
+ }
+
+ @Override
+ protected void serializeSimpleDiscriminatedTypeChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("SimpleDiscriminatedTypeA");
+
+ // Simple Field (simpA)
+ writeSimpleField("simpA", simpA, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("SimpleDiscriminatedTypeA");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ SimpleDiscriminatedTypeA _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpA)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static SimpleDiscriminatedTypeBuilder staticParseSimpleDiscriminatedTypeBuilder(
+ ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("SimpleDiscriminatedTypeA");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpA = readSimpleField("simpA", readUnsignedShort(readBuffer, 8));
+
+ readBuffer.closeContext("SimpleDiscriminatedTypeA");
+ // Create the instance
+ return new SimpleDiscriminatedTypeABuilderImpl(simpA);
+ }
+
+ public static class SimpleDiscriminatedTypeABuilderImpl
+ implements SimpleDiscriminatedType.SimpleDiscriminatedTypeBuilder {
+ private final short simpA;
+
+ public SimpleDiscriminatedTypeABuilderImpl(short simpA) {
+ this.simpA = simpA;
+ }
+
+ public SimpleDiscriminatedTypeA build() {
+ SimpleDiscriminatedTypeA simpleDiscriminatedTypeA = new SimpleDiscriminatedTypeA(simpA);
+ return simpleDiscriminatedTypeA;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof SimpleDiscriminatedTypeA)) {
+ return false;
+ }
+ SimpleDiscriminatedTypeA that = (SimpleDiscriminatedTypeA) o;
+ return (getSimpA() == that.getSimpA()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getSimpA());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/SimpleDiscriminatedTypeB.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/SimpleDiscriminatedTypeB.java
new file mode 100644
index 0000000000..becfdfa80f
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/SimpleDiscriminatedTypeB.java
@@ -0,0 +1,141 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class SimpleDiscriminatedTypeB extends SimpleDiscriminatedType implements Message {
+
+ // Accessors for discriminator values.
+ public Short getDiscr() {
+ return (short) 0x01;
+ }
+
+ // Properties.
+ protected final short simpB;
+
+ public SimpleDiscriminatedTypeB(short simpB) {
+ super();
+ this.simpB = simpB;
+ }
+
+ public short getSimpB() {
+ return simpB;
+ }
+
+ @Override
+ protected void serializeSimpleDiscriminatedTypeChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("SimpleDiscriminatedTypeB");
+
+ // Simple Field (simpB)
+ writeSimpleField("simpB", simpB, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("SimpleDiscriminatedTypeB");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ SimpleDiscriminatedTypeB _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpB)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static SimpleDiscriminatedTypeBuilder staticParseSimpleDiscriminatedTypeBuilder(
+ ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("SimpleDiscriminatedTypeB");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpB = readSimpleField("simpB", readUnsignedShort(readBuffer, 8));
+
+ readBuffer.closeContext("SimpleDiscriminatedTypeB");
+ // Create the instance
+ return new SimpleDiscriminatedTypeBBuilderImpl(simpB);
+ }
+
+ public static class SimpleDiscriminatedTypeBBuilderImpl
+ implements SimpleDiscriminatedType.SimpleDiscriminatedTypeBuilder {
+ private final short simpB;
+
+ public SimpleDiscriminatedTypeBBuilderImpl(short simpB) {
+ this.simpB = simpB;
+ }
+
+ public SimpleDiscriminatedTypeB build() {
+ SimpleDiscriminatedTypeB simpleDiscriminatedTypeB = new SimpleDiscriminatedTypeB(simpB);
+ return simpleDiscriminatedTypeB;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof SimpleDiscriminatedTypeB)) {
+ return false;
+ }
+ SimpleDiscriminatedTypeB that = (SimpleDiscriminatedTypeB) o;
+ return (getSimpB() == that.getSimpB()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getSimpB());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/SimpleDiscriminatedTypeC.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/SimpleDiscriminatedTypeC.java
new file mode 100644
index 0000000000..bb1a63f8f6
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/SimpleDiscriminatedTypeC.java
@@ -0,0 +1,141 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class SimpleDiscriminatedTypeC extends SimpleDiscriminatedType implements Message {
+
+ // Accessors for discriminator values.
+ public Short getDiscr() {
+ return (short) 0x02;
+ }
+
+ // Properties.
+ protected final short simpC;
+
+ public SimpleDiscriminatedTypeC(short simpC) {
+ super();
+ this.simpC = simpC;
+ }
+
+ public short getSimpC() {
+ return simpC;
+ }
+
+ @Override
+ protected void serializeSimpleDiscriminatedTypeChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("SimpleDiscriminatedTypeC");
+
+ // Simple Field (simpC)
+ writeSimpleField("simpC", simpC, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("SimpleDiscriminatedTypeC");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ SimpleDiscriminatedTypeC _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpC)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static SimpleDiscriminatedTypeBuilder staticParseSimpleDiscriminatedTypeBuilder(
+ ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("SimpleDiscriminatedTypeC");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpC = readSimpleField("simpC", readUnsignedShort(readBuffer, 8));
+
+ readBuffer.closeContext("SimpleDiscriminatedTypeC");
+ // Create the instance
+ return new SimpleDiscriminatedTypeCBuilderImpl(simpC);
+ }
+
+ public static class SimpleDiscriminatedTypeCBuilderImpl
+ implements SimpleDiscriminatedType.SimpleDiscriminatedTypeBuilder {
+ private final short simpC;
+
+ public SimpleDiscriminatedTypeCBuilderImpl(short simpC) {
+ this.simpC = simpC;
+ }
+
+ public SimpleDiscriminatedTypeC build() {
+ SimpleDiscriminatedTypeC simpleDiscriminatedTypeC = new SimpleDiscriminatedTypeC(simpC);
+ return simpleDiscriminatedTypeC;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof SimpleDiscriminatedTypeC)) {
+ return false;
+ }
+ SimpleDiscriminatedTypeC that = (SimpleDiscriminatedTypeC) o;
+ return (getSimpC() == that.getSimpC()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getSimpC());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/SimpleTypeTest.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/SimpleTypeTest.java
new file mode 100644
index 0000000000..2ee0c86c25
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/SimpleTypeTest.java
@@ -0,0 +1,234 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class SimpleTypeTest implements Message {
+
+ // Properties.
+ protected final boolean bitField;
+ protected final byte byteField;
+ protected final byte intField;
+ protected final short uintField;
+ protected final float floatField;
+ protected final double doubleField;
+ protected final String stringField;
+
+ public SimpleTypeTest(
+ boolean bitField,
+ byte byteField,
+ byte intField,
+ short uintField,
+ float floatField,
+ double doubleField,
+ String stringField) {
+ super();
+ this.bitField = bitField;
+ this.byteField = byteField;
+ this.intField = intField;
+ this.uintField = uintField;
+ this.floatField = floatField;
+ this.doubleField = doubleField;
+ this.stringField = stringField;
+ }
+
+ public boolean getBitField() {
+ return bitField;
+ }
+
+ public byte getByteField() {
+ return byteField;
+ }
+
+ public byte getIntField() {
+ return intField;
+ }
+
+ public short getUintField() {
+ return uintField;
+ }
+
+ public float getFloatField() {
+ return floatField;
+ }
+
+ public double getDoubleField() {
+ return doubleField;
+ }
+
+ public String getStringField() {
+ return stringField;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("SimpleTypeTest");
+
+ // Simple Field (bitField)
+ writeSimpleField("bitField", bitField, writeBoolean(writeBuffer));
+
+ // Simple Field (byteField)
+ writeSimpleField("byteField", byteField, writeByte(writeBuffer, 8));
+
+ // Simple Field (intField)
+ writeSimpleField("intField", intField, writeSignedByte(writeBuffer, 8));
+
+ // Simple Field (uintField)
+ writeSimpleField("uintField", uintField, writeUnsignedShort(writeBuffer, 8));
+
+ // Simple Field (floatField)
+ writeSimpleField("floatField", floatField, writeFloat(writeBuffer, 32));
+
+ // Simple Field (doubleField)
+ writeSimpleField("doubleField", doubleField, writeDouble(writeBuffer, 64));
+
+ // Simple Field (stringField)
+ writeSimpleField("stringField", stringField, writeString(writeBuffer, 8));
+
+ writeBuffer.popContext("SimpleTypeTest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ SimpleTypeTest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (bitField)
+ lengthInBits += 1;
+
+ // Simple field (byteField)
+ lengthInBits += 8;
+
+ // Simple field (intField)
+ lengthInBits += 8;
+
+ // Simple field (uintField)
+ lengthInBits += 8;
+
+ // Simple field (floatField)
+ lengthInBits += 32;
+
+ // Simple field (doubleField)
+ lengthInBits += 64;
+
+ // Simple field (stringField)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static SimpleTypeTest staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static SimpleTypeTest staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("SimpleTypeTest");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ boolean bitField = readSimpleField("bitField", readBoolean(readBuffer));
+
+ byte byteField = readSimpleField("byteField", readByte(readBuffer, 8));
+
+ byte intField = readSimpleField("intField", readSignedByte(readBuffer, 8));
+
+ short uintField = readSimpleField("uintField", readUnsignedShort(readBuffer, 8));
+
+ float floatField = readSimpleField("floatField", readFloat(readBuffer, 32));
+
+ double doubleField = readSimpleField("doubleField", readDouble(readBuffer, 64));
+
+ String stringField = readSimpleField("stringField", readString(readBuffer, 8));
+
+ readBuffer.closeContext("SimpleTypeTest");
+ // Create the instance
+ SimpleTypeTest _simpleTypeTest;
+ _simpleTypeTest =
+ new SimpleTypeTest(
+ bitField, byteField, intField, uintField, floatField, doubleField, stringField);
+ return _simpleTypeTest;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof SimpleTypeTest)) {
+ return false;
+ }
+ SimpleTypeTest that = (SimpleTypeTest) o;
+ return (getBitField() == that.getBitField())
+ && (getByteField() == that.getByteField())
+ && (getIntField() == that.getIntField())
+ && (getUintField() == that.getUintField())
+ && (getFloatField() == that.getFloatField())
+ && (getDoubleField() == that.getDoubleField())
+ && (getStringField() == that.getStringField())
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ getBitField(),
+ getByteField(),
+ getIntField(),
+ getUintField(),
+ getFloatField(),
+ getDoubleField(),
+ getStringField());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/UIntTypeTest.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/UIntTypeTest.java
new file mode 100644
index 0000000000..1306d4140d
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/UIntTypeTest.java
@@ -0,0 +1,219 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.math.BigInteger;
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class UIntTypeTest implements Message {
+
+ // Properties.
+ protected final byte ThreeField;
+ protected final short ByteField;
+ protected final int WordField;
+ protected final int WordPlusByteField;
+ protected final long DoubleIntField;
+ protected final BigInteger QuadIntField;
+
+ public UIntTypeTest(
+ byte ThreeField,
+ short ByteField,
+ int WordField,
+ int WordPlusByteField,
+ long DoubleIntField,
+ BigInteger QuadIntField) {
+ super();
+ this.ThreeField = ThreeField;
+ this.ByteField = ByteField;
+ this.WordField = WordField;
+ this.WordPlusByteField = WordPlusByteField;
+ this.DoubleIntField = DoubleIntField;
+ this.QuadIntField = QuadIntField;
+ }
+
+ public byte getThreeField() {
+ return ThreeField;
+ }
+
+ public short getByteField() {
+ return ByteField;
+ }
+
+ public int getWordField() {
+ return WordField;
+ }
+
+ public int getWordPlusByteField() {
+ return WordPlusByteField;
+ }
+
+ public long getDoubleIntField() {
+ return DoubleIntField;
+ }
+
+ public BigInteger getQuadIntField() {
+ return QuadIntField;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("UIntTypeTest");
+
+ // Simple Field (ThreeField)
+ writeSimpleField("ThreeField", ThreeField, writeUnsignedByte(writeBuffer, 3));
+
+ // Simple Field (ByteField)
+ writeSimpleField("ByteField", ByteField, writeUnsignedShort(writeBuffer, 8));
+
+ // Simple Field (WordField)
+ writeSimpleField("WordField", WordField, writeUnsignedInt(writeBuffer, 16));
+
+ // Simple Field (WordPlusByteField)
+ writeSimpleField("WordPlusByteField", WordPlusByteField, writeUnsignedInt(writeBuffer, 24));
+
+ // Simple Field (DoubleIntField)
+ writeSimpleField("DoubleIntField", DoubleIntField, writeUnsignedLong(writeBuffer, 32));
+
+ // Simple Field (QuadIntField)
+ writeSimpleField("QuadIntField", QuadIntField, writeUnsignedBigInteger(writeBuffer, 64));
+
+ writeBuffer.popContext("UIntTypeTest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ UIntTypeTest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (ThreeField)
+ lengthInBits += 3;
+
+ // Simple field (ByteField)
+ lengthInBits += 8;
+
+ // Simple field (WordField)
+ lengthInBits += 16;
+
+ // Simple field (WordPlusByteField)
+ lengthInBits += 24;
+
+ // Simple field (DoubleIntField)
+ lengthInBits += 32;
+
+ // Simple field (QuadIntField)
+ lengthInBits += 64;
+
+ return lengthInBits;
+ }
+
+ public static UIntTypeTest staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static UIntTypeTest staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("UIntTypeTest");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ byte ThreeField = readSimpleField("ThreeField", readUnsignedByte(readBuffer, 3));
+
+ short ByteField = readSimpleField("ByteField", readUnsignedShort(readBuffer, 8));
+
+ int WordField = readSimpleField("WordField", readUnsignedInt(readBuffer, 16));
+
+ int WordPlusByteField = readSimpleField("WordPlusByteField", readUnsignedInt(readBuffer, 24));
+
+ long DoubleIntField = readSimpleField("DoubleIntField", readUnsignedLong(readBuffer, 32));
+
+ BigInteger QuadIntField =
+ readSimpleField("QuadIntField", readUnsignedBigInteger(readBuffer, 64));
+
+ readBuffer.closeContext("UIntTypeTest");
+ // Create the instance
+ UIntTypeTest _uIntTypeTest;
+ _uIntTypeTest =
+ new UIntTypeTest(
+ ThreeField, ByteField, WordField, WordPlusByteField, DoubleIntField, QuadIntField);
+ return _uIntTypeTest;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof UIntTypeTest)) {
+ return false;
+ }
+ UIntTypeTest that = (UIntTypeTest) o;
+ return (getThreeField() == that.getThreeField())
+ && (getByteField() == that.getByteField())
+ && (getWordField() == that.getWordField())
+ && (getWordPlusByteField() == that.getWordPlusByteField())
+ && (getDoubleIntField() == that.getDoubleIntField())
+ && (getQuadIntField() == that.getQuadIntField())
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ getThreeField(),
+ getByteField(),
+ getWordField(),
+ getWordPlusByteField(),
+ getDoubleIntField(),
+ getQuadIntField());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/VirtualFieldTest.java b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/VirtualFieldTest.java
new file mode 100644
index 0000000000..f122e032e4
--- /dev/null
+++ b/code-generation/tests/protocol-test-java/src/main/generated/org/apache/plc4x/java/test/readwrite/VirtualFieldTest.java
@@ -0,0 +1,194 @@
+/*
+ * 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
+ *
+ * https://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.java.test.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class VirtualFieldTest implements Message {
+
+ // Properties.
+ protected final short simpleField;
+
+ public VirtualFieldTest(short simpleField) {
+ super();
+ this.simpleField = simpleField;
+ }
+
+ public short getSimpleField() {
+ return simpleField;
+ }
+
+ public boolean getVirtualBitField() {
+ return (boolean) ((getSimpleField()) == (0));
+ }
+
+ public byte getVirtualIntField() {
+ return (byte) (getSimpleField());
+ }
+
+ public short getVirtualUintField() {
+ return (short) (getSimpleField());
+ }
+
+ public float getVirtualFloatField() {
+ return (float) (getSimpleField());
+ }
+
+ public double getVirtualDoubleField() {
+ return (double) (getSimpleField());
+ }
+
+ public String getVirtualStringField() {
+ return String.valueOf(getSimpleField());
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("VirtualFieldTest");
+
+ // Simple Field (simpleField)
+ writeSimpleField("simpleField", simpleField, writeUnsignedShort(writeBuffer, 8));
+
+ // Virtual field (doesn't actually serialize anything, just makes the value available)
+ boolean virtualBitField = getVirtualBitField();
+ writeBuffer.writeVirtual("virtualBitField", virtualBitField);
+
+ // Virtual field (doesn't actually serialize anything, just makes the value available)
+ byte virtualIntField = getVirtualIntField();
+ writeBuffer.writeVirtual("virtualIntField", virtualIntField);
+
+ // Virtual field (doesn't actually serialize anything, just makes the value available)
+ short virtualUintField = getVirtualUintField();
+ writeBuffer.writeVirtual("virtualUintField", virtualUintField);
+
+ // Virtual field (doesn't actually serialize anything, just makes the value available)
+ float virtualFloatField = getVirtualFloatField();
+ writeBuffer.writeVirtual("virtualFloatField", virtualFloatField);
+
+ // Virtual field (doesn't actually serialize anything, just makes the value available)
+ double virtualDoubleField = getVirtualDoubleField();
+ writeBuffer.writeVirtual("virtualDoubleField", virtualDoubleField);
+
+ // Virtual field (doesn't actually serialize anything, just makes the value available)
+ String virtualStringField = getVirtualStringField();
+ writeBuffer.writeVirtual("virtualStringField", virtualStringField);
+
+ writeBuffer.popContext("VirtualFieldTest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ VirtualFieldTest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (simpleField)
+ lengthInBits += 8;
+
+ // A virtual field doesn't have any in- or output.
+
+ // A virtual field doesn't have any in- or output.
+
+ // A virtual field doesn't have any in- or output.
+
+ // A virtual field doesn't have any in- or output.
+
+ // A virtual field doesn't have any in- or output.
+
+ // A virtual field doesn't have any in- or output.
+
+ return lengthInBits;
+ }
+
+ public static VirtualFieldTest staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static VirtualFieldTest staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("VirtualFieldTest");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short simpleField = readSimpleField("simpleField", readUnsignedShort(readBuffer, 8));
+ boolean virtualBitField =
+ readVirtualField("virtualBitField", boolean.class, (simpleField) == (0));
+ byte virtualIntField = readVirtualField("virtualIntField", byte.class, simpleField);
+ short virtualUintField = readVirtualField("virtualUintField", short.class, simpleField);
+ float virtualFloatField = readVirtualField("virtualFloatField", float.class, simpleField);
+ double virtualDoubleField = readVirtualField("virtualDoubleField", double.class, simpleField);
+ String virtualStringField = readVirtualField("virtualStringField", String.class, simpleField);
+
+ readBuffer.closeContext("VirtualFieldTest");
+ // Create the instance
+ VirtualFieldTest _virtualFieldTest;
+ _virtualFieldTest = new VirtualFieldTest(simpleField);
+ return _virtualFieldTest;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof VirtualFieldTest)) {
+ return false;
+ }
+ VirtualFieldTest that = (VirtualFieldTest) o;
+ return (getSimpleField() == that.getSimpleField()) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getSimpleField());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/plc4j/drivers/firmata/src/main/generated/org/apache/plc4x/java/firmata/readwrite/FirmataCommand.java b/plc4j/drivers/firmata/src/main/generated/org/apache/plc4x/java/firmata/readwrite/FirmataCommand.java
new file mode 100644
index 0000000000..ede9b50ca7
--- /dev/null
+++ b/plc4j/drivers/firmata/src/main/generated/org/apache/plc4x/java/firmata/readwrite/FirmataCommand.java
@@ -0,0 +1,172 @@
+/*
+ * 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
+ *
+ * https://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.java.firmata.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public abstract class FirmataCommand implements Message {
+
+ // Abstract accessors for discriminator values.
+ public abstract Byte getCommandCode();
+
+ public FirmataCommand() {
+ super();
+ }
+
+ protected abstract void serializeFirmataCommandChild(WriteBuffer writeBuffer)
+ throws SerializationException;
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("FirmataCommand");
+
+ // Discriminator Field (commandCode) (Used as input to a switch field)
+ writeDiscriminatorField("commandCode", getCommandCode(), writeUnsignedByte(writeBuffer, 4));
+
+ // Switch field (Serialize the sub-type)
+ serializeFirmataCommandChild(writeBuffer);
+
+ writeBuffer.popContext("FirmataCommand");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ FirmataCommand _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Discriminator Field (commandCode)
+ lengthInBits += 4;
+
+ // Length of sub-type elements will be added by sub-type...
+
+ return lengthInBits;
+ }
+
+ public static FirmataCommand staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ if ((args == null) || (args.length != 1)) {
+ throw new PlcRuntimeException(
+ "Wrong number of arguments, expected 1, but got " + args.length);
+ }
+ Boolean response;
+ if (args[0] instanceof Boolean) {
+ response = (Boolean) args[0];
+ } else if (args[0] instanceof String) {
+ response = Boolean.valueOf((String) args[0]);
+ } else {
+ throw new PlcRuntimeException(
+ "Argument 0 expected to be of type Boolean or a string which is parseable but was "
+ + args[0].getClass().getName());
+ }
+ return staticParse(readBuffer, response);
+ }
+
+ public static FirmataCommand staticParse(ReadBuffer readBuffer, Boolean response)
+ throws ParseException {
+ readBuffer.pullContext("FirmataCommand");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ byte commandCode = readDiscriminatorField("commandCode", readUnsignedByte(readBuffer, 4));
+
+ // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+ FirmataCommandBuilder builder = null;
+ if (EvaluationHelper.equals(commandCode, (byte) 0x0)) {
+ builder = FirmataCommandSysex.staticParseFirmataCommandBuilder(readBuffer, response);
+ } else if (EvaluationHelper.equals(commandCode, (byte) 0x4)) {
+ builder = FirmataCommandSetPinMode.staticParseFirmataCommandBuilder(readBuffer, response);
+ } else if (EvaluationHelper.equals(commandCode, (byte) 0x5)) {
+ builder =
+ FirmataCommandSetDigitalPinValue.staticParseFirmataCommandBuilder(readBuffer, response);
+ } else if (EvaluationHelper.equals(commandCode, (byte) 0x9)) {
+ builder =
+ FirmataCommandProtocolVersion.staticParseFirmataCommandBuilder(readBuffer, response);
+ } else if (EvaluationHelper.equals(commandCode, (byte) 0xF)) {
+ builder = FirmataCommandSystemReset.staticParseFirmataCommandBuilder(readBuffer, response);
+ }
+ if (builder == null) {
+ throw new ParseException(
+ "Unsupported case for discriminated type"
+ + " parameters ["
+ + "commandCode="
+ + commandCode
+ + "]");
+ }
+
+ readBuffer.closeContext("FirmataCommand");
+ // Create the instance
+ FirmataCommand _firmataCommand = builder.build();
+ return _firmataCommand;
+ }
+
+ public interface FirmataCommandBuilder {
+ FirmataCommand build();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof FirmataCommand)) {
+ return false;
+ }
+ FirmataCommand that = (FirmataCommand) o;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash();
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/plc4j/drivers/firmata/src/main/generated/org/apache/plc4x/java/firmata/readwrite/FirmataCommandProtocolVersion.java b/plc4j/drivers/firmata/src/main/generated/org/apache/plc4x/java/firmata/readwrite/FirmataCommandProtocolVersion.java
new file mode 100644
index 0000000000..3b1d766bef
--- /dev/null
+++ b/plc4j/drivers/firmata/src/main/generated/org/apache/plc4x/java/firmata/readwrite/FirmataCommandProtocolVersion.java
@@ -0,0 +1,161 @@
+/*
+ * 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
+ *
+ * https://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.java.firmata.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class FirmataCommandProtocolVersion extends FirmataCommand implements Message {
+
+ // Accessors for discriminator values.
+ public Byte getCommandCode() {
+ return (byte) 0x9;
+ }
+
+ // Properties.
+ protected final short majorVersion;
+ protected final short minorVersion;
+
+ public FirmataCommandProtocolVersion(short majorVersion, short minorVersion) {
+ super();
+ this.majorVersion = majorVersion;
+ this.minorVersion = minorVersion;
+ }
+
+ public short getMajorVersion() {
+ return majorVersion;
+ }
+
+ public short getMinorVersion() {
+ return minorVersion;
+ }
+
+ @Override
+ protected void serializeFirmataCommandChild(WriteBuffer writeBuffer)
+ throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ writeBuffer.pushContext("FirmataCommandProtocolVersion");
+
+ // Simple Field (majorVersion)
+ writeSimpleField("majorVersion", majorVersion, writeUnsignedShort(writeBuffer, 8));
+
+ // Simple Field (minorVersion)
+ writeSimpleField("minorVersion", minorVersion, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("FirmataCommandProtocolVersion");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ FirmataCommandProtocolVersion _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (majorVersion)
+ lengthInBits += 8;
+
+ // Simple field (minorVersion)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static FirmataCommandBuilder staticParseFirmataCommandBuilder(
+ ReadBuffer readBuffer, Boolean response) throws ParseException {
+ readBuffer.pullContext("FirmataCommandProtocolVersion");
+ PositionAware positionAware = readBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short majorVersion = readSimpleField("majorVersion", readUnsignedShort(readBuffer, 8));
+
+ short minorVersion = readSimpleField("minorVersion", readUnsignedShort(readBuffer, 8));
+
+ readBuffer.closeContext("FirmataCommandProtocolVersion");
+ // Create the instance
+ return new FirmataCommandProtocolVersionBuilderImpl(majorVersion, minorVersion);
+ }
+
+ public static class FirmataCommandProtocolVersionBuilderImpl
+ implements FirmataCommand.FirmataCommandBuilder {
+ private final short majorVersion;
+ private final short minorVersion;
+
+ public FirmataCommandProtocolVersionBuilderImpl(short majorVersion, short minorVersion) {
+ this.majorVersion = majorVersion;
+ this.minorVersion = minorVersion;
+ }
+
+ public FirmataCommandProtocolVersion build() {
+ FirmataCommandProtocolVersion firmataCommandProtocolVersion =
+ new FirmataCommandProtocolVersion(majorVersion, minorVersion);
+ return firmataCommandProtocolVersion;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof FirmataCommandProtocolVersion)) {
+ return false;
+ }
+ FirmataCommandProtocolVersion that = (FirmataCommandProtocolVersion) o;
+ return (getMajorVersion() == that.getMajorVersion())
+ && (getMinorVersion() == that.getMinorVersion())
+ && super.equals(that)
+ && true;
+ }
+
+ @Override
... 298700 lines suppressed ...