From 03b224b49e122c8653d2664ea59a4cf655b71887 Mon Sep 17 00:00:00 2001 From: hg-ms <53219833+hg-ms@users.noreply.github.com> Date: Mon, 16 Feb 2026 14:08:07 +0100 Subject: [PATCH 1/4] Supporting gigmap handler initialization for LegacyTypeHandler --- .../types/BinaryTypeHandlerSupplier.java | 22 ++++++++++++++++ .../PersistenceLegacyTypeHandlerSupplier.java | 26 +++++++++++++++++++ .../types/PersistenceLegacyTypeMapper.java | 24 +++++++++++++++-- 3 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 persistence/binary/src/main/java/org/eclipse/serializer/persistence/binary/types/BinaryTypeHandlerSupplier.java create mode 100644 persistence/persistence/src/main/java/org/eclipse/serializer/persistence/types/PersistenceLegacyTypeHandlerSupplier.java diff --git a/persistence/binary/src/main/java/org/eclipse/serializer/persistence/binary/types/BinaryTypeHandlerSupplier.java b/persistence/binary/src/main/java/org/eclipse/serializer/persistence/binary/types/BinaryTypeHandlerSupplier.java new file mode 100644 index 00000000..f224cff3 --- /dev/null +++ b/persistence/binary/src/main/java/org/eclipse/serializer/persistence/binary/types/BinaryTypeHandlerSupplier.java @@ -0,0 +1,22 @@ +package org.eclipse.serializer.persistence.binary.types; + +/*- + * #%L + * Eclipse Serializer Persistence Binary + * %% + * Copyright (C) 2023 - 2026 MicroStream Software + * %% + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * #L% + */ + +import org.eclipse.serializer.persistence.types.PersistenceLegacyTypeHandlerSupplier; + +public interface BinaryTypeHandlerSupplier extends PersistenceLegacyTypeHandlerSupplier +{ + +} diff --git a/persistence/persistence/src/main/java/org/eclipse/serializer/persistence/types/PersistenceLegacyTypeHandlerSupplier.java b/persistence/persistence/src/main/java/org/eclipse/serializer/persistence/types/PersistenceLegacyTypeHandlerSupplier.java new file mode 100644 index 00000000..cc04f11f --- /dev/null +++ b/persistence/persistence/src/main/java/org/eclipse/serializer/persistence/types/PersistenceLegacyTypeHandlerSupplier.java @@ -0,0 +1,26 @@ +package org.eclipse.serializer.persistence.types; + +/*- + * #%L + * Eclipse Serializer Persistence + * %% + * Copyright (C) 2023 - 2026 MicroStream Software + * %% + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * #L% + */ + +/** + * Classes implementing this interface must supply a PersistenceLegacyTypeHandler + * + * @param Persitence implementation type + * @param Class of the legacy type + */ +public interface PersistenceLegacyTypeHandlerSupplier +{ + PersistenceLegacyTypeHandler getLegacyTypeHandler(); +} diff --git a/persistence/persistence/src/main/java/org/eclipse/serializer/persistence/types/PersistenceLegacyTypeMapper.java b/persistence/persistence/src/main/java/org/eclipse/serializer/persistence/types/PersistenceLegacyTypeMapper.java index d1b67600..fe1cf37b 100644 --- a/persistence/persistence/src/main/java/org/eclipse/serializer/persistence/types/PersistenceLegacyTypeMapper.java +++ b/persistence/persistence/src/main/java/org/eclipse/serializer/persistence/types/PersistenceLegacyTypeMapper.java @@ -338,6 +338,18 @@ private PersistenceLegacyTypeHandler lookupCustomHandlerByTypeId( return null; } + validateLegacyTypeHandler(type, legacyTypeDefinition, legacyTypeHandlerbyId); + + return legacyTypeHandlerbyId; + } + + + + private void validateLegacyTypeHandler( + final Class type, + final PersistenceTypeDefinition legacyTypeDefinition, + final PersistenceLegacyTypeHandler legacyTypeHandlerbyId) + { // validate if the found handler with matching explicit typeId also has matching type and structure if(type != null && type != legacyTypeDefinition.type() || !PersistenceTypeDescription.equalStructure(legacyTypeHandlerbyId, legacyTypeDefinition) @@ -347,8 +359,6 @@ private PersistenceLegacyTypeHandler lookupCustomHandlerByTypeId( "Type handler structure mismatch for " + legacyTypeDefinition.toTypeIdentifier() ); } - - return legacyTypeHandlerbyId; } private PersistenceLegacyTypeHandler lookupCustomHandlerByStructure( @@ -378,6 +388,16 @@ public PersistenceLegacyTypeHandler ensureLegacyTypeHandler( final PersistenceTypeHandler currentTypeHandler ) { + //check for supplied handler + if(currentTypeHandler instanceof PersistenceLegacyTypeHandlerSupplier supplier) + { + @SuppressWarnings("unchecked") + PersistenceLegacyTypeHandler legacyTypeHandler = supplier.getLegacyTypeHandler(); + validateLegacyTypeHandler(legacyTypeDefinition.type(), legacyTypeDefinition, legacyTypeHandler); + return legacyTypeHandler.initialize(legacyTypeDefinition.typeId()); + } + + // check for a custom handler with matching structure final PersistenceLegacyTypeHandler customHandler = this.lookupCustomHandler(legacyTypeDefinition); if(customHandler != null) From 28d60fa8b176a55a9ea8d2ee3eb3016a435fd179 Mon Sep 17 00:00:00 2001 From: hg-ms <53219833+hg-ms@users.noreply.github.com> Date: Tue, 17 Feb 2026 10:21:23 +0100 Subject: [PATCH 2/4] html fix --- .../persistence/types/PersistenceLegacyTypeHandlerSupplier.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence/persistence/src/main/java/org/eclipse/serializer/persistence/types/PersistenceLegacyTypeHandlerSupplier.java b/persistence/persistence/src/main/java/org/eclipse/serializer/persistence/types/PersistenceLegacyTypeHandlerSupplier.java index cc04f11f..3e4ac6a1 100644 --- a/persistence/persistence/src/main/java/org/eclipse/serializer/persistence/types/PersistenceLegacyTypeHandlerSupplier.java +++ b/persistence/persistence/src/main/java/org/eclipse/serializer/persistence/types/PersistenceLegacyTypeHandlerSupplier.java @@ -18,7 +18,7 @@ * Classes implementing this interface must supply a PersistenceLegacyTypeHandler * * @param Persitence implementation type - * @param Class of the legacy type + * @param Class<?> of the legacy type */ public interface PersistenceLegacyTypeHandlerSupplier { From e94995b7e31dd0401b0314aef9055159f3eb5cdb Mon Sep 17 00:00:00 2001 From: hg-ms <53219833+hg-ms@users.noreply.github.com> Date: Tue, 17 Feb 2026 10:25:23 +0100 Subject: [PATCH 3/4] Update PersistenceLegacyTypeHandlerSupplier.java --- .../persistence/types/PersistenceLegacyTypeHandlerSupplier.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence/persistence/src/main/java/org/eclipse/serializer/persistence/types/PersistenceLegacyTypeHandlerSupplier.java b/persistence/persistence/src/main/java/org/eclipse/serializer/persistence/types/PersistenceLegacyTypeHandlerSupplier.java index 3e4ac6a1..9324490c 100644 --- a/persistence/persistence/src/main/java/org/eclipse/serializer/persistence/types/PersistenceLegacyTypeHandlerSupplier.java +++ b/persistence/persistence/src/main/java/org/eclipse/serializer/persistence/types/PersistenceLegacyTypeHandlerSupplier.java @@ -18,7 +18,7 @@ * Classes implementing this interface must supply a PersistenceLegacyTypeHandler * * @param Persitence implementation type - * @param Class<?> of the legacy type + * @param Class<?> of the legacy type */ public interface PersistenceLegacyTypeHandlerSupplier { From 35c37e48553fbbb74288118530522668b49769ae Mon Sep 17 00:00:00 2001 From: hg-ms <53219833+hg-ms@users.noreply.github.com> Date: Tue, 17 Feb 2026 11:19:53 +0100 Subject: [PATCH 4/4] renamed BinaryTypeHandlerSupplier to BinaryLegacyTypeHandlerSupplier --- ...andlerSupplier.java => BinaryLegacyTypeHandlerSupplier.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename persistence/binary/src/main/java/org/eclipse/serializer/persistence/binary/types/{BinaryTypeHandlerSupplier.java => BinaryLegacyTypeHandlerSupplier.java} (82%) diff --git a/persistence/binary/src/main/java/org/eclipse/serializer/persistence/binary/types/BinaryTypeHandlerSupplier.java b/persistence/binary/src/main/java/org/eclipse/serializer/persistence/binary/types/BinaryLegacyTypeHandlerSupplier.java similarity index 82% rename from persistence/binary/src/main/java/org/eclipse/serializer/persistence/binary/types/BinaryTypeHandlerSupplier.java rename to persistence/binary/src/main/java/org/eclipse/serializer/persistence/binary/types/BinaryLegacyTypeHandlerSupplier.java index f224cff3..9e5cf08c 100644 --- a/persistence/binary/src/main/java/org/eclipse/serializer/persistence/binary/types/BinaryTypeHandlerSupplier.java +++ b/persistence/binary/src/main/java/org/eclipse/serializer/persistence/binary/types/BinaryLegacyTypeHandlerSupplier.java @@ -16,7 +16,7 @@ import org.eclipse.serializer.persistence.types.PersistenceLegacyTypeHandlerSupplier; -public interface BinaryTypeHandlerSupplier extends PersistenceLegacyTypeHandlerSupplier +public interface BinaryLegacyTypeHandlerSupplier extends PersistenceLegacyTypeHandlerSupplier { }