1. /*
  2. * @(#)TaggedComponentFactoryFinderImpl.java 1.17 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.ior;
  8. import java.util.HashMap;
  9. import java.util.Map;
  10. import com.sun.corba.se.spi.ior.Identifiable ;
  11. import com.sun.corba.se.spi.ior.IdentifiableFactory ;
  12. import com.sun.corba.se.spi.ior.IdentifiableFactoryFinder ;
  13. import com.sun.corba.se.spi.ior.TaggedComponent ;
  14. import com.sun.corba.se.spi.ior.TaggedComponentFactoryFinder ;
  15. import com.sun.corba.se.impl.ior.GenericTaggedComponent ;
  16. import com.sun.corba.se.impl.ior.IdentifiableFactoryFinderBase ;
  17. import com.sun.corba.se.impl.encoding.EncapsOutputStream ;
  18. import com.sun.corba.se.spi.orb.ORB ;
  19. import org.omg.CORBA_2_3.portable.InputStream ;
  20. /**
  21. * @author Ken Cavanaugh
  22. */
  23. public class TaggedComponentFactoryFinderImpl extends
  24. IdentifiableFactoryFinderBase implements TaggedComponentFactoryFinder
  25. {
  26. public TaggedComponentFactoryFinderImpl( ORB orb )
  27. {
  28. super( orb ) ;
  29. }
  30. public Identifiable handleMissingFactory( int id, InputStream is ) {
  31. return new GenericTaggedComponent( id, is ) ;
  32. }
  33. public TaggedComponent create( org.omg.CORBA.ORB orb,
  34. org.omg.IOP.TaggedComponent comp )
  35. {
  36. EncapsOutputStream os = new EncapsOutputStream( (ORB)orb ) ;
  37. org.omg.IOP.TaggedComponentHelper.write( os, comp ) ;
  38. InputStream is = (InputStream)(os.create_input_stream() ) ;
  39. // Skip the component ID: we just wrote it out above
  40. is.read_ulong() ;
  41. return (TaggedComponent)create( comp.tag, is ) ;
  42. }
  43. }