Die verborgene Schätze von Faktor-IPS: @Generated REDIRECT

Genau genommen ist es kein Feature von Faktor-IPS sondern eines von JMerge. Dem Werkzeug das Faktor-IPS nutzt, um seinen generierten Code mit handgeschriebenem Code zu mergen.

Veröffentlicht:

Kategorie: Produkt Updates

Bild unseres Maskottchens mit einer Schatzkarte in der Hand

Wir beginnen eine neue Serie von Blogposts, die ein weniger bekanntes Feature von Faktor-IPS beleuchten sollen. Vielleicht erweisen sie sich im ein oder anderen Projekt als nützlich. In diesem ersten Beitrag möchte ich euch mit @generated REDIRECT bekannt machen. Genau genommen ist es kein Feature von Faktor-IPS sondern eines von JMerge. Dem Werkzeug das Faktor-IPS nutzt, um seinen generierten Code mit handgeschriebenem Code zu mergen.

Fast jeder der sich schon mal von Faktor-IPS den zuvor handgeschriebenen Boilerplate-Code hat generieren lassen, kann sich an Fälle erinnern, in denen er den generierten Code von Hand ergänzen musste (getEffectiveFromAsCalendar() fällt da sofort ein). Nach dem Speichern und weiteren Änderungen am Faktor-IPS-Objekt musste man dann festzustellen, dass der handgeschriebene Code wieder verschwunden war, weil vergessen wurde das NOT nach die Markierung für generierten Code, @generated, zu setzen.

Ein ähnliches Problem ergibt sich, wenn man den generierten Code eigentlich verwenden möchte, ihn aber um ein paar handgeschriebene Zeilen (z.B. zusätzliche Prüfungen oder Listener-Aufrufe) ergänzen will. Alles kein Problem – solange man nichts am Faktor-IPS-Modell ändert. Entweder werden die handgeschriebenen Zeilen gelöscht (@generated) oder die ursprünglich generierten Teile im jetzt als @generated NOT markierten Code werden nicht aktualisiert. Im Zweifel gibt es Compile-Fehler.

Zur Rettung kommt hier das Feature @generated REDIRECT. Es lässt den generierten Code intakt und durch den Faktor-IPS-Codegenerator anpassbar, und erlaubt es trotzdem, eigenen Code hinzuzufügen. Zur Anwendung braucht es nur die folgenden vier einfachen Schritte:

  1. Die generierte Methode kopieren (inklusive @generated)
  2. GeneratedRedirection an den Namen der Kopie hängen; die Sichtbarkeit ggf. auf private ändern
  3. @generatedan der Original-Methode zu @generated REDIRECT ändern
  4. In der Original-Methode eigenen Code schreiben und ~GeneratedRedirection an der passenden Stelle aufrufen

Beispiel für Feature

Im folgenden Beispielcode sieht man, wie das im Modell aus dem Tutorial aussehen könnte. Dort gibt es ein Attribut plz das verwendet wird um das abgeleitete Attribut tarifzone zu berechnen. Immer wenn setPlz() aufgerufen wird, sollen alle Listener informiert werden (tarifzone könnte sich geändert haben).

  • VPV Pressemitteilung Gewerbe Go-live

    VPV nimmt erste Gewerbeprodukte auf Basis von Faktor Zehn Software in Betrieb

    Die VPV Versicherungen (VPV) haben gemeinsam mit Faktor Zehn den ersten erfolgreichen Go-live im Rahmen der Einführung ihres neuen Gewerbegeschäfts umgesetzt. Mit dem Go-live der Gewerbeversicherung auf Basis der Faktor…

  • Ecclesia Gruppe setzt zur Modernisierung des Maklerkernsystems auf Faktor Zehn Software

    Dieses Projekt mündet nun in das umfassende Erneuerungsprogramm „ecOS“, das darauf abzielt, die Prozesse innerhalb der Ecclesia Gruppe digitaler und intuitiver zu gestalten.

  • Versicherungskammer setzt für Industriegeschäft auf Faktor Zehn Software

    Der Konzern Versicherungskammer und die Faktor Zehn GmbH erweitern ihre langjährige Zusammenarbeit zur Erneuerung der Komposit-Kernversicherungssoftware um das Industriegeschäft.