From 3e54e2753a71e7b01d8b1175f37ef3cd28490376 Mon Sep 17 00:00:00 2001 From: hg-ms <53219833+hg-ms@users.noreply.github.com> Date: Thu, 4 Jul 2024 11:00:27 +0200 Subject: [PATCH 1/3] export type dictionary added initialization with type dictionary from string improved PersistenceTypeHandlerManager initialization logging foundations: enabled type dictionary import --- .../PersistenceTypeDictionaryManager.java | 14 +++++----- .../types/PersistenceTypeHandlerManager.java | 6 ++--- .../org/eclipse/serializer/Serializer.java | 14 ++++++++++ .../serializer/SerializerFoundation.java | 27 ++++++++++++++++++- .../eclipse/serializer/TypedSerializer.java | 7 +++++ 5 files changed, 57 insertions(+), 11 deletions(-) diff --git a/persistence/persistence/src/main/java/org/eclipse/serializer/persistence/types/PersistenceTypeDictionaryManager.java b/persistence/persistence/src/main/java/org/eclipse/serializer/persistence/types/PersistenceTypeDictionaryManager.java index ef61ff8a..ac46e4c4 100644 --- a/persistence/persistence/src/main/java/org/eclipse/serializer/persistence/types/PersistenceTypeDictionaryManager.java +++ b/persistence/persistence/src/main/java/org/eclipse/serializer/persistence/types/PersistenceTypeDictionaryManager.java @@ -16,8 +16,8 @@ import static org.eclipse.serializer.util.X.notNull; -import org.eclipse.serializer.util.X; import org.eclipse.serializer.persistence.exceptions.PersistenceException; +import org.eclipse.serializer.util.X; public interface PersistenceTypeDictionaryManager extends PersistenceTypeDictionaryProvider { @@ -326,11 +326,11 @@ public final synchronized boolean registerRuntimeTypeDefinitions( public static PersistenceTypeDictionaryManager Transient( - final PersistenceTypeDictionaryCreator typeDictionaryCreator + final PersistenceTypeDictionaryProvider typeDictionaryProvider ) { return new PersistenceTypeDictionaryManager.Transient( - notNull(typeDictionaryCreator) + notNull(typeDictionaryProvider) ); } @@ -340,7 +340,7 @@ public final class Transient extends PersistenceTypeDictionaryManager.Abstract

type) throws Pe @Override public final synchronized PersistenceTypeHandlerManager initialize() { - logger.info("Initializing type handler manager"); - if(this.initialized) { -// XDebug.debugln("already initialized"); + logger.debug("type handler manager already initialized"); return this; } + logger.info("Initializing type handler manager"); + synchronized(this.typeHandlerRegistry) { this.synchInternalInitialize(); diff --git a/serializer/src/main/java/org/eclipse/serializer/Serializer.java b/serializer/src/main/java/org/eclipse/serializer/Serializer.java index 0c5769ac..3882b855 100644 --- a/serializer/src/main/java/org/eclipse/serializer/Serializer.java +++ b/serializer/src/main/java/org/eclipse/serializer/Serializer.java @@ -75,6 +75,13 @@ public interface Serializer extends AutoCloseable * @return the deserialized object graph */ public T deserialize(M medium); + + /** + * Export the current type dictionary as String. + * + * @return type dictionary as String. + */ + public String exportTypeDictionay(); public static Serializer Bytes() { @@ -231,6 +238,13 @@ public synchronized void close() } } + @Override + public String exportTypeDictionay() + { + return this.foundation.getTypeDictionaryAssembler() + .assemble(this.persistenceManager.typeDictionary()); + } + private void lazyInit() { if(this.persistenceManager == null) diff --git a/serializer/src/main/java/org/eclipse/serializer/SerializerFoundation.java b/serializer/src/main/java/org/eclipse/serializer/SerializerFoundation.java index 8b56c76b..d18f401b 100644 --- a/serializer/src/main/java/org/eclipse/serializer/SerializerFoundation.java +++ b/serializer/src/main/java/org/eclipse/serializer/SerializerFoundation.java @@ -27,6 +27,7 @@ import org.eclipse.serializer.persistence.types.PersistenceRootsProvider; import org.eclipse.serializer.persistence.types.PersistenceStorer; import org.eclipse.serializer.persistence.types.PersistenceStorer.CreationObserver; +import org.eclipse.serializer.persistence.types.PersistenceTypeDictionaryLoader; import org.eclipse.serializer.persistence.types.PersistenceTypeDictionaryManager; import org.eclipse.serializer.persistence.types.PersistenceTypeHandlerManager; import org.eclipse.serializer.persistence.types.PersistenceTypeIdProvider; @@ -50,6 +51,8 @@ public interface SerializerFoundation> extends public F setSerializerTypeInfoStrategyCreator(SerializerTypeInfoStrategyCreator serializerTypeInfoStrategyCreator); + public F setInitialTypeDictionary(String typeDictionaryString); + public XEnum> getEntityTypes(); public F setEntityTypes(XEnum> entityTypes); @@ -66,6 +69,14 @@ public static SerializerFoundation New() return new SerializerFoundation.Default<>(); } + public static SerializerFoundation New(String typeDictionaryString) + { + SerializerFoundation foundation = new SerializerFoundation.Default<>(); + foundation.setInitialTypeDictionary(typeDictionaryString); + + return foundation; + } + public static class Default> extends BinaryPersistenceFoundation.Default @@ -96,6 +107,15 @@ public F setSerializerTypeInfoStrategyCreator(final SerializerTypeInfoStrategyCr return this.$(); } + @Override + public F setInitialTypeDictionary(String typeDictionaryString) + { + this.setTypeDictionaryLoader(()->typeDictionaryString); + this.ensureTypeDictionaryProvider(); + + return this.$(); + } + @Override public XEnum> getEntityTypes() { @@ -269,12 +289,17 @@ protected PersistenceTypeDictionaryManager ensureTypeDictionaryManager() { final PersistenceTypeDictionaryManager newTypeDictionaryManager = PersistenceTypeDictionaryManager.Transient( - this.getTypeDictionaryCreator() + this.getTypeDictionaryProvider() ) ; return newTypeDictionaryManager; } + @Override + protected PersistenceTypeDictionaryLoader ensureTypeDictionaryLoader() { + return () -> null; + } + } } diff --git a/serializer/src/main/java/org/eclipse/serializer/TypedSerializer.java b/serializer/src/main/java/org/eclipse/serializer/TypedSerializer.java index 0d342545..8ecc2217 100644 --- a/serializer/src/main/java/org/eclipse/serializer/TypedSerializer.java +++ b/serializer/src/main/java/org/eclipse/serializer/TypedSerializer.java @@ -351,6 +351,13 @@ public synchronized void close() } } + @Override + public String exportTypeDictionay() + { + return this.foundation.getTypeDictionaryAssembler() + .assemble(this.persistenceManager.typeDictionary()); + } + private void initialize() { if(this.persistenceManager == null) From 6b90c91641325e5b48995b9d3e0feb541071b5b5 Mon Sep 17 00:00:00 2001 From: hg-ms <53219833+hg-ms@users.noreply.github.com> Date: Mon, 8 Jul 2024 07:14:28 +0200 Subject: [PATCH 2/3] Update ComPersistenceAdaptor.java --- .../serializer/communication/types/ComPersistenceAdaptor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/communication/communication/src/main/java/org/eclipse/serializer/communication/types/ComPersistenceAdaptor.java b/communication/communication/src/main/java/org/eclipse/serializer/communication/types/ComPersistenceAdaptor.java index 9cb98317..d031239b 100644 --- a/communication/communication/src/main/java/org/eclipse/serializer/communication/types/ComPersistenceAdaptor.java +++ b/communication/communication/src/main/java/org/eclipse/serializer/communication/types/ComPersistenceAdaptor.java @@ -43,7 +43,7 @@ public default PersistenceTypeDictionaryView provideTypeDictionary() initFoundation.setTypeDictionaryManager( PersistenceTypeDictionaryManager.Transient( - initFoundation.getTypeDictionaryCreator() + initFoundation.getTypeDictionaryProvider() ) ); From 5e9e3ed9d7c1c992bf1412f7585be379e339ea5a Mon Sep 17 00:00:00 2001 From: hg-ms <53219833+hg-ms@users.noreply.github.com> Date: Mon, 8 Jul 2024 07:50:23 +0200 Subject: [PATCH 3/3] Update ComPersistenceAdaptorBinaryDynamic.java --- .../binarydynamic/ComPersistenceAdaptorBinaryDynamic.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/communication/binary/src/main/java/org/eclipse/serializer/communication/binarydynamic/ComPersistenceAdaptorBinaryDynamic.java b/communication/binary/src/main/java/org/eclipse/serializer/communication/binarydynamic/ComPersistenceAdaptorBinaryDynamic.java index bbc89f78..a49b127b 100644 --- a/communication/binary/src/main/java/org/eclipse/serializer/communication/binarydynamic/ComPersistenceAdaptorBinaryDynamic.java +++ b/communication/binary/src/main/java/org/eclipse/serializer/communication/binarydynamic/ComPersistenceAdaptorBinaryDynamic.java @@ -205,7 +205,7 @@ private BinaryPersistenceFoundation hostConnectionFoundation() hostFoundation.setTypeMismatchValidator(Persistence.typeMismatchValidatorFailing()); final PersistenceTypeDictionaryManager typeDictionaryManager = PersistenceTypeDictionaryManager.Transient( - hostFoundation.getTypeDictionaryCreator()); + hostFoundation.getTypeDictionaryProvider()); final PersistenceTypeDictionaryView typeDictionaryView = this.provideTypeDictionary(); typeDictionaryView.allTypeDefinitions().forEach(d -> typeDictionaryManager.registerTypeDefinition(d.value())); @@ -252,7 +252,7 @@ public BinaryPersistenceFoundation provideClientPersistenceFoundation( clientFoundation.setTypeIdProvider (protocol.idStrategy().createTypeIdProvider()); final PersistenceTypeDictionaryManager typeDictionaryManager = PersistenceTypeDictionaryManager.Transient( - clientFoundation.getTypeDictionaryCreator()); + clientFoundation.getTypeDictionaryProvider()); final PersistenceTypeDictionaryView typeDictionaryView = protocol.typeDictionary(); typeDictionaryView.allTypeDefinitions().forEach(d -> typeDictionaryManager.registerTypeDefinition(d.value())); @@ -376,7 +376,7 @@ public PersistenceTypeDictionary provideTypeDictionaryInternal() initFoundation.setTypeDictionaryManager( PersistenceTypeDictionaryManager.Transient( - initFoundation.getTypeDictionaryCreator() + initFoundation.getTypeDictionaryProvider() ) );