KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > mx > util > SerializationHelper


1 /*
2   * JBoss, Home of Professional Open Source
3   * Copyright 2005, JBoss Inc., and individual contributors as indicated
4   * by the @authors tag. See the copyright.txt in the distribution for a
5   * full listing of individual contributors.
6   *
7   * This is free software; you can redistribute it and/or modify it
8   * under the terms of the GNU Lesser General Public License as
9   * published by the Free Software Foundation; either version 2.1 of
10   * the License, or (at your option) any later version.
11   *
12   * This software is distributed in the hope that it will be useful,
13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15   * Lesser General Public License for more details.
16   *
17   * You should have received a copy of the GNU Lesser General Public
18   * License along with this software; if not, write to the Free
19   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
21   */

22 package org.jboss.mx.util;
23
24 import org.jboss.mx.server.ObjectInputStreamWithClassLoader;
25
26 import java.io.*;
27
28 /**
29  * SerializationHelper
30  *
31  * @author Jeff Haynie
32  */

33 public class SerializationHelper
34 {
35     /**
36      * deserialize, using the current Thread Context classloader
37      *
38      * @param byteArray
39      * @return deserialized object
40      * @throws IOException
41      * @throws ClassNotFoundException
42      */

43     public static Object JavaDoc deserialize(byte[] byteArray)
44             throws IOException, ClassNotFoundException JavaDoc
45     {
46         return deserialize(byteArray,Thread.currentThread().getContextClassLoader());
47     }
48     /**
49      * deserialize an object using a specific ClassLoader
50      *
51      * @param byteArray
52      * @param cl
53      * @return deserialized object
54      * @throws java.io.IOException
55      * @throws ClassNotFoundException
56      */

57     public static Object JavaDoc deserialize(byte[] byteArray, ClassLoader JavaDoc cl)
58             throws IOException, ClassNotFoundException JavaDoc
59     {
60         if (byteArray == null)
61         {
62             return null;
63         }
64         if (byteArray.length == 0)
65         {
66             return null;
67         }
68         try
69         {
70             if (cl==null)
71             {
72                 // use system loader
73
cl = SerializationHelper.class.getClassLoader();
74             }
75             ByteArrayInputStream bytearrayinputstream = new ByteArrayInputStream(byteArray);
76             ObjectInputStream objectinputstream = new ObjectInputStreamWithClassLoader(bytearrayinputstream,cl);
77             Object JavaDoc obj = objectinputstream.readObject();
78             return obj;
79         }
80         catch (OptionalDataException optionaldataexception)
81         {
82             throw new IOException(optionaldataexception.getMessage());
83         }
84     }
85
86     /**
87      * serialize an object
88      *
89      * @param obj
90      * @return serialized object
91      * @throws java.io.IOException
92      */

93     public static byte[] serialize(Object JavaDoc obj)
94             throws IOException
95     {
96         ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream();
97         ObjectOutputStream objectoutputstream = new ObjectOutputStream(bytearrayoutputstream);
98         objectoutputstream.writeObject(obj);
99         return bytearrayoutputstream.toByteArray();
100     }
101 }
102
Popular Tags