ObjectDeletedMessage

 
ds10
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 165
Dabei seit: 08 / 2018
Betreff:

ObjectDeletedMessage

 · 
Gepostet: 15.09.2023 - 09:49 Uhr  ·  #1
Ich habe gestern eine Meldung erhalten, dass das Aufsplitten der Umsätze nicht mehr funktioniert. Die Prüfung hat ergeben, dass der Konstruktor public ObjectDeletedMessage(GenericObject object) ersetzt wurde mit public ObjectDeletedMessage(GenericObject object, String id). Damit ist die Abwärtskompatibilität gebrochen. Ist das Absicht oder ein Versehen?
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10777
Dabei seit: 03 / 2005
Betreff:

Re: ObjectDeletedMessage

 · 
Gepostet: 15.09.2023 - 15:22 Uhr  ·  #2
Oh, sorry. Das war ein Versehen. Hatte nicht damit gerechnet, dass jemand ausserhalb von Hibiscus die Klasse verwendet. Die ID habe ich eingeführt, damit auch nach dem Löschen des Objektes noch die Möglichkeit besteht, das gelöschte Objekt zu identifizieren. Denn beim Löschen wird die ID aus den GenericObject gelöscht.

Wenn ich jetzt zusätzlich den alten Konstruktor ohne ID wieder hinzu füge, wird dir das vermutlich nicht viel bringen, weil ja dennoch ein neues Release nötig wäre. Wahrscheinlich ist es einfacher, wenn du den neuen Konstruktor verwendest und dort NULL übergibst.
ds10
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 165
Dabei seit: 08 / 2018
Betreff:

Re: ObjectDeletedMessage

 · 
Gepostet: 15.09.2023 - 17:21 Uhr  ·  #3
Okay, meine nächste Frage hast du je bereits korrekt antizipiert. Eine Frage hätte ich aber noch, wäre es nicht einfacher gewesen wenn die ID nicht aus GenericObject gelöscht wird (oder als OLD_ID abgespeichert wird und dann abgefragt werden kann), dann könnte die ID direkt vom GenericObject geholt werden, anstatt sie in der Methode zu übergeben? So muss sich ja die aufrufende Routine auch noch um das ID-Handling kümmern.
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10777
Dabei seit: 03 / 2005
Betreff:

Re: ObjectDeletedMessage

 · 
Gepostet: 16.09.2023 - 08:18 Uhr  ·  #4
Zitat geschrieben von ds10

Okay, meine nächste Frage hast du je bereits korrekt antizipiert. Eine Frage hätte ich aber noch, wäre es nicht einfacher gewesen wenn die ID nicht aus GenericObject gelöscht wird (oder als OLD_ID abgespeichert wird und dann abgefragt werden kann), dann könnte die ID direkt vom GenericObject geholt werden, anstatt sie in der Methode zu übergeben? So muss sich ja die aufrufende Routine auch noch um das ID-Handling kümmern.

Nein, das hätte leider nicht funktioniert. GenericObject ist im Datasource-Package in Jameica. Ich hätte dafür also vorher ein neues Jameica-Release machen müssen und sicherstellen, dass alle Hibiscus-User die neue Version verwenden. Der Aufwand wäre ein Vielfaches höher gewesen.

Ich achte eigentlich immer sehr drauf, die Abwärtskompatibilität sicherzustellen. An der Stelle hatte ich aber nicht mit Problemen gerechnet. Wenn doch mal eine API-Änderung notwendig ist, verwende ich die Klasse "JameicaCompat". Die enthält ein paar statische Funktionen, um Methoden per Reflection auszuführen. Dann kann man zur Laufzeit NoSuchMethodErrors verhindern und darauf reagieren. Im Falle des Konstruktors hätte das aber auch nicht funktioniert.

Ich kann dir alternativ auch noch den alten Konstruktor als zusätzlichen Konstruktor wiederherstellen. Das wäre dann aber erstmal nur im Nightly-Build.
ds10
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 165
Dabei seit: 08 / 2018
Betreff:

Re: ObjectDeletedMessage

 · 
Gepostet: 16.09.2023 - 12:39 Uhr  ·  #5
Ich habe jetzt ein Update für das Plugin hochgeladen, was den neuen Konstruktor nutzt. Den alten wieder hinzuzufügen kann nicht schaden, aber notwendig ist es wahrscheinlich nicht, höchstens wenn es Nutzer geben sollte, die zwar Hibiscus aktualisieren, aber andere Plugins nicht, bei denen würde dann die alte Version des Aufsplitten-Plugins wieder funktionieren, sobald es eine neue Version von Hibiscus gibt.
Gewählte Zitate für Mehrfachzitierung:   0