aboutsummaryrefslogtreecommitdiffstats
path: root/utils-test/src/main/java/org/onap/policy/common/utils/io/Serializer.java
diff options
context:
space:
mode:
Diffstat (limited to 'utils-test/src/main/java/org/onap/policy/common/utils/io/Serializer.java')
-rw-r--r--utils-test/src/main/java/org/onap/policy/common/utils/io/Serializer.java64
1 files changed, 55 insertions, 9 deletions
diff --git a/utils-test/src/main/java/org/onap/policy/common/utils/io/Serializer.java b/utils-test/src/main/java/org/onap/policy/common/utils/io/Serializer.java
index 740aad47..227b810a 100644
--- a/utils-test/src/main/java/org/onap/policy/common/utils/io/Serializer.java
+++ b/utils-test/src/main/java/org/onap/policy/common/utils/io/Serializer.java
@@ -32,6 +32,11 @@ import java.io.ObjectOutputStream;
public class Serializer {
/**
+ * Factory to access various objects. May be overridden for junit tests.
+ */
+ private static Factory factory = new Factory();
+
+ /**
* The constructor.
*/
private Serializer() {
@@ -40,15 +45,20 @@ public class Serializer {
/**
* Serializes an object into a byte array.
- *
+ *
* @param object the object to be serialized
* @return the byte array containing the serialized object
* @throws IOException if an error occurs
*/
public static <T> byte[] serialize(T object) throws IOException {
- try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
- try (ObjectOutputStream oos = new ObjectOutputStream(out)) {
- oos.writeObject(object);
+ try (ByteArrayOutputStream out = factory.makeByteArrayOutputStream()) {
+ try (ObjectOutputStream oos = factory.makeObjectOutputStream(out)) {
+ /*
+ * writeObject() is final and mockito can't mock final methods. In
+ * addition, powermock seemed to be having difficulty with the junit test
+ * class as well, so we'll just do it with a factory method.
+ */
+ factory.writeObject(object, oos);
}
return out.toByteArray();
@@ -57,7 +67,7 @@ public class Serializer {
/**
* De-serializes an object from a byte array.
- *
+ *
* @param clazz class of object that is expected to be de-serialized
* @param data the byte array containing the serialized object
* @return the object that was de-serialized from the byte array
@@ -65,9 +75,14 @@ public class Serializer {
*/
public static <T> T deserialize(Class<T> clazz, byte[] data) throws IOException {
- try (ByteArrayInputStream in = new ByteArrayInputStream(data);
- ObjectInputStream ois = new ObjectInputStream(in)) {
- return clazz.cast(ois.readObject());
+ try (ByteArrayInputStream in = factory.makeByteArrayInputStream(data);
+ ObjectInputStream ois = factory.makeObjectInputStream(in)) {
+ /*
+ * readObject() is final and mockito can't mock final methods. In addition,
+ * powermock seemed to be having difficulty with the junit test class as well,
+ * so we'll just do it with a factory method.
+ */
+ return clazz.cast(factory.readObject(ois));
} catch (ClassNotFoundException e) {
throw new IOException(e);
@@ -77,7 +92,7 @@ public class Serializer {
/**
* Runs an object through a complete round trip, serializing and then de-serializing
* it.
- *
+ *
* @param object object to be serialized
* @return the object that was de-serialized
* @throws IOException if an error occurs
@@ -86,4 +101,35 @@ public class Serializer {
public static <T> T roundTrip(T object) throws IOException {
return (T) deserialize(object.getClass(), serialize(object));
}
+
+ /**
+ * Factory to access various objects.
+ */
+ public static class Factory {
+
+ public ByteArrayOutputStream makeByteArrayOutputStream() {
+ return new ByteArrayOutputStream();
+ }
+
+ public ByteArrayInputStream makeByteArrayInputStream(byte[] data) {
+ return new ByteArrayInputStream(data);
+ }
+
+ public ObjectOutputStream makeObjectOutputStream(ByteArrayOutputStream out) throws IOException {
+ return new ObjectOutputStream(out);
+ }
+
+ public ObjectInputStream makeObjectInputStream(ByteArrayInputStream in) throws IOException {
+ return new ObjectInputStream(in);
+ }
+
+ public void writeObject(Object object, ObjectOutputStream oos) throws IOException {
+ oos.writeObject(object);
+ }
+
+ public Object readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
+ return ois.readObject();
+ }
+
+ }
}