Skip to main content

2025.2 to 2026.0

1. Wildcards in search strings are treated as normal characters

What changed

Starting with ADITO 2026.0, wildcards in search strings will be escaped. Partially matching searches must now make use of the appropriate search operators like CONTAINS, CONTAINS_NOT, STARTS_WITH, END_WITH and the respective search term. The change affects content search as well as search filters.

Why it matters

This change makes it possible to search for the characters '%', '_', '*', '?' and '\'. It also fixes issues with some constellations of partially matching operators

If saved filters use wildcards in their search strings, they should be updated accordingly.

For example, replace:

// search for "test" and "greatest", old  
CONTAINS *test

with

// search for "test" and "greatest", new
ENDS WITH test

If necessary, it is also possible to create a custom filterExtension as a workaround.

Developer comments on why this was changed

In previous versions of ADITO, the behavior of the wildcard searches was inconsistent. Placeholders at the beginning or end of a search string caused string matching operators like CONTAINS to break and return incomplete results. Explicitly searching for characters that could be interpreted as wildcards was not possible. This was due to backwards compatibility to the swing client, which is no longer supported.

2. Some methods and constants for customizing have been removed

What changed

The following methods and constants have been removed:

db.exportData
db.fastExportData
util.ESCAPEMODE_ESCAPE
util.ESCAPEMODE_DOUBLE
util.ESCAPEMODE_CHANGE
util.ESCAPEMODE_NOTHING

Why it matters

These were needed for the deprecated swing client. Removing them improves the maintainability of the existing code.

3. Changes to customizing AI Features for CKEditor

What changed

The INTERNAL_AI role has been removed. It is no longer neccessary to assign this role to users to enable AI features in CKEditor. Instead, permissions can be configured with the newly added ckeditorAiAssistantEnabledProcess in the entityField. The result of the process overwrites the ckeditorAiAssistantEnabled property. The default value for this property is true.

Why it matters

This change simplifies the configuration of AI features for CKEditor and aligns with the overall goal of reducing complexity and improving maintainability.

Check if the INTERNAL_AI role is assigned to users and remove it if necessary. Review your permissions which user is allowed to use AI features and configure the ckeditorAiAssistantEnabledProcess accordingly.

4. JDK Upgrade to Version 25

Due to the update of the Java runtime environment from JDK 21 to JDK 25, the behavior of the underlying Java file system API has changed. This directly affects the use of fileIO methods in JDito.

What changed

In JDK 25, calling fileIO.exists("") (empty string) now returns true, whereas it returned false in JDK 21. Java now interprets an empty path more consistently as the current working directory.

Why it matters

If your code relies on an empty string being evaluated as "non-existent" (e.g., in validations or conditional logic), this may lead to unexpected behavior after the upgrade, as paths could be incorrectly identified as valid or existent.

Review your scripts for usages of fileIO.exists().

  • Avoid empty strings: Ensure that path variables are checked for content before performing an existence check.
  • Best Practice: To explicitly check the current directory, use fileIO.exists("."). This returns true reliably in both JDK 21 and JDK 25.

Example of a safer check:

var path = ""; // or result of a function
if (path && fileIO.exists(path))
{
// ... logic
}

5. Default-Scope for Authentication-Provider Alias

When calling an external REST webservice, an authentication-provider alias can be specified. The alias has a property for the OAuth2 scope. When this is filled, it was ignored for the execution of the REST call. This is now fixed.

Note that the scope can be set manually for the REST call. The default-scope from the alias is only used as a fallback if the scope is not set manually in the REST call.

Example:

import { auth, net } from "@aditosoftware/jdito-types";

let restConfig = ...;

let authConfig = auth.createConfigForOAuth2WithAlias();
authConfig.aliasName("azureAuth").scope("openid");

net.callRestWebservice(restConfig, authConfig);

There might be a case where the behaviour now is not as desired, though that is very unlikely: Only when the scope is required to be empty, but it has to be filled in the alias. Here the solution is to set the scope to en empty String in the REST call.

auth.createConfigForOAuth2WithAlias().aliasName("azureAuth").scope("");

6. Encoding of special characters in HTML fields

Since the update of the HTML editor in version 2022.1.0, special characters such as "ä, ö, ü, ê" etc have stopped being encoded with HTML escape sequences (e. g. "ä"). Because of that change, the content of HTML fields that was created after that release doesn't contain these escape codes, but older content still does.

However, the filter had not been adjusted to accomodate that change and still used the old logic with escape sequences. As a consequence, it was not possible to search for special characters in newer data inside fields with the contentType HTML.

What changed

In version 2026.0.0, the filter has been updated to match the behaviour of the HTML editor, so now it works correctly when special characters are used.

Why it matters

The filter is now consistent with the rest of the system when it's used for fields with contentType HTML, but the change comes with a new challenge: Existing or imported data which still contains the old escape sequences might not be found by the updated filter.

If you want to make sure that all data inside HTML fields is fully compatible with the filter, it may be necessary to write an upgrader that replaces all old escape sequences with the corresponding characters. Records that could require an update include those created in versions before 2022.1.0, as well as content imported from other sources. Because the scope of the affected data can be vastly different depending on the customizing and the age of the system, a standard solution can not be provided.

As a basis for your upgrade process, you can use this JSON as a reference; it contains a list of escape codes that are no longer used and the characters which replace them:

HTML escape sequences (JSON)

Note: Remaining escape sequences

The characters &, <, > and the non-breaking space \u00A0 are still encoded and are automatically handled by the filter. When you filter for any of these characters, the filter will automatically encode your filter value as shown below:

charactershtml entities
&&amp;
<&lt;
>&gt;
\u00A0&nbsp;

This means you should not decode &amp;, &lt;, &gt; and &nbsp; when migrating old data or importing external data into a field with contentType HTML. The ADITO HTML editor will store these text values as HTML entities.