Release Notes
Version 24.7.2
In dieser Version wurden vier Fehler behoben, die die Runtime und Designtime betreffen. Wegen einer Eigenheit im SWT-Textfeld werden die Zeilenumbrüche jetzt nur noch als LF gespeichert. Der Code-Generator kann jetzt mit Inner-Class-Datentypen umgehen. Die Fehlerbehandlung während des Faktor-IPS-Builds wurde verbessert; wenn der Heap-Speicher ausgeht, wird jetzt eine entsprechende Fehlermeldung ausgegeben. Weiters wurden falsch kodierte Umlaute richtiggestellt, um sie in der UI korrekt anzuzeigen.
Behobene Fehler
-
Unter Linux geschriebene FIPS-Dokumentation führt zu Diffs unter Windows ( )
-
Ipsenumtype von Datatype Definitions mit Innerclass Enums funktionieren nicht
-
Verschwundene TOC Einträge und IndexViolation
-
Umlaute fixen
Weitere Funktionen und Verbesserungen
-
Dokumentation: Relevanzkonfiguration am Produkt ohne null Value am Modellattribut nach Migration nicht mehr möglich
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).
Unterstützung für EclipseLink MOXy
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 mitProductCmptType#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 AbleitungValueSet<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 einegetTableName(IProductComponent, Calendar)
-Methode, die den Namen des verwendeten Tabelleninhalts zurückgibt (statt die Instanz zurückzugeben wiegetTable(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 SuperklasseJavaBuilderSet
zu finden ist, welche über das Projektorg.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.
Verschärfung der Relevanzkonfiguration
Für produktkonfigurierte, mandatory Modellattribute (kein null erlaubt), ist es mit Version 24.7 nicht mehr möglich eine Relevanzkonfiguration am Produkt vorzunehmen. Bisher konnte die Relevanz am Produkt für Felder, bei welchen Null ausgeschlossen ist, zusätzlich auch auf Irrelevant gesetzt werden. Durch diese Verschärfung sind ggf. Änderungen in der Modellierung und/oder Produktkonfiguration notwendig. Weitere Informationen hierzu: (FIPS-11884)
|
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()