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 */ 25package com.sun.corba.se.impl.ior.iiop; 26 27import org.omg.CORBA_2_3.portable.OutputStream; 28 29import com.sun.corba.se.impl.orbutil.ORBConstants; 30import com.sun.corba.se.impl.orbutil.ORBUtility; 31import com.sun.corba.se.impl.protocol.giopmsgheaders.Message; 32 33import com.sun.corba.se.spi.orb.ORB; 34import com.sun.corba.se.spi.ior.TaggedComponentBase; 35 36/** 37 * Tagged component that contains a value that indicates the Java 38 * serialization version supported by the ORB. 39 * 40 * ORB Java serialization uses IIOP as the transport protocol, but uses 41 * Java serialization mechanism and its accompanying encodings, instead 42 * of IIOP CDR serialization mechanism. Java serialization is generally 43 * observed to be faster than CDR. 44 */ 45public class JavaSerializationComponent extends TaggedComponentBase { 46 47 private byte version; 48 49 private static JavaSerializationComponent singleton; 50 51 public static JavaSerializationComponent singleton() { 52 if (singleton == null) { 53 synchronized (JavaSerializationComponent.class) { 54 singleton = 55 new JavaSerializationComponent(Message.JAVA_ENC_VERSION); 56 } 57 } 58 return singleton; 59 } 60 61 public JavaSerializationComponent(byte version) { 62 this.version = version; 63 } 64 65 public byte javaSerializationVersion() { 66 return this.version; 67 } 68 69 public void writeContents(OutputStream os) { 70 os.write_octet(version); 71 } 72 73 public int getId() { 74 return ORBConstants.TAG_JAVA_SERIALIZATION_ID; 75 } 76 77 public boolean equals(Object obj) { 78 if (!(obj instanceof JavaSerializationComponent)) { 79 return false; 80 } 81 JavaSerializationComponent other = (JavaSerializationComponent) obj; 82 return this.version == other.version; 83 } 84 85 public int hashCode() { 86 return this.version; 87 } 88} 89