Release Notes

Version 21.12.0

Neue Funktionen und Verbesserungen

Schemas für IPS-XML-Dateien (FIPS-7445)

Faktor-IPS nutzt XML zur Speicherung aller IPS-Objekte im Workspace. Da diese Dateien nur von Faktor-IPS geschrieben und gelesen werden war eine Validierung des Inhalts gegen ein XML-Schema bisher nicht nötig. Da nun immer mehr Entwickler kleinere Anpassungen an IPS-Objekten gerne auch außerhalb von Faktor-IPS, zum Beispiel mit anderen IDEs oder Texteditoren, vornehmen wollen kann über die Einstellung "validateIpsSchema" in der .ipsproject-Konfigurationsdatei jetzt eine Schema-Referenz in die Dateien geschrieben wird gegen das beim Lesen und Kompilieren dann validiert wird. Diese Einstellung kann auch im Zuge der Migration aktiviert werden.

Erweiterung des Maven-Mojos (FIPS-7572, FIPS-8014, FIPS-7796, FIPS-8026)

Das Maven-Plugin wurde um den Parameter <buildIpsOnly> erweitert der standardmäßig auf true gesetzt ist.
Damit wird gesteuert das der "faktorips-build" nur noch den Quellcode generiert, der dann erst vom nachfolgenden "maven-compile" kompiliert wird.

Ebenfalls wurde das Build-Mojo um die Möglichkeit erweitert einen inkrementellen Build zu machen. Somit wird nicht mehr automatisch das Arbeitsverzeichnis gelöscht und alles neu importiert, sondern nur noch wenn die Phase clean angeben wird.

Das Logging des "faktorips-build" wurde mit der platform debug tracing facility von Eclipse erweitert und kann mit der Maven Option -X aktiviert werden. Falls die Standard-Einstellungen nicht passend sind kann mit dem Parameter <debugLogOptions> eine eigene Tracing Options Datei angegeben werden. Siehe: FAQ How do I use the platform debug tracing facility

Erweiterungen der Ant-Tasks (FIPS-8014)

Der Ant-Task FullBuildTask wurde in BuildTask umbenannt und um zwei Optionen ipsOnly und fullBuild erweitert.+ Dabei steuert die Option ipsOnly das nur der Faktor-Ips Builder gestartet wird, nicht aber die anderen im Projekt konfigurierten Builder.
Die Option fullBuild steuert dabei ob der Build als Voller- oder Inkrementeller-Build gestartet wird.

Die Tasks MavenProjectImportTask und ProjectImportTask werfen jetzt keine Fehler mehr wenn die zu importierenden Projekte bereits existieren.

Jakarta Persistence 2.2 (FIPS-7741)

In Folge der Freigabe von Java EE durch Oracle wurde das Open-Source-Projekt Jakarta EE gegründet. Aus Namensrechtlichen Gründen wurden in einem ersten Schritt alle Artefakte umbenannt und nutzen jetzt nicht mehr "Java" im Namen sondern "Jakarta". Da diverse Projekte wie z.B. Spring ihre Dependencies auf diese neuen Artefakte umgestellt haben bietet auch Faktor-IPS die Möglichkeit "Jakarta Persistence 2.2" als Persistence-Provider für die Abbildung von Faktor-IPS-Vertragsobjekten in Datenbanken zu verwenden. Die generierten Annotations sind identisch mit denen des "Generic JPA 2.1" Persistence Providers, lediglich die Dependencies die in Maven-Projekten beim Anlegen oder Hinzufügen der IPS-Nature eingetragen werden ändern sich auf

<dependency>
    <groupId>jakarta.persistence</groupId>
    <artifactId>jakarta.persistence-api</artifactId>
    <version>2.2.3</version>
</dependency>

Erst mit einer kommenden Faktor-IPS-Version wird auch Jakarta Persistence 3 unterstützt werden, welches als Teil von Jakarta EE 9 dann auch für die Annotations den Namensraum von "javax.persistence" zu "jakarta.persistence" ändert.

Neue Annotation @IpsGenerated (FIPS-8109)

Viele Entwickler benutzen Werkzeuge zur automatischen Einschätzung der Codequalität. Dabei soll aber natürlich nur der selbst geschriebene Code, nicht der von Faktor-IPS generierte geprüft werden. Viele Werkzeuge lassen sich dazu über Kommentare oder Annotations steuern. Mit org.faktorips.runtime.annotation.IpsGenerated gibt es jetzt eine auch in kompilierten Klassen erhalten bleibende Annotation, die Faktor-IPS über die Einstellung
<Property name="additionalAnnotations" value="org.faktorips.runtime.annotation.IpsGenerated"/>
an alle generierten Methoden generieren kann, um damit z.B. SonarQube/JaCoCo von der Analyse dieser Methoden abzuhalten.

Java 17 (FIPS-7865)

Faktor-IPS 21.12 läuft jetzt auch mit Java 17 und weiterhin mit Java 11.

Migration (FIPS-8143)

Bei der Migration auf Faktor-IPS 21.12 kann die Einstellung "validateIpsSchema" für die migrierten Projekte gesetzt und damit eine XML-Schema-Referenz in alle IPS-XML-Dateien geschrieben werden.

Deprecation des loggingFrameworkConnectors (FIPS-8120)

Den Extension Point loggingFrameworkConnector und das dazugehörige Interface IIpsLoggingFrameworkConnector haben wir als Deprecated markiert, da wir ihn in keinem Builder mehr nutzen.

Navigation zu Produktvorlagen (FIPS-7398)

Da Vorlagen in der Produktdefintionsperspektive sichtbar und bearbeitbar sind können diese nun auch unabhängig von der Einstellung "Navigation zum Modell oder Java-Sourcecode möglich" navigiert werden.

navigate template de

Matcher (FIPS-8175)

Die Matcher für die org.faktorips.runtime.MessageList aus de.faktorzehn.commons.ips.test.matcher.IpsMatchers sind nun auch Teil von Faktor-IPS und (unter teilweise anderem Namen) in org.faktorips.testsupport.IpsMatchers verfügbar. Zusätzlich gibt es Matcher für org.faktorips.valueset.ValueSet in org.faktorips.testsupport.ValueSetMatchers.
Maven-Dependency:

<dependency>
    <groupId>org.faktorips</groupId>
    <artifactId>org.faktorips.testsupport</artifactId>
    <scope>test</scope>
</dependency>
Weitere Funktionen und Verbesserungen
  • neuer Extension Point beim Speichern eines Produktkonfigurationsbausteines (FIPS-7549)

  • Dokumentation zu Relevanzen (FIPS-7761)

  • Abstrakte Enums als Datentyp für reine Vertragsattribute an konkreten Vertragstypen (FIPS-6875)

  • Attribut "beinhaltet <null>" anders darstellen (FIPS-7129)

  • Navigation zu Vorlagen sollte immer möglich sein (FIPS-7398)

  • Reihenfolge von Custom Validations soll der im ExtensionPoint: org.faktorips.devtools.core.customValidation entsprechen. (FIPS-7536)

  • Menü-Enablement sollte Ips-Objekte nicht unnötig instantiieren (FIPS-7682)

  • jakarta.persistence 2.2 als Persistence Provider (FIPS-7741)

  • Offizielle Eclipse-Update-Site als Default im Mojo nutzen (FIPS-7816)

  • Java 17-Unterstützung (FIPS-7865)

  • -Dmaven.repo.local auswerten und in Eclipse setzen (FIPS-7922)

  • Versionsübergreifende Tests (FIPS-7968)

  • Abfragemöglichkeit, ob ein ValueSet nicht eingeschränkt ist (FIPS-7980)

  • Faktor-IPS Maven Plugin und Lombok sollen in einem Projekt verwendet werden können (FIPS-7981)

  • Incremental IPS-Build (FIPS-8014)

  • Logging verbessern (FIPS-8026)

  • @Generated Annotation um generierten Code aus der CodeCoverage raus zu nehmen (FIPS-8109)

  • loggingFrameworkConnector deprecaten (FIPS-8120)

  • XML-Validierungs-Setting aktivieren (FIPS-8143)

  • toString in PolicyCmptType-Subklassen sollte per default super aufrufen (FIPS-8168)

  • Matchers aus f10-commons mit IPS veröffentlichen (FIPS-8175)

  • SingleInternationalString in testsupport aufnehmen (FIPS-8366)

  • Archetype für 21.12 anpassen (FIPS-8389)

  • @IpsGenerated als Default in neuen Projekten eintragen (FIPS-8404)

  • Schema für XMLs (FIPS-7445)

Behobene Fehler

  • Fehlermeldung beschreibt die Anpassungsstufe, obwohl es keine Anpassungsstufen gibt (FIPS-6836)

  • NPE beim Versuch eines Copy&Paste im Attribute Edit Dialog (FIPS-1602)

  • Reiter Persistenz muss bei überschriebenen Attributen disabled sein (FIPS-5847)

  • Konkreter Enum kann nicht auf abstrakt umgestellt werden (FIPS-6450)

  • Wertebereich lässt sich beim Anlegen eines Produktbausteintyp-Attributs nicht ändern (FIPS-6570)

  • IPS-Test findet Abhängigkeiten aus Maven-Dependencies nicht (FIPS-6683)

  • "Beinhaltet <null>" in Produkt-Editor kann nicht entfernt werden, wenn in Vertragsklasse <null> nicht zugelassen ist. (FIPS-6701)

  • NPE beim Anlegen eines Vertragsteiltyps (FIPS-7062)

  • NullPointerException beim Ändern auf Anpassungsstufen (FIPS-7187)

  • Aktive Attribut Eingabeelemente in Readonly Aufzählungstypen (FIPS-7288)

  • Radio Buttons für Relevanz bleiben bei Template Nutzung readonly (FIPS-7749)

  • Copy&Paste in Dialogen (FIPS-7759)

  • NullPointerException bei Prüfen eines Wertes eines Attributes vom Typ Long in einer LongRange (FIPS-7884)

  • IllegalArgumentException bei Prüfen eines Wertes eines Attributes vom Typ Money in ValueSet mit unterschiedlicher Währung (FIPS-7885)

  • ProductCmptBuilder: cardinality fehlt im super Aufruf (FIPS-7909)

  • CSV Import an Tabelle anhängen speichert nicht auf Platte (FIPS-7969)

  • Archetype funktioniert nicht in Eclipse (FIPS-7970)

  • Leerzeile in generiertem Javadoc Kommentar bei Table Row Klassen (FIPS-7971)

  • NullPointerException im ProduktStrukturExplorer (FIPS-7973)

  • StringLengthValueSet: fehlerhafte Implementierung isEmpty() und isDiscrete() (FIPS-7979)

  • "Struktur anzeigen" fehlt im Kontextmenü in Produktdefinitionsperspektive (FIPS-8063)

  • Validierung für doppelte Kind-ID-Version-ID-Kombinationen nicht ausschaltbar (FIPS-8073)

  • NPE when calling "getValues(true)" on a BigDecimalRange without a step (step = null) (FIPS-8081)

  • Werte für DynamicEnumDatatype in TableContent nicht korrekt wählbar/dargestellt (FIPS-8083)

  • Maven Build schlägt unregelmäßig fehl (FIPS-8088)

  • DefaultRange.isUnrestricted(true) berücksichtigt empty Range nicht (FIPS-8114)

  • Maven-Build hängt (FIPS-8147)

  • Java 11 bricht XMLs mit Werten und Extension Properties um (FIPS-8149)

  • NPE beim Unterschiede beheben (FIPS-8156)

  • Produkt-Struktur-Explorer zeigt Regeln nicht an (FIPS-8198)

  • faktorips-maven-plugin schlägt bei Maven Release fehl (FIPS-8202)

  • No more handles im DeepCopyWizard (FIPS-8219)

  • Long-Attribute in FIPS-Enums erzeugen nicht kompilierbaren Code bei großen Werten (FIPS-8226)

  • Datum-Picker in Eclipse 21.6 (FIPS-8230)

  • Schema für PolicyCmptType funktioniert nicht mit Produktvarianten auf Regeln (FIPS-8286)

  • Systemunabhängige Line-Endings in Test-Klassen (FIPS-8291)

  • getCardinalityFor.. Methoden werden nicht refaktoriert (FIPS-8315)

  • Mojo sheitert beim Build eines Maven-Projekts mit gesetztem <name> (FIPS-8321)

  • faktorips-maven-plugin schlägt mit ".project is out of sync with the file system" fehl (FIPS-8340)

  • Schema für Tabellen fordert unnötiges format-Attribut (FIPS-8346)

  • XML von unbekannten ExtensionProperties wird bei Migration auf 21.12 um xmlns="" ergänzt (FIPS-8349)

  • XML-Schema fehlerhaft bei Tabellen mit null (FIPS-8353)

  • Bausteinnamen mit doppelten Leerzeichen führen zu Fehler (FIPS-8362)

  • executionEnvironment sollte als Default das laufende Java nehmen (FIPS-8364)

  • Annotation in additional and retain führt dazu dass keine neuen Annotations hinzugefügt werden (FIPS-8377)

  • @Override fehlt manchmal (FIPS-8411)