Release Notes (English)

Version 21.12.8

If an Enum (isEnumType=true) is used as custom datatype and is configured as unrestricted in the product configuration we now generate an OrderedValueSet containing all values. The getAllValuesMethod configured in the .ipsproject file is used for this. (FIPS-10003)

Version 21.12.7

The build of product variants failed when a Faktor-IPS projects with product configurations on which a project with variants depends was not in the worksapce. This has been fixed with (FIPS-6919). An update of the runtime dependencies is not necessary.

Version 21.12.6

Access to enumeration attributes via name failed with capitalized attribute names (FIPS-9003)

Version 21.12.5

When dividing Decimal value by Decimal.NULL, Decimal.NULL is now returned, as was previously documented in the Javadoc. (FIPS-8989)

Version 21.12.4

Faktor-IPS 21.12.4 can save configurations of other Faktor-IPS features like the Product Variants in the .ipsproject file. This does not affect the runtime.

Version 21.12.3

With version 21.12.3 Faktor-IPS treats faulty entries MANIFEST.MF files of Maven dependencies used while running Faktor-IPS testcases with an error dialog and tries to run the test anyways instead of directly aborting the test run.

Version 21.12.2

Version 21.12.2 brings performance improvements when using large models and products from JARs in the Faktor-IPS design time tools(Eclipse plugin). An update of the runtime dependencies is not necessary.

Version 21.12.1

The patch release 21.12.1 fixes some links in the documentation and two bugs:

  • Locale is sometimes not recognized on MacOS (FIPS-8512)

  • Migration to product variants 21.12 removes duplicate blanks in labels (IPSPV-587)

The errors do not affect the runtime, so only an update of the installed Eclipse features is required.

Version 21.12.0

New Features and Improvements

Schemas for IPS XML Files (FIPS-7445)

Faktor-IPS uses XML to persist all IPS objects in the workspace. As those files are written and read exclusively by Faktor-IPS a validation of their content against an XML schema was not necessary. As more and more developers want to do small changes to some IPS objects outside of Faktor-IPS, for example with other IDEs or text editors, you can now activate the setting "validateIpsSchema" in the .ipsproject configuration file to write a schema reference in every file and validate against that schema on reading and building those files. This setting can also be activated during the migration to Faktor-IPS 21.12.

New Maven Mojo features (FIPS-7572, FIPS-8014, FIPS-7796, FIPS-8026)

The Maven plugin has been expanded with the <buildIpsOnly> option which is set to true by default.
With this parameter the "faktorips-build" only generates the source code, which is then compiled by the "maven-compile" plugin.

In addition, the build mojo now is able to do incremental builds by omitting the clean phase. Therefore the working directory is no longer automatically deleted and re-imported.

The logging of the "faktorips-build" was enhanced with the platform debug tracing facility from Eclipse and can be activated with the Maven option -X. If for some reason the standard trace settings are not suitable, a separate tracing options file can be specified with the parameter <debugLogOptions>. Please refer toe: FAQ How do I use the platform debug tracing facility

Enhancement of Ant tasks (FIPS-8014)

The Ant task FullBuildTask has been renamed to BuildTask and two options ipsOnly and fullBuild have been added.
The ipsOnly option determines what builders to use. Either only the Faktor-Ips Builder, or all of the configured project builders.
The fullBuild option controls whether the build is started as a full or incremental build.

The tasks MavenProjectImportTask and ProjectImportTask no longer throw errors if the projects already exist.

Jakarta Persistence 2.2 (FIPS-7741)

Following Oracle’s abandonment of Java EE the open source project Jakarta EE was founded. Due to naming rights for "Java" remaining with Oracle in a first step all artifacts were renamed to "Jakarta". Because many projects, including for example Spring, switched their dependencies to these renamed artifacts, Faktor-IPS now offers "Jakarta Persistence 2.2" as an option for the persistence provider to be used when persisting Faktor-IPS policy objects in a database. The generated annotations are identical to those of the "Generic JPA 2.1" persistence provider; only the dependencies created when creating a Maven project with the Faktor-IPS archetype or adding the IPS nature to an existing Maven project are changed to

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

With one of the following releases Faktor-IPS will support Jakarta Persistence 3, which is part of Jakarta EE 9 and changes the annotations' namespace from "javax.persistence" to "jakarta.persistence".

New Annotation @IpsGenerated (FIPS-8109)

Many developers use tools for the automated evaluation of code quality. Those tools should check their handwritten code, but not the code generated by Faktor-IPS. Many tools can be configured via comments or annotations. Faktor-IPS now provides the annotation org.faktorips.runtime.annotation.IpsGenerated that can be automatically added to all generated methods through the setting
<Property name="additionalAnnotations" value="org.faktorips.runtime.annotation.IpsGenerated"/>
to keep for example SonarQube/JaCoCo from analysing those methods.

Java 17 (FIPS-7865)

Faktor-IPS 21.12 is tested to run with Java 17 as well as Java 11.

Migration (FIPS-8143)

Upon migration to Faktor-IPS 21.12 the setting "validateIpsSchema" can be activated for the migrated projects, writing XML schema references in all IPS files.

Deprecation of loggingFrameworkConnectors (FIPS-8120)

We marked the extension point loggingFrameworkConnector and the associated interface IIpsLoggingFrameworkConnector as deprecated since we no longer use it in any builder.

Navigate to Templates (FIPS-7398)

Templates are visible and editable in the Productdefinition view, therefore they can now also be navigated independently of the setting "Can navigate to model or Java Sourcecode".

navigate template en

Matcher (FIPS-8175)

The matchers for the org.faktorips.runtime.MessageList in de.faktorzehn.commons.ips.test.matcher.IpsMatchers are now part of Faktor-IPS and available in org.faktorips.testsupport.IpsMatchers (some with a different name). Additionaly there are matchers for 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>
Further Features and Improvements
  • New extension point called before saving product components (FIPS-7549)

  • Documentation for relevances (FIPS-7761)

  • Abstract Enums as datatype for policy-only attributes on concrete policy types (FIPS-6875)

  • Attribute "includes <null>" should be displayed better (FIPS-7129)

  • Navigation to templates should always be possible (FIPS-7398)

  • Order of custom validations should match the one in the ExtensionPoint: org.faktorips.devtools.core.customValidation. (FIPS-7536)

  • Menu-Enablement should not unnecessarily instantiate IPS objects(FIPS-7682)

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

  • Use official Eclipse-Update-Site as Default in Mojo (FIPS-7816)

  • Java 17-Support (FIPS-7865)

  • Use -Dmaven.repo.local in Mojo’s Eclipse (FIPS-7922)

  • Tests against different versions (FIPS-7968)

  • Method to check whether a ValueSet is restricted (FIPS-7980)

  • Faktor-IPS Maven Plugin should work with Lombok in a project (FIPS-7981)

  • Incremental IPS-Build (FIPS-8014)

  • Improve Logging (FIPS-8026)

  • @Generated Annotation to exclude generated code from CodeCoverage tools (FIPS-8109)

  • deprecate loggingFrameworkConnector (FIPS-8120)

  • Activate XML-Validation-Setting (FIPS-8143)

  • toString in PolicyCmptType subclasses should call super by default (FIPS-8168)

  • Publish Matchers from f10-commons with IPS (FIPS-8175)

  • Add SingleInternationalString to testsupport (FIPS-8366)

  • Adapt Archetype for 21.12 (FIPS-8389)

  • Set @IpsGenerated as default in new projects (FIPS-8404)

  • Schemas for XML files (FIPS-7445)

Fixed Bugs

  • Exception mentions non-existant Generation (FIPS-6836)

  • NPE when trying to Copy&Paste in Attribute Edit Dialog (FIPS-1602)

  • Persistence-tab must be disabled for overwritten attributes (FIPS-5847)

  • Concrete Enum can’t be switched to abstract (FIPS-6450)

  • Value Set can’t be changed when creating a product attribute (FIPS-6570)

  • IPS-Test can’t find Maven dependencies (FIPS-6683)

  • "Includes <null>" in product editor can’t be removed when <null> is not allowed in the policy attribute (FIPS-6701)

  • NPE when creating a PolicyCmptType (FIPS-7062)

  • NullPointerException when changing to generations (FIPS-7187)

  • Active controls for attributes in read-only enums (FIPS-7288)

  • Radio buttons for relevance stay read-only for templates (FIPS-7749)

  • Copy&Paste in dialogs (FIPS-7759)

  • NullPointerException when checking values of attributes in a LongRange (FIPS-7884)

  • IllegalArgumentException when checking an attribute value of type Money in ValueSet with differing currency (FIPS-7885)

  • ProductCmptBuilderr: cardinality missing in super call (FIPS-7909)

  • CSV import adding to table is not persisted (FIPS-7969)

  • Archetype does not work in Eclipse (FIPS-7970)

  • Empty line in generated Javadoc comment in Table Row classes(FIPS-7971)

  • NullPointerException in product structure explorer (FIPS-7973)

  • StringLengthValueSet: faulty implementation of isEmpty() and isDiscrete() (FIPS-7979)

  • "Show structure" missing in product definition perspective context menu (FIPS-8063)

  • Validation for duplicate kind-id-version-id-combination can’t be disabled (FIPS-8073)

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

  • Values for DynamicEnumDatatype in TableContent can’t be corrected/displayed (FIPS-8083)

  • Maven Build fails irregularly (FIPS-8088)

  • DefaultRange.isUnrestricted(true) does not treat empty range correctly (FIPS-8114)

  • Maven-Build hangs (FIPS-8147)

  • Java 11 breaks XMLs with values and extension properties (FIPS-8149)

  • NPE when fixing differences (FIPS-8156)

  • Product structure explorer does not display static rules (FIPS-8198)

  • faktorips-maven-plugin fails during Maven Release (FIPS-8202)

  • No more handles in DeepCopyWizard (FIPS-8219)

  • Long attributes in FIPS enums create noncompilable code in enums (FIPS-8226)

  • Date-picker in Eclipse 21.6 (FIPS-8230)

  • Schema for PolicyCmptType does not work with product variants on rules (FIPS-8286)

  • System-independant line-endings in test-classes (FIPS-8291)

  • getCardinalityFor.. methoden aren’t refactored (FIPS-8315)

  • Mojo when building a maven project with set <name> (FIPS-8321)

  • faktorips-maven-plugin fails with ".project is out of sync with the file system" (FIPS-8340)

  • Schema for tables demands optional format-attribute (FIPS-8346)

  • XML of unknown ExtensionProperties is polluted with xmlns="" when migrating to 21.12 (FIPS-8349)

  • XML-Schema does not allow tables with null (FIPS-8353)

  • Product names with double-spaces in their name lead to error (FIPS-8362)

  • executionEnvironment should use the running Java as default (FIPS-8364)

  • Annotations in both additional and retain are not generated (FIPS-8377)

  • @Override is missing sometimes (FIPS-8411)