Releases
Release notes follow the keep a changelog format.
[Unreleased]
[0.14.1] - 2025-04-02
Added
@quatico/magellan-shared
: Now supports context management across service calls by providing event-based context updates usingClientContextChangedEvent
.@quatico/magellan-client
: NewClientContextHandler
for managing client-side context. It enables storing and retrieving per-namespace context information (e.g., a request identifier or custom header which should be provided to eachremoteInvoke
call). Also, if registered theClientContextHandler
listens for context updates propagated using theClientContextChangedEvent
.
[0.14.0] - 2025-03-29
Changed
- Java code generation uses
Context
type import from@quatico/magellan-shared
[0.13.1] - 2025-03-07
Changed
- Breaking Change: Improved support for automated context validation by changing the
ServiceFunction
interface fromServiceFunction<I, R>
toServiceFunction<I, R, C extends Context>
.- Due to the
ServiceFunction
interface change, we can automatically get the expected type and ensure that the context passed to the function during the invocation is an instance of this type. Therefore, the annotation@ValidateServiceFunctionContext
is no longer necessary and has been removed. - Note, the feature is no longer optional and is activated by default.
- Due to the
[0.13.0] - 2025-02-20
[0.12.0] - 2025-02-14
Added
- Support for automated context validation using
@ValidateServiceFunctionContext
. The annotation validates that the context passed to the Magellan function is an instance of the expected type configured in the annotation (e.g.,@ValidateServiceFunctionContext(type = RequestContext.class
ensures that the context passed to the function during the invocation is an instance ofRequestContext
). For this to work, an additional dependency is requiredorg.springframework.boot:spring-boot-starter-aop
. The feature is activated by default. If you don't want to use this feature it can be disabled via the application properties file by settingmagellan.validate-context=false
.
Removed
- Breaking Change: The class
MagellanRestcontroller.java
has been removed from the spring package. We've realised that this is not the best way to go as every project will have different requirements. Therefore, we ask you to implement it yourself but provide an example as part of the documentation.
[0.11.2] - 2024-11-15
[0.11.0] - 2024-11-15
Fixed
- Deserialization of sets / maps:
null
values for Sets and Maps are deserialized as an empty collection of the same type.
Changed
- Breaking Change: The functions
addTransport
andaddTransportIfAbsent
have been removed from the public API. Please usesetTransport
instead.setTransport
will replace the transport handler if it already exists, or add it if it does not. - Breaking Change: The functions
addNamespace
andaddNamespaceIfAbsent
have been removed from the public API. Please usesetNamespace
instead.setNamespace
will replace the namespace mapping if it already exists, or add it if it does not. - Breaking Change: The functions
getDevelopmentMode
andsetDevelopmentMode
have been removed from the public API. - Breaking Change: The functions
updateServiceFunctions
have been removed from the public API.
[0.10.1] - 2024-09-27
Fixed
- Fixed endless loop in TypeScript code generation which occurred when a class implementing
ServiceFunction<Input, Output>
did not overridegetName()
and was missing the annotation@ServiceFunctionName
.
[0.10.0] - 2024-09-20
Changed
- TypeScript code generation no longer instantiates the class implementing
ServiceFunction<Input, Output>
to get the desired TypeScript function name. Instead, the annotation@ServiceFunctionName
has been introduced which replacesgetName()
.getName()
is now deprecated and will be removed in the 1.0.0 release. This fixes the bug that classes implementingServiceFunction<Input, Output>
could not null check or require that all of their dependencies must be@NonNull
.
[0.9.0] - 2024-06-28
Added
- Support for
java.util.UUID
code generation, serialization and deserialization to/from JavaScriptstring
.
[0.8.0] - 2024-06-18
Added
- Support for
java.math.BigInteger
serialization and deserialization to/from JavaScriptbigint
. - Support for
java.math.BigDecimal
serialization and deserialization to/from JavaScriptnumber
. BigDecimal is serialized with Java's double value' s precision.
[0.7.1] - 2024-04-05
Fixed
- Fixes TypeScript code generation for simple enums. Enums without methods were not generated as they were considered simple types.
[0.7.0] - 2024-04-05
Fixed
- Fixes optional parameters (i.e.
context
andserialization
) ofremoteInvoke
are not generated during TypeScript code generation
Changed
- TypeScript code generation ignores static final fields on Java classes. This is required to be able to support generating code and serializing
classes which expose public constants (e.g.,
public static final String FOO = "foo";
) or implement interfaces such asSerializable
which require static final fields to be present (e.g.,private static final long serialVersionUID = 1L;
). - Fixes Vavr Set & HashSet being serialized as JSON Array instead of complex type which resulted in the Set & HashSet being interpreted as Array during deserialization in the browser.
[0.6.0] - 2023-12-19
Added
- Provides TypeScript type mappings and serialization support for java.util.Optional and io.vavr.control.Option
- Added support for own @Nullable annotation (use instead of javax.annotation.Nullable) to support Java 17+ releases where javax.annotation.Nullable is no longer present
[0.5.5] - 2023-12-14
Fixed
- Fixed missing TypeScript code generation for Vavr collection types (List, Seq, HashSet, Set)
- Fixes missing supported TypeScript type mappings for Java temporal types (OffsetDateTime, ZonedDateTime)
[0.5.4] - 2023-12-14
Added
- Provides serialization support for Vavr collection types (List, Seq, HashSet, Set)
- Provides serialization support for Java temporal types (OffsetDateTime, ZonedDateTime)
[0.5.3] - 2023-12-05
Fixed
- Fixes: index.ts file has conflicting type exports if multiple functions in namespace have same (nested) types / type exports
[0.5.2] - 2023-11-17
Fixed
- Fixes: Types of nested/inner classes are not exported via index.ts file
[0.5.1] - 2023-09-06
Fixed
- Fixes: AEM Code contains Java 9+ language features - ensures Java 8 compatibility
[0.5.0] - 2023-09-06
Changed
- spring-boot-starter-web: Dependency updated to 2.7.15 matching ewz spring stack
- commons-lang3: Dependency updated to 3.13.0 matching ewz spring stack
- gson: Dependency updated to 2.10.1 to support the serialization of Java
Records
(https://github.com/google/gson/releases/tag/gson-parent-2.10)
[0.4.5] - 2023-09-06
Changed
- AEM uber-jar: Dependency updated to 6.5.15 matching ewz-webportal
- spring-boot-starter-web: Dependency updated to 2.7.3 matching ewz spring stack
- Introduce reactor pom file for orchestrating build of magellan-maven-module
Added
- Provides TypeScript code generation for Java classes containing arrays
- Provides support for functions without inputs/outputs (using
Void
as input/output type)
Fixed
- Fixed issue with release pipeline not being able to push to GitHub and NPM
- Fixed git tag update in Jenkins release pipeline
- Fixes variable escaping in shell command for Jenkins continuous-deploy pipeline
- Fixes encoding problem in shell task for release pipeline
[0.2.2] - 2023-03-2
Added
- Added Magellan gradle plugin to generate NPM modules from Magellan ServiceFunction implementations.
Fixed
- Update Magellan Serialization dependency to remove flatten-maven-plugin depedency inclusion.
[0.2.1] - 2023-02-09
Added
- Added support for production vs development execution of the Magellan Sdk impacting server -> client error reporting.
Changed
- Error responses contain exception with callstack in development mode.
[0.2.0] - 2022-11-11
Added
- Added support for @Nullable annotations on fields to mark fields as nullable for TS code generation
- Added support for generic collections and arrays of primitive types in TS code generation.
- Added support for generic classes in TS code generation.
- Added support for recursive class dependencies and Enums.
[0.1.3] - 2022-10-03
Added
- Expose capability to disable Magellan's Spring Default TransportReceiver through MagellanConfig.
[0.1.2] - 2022-08-15
Changed
- Enhanced core SDK API
Fixed
- Improves maven dependency setup
[0.1.0] - 2022-08-04
Added
- Added automatic data serialization and transport between frontend and service
- Added automatic typescript module generation for typed ServiceFunctions
- Added namespace based control for local or remote function execution
- Added AEM module with MagellanService and default MagellanAemServlet
- Added SpringBoot module with MagellanService and default MagellanRestController
- Added form-data based function forwarding in AEM and Spring
- Added extensive
Magellan for Java
documentation