serializableutils.java

来自「bpel执行引擎用来执行bpel业务流程」· Java 代码 · 共 106 行

JAVA
106
字号
/* * 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.ode.utils;import java.io.*;/** * Utitlity methods for <code>Serializable</code> objects. */public class SerializableUtils {  /**   * Clone a <code>Serializable</code> object; for use when a   * <code>clone()</code> method is not available.   *    * @param obj   *          object to clone   *    * @return clone object   *    * @throws RuntimeException   */  public static Object cloneSerializable(Object obj) {    Object ret = null;    try {      ByteArrayOutputStream baos = new ByteArrayOutputStream(StreamUtils.DEFAULT_BUFFER_SIZE);      ObjectOutputStream oos = new ObjectOutputStream(baos);      oos.writeObject(obj);      oos.close();      ByteArrayInputStream bis = new ByteArrayInputStream(baos.toByteArray());      ObjectInputStream ois = new ObjectInputStream(bis);      try {        ret = ois.readObject();      }      catch (ClassNotFoundException cnfe) {        assert false;      }      ois.close();    }    catch (IOException ioex) {      throw new RuntimeException("Unable to clone object: " + obj);    }    return ret;  }  public static byte[] toBytes(Object obj) {    ByteArrayOutputStream bos = new ByteArrayOutputStream(StreamUtils.DEFAULT_BUFFER_SIZE);    try {      ObjectOutputStream oos = new ObjectOutputStream(bos);      oos.writeObject(obj);    }    catch (IOException e) {      throw new RuntimeException("Error serializing object: " + obj.getClass() + ".", e);    }    return bos.toByteArray();  }  public static Object toObject(InputStream binaryStream, final ClassLoader cl) {    try {      ObjectInputStream ois = new ObjectInputStream(binaryStream) {        protected Class<?> resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException {          String name = desc.getName();          try {              return Class.forName(name, false, cl);          } catch (ClassNotFoundException ex) {              return super.resolveClass(desc);          }        }      };      return ois.readObject();    }    catch (Exception e) {      throw new RuntimeException(e);    }  }  public static Object toObject(byte[] arr, final ClassLoader cl) {    ByteArrayInputStream bis = new ByteArrayInputStream(arr);    return toObject(bis, cl);  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?