You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2017/06/01 11:27:27 UTC

logging-log4j2 git commit: LOG4J2-1926 removed dependency on java.rmi for Android compatibility

Repository: logging-log4j2
Updated Branches:
  refs/heads/master 95355c0ca -> 194a398d8


LOG4J2-1926 removed dependency on java.rmi for Android compatibility


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/194a398d
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/194a398d
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/194a398d

Branch: refs/heads/master
Commit: 194a398d8f70d6680f8154168011171f0a12113b
Parents: 95355c0
Author: rpopma <rp...@apache.org>
Authored: Thu Jun 1 20:27:16 2017 +0900
Committer: rpopma <rp...@apache.org>
Committed: Thu Jun 1 20:27:16 2017 +0900

----------------------------------------------------------------------
 .../log4j/util/SortedArrayStringMap.java        | 27 +++++++++++++++++---
 1 file changed, 23 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/194a398d/log4j-api/src/main/java/org/apache/logging/log4j/util/SortedArrayStringMap.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/SortedArrayStringMap.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/SortedArrayStringMap.java
index 1d0f1c0..f091ad3 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/SortedArrayStringMap.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/SortedArrayStringMap.java
@@ -16,9 +16,12 @@
  */
 package org.apache.logging.log4j.util;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InvalidObjectException;
-import java.rmi.MarshalledObject;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.util.Arrays;
 import java.util.ConcurrentModificationException;
 import java.util.HashMap;
@@ -485,7 +488,7 @@ public class SortedArrayStringMap implements IndexedStringMap {
             for (int i = 0; i < size; i++) {
                 s.writeObject(keys[i]);
                 try {
-                    s.writeObject(new MarshalledObject<>(values[i]));
+                    s.writeObject(marshall(values[i]));
                 } catch (final Exception e) {
                     handleSerializationException(e, i, keys[i]);
                     s.writeObject(null);
@@ -494,6 +497,22 @@ public class SortedArrayStringMap implements IndexedStringMap {
         }
     }
 
+    private static byte[] marshall(Object obj) throws IOException {
+        ByteArrayOutputStream bout = new ByteArrayOutputStream();
+        try (ObjectOutputStream oos = new ObjectOutputStream(bout)) {
+            oos.writeObject(obj);
+            oos.flush();
+            return bout.toByteArray();
+        }
+    }
+
+    private static Object unmarshall(byte[] data) throws IOException, ClassNotFoundException {
+        ByteArrayInputStream bin = new ByteArrayInputStream(data);
+        try (ObjectInputStream ois = new ObjectInputStream(bin)) {
+            return ois.readObject();
+        }
+    }
+
     /**
      * Calculate the next power of 2, greater than or equal to x.
      * <p>
@@ -542,8 +561,8 @@ public class SortedArrayStringMap implements IndexedStringMap {
         for (int i = 0; i < mappings; i++) {
             keys[i] = (String) s.readObject();
             try {
-                final MarshalledObject<Object> marshalledObject = (MarshalledObject<Object>) s.readObject();
-                values[i] = marshalledObject == null ? null : marshalledObject.get();
+                final byte[] marshalledObject = (byte[]) s.readObject();
+                values[i] = marshalledObject == null ? null : unmarshall(marshalledObject);
             } catch (final Exception | LinkageError error) {
                 handleSerializationException(error, i, keys[i]);
                 values[i] = null;