@@ -98,18 +98,12 @@ public Class<DynamicStruct> getType() {
9898 @ Override
9999 public DynamicStruct decodeType (EncodingContext context , UaDecoder decoder )
100100 throws UaSerializationException {
101- switch (definition .getStructureType ()) {
102- case Structure :
103- case StructureWithOptionalFields :
104- case StructureWithSubtypedValues :
105- return decodeStruct (decoder );
106- case Union :
107- case UnionWithSubtypedValues :
108- return decodeUnion (decoder );
109- default :
110- throw new IllegalArgumentException (
111- "unhandled StructureType: " + definition .getStructureType ());
112- }
101+
102+ return switch (definition .getStructureType ()) {
103+ case Structure , StructureWithOptionalFields , StructureWithSubtypedValues ->
104+ decodeStruct (decoder );
105+ case Union , UnionWithSubtypedValues -> decodeUnion (decoder );
106+ };
113107 }
114108
115109 @ Override
@@ -307,9 +301,7 @@ private Object decodeFieldValue(UaDecoder decoder, StructureField field) {
307301 Object value ;
308302
309303 Object hint = fieldHints .get (field );
310- if (hint instanceof BuiltinDataType ) {
311- BuiltinDataType builtinDataType = (BuiltinDataType ) hint ;
312-
304+ if (hint instanceof BuiltinDataType builtinDataType ) {
313305 value = decoder .decodeMatrix (fieldName , builtinDataType );
314306 } else {
315307 TypeHint typeHint = (TypeHint ) hint ;
@@ -436,121 +428,65 @@ private boolean fieldAllowsSubtyping(StructureField field) {
436428 private static Object decodeBuiltinDataType (
437429 UaDecoder decoder , String fieldName , BuiltinDataType builtinDataType ) {
438430
439- switch (builtinDataType ) {
440- case Boolean :
441- return decoder .decodeBoolean (fieldName );
442- case SByte :
443- return decoder .decodeSByte (fieldName );
444- case Byte :
445- return decoder .decodeByte (fieldName );
446- case Int16 :
447- return decoder .decodeInt16 (fieldName );
448- case UInt16 :
449- return decoder .decodeUInt16 (fieldName );
450- case Int32 :
451- return decoder .decodeInt32 (fieldName );
452- case UInt32 :
453- return decoder .decodeUInt32 (fieldName );
454- case Int64 :
455- return decoder .decodeInt64 (fieldName );
456- case UInt64 :
457- return decoder .decodeUInt64 (fieldName );
458- case Float :
459- return decoder .decodeFloat (fieldName );
460- case Double :
461- return decoder .decodeDouble (fieldName );
462- case String :
463- return decoder .decodeString (fieldName );
464- case DateTime :
465- return decoder .decodeDateTime (fieldName );
466- case Guid :
467- return decoder .decodeGuid (fieldName );
468- case ByteString :
469- return decoder .decodeByteString (fieldName );
470- case XmlElement :
471- return decoder .decodeXmlElement (fieldName );
472- case NodeId :
473- return decoder .decodeNodeId (fieldName );
474- case ExpandedNodeId :
475- return decoder .decodeExpandedNodeId (fieldName );
476- case StatusCode :
477- return decoder .decodeStatusCode (fieldName );
478- case QualifiedName :
479- return decoder .decodeQualifiedName (fieldName );
480- case LocalizedText :
481- return decoder .decodeLocalizedText (fieldName );
482- case ExtensionObject :
483- return decoder .decodeExtensionObject (fieldName );
484- case DataValue :
485- return decoder .decodeDataValue (fieldName );
486- case Variant :
487- return decoder .decodeVariant (fieldName );
488- case DiagnosticInfo :
489- return decoder .decodeDiagnosticInfo (fieldName );
490- default :
491- // Shouldn't happen
492- throw new RuntimeException ("unhandled BuiltinDataType: " + builtinDataType );
493- }
431+ return switch (builtinDataType ) {
432+ case Boolean -> decoder .decodeBoolean (fieldName );
433+ case SByte -> decoder .decodeSByte (fieldName );
434+ case Byte -> decoder .decodeByte (fieldName );
435+ case Int16 -> decoder .decodeInt16 (fieldName );
436+ case UInt16 -> decoder .decodeUInt16 (fieldName );
437+ case Int32 -> decoder .decodeInt32 (fieldName );
438+ case UInt32 -> decoder .decodeUInt32 (fieldName );
439+ case Int64 -> decoder .decodeInt64 (fieldName );
440+ case UInt64 -> decoder .decodeUInt64 (fieldName );
441+ case Float -> decoder .decodeFloat (fieldName );
442+ case Double -> decoder .decodeDouble (fieldName );
443+ case String -> decoder .decodeString (fieldName );
444+ case DateTime -> decoder .decodeDateTime (fieldName );
445+ case Guid -> decoder .decodeGuid (fieldName );
446+ case ByteString -> decoder .decodeByteString (fieldName );
447+ case XmlElement -> decoder .decodeXmlElement (fieldName );
448+ case NodeId -> decoder .decodeNodeId (fieldName );
449+ case ExpandedNodeId -> decoder .decodeExpandedNodeId (fieldName );
450+ case StatusCode -> decoder .decodeStatusCode (fieldName );
451+ case QualifiedName -> decoder .decodeQualifiedName (fieldName );
452+ case LocalizedText -> decoder .decodeLocalizedText (fieldName );
453+ case ExtensionObject -> decoder .decodeExtensionObject (fieldName );
454+ case DataValue -> decoder .decodeDataValue (fieldName );
455+ case Variant -> decoder .decodeVariant (fieldName );
456+ case DiagnosticInfo -> decoder .decodeDiagnosticInfo (fieldName );
457+ };
494458 }
495459
496460 private static Object decodeBuiltinDataTypeArray (
497461 UaDecoder decoder , String fieldName , BuiltinDataType builtinDataType ) {
498462
499- switch (builtinDataType ) {
500- case Boolean :
501- return decoder .decodeBooleanArray (fieldName );
502- case SByte :
503- return decoder .decodeSByteArray (fieldName );
504- case Byte :
505- return decoder .decodeByteArray (fieldName );
506- case Int16 :
507- return decoder .decodeInt16Array (fieldName );
508- case UInt16 :
509- return decoder .decodeUInt16Array (fieldName );
510- case Int32 :
511- return decoder .decodeInt32Array (fieldName );
512- case UInt32 :
513- return decoder .decodeUInt32Array (fieldName );
514- case Int64 :
515- return decoder .decodeInt64Array (fieldName );
516- case UInt64 :
517- return decoder .decodeUInt64Array (fieldName );
518- case Float :
519- return decoder .decodeFloatArray (fieldName );
520- case Double :
521- return decoder .decodeDoubleArray (fieldName );
522- case String :
523- return decoder .decodeStringArray (fieldName );
524- case DateTime :
525- return decoder .decodeDateTimeArray (fieldName );
526- case Guid :
527- return decoder .decodeGuidArray (fieldName );
528- case ByteString :
529- return decoder .decodeByteStringArray (fieldName );
530- case XmlElement :
531- return decoder .decodeXmlElementArray (fieldName );
532- case NodeId :
533- return decoder .decodeNodeIdArray (fieldName );
534- case ExpandedNodeId :
535- return decoder .decodeExpandedNodeIdArray (fieldName );
536- case StatusCode :
537- return decoder .decodeStatusCodeArray (fieldName );
538- case QualifiedName :
539- return decoder .decodeQualifiedNameArray (fieldName );
540- case LocalizedText :
541- return decoder .decodeLocalizedTextArray (fieldName );
542- case ExtensionObject :
543- return decoder .decodeExtensionObjectArray (fieldName );
544- case DataValue :
545- return decoder .decodeDataValueArray (fieldName );
546- case Variant :
547- return decoder .decodeVariantArray (fieldName );
548- case DiagnosticInfo :
549- return decoder .decodeDiagnosticInfoArray (fieldName );
550- default :
551- // Shouldn't happen
552- throw new RuntimeException ("unhandled BuiltinDataType: " + builtinDataType );
553- }
463+ return switch (builtinDataType ) {
464+ case Boolean -> decoder .decodeBooleanArray (fieldName );
465+ case SByte -> decoder .decodeSByteArray (fieldName );
466+ case Byte -> decoder .decodeByteArray (fieldName );
467+ case Int16 -> decoder .decodeInt16Array (fieldName );
468+ case UInt16 -> decoder .decodeUInt16Array (fieldName );
469+ case Int32 -> decoder .decodeInt32Array (fieldName );
470+ case UInt32 -> decoder .decodeUInt32Array (fieldName );
471+ case Int64 -> decoder .decodeInt64Array (fieldName );
472+ case UInt64 -> decoder .decodeUInt64Array (fieldName );
473+ case Float -> decoder .decodeFloatArray (fieldName );
474+ case Double -> decoder .decodeDoubleArray (fieldName );
475+ case String -> decoder .decodeStringArray (fieldName );
476+ case DateTime -> decoder .decodeDateTimeArray (fieldName );
477+ case Guid -> decoder .decodeGuidArray (fieldName );
478+ case ByteString -> decoder .decodeByteStringArray (fieldName );
479+ case XmlElement -> decoder .decodeXmlElementArray (fieldName );
480+ case NodeId -> decoder .decodeNodeIdArray (fieldName );
481+ case ExpandedNodeId -> decoder .decodeExpandedNodeIdArray (fieldName );
482+ case StatusCode -> decoder .decodeStatusCodeArray (fieldName );
483+ case QualifiedName -> decoder .decodeQualifiedNameArray (fieldName );
484+ case LocalizedText -> decoder .decodeLocalizedTextArray (fieldName );
485+ case ExtensionObject -> decoder .decodeExtensionObjectArray (fieldName );
486+ case DataValue -> decoder .decodeDataValueArray (fieldName );
487+ case Variant -> decoder .decodeVariantArray (fieldName );
488+ case DiagnosticInfo -> decoder .decodeDiagnosticInfoArray (fieldName );
489+ };
554490 }
555491
556492 private static void encodeBuiltinDataType (
0 commit comments