eclipse.preferences.version=1 line.separator=\n
Release Notes
Version 24.7.5
Mit dem Patchrelease 24.7.5 wird Eclipse nun bis zur Version 2024-09 unterstützt. Die in 24.7.3 eingeführten Identifier haben bei großen Projekten zu einer Verlängerung der Builddauer gesorgt. Diese sind jetzt hinsichtlich ihrer Performanz überarbeitet und verbessert. Wenn Overload Formula
auf eine Formel mit unterschiedlichen Parametern angewendet wird, gab es beim Anzeigen der Kategorien eine Exception, welche mit diesem Release behoben wurde. Zu guter Letzt beachtet Faktor-IPS jetzt eine projektweite Einstellung für Zeilenumbrüche.
Faktor-IPS beachtet jetzt Projekteinstellung für Zeilenumbrüche
In Eclipse kann systemunabhängig die Art der Zeilenumbrüche (Unix: \n
oder Windows: \r\n
) projektweit festgelegt werden. Faktor-IPS nutzt jetzt diese Einstellung um die Line-Endings für u. a. toc.xml
, .properties
dem Setting entsprechend nach einem Clean Build einheitlich zu generieren.
Die Einstellung kann in Eclipse über das UI (Rechtsklick auf das Projekt → Properties → Resource → New text file line delimiter) oder direkt über die Datei org.eclipse.core.runtime.prefs
im Unterordner .settings/
wie folgt gesetzt werden:
Migration
Projekte müssen auf 24.7.5 migriert werden um die Zeilenumbruch-Einstellungen korrekt anzuwenden.
Behobene Fehler
-
initPartContainersFromXml verwirft alle Parts
-
toXml wird für abgeleitetes Vertragsattribut generiert
-
Zeilenumbruch (\n) in messages .properties wird in Windows zu \r\n
-
Overload Formula causes NPE
Weitere Funktionen und Verbesserungen
-
Improve Identifier performance
-
Eclipse wird mit Faktor-IPS 24.7.5 nun bis zur Version 2024-09 unterstützt
Version 24.7.4
Das Patchrelease 24.7.4 erhöht die Dependency zu Apache Commons IO auf 2.17.0, um CVE-2024-47554 (Bösartig fehlerhaftes XML kann beim Einlesen die CPU blockieren und damit für einen Denial-of-Service-Angriff genutzt werden). Um diese Lücke auszunutzen hätte im Fall von Faktor-IPS allerdings ein lokaler Anwender nur seinen eigenen Rechner oder ggf. einen Buildserver blockieren können.
Zusätzlich wurden die Packages und Maven-Dependencies von org.faktorips.devtools.model
und org.faktorips.devtools.model.builder
aufgeräumt.
Dieses Update betrifft das Faktorips-Maven-Plugin und auf Faktor-IPS aufbauende Eclipse-Plugins (z.B. unser Produktvarianten-Plugin oder Kundenplugins, falls diese auf die genannten Packages zugreifen) sowie Runtime-Abhängigkeiten zu org.faktorips.devtools.model - die derzeit nur der Product Designer haben sollte.
|
Version 24.7.3
In Version 24.7.3 wurden vier Fehler behoben. So kam es bei Testfällen mit Umlauten wie [ö, ü, ä]
im Namen zu Anzeigefehlern im Testrunner.
Beim Anpassen von Attributen wurden bestehende Validierungsregeln aufgrund von Namenskonflikten zwischen Dummy-Wertebereichsregeln und den vorhandenen Validierungsregeln teils unerwartet gelöscht oder verändert. Das Problem wurde behoben, indem nun bei der Namensvergabe für Dummy-Regeln geprüft wird, ob bereits eine Regel mit diesem Namen existiert, um solche Konflikte zu vermeiden.
Null-Werte werden nun als Standardwert für Pflichtattribute in der Laufzeitvalidierung erlaubt. Zuvor war es nicht möglich, null/""
als Standardwert zu setzen, was angepasst wurde, um u. a. im Product Designer anzuzeigen, dass bisher kein Wert gewählt wurde der Nutzer jedoch noch einen gültigen Wert auswählen muss.
Für diverse IpsObjectParts
wurden nun Identifier eingeführt, da es unter Umständen dazu kam, dass Parts aufgrund falscher Identifikation nach dem Speichervorgang neu erstellt und verworfen wurden.
Behobene Fehler
-
Anzeigefehler bei Umlauten im Testrunner
-
Anpassung des Attributs setzt vorhandene Validierungsregeln zurück
-
Runtime-Validierung erlaubt null/"" nicht als Default-Wert bei Pflichtattributen
-
initPartContainersFromXml verwirft alle Parts
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-09 getestet.
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()