Releases

Aspectran 9.4 Release Notes

This release introduces a completely overhauled APON/JSON module with powerful new features, significant improvements to web utilities, and several important bug fixes. Key highlights include a new high-performance APON parser, extensible JSON serialization, and enhanced type safety.

✨ New Features

  • New AponParser for High-Performance Parsing:
    • Introduced a new, high-performance AponParser class designed for efficient, structure-based parsing of dynamic APON data, especially multi-dimensional arrays.
  • Enhanced APON & JSON Capabilities:
    • Added support for lenient JSON parsing in JsonParser and JsonToParameters to handle non-standard formats (e.g., with trailing commas).
    • Introduced the JsonSerializer interface, allowing the registration of custom serializers for extensible and flexible JSON object serialization.
    • AponReader now correctly parses nested (multi-dimensional) arrays and supports compact empty structures ([], {}).
  • Modernized Web Utilities:
    • Added SameSite attribute support to CookieGenerator for enhanced browser security and standards compliance.
  • Flexible Token Generation:
    • Added overloaded static methods to PBTokenIssuer and TimeLimitedPBTokenIssuer that accept an explicit encryptionPassword, allowing for greater flexibility without relying on a single system-wide configuration.

🚀 Improvements

  • APON/JSON Core Refactoring:
    • The Parameters class hierarchy has been refactored with a new DefaultParameters base class to improve code reuse and simplify the creation of custom parameter types.
    • Greatly improved error messages and exception handling in APON utilities for better diagnostics.
    • The AponLines API has been refined for clearer and safer line appending.
  • Web Utility Enhancements:
    • Standardized all HTML and JavaScript escaping to use the robust Apache Commons Text library, removing legacy custom implementations.
    • Standardized URI encoding to UTF-8 across WebUtils and UrlTag for better consistency.
  • Core Framework & Build:
    • CoreServiceHolder.getAllContextNames() now returns a Set<String> to guarantee uniqueness.
    • Added httpclient5 as a required dependency for core web functionalities.
    • Refactored PBTokenIssuer and TimeLimitedPBTokenIssuer into final utility classes with static methods for easier use.

🐞 Bug Fixes

  • Type Safety and Correctness in APON/JSON:
    • Resolved potential ClassCastExceptions in ParameterValue by replacing unsafe direct casts with type-safe conversion logic for all getValueAs...List() methods.
    • Fixed an issue where JsonToParameters failed to correctly convert JSON arrays into APON Parameters.
    • An empty JsonString no longer causes an EOFException in JsonWriter; it now correctly outputs null.
    • Fixed a bug where empty collections were incorrectly stored as an array containing a single null element.

🛠️ Dependency Upgrades

  • Jetty updated to 12.1.4
  • Hibernate Validator updated to 9.1.0
  • Commons IO updated to 2.21.0
  • Other minor dependency patches.

NEWS
Release

Archive