English Documentation

Release Notes

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-03. At the time of the release of Faktor-IPS 24.7.0, Eclipse 2024-06 is only available as RC1. Since problems still occur with this version, its use is not yet recommended.

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()