Bessere Fehlerbehandlung bei fehlenden Typen
Wenn auf einem System beispielsweise der Konfigurationsbereich kb.tmUmfeldDatenGlobal nicht installiert ist, übernimmt KExTLS keine Umfelddaten, sondern wirft folgenden für Anwender nicht nachvollziehbaren Fehler:
#000512 14.01.2021 17:47:20,312:+0100 (TID:000001) ######################
FEHLER : KEx-TLS.de.bsvrz.kex.tls.osi7.De
Konstruktoraufruf am UmsetzungsModul [de.bsvrz.kex.tls.osi7.conversion.Fg003Typ061] fehlgeschlagen!:
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
at de.bsvrz.kex.tls.osi7.De.installConversionModule(De.java:384)
at de.bsvrz.kex.tls.osi7.De.<init>(De.java:237)
at de.bsvrz.kex.tls.osi7.Eak.<init>(Eak.java:152)
at de.bsvrz.kex.tls.osi7.Sm.<init>(Sm.java:95)
at de.bsvrz.kex.tls.osi7.TlsApplicationLayer.<init>(TlsApplicationLayer.java:276)
at de.bsvrz.kex.tls.TlsApplication.<init>(TlsApplication.java:227)
at de.bsvrz.kex.tls.TlsApplication.main(TlsApplication.java:322)
Caused by: java.lang.NullPointerException
at de.bsvrz.kex.tls.osi7.De.getSubTypes(De.java:652)
at de.bsvrz.kex.tls.osi7.De.getObjectRefsToDe(De.java:631)
at de.bsvrz.kex.tls.osi7.conversion.DeConversionModul.subscribeAllData(DeConversionModul.java:795)
at de.bsvrz.kex.tls.osi7.conversion.Fg003Typ061.<init>(Fg003Typ061.java:130)
... 12 more
#000513 14.01.2021 17:47:20,313:+0100 (TID:000001) ======================
WARNUNG: KEx-TLS.de.bsvrz.kex.tls.osi7.De
Statt dem UmsetzungsModul [de.bsvrz.kex.tls.osi7.conversion.Fg003Typ061] wird ein Dummy-Umsetzungsmodul für DE de.9.fg.3.... installiert!
Es wäre schön, wenn das KExTLs ausgeben würde, welcher Typ nicht vorhanden ist (wäre problemlos möglich in DeConversionModul.subscribeAllData einzubauen).
Außerdem wäre es schon, wenn die Daten zu denen Typen vorhanden sind, trotzdem übertragen werden würden. In dem Fall könnten die DE-Daten selbst übertragen werden, selbst wenn kein logisches Umfelddatensensor-Objekt vorhanden ist.