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