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

mpochatkin pushed a commit to branch IGNITE-26181
in repository https://gitbox.apache.org/repos/asf/ignite-3.git

commit 27406dc14f942f474128f4e90a5f743df26c9133
Author: Pochatkin Mikhail <[email protected]>
AuthorDate: Mon Sep 1 17:52:04 2025 +0300

    IGNITE-26181 Fix default byte array marshalling
---
 .../ignite/marshalling/ByteArrayMarshaller.java    | 31 +++++++++-
 .../JavaSerializationByteArrayMarshalling.java     | 70 ----------------------
 2 files changed, 29 insertions(+), 72 deletions(-)

diff --git 
a/modules/api/src/main/java/org/apache/ignite/marshalling/ByteArrayMarshaller.java
 
b/modules/api/src/main/java/org/apache/ignite/marshalling/ByteArrayMarshaller.java
index 50bfa3d51e4..b84d4804a13 100644
--- 
a/modules/api/src/main/java/org/apache/ignite/marshalling/ByteArrayMarshaller.java
+++ 
b/modules/api/src/main/java/org/apache/ignite/marshalling/ByteArrayMarshaller.java
@@ -17,6 +17,12 @@
 
 package org.apache.ignite.marshalling;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.ObjectStreamClass;
 import java.io.Serializable;
 import org.jetbrains.annotations.Nullable;
 
@@ -39,7 +45,14 @@ public interface ByteArrayMarshaller<T> extends 
Marshaller<T, byte[]> {
         }
 
         if (object instanceof Serializable) {
-            return 
JavaSerializationByteArrayMarshalling.marshal((Serializable) object);
+            try (var baos = new ByteArrayOutputStream(); var out = new 
ObjectOutputStream(baos)) {
+                out.writeObject(object);
+                out.flush();
+
+                return baos.toByteArray();
+            } catch (IOException e) {
+                throw new MarshallingException(e);
+            }
         }
 
         throw new UnsupportedObjectTypeMarshallingException(object.getClass());
@@ -51,6 +64,20 @@ public interface ByteArrayMarshaller<T> extends 
Marshaller<T, byte[]> {
             return null;
         }
 
-        return JavaSerializationByteArrayMarshalling.unmarshal(raw);
+        try (var bais = new ByteArrayInputStream(raw); var ois = new 
ObjectInputStream(bais) {
+            @Override
+            protected Class<?> resolveClass(ObjectStreamClass desc) throws 
IOException, ClassNotFoundException {
+                String name = desc.getName();
+                try {
+                    return Class.forName(name, false, 
ByteArrayMarshaller.this.getClass().getClassLoader());
+                } catch (ClassNotFoundException ex) {
+                    return super.resolveClass(desc);
+                }
+            }
+        }) {
+            return (T) ois.readObject();
+        } catch (IOException | ClassNotFoundException e) {
+            throw new MarshallingException(e);
+        }
     }
 }
diff --git 
a/modules/api/src/main/java/org/apache/ignite/marshalling/JavaSerializationByteArrayMarshalling.java
 
b/modules/api/src/main/java/org/apache/ignite/marshalling/JavaSerializationByteArrayMarshalling.java
deleted file mode 100644
index 12845167478..00000000000
--- 
a/modules/api/src/main/java/org/apache/ignite/marshalling/JavaSerializationByteArrayMarshalling.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.marshalling;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import org.jetbrains.annotations.Nullable;
-
-/**
- * Default java serialization marshaller. It is used by default if no other 
marshaller is provided.
- */
-class JavaSerializationByteArrayMarshalling {
-    /**
-     * Writes the object to a byte array with java serialization.
-     *
-     * @param <T> object.
-     * @return byte array that represents the object.
-     */
-    public static <T extends Serializable> byte @Nullable [] marshal(T object) 
{
-        if (object == null) {
-            return null;
-        }
-
-        try (var baos = new ByteArrayOutputStream(); var out = new 
ObjectOutputStream(baos)) {
-            out.writeObject(object);
-            out.flush();
-
-            return baos.toByteArray();
-        } catch (IOException e) {
-            throw new MarshallingException(e);
-        }
-    }
-
-    /**
-     * Reads the object from a byte array with java serialization.
-     *
-     * @param raw byte array that represents the object.
-     * @return object.
-     */
-    public static <T> @Nullable T unmarshal(byte @Nullable [] raw) {
-        if (raw == null) {
-            return null;
-        }
-
-        try (var bais = new ByteArrayInputStream(raw); var ois = new 
ObjectInputStream(bais)) {
-            return (T) ois.readObject();
-        } catch (IOException | ClassNotFoundException e) {
-            throw new MarshallingException(e);
-        }
-    }
-}

Reply via email to