Seite 1 von 1

Plugin-Schnittstelle: Probleme mit Sonderzeichen im Hinweistext

Verfasst: So Okt 24, 2021 10:15 am
von The-Tauri
Hallo zusammen,

seit Ende September / Anfang Oktober erhalte ich Meldungen, nach denen mein Plugin jTrainGraph in einigen Stellwerken nicht mehr funktioniert: viewtopic.php?p=301915#p301915

Ich habe dazu bereits eine Nachricht von Duke erhalten (Danke dafür!), der mich auf eine Änderung in der Plugin-Schnittstelle Mitte September aufmerksam gemacht hat: viewtopic.php?p=300516#p300516

Tatsächlich scheinen die Sonderzeichen in den Hinweistexten Probleme zu verursachen. Soweit ich feststellen konnte aber nicht primär im Code meines Plugins, sondern bereits in der bereitgestellten Java-Bibliothek.
Ich habe dazu ein einfaches Programm basierend auf dem aktuellen PluginClient geschrieben, dessen Code und Ausgaben ich unten anhänge. Im Stellwerk Höllentalbahn liefert es alle Zugdetails für alle Züge. Im Stellwerk Verden (Aller) liefert es nur so lange eine Rückmeldung, so lange der Zug in response_zugdetails keine Sonderzeichen im Hinweistext zum aktuellen Halt hat. Wenn der Zug Sonderzeichen im Hinweistext hat, scheint sich die Java-Bibliothek intern in einer Endlosschleife zu befinden und liefert keine weiteren Ausgaben.

Ich könnte mir vorstellen, dass das Problem ähnlich gelagert ist, wie damals bei Sonderzeichen in Bahnsteigen: viewtopic.php?f=96&t=21206&p=150757#p150757

Die Frage wäre deshalb, ob auf der Schnittstelle Server- und/oder Client-seitig die Sonderzeichen maskiert werden können, damit auch die Sonderzeichen in Hinweistexten nicht zu Problemen führen. Entweder gezielt für Hinweistexte (ZugDetails.hinweistext), oder generell für alle Angaben auf der Schnittstelle. Eine Liste problematischer Sonderzeichen hat DevonFrosch hier bereits aufgeführt: viewtopic.php?p=302355#p302355

Details:

Testcode:

Code: Alles auswählen

import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;

import js.java.stspluginlib.PluginClient;

public class ConnectionTest extends PluginClient {

	protected ConnectionTest() {
		super("", "", "", "");
	}

	public static void main(String[] args) {
		try {
			ConnectionTest test = new ConnectionTest();
			test.connect("localhost");
			while(true) {
				
			}
		} catch(Exception e) {
			e.printStackTrace();
		}
		
	}

	@Override
	protected void closed() {
		System.out.println("closed");
	}

	@Override
	protected void connected() {
		System.out.println("connected");
		super.request_setdebug(true);
		request_anlageninfo();
		request_bahnsteigliste();
		request_zugliste();
	}

	@Override
	protected void response_anlageninfo(int arg0, String arg1, String arg2, boolean arg3) {
		System.out.println("response_anlageninfo");
	}

	@Override
	protected void response_bahnsteigliste(HashMap<String, HashSet<String>> arg0) {
		System.out.println("response_bahnsteigliste");
	}

	@Override
	protected void response_zugdetails(int arg0, ZugDetails arg1) {
		System.out.println("response_zugdetails for zid "+arg0+" "+arg1.name+" "+arg1.hinweistext);
	}

	@Override
	protected void response_zugfahrplan(int arg0, LinkedList<ZugFahrplanZeile> arg1) {
		System.out.println("response_zugfahrplan");
	}

	@Override
	protected void response_zugliste(HashMap<Integer, String> arg0) {
		System.out.println("response_zugliste");
		for(int zid : arg0.keySet()) {
			System.out.println("request_zugdetails for zid "+zid+" "+arg0.get(zid));
			request_zugdetails(zid);
		}
	}

}
Ausgabe Stellwerk Höllentalbahn mit diesem Programm (21 Anfragen, 21 Rückmeldungen):

Code: Alles auswählen

Verbindung getrennt
Verbunden
connected
response_anlageninfo
response_bahnsteigliste
response_zugliste
request_zugdetails for zid 149763 Rf 9605
request_zugdetails for zid 148931 S 9742
request_zugdetails for zid 151974 DPE 87633
request_zugdetails for zid 149383 S 9715
request_zugdetails for zid 151207 S 9615
request_zugdetails for zid 151972 DPE 87634
request_zugdetails for zid 150692 S 9618
request_zugdetails for zid 150827 S 9716
request_zugdetails for zid 151977 RAbt 87633
request_zugdetails for zid 151049 S 9667
request_zugdetails for zid 150671 S 9666
request_zugdetails for zid 149388 S 9713
request_zugdetails for zid 151955 SDZ 97331
request_zugdetails for zid 150672 S 9668
request_zugdetails for zid 149754 Rf 9666
request_zugdetails for zid 149755 Rf 9668
request_zugdetails for zid 150683 S 9620
request_zugdetails for zid 150686 S 9614
request_zugdetails for zid 151198 S 9665
request_zugdetails for zid 149759 Rf 9670
request_zugdetails for zid 150687 S 9616
response_zugdetails for zid 149763 Rf 9605 Zwischenabstellung
response_zugdetails for zid 148931 S 9742 null
response_zugdetails for zid 151974 DPE 87633 null
response_zugdetails for zid 149383 S 9715 null
response_zugdetails for zid 151207 S 9615 null
response_zugdetails for zid 151972 DPE 87634 null
response_zugdetails for zid 150692 S 9618 null
response_zugdetails for zid 150827 S 9716 null
response_zugdetails for zid 151977 RAbt 87633 die Lok ggf. am Wasserkran halten lassen (dann via Gleis 1 umsetzen)
response_zugdetails for zid 151049 S 9667 null
response_zugdetails for zid 150671 S 9666 null
response_zugdetails for zid 149388 S 9713 null
response_zugdetails for zid 151955 SDZ 97331 null
response_zugdetails for zid 150672 S 9668 null
response_zugdetails for zid 149754 Rf 9666 null
response_zugdetails for zid 149755 Rf 9668 null
response_zugdetails for zid 150683 S 9620 null
response_zugdetails for zid 150686 S 9614 null
response_zugdetails for zid 151198 S 9665 null
response_zugdetails for zid 149759 Rf 9670 null
response_zugdetails for zid 150687 S 9616 null
Ausgabe Verden (Aller):

Code: Alles auswählen

Verbindung getrennt
Verbunden
connected
response_anlageninfo
response_bahnsteigliste
response_zugliste
request_zugdetails for zid 149504 RB 24649
request_zugdetails for zid 119042 CS 60566
request_zugdetails for zid 71234 FIR 51443
request_zugdetails for zid 72839 IKE 50768
request_zugdetails for zid 85961 DGS 68565
request_zugdetails for zid 149449 RB 24516
request_zugdetails for zid 149481 RB 24533
request_zugdetails for zid 78858 RE 4416
request_zugdetails for zid 100173 RB 24128
request_zugdetails for zid 58029 PIC 50162
request_zugdetails for zid 157427 TEC 41138
request_zugdetails for zid 156944 DGS 69220
request_zugdetails for zid 149494 RB 24535
request_zugdetails for zid 105205 IC 1933
request_zugdetails for zid 97812 DGS 90219
request_zugdetails for zid 70710 GC 62872
request_zugdetails for zid 156949 DFG 59889
request_zugdetails for zid 83478 IC 2130
request_zugdetails for zid 157013 ICE 539
request_zugdetails for zid 127002 DGS 47665
request_zugdetails for zid 78746 RE 4419
request_zugdetails for zid 48892 CS 60950
request_zugdetails for zid 152286 FR 53664
request_zugdetails for zid 126940 KCL 49406
response_zugdetails for zid 149504 RB 24649 null
response_zugdetails for zid 119042 CS 60566 null
Nächster Zug wäre hier 71234 FIR 51443 und der hat als Hinweistext am nächsten Bahnsteig seinen Laufweg in der Form "< .... >".

Viele Grüße,
Moritz

Re: Plugin-Schnittstelle: Probleme mit Sonderzeichen im Hinweistext

Verfasst: Sa Nov 06, 2021 12:32 am
von leru29
Abend,

ich wollte einmal kurz die Frage an die Zuständigen (Entwickler?) stellen, ob das hier auf der Agenda steht oder vielleicht sogar dran gearbeitet wird oder hiermit zumindest dafür sorgen, dass es nicht in Vergessenheit gerät. Würde mich freuen, wenn es hier bald Neuigkeiten gäbe, das Plugin macht einige Dinge doch etwas leichter. :D

Grüße

Re: Plugin-Schnittstelle: Probleme mit Sonderzeichen im Hinweistext

Verfasst: Sa Nov 06, 2021 12:56 am
von MeldungsRobot
Automatische Meldung vom Bugtracker:

Es existiert bereits ein Case #3553 für diesen Fall: Pluginschnittstelle: Escaping von Sonderzeichen

Re: Plugin-Schnittstelle: Probleme mit Sonderzeichen im Hinweistext

Verfasst: Sa Nov 06, 2021 12:58 am
von petero
Moin,
die Entwickler haben das Thema auf dem Schirm. Ich habe den Bug dazu hier mal verlinkt.
Gruß

Re: Plugin-Schnittstelle: Probleme mit Sonderzeichen im Hinweistext

Verfasst: Fr Nov 12, 2021 5:38 pm
von MeldungsRobot
Automatische Meldung vom Bugtracker:

Es existiert bereits ein Case #3553 für diesen Fall: Pluginschnittstelle: Escaping von Sonderzeichen

Re: Plugin-Schnittstelle: Probleme mit Sonderzeichen im Hinweistext

Verfasst: Fr Nov 12, 2021 10:34 pm
von MeldungsRobot
Automatische Meldung vom Bugtracker:

Der Case #3553 wurde geschlossen (erledigt). Behoben ab Build 5808 (Java). Freigegeben ab Revision 11373.

Re: Plugin-Schnittstelle: Probleme mit Sonderzeichen im Hinweistext

Verfasst: Sa Nov 13, 2021 5:58 am
von MeldungsRobot
Automatische Meldung vom Bugtracker:

Die Korrektur von Case #3553 ist jetzt online.