English Documentation

Release Notes

Version 24.7.5

The patch release 24.7.5 includes compatibility with Eclipse up to version 2024-09. The Identifier introduced in 24.7.3 led to increased build times in large projects. These have now been reworked and improved in terms of performance. When Overload Formula is applied to a formula with different parameters, an exception occurred when displaying the categories, which has been fixed with this release. Lastly, Faktor-IPS now introduces a project-wide setting for line breaks.

Faktor-IPS uses Project Setting for Line Endings

In Eclipse, you can now define the type of line endings (Unix: \n or Windows: \r\n) project-wide, independently of the operating system. This ensures that after a clean build, line endings for files like toc.xml and .properties are generated by Faktor-IPS according to the specified setting.

This can be configured in the UI (right-click on the project → Properties → Resource → New text file line delimiter) or by creating the file org.eclipse.core.runtime.prefs in the .settings/ directory and set the preference as follows:

eclipse.preferences.version=1
line.separator=\n

Migration

Projects are migrated to 24.7.5 to apply the line separator settings correctly.

Fixed Bugs

  • initPartContainersFromXml discards all parts

  • toXml is generated for derived contract attribute

  • Line break (\n) in messages.properties becomes \r\n on Windows

  • Overload Formula causes NPE

Additional Features and Improvements

  • Improve Identifier performance

  • Eclipse is now supported up to version 2024-09 with Faktor-IPS 24.7.5

Version 24.7.4

The patch release 24.7.4 increases the Apache Commons IO dependency to 2.17.0, to mitigate CVE-2024-47554 (Maliciously erroneous XML may block the CPU when read and be used for a denial-of-service attack). Used against Faktor-IPS, an attacker would only have been able to block his local machine or a build server.

Additionally, the packages and Maven dependencies of org.faktorips.devtools.model and org.faktorips.devtools.model.builder were cleaned up.

This update relates to the Faktor-IPS Maven Plugin and Eclipse plugins (for example our product variant plugin or customer’s plugins using the changed packages) as well as runtime dependencies to org.faktorips.devtools.model - which should at the moment only be used in the Product Designer.

Version 24.7.3

In version 24.7.3, four errors were fixed. Test cases with umlauts like [ö, ü, ä] in their names led to display issues and additional errors in the test runner.

When adjusting attributes, existing validation rules were sometimes unexpectedly deleted or altered due to naming conflicts between dummy value range rules and the existing validation rules. The problem was resolved by now checking during the naming of dummy rules whether a rule with that name already exists, to avoid such conflicts.

Null values are now allowed as default values for mandatory attributes in runtime validation. Previously, it was not possible to set null/"" as a default value, which has been adjusted to indicate in the Product Designer that no value has been selected yet but the user still needs to choose a valid value.

Identifiers have now been introduced for various IpsObjectParts because parts were being recreated and discarded after the save process.

  • Display issues with umlauts in the test runner

  • Adjusting the attribute resets existing validation rules

  • Runtime validation does not allow null/"" as a default value for mandatory attributes

  • initPartContainersFromXml discards all parts

Version 24.7.2

In this version, four issues affecting runtime and design time have been fixed. Due to a peculiarity in the SWT text field, line breaks are now stored only as LF. The code generator can now handle inner-class data types. Error handling during the Faktor-IPS build has been improved; if the heap memory runs out, an appropriate error message is now displayed. Additionally, incorrectly encoded umlauts have been corrected to display them correctly in the UI.

Fixed Bugs

  • FIPS documentation written under Linux leads to diffs under Windows ( )

  • IpsEnumType of data type definitions with inner-class enums do not work

  • Missing TOC entries and IndexViolation

  • Umlaut fixes

Additional Features and Improvements

  • Documentation: After migration, it is no longer possible to configure relevance on the product without a null value on the model attribute

Version 24.7.1

Faktor-IPS uses the Framework Apache POI for im-/export of tables from/to Excel files, which again uses Log4J for logging. In some constellations (we could reproduce this in some installations of Eclipse 2024-03 and 2024-06) this logging blocked the im-/export, making the application unresponsive. Faktor-IPS 24.7.1 fixes this so that we can now recommend using Eclipse 2024-06 as well.

In addition, the method AbstractRuntimeRepository#getAllReferencedRepositories() has been better secured against concurrent access. In this context, we would like to point out that any read access to a RuntimeRepository should only take place after it has been fully constructed. In particular, all calls to addDirectlyReferencedRepository and addEnumValueLookupService must occur before any read access.

Version 24.7.0

Mainly we improved toXml functions and the runtime IpsModel, to allow the Product Designer access to all necessary data.

The runtime code was updated to now require at least Java 11 (instead of Java 8).

EclipseLink provides its own JAXB implementation called MOXy. Its behavior differs from the Glassfish reference implementation. For example, XML adapters are instantiated with a mandatory no-args constructor during the initial scan of annotated classes. This leads to problems with the EnumXmlAdapters and the ProductConfigurationXmlAdapter used by the Faktor-IPS JAXB-Support. These classes now have the constructor expected by MOXy, even though the instances created with these constructors are never used. They are replaced in the Faktor-IPS JAXB context with instances created with references to their runtime repositories. This enables the matching elements to be found in the repository during deserialization.

API-Changes

Generated Code

  • EnumXmlAdapter get a private no-args constructor

  • The new annotations @IpsFormulas and @IpsFormula are generated to allow ProductCmptType#get[Declared]Formula[s] to return information about a type’s formulas.

  • Abstract enumerations can be used as data types for non-product-relevant policy attributes. This case required some fixes especially when dealing with subclasses and overridden attributes:

    • Value set methods for abstract attributes are now generated with ValueSet<? extends AbstractEnum>, to allow overriding with ValueSet<ConcreteEnum> in subclasses.

    • Setter in builders are generated with the concrete enum type (and not annotated with @override).

  • Constants for value sets over overridden attributes are marked with @SuppressWarnings('hiding').

Runtime

  • ModelObjectDelta#changedProperties() now returns an immutable List.

  • TableUsage now has a getTableName(IProductComponent, Calendar) method that returns the name of the used table contents (instead of returning its instance as with getTable(IProductComponent productComponent, Calendar effectiveDate), which forces the repository to read the complete table contents).

  • ProductCmptType#get[Declared]Formula[s] return information about policy types' formulas.

  • ProductConfigurationXmlAdapter now has a private no-args constructor

Designtime

  • The class hierarchy of the StdBuilderSet was split, so that some functionality now resides in the super class JavaBuilderSet, which is, through the project org.faktorips.devtools.model.builder, now usable without Eclipse.

Compatibility

Older Versions of Faktor-IPS

Product data created with 24.7 is not fully readable by older versions of Faktor-IPS, nor can 24.7 work with product data created with older versions.

Java

The design time Eclipse plugin requires at least Java 17. The runtime requires at least Java 11.

Eclipse

The design time Eclipse plugin requires at least Eclipse 2023-12 and has been tested with that version and all following versions up to and including Eclipse 2024-09.

Migration

The migration for this version saves all Faktor-IPS files anew. This results in changes to the .ips* files and possibly changes in the generated source code as described in API-Changes.

Stricter Relevance Configuration

For product-configured mandatory model attributes (null not allowed), it is no longer be possible to configure relevance at the product level. Previously, relevance for fields where null was excluded could additionally be set to Irrelevant in the product. Due to this, changes in modeling and product configuration may be necessary. For more information, see: (FIPS-11884)

Fixed Bugs

  • Renaming a table structure throws Exception

  • Assigning a value via a template leads to an Exception on an empty Decimal product attribute

  • Overwritten attribute can’t keep category position

  • Changes on Templates are not transferred to templated product components

  • Migration can’t always be executed

  • Eclipse hangs when renaming an IPS element with the IPS refactoring

  • String with multiple values and type enumeration leads to validation error

  • Migration of multiple projects only shows errors from last project

  • Maven build fails with Eclipse 2023-06.

  • 1 to 1 links in templates can’t be overwritten

  • Exception when editing payment period

  • Comparison of enum values with == can fail

  • Selection of default value should only contain allowed values

  • Table: Fixing Dialog does not open

  • Boolean value sets not editable in product

  • NullPointerExceptions during migration to 24.1.3

  • faktorips-validation-maven-plugin fails with Exception when the product variant feature is configured

  • Maven plugin uses hardcoded backslashes

  • Broken links in documentation

  • Optimize relevance in combination with DerivedValueSet

  • TestCaseType: attribute cannot be added after saving

  • Detail view freezes after creating relationships

  • JVM crash when editing attributes in Test Case

  • Inputs in IpsTestCases are not always saved

  • Edit Attribute dialog needs scrollbars

  • Mention ModelObjectDelta changedProperties mutability-change in release notes

  • EnumXmlAdapter Does Not Work with EclipseLink MOXy

  • Validation of subclasses complains when superclass has abstract attributes

  • CopyWizard performance with large models

  • Can’t open product component editor when product component type not found

  • InMemoryRuntimeRepository#getNumberOfProductComponentGenerations throws NullPointerException for newly inserted product component

  • ModelObjectAttributes::resetAttributes expects a setter for constant and cached attributes

  • Using an Enum and a PolicyCmptType with the same unqualified name inside the same class leads to erroneous code generation.

  • Policy attribute configurable by product and marked as mandatory in the model can be marked as irrelevant in the product

Additional Features and Improvements

  • Migration 24.7

  • Support for Eclipse 2024-06 RC1

  • Better error messages and markers for build errors

  • Require Java 11 for runtime/valuetypes

  • Better error message for generic validation of StringLengthValueSet

  • Overriding validation rules

  • Do not generate resources entry for src/main/resource in pom when adding IPS nature

  • TableUsage should also provide name of referenced table

  • TableUsage#setTableName

  • Extend Faktor-IPS release notes with compatibility information regarding product configuration

  • Error in value range method when overriding an abstract data type

  • Redundant cast in setter for abstract data type

  • Relevance methods return unexpected ValueSet for extendable enums

  • ConcurrentModificationException from AbstractRuntimeRepository.getAllReferencedRepositories()