com.netflix.zuul.util.DeepCopy Maven / Gradle / Ivy
/*
* Copyright 2018 Netflix, Inc.
*
* Licensed 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 com.netflix.zuul.util;
import java.io.*;
/**
* Deep copy of an Object. The Object must be Serializable
* @author Mikey Cohen
* Date: 1/31/12
* Time: 11:54 AM
*/
public class DeepCopy {
/**
* Returns a copy of the object, or null if the object cannot
* be serialized.
* @param orig an Object
value
* @return a deep copy of that Object
* @exception NotSerializableException if an error occurs
*/
public static Object copy(Object orig) throws NotSerializableException {
Object obj = null;
try {
// Write the object out to a byte array
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bos);
out.writeObject(orig);
out.flush();
out.close();
// Make an input stream from the byte array and read
// a copy of the object back in.
ObjectInputStream in = new ObjectInputStream(
new ByteArrayInputStream(bos.toByteArray()));
obj = in.readObject();
} catch (NotSerializableException e) {
throw e;
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException cnfe) {
cnfe.printStackTrace();
}
return obj;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy