JavaStreamObjectCopierImpl.java revision 608:7e06bf1dcb09
1/* 2 * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26package com.sun.corba.se.impl.copyobject ; 27 28import java.util.logging.Level; 29import java.util.logging.Logger; 30 31import java.io.Serializable; 32import java.rmi.Remote; 33import java.rmi.MarshalException; 34 35import java.io.InputStream ; 36import java.io.OutputStream ; 37import java.io.ByteArrayInputStream ; 38import java.io.ByteArrayOutputStream ; 39import java.io.ObjectInputStream ; 40import java.io.ObjectOutputStream ; 41 42import org.omg.CORBA.ORB ; 43 44import com.sun.corba.se.spi.copyobject.ObjectCopier ; 45import com.sun.corba.se.impl.util.Utility; 46 47public class JavaStreamObjectCopierImpl implements ObjectCopier { 48 49 public JavaStreamObjectCopierImpl( ORB orb ) 50 { 51 this.orb = orb ; 52 } 53 54 public Object copy(Object obj) { 55 if (obj instanceof Remote) { 56 // Yes, so make sure it is connected and converted 57 // to a stub (if needed)... 58 return Utility.autoConnect(obj,orb,true); 59 } 60 61 try { 62 ByteArrayOutputStream os = new ByteArrayOutputStream( 10000 ) ; 63 ObjectOutputStream oos = new ObjectOutputStream( os ) ; 64 oos.writeObject( obj ) ; 65 66 byte[] arr = os.toByteArray() ; 67 InputStream is = new ByteArrayInputStream( arr ) ; 68 ObjectInputStream ois = new ObjectInputStream( is ) ; 69 70 return ois.readObject(); 71 } catch (Exception exc) { 72 System.out.println( "Failed with exception:" + exc ) ; 73 return null ; 74 } 75 } 76 77 private ORB orb; 78} 79