Regarding transforming received JSON string to uppercase at Thing/Item stage

Having trouble with quite a lot of the code you wrote for me. I’m aware it wasn’t supposed to just be a drop-in replacement, but I’ve caught the simple things like a single speech quote needs to be a double:

 if(!packet_TXT.contains('AIRCRAFT')) return;

doesn’t work whereas

if(!packet_TXT.contains("AIRCRAFT")) return;

does.
So I’ve fixed that.
I couldn’t get logDebug to show in tail (http://openhabian.local:9001) so I’ve replaced logDebug with logWarn in my code. Only logInfo, logWarn and logError messages appear.

        val isValid = [ value, compareTo, valid, msg | 
            val isBad = value == compareTo;
             if(isBad) { 
                 logWarn(LOGNAME, msg);
             }
             valid || !isBad
        }
        planeTransmissionValidity = isValid.apply(plane_ICAO_TXT, packet_TXT, planeTransmissionValidity, "ICAO fail")
        planeTransmissionValidity = isValid.apply(plane_Callsign_TXT, packet_TXT, planeTransmissionValidity, "callsign fail")
        planeTransmissionValidity = isValid.apply(plane_Contact_Age_TXT, packet_TXT, planeTransmissionValidity, "age fail")
        planeTransmissionValidity = isValid.apply(plane_Altitude_TXT, packet_TXT, planeTransmissionValidity, "alt fail")
        planeTransmissionValidity = isValid.apply(plane_VertRate_TXT, packet_TXT, planeTransmissionValidity, "vert fail")
        planeTransmissionValidity = isValid.apply(plane_Latitude_TXT, packet_TXT, planeTransmissionValidity, "lat fail")
        planeTransmissionValidity = isValid.apply(plane_Longitude_TXT, packet_TXT, planeTransmissionValidity, "long fail")

doesn’t work, and I think it’s due to something in the Lambda?
When I replaced the final curly bracket with a square one VSCode stopped complaining about it, but apart from that I think what’s supposed to happen here is that once one error occurs, planeTransmissionValidity is supposed to get set to false and all the successive tests should fail.

This doesn’t happen.
I added logging like this:

        planeTransmissionValidity = isValid.apply(plane_ICAO_TXT, packet_TXT, planeTransmissionValidity, "ICAO fail")
        logWarn(LOGNAME, "icao is {} " + plane_ICAO_TXT, planeTransmissionValidity)
        
        planeTransmissionValidity = isValid.apply(plane_Callsign_TXT, packet_TXT, planeTransmissionValidity, "callsign fail")
        logWarn(LOGNAME, "callsign is {} " + plane_Callsign_TXT, planeTransmissionValidity )

        planeTransmissionValidity = isValid.apply(plane_Contact_Age_TXT, packet_TXT, planeTransmissionValidity, "age fail")
        logWarn(LOGNAME, "age is {} " + plane_Contact_Age_TXT, planeTransmissionValidity)

        planeTransmissionValidity = isValid.apply(plane_Altitude_TXT, packet_TXT, planeTransmissionValidity, "alt fail")
        logWarn(LOGNAME, "alt is {} " + plane_Altitude_TXT, planeTransmissionValidity)

        planeTransmissionValidity = isValid.apply(plane_VertRate_TXT, packet_TXT, planeTransmissionValidity, "vert fail")
        logWarn(LOGNAME, "vert is {} " + plane_VertRate_TXT, planeTransmissionValidity)

        planeTransmissionValidity = isValid.apply(plane_Latitude_TXT, packet_TXT, planeTransmissionValidity, "lat fail")
        logWarn(LOGNAME, "lat is {} " + plane_Latitude_TXT, planeTransmissionValidity)

        planeTransmissionValidity = isValid.apply(plane_Longitude_TXT, packet_TXT, planeTransmissionValidity, "long fail")
        logWarn(LOGNAME, "long is {} " + plane_Longitude_TXT, planeTransmissionValidity)

and tail gives me this:

2024-04-17 14:56:56.758 [WARN ] [re.model.script.ADSB Processing test] - packet 0 of 14
2024-04-17 14:56:56.760 [WARN ] [re.model.script.ADSB Processing test] - icao is true 000000
2024-04-17 14:56:56.761 [WARN ] [re.model.script.ADSB Processing test] - callsign fail
2024-04-17 14:56:56.762 [WARN ] [re.model.script.ADSB Processing test] - callsign is true {"NOW":1713362215.8,
2024-04-17 14:56:56.763 [WARN ] [re.model.script.ADSB Processing test] - age fail
2024-04-17 14:56:56.764 [WARN ] [re.model.script.ADSB Processing test] - age is true {"NOW":1713362215.8,
2024-04-17 14:56:56.766 [WARN ] [re.model.script.ADSB Processing test] - alt is true 30300
2024-04-17 14:56:56.767 [WARN ] [re.model.script.ADSB Processing test] - vert fail
2024-04-17 14:56:56.768 [WARN ] [re.model.script.ADSB Processing test] - vert is true {"NOW":1713362215.8,
2024-04-17 14:56:56.769 [WARN ] [re.model.script.ADSB Processing test] - lat fail
2024-04-17 14:56:56.770 [WARN ] [re.model.script.ADSB Processing test] - lat is true {"NOW":1713362215.8,
2024-04-17 14:56:56.771 [WARN ] [re.model.script.ADSB Processing test] - long fail
2024-04-17 14:56:56.772 [WARN ] [re.model.script.ADSB Processing test] - long is true {"NOW":1713362215.8,
2024-04-17 14:56:56.773 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'testing-1' failed: For input string: "{"NOW":1713362215.8,

I’ve tried Googling “openhab lambdas” for help, and found this:

So while this may not apply to my situation, now I’m (even more) confused.

Also, although the problem above breaks the Rule, I’m also getting errors from

cache.shared.put("plane_Altitude_TXT", transform("JSONPATH", "$.AIRCRAFT[" + packetloop_NUM.toString+"].ALTITUDE", packet_TXT)

whereas

var plane_Altitude_TXT = transform("JSONPATH", "$.AIRCRAFT[" + packetLoop_NUM.toString+"].ALTITUDE", packet_TXT)

works.

I’m really sorry if I come across as ungrateful or picky. I really appreciate all the help you’ve given me and as always I suspect there are simple fixes that are hiding in the gaps of my knowledge.
Could these errors be down to a missing Binding?