31.12.2025, 10:32
Hallo Christian,
ich habe mir deine Änderung angeschaut. Leider löst sie nicht das Problem für die Unittests.
Das Problem ist, dass das PositionsModelImpl dann weiter auf den PositionHelper durchgreift. Und darin wird dann wieder RouteConverter.getInstance() gemacht.
In meinen Augen müsste man die Haltung der globalen Modelle, die nichts direkt mit der GUI-Anwendung zu tun haben, von der RouteConverter-Klasse trennen.
Am besten wäre vermutlich, wenn man das in einem eigenen Singleton (z.B. RouteConverterModels) bündelt, auf dem man dann die Modelle per Set-Methoden auch setzen kann. Bei den Aufrufern würde sich dann lediglich RouteConverter.getInstance() auf RouteConverterModels .getInstance() ändern.
Ich bin zwar kein Freund von solchen Singleton-Lösungen und die aktuellen Probleme zeigen auch schön den Grund, aber es würde im Moment wahrscheinlich die einfachste Variante sein, ohne die Gesamtarchitektur vom RouteConverter zu ändern. Das kann man dann auch schrittweise umbauen. D.h. im ersten Schritt würden nur die Modelle wechseln, die für den aktuellen Fall gebraucht werden.
Was denkst du dazu ?
Gruß
Thomas
ich habe mir deine Änderung angeschaut. Leider löst sie nicht das Problem für die Unittests.
Das Problem ist, dass das PositionsModelImpl dann weiter auf den PositionHelper durchgreift. Und darin wird dann wieder RouteConverter.getInstance() gemacht.
Code:
java.lang.NullPointerException: Cannot invoke "slash.navigation.converter.gui.RouteConverter.getTimeZone()" because the return value of "slash.navigation.converter.gui.RouteConverter.getInstance()" is null
at slash.navigation.converter.gui.helpers.PositionHelper.getDateFormat(PositionHelper.java:180)
at slash.navigation.converter.gui.helpers.PositionHelper.parseDate(PositionHelper.java:200)
at slash.navigation.converter.gui.models.PositionsModelImpl.parseDate(PositionsModelImpl.java:322)
at slash.navigation.converter.gui.models.PositionsModelImpl.editCell(PositionsModelImpl.java:221)
at slash.navigation.converter.gui.models.PositionsModelImpl.edit(PositionsModelImpl.java:203)
at slash.navigation.converter.gui.models.PositionsModelImpl.setValueAt(PositionsModelImpl.java:192)
at slash.navigation.converter.gui.models.PositionsModelGpxTest.testTimeEdit(PositionsModelGpxTest.java:105)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)In meinen Augen müsste man die Haltung der globalen Modelle, die nichts direkt mit der GUI-Anwendung zu tun haben, von der RouteConverter-Klasse trennen.
Am besten wäre vermutlich, wenn man das in einem eigenen Singleton (z.B. RouteConverterModels) bündelt, auf dem man dann die Modelle per Set-Methoden auch setzen kann. Bei den Aufrufern würde sich dann lediglich RouteConverter.getInstance() auf RouteConverterModels .getInstance() ändern.
Ich bin zwar kein Freund von solchen Singleton-Lösungen und die aktuellen Probleme zeigen auch schön den Grund, aber es würde im Moment wahrscheinlich die einfachste Variante sein, ohne die Gesamtarchitektur vom RouteConverter zu ändern. Das kann man dann auch schrittweise umbauen. D.h. im ersten Schritt würden nur die Modelle wechseln, die für den aktuellen Fall gebraucht werden.
Was denkst du dazu ?
Gruß
Thomas
