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 <[email protected]> Authored: Thu Jun 1 20:27:16 2017 +0900 Committer: rpopma <[email protected]> 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;
