1. /**
  2. * @(#)JavaSerializationComponent.java 1.2 04/06/07
  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.iiop;
  8. import org.omg.CORBA_2_3.portable.OutputStream;
  9. import com.sun.corba.se.impl.orbutil.ORBConstants;
  10. import com.sun.corba.se.impl.orbutil.ORBUtility;
  11. import com.sun.corba.se.impl.protocol.giopmsgheaders.Message;
  12. import com.sun.corba.se.spi.orb.ORB;
  13. import com.sun.corba.se.spi.ior.TaggedComponentBase;
  14. /**
  15. * Tagged component that contains a value that indicates the Java
  16. * serialization version supported by the ORB.
  17. *
  18. * ORB Java serialization uses IIOP as the transport protocol, but uses
  19. * Java serialization mechanism and its accompanying encodings, instead
  20. * of IIOP CDR serialization mechanism. Java serialization is generally
  21. * observed to be faster than CDR.
  22. */
  23. public class JavaSerializationComponent extends TaggedComponentBase {
  24. private byte version;
  25. private static JavaSerializationComponent singleton;
  26. public static JavaSerializationComponent singleton() {
  27. if (singleton == null) {
  28. synchronized (JavaSerializationComponent.class) {
  29. singleton =
  30. new JavaSerializationComponent(Message.JAVA_ENC_VERSION);
  31. }
  32. }
  33. return singleton;
  34. }
  35. public JavaSerializationComponent(byte version) {
  36. this.version = version;
  37. }
  38. public byte javaSerializationVersion() {
  39. return this.version;
  40. }
  41. public void writeContents(OutputStream os) {
  42. os.write_octet(version);
  43. }
  44. public int getId() {
  45. return ORBConstants.TAG_JAVA_SERIALIZATION_ID;
  46. }
  47. public boolean equals(Object obj) {
  48. if (!(obj instanceof JavaSerializationComponent)) {
  49. return false;
  50. }
  51. JavaSerializationComponent other = (JavaSerializationComponent) obj;
  52. return this.version == other.version;
  53. }
  54. public int hashCode() {
  55. return this.version;
  56. }
  57. }