1. /*
  2. * @(#)DefaultIORToSocketInfoImpl.java 1.4 04/07/26
  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.transport;
  8. import java.util.ArrayList;
  9. import java.util.Iterator;
  10. import java.util.List;
  11. import org.omg.IOP.TAG_ALTERNATE_IIOP_ADDRESS ;
  12. import com.sun.corba.se.spi.ior.IOR;
  13. import com.sun.corba.se.spi.ior.ObjectKeyTemplate;
  14. import com.sun.corba.se.spi.ior.iiop.IIOPProfile ;
  15. import com.sun.corba.se.spi.ior.iiop.IIOPProfileTemplate ;
  16. import com.sun.corba.se.spi.ior.iiop.IIOPAddress ;
  17. import com.sun.corba.se.spi.ior.iiop.AlternateIIOPAddressComponent;
  18. import com.sun.corba.se.spi.transport.IORToSocketInfo;
  19. import com.sun.corba.se.spi.transport.SocketInfo;
  20. public class DefaultIORToSocketInfoImpl
  21. implements IORToSocketInfo
  22. {
  23. public List getSocketInfo(IOR ior)
  24. {
  25. SocketInfo socketInfo;
  26. List result = new ArrayList();
  27. IIOPProfileTemplate iiopProfileTemplate = (IIOPProfileTemplate)
  28. ior.getProfile().getTaggedProfileTemplate() ;
  29. IIOPAddress primary = iiopProfileTemplate.getPrimaryAddress() ;
  30. String hostname = primary.getHost().toLowerCase();
  31. int port = primary.getPort();
  32. // NOTE: we could check for 0 (i.e., CSIv2) but, for a
  33. // non-CSIv2-configured client ORB talking to a CSIv2 configured
  34. // server ORB you might end up with an empty contact info list
  35. // which would then report a failure which would not be as
  36. // instructive as leaving a ContactInfo with a 0 port in the list.
  37. socketInfo = createSocketInfo(hostname, port);
  38. result.add(socketInfo);
  39. Iterator iterator = iiopProfileTemplate.iteratorById(
  40. TAG_ALTERNATE_IIOP_ADDRESS.value);
  41. while (iterator.hasNext()) {
  42. AlternateIIOPAddressComponent alternate =
  43. (AlternateIIOPAddressComponent) iterator.next();
  44. hostname = alternate.getAddress().getHost().toLowerCase();
  45. port = alternate.getAddress().getPort();
  46. socketInfo= createSocketInfo(hostname, port);
  47. result.add(socketInfo);
  48. }
  49. return result;
  50. }
  51. private SocketInfo createSocketInfo(final String hostname, final int port)
  52. {
  53. return new SocketInfo() {
  54. public String getType() { return SocketInfo.IIOP_CLEAR_TEXT; }
  55. public String getHost() { return hostname; }
  56. public int getPort() { return port; }};
  57. }
  58. }
  59. // End of file.