- /*
- * @(#)ValueHandlerImpl_1_3.java 1.10 03/12/19
- *
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
- /*
- * Licensed Materials - Property of IBM
- * RMI-IIOP v1.0
- * Copyright IBM Corp. 1998 1999 All Rights Reserved
- *
- * US Government Users Restricted Rights - Use, duplication or
- * disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- */
-
- package com.sun.corba.se.impl.orbutil;
-
- import javax.rmi.CORBA.Util;
- import javax.rmi.PortableRemoteObject;
-
- import java.util.Hashtable;
- import java.util.Stack;
- import java.io.IOException;
- import java.util.EmptyStackException;
-
- import com.sun.corba.se.impl.util.Utility;
- import com.sun.corba.se.impl.io.IIOPInputStream;
- import com.sun.corba.se.impl.io.IIOPOutputStream;
- import com.sun.corba.se.impl.util.RepositoryId;
- import com.sun.corba.se.impl.util.Utility;
-
- import org.omg.CORBA.TCKind;
- import org.omg.CORBA.MARSHAL;
- import org.omg.CORBA.CompletionStatus;
- import org.omg.CORBA.portable.IndirectionException;
- import com.sun.org.omg.SendingContext.CodeBase;
-
- import java.security.AccessController;
- import java.security.PrivilegedAction;
-
- /**
- * This class overrides behavior of our current ValueHandlerImpl to
- * provide backwards compatibility with JDK 1.3.0.
- */
- public class ValueHandlerImpl_1_3 extends com.sun.corba.se.impl.io.ValueHandlerImpl {
-
- public ValueHandlerImpl_1_3(){
- super();
- }
-
- public ValueHandlerImpl_1_3(boolean isInputStream) {
- super(isInputStream);
- }
-
- /**
- * Writes the value to the stream using java semantics.
- * @param out The stream to write the value to
- * @param value The value to be written to the stream
- **/
- public void writeValue(org.omg.CORBA.portable.OutputStream _out, java.io.Serializable value) {
- super.writeValue(_out, value);
- }
-
- /**
- * Reads a value from the stream using java semantics.
- * @param in The stream to read the value from
- * @param clazz The type of the value to be read in
- * @param sender The sending context runtime
- **/
- public java.io.Serializable readValue(org.omg.CORBA.portable.InputStream _in,
- int offset,
- java.lang.Class clazz,
- String repositoryID,
- org.omg.SendingContext.RunTime _sender)
- {
- return super.readValue(_in, offset, clazz, repositoryID, _sender);
- }
-
- /**
- * Returns the repository ID for the given RMI value Class.
- * @param clz The class to return a repository ID for.
- * @return the repository ID of the Class.
- **/
- public java.lang.String getRMIRepositoryID(java.lang.Class clz) {
- return RepositoryId_1_3.createForJavaType(clz);
- }
-
- /**
- * Indicates whether the given Class performs custom or
- * default marshaling.
- * @param clz The class to test for custom marshaling.
- * @return True if the class performs custom marshaling, false
- * if it does not.
- **/
- public boolean isCustomMarshaled(java.lang.Class clz) {
- return super.isCustomMarshaled(clz);
- }
-
- /**
- * Returns the CodeBase for this ValueHandler. This is used by
- * the ORB runtime. The server sends the service context containing
- * the IOR for this CodeBase on the first GIOP reply. The clients
- * do the same on the first GIOP request.
- * @return the SendingContext.CodeBase of this ValueHandler.
- **/
- public org.omg.SendingContext.RunTime getRunTimeCodeBase() {
- return super.getRunTimeCodeBase();
- }
-
- /**
- * If the value contains a writeReplace method then the result
- * is returned. Otherwise, the value itself is returned.
- * @return the true value to marshal on the wire.
- **/
- public java.io.Serializable writeReplace(java.io.Serializable value) {
- return super.writeReplace(value);
- }
-
- // methods supported for backward compatability so that the appropriate
- // Rep-id calculations take place based on the ORB version
-
- /**
- * Returns a boolean of whether or not RepositoryId indicates
- * FullValueDescriptor.
- * used for backward compatability
- */
-
- public boolean useFullValueDescription(Class clazz, String repositoryID)
- throws IOException
-
- {
- return RepositoryId_1_3.useFullValueDescription(clazz, repositoryID);
- }
-
- public String getClassName(String id)
- {
- RepositoryId_1_3 repID = RepositoryId_1_3.cache.getId(id);
- return repID.getClassName();
- }
-
- public Class getClassFromType(String id)
- throws ClassNotFoundException
- {
- RepositoryId_1_3 repId = RepositoryId_1_3.cache.getId(id);
- return repId.getClassFromType();
- }
-
- public Class getAnyClassFromType(String id)
- throws ClassNotFoundException
- {
- RepositoryId_1_3 repId = RepositoryId_1_3.cache.getId(id);
- return repId.getAnyClassFromType();
- }
-
- public String createForAnyType(Class cl)
- {
- return RepositoryId_1_3.createForAnyType(cl);
- }
-
- public String getDefinedInId(String id)
- {
- RepositoryId_1_3 repId = RepositoryId_1_3.cache.getId(id);
- return repId.getDefinedInId();
- }
-
- public String getUnqualifiedName(String id)
- {
- RepositoryId_1_3 repId = RepositoryId_1_3.cache.getId(id);
- return repId.getUnqualifiedName();
- }
-
- public String getSerialVersionUID(String id)
- {
- RepositoryId_1_3 repId = RepositoryId_1_3.cache.getId(id);
- return repId.getSerialVersionUID();
- }
-
- public boolean isAbstractBase(Class clazz)
- {
- return RepositoryId_1_3.isAbstractBase(clazz);
- }
-
- public boolean isSequence(String id)
- {
- RepositoryId_1_3 repId = RepositoryId_1_3.cache.getId(id);
- return repId.isSequence();
- }
-
- /**
- * Preserves the incorrect 1.3 behavior which truncates Java chars in
- * arrays to 8-bit CORBA chars. Bug 4367783. This enables us to
- * continue interoperating with our legacy ORBs. If this goes into
- * Ladybird, then Ladybird and Kestrel will interoperate as long as
- * people don't use chars greater than 8-bits.
- */
- protected void writeCharArray(org.omg.CORBA_2_3.portable.OutputStream out,
- char[] array,
- int offset,
- int length)
- {
- out.write_char_array(array, offset, length);
- }
-
- /**
- * Preserves the incorrect 1.3 behavior which truncates Java chars in
- * arrays to 8-bit CORBA chars. Bug 4367783. This enables us to
- * continue interoperating with our legacy ORBs. If this goes into
- * Ladybird, then Ladybird and Kestrel will interoperate as long as
- * people don't use chars greater than 8-bits.
- */
- protected void readCharArray(org.omg.CORBA_2_3.portable.InputStream in,
- char[] array,
- int offset,
- int length)
- {
- in.read_char_array(array, offset, length);
- }
-
- protected final String getOutputStreamClassName() {
- return "com.sun.corba.se.impl.orbutil.IIOPOutputStream_1_3";
- }
-
- protected final String getInputStreamClassName() {
- return "com.sun.corba.se.impl.orbutil.IIOPInputStream_1_3";
- }
-
- /**
- * Our JDK 1.3 and JDK 1.3.1 behavior subclasses override this.
- * The correct behavior is for a Java char to map to a CORBA wchar,
- * but our older code mapped it to a CORBA char.
- */
- protected TCKind getJavaCharTCKind() {
- return TCKind.tk_char;
- }
- }