1. /*
  2. * @(#)ORBStreamObjectCopierImpl.java 1.8 03/12/19
  3. *
  4. * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
  5. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  6. */
  7. package com.sun.corba.se.impl.copyobject ;
  8. import java.util.logging.Level;
  9. import java.util.logging.Logger;
  10. import java.io.Serializable;
  11. import java.rmi.Remote;
  12. import java.rmi.MarshalException;
  13. import org.omg.CORBA_2_3.portable.InputStream;
  14. import org.omg.CORBA_2_3.portable.OutputStream;
  15. import org.omg.CORBA.ORB ;
  16. import com.sun.corba.se.spi.copyobject.ObjectCopier ;
  17. import com.sun.corba.se.impl.util.Utility;
  18. public class ORBStreamObjectCopierImpl implements ObjectCopier {
  19. public ORBStreamObjectCopierImpl( ORB orb )
  20. {
  21. this.orb = orb ;
  22. }
  23. public Object copy(Object obj) {
  24. if (obj instanceof Remote) {
  25. // Yes, so make sure it is connected and converted
  26. // to a stub (if needed)...
  27. return Utility.autoConnect(obj,orb,true);
  28. }
  29. OutputStream out = (OutputStream)orb.create_output_stream();
  30. out.write_value((Serializable)obj);
  31. InputStream in = (InputStream)out.create_input_stream();
  32. return in.read_value();
  33. }
  34. private ORB orb;
  35. }