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()
)
);