1e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes/* 2e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * contributor license agreements. See the NOTICE file distributed with 4e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * this work for additional information regarding copyright ownership. 5e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * (the "License"); you may not use this file except in compliance with 7e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * the License. You may obtain a copy of the License at 8e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 9e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 11e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Unless required by applicable law or agreed to in writing, software 12e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * See the License for the specific language governing permissions and 15e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * limitations under the License. 16e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 17e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 18e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughespackage tests.util; 19e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 20e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.io.ByteArrayInputStream; 21e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.io.ByteArrayOutputStream; 22e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.io.File; 23e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.io.FileOutputStream; 24e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.io.IOException; 25e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.io.InputStream; 26e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.io.ObjectInputStream; 27e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.io.ObjectOutputStream; 28e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.io.OutputStream; 29e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.net.URL; 30e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 31e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes/** 32e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * This class simplifies the serialization test. 33e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 34e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 35e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughespublic class SerializationTester { 36e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 37e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /* 38e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * -------------------------------------------------------------------- 39e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Class variables 40e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * -------------------------------------------------------------------- 41e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 42e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 43e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes // the last deserialized object 44e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes private static Object lastOutput = null; 45e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 46e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /* 47e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * ------------------------------------------------------------------- 48e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Constructors 49e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * ------------------------------------------------------------------- 50e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 51e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 52e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes private SerializationTester() { 53e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 54e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 55e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 56e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /* 57e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * ------------------------------------------------------------------- 58e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Methods 59e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * ------------------------------------------------------------------- 60e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 61e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 62e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 63e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Serialize an object and then deserialize it. 64e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 65e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @param inputObject 66e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * the input object 67e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @return the deserialized object 68e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 69e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public static Object getDeserilizedObject(Object inputObject) 70e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes throws IOException, ClassNotFoundException { 71e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes ByteArrayOutputStream bos = new ByteArrayOutputStream(); 72e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes ObjectOutputStream oos = new ObjectOutputStream(bos); 73e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes oos.writeObject(inputObject); 74e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes oos.close(); 75e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 76e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); 77e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes ObjectInputStream ois = new ObjectInputStream(bis); 78e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes Object outputObject = ois.readObject(); 79e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes lastOutput = outputObject; 80e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes ois.close(); 81e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return outputObject; 82e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 83e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 84e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 85e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Tests the serialization and deserialization of const objects. 86e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 87e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @param inputObject 88e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * A const object 89e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @return true if the deserialized object is the same as the input object, 90e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * otherwise false 91e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @throws Exception 92e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * If any occurs. 93e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 94e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public static boolean assertSame(Object inputObject) throws Exception { 95e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return inputObject == getDeserilizedObject(inputObject); 96e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 97e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 98e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 99e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Tests the serialization and deserialization of instance objects. 100e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 101e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @param inputObject 102e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * An object 103e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @return true if the deserialized object is equal to the input object, 104e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * otherwise false 105e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @throws Exception 106e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * If any occurs. 107e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 108e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public static boolean assertEquals(Object inputObject) throws Exception { 109e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return inputObject.equals(getDeserilizedObject(inputObject)); 110e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 111e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 112e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 113e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Tests the serialization compatibility with reference const objects. 114e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 115e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @param obj 116e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * the object to be checked 117e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @param fileName 118e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * the serialization output file generated by reference 119e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @return true if compatible, otherwise false 120e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @throws Exception 121e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * If any occurs. 122e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 123e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public static boolean assertCompabilitySame(Object obj, String fileName) 124e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes throws Exception { 125e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return obj == readObject(obj, fileName); 126e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 127e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 128e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 129e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Tests the serialization compatibility with reference for instance 130e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * objects. 131e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 132e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @param obj 133e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * the object to be checked 134e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @param fileName 135e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * the serialization output file generated by reference 136e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @return true if compatible, otherwise false 137e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @throws Exception 138e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * If any occurs. 139e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 140e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public static boolean assertCompabilityEquals(Object obj, String fileName) 141e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes throws Exception { 142e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return obj.equals(readObject(obj, fileName)); 143e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 144e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 145e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 146e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Deserialize an object from a file. 147e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 148e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @param obj 149e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * the object to be serialized if no serialization file is found 150e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @param fileName 151e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * the serialization file 152e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @return the deserialized object 153e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @throws Exception 154e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * If any occurs. 155e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 156e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public static Object readObject(Object obj, String fileName) 157e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes throws Exception { 158e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes InputStream input = null; 159e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes ObjectInputStream oinput = null; 160e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes URL url = SerializationTester.class.getClassLoader().getResource( 161e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes fileName); 162e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes if (null == url) { 163e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes // serialization file does not exist, create one in the current dir 164e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes writeObject(obj, new File(fileName).getName()); 165e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes throw new Error( 166e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes "Serialization file does not exist, created in the current dir."); 167e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 168e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes input = url.openStream(); 169e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes try { 170e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes oinput = new ObjectInputStream(input); 171e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes Object newObj = oinput.readObject(); 172e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return newObj; 173e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } finally { 174e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes try { 175e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes if (null != oinput) { 176e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes oinput.close(); 177e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 178e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } catch (Exception e) { 179e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes // ignore 180e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 181e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes try { 182e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes if (null != input) { 183e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes input.close(); 184e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 185e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } catch (Exception e) { 186e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes // ignore 187e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 188e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 189e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 190e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 191e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /* 192e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Creates a serialization output. 193e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 194e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @param obj the object to be serialized @param fileName the output file 195e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @throws Exception If any occurs. 196e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 197e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public static void writeObject(Object obj, String fileName) 198e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes throws Exception { 199e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes // String path = SerializationTester.class.getResource(".").getPath(); 200e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes // if (path.endsWith(".")) { 201e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes // path = path.substring(0, path.length() - 1); 202e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes // } 203e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes // if (!path.endsWith("/")) { 204e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes // path += "/"; 205e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes // } 206e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes // path += fileName; 207e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes // System.out.println(path); 208e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes OutputStream output = null; 209e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes ObjectOutputStream ooutput = null; 210e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes try { 211e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes output = new FileOutputStream(fileName); 212e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes ooutput = new ObjectOutputStream(output); 213e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes ooutput.writeObject(obj); 214e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } finally { 215e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes try { 216e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes if (null != ooutput) { 217e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes ooutput.close(); 218e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 219e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } catch (Exception e) { 220e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes // ignore 221e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 222e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes try { 223e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes if (null != output) { 224e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes output.close(); 225e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 226e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } catch (Exception e) { 227e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes // ignore 228e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 229e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 230e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 231e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 232e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 233e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Gets the last deserialized object. 234e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 235e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @return the last deserialized object 236e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 237e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public static Object getLastOutput() { 238e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return lastOutput; 239e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 240e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 241e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /* 242e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * For test purpose. 243e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 244e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public static void main(String[] args) { 245e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 246e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes} 247