Release Notes

Version 24.7.1

Faktor-IPS verwendet zum Im- und Export von Tabellen im Excel-Format das Framework Apache POI, welches wiederum Log4J zum Loggen nutzt. In manchen Konstellationen (konnten wir nur mit Eclipse 2024-03 und 2024-06 beobachten) blockierte dieses Logging den Im-/Export so dass die Anwendung nicht mehr reagierte. Mit Faktor-IPS 24.7.1 ist dies behoben, so dass wir nun auch die Verwendung mit Eclipse 2024-06 empfehlen können.

Daneben wurde noch die Methode AbstractRuntimeRepository#getAllReferencedRepositories() besser gegen nebenläufige Zugriffe abgesichert. In diesem Zusammenhang weisen wir darauf hin, dass jegliche lesende Zugriffe auf ein RuntimeRepository erst stattfinden sollten, nachdem dieses fertig aufgebaut ist, insbesondere müssen alle Aufurfe von addDirectlyReferencedRepository und addEnumValueLookupService vor lesendem Zugriff geschehen.

Version 24.7.0

Hauptsächlich wurden toXml-Funktionen und Runtime-IpsModel verbessert, um für den Product Designer auf alle benötigten Daten zugreifen zu können.

Der Runtime-Code wurde überarbeitet und benötigt jetzt mindestens Java 11 (statt wie bisher Java 8).

EclipseLink bietet mit MOXy eine eigene JAXB-Implementierung an. Diese verhält sich etwas anders als die Glassfish-Referenzimplementierung. So werden beispielsweise bereits beim Scannen der annotierten Klassen alle XML-Adapter mit einem zwingend erforderlichen No-Args-Konstruktor instantiiert, was zu Problemen mit den von Faktor-IPS über den JAXB-Support erstellten EnumXmlAdaptern und dem ProductConfigurationXmlAdapter führte. Diese haben jetzt den von MOXy geforderten Konstruktor. Die damit erstellten Instanzen werden aber nie genutzt, da sie im Faktor-IPS-JAXB-Context durch Instanzen ersetzt werden, denen im Konstruktor das Runtime-Repository übergeben wird, damit diese beim Deserialisieren die passenden Elemente aus dem Repository finden können.

API-Änderungen

Generierter Code

  • EnumXmlAdapter erhalten einen privaten No-Args-Konstruktor

  • Die neuen Annotationen @IpsFormulas und @IpsFormula werden generiert, um sie mit ProductCmptType#get[Declared]Formula[s] beauskunften zu können.

  • Abstrakte Aufzählungen können als Datentypen für nicht-produktkonfigurierte Vertragsattribute genutzt werden. Dabei gab es ein paar Korrekturen, insbesondere im Zusammenhang mit Ableitungen und Überschreibungen:

    • Wertebereichsmethoden für abstrakte Aufzählungen werden mit ValueSet<? extends AbstrakterEnum> generiert, um in der Ableitung ValueSet<KonkreterEnum> zu erlauben.

    • Setter in Buildern werden mit dem überschreibenden Datentyp generiert (und nicht mit @override annotiert).

  • Konstanten für Wertebereiche überschriebener Attribute werden mit @SuppressWarnings('hiding') markiert.

Runtime

  • ModelObjectDelta#changedProperties() gibt jetzt eine unveränderliche Liste zurück.

  • TableUsage hat nun eine getTableName(IProductComponent, Calendar)-Methode, die den Namen des verwendeten Tabelleninhalts zurückgibt (statt die Instanz zurückzugeben wie getTable(IProductComponent productComponent, Calendar effectiveDate), was dazu führt, dass das Repository den kompletten Tabelleninhalt einliest).

  • ProductCmptType#get[Declared]Formula[s] beauskunften Formeln an Vertragsklassen.

  • ProductConfigurationXmlAdapter hat jetzt einen privaten No-Args-Konstruktor

Designtime

  • Die Klassenhierarchie des StdBuilderSet wurde aufgeteilt, so dass einige Funktionalität jetzt in der neuen Superklasse JavaBuilderSet zu finden ist, welche über das Projekt org.faktorips.devtools.model.builder, jetzt auch ohne Eclipse nutzbar ist.

Kompatibilität

Ältere Faktor-IPS-Versionen

Mit 24.7 erzeugte Produktdaten sind nicht von älteren IPS-Versionen verwendbar, die 24.7 Runtime kann auch keine mit älteren Versionen erzeugten Produktdaten nutzen.

Java

Die Design-Time (Eclipse-Plugin) benötigt mindestens Java 17. Die Runtime benötigt mindestens Java 11.

Eclipse

Die Design-Time (Eclipse-Plugin) benötigt mindestens Eclipse 2023-12 und wurde mit diesem und allen Versionen bis einschließlich 2024-03 getestet. Eclipse 2024-06 ist zum Releasezeitpunkt von Faktor-IPS 24.7.0 erst als RC1 verfügbar, mit dem noch Probleme auftreten, weshalb ein Einsatz noch nicht empfohlen wird.

Migration

Die Migration für diese Version speichert alle Faktor-IPS Dateien neu ab. Dadurch ergeben sich Änderungen in den .ips* Datein und ggf. Änderungen im generierten Source-Code wie in API-Änderungen beschrieben.

Behobene Fehler

  • Umbenennen von Tabellenstruktur wirft Exception

  • Wertzuweisung über Vorlage führt bei leerem Produktattribut vom Typ Decimal zur Exception

  • Überschriebenes Attribut kann die Kategorie-Position nicht beibehalten

  • Änderungen an Vorlagen werden nicht in FIPS-Bausteine übernommen

  • Migration läßt sich nicht immer anwenden

  • Eclipse hängt sich beim Umbenennen eines IPS-Elementes über das IPS-Refactoring auf

  • String mit mehreren Werten und Typ Aufzählung führt zu einem Validierungsfehler

  • Migration mehrerer Projekte zeigt nur Fehler aus dem letzten Projekt

  • Maven-Build schlägt mit Eclipse 2023-06 fehl.

  • 1 zu 1 Beziehungen in Template können nicht überschrieben werden

  • Exception beim Bearbeiten der Zahlungsperiode

  • Vergleich eines erweiterbaren Enums mit == kann fehlschagen

  • Defaultwert-Auswahl sollte nur erlaubte Werte enthalten

  • Tabelle: Fixing-Dialog öffnet sich nicht

  • Boolean-Wertemengen im Produkt nicht bearbeitbar

  • NullPointerExceptions bei Migration auf 24.1.3

  • faktorips-validation-maven-plugin bricht mit Exception ab wenn das Produktvarianten-Feature im Projekt konfiguriert ist

  • Maven-Plugin hat hartcodierte backslashes

  • Fehlerhafte Links in Doku

  • Relevance in Kombination mit DerivedValueSet optimieren

  • Testfalltyp: Nach Speichern kann Attribut nicht hinzugefügt werden

  • Nach Anlegen der Beziehungen friert die Detailansicht ein

  • JVM Crash beim bearbeiten von Attributen in TestCase

  • In IpsTestCases werden Eingaben nicht immer gespeichert

  • Attribute bearbeiten-Dialog braucht Scrolleisten

  • ModelObjectDelta changedProperties Mutability-Changed in Release-Notes erwähnen

  • EnumXmlAdapter funktionieren nicht mit EclipseLink MOXy

  • Validierung von Subklassen meckert, wenn die Superklasse abstrakte Attribute hat

  • CopyWizard Performance bei großen Modellen

  • Produktbausteineditor kann nicht geöffnet werden, wenn der Produktbausteintyp nicht gefunden wird

  • InMemoryRuntimeRepository#getNumberOfProductComponentGenerations wirft NullPointerException für neu hinzugefügte Produktbausteine

  • ModelObjectAttributes::resetAttributes erwartet bei gecachten Attributen und konstanten Attributen einen Setter

  • Wenn ein Enum und ein PolicyCmptType mit gleichem UnqualifiedName in der gleichen Klasse verwendet werden wird fehlerhafter Code generiert.

  • Produktkonfiguriertes Vertragsattribut(modellseitig mandatory) kann als irrelevant konfiguriert werden

Weitere Funktionen und Verbesserungen

  • Migration 24.7

  • Unterstützung Eclipse 2024-06 RC1

  • Verbesserung Fehlermeldung und Kennzeichnung bei einem aufgetreten Build-Fehler

  • Runtime/Valuetypes-Code auf Java 11 anheben

  • Produktkonfiguriertes Vertragsattribut(modellseitig mandatory) kann als irrelevant konfiguriert werden

  • Bessere Fehlermeldung für generische Validierung von StringLengthValueSet

  • Contribute to linkki

  • Überschreiben von Validierungsregeln

  • Kein resources Eintrag für src/main/resource in pom generieren bei hinzufügen der ips-nature

  • TableUsage sollte auch Namen des referenzierten Table liefern können

  • TableUsage#setTableName

  • Release Notes von Faktor-IPS um Kompatibilitätsinformation bzgl. Produktkonfiguration erweitern

  • Fehler an Wertebereichmethode bei Überschreibung eines abstrakten Datentyps

  • Redundant Cast am Setter bei abstrakten Datentyp

  • Relevance Methoden liefern unerwartetes ValueSet bei erweiterbaren Enums

  • ConcurrentModificationException aus AbstractRuntimeRepository.getAllReferencedRepositories()