You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sd...@apache.org on 2022/01/11 23:56:49 UTC

[ignite-3] 21/27: - improve code readability

This is an automated email from the ASF dual-hosted git repository.

sdanilov pushed a commit to branch uos-network
in repository https://gitbox.apache.org/repos/asf/ignite-3.git

commit fdcd2fc6bf964d40d89a349e62d018e0f7cfe558
Author: Roman Puchkovskiy <ro...@gmail.com>
AuthorDate: Tue Jan 11 15:59:55 2022 +0400

    - improve code readability
---
 .../marshal/DefaultUserObjectMarshaller.java       | 38 ++++++++--------------
 .../serialization/marshal/MarshallingContext.java  |  3 +-
 2 files changed, 16 insertions(+), 25 deletions(-)

diff --git a/modules/network/src/main/java/org/apache/ignite/internal/network/serialization/marshal/DefaultUserObjectMarshaller.java b/modules/network/src/main/java/org/apache/ignite/internal/network/serialization/marshal/DefaultUserObjectMarshaller.java
index bc2617c..36a8c6d 100644
--- a/modules/network/src/main/java/org/apache/ignite/internal/network/serialization/marshal/DefaultUserObjectMarshaller.java
+++ b/modules/network/src/main/java/org/apache/ignite/internal/network/serialization/marshal/DefaultUserObjectMarshaller.java
@@ -36,7 +36,6 @@ import org.apache.ignite.internal.network.serialization.ClassDescriptor;
 import org.apache.ignite.internal.network.serialization.ClassDescriptorFactory;
 import org.apache.ignite.internal.network.serialization.ClassDescriptorFactoryContext;
 import org.apache.ignite.internal.network.serialization.IdIndexedDescriptors;
-import org.apache.ignite.internal.network.serialization.Null;
 import org.apache.ignite.internal.network.serialization.SerializedStreamCommands;
 import org.apache.ignite.internal.network.serialization.SpecialMethodInvocationException;
 import org.jetbrains.annotations.Nullable;
@@ -107,19 +106,19 @@ public class DefaultUserObjectMarshaller implements UserObjectMarshaller {
 
         throwIfMarshallingNotSupported(object);
 
-        ClassDescriptor originalDescriptor = obtainOriginalDescriptor(object, declaredClass);
+        ClassDescriptor originalDescriptor = getOrCreateDescriptor(object, declaredClass);
 
-        DescribedObject writeReplaced = applyWriteReplaceIfNeeded(object, originalDescriptor);
+        DescribedObject afterReplacement = applyWriteReplaceIfNeeded(object, originalDescriptor);
 
-        if (canParticipateInCycles(writeReplaced.descriptor)) {
-            Integer maybeRefId = context.rememberAsSeen(writeReplaced.object);
+        if (canParticipateInCycles(afterReplacement.descriptor)) {
+            Integer maybeRefId = context.rememberAsSeen(afterReplacement.object);
             if (maybeRefId != null) {
                 writeReference(maybeRefId, output);
             } else {
-                marshalCycleable(writeReplaced, output, context);
+                marshalCycleable(afterReplacement, output, context);
             }
         } else {
-            marshalNonCycleable(writeReplaced, output, context);
+            marshalNonCycleable(afterReplacement, output, context);
         }
     }
 
@@ -133,19 +132,6 @@ public class DefaultUserObjectMarshaller implements UserObjectMarshaller {
         return !builtInNonContainerMarshallers.supports(descriptor.clazz());
     }
 
-    private ClassDescriptor obtainOriginalDescriptor(@Nullable Object object, Class<?> declaredClass) {
-        if (object == null) {
-            return descriptorRegistry.getNullDescriptor();
-        }
-
-        // For primitives we need to keep the declaredClass (it differs from object.getClass()).
-        // For enums we don't need the specific classes at all.
-        Class<?> classToQueryForOriginalDescriptor = declaredClass.isPrimitive() || object instanceof Enum
-                ? declaredClass : object.getClass();
-
-        return getOrCreateDescriptor(classToQueryForOriginalDescriptor);
-    }
-
     private boolean objectIsMemberOfEnumWithAnonymousClassesForMembers(Object object, Class<?> declaredClass) {
         return declaredClass.isEnum() && object.getClass().getSuperclass() == declaredClass;
     }
@@ -194,6 +180,7 @@ public class DefaultUserObjectMarshaller implements UserObjectMarshaller {
         if (descriptorBefore.describesSameClass(replacementDescriptor)) {
             return new DescribedObject(replacedObject, replacementDescriptor);
         } else {
+            // Let's do it again!
             return applyWriteReplaceIfNeeded(replacedObject, replacementDescriptor);
         }
     }
@@ -208,13 +195,16 @@ public class DefaultUserObjectMarshaller implements UserObjectMarshaller {
     }
 
     private ClassDescriptor getOrCreateDescriptor(@Nullable Object object, Class<?> declaredClass) {
-        assert object != null || declaredClass == Null.class;
-
         if (object == null) {
             return descriptorRegistry.getNullDescriptor();
         }
 
-        return getOrCreateDescriptor(object.getClass());
+        // For primitives, we need to keep the declaredClass (it differs from object.getClass()).
+        // For enums, we don't need the specific classes at all.
+        Class<?> classToQueryForOriginalDescriptor = declaredClass.isPrimitive() || object instanceof Enum
+                ? declaredClass : object.getClass();
+
+        return getOrCreateDescriptor(classToQueryForOriginalDescriptor);
     }
 
     private ClassDescriptor getOrCreateDescriptor(Class<?> objectClass) {
@@ -375,7 +365,7 @@ public class DefaultUserObjectMarshaller implements UserObjectMarshaller {
         }
     }
 
-    private Object[] preInstantiateGenericRefArray(DataInput input) throws IOException {
+    private Object[] preInstantiateGenericRefArray(DataInput input) throws IOException, UnmarshalException {
         return builtInContainerMarshallers.preInstantiateGenericRefArray(input);
     }
 
diff --git a/modules/network/src/main/java/org/apache/ignite/internal/network/serialization/marshal/MarshallingContext.java b/modules/network/src/main/java/org/apache/ignite/internal/network/serialization/marshal/MarshallingContext.java
index 30683f9..7287d0e 100644
--- a/modules/network/src/main/java/org/apache/ignite/internal/network/serialization/marshal/MarshallingContext.java
+++ b/modules/network/src/main/java/org/apache/ignite/internal/network/serialization/marshal/MarshallingContext.java
@@ -53,7 +53,8 @@ class MarshallingContext {
     }
 
     /**
-     * If the object was already seen before, its ID is returned; otherwise, it's memorized as seen with a fresh ID.
+     * If the object was already seen before, its ID is returned; otherwise, it's memorized as seen with a fresh ID
+     * and {@code null} is returned.
      *
      * @param object object to operate upon
      * @return object ID if it was seen earlier or {@code null} if the object is new