8015987: The corba repo contains unneeded .sjava files
Reviewed-by: alanb, chegar, coffeys
--- a/corba/src/share/classes/com/sun/corba/se/impl/copyobject/JavaInputStream.sjava Wed Jul 05 19:05:35 2017 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,528 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.sun.corba.se.impl.encoding;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.nio.ByteBuffer;
-
-import org.omg.CORBA.TypeCode;
-import org.omg.CORBA.Principal;
-import org.omg.CORBA.Any;
-
-import com.sun.org.omg.SendingContext.CodeBase;
-
-import com.sun.corba.se.pept.protocol.MessageMediator;
-
-import com.sun.corba.se.spi.logging.CORBALogDomains;
-import com.sun.corba.se.spi.orb.ORB;
-import com.sun.corba.se.spi.ior.iiop.GIOPVersion;
-import com.sun.corba.se.spi.protocol.CorbaMessageMediator;
-
-import com.sun.corba.se.impl.logging.ORBUtilSystemException;
-import com.sun.corba.se.impl.encoding.CodeSetConversion;
-import com.sun.corba.se.impl.encoding.OSFCodeSetRegistry;
-
-/**
- * This is delegates to the real implementation.
- *
- * NOTE:
- *
- * Before using the stream for valuetype unmarshaling, one must call
- * performORBVersionSpecificInit().
- */
-public abstract class CDRInputStream
- extends org.omg.CORBA_2_3.portable.InputStream
- implements com.sun.corba.se.impl.encoding.MarshalInputStream,
- org.omg.CORBA.DataInputStream, org.omg.CORBA.portable.ValueInputStream
-{
- protected CorbaMessageMediator messageMediator;
- private CDRInputStreamBase impl;
-
- // We can move this out somewhere later. For now, it serves its purpose
- // to create a concrete CDR delegate based on the GIOP version.
- private static class InputStreamFactory {
-
- public static CDRInputStreamBase newInputStream(ORB orb, GIOPVersion version)
- {
- switch(version.intValue()) {
- case GIOPVersion.VERSION_1_0:
- return new CDRInputStream_1_0();
- case GIOPVersion.VERSION_1_1:
- return new CDRInputStream_1_1();
- case GIOPVersion.VERSION_1_2:
- return new CDRInputStream_1_2();
- default:
- ORBUtilSystemException wrapper = ORBUtilSystemException.get( orb,
- CORBALogDomains.RPC_ENCODING ) ;
- throw wrapper.unsupportedGiopVersion( version ) ;
- }
- }
- }
-
- // Required for the case when a ClientResponseImpl is
- // created with a SystemException due to a dead server/closed
- // connection with no warning. Note that the stream will
- // not be initialized in this case.
- //
- // Probably also required by ServerRequestImpl.
- //
- // REVISIT.
- public CDRInputStream() {
- }
-
- public CDRInputStream(CDRInputStream is) {
- impl = is.impl.dup();
- impl.setParent(this);
- }
-
- public CDRInputStream(org.omg.CORBA.ORB orb,
- ByteBuffer byteBuffer,
- int size,
- boolean littleEndian,
- GIOPVersion version,
- BufferManagerRead bufMgr)
- {
- impl = InputStreamFactory.newInputStream( (ORB)orb, version);
-
- impl.init(orb, byteBuffer, size, littleEndian, bufMgr);
-
- impl.setParent(this);
- }
-
- // org.omg.CORBA.portable.InputStream
- public final boolean read_boolean() {
- return impl.read_boolean();
- }
-
- public final char read_char() {
- return impl.read_char();
- }
-
- public final char read_wchar() {
- return impl.read_wchar();
- }
-
- public final byte read_octet() {
- return impl.read_octet();
- }
-
- public final short read_short() {
- return impl.read_short();
- }
-
- public final short read_ushort() {
- return impl.read_ushort();
- }
-
- public final int read_long() {
- return impl.read_long();
- }
-
- public final int read_ulong() {
- return impl.read_ulong();
- }
-
- public final long read_longlong() {
- return impl.read_longlong();
- }
-
- public final long read_ulonglong() {
- return impl.read_ulonglong();
- }
-
- public final float read_float() {
- return impl.read_float();
- }
-
- public final double read_double() {
- return impl.read_double();
- }
-
- public final String read_string() {
- return impl.read_string();
- }
-
- public final String read_wstring() {
- return impl.read_wstring();
- }
-
- public final void read_boolean_array(boolean[] value, int offset, int length) {
- impl.read_boolean_array(value, offset, length);
- }
-
- public final void read_char_array(char[] value, int offset, int length) {
- impl.read_char_array(value, offset, length);
- }
-
- public final void read_wchar_array(char[] value, int offset, int length) {
- impl.read_wchar_array(value, offset, length);
- }
-
- public final void read_octet_array(byte[] value, int offset, int length) {
- impl.read_octet_array(value, offset, length);
- }
-
- public final void read_short_array(short[] value, int offset, int length) {
- impl.read_short_array(value, offset, length);
- }
-
- public final void read_ushort_array(short[] value, int offset, int length) {
- impl.read_ushort_array(value, offset, length);
- }
-
- public final void read_long_array(int[] value, int offset, int length) {
- impl.read_long_array(value, offset, length);
- }
-
- public final void read_ulong_array(int[] value, int offset, int length) {
- impl.read_ulong_array(value, offset, length);
- }
-
- public final void read_longlong_array(long[] value, int offset, int length) {
- impl.read_longlong_array(value, offset, length);
- }
-
- public final void read_ulonglong_array(long[] value, int offset, int length) {
- impl.read_ulonglong_array(value, offset, length);
- }
-
- public final void read_float_array(float[] value, int offset, int length) {
- impl.read_float_array(value, offset, length);
- }
-
- public final void read_double_array(double[] value, int offset, int length) {
- impl.read_double_array(value, offset, length);
- }
-
- public final org.omg.CORBA.Object read_Object() {
- return impl.read_Object();
- }
-
- public final TypeCode read_TypeCode() {
- return impl.read_TypeCode();
- }
- public final Any read_any() {
- return impl.read_any();
- }
-
- public final Principal read_Principal() {
- return impl.read_Principal();
- }
-
- public final int read() throws java.io.IOException {
- return impl.read();
- }
-
- public final java.math.BigDecimal read_fixed() {
- return impl.read_fixed();
- }
-
- public final org.omg.CORBA.Context read_Context() {
- return impl.read_Context();
- }
-
- public final org.omg.CORBA.Object read_Object(java.lang.Class clz) {
- return impl.read_Object(clz);
- }
-
- public final org.omg.CORBA.ORB orb() {
- return impl.orb();
- }
-
- // org.omg.CORBA_2_3.portable.InputStream
- public final java.io.Serializable read_value() {
- return impl.read_value();
- }
-
- public final java.io.Serializable read_value(java.lang.Class clz) {
- return impl.read_value(clz);
- }
-
- public final java.io.Serializable read_value(org.omg.CORBA.portable.BoxedValueHelper factory) {
- return impl.read_value(factory);
- }
-
- public final java.io.Serializable read_value(java.lang.String rep_id) {
- return impl.read_value(rep_id);
- }
-
- public final java.io.Serializable read_value(java.io.Serializable value) {
- return impl.read_value(value);
- }
-
- public final java.lang.Object read_abstract_interface() {
- return impl.read_abstract_interface();
- }
-
- public final java.lang.Object read_abstract_interface(java.lang.Class clz) {
- return impl.read_abstract_interface(clz);
- }
- // com.sun.corba.se.impl.encoding.MarshalInputStream
-
- public final void consumeEndian() {
- impl.consumeEndian();
- }
-
- public final int getPosition() {
- return impl.getPosition();
- }
-
- // org.omg.CORBA.DataInputStream
-
- public final java.lang.Object read_Abstract () {
- return impl.read_Abstract();
- }
-
- public final java.io.Serializable read_Value () {
- return impl.read_Value();
- }
-
- public final void read_any_array (org.omg.CORBA.AnySeqHolder seq, int offset, int length) {
- impl.read_any_array(seq, offset, length);
- }
-
- public final void read_boolean_array (org.omg.CORBA.BooleanSeqHolder seq, int offset, int length) {
- impl.read_boolean_array(seq, offset, length);
- }
-
- public final void read_char_array (org.omg.CORBA.CharSeqHolder seq, int offset, int length) {
- impl.read_char_array(seq, offset, length);
- }
-
- public final void read_wchar_array (org.omg.CORBA.WCharSeqHolder seq, int offset, int length) {
- impl.read_wchar_array(seq, offset, length);
- }
-
- public final void read_octet_array (org.omg.CORBA.OctetSeqHolder seq, int offset, int length) {
- impl.read_octet_array(seq, offset, length);
- }
-
- public final void read_short_array (org.omg.CORBA.ShortSeqHolder seq, int offset, int length) {
- impl.read_short_array(seq, offset, length);
- }
-
- public final void read_ushort_array (org.omg.CORBA.UShortSeqHolder seq, int offset, int length) {
- impl.read_ushort_array(seq, offset, length);
- }
-
- public final void read_long_array (org.omg.CORBA.LongSeqHolder seq, int offset, int length) {
- impl.read_long_array(seq, offset, length);
- }
-
- public final void read_ulong_array (org.omg.CORBA.ULongSeqHolder seq, int offset, int length) {
- impl.read_ulong_array(seq, offset, length);
- }
-
- public final void read_ulonglong_array (org.omg.CORBA.ULongLongSeqHolder seq, int offset, int length) {
- impl.read_ulonglong_array(seq, offset, length);
- }
-
- public final void read_longlong_array (org.omg.CORBA.LongLongSeqHolder seq, int offset, int length) {
- impl.read_longlong_array(seq, offset, length);
- }
-
- public final void read_float_array (org.omg.CORBA.FloatSeqHolder seq, int offset, int length) {
- impl.read_float_array(seq, offset, length);
- }
-
- public final void read_double_array (org.omg.CORBA.DoubleSeqHolder seq, int offset, int length) {
- impl.read_double_array(seq, offset, length);
- }
-
- // org.omg.CORBA.portable.ValueBase
- public final String[] _truncatable_ids() {
- return impl._truncatable_ids();
- }
-
- // java.io.InputStream
- public final int read(byte b[]) throws IOException {
- return impl.read(b);
- }
-
- public final int read(byte b[], int off, int len) throws IOException {
- return impl.read(b, off, len);
- }
-
- public final long skip(long n) throws IOException {
- return impl.skip(n);
- }
-
- public final int available() throws IOException {
- return impl.available();
- }
-
- public final void close() throws IOException {
- impl.close();
- }
-
- public final void mark(int readlimit) {
- impl.mark(readlimit);
- }
-
- public final void reset() {
- impl.reset();
- }
-
- public final boolean markSupported() {
- return impl.markSupported();
- }
-
- public abstract CDRInputStream dup();
-
- // Needed by TCUtility
- public final java.math.BigDecimal read_fixed(short digits, short scale) {
- return impl.read_fixed(digits, scale);
- }
-
- public final boolean isLittleEndian() {
- return impl.isLittleEndian();
- }
-
- protected final ByteBuffer getByteBuffer() {
- return impl.getByteBuffer();
- }
-
- protected final void setByteBuffer(ByteBuffer byteBuffer) {
- impl.setByteBuffer(byteBuffer);
- }
-
- protected final void setByteBufferWithInfo(ByteBufferWithInfo bbwi) {
- impl.setByteBufferWithInfo(bbwi);
- }
-
- public final int getBufferLength() {
- return impl.getBufferLength();
- }
-
- protected final void setBufferLength(int value) {
- impl.setBufferLength(value);
- }
-
- protected final int getIndex() {
- return impl.getIndex();
- }
-
- protected final void setIndex(int value) {
- impl.setIndex(value);
- }
-
- public final void orb(org.omg.CORBA.ORB orb) {
- impl.orb(orb);
- }
-
- public final GIOPVersion getGIOPVersion() {
- return impl.getGIOPVersion();
- }
-
- public final BufferManagerRead getBufferManager() {
- return impl.getBufferManager();
- }
-
- // This should be overridden by any stream (ex: IIOPInputStream)
- // which wants to read values. Thus, TypeCodeInputStream doesn't
- // have to do this.
- public CodeBase getCodeBase() {
- return null;
- }
-
- // Use Latin-1 for GIOP 1.0 or when code set negotiation was not
- // performed.
- protected CodeSetConversion.BTCConverter createCharBTCConverter() {
- return CodeSetConversion.impl().getBTCConverter(OSFCodeSetRegistry.ISO_8859_1,
- impl.isLittleEndian());
- }
-
- // Subclasses must decide what to do here. It's inconvenient to
- // make the class and this method abstract because of dup().
- protected abstract CodeSetConversion.BTCConverter createWCharBTCConverter();
-
- // Prints the current buffer in a human readable form
- void printBuffer() {
- impl.printBuffer();
- }
-
- /**
- * Aligns the current position on the given octet boundary
- * if there are enough bytes available to do so. Otherwise,
- * it just returns. This is used for some (but not all)
- * GIOP 1.2 message headers.
- */
- public void alignOnBoundary(int octetBoundary) {
- impl.alignOnBoundary(octetBoundary);
- }
-
- // Needed by request and reply messages for GIOP versions >= 1.2 only.
- public void setHeaderPadding(boolean headerPadding) {
- impl.setHeaderPadding(headerPadding);
- }
-
- /**
- * This must be called after determining the proper ORB version,
- * and setting it on the stream's ORB instance. It can be called
- * after reading the service contexts, since that is the only place
- * we can get the ORB version info.
- *
- * Trying to unmarshal things requiring repository IDs before calling
- * this will result in NullPtrExceptions.
- */
- public void performORBVersionSpecificInit() {
- // In the case of SystemExceptions, a stream is created
- // with its default constructor (and thus no impl is set).
- if (impl != null)
- impl.performORBVersionSpecificInit();
- }
-
- /**
- * Resets any internal references to code set converters.
- * This is useful for forcing the CDR stream to reacquire
- * converters (probably from its subclasses) when state
- * has changed.
- */
- public void resetCodeSetConverters() {
- impl.resetCodeSetConverters();
- }
-
- public void setMessageMediator(MessageMediator messageMediator)
- {
- this.messageMediator = (CorbaMessageMediator) messageMediator;
- }
-
- public MessageMediator getMessageMediator()
- {
- return messageMediator;
- }
-
- // ValueInputStream -----------------------------
-
- public void start_value() {
- impl.start_value();
- }
-
- public void end_value() {
- impl.end_value();
- }
-}
--- a/corba/src/share/classes/com/sun/corba/se/impl/copyobject/JavaOutputStream.sjava Wed Jul 05 19:05:35 2017 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,435 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.sun.corba.se.impl.encoding;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.nio.ByteBuffer;
-
-import org.omg.CORBA.TypeCode;
-import org.omg.CORBA.Principal;
-import org.omg.CORBA.Any;
-
-import com.sun.corba.se.pept.protocol.MessageMediator;
-
-import com.sun.corba.se.spi.orb.ORB;
-import com.sun.corba.se.spi.logging.CORBALogDomains;
-import com.sun.corba.se.spi.ior.iiop.GIOPVersion;
-import com.sun.corba.se.spi.protocol.CorbaMessageMediator;
-
-import com.sun.corba.se.impl.encoding.CodeSetConversion;
-import com.sun.corba.se.impl.encoding.OSFCodeSetRegistry;
-import com.sun.corba.se.impl.orbutil.ORBConstants;
-import com.sun.corba.se.impl.logging.ORBUtilSystemException;
-
-/**
- * This is delegates to the real implementation.
- */
-public abstract class CDROutputStream
- extends org.omg.CORBA_2_3.portable.OutputStream
- implements com.sun.corba.se.impl.encoding.MarshalOutputStream,
- org.omg.CORBA.DataOutputStream, org.omg.CORBA.portable.ValueOutputStream
-{
-/*
- private CDROutputStreamBase impl;
- protected ORB orb ;
- protected ORBUtilSystemException wrapper ;
- protected CorbaMessageMediator corbaMessageMediator;
-
-
- // We can move this out somewhere later. For now, it serves its purpose
- // to create a concrete CDR delegate based on the GIOP version.
- private static class OutputStreamFactory {
-
- public static CDROutputStreamBase newOutputStream(ORB orb, GIOPVersion version)
- {
- switch(version.intValue()) {
- case GIOPVersion.VERSION_1_0:
- return new CDROutputStream_1_0();
- case GIOPVersion.VERSION_1_1:
- return new CDROutputStream_1_1();
- case GIOPVersion.VERSION_1_2:
- return new CDROutputStream_1_2();
- default:
- ORBUtilSystemException wrapper = ORBUtilSystemException.get( orb,
- CORBALogDomains.RPC_ENCODING ) ;
- // REVISIT - what is appropriate? INTERNAL exceptions
- // are really hard to track later.
- throw wrapper.unsupportedGiopVersion( version ) ;
- }
- }
- }
-
- // REVISIT - These two constructors should be re-factored to better hide
- // the fact that someone extending this class 'can' construct a CDROutputStream
- // that does not use pooled ByteBuffers. Right now, only EncapsOutputStream
- // does _not_ use pooled ByteBuffers, see EncapsOutputStream.
-
- // NOTE: When a stream is constructed for non-channel-backed sockets
- // it notifies the constructor not to use pooled (i.e, direct)
- // ByteBuffers.
-
- public CDROutputStream(ORB orb,
- GIOPVersion version,
- boolean littleEndian,
- BufferManagerWrite bufferManager,
- byte streamFormatVersion,
- boolean usePooledByteBuffers)
- {
- impl = OutputStreamFactory.newOutputStream(orb, version);
- impl.init(orb, littleEndian, bufferManager, streamFormatVersion, usePooledByteBuffers);
-
- impl.setParent(this);
- this.orb = orb ;
- this.wrapper = ORBUtilSystemException.get( orb,
- CORBALogDomains.RPC_ENCODING ) ;
- }
-
- public CDROutputStream(ORB orb,
- GIOPVersion version,
- boolean littleEndian,
- BufferManagerWrite bufferManager,
- byte streamFormatVersion)
- {
- this(orb, version, littleEndian, bufferManager, streamFormatVersion, true);
- }
-*/
-
- private ByteArrayOutputStream bos ;
- private ObjectOutputStream oos ;
-
- public JavaOutputStream()
- {
- bos = new ByteArrayOutputStream() ;
- oos = new ObjectOutputStream( bos ) ;
- }
-
- // Provided by IIOPOutputStream and EncapsOutputStream
- public org.omg.CORBA.portable.InputStream create_input_stream()
- {
- ObjectInputStream ois = new ByteArrayInputStream( bos.toByteArray() ) ;
-
- return new JavaInputStream( ois ) ;
- }
-
- public final void write_boolean(boolean value) {
- impl.write_boolean(value);
- }
- public final void write_char(char value) {
- impl.write_char(value);
- }
- public final void write_wchar(char value) {
- impl.write_wchar(value);
- }
- public final void write_octet(byte value) {
- impl.write_octet(value);
- }
- public final void write_short(short value) {
- impl.write_short(value);
- }
- public final void write_ushort(short value) {
- impl.write_ushort(value);
- }
- public final void write_long(int value) {
- impl.write_long(value);
- }
- public final void write_ulong(int value) {
- impl.write_ulong(value);
- }
- public final void write_longlong(long value) {
- impl.write_longlong(value);
- }
- public final void write_ulonglong(long value) {
- impl.write_ulonglong(value);
- }
- public final void write_float(float value) {
- impl.write_float(value);
- }
- public final void write_double(double value) {
- impl.write_double(value);
- }
- public final void write_string(String value) {
- impl.write_string(value);
- }
- public final void write_wstring(String value) {
- impl.write_wstring(value);
- }
-
- public final void write_boolean_array(boolean[] value, int offset, int length) {
- impl.write_boolean_array(value, offset, length);
- }
- public final void write_char_array(char[] value, int offset, int length) {
- impl.write_char_array(value, offset, length);
- }
- public final void write_wchar_array(char[] value, int offset, int length) {
- impl.write_wchar_array(value, offset, length);
- }
- public final void write_octet_array(byte[] value, int offset, int length) {
- impl.write_octet_array(value, offset, length);
- }
- public final void write_short_array(short[] value, int offset, int length) {
- impl.write_short_array(value, offset, length);
- }
- public final void write_ushort_array(short[] value, int offset, int length){
- impl.write_ushort_array(value, offset, length);
- }
- public final void write_long_array(int[] value, int offset, int length) {
- impl.write_long_array(value, offset, length);
- }
- public final void write_ulong_array(int[] value, int offset, int length) {
- impl.write_ulong_array(value, offset, length);
- }
- public final void write_longlong_array(long[] value, int offset, int length) {
- impl.write_longlong_array(value, offset, length);
- }
- public final void write_ulonglong_array(long[] value, int offset,int length) {
- impl.write_ulonglong_array(value, offset, length);
- }
- public final void write_float_array(float[] value, int offset, int length) {
- impl.write_float_array(value, offset, length);
- }
- public final void write_double_array(double[] value, int offset, int length) {
- impl.write_double_array(value, offset, length);
- }
- public final void write_Object(org.omg.CORBA.Object value) {
- impl.write_Object(value);
- }
- public final void write_TypeCode(TypeCode value) {
- impl.write_TypeCode(value);
- }
- public final void write_any(Any value) {
- impl.write_any(value);
- }
-
- public final void write_Principal(Principal value) {
- impl.write_Principal(value);
- }
-
- public final void write(int b) throws java.io.IOException {
- impl.write(b);
- }
-
- public final void write_fixed(java.math.BigDecimal value) {
- impl.write_fixed(value);
- }
-
- public final void write_Context(org.omg.CORBA.Context ctx,
- org.omg.CORBA.ContextList contexts) {
- impl.write_Context(ctx, contexts);
- }
-
- public final org.omg.CORBA.ORB orb() {
- return impl.orb();
- }
-
- // org.omg.CORBA_2_3.portable.OutputStream
- public final void write_value(java.io.Serializable value) {
- impl.write_value(value);
- }
-
- public final void write_value(java.io.Serializable value, java.lang.Class clz) {
- impl.write_value(value, clz);
- }
-
- public final void write_value(java.io.Serializable value, String repository_id) {
- impl.write_value(value, repository_id);
- }
-
- public final void write_value(java.io.Serializable value,
- org.omg.CORBA.portable.BoxedValueHelper factory) {
- impl.write_value(value, factory);
- }
-
- public final void write_abstract_interface(java.lang.Object obj) {
- impl.write_abstract_interface(obj);
- }
-
- // java.io.OutputStream
- public final void write(byte b[]) throws IOException {
- impl.write(b);
- }
-
- public final void write(byte b[], int off, int len) throws IOException {
- impl.write(b, off, len);
- }
-
- public final void flush() throws IOException {
- impl.flush();
- }
-
- public final void close() throws IOException {
- impl.close();
- }
-
- // com.sun.corba.se.impl.encoding.MarshalOutputStream
- public final void start_block() {
- impl.start_block();
- }
-
- public final void end_block() {
- impl.end_block();
- }
-
- public final void putEndian() {
- impl.putEndian();
- }
-
- public void writeTo(java.io.OutputStream s)
- throws IOException
- {
- impl.writeTo(s);
- }
-
- public final byte[] toByteArray() {
- return impl.toByteArray();
- }
-
- // org.omg.CORBA.DataOutputStream
- public final void write_Abstract (java.lang.Object value) {
- impl.write_Abstract(value);
- }
-
- public final void write_Value (java.io.Serializable value) {
- impl.write_Value(value);
- }
-
- public final void write_any_array(org.omg.CORBA.Any[] seq, int offset, int length) {
- impl.write_any_array(seq, offset, length);
- }
-
- public void setMessageMediator(MessageMediator messageMediator)
- {
- this.corbaMessageMediator = (CorbaMessageMediator) messageMediator;
- }
-
- public MessageMediator getMessageMediator()
- {
- return corbaMessageMediator;
- }
-
- // org.omg.CORBA.portable.ValueBase
- public final String[] _truncatable_ids() {
- return impl._truncatable_ids();
- }
-
- // Other
- protected final int getSize() {
- return impl.getSize();
- }
-
- protected final int getIndex() {
- return impl.getIndex();
- }
-
- protected int getRealIndex(int index) {
- // Used in indirections. Overridden by TypeCodeOutputStream.
- return index;
- }
-
- protected final void setIndex(int value) {
- impl.setIndex(value);
- }
-
- protected final ByteBuffer getByteBuffer() {
- return impl.getByteBuffer();
- }
-
- protected final void setByteBuffer(ByteBuffer byteBuffer) {
- impl.setByteBuffer(byteBuffer);
- }
-
- public final boolean isLittleEndian() {
- return impl.isLittleEndian();
- }
-
- // XREVISIT - return to final if possible
- // REVISIT - was protected - need access from msgtypes test.
- public ByteBufferWithInfo getByteBufferWithInfo() {
- return impl.getByteBufferWithInfo();
- }
-
- protected void setByteBufferWithInfo(ByteBufferWithInfo bbwi) {
- impl.setByteBufferWithInfo(bbwi);
- }
-
- // REVISIT: was protected - but need to access from xgiop.
- public final BufferManagerWrite getBufferManager() {
- return impl.getBufferManager();
- }
-
- public final void write_fixed(java.math.BigDecimal bigDecimal, short digits, short scale) {
- impl.write_fixed(bigDecimal, digits, scale);
- }
-
- public final void writeOctetSequenceTo(org.omg.CORBA.portable.OutputStream s) {
- impl.writeOctetSequenceTo(s);
- }
-
- public final GIOPVersion getGIOPVersion() {
- return impl.getGIOPVersion();
- }
-
- public final void writeIndirection(int tag, int posIndirectedTo) {
- impl.writeIndirection(tag, posIndirectedTo);
- }
-
- // Use Latin-1 for GIOP 1.0 or when code set negotiation was not
- // performed.
- protected CodeSetConversion.CTBConverter createCharCTBConverter() {
- return CodeSetConversion.impl().getCTBConverter(OSFCodeSetRegistry.ISO_8859_1);
- }
-
- // Subclasses must decide what to do here. It's inconvenient to
- // make the class and this method abstract because of dup().
- protected abstract CodeSetConversion.CTBConverter createWCharCTBConverter();
-
- protected final void freeInternalCaches() {
- impl.freeInternalCaches();
- }
-
- void printBuffer() {
- impl.printBuffer();
- }
-
- public void alignOnBoundary(int octetBoundary) {
- impl.alignOnBoundary(octetBoundary);
- }
-
- // Needed by request and reply messages for GIOP versions >= 1.2 only.
- public void setHeaderPadding(boolean headerPadding) {
- impl.setHeaderPadding(headerPadding);
- }
-
- // ValueOutputStream -----------------------------
-
- public void start_value(String rep_id) {
- impl.start_value(rep_id);
- }
-
- public void end_value() {
- impl.end_value();
- }
-}
--- a/corba/src/share/classes/com/sun/corba/se/impl/interceptors/ThreadCurrentStack.sjava Wed Jul 05 19:05:35 2017 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,164 +0,0 @@
-/*
- * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.corba.se.impl.interceptors;
-
-import com.sun.corba.se.impl.corba.AnyImpl;
-import org.omg.PortableInterceptor.Current;
-import org.omg.PortableInterceptor.InvalidSlot;
-
-import com.sun.corba.se.impl.util.MinorCodes;
-import com.sun.corba.se.impl.core.ORB;
-
-/**
- * ThreadCurrentStack is the container of PICurrent instances for each thread
- */
-public class ThreadCurrentStack
-{
- // PICurrentPool is the container for reusable PICurrents
- private class PICurrentPool {
-
- // Contains a list of reusable PICurrents
- private java.util.ArrayList pool;
-
- // High water mark for the pool
- // If the pool size reaches this limit then putPICurrent will
- // not put PICurrent to the pool.
- private static final int HIGH_WATER_MARK = 5;
-
- // currentIndex points to the last PICurrent in the list
- private int currentIndex;
-
- PICurrentPool( ) {
- pool = new java.util.ArrayList( HIGH_WATER_MARK );
- currentIndex = 0;
- }
-
- /**
- * Puts PICurrent to the re-usable pool.
- */
- void putPICurrent( PICurrent current ) {
- // If there are enough PICurrents in the pool, then don't add
- // this current to the pool.
- if( currentIndex >= HIGH_WATER_MARK ) {
- return;
- }
- pool.add(currentIndex , current);
- currentIndex++;
- }
-
- /**
- * Gets PICurrent from the re-usable pool.
- */
- PICurrent getPICurrent( ) {
- // If there are no entries in the pool then return null
- if( currentIndex == 0 ) {
- return null;
- }
- // Works like a stack, Gets the last one added first
- currentIndex--;
- return (PICurrent) pool.get(currentIndex);
- }
- }
-
- // Contains all the active PICurrents for each thread.
- // The ArrayList is made to behave like a stack.
- private java.util.ArrayList currentContainer;
-
- // Keeps track of number of PICurrents in the stack.
- private int currentIndex;
-
- // For Every Thread there will be a pool of re-usable ThreadCurrent's
- // stored in PICurrentPool
- private PICurrentPool currentPool;
-
- // The orb associated with this ThreadCurrentStack
- private ORB piOrb;
-
- /**
- * Constructs the stack and and PICurrentPool
- */
- ThreadCurrentStack( ORB piOrb, PICurrent current ) {
- this.piOrb = piOrb;
- currentIndex = 0;
- currentContainer = new java.util.ArrayList( );
- currentPool = new PICurrentPool( );
- currentContainer.add( currentIndex, current );
- currentIndex++;
- }
-
-
- /**
- * pushPICurrent goes through the following steps
- * 1: Checks to see if there is any PICurrent in PICurrentPool
- * If present then use that instance to push into the ThreadCurrentStack
- *
- * 2:If there is no PICurrent in the pool, then creates a new one and pushes
- * that into the ThreadCurrentStack
- */
- void pushPICurrent( ) {
- PICurrent current = currentPool.getPICurrent( );
- if( current == null ) {
- // get an existing PICurrent to get the slotSize
- PICurrent currentTemp = peekPICurrent();
- current = new PICurrent( piOrb, currentTemp.getSlotSize( ));
- }
- currentContainer.add( currentIndex, current );
- currentIndex++;
- }
-
- /**
- * popPICurrent does the following
- * 1: pops the top PICurrent in the ThreadCurrentStack
- *
- * 2: resets the slots in the PICurrent which resets the slotvalues to
- * null if there are any previous sets.
- *
- * 3: pushes the reset PICurrent into the PICurrentPool to reuse
- */
- void popPICurrent( ) {
- // Do not pop the PICurrent, If there is only one.
- // This should not happen, But an extra check for safety.
- if( currentIndex <= 1 ) {
- throw new org.omg.CORBA.INTERNAL(
- "Cannot pop the only PICurrent in the stack",
- MinorCodes.CANT_POP_ONLY_CURRENT_2,
- CompletionStatus.COMPLETED_NO );
- }
- currentIndex--;
- PICurrent current = (PICurrent)currentContainer.get( currentIndex );
- current.resetSlots( );
- currentPool.putPICurrent( current );
- }
-
- /**
- * peekPICurrent gets the top PICurrent in the ThreadCurrentStack without
- * popping.
- */
- PICurrent peekPICurrent( ) {
- return (PICurrent) currentContainer.get( currentIndex - 1);
- }
-
-}
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/DefineWrapper.sjava Wed Jul 05 19:05:35 2017 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,145 +0,0 @@
-/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.corba.se.impl.orbutil ;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-
-/** This class provides just a main method. Its purpose is to allow -D arguments to
-* set up the system properties when starting programs with tools like OptimizeIt that
-* make this difficult or impossible.
-*
-* Invocation: {java launcher of some kind} DefineClass -Dxxx=yyy -Dxxx=yyy ... {class name} arg0, arg1, ...
-* Result: updates system properties with -D args, then uses reflection to invoke {class name}.main with the args
-*/
-
-class DefineWrapper {
- public static void main( String[] args )
- {
- int numberDefines = args.length ;
- String className = null ;
-
- for (int ctr=0; ctr<args.length; ctr++ ) {
- String arg = args[ctr] ;
-
- if ((arg.charAt(0) == '-') && (arg.charAt(1) == 'D')) {
- int eqIndex = arg.indexOf( '=' ) ;
- if (eqIndex < 0)
- throw new Exception( arg + " is not a valid property assignment" ) ;
-
- final String key = arg.subString( 2, eqIndex ) ;
- final String value = arg.subStrung( eqIndex + 1 ) ;
-
- AccessController.doPrivileged( new PrivilegedAction() {
- public Object run() {
- System.setProperty( key, value ) ;
- return null ;
- }
- } ) ;
- } else {
- numberDefines = ctr ;
- className = arg ;
- break ;
- }
- }
-
- if (numberDefines < args.length) {
- Class cls = getMainClass( className ) ;
- Method mainMethod = getMainMethod( cls ) ;
-
- String[] newArgs = new String[ args.length - numberDefines ] ;
- for (int ctr = numberDefines+1; ctr<args.length; ctr++ ) {
- newArgs[ ctr-numberDefines-1 ] = args[ ctr ] ;
- }
-
- // build args to the main and call it
- Object params [] = new Object [1];
- params[0] = newArgs;
- mainMethod.invoke(null, params);
- } else {
- throw new Exception( "No class name given" ) ;
- }
- }
-
- private static Class getMainClass( String name )
- {
- // determine the class loader to be used for loading the class
- // since ServerMain is going to be in JDK and we need to have this
- // class to load application classes, this is required here.
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
-
- if (cl == null)
- cl = ClassLoader.getSystemClassLoader();
-
- try {
- // determine the main class, try loading with current class loader
- cls = Class.forName( className ) ;
- } catch (ClassNotFoundException ex) {
- // eat the exception and try to load using SystemClassLoader
- cls = Class.forName( className, true, cl);
- }
- }
-
- private static Method getMainMethod( Class serverClass )
- {
- Class argTypes[] = new Class[] { String[].class } ;
- Method method = null ;
-
- try {
- method = serverClass.getDeclaredMethod( "main", argTypes ) ;
- } catch (Exception exc) {
- throw new Exception( "Could not get main() method: " + exc ) ;
- }
-
- if (!isPublicStaticVoid( method ))
- throw new Exception( "Main method is not public static void" ) ;
-
- return method ;
- }
-
- private static boolean isPublicStaticVoid( Method method )
- {
- // check modifiers: public static
- int modifiers = method.getModifiers ();
- if (!Modifier.isPublic (modifiers) || !Modifier.isStatic (modifiers)) {
- logError( method.getName() + " is not public static" ) ;
- return false ;
- }
-
- // check return type and exceptions
- if (method.getExceptionTypes ().length != 0) {
- logError( method.getName() + " declares exceptions" ) ;
- return false ;
- }
-
- if (!method.getReturnType().equals (Void.TYPE)) {
- logError( method.getName() + " does not have a void return type" ) ;
- return false ;
- }
-
- return true ;
- }
-}
--- a/corba/src/share/classes/com/sun/corba/se/impl/presentation/rmi/IDLNameTranslatorImpl_save.sjava Wed Jul 05 19:05:35 2017 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,909 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.corba.se.impl.presentation.rmi ;
-
-import java.lang.reflect.Method;
-
-import java.math.BigInteger;
-
-import java.util.Map;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.HashMap;
-import java.util.StringTokenizer;
-
-import com.sun.corba.se.spi.presentation.rmi.IDLNameTranslator ;
-
-import com.sun.corba.se.impl.presentation.rmi.IDLType ;
-import com.sun.corba.se.impl.presentation.rmi.IDLTypeException ;
-import com.sun.corba.se.impl.presentation.rmi.IDLTypesUtil ;
-import com.sun.corba.se.impl.orbutil.ObjectUtility ;
-
-/**
- * Bidirectional translator between RMI-IIOP interface methods and
- * and IDL Names.
- */
-public class IDLNameTranslatorImpl implements IDLNameTranslator {
-
- // From CORBA Spec, Table 6 Keywords.
- // Note that since all IDL identifiers are case
- // insensitive, java identifier comparisons to these
- // will be case insensitive also.
- private static String[] IDL_KEYWORDS = {
-
- "abstract", "any", "attribute", "boolean", "case", "char",
- "const", "context", "custom", "default", "double", "enum",
- "exception", "factory", "FALSE", "fixed", "float", "in", "inout",
- "interface", "long", "module", "native", "Object", "octet",
- "oneway", "out", "private", "public", "raises", "readonly", "sequence",
- "short", "string", "struct", "supports", "switch", "TRUE", "truncatable",
- "typedef", "unsigned", "union", "ValueBase", "valuetype", "void",
- "wchar", "wstring"
-
- };
-
- private static char[] HEX_DIGITS = {
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
- 'A', 'B', 'C', 'D', 'E', 'F'
- };
-
- private static final String UNDERSCORE = "_";
-
- // used to mangle java inner class names
- private static final String INNER_CLASS_SEPARATOR =
- UNDERSCORE + UNDERSCORE;
-
- // used to form IDL array type names
- private static final String[] BASE_IDL_ARRAY_MODULE_TYPE=
- new String[] { "org", "omg", "boxedRMI" } ;
-
- private static final String BASE_IDL_ARRAY_ELEMENT_TYPE = "seq";
-
- // used to mangling java identifiers that have a leading underscore
- private static final String LEADING_UNDERSCORE_CHAR = "J";
- private static final String ID_CONTAINER_CLASH_CHAR = UNDERSCORE;
-
- // separator used between types in a mangled overloaded method name
- private static final String OVERLOADED_TYPE_SEPARATOR =
- UNDERSCORE + UNDERSCORE;
-
- // string appended to attribute if it clashes with a method name
- private static final String ATTRIBUTE_METHOD_CLASH_MANGLE_CHARS =
- UNDERSCORE + UNDERSCORE;
-
- private static Set idlKeywords_;
-
- static {
-
- idlKeywords_ = new HashSet();
- for(int i = 0; i < IDL_KEYWORDS.length; i++) {
- String next = (String) IDL_KEYWORDS[i];
- // Convert keyword to all caps to ease equality
- // check.
- String keywordAllCaps = next.toUpperCase();
- idlKeywords_.add(keywordAllCaps);
- }
-
- }
-
- //
- // Instance state
- //
-
- // Remote interface for name translation.
- private Class[] interf_;
-
- // Maps used to hold name translations. These do not need to be
- // synchronized since the translation is never modified after
- // initialization.
- private Map methodToIDLNameMap_;
- private Map IDLNameToMethodMap_;
- private Method[] methods_;
-
- /**
- * Return an IDLNameTranslator for the given interface.
- *
- * @throws IllegalStateException if given class is not a valid
- * RMI/IIOP Remote Interface
- */
- public static IDLNameTranslator get( Class interf )
- {
-
- return new IDLNameTranslatorImpl(new Class[] { interf } );
-
- }
-
- /**
- * Return an IDLNameTranslator for the given interfacex.
- *
- * @throws IllegalStateException if given classes are not valid
- * RMI/IIOP Remote Interfaces
- */
- public static IDLNameTranslator get( Class[] interfaces )
- {
-
- return new IDLNameTranslatorImpl(interfaces );
-
- }
-
- public static String getExceptionId( Class cls )
- {
- // Requirements for this method:
- // 1. cls must be an exception but not a RemoteException.
- // 2. If cls has an IDL keyword name, an underscore is prepended (1.3.2.2).
- // 3. If cls jas a leading underscore, J is prepended (1.3.2.3).
- // 4. If cls has an illegal IDL ident char, it is mapped to UXXXX where
- // XXXX is the unicode value in hex of the char (1.3.2.4).
- // 5. double underscore for inner class (1.3.2.5).
- // 6. The ID is "IDL:" + name with / separators + ":1.0".
- IDLType itype = classToIDLType( cls ) ;
- return itype.getExceptionName() ;
- }
-
- public Class[] getInterfaces()
- {
- return interf_;
- }
-
- public Method[] getMethods()
- {
- return methods_ ;
- }
-
- public Method getMethod( String idlName )
- {
- return (Method) IDLNameToMethodMap_.get(idlName);
- }
-
- public String getIDLName( Method method )
- {
- return (String) methodToIDLNameMap_.get(method);
- }
-
- /**
- * Initialize an IDLNameTranslator for the given interface.
- *
- * @throws IllegalStateException if given class is not a valid
- * RMI/IIOP Remote Interface
- */
- private IDLNameTranslatorImpl(Class[] interfaces)
- {
-
- try {
- IDLTypesUtil idlTypesUtil = new IDLTypesUtil();
- for (int ctr=0; ctr<interfaces.length; ctr++)
- idlTypesUtil.validateRemoteInterface(interfaces[ctr]);
- interf_ = interfaces;
- buildNameTranslation();
- } catch( IDLTypeException ite) {
- String msg = ite.getMessage();
- IllegalStateException ise = new IllegalStateException(msg);
- ise.initCause(ite);
- throw ise;
- }
- }
-
- private void buildNameTranslation()
- {
- // holds method info, keyed by method
- Map allMethodInfo = new HashMap() ;
-
- for (int ctr=0; ctr<interf_.length; ctr++) {
- Class interf = interf_[ctr] ;
-
- IDLTypesUtil idlTypesUtil = new IDLTypesUtil();
- Method[] methods = interf.getMethods();
-
- // Take an initial pass through all the methods and create some
- // information that will be used to track the IDL name
- // transformation.
- for(int i = 0; i < methods.length; i++) {
-
- Method nextMethod = methods[i];
-
- IDLMethodInfo methodInfo = new IDLMethodInfo();
-
- methodInfo.method = nextMethod;
-
- methodInfo.propertyType =
- idlTypesUtil.propertyAccessorMethodType(
- nextMethod, interf ) ;
-
- if (methodInfo.propertyType != null) {
- String attributeName = idlTypesUtil.
- getAttributeNameForProperty(nextMethod.getName());
- methodInfo.originalName = attributeName;
- methodInfo.mangledName = attributeName;
- } else {
- methodInfo.originalName = nextMethod.getName();
- methodInfo.mangledName = nextMethod.getName();
- }
-
- allMethodInfo.put(nextMethod, methodInfo);
- }
- }
-
- // Check for having both is<NAME> and get<NAME> methods.
-
-
- //
- // Perform case sensitivity test first. This applies to all
- // method names AND attributes. Compare each method name and
- // attribute to all other method names and attributes. If names
- // differ only in case, apply mangling as defined in section 1.3.2.7
- // of Java2IDL spec. Note that we compare using the original names.
- //
- for(Iterator outerIter=allMethodInfo.values().iterator();
- outerIter.hasNext();) {
- IDLMethodInfo outer = (IDLMethodInfo) outerIter.next();
- for(Iterator innerIter = allMethodInfo.values().iterator();
- innerIter.hasNext();) {
- IDLMethodInfo inner = (IDLMethodInfo) innerIter.next();
-
- if( (outer != inner) &&
- (!outer.originalName.equals(inner.originalName)) &&
- outer.originalName.equalsIgnoreCase(inner.originalName) ) {
- outer.mangledName =
- mangleCaseSensitiveCollision(outer.originalName);
- break;
- }
-
- }
- }
-
- for(Iterator iter = allMethodInfo.values().iterator();
- iter.hasNext();) {
- IDLMethodInfo next = (IDLMethodcurrentInfo) iter.next();
- next.mangledName =
- mangleIdentifier(next.mangledName,
- next.propertyType != null);
- }
-
- //
- // Now check for overloaded method names and apply 1.3.2.6.
- //
- for(Iterator outerIter=allMethodInfo.values().iterator();
- outerIter.hasNext();) {
- IDLMethodInfo outer = (IDLMethodInfo) outerIter.next();
- if (outer.propertyType != null) {
- continue;
- }
- for(Iterator innerIter = allMethodInfo.values().iterator();
- innerIter.hasNext();) {
- IDLMethodInfo inner = (IDLMethodInfo) innerIter.next();
-
- if( (outer != inner) &&
- (inner.propertyType == null) &&
- outer.originalName.equals(inner.originalName) ) {
- outer.mangledName = mangleOverloadedMethod
- (outer.mangledName, outer.method);
- break;
- }
- }
- }
-
- //
- // Now mangle any properties that clash with method names.
- //
- for(Iterator outerIter=allMethodInfo.values().iterator();
- outerIter.hasNext();) {
- IDLMethodInfo outer = (IDLMethodInfo) outerIter.next();
- if(outer.propertyType == null) {
- continue;
- }
- for(Iterator innerIter = allMethodInfo.values().iterator();
- innerIter.hasNext();) {
- IDLMethodInfo inner = (IDLMethodInfo) innerIter.next();
- if( (outer != inner) &&
- (inner.propertyType == null) &&
- outer.mangledName.equals(inner.mangledName) ) {
- outer.mangledName = outer.mangledName +
- ATTRIBUTE_METHOD_CLASH_MANGLE_CHARS;
- break;
- }
- }
- }
-
- //
- // Ensure that no mapped method names clash with mapped name
- // of container(1.3.2.9). This is a case insensitive comparison.
- //
- for (int ctr=0; ctr<interf_.length; ctr++ ) {
- Class interf = interf_[ctr] ;
- String mappedContainerName = getMappedContainerName(interf);
- for(Iterator iter = allMethodInfo.values().iterator();
- iter.hasNext();) {
- IDLMethodInfo next = (IDLMethodInfo) iter.next();
- if( (next.propertyType == null) &&
- identifierClashesWithContainer(mappedContainerName,
- next.mangledName)) {
- next.mangledName = mangleContainerClash(next.mangledName);
- }
- }
- }
-
- //
- // Populate name translation maps.
- //
- methodToIDLNameMap_ = new HashMap();
- IDLNameToMethodMap_ = new HashMap();
- methods_ = (Method[])allMethodInfo.keySet().toArray(
- new Method[0] ) ;
-
- for(Iterator iter = allMethodInfo.values().iterator();
- iter.hasNext();) {
- IDLMethodInfo next = (IDLMethodInfo) iter.next();
- String idlName = next.mangledName;
- if (next.propertyType != null) {
- idlName = javaPropertyPrefixToIDL( next.propertyType ) +
- next.mangledName ;
- }
-
- methodToIDLNameMap_.put(next.method, idlName);
-
- // Final check to see if there are any clashes after all the
- // manglings have been applied. If so, this is treated as an
- // invalid interface. Currently, we do a CASE-SENSITIVE
- // comparison since that matches the rmic behavior.
- // @@@ Shouldn't this be a case-insensitive check?
- // If there is a collision between is<TYPE> and get<TYPE>,
- // map only is<TYPE> to an attribute, and leave the
- // get<TYPE> method alone.
- if( IDLNameToMethodMap_.containsKey(idlName) ) {
- // @@@ I18N
- Method clash = (Method) IDLNameToMethodMap_.get(idlName);
- MethodInfo clashMethodInfo =
- (MethodInfo)allMethodInfo.get( clash ) ;
- if (clashMethodInfo.isBooleanProperty() &&
- next.isReadProperty()) {
- // fix idlName
- } else if (clashMethodInfo.isReadProperty() &&
- next.isBooleanProperty()) {
- // Remove entry under idlName
- // put entry into table under correct name
- } else {
- throw new IllegalStateException("Error : methods " +
- clash + " and " + next.method +
- " both result in IDL name '" + idlName + "'");
- }
- }
-
- IDLNameToMethodMap_.put(idlName, next.method);
- }
-
- return;
-
- }
-
-
- /**
- * Perform all necessary stand-alone identifier mangling operations
- * on a java identifier that is being transformed into an IDL name.
- * That is, mangling operations that don't require looking at anything
- * else but the identifier itself. This covers sections 1.3.2.2, 1.3.2.3,
- * and 1.3.2.4 of the Java2IDL spec. Method overloading and
- * case-sensitivity checks are handled elsewhere.
- */
-
- private static String mangleIdentifier(String identifier) {
- return mangleIdentifier(identifier, false);
- }
-
- private static String mangleIdentifier(String identifier, boolean attribute) {
-
- String mangledName = identifier;
-
- //
- // Apply leading underscore test (1.3.2.3)
- // This should be done before IDL Keyword clash test, since clashing
- // IDL keywords are mangled by adding a leading underscore.
- //
- if( hasLeadingUnderscore(mangledName) ) {
- mangledName = mangleLeadingUnderscore(mangledName);
- }
-
- //
- // Apply IDL keyword clash test (1.3.2.2).
- // This is not needed for attributes since when the full property
- // name is composed it cannot clash with an IDL keyword.
- // (Also, rmic doesn't do it.)
- //
-
- if( !attribute && isIDLKeyword(mangledName) ) {
- mangledName = mangleIDLKeywordClash(mangledName);
- }
-
- //
- // Replace illegal IDL identifier characters (1.3.2.4)
- // for all method names and attributes.
- //
- if( !isIDLIdentifier(mangledName) ) {
- mangledName = mangleUnicodeChars(mangledName);
- }
-
- return mangledName;
- }
-
- /**
- * Checks whether a java identifier clashes with an
- * IDL keyword. Note that this is a case-insensitive
- * comparison.
- *
- * Used to implement section 1.3.2.2 of Java2IDL spec.
- */
- private static boolean isIDLKeyword(String identifier) {
-
- String identifierAllCaps = identifier.toUpperCase();
-
- return idlKeywords_.contains(identifierAllCaps);
- }
-
- private static String mangleIDLKeywordClash(String identifier) {
- return UNDERSCORE + identifier;
- }
-
- private static String mangleLeadingUnderscore(String identifier) {
- return LEADING_UNDERSCORE_CHAR + identifier;
- }
-
- /**
- * Checks whether a java identifier starts with an underscore.
- * Used to implement section 1.3.2.3 of Java2IDL spec.
- */
- private static boolean hasLeadingUnderscore(String identifier) {
- return identifier.startsWith(UNDERSCORE);
- }
-
- /**
- * Implements Section 1.3.2.4 of Java2IDL Mapping.
- * All non-IDL identifier characters must be replaced
- * with their Unicode representation.
- */
- static String mangleUnicodeChars(String identifier) {
- StringBuffer mangledIdentifier = new StringBuffer();
-
- for(int i = 0; i < identifier.length(); i++) {
- char nextChar = identifier.charAt(i);
- if( isIDLIdentifierChar(nextChar) ) {
- mangledIdentifier.append(nextChar);
- } else {
- String unicode = charToUnicodeRepresentation(nextChar);
- mangledIdentifier.append(unicode);
- }
- }
-
- return mangledIdentifier.toString();
- }
-
- /**
- * Implements mangling portion of Section 1.3.2.7 of Java2IDL spec.
- * This method only deals with the actual mangling. Decision about
- * whether case-sensitive collision mangling is required is made
- * elsewhere.
- *
- *
- * "...a mangled name is generated consisting of the original name
- * followed by an underscore separated list of decimal indices
- * into the string, where the indices identify all the upper case
- * characters in the original string. Indices are zero based."
- *
- */
- String mangleCaseSensitiveCollision(String identifier) {
-
- StringBuffer mangledIdentifier = new StringBuffer(identifier);
-
- // There is always at least one trailing underscore, whether or
- // not the identifier has uppercase letters.
- mangledIdentifier.append(UNDERSCORE);
-
- boolean needUnderscore = false;
- for(int i = 0; i < identifier.length(); i++) {
- char next = identifier.charAt(i);
- if( Character.isUpperCase(next) ) {
- // This bit of logic is needed to ensure that we have
- // an underscore separated list of indices but no
- // trailing underscores. Basically, after we have at least
- // one uppercase letter, we always put an undercore before
- // printing the next one.
- if( needUnderscore ) {
- mangledIdentifier.append(UNDERSCORE);
- }
- mangledIdentifier.append(i);
- needUnderscore = true;
- }
- }
-
- return mangledIdentifier.toString();
- }
-
- private static String mangleContainerClash(String identifier) {
- return identifier + ID_CONTAINER_CLASH_CHAR;
- }
-
- /**
- * Implements Section 1.3.2.9 of Java2IDL Mapping. Container in this
- * context means the name of the java Class(excluding package) in which
- * the identifier is defined. Comparison is case-insensitive.
- */
- private static boolean identifierClashesWithContainer
- (String mappedContainerName, String identifier) {
-
- return identifier.equalsIgnoreCase(mappedContainerName);
- }
-
- /**
- * Returns Unicode mangling as defined in Section 1.3.2.4 of
- * Java2IDL spec.
- *
- * "For Java identifiers that contain illegal OMG IDL identifier
- * characters such as '$' or Unicode characters outside of ISO Latin 1,
- * any such illegal characters are replaced by "U" followed by the
- * 4 hexadecimal characters(in upper case) representing the Unicode
- * value. So, the Java name a$b is mapped to aU0024b and
- * x\u03bCy is mapped to xU03BCy."
- */
- public static String charToUnicodeRepresentation(char c) {
-
- int orig = (int) c;
- StringBuffer hexString = new StringBuffer();
-
- int value = orig;
-
- while( value > 0 ) {
- int div = value / 16;
- int mod = value % 16;
- hexString.insert(0, HEX_DIGITS[mod]);
- value = div;
- }
-
- int numZerosToAdd = 4 - hexString.length();
- for(int i = 0; i < numZerosToAdd; i++) {
- hexString.insert(0, "0");
- }
-
- hexString.insert(0, "U");
- return hexString.toString();
- }
-
- private static boolean isIDLIdentifier(String identifier) {
-
- boolean isIdentifier = true;
-
- for(int i = 0; i < identifier.length(); i++) {
- char nextChar = identifier.charAt(i);
- // 1st char must be alphbetic.
- isIdentifier = (i == 0) ?
- isIDLAlphabeticChar(nextChar) :
- isIDLIdentifierChar(nextChar);
- if( !isIdentifier ) {
- break;
- }
- }
-
- return isIdentifier;
-
- }
-
- private static boolean isIDLIdentifierChar(char c) {
- return (isIDLAlphabeticChar(c) ||
- isIDLDecimalDigit(c) ||
- isUnderscore(c));
- }
-
- /**
- * True if character is one of 114 Alphabetic characters as
- * specified in Table 2 of Chapter 3 in CORBA spec.
- */
- private static boolean isIDLAlphabeticChar(char c) {
-
- // NOTE that we can't use the java.lang.Character
- // isUpperCase, isLowerCase, etc. methods since they
- // include many characters other than the Alphabetic list in
- // the CORBA spec. Instead, we test for inclusion in the
- // Unicode value ranges for the corresponding legal characters.
-
- boolean alphaChar =
- (
- // A - Z
- ((c >= 0x0041) && (c <= 0x005A))
-
- ||
-
- // a - z
- ((c >= 0x0061) && (c <= 0x007A))
-
- ||
-
- // other letter uppercase, other letter lowercase, which is
- // the entire upper half of C1 Controls except X and /
- ((c >= 0x00C0) && (c <= 0x00FF)
- && (c != 0x00D7) && (c != 0x00F7)));
-
- return alphaChar;
- }
-
- /**
- * True if character is one of 10 Decimal Digits
- * specified in Table 3 of Chapter 3 in CORBA spec.
- */
- private static boolean isIDLDecimalDigit(char c) {
- return ( (c >= 0x0030) && (c <= 0x0039) );
- }
-
- private static boolean isUnderscore(char c) {
- return ( c == 0x005F );
- }
-
- /**
- * Mangle an overloaded method name as defined in Section 1.3.2.6 of
- * Java2IDL spec. Current value of method name is passed in as argument.
- * We can't start from original method name since the name might have
- * been partially mangled as a result of the other rules.
- */
- private static String mangleOverloadedMethod(String mangledName, Method m) {
-
- IDLTypesUtil idlTypesUtil = new IDLTypesUtil();
-
- // Start by appending the separator string
- String newMangledName = mangledName + OVERLOADED_TYPE_SEPARATOR;
-
- Class[] parameterTypes = m.getParameterTypes();
-
- for(int i = 0; i < parameterTypes.length; i++) {
- Class nextParamType = parameterTypes[i];
-
- if( i > 0 ) {
- newMangledName = newMangledName + OVERLOADED_TYPE_SEPARATOR;
- }
- IDLType idlType = classToIDLType(nextParamType);
-
- String moduleName = idlType.getModuleName();
- String memberName = idlType.getMemberName();
-
- String typeName = (moduleName.length() > 0) ?
- moduleName + UNDERSCORE + memberName : memberName;
-
- if( !idlTypesUtil.isPrimitive(nextParamType) &&
- (idlTypesUtil.getSpecialCaseIDLTypeMapping(nextParamType)
- == null) &&
- isIDLKeyword(typeName) ) {
- typeName = mangleIDLKeywordClash(typeName);
- }
-
- typeName = mangleUnicodeChars(typeName);
-
- newMangledName = newMangledName + typeName;
- }
-
- return newMangledName;
- }
-
-
- private static IDLType classToIDLType(Class c) {
-
- IDLType idlType = null;
- IDLTypesUtil idlTypesUtil = new IDLTypesUtil();
-
- if( idlTypesUtil.isPrimitive(c) ) {
-
- idlType = idlTypesUtil.getPrimitiveIDLTypeMapping(c);
-
- } else if( c.isArray() ) {
-
- // Calculate array depth, as well as base element type.
- Class componentType = c.getComponentType();
- int numArrayDimensions = 1;
- while(componentType.isArray()) {
- componentType = componentType.getComponentType();
- numArrayDimensions++;
- }
- IDLType componentIdlType = classToIDLType(componentType);
-
- String[] modules = BASE_IDL_ARRAY_MODULE_TYPE;
- if( componentIdlType.hasModule() ) {
- modules = (String[])ObjectUtility.concatenateArrays( modules,
- componentIdlType.getModules() ) ;
- }
-
- String memberName = BASE_IDL_ARRAY_ELEMENT_TYPE +
- numArrayDimensions + UNDERSCORE +
- componentIdlType.getMemberName();
-
- idlType = new IDLType(c, modules, memberName);
-
- } else {
- idlType = idlTypesUtil.getSpecialCaseIDLTypeMapping(c);
-
- if (idlType == null) {
- // Section 1.3.2.5 of Java2IDL spec defines mangling rules for
- // inner classes.
- String memberName = getUnmappedContainerName(c);
-
- // replace inner class separator with double underscore
- memberName = memberName.replaceAll("\\$",
- INNER_CLASS_SEPARATOR);
-
- if( hasLeadingUnderscore(memberName) ) {
- memberName = mangleLeadingUnderscore(memberName);
- }
-
- // Get raw package name. If there is a package, it
- // will still have the "." separators and none of the
- // mangling rules will have been applied.
- String packageName = getPackageName(c);
-
- if (packageName == null) {
- idlType = new IDLType( c, memberName ) ;
- } else {
- // If this is a generated IDL Entity Type we need to
- // prepend org_omg_boxedIDL per sections 1.3.5 and 1.3.9
- if (idlTypesUtil.isEntity(c)) {
- packageName = "org.omg.boxedIDL." + packageName ;
- }
-
- // Section 1.3.2.1 and 1.3.2.6 of Java2IDL spec defines
- // rules for mapping java packages to IDL modules and for
- // mangling module name portion of type name. NOTE that
- // of the individual identifier mangling rules,
- // only the leading underscore test is done here.
- // The other two(IDL Keyword, Illegal Unicode chars) are
- // done in mangleOverloadedMethodName.
- StringTokenizer tokenizer =
- new StringTokenizer(packageName, ".");
-
- String[] modules = new String[ tokenizer.countTokens() ] ;
- int index = 0 ;
- while (tokenizer.hasMoreElements()) {
- String next = tokenizer.nextToken();
- String nextMangled = hasLeadingUnderscore(next) ?
- mangleLeadingUnderscore(next) : next;
-
- modules[index++] = nextMangled ;
- }
-
- idlType = new IDLType(c, modules, memberName);
- }
- }
- }
-
- return idlType;
- }
-
- /**
- * Return Class' package name or null if there is no package.
- */
- private static String getPackageName(Class c) {
- Package thePackage = c.getPackage();
- String packageName = null;
-
- // Try to get package name by introspection. Some classloaders might
- // not provide this information, so check for null.
- if( thePackage != null ) {
- packageName = thePackage.getName();
- } else {
- // brute force method
- String fullyQualifiedClassName = c.getName();
- int lastDot = fullyQualifiedClassName.indexOf('.');
- packageName = (lastDot == -1) ? null :
- fullyQualifiedClassName.substring(0, lastDot);
- }
- return packageName;
- }
-
- private static String getMappedContainerName(Class c) {
- String unmappedName = getUnmappedContainerName(c);
-
- return mangleIdentifier(unmappedName);
- }
-
- /**
- * Return portion of class name excluding package name.
- */
- private static String getUnmappedContainerName(Class c) {
-
- String memberName = null;
- String packageName = getPackageName(c);
-
- String fullyQualifiedClassName = c.getName();
-
- if( packageName != null ) {
- int packageLength = packageName.length();
- memberName = fullyQualifiedClassName.substring(packageLength + 1);
- } else {
- memberName = fullyQualifiedClassName;
-
- }
-
- return memberName;
- }
-
- /**
- * Internal helper class for tracking information related to each
- * interface method while we're building the name translation table.
- */
- private static class IDLMethodInfo
- {
- public Method method;
- public String propertyType;
-
- // If this is a property, originalName holds the original
- // attribute name. Otherwise, it holds the original method name.
- public String originalName;
-
- // If this is a property, mangledName holds the mangled attribute
- // name. Otherwise, it holds the mangled method name.
- public String mangledName;
-
- }
-
- public String toString() {
-
- StringBuffer contents = new StringBuffer();
- contents.append("IDLNameTranslator[" );
- for( int ctr=0; ctr<interf_.length; ctr++) {
- if (ctr != 0)
- contents.append( " " ) ;
- contents.append( interf_[ctr].getName() ) ;
- }
- contents.append("]\n");
- for(Iterator iter = methodToIDLNameMap_.keySet().iterator();
- iter.hasNext();) {
-
- Method method = (Method) iter.next();
- String idlName = (String) methodToIDLNameMap_.get(method);
-
- contents.append(idlName + ":" + method + "\n");
-
- }
-
- return contents.toString();
- }
-
- public static void main(String[] args) {
-
- Class remoteInterface = java.rmi.Remote.class;
-
- if( args.length > 0 ) {
- String className = args[0];
- try {
- remoteInterface = Class.forName(className);
- } catch(Exception e) {
- e.printStackTrace();
- System.exit(-1);
- }
- }
-
- System.out.println("Building name translation for " + remoteInterface);
- try {
- IDLNameTranslator nameTranslator =
- IDLNameTranslatorImpl.get(remoteInterface);
- System.out.println(nameTranslator);
- } catch(IllegalStateException ise) {
- ise.printStackTrace();
- }
- }
-}
--- a/corba/src/share/classes/com/sun/corba/se/impl/presentation/rmi/IDLTypesUtil_save.sjava Wed Jul 05 19:05:35 2017 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,544 +0,0 @@
-/*
- * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.corba.se.impl.presentation.rmi ;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Field;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.Iterator;
-
-/**
- * Utility class for testing RMI/IDL Types as defined in
- * Section 1.2 of The Java Language to IDL Mapping. Note that
- * these are static checks only. Runtime checks, such as those
- * described in Section 1.2.3, #3, are not covered.
- */
-public class IDLTypesUtil {
-
- public static final String JAVA_GET_PROPERTY_PREFIX = "get";
- public static final String JAVA_SET_PROPERTY_PREFIX = "set";
- public static final String JAVA_IS_PROPERTY_PREFIX = "is";
-
- public static final int VALID_TYPE = 0;
- public static final int INVALID_TYPE = 1;
-
- /**
- * Validate a class to ensure it conforms to the rules for a
- * Java RMI/IIOP interface.
- *
- * @throws IDLTypeException if not a valid RMI/IIOP interface.
- */
- public void validateRemoteInterface(Class c) throws IDLTypeException
- {
- if( c == null ) {
- throw new IllegalArgumentException();
- }
-
- if( !c.isInterface() ) {
- String msg = "Class " + c + " must be a java interface.";
- throw new IDLTypeException(msg);
- }
-
- if( !java.rmi.Remote.class.isAssignableFrom(c) ) {
- String msg = "Class " + c + " must extend java.rmi.Remote, " +
- "either directly or indirectly.";
- throw new IDLTypeException(msg);
- }
-
- // Get all methods, including super-interface methods.
- Method[] methods = c.getMethods();
-
- for(int i = 0; i < methods.length; i++) {
- Method next = methods[i];
- validateExceptions(next);
- }
-
- // Removed because of bug 4989053
- // validateDirectInterfaces(c);
- validateConstants(c);
-
- return;
- }
-
- public boolean isRemoteInterface(Class c)
- {
- boolean remoteInterface = true;
- try {
- validateRemoteInterface(c);
- } catch(IDLTypeException ite) {
- remoteInterface = false;
- }
-
- return remoteInterface;
- }
-
- /**
- * Section 1.2.2 Primitive Types
- */
- public boolean isPrimitive(Class c)
- {
- if( c == null ) {
- throw new IllegalArgumentException();
- }
-
- return c.isPrimitive();
- }
-
- /**
- * Section 1.2.4
- */
- public boolean isValue(Class c)
- {
- if( c == null ) {
- throw new IllegalArgumentException();
- }
-
- return
- (!c.isInterface() &&
- java.io.Serializable.class.isAssignableFrom(c) &&
- !java.rmi.Remote.class.isAssignableFrom(c));
- }
-
- /**
- * Section 1.2.5
- */
- public boolean isArray(Class c)
- {
- boolean arrayType = false;
-
- if( c == null ) {
- throw new IllegalArgumentException();
- }
-
- if( c.isArray() ) {
- Class componentType = c.getComponentType();
- arrayType =
- (isPrimitive(componentType) || isRemoteInterface(componentType) ||
- isEntity(componentType) || isException(componentType) ||
- isValue(componentType) || isObjectReference(componentType) );
- }
-
- return arrayType;
- }
-
- /**
- * Section 1.2.6
- */
- public boolean isException(Class c)
- {
- if( c == null ) {
- throw new IllegalArgumentException();
- }
-
- // Must be a checked exception, not including RemoteException or
- // its subclasses.
- return isCheckedException(c) && !isRemoteException(c) && isValue(c);
- }
-
- public boolean isRemoteException(Class c)
- {
- if( c == null ) {
- throw new IllegalArgumentException();
- }
-
- return java.rmi.RemoteException.class.isAssignableFrom(c) ;
- }
-
- public boolean isCheckedException(Class c)
- {
- if( c == null ) {
- throw new IllegalArgumentException();
- }
-
- return Throwable.class.isAssignableFrom(c) &&
- !RuntimeException.class.isAssignableFrom(c) &&
- !Error.class.isAssignableFrom(c) ;
- }
-
- /**
- * Section 1.2.7
- */
- public boolean isObjectReference(Class c)
- {
- if( c == null ) {
- throw new IllegalArgumentException();
- }
-
- return (c.isInterface() &&
- org.omg.CORBA.Object.class.isAssignableFrom(c));
- }
-
- /**
- * Section 1.2.8
- */
- public boolean isEntity(Class c)
- {
- if( c == null ) {
- throw new IllegalArgumentException();
- }
-
- Class superClass = c.getSuperclass();
- return (!c.isInterface() &&
- (superClass != null) &&
- (org.omg.CORBA.portable.IDLEntity.class.isAssignableFrom(c)));
- }
-
- public String javaPropertyPrefixToIDL( String javaPrefix )
- {
- return "_" + javaPrefix + "_" ;
- }
-
- /**
- * Return the property type if given method is legal property accessor as defined in
- * Section 1.3.4.3 of Java2IDL spec. Result is one of: JAVA_GET_PROPERTY_PREFIX,
- * JAVA_SET_PROPERTY_PREFIX, JAVA_IS_PROPERTY_PREFIX.
- */
- public String propertyAccessorMethodType(Method m, Class c) {
-
- String methodName = m.getName();
- Class returnType = m.getReturnType();
- Class[] parameters = m.getParameterTypes();
- Class[] exceptionTypes = m.getExceptionTypes();
- String propertyType = null;
-
- if( methodName.startsWith(JAVA_GET_PROPERTY_PREFIX) ) {
-
- if((parameters.length == 0) && (returnType != Void.TYPE) &&
- !hasCorrespondingReadProperty(m, c, JAVA_IS_PROPERTY_PREFIX) {
- propertyType = JAVA_GET_PROPERTY_PREFIX;
- }
-
- } else if( methodName.startsWith(JAVA_SET_PROPERTY_PREFIX) ) {
-
- if((returnType == Void.TYPE) && (parameters.length == 1)) {
- if (hasCorrespondingReadProperty(m, c, JAVA_GET_PROPERTY_PREFIX) ||
- hasCorrespondingReadProperty(m, c, JAVA_IS_PROPERTY_PREFIX)) {
- propertyType = JAVA_SET_PROPERTY_PREFIX;
- }
- }
-
- } else if( methodName.startsWith(JAVA_IS_PROPERTY_PREFIX) ) {
- if((parameters.length == 0) && (returnType == Boolean.TYPE)) {
- propertyType = JAVA_IS_PROPERTY_PREFIX;
- }
- }
-
- // Some final checks that apply to all properties.
- if( propertyType != null ) {
- if(!validPropertyExceptions(m) ||
- (methodName.length() <= propertyType.length())) {
- propertyType = null;
- }
- }
-
- return propertyType ;
- }
-
- private boolean hasCorrespondingReadProperty
- (Method writeProperty, Class c, String readPropertyPrefix) {
-
- String writePropertyMethodName = writeProperty.getName();
- Class[] writePropertyParameters = writeProperty.getParameterTypes();
- boolean foundReadProperty = false;
-
- try {
- // Look for a valid corresponding Read property
- String readPropertyMethodName =
- writePropertyMethodName.replaceFirst
- (JAVA_SET_PROPERTY_PREFIX, readPropertyPrefix);
- Method readPropertyMethod = c.getMethod(readPropertyMethodName,
- new Class[] {});
- foundReadProperty =
- ((propertyAccessorMethodType(readPropertyMethod, c) != null) &&
- (readPropertyMethod.getReturnType() ==
- writePropertyParameters[0]));
- } catch(Exception e) {
- // ignore. this means we didn't find a corresponding get property.
- }
-
- return foundReadProperty;
- }
-
- public String getAttributeNameForProperty(String propertyName) {
- String attributeName = null;
- String prefix = null;
-
- if( propertyName.startsWith(JAVA_GET_PROPERTY_PREFIX) ) {
- prefix = JAVA_GET_PROPERTY_PREFIX;
- } else if( propertyName.startsWith(JAVA_SET_PROPERTY_PREFIX) ) {
- prefix = JAVA_SET_PROPERTY_PREFIX;
- } else if( propertyName.startsWith(JAVA_IS_PROPERTY_PREFIX) ) {
- prefix = JAVA_IS_PROPERTY_PREFIX;
- }
-
- if( (prefix != null) && (prefix.length() < propertyName.length()) ) {
- String remainder = propertyName.substring(prefix.length());
- if( (remainder.length() >= 2) &&
- Character.isUpperCase(remainder.charAt(0)) &&
- Character.isUpperCase(remainder.charAt(1)) ) {
- // don't set the first letter to lower-case if the
- // first two are upper-case
- attributeName = remainder;
- } else {
- attributeName = Character.toLowerCase(remainder.charAt(0)) +
- remainder.substring(1);
- }
- }
-
- return attributeName;
- }
-
- /**
- * Return IDL Type name for primitive types as defined in
- * Section 1.3.3 of Java2IDL spec or null if not a primitive type.
- */
- public IDLType getPrimitiveIDLTypeMapping(Class c) {
-
- if( c == null ) {
- throw new IllegalArgumentException();
- }
-
- if( c.isPrimitive() ) {
- if( c == Void.TYPE ) {
- return new IDLType( c, "void" ) ;
- } else if( c == Boolean.TYPE ) {
- return new IDLType( c, "boolean" ) ;
- } else if( c == Character.TYPE ) {
- return new IDLType( c, "wchar" ) ;
- } else if( c == Byte.TYPE ) {
- return new IDLType( c, "octet" ) ;
- } else if( c == Short.TYPE ) {
- return new IDLType( c, "short" ) ;
- } else if( c == Integer.TYPE ) {
- return new IDLType( c, "long" ) ;
- } else if( c == Long.TYPE ) {
- return new IDLType( c, "long_long" ) ;
- } else if( c == Float.TYPE ) {
- return new IDLType( c, "float" ) ;
- } else if( c == Double.TYPE ) {
- return new IDLType( c, "double" ) ;
- }
- }
-
- return null;
- }
-
- /**
- * Return IDL Type name for special case type mappings as defined in
- * Table 1-1 of Java2IDL spec or null if given class is not a special
- * type.
- */
- public IDLType getSpecialCaseIDLTypeMapping(Class c) {
-
- if( c == null ) {
- throw new IllegalArgumentException();
- }
-
- if( c == java.lang.Object.class ) {
- return new IDLType( c, new String[] { "java", "lang" },
- "Object" ) ;
- } else if( c == java.lang.String.class ) {
- return new IDLType( c, new String[] { "CORBA" },
- "WStringValue" ) ;
- } else if( c == java.lang.Class.class ) {
- return new IDLType( c, new String[] { "javax", "rmi", "CORBA" },
- "ClassDesc" ) ;
- } else if( c == java.io.Serializable.class ) {
- return new IDLType( c, new String[] { "java", "io" },
- "Serializable" ) ;
- } else if( c == java.io.Externalizable.class ) {
- return new IDLType( c, new String[] { "java", "io" },
- "Externalizable" ) ;
- } else if( c == java.rmi.Remote.class ) {
- return new IDLType( c, new String[] { "java", "rmi" },
- "Remote" ) ;
- } else if( c == org.omg.CORBA.Object.class ) {
- return new IDLType( c, "Object" ) ;
- } else {
- return null;
- }
- }
-
- /**
- * Implements 1.2.3 #2 and #4
- */
- private void validateExceptions(Method method) throws IDLTypeException {
-
- Class[] exceptions = method.getExceptionTypes();
-
- boolean declaresRemoteExceptionOrSuperClass = false;
-
- // Section 1.2.3, #2
- for(int eIndex = 0; eIndex < exceptions.length; eIndex++) {
- Class exception = exceptions[eIndex];
- if( isRemoteExceptionOrSuperClass(exception) ) {
- declaresRemoteExceptionOrSuperClass = true;
- break;
- }
- }
-
- if( !declaresRemoteExceptionOrSuperClass ) {
- String msg = "Method '" + method + "' must throw at least one " +
- "exception of type java.rmi.RemoteException or one of its " +
- "super-classes";
- throw new IDLTypeException(msg);
- }
-
- // Section 1.2.3, #4
- // See also bug 4972402
- // For all exceptions E in exceptions,
- // (isCheckedException(E) => (isValue(E) || RemoteException.isAssignableFrom( E ) )
- for(int eIndex = 0; eIndex < exceptions.length; eIndex++) {
- Class exception = exceptions[eIndex];
-
- if (isCheckedException(exception) && !isValue(exception) &&
- !isRemoteException(exception))
- {
- String msg = "Exception '" + exception + "' on method '" +
- method + "' is not a allowed RMI/IIOP exception type";
- throw new IDLTypeException(msg);
- }
- }
-
- return;
- }
-
- /**
- * Returns true if the method's throw clause conforms to the exception
- * restrictions for properties as defined in Section 1.3.4.3 of
- * Java2IDL spec. This means that for all exceptions E declared on the
- * method, E isChecked => RemoteException.isAssignableFrom( E ).
- */
- private boolean validPropertyExceptions(Method method)
- {
- Class[] exceptions = method.getExceptionTypes();
-
- for(int eIndex = 0; eIndex < exceptions.length; eIndex++) {
- Class exception = exceptions[eIndex];
-
- if (isCheckedException(exception) && !isRemoteException(exception))
- return false ;
- }
-
- return true;
- }
-
- /**
- * Implements Section 1.2.3, #2.
- */
- private boolean isRemoteExceptionOrSuperClass(Class c) {
- return
- ((c == java.rmi.RemoteException.class) ||
- (c == java.io.IOException.class) ||
- (c == java.lang.Exception.class) ||
- (c == java.lang.Throwable.class));
- }
-
- /**
- * Implements Section 1.2.3, #5.
- */
- private void validateDirectInterfaces(Class c) throws IDLTypeException {
-
- Class[] directInterfaces = c.getInterfaces();
-
- if( directInterfaces.length < 2 ) {
- return;
- }
-
- Set allMethodNames = new HashSet();
- Set currentMethodNames = new HashSet();
-
- for(int i = 0; i < directInterfaces.length; i++) {
- Class next = directInterfaces[i];
- Method[] methods = next.getMethods();
-
- // Comparison is based on method names only. First collect
- // all methods from current interface, eliminating duplicate
- // names.
- currentMethodNames.clear();
- for(int m = 0; m < methods.length; m++) {
- currentMethodNames.add(methods[m].getName());
- }
-
- // Now check each method against list of all unique method
- // names processed so far.
- for(Iterator iter=currentMethodNames.iterator(); iter.hasNext();) {
- String methodName = (String) iter.next();
- if( allMethodNames.contains(methodName) ) {
- String msg = "Class " + c + " inherits method " +
- methodName + " from multiple direct interfaces.";
- throw new IDLTypeException(msg);
- } else {
- allMethodNames.add(methodName);
- }
- }
- }
-
- return;
- }
-
- /**
- * Implements 1.2.3 #6
- */
- private void validateConstants(final Class c)
- throws IDLTypeException {
-
- Field[] fields = null;
-
- try {
- fields = (Field[])
- java.security.AccessController.doPrivileged
- (new java.security.PrivilegedExceptionAction() {
- public java.lang.Object run() throws Exception {
- return c.getFields();
- }
- });
- } catch(java.security.PrivilegedActionException pae) {
- IDLTypeException ite = new IDLTypeException();
- ite.initCause(pae);
- throw ite;
- }
-
- for(int i = 0; i < fields.length; i++) {
- Field next = fields[i];
- Class fieldType = next.getType();
- if( (fieldType != java.lang.String.class) &&
- !isPrimitive(fieldType) ) {
- String msg = "Constant field '" + next.getName() +
- "' in class '" + next.getDeclaringClass().getName() +
- "' has invalid type' " + next.getType() + "'. Constants" +
- " in RMI/IIOP interfaces can only have primitive" +
- " types and java.lang.String types.";
- throw new IDLTypeException(msg);
- }
- }
-
-
- return;
- }
-
-}
--- a/corba/src/share/classes/com/sun/corba/se/impl/protocol/oldlocal/LocalClientRequestImpl.sjava Wed Jul 05 19:05:35 2017 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-/*
- * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.corba.se.impl.iiop;
-
-import com.sun.corba.se.impl.protocol.Request;
-import com.sun.corba.se.impl.core.ClientRequest;
-import com.sun.corba.se.impl.core.ServiceContext;
-import com.sun.corba.se.impl.core.ServiceContexts;
-import com.sun.corba.se.impl.core.ClientResponse;
-import com.sun.corba.se.impl.core.ServerRequest;
-import com.sun.corba.se.impl.core.ServerResponse;
-import com.sun.corba.se.impl.corba.IOR;
-import com.sun.corba.se.impl.corba.GIOPVersion;
-import com.sun.corba.se.impl.protocol.giopmsgheaders.MessageBase;
-import com.sun.corba.se.impl.protocol.giopmsgheaders.RequestMessage;
-import com.sun.corba.se.impl.orbutil.ORBConstants;
-import com.sun.corba.se.impl.core.ORBVersion;
-import com.sun.corba.se.impl.core.ORB;
-import com.sun.corba.se.impl.orbutil.ORBUtility;
-import com.sun.corba.se.impl.ior.ObjectKeyFactory ;
-import com.sun.corba.se.impl.ior.ObjectKey ;
-import com.sun.corba.se.impl.ior.ObjectKeyTemplate ;
-import com.sun.corba.se.impl.ior.IIOPProfile;
-
-public class LocalClientRequestImpl extends IIOPOutputStream
- implements ClientRequest
-{
- public LocalClientRequestImpl( GIOPVersion gv,
- ORB orb, IOR ior, short addrDisposition,
- String operationName, boolean oneway, ServiceContexts svc,
- int requestId, byte streamFormatVersion)
- {
- super(gv,
- orb,
- null,
- BufferManagerFactory.newBufferManagerWrite(BufferManagerFactory.GROW),
- streamFormatVersion);
-
- this.isOneway = oneway;
- boolean responseExpected = !isOneway;
-
- IIOPProfile iop = ior.getProfile();
- ObjectKey okey = iop.getObjectKey();
- ObjectKeyTemplate oktemp = okey.getTemplate() ;
- ORBVersion version = oktemp.getORBVersion() ;
- orb.setORBVersion( version ) ;
-
- this.request = MessageBase.createRequest(orb, gv, requestId,
- responseExpected, ior, addrDisposition, operationName, svc, null);
- setMessage(request);
- request.write(this);
-
- // mark beginning of msg body for possible later use
- bodyBegin = getSize();
- }
-
- public int getRequestId() {
- return request.getRequestId();
- }
-
- public boolean isOneWay() {
- return isOneway;
- }
-
- public ServiceContexts getServiceContexts() {
- return request.getServiceContexts();
- }
-
- public String getOperationName() {
- return request.getOperation();
- }
-
- public ObjectKey getObjectKey() {
- return request.getObjectKey();
- }
-
- public ServerRequest getServerRequest()
- {
- // Set the size of the marshalled data in the message header.
- getMessage().setSize( getByteBuffer(), getSize() ) ;
-
- // Construct a new ServerRequest out of the buffer in this ClientRequest
- LocalServerRequestImpl serverRequest = new LocalServerRequestImpl(
- (ORB)orb(), toByteArray(), request ) ;
-
- // Skip over all of the GIOP header information. This positions
- // the offset in the buffer so that the skeleton can correctly read
- // the marshalled arguments.
- serverRequest.setIndex( bodyBegin ) ;
-
- return serverRequest ;
- }
-
- public ClientResponse invoke()
- {
- ORB myORB = (ORB)orb() ;
-
- ServerResponse serverResponse = myORB.process( getServerRequest() ) ;
-
- LocalServerResponseImpl lsr = (LocalServerResponseImpl)serverResponse ;
-
- return lsr.getClientResponse() ;
- }
-
- /**
- * Check to see if the request is local.
- */
- public boolean isLocal(){
- return true;
- }
-
- private RequestMessage request;
- private int bodyBegin;
- private boolean isOneway;
-}
--- a/corba/src/share/classes/com/sun/corba/se/impl/protocol/oldlocal/LocalClientResponseImpl.sjava Wed Jul 05 19:05:35 2017 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,162 +0,0 @@
-/*
- * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.corba.se.impl.iiop;
-
-import java.io.IOException;
-
-import org.omg.CORBA.SystemException;
-import org.omg.CORBA.CompletionStatus;
-
-import com.sun.corba.se.impl.core.Response;
-import com.sun.corba.se.impl.core.ClientResponse;
-import com.sun.corba.se.impl.corba.IOR;
-import com.sun.corba.se.impl.core.ORB;
-import com.sun.corba.se.impl.core.ServiceContext;
-import com.sun.corba.se.impl.core.ServiceContexts;
-import com.sun.corba.se.impl.protocol.giopmsgheaders.Message;
-import com.sun.corba.se.impl.protocol.giopmsgheaders.ReplyMessage;
-import com.sun.corba.se.impl.orbutil.MinorCodes;
-
-class LocalClientResponseImpl extends IIOPInputStream implements ClientResponse
-{
- LocalClientResponseImpl(ORB orb, byte[] buf, ReplyMessage header)
- {
- super(orb, buf, header.getSize(), header.isLittleEndian(), header, null);
-
- this.reply = header;
-
- // NOTE (Ram J) (06/02/2000) if we set result.setIndex(bodyBegin)
- // in LocalServerResponse.getClientResponse(), then we do not need
- // to read the headers (done below) anymore.
- // This will be an optimisation which is can be done to speed up the
- // local invocation by avoiding reading the headers in the local cases.
-
- // BUGFIX(Ram Jeyaraman) This has been moved from
- // LocalServerResponse.getClientResponse()
- // Skip over all of the GIOP header information. This positions
- // the offset in the buffer so that the skeleton can correctly read
- // the marshalled arguments.
- this.setIndex(Message.GIOPMessageHeaderLength);
-
- // BUGFIX(Ram Jeyaraman) For local invocations, the reply mesg fields
- // needs to be set, by reading the response buffer contents
- // to correctly set the exception type and other info.
- this.reply.read(this);
- }
-
- LocalClientResponseImpl(SystemException ex)
- {
- this.systemException = ex;
- }
-
- public boolean isSystemException() {
- if ( reply != null )
- return reply.getReplyStatus() == ReplyMessage.SYSTEM_EXCEPTION;
- else
- return (systemException != null);
- }
-
- public boolean isUserException() {
- if ( reply != null )
- return reply.getReplyStatus() == ReplyMessage.USER_EXCEPTION;
- else
- return false;
- }
-
- public boolean isLocationForward() {
- if ( reply != null ) {
- return ( (reply.getReplyStatus() == ReplyMessage.LOCATION_FORWARD) ||
- (reply.getReplyStatus() == ReplyMessage.LOCATION_FORWARD_PERM) );
- //return reply.getReplyStatus() == ReplyMessage.LOCATION_FORWARD;
- } else {
- return false;
- }
- }
-
- public boolean isDifferentAddrDispositionRequested() {
- if (reply != null) {
- return reply.getReplyStatus() == ReplyMessage.NEEDS_ADDRESSING_MODE;
- }
-
- return false;
- }
-
- public short getAddrDisposition() {
- if (reply != null) {
- return reply.getAddrDisposition();
- }
-
- throw new org.omg.CORBA.INTERNAL(
- "Null reply in getAddrDisposition",
- MinorCodes.NULL_REPLY_IN_GET_ADDR_DISPOSITION,
- CompletionStatus.COMPLETED_MAYBE);
- }
-
- public IOR getForwardedIOR() {
- if ( reply != null )
- return reply.getIOR();
- else
- return null;
- }
-
- public int getRequestId() {
- if ( reply != null )
- return reply.getRequestId();
- else
- throw new org.omg.CORBA.INTERNAL("Error in getRequestId");
- }
-
- public ServiceContexts getServiceContexts() {
- if ( reply != null )
- return reply.getServiceContexts();
- else
- return null;
- }
-
- public SystemException getSystemException() {
- if ( reply != null )
- return reply.getSystemException();
- else
- return systemException;
- }
-
- public java.lang.String peekUserExceptionId() {
- mark(Integer.MAX_VALUE);
- String result = read_string();
- reset();
- return result;
- }
-
- /**
- * Check to see if the response is local.
- */
- public boolean isLocal(){
- return true;
- }
-
- private ReplyMessage reply;
- private SystemException systemException;
-}
--- a/corba/src/share/classes/com/sun/corba/se/impl/protocol/oldlocal/LocalServerRequestImpl.sjava Wed Jul 05 19:05:35 2017 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,208 +0,0 @@
-/*
- * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.corba.se.impl.iiop;
-
-import org.omg.CORBA.SystemException;
-
-import com.sun.corba.se.impl.core.ServerRequest;
-import com.sun.corba.se.impl.core.ServiceContext;
-import com.sun.corba.se.impl.core.DuplicateServiceContext;
-import com.sun.corba.se.impl.core.UEInfoServiceContext;
-import com.sun.corba.se.impl.core.ServiceContexts;
-import com.sun.corba.se.impl.core.ServerResponse;
-import com.sun.corba.se.impl.corba.IOR;
-import com.sun.corba.se.impl.core.ORB;
-import com.sun.corba.se.impl.orbutil.ORBUtility; //d11638
-import org.omg.CORBA.portable.UnknownException;
-import org.omg.CORBA.UNKNOWN;
-import org.omg.CORBA.CompletionStatus;
-import com.sun.corba.se.impl.ior.ObjectKey;
-import com.sun.corba.se.impl.protocol.giopmsgheaders.MessageBase;
-import com.sun.corba.se.impl.protocol.giopmsgheaders.ReplyMessage;
-import com.sun.corba.se.impl.protocol.giopmsgheaders.RequestMessage;
-
-class LocalServerRequestImpl extends IIOPInputStream implements ServerRequest {
- org.omg.CORBA.portable.OutputStream replyStream;
- org.omg.CORBA.portable.OutputStream exceptionReplyStream;
-
- LocalServerRequestImpl(ORB orb, byte[] buf, RequestMessage header)
- {
- super(orb, buf, header.getSize(), header.isLittleEndian(), header, null );
-
- this.request = header;
- }
-
- public int getRequestId() {
- return request.getRequestId();
- }
-
- public boolean isOneWay() {
- return !request.isResponseExpected();
- }
-
- public ServiceContexts getServiceContexts() {
- return request.getServiceContexts();
- }
-
- public String getOperationName() {
- return request.getOperation();
- }
-
- public ObjectKey getObjectKey() {
- return request.getObjectKey();
- }
-
- public ServerResponse createResponse(ServiceContexts svc)
- {
- return new LocalServerResponseImpl(this, svc);
- }
-
- public org.omg.CORBA.portable.OutputStream createReply() {
- if (replyStream == null) {
- replyStream = (org.omg.CORBA.portable.OutputStream)
- createResponse(null);
- }
- return replyStream;
- }
-
- public org.omg.CORBA.portable.OutputStream createExceptionReply() {
- if (exceptionReplyStream == null) {
- exceptionReplyStream = (org.omg.CORBA.portable.OutputStream)
- createUserExceptionResponse(null);
- }
- return exceptionReplyStream;
- }
-
- public ServerResponse createUserExceptionResponse(
- ServiceContexts svc)
- {
- return new LocalServerResponseImpl(this, svc, true);
- }
-
- public ServerResponse createUnknownExceptionResponse(
- UnknownException ex) {
- ServiceContexts contexts = null;
- SystemException sys = new UNKNOWN( 0,
- CompletionStatus.COMPLETED_MAYBE);
-
- try {
- contexts = new ServiceContexts( (ORB)orb() );
- UEInfoServiceContext uei = new UEInfoServiceContext(sys);
- contexts.put(uei) ;
- } catch (DuplicateServiceContext d) {
- // can't happen
- }
-
- return createSystemExceptionResponse(sys,contexts);
- }
-
- public ServerResponse createSystemExceptionResponse(
- SystemException ex, ServiceContexts svc) {
-
- // Only do this if interceptors have been initialized on this request
- // and have not completed their lifecycle (otherwise the info stack
- // may be empty or have a different request's entry on top).
- if (executePIInResponseConstructor()) {
- // Inform Portable Interceptors of the SystemException. This is
- // required to be done here because the ending interception point
- // is called in the ServerResponseImpl constructor called below
- // but we do not currently write the SystemException into the
- // response until after the ending point is called.
- ORB orb = (ORB)orb();
- orb.getPIHandler().setServerPIInfo( ex );
- }
-
- if (orb() != null && ((ORB)orb()).subcontractDebugFlag && ex != null)
- ORBUtility.dprint(this, "Sending SystemException:", ex);
-
- LocalServerResponseImpl response =
- new LocalServerResponseImpl(this, svc, false);
- ORBUtility.writeSystemException(ex, response);
- return response;
- }
-
- public ServerResponse createLocationForward(
- IOR ior, ServiceContexts svc) {
- ReplyMessage reply = MessageBase.createReply( (ORB)orb(),
- request.getGIOPVersion(), request.getRequestId(),
- ReplyMessage.LOCATION_FORWARD, svc, ior);
- LocalServerResponseImpl response =
- new LocalServerResponseImpl(this, reply, ior);
-
- return response;
- }
-
- private RequestMessage request;
-
- /**
- * Check to see if the request is local.
- */
- public boolean isLocal(){
- return true;
- }
-
- private boolean _executeReturnServantInResponseConstructor = false;
-
- public boolean executeReturnServantInResponseConstructor()
- {
- return _executeReturnServantInResponseConstructor;
- }
-
- public void setExecuteReturnServantInResponseConstructor(boolean b)
- {
- _executeReturnServantInResponseConstructor = b;
- }
-
-
- private boolean _executeRemoveThreadInfoInResponseConstructor = false;
-
- public boolean executeRemoveThreadInfoInResponseConstructor()
- {
- return _executeRemoveThreadInfoInResponseConstructor;
- }
-
- public void setExecuteRemoveThreadInfoInResponseConstructor(boolean b)
- {
- _executeRemoveThreadInfoInResponseConstructor = b;
- }
-
-
- private boolean _executePIInResponseConstructor = false;
-
- public boolean executePIInResponseConstructor() {
- return _executePIInResponseConstructor;
- }
-
- public void setExecutePIInResponseConstructor( boolean b ) {
- _executePIInResponseConstructor = b;
- }
-
- // We know that we're talking to the same ValueHandler, so
- // use the maximum version it supports.
- public byte getStreamFormatVersionForReply() {
- return ORBUtility.getMaxStreamFormatVersion();
- }
-}
--- a/corba/src/share/classes/com/sun/corba/se/impl/protocol/oldlocal/LocalServerResponseImpl.sjava Wed Jul 05 19:05:35 2017 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,192 +0,0 @@
-/*
- * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.corba.se.impl.iiop;
-
-import org.omg.CORBA.SystemException;
-
-import com.sun.corba.se.impl.core.ServerResponse;
-import com.sun.corba.se.impl.core.ORB;
-import com.sun.corba.se.impl.corba.IOR;
-import com.sun.corba.se.impl.core.ServiceContext;
-import com.sun.corba.se.impl.core.ServiceContexts;
-import com.sun.corba.se.impl.core.ClientResponse;
-import com.sun.corba.se.impl.protocol.giopmsgheaders.MessageBase;
-import com.sun.corba.se.impl.protocol.giopmsgheaders.ReplyMessage;
-
-class LocalServerResponseImpl
- extends IIOPOutputStream
- implements ServerResponse
-{
- LocalServerResponseImpl(LocalServerRequestImpl request, ServiceContexts svc)
- {
- this(request,
- MessageBase.createReply(
- (ORB)request.orb(),
- request.getGIOPVersion(),
- request.getRequestId(), ReplyMessage.NO_EXCEPTION,
- svc, null),
- null);
- }
-
- LocalServerResponseImpl(LocalServerRequestImpl request, ServiceContexts svc,
- boolean user)
- {
- this(request,
- MessageBase.createReply(
- (ORB)request.orb(),
- request.getGIOPVersion(), request.getRequestId(),
- user ? ReplyMessage.USER_EXCEPTION :
- ReplyMessage.SYSTEM_EXCEPTION,
- svc, null),
- null);
- }
-
- LocalServerResponseImpl( LocalServerRequestImpl request, ReplyMessage reply,
- IOR ior)
- {
- super(request.getGIOPVersion(),
- (ORB)request.orb(),
- null,
- BufferManagerFactory.newBufferManagerWrite(BufferManagerFactory.GROW),
- request.getStreamFormatVersionForReply());
-
- setMessage(reply);
-
- ORB orb = (ORB)request.orb();
-
- ServerResponseImpl.runServantPostInvoke(orb, request);
-
- if( request.executePIInResponseConstructor() ) {
- // Invoke server request ending interception points (send_*):
- // Note: this may end up with a SystemException or an internal
- // Runtime ForwardRequest.
- orb.getPIHandler().invokeServerPIEndingPoint( reply );
-
- // Note this will be executed even if a ForwardRequest or
- // SystemException is thrown by a Portable Interceptors ending
- // point since we end up in this constructor again anyway.
- orb.getPIHandler().cleanupServerPIRequest();
-
- // See (Local)ServerRequestImpl.createSystemExceptionResponse
- // for why this is necesary.
- request.setExecutePIInResponseConstructor(false);
- }
-
- // Once you get here then the final reply is available (i.e.,
- // postinvoke and interceptors have completed.
- if (request.executeRemoveThreadInfoInResponseConstructor()) {
- ServerResponseImpl.removeThreadInfo(orb, request);
- }
-
- reply.write(this);
- if (reply.getIOR() != null)
- reply.getIOR().write(this);
-
- this.reply = reply;
- this.ior = reply.getIOR();
- }
-
- public boolean isSystemException() {
- if (reply != null)
- return reply.getReplyStatus() == ReplyMessage.SYSTEM_EXCEPTION;
- return false;
- }
-
- public boolean isUserException() {
- if (reply != null)
- return reply.getReplyStatus() == ReplyMessage.USER_EXCEPTION;
- return false;
- }
-
- public boolean isLocationForward() {
- if (ior != null)
- return true;
- return false;
- }
-
- public IOR getForwardedIOR() {
- return ior;
- }
-
- public int getRequestId() {
- if (reply != null)
- return reply.getRequestId();
- return -1;
- }
-
- public ServiceContexts getServiceContexts() {
- if (reply != null)
- return reply.getServiceContexts();
- return null;
- }
-
- public SystemException getSystemException() {
- if (reply != null)
- return reply.getSystemException();
- return null;
- }
-
- public ReplyMessage getReply()
- {
- return reply ;
- }
-
- public ClientResponse getClientResponse()
- {
- // set the size of the marshalled data in the message header
- getMessage().setSize(getByteBuffer(), getSize());
-
- // Construct a new ClientResponse out of the buffer in this ClientRequest
- LocalClientResponseImpl result =
- new LocalClientResponseImpl( (ORB)orb(), toByteArray(), reply);
-
- // NOTE (Ram J) (06/02/2000) if we set result.setIndex(bodyBegin) here
- // then the LocalClientResponse does not need to read the headers anymore.
- // This will be an optimisation which is can be done to speed up the
- // local invocation by avoiding reading the headers in the local cases.
-
- // BUGFIX(Ram Jeyaraman) result.setOffset is now done in
- // LocalClientResponseImpl constructor.
- /*
- // Skip over all of the GIOP header information. This positions
- // the offset in the buffer so that the skeleton can correctly read
- // the marshalled arguments.
- result.setOffset( bodyBegin ) ;
- */
-
- return result ;
- }
-
- /**
- * Check to see if the response is local.
- */
- public boolean isLocal(){
- return true;
- }
-
- private ReplyMessage reply;
- private IOR ior; // forwarded IOR
-}
--- a/corba/src/share/classes/com/sun/corba/se/impl/transport/BufferConnectionImpl.sjava Wed Jul 05 19:05:35 2017 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,710 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.corba.se.impl.transport;
-
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-import java.nio.ByteBuffer;
-import java.nio.channels.SelectableChannel;
-import java.nio.channels.SelectionKey;
-import java.nio.channels.SocketChannel;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.Collections;
-import java.util.Hashtable;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.omg.CORBA.COMM_FAILURE;
-import org.omg.CORBA.CompletionStatus;
-import org.omg.CORBA.DATA_CONVERSION;
-import org.omg.CORBA.INTERNAL;
-import org.omg.CORBA.MARSHAL;
-import org.omg.CORBA.OBJECT_NOT_EXIST;
-import org.omg.CORBA.SystemException;
-
-import com.sun.org.omg.SendingContext.CodeBase;
-
-import com.sun.corba.se.pept.broker.Broker;
-import com.sun.corba.se.pept.encoding.InputObject;
-import com.sun.corba.se.pept.encoding.OutputObject;
-import com.sun.corba.se.pept.protocol.MessageMediator;
-import com.sun.corba.se.pept.transport.Acceptor;
-import com.sun.corba.se.pept.transport.Connection;
-import com.sun.corba.se.pept.transport.ConnectionCache;
-import com.sun.corba.se.pept.transport.ContactInfo;
-import com.sun.corba.se.pept.transport.EventHandler;
-import com.sun.corba.se.pept.transport.InboundConnectionCache;
-import com.sun.corba.se.pept.transport.OutboundConnectionCache;
-import com.sun.corba.se.pept.transport.ResponseWaitingRoom;
-import com.sun.corba.se.pept.transport.Selector;
-
-import com.sun.corba.se.spi.ior.IOR;
-import com.sun.corba.se.spi.ior.iiop.GIOPVersion;
-import com.sun.corba.se.spi.logging.CORBALogDomains;
-import com.sun.corba.se.spi.orb.ORB ;
-import com.sun.corba.se.spi.orbutil.threadpool.Work;
-import com.sun.corba.se.spi.protocol.CorbaMessageMediator;
-import com.sun.corba.se.spi.transport.CorbaContactInfo;
-import com.sun.corba.se.spi.transport.CorbaConnection;
-import com.sun.corba.se.spi.transport.CorbaResponseWaitingRoom;
-
-import com.sun.corba.se.impl.encoding.CachedCodeBase;
-import com.sun.corba.se.impl.encoding.CDRInputStream_1_0;
-import com.sun.corba.se.impl.encoding.CDROutputObject;
-import com.sun.corba.se.impl.encoding.CDROutputStream_1_0;
-import com.sun.corba.se.impl.encoding.CodeSetComponentInfo;
-import com.sun.corba.se.impl.encoding.OSFCodeSetRegistry;
-import com.sun.corba.se.impl.logging.ORBUtilSystemException;
-import com.sun.corba.se.impl.orbutil.ORBConstants;
-import com.sun.corba.se.impl.orbutil.ORBUtility;
-import com.sun.corba.se.impl.protocol.giopmsgheaders.Message;
-import com.sun.corba.se.impl.protocol.giopmsgheaders.MessageBase;
-import com.sun.corba.se.impl.transport.CorbaResponseWaitingRoomImpl;
-
-/**
- * @author Ken Cavanaugh
- */
-public class BufferConnectionImpl
- extends
- EventHandlerBase
- implements
- CorbaConnection,
- Work
-{
- //
- // New transport.
- //
-
- protected long enqueueTime;
-
- public SocketChannel getSocketChannel()
- {
- return null;
- }
-
- // REVISIT:
- // protected for test: genericRPCMSGFramework.IIOPConnection constructor.
-
- //
- // From iiop.Connection.java
- //
-
- protected long timeStamp = 0;
- protected boolean isServer = false;
-
- // Start at some value other than zero since this is a magic
- // value in some protocols.
- protected int requestId = 5;
- protected CorbaResponseWaitingRoom responseWaitingRoom;
- protected int state;
- protected java.lang.Object stateEvent = new java.lang.Object();
- protected java.lang.Object writeEvent = new java.lang.Object();
- protected boolean writeLocked;
- protected int serverRequestCount = 0;
-
- // Server request map: used on the server side of Connection
- // Maps request ID to IIOPInputStream.
- Map serverRequestMap = new HashMap() ;
-
- // This is a flag associated per connection telling us if the
- // initial set of sending contexts were sent to the receiver
- // already...
- protected boolean postInitialContexts = false;
-
- // Remote reference to CodeBase server (supplies
- // FullValueDescription, among other things)
- protected IOR codeBaseServerIOR;
-
- // CodeBase cache for this connection. This will cache remote operations,
- // handle connecting, and ensure we don't do any remote operations until
- // necessary.
- protected CachedCodeBase cachedCodeBase = new CachedCodeBase(this);
-
- protected ORBUtilSystemException wrapper ;
-
- List buffers ;
-
- public BufferConnectionImpl(ORB orb, byte[][] data )
- {
- this.orb = orb;
- wrapper = ORBUtilSystemException.get( orb,
- CORBALogDomains.RPC_TRANSPORT ) ;
- buffers = new ArrayList() ;
- }
-
- ////////////////////////////////////////////////////
- //
- // framework.transport.Connection
- //
-
- public boolean shouldRegisterReadEvent()
- {
- return false;
- }
-
- public boolean shouldRegisterServerReadEvent()
- {
- return false;
- }
-
- public boolean read()
- {
- return true ;
- }
-
- protected CorbaMessageMediator readBits()
- {
- return null ;
- }
-
- protected boolean dispatch(CorbaMessageMediator messageMediator)
- {
- }
-
- public boolean shouldUseDirectByteBuffers()
- {
- return false ;
- }
-
- // Only called from readGIOPMessage with (12, 0, 12) as arguments
- // size is size of buffer to create
- // offset is offset from start of message in buffer
- // length is length to read
- public ByteBuffer read(int size, int offset, int length)
- throws IOException
- {
- byte[] buf = new byte[size];
- readFully( buf, offset, length);
- ByteBuffer byteBuffer = ByteBuffer.wrap(buf);
- byteBuffer.limit(size);
- return byteBuffer;
- }
-
- // Only called as read( buf, 12, msgsize-12 ) in readGIOPMessage
- // We can ignore the byteBuffer parameter
- // offset is the starting position to place data in the result
- // length is the length of the data to read
- public ByteBuffer read(ByteBuffer byteBuffer, int offset, int length)
- throws IOException
- {
- int size = offset + length;
- byte[] buf = new byte[size];
- readFully(buf, offset, length);
- return ByteBuffer.wrap(buf);
- }
-
- // Read size bytes from buffer list and place the data
- // starting at offset in buf.
- public void readFully(byte[] buf, int offset, int size)
- throws IOException
- {
- int remaining = size ;
- int position = offset ;
- while (remaining > 0) {
- ByteBuffer buff = (ByteBuffer)buffers.get(0) ;
- int dataSize = buff.remaining() ;
- int xferSize = dataSize ;
- if (dataSize >= remaining) :
- xferSize = remaining ;
- buffers.remove(0) ;
- }
-
- buff.get( buf, offset, xferSize ) ;
-
- offset += xferSize ;
- remaining -= xferSize ;
- }
- }
-
- public void write(ByteBuffer byteBuffer)
- throws IOException
- {
- buffers.add( byteBuffer ) ;
- }
-
- /**
- * Note:it is possible for this to be called more than once
- */
- public synchronized void close()
- {
- }
-
- public Acceptor getAcceptor()
- {
- return null;
- }
-
- public ContactInfo getContactInfo()
- {
- return null;
- }
-
- public EventHandler getEventHandler()
- {
- return this;
- }
-
- public OutputObject createOutputObject(MessageMediator messageMediator)
- {
- // REVISIT - remove this method from Connection and all it subclasses.
- throw new RuntimeException("*****SocketOrChannelConnectionImpl.createOutputObject - should not be called.");
- }
-
- // This is used by the GIOPOutputObject in order to
- // throw the correct error when handling code sets.
- // Can we determine if we are on the server side by
- // other means? XREVISIT
- public boolean isServer()
- {
- return isServer;
- }
-
- public boolean isBusy()
- {
- return false ;
- }
-
- public long getTimeStamp()
- {
- return timeStamp;
- }
-
- public void setTimeStamp(long time)
- {
- timeStamp = time;
- }
-
- public void setState(String stateString)
- {
- synchronized (stateEvent) {
- if (stateString.equals("ESTABLISHED")) {
- state = ESTABLISHED;
- stateEvent.notifyAll();
- } else {
- // REVISIT: ASSERT
- }
- }
- }
-
- public void writeLock()
- {
- }
-
- public void writeUnlock()
- {
- }
-
- public void sendWithoutLock(OutputObject outputObject)
- {
- }
-
- public void registerWaiter(MessageMediator messageMediator)
- {
- }
-
- public void unregisterWaiter(MessageMediator messageMediator)
- {
- }
-
- public InputObject waitForResponse(MessageMediator messageMediator)
- {
- return null ;
- }
-
- public void setConnectionCache(ConnectionCache connectionCache)
- {
- }
-
- public ConnectionCache getConnectionCache()
- {
- return null;
- }
-
- ////////////////////////////////////////////////////
- //
- // EventHandler methods
- //
-
- public SelectableChannel getChannel()
- {
- return null;
- }
-
- public int getInterestOps()
- {
- return null;
- }
-
- // public Acceptor getAcceptor() - already defined above.
-
- public Connection getConnection()
- {
- return this;
- }
-
- ////////////////////////////////////////////////////
- //
- // Work methods.
- //
-
- public String getName()
- {
- return this.toString();
- }
-
- public void doWork()
- {
- }
-
- public void setEnqueueTime(long timeInMillis)
- {
- enqueueTime = timeInMillis;
- }
-
- public long getEnqueueTime()
- {
- return enqueueTime;
- }
-
- ////////////////////////////////////////////////////
- //
- // spi.transport.CorbaConnection.
- //
-
- public ResponseWaitingRoom getResponseWaitingRoom()
- {
- return null ;
- }
-
- // REVISIT - inteface defines isServer but already defined in
- // higher interface.
-
-
- public void serverRequestMapPut(int requestId,
- CorbaMessageMediator messageMediator)
- {
- serverRequestMap.put(new Integer(requestId), messageMediator);
- }
-
- public CorbaMessageMediator serverRequestMapGet(int requestId)
- {
- return (CorbaMessageMediator)
- serverRequestMap.get(new Integer(requestId));
- }
-
- public void serverRequestMapRemove(int requestId)
- {
- serverRequestMap.remove(new Integer(requestId));
- }
-
-
- // REVISIT: this is also defined in:
- // com.sun.corba.se.spi.legacy.connection.Connection
- public java.net.Socket getSocket()
- {
- return null;
- }
-
- /** It is possible for a Close Connection to have been
- ** sent here, but we will not check for this. A "lazy"
- ** Exception will be thrown in the Worker thread after the
- ** incoming request has been processed even though the connection
- ** is closed before the request is processed. This is o.k because
- ** it is a boundary condition. To prevent it we would have to add
- ** more locks which would reduce performance in the normal case.
- **/
- public synchronized void serverRequestProcessingBegins()
- {
- serverRequestCount++;
- }
-
- public synchronized void serverRequestProcessingEnds()
- {
- serverRequestCount--;
- }
-
- //
- //
- //
-
- public synchronized int getNextRequestId()
- {
- return requestId++;
- }
-
- // Negotiated code sets for char and wchar data
- protected CodeSetComponentInfo.CodeSetContext codeSetContext = null;
-
- public ORB getBroker()
- {
- return orb;
- }
-
- public CodeSetComponentInfo.CodeSetContext getCodeSetContext()
- {
- // Needs to be synchronized for the following case when the client
- // doesn't send the code set context twice, and we have two threads
- // in ServerRequestDispatcher processCodeSetContext.
- //
- // Thread A checks to see if there is a context, there is none, so
- // it calls setCodeSetContext, getting the synch lock.
- // Thread B checks to see if there is a context. If we didn't synch,
- // it might decide to outlaw wchar/wstring.
- if (codeSetContext == null) {
- synchronized(this) {
- return codeSetContext;
- }
- }
-
- return codeSetContext;
- }
-
- public synchronized void setCodeSetContext(CodeSetComponentInfo.CodeSetContext csc) {
- // Double check whether or not we need to do this
- if (codeSetContext == null) {
-
- if (OSFCodeSetRegistry.lookupEntry(csc.getCharCodeSet()) == null ||
- OSFCodeSetRegistry.lookupEntry(csc.getWCharCodeSet()) == null) {
- // If the client says it's negotiated a code set that
- // isn't a fallback and we never said we support, then
- // it has a bug.
- throw wrapper.badCodesetsFromClient() ;
- }
-
- codeSetContext = csc;
- }
- }
-
- //
- // from iiop.IIOPConnection.java
- //
-
- // Map request ID to an InputObject.
- // This is so the client thread can start unmarshaling
- // the reply and remove it from the out_calls map while the
- // ReaderThread can still obtain the input stream to give
- // new fragments. Only the ReaderThread touches the clientReplyMap,
- // so it doesn't incur synchronization overhead.
-
- public MessageMediator clientRequestMapGet(int requestId)
- {
- return null ;
- }
-
- protected MessageMediator clientReply_1_1;
-
- public void clientReply_1_1_Put(MessageMediator x)
- {
- clientReply_1_1 = x;
- }
-
- public MessageMediator clientReply_1_1_Get()
- {
- return clientReply_1_1;
- }
-
- public void clientReply_1_1_Remove()
- {
- clientReply_1_1 = null;
- }
-
- protected MessageMediator serverRequest_1_1;
-
- public void serverRequest_1_1_Put(MessageMediator x)
- {
- serverRequest_1_1 = x;
- }
-
- public MessageMediator serverRequest_1_1_Get()
- {
- return serverRequest_1_1;
- }
-
- public void serverRequest_1_1_Remove()
- {
- serverRequest_1_1 = null;
- }
-
- protected String getStateString( int state )
- {
- synchronized ( stateEvent ){
- switch (state) {
- case OPENING : return "OPENING" ;
- case ESTABLISHED : return "ESTABLISHED" ;
- case CLOSE_SENT : return "CLOSE_SENT" ;
- case CLOSE_RECVD : return "CLOSE_RECVD" ;
- case ABORT : return "ABORT" ;
- default : return "???" ;
- }
- }
- }
-
- public synchronized boolean isPostInitialContexts() {
- return postInitialContexts;
- }
-
- // Can never be unset...
- public synchronized void setPostInitialContexts(){
- postInitialContexts = true;
- }
-
- /**
- * Wake up the outstanding requests on the connection, and hand them
- * COMM_FAILURE exception with a given minor code.
- *
- * Also, delete connection from connection table and
- * stop the reader thread.
-
- * Note that this should only ever be called by the Reader thread for
- * this connection.
- *
- * @param minor_code The minor code for the COMM_FAILURE major code.
- * @param die Kill the reader thread (this thread) before exiting.
- */
- public void purgeCalls(SystemException systemException,
- boolean die, boolean lockHeld)
- {
- }
-
- /*************************************************************************
- * The following methods are for dealing with Connection cleaning for
- * better scalability of servers in high network load conditions.
- **************************************************************************/
-
- public void sendCloseConnection(GIOPVersion giopVersion)
- throws IOException
- {
- Message msg = MessageBase.createCloseConnection(giopVersion);
- sendHelper(giopVersion, msg);
- }
-
- public void sendMessageError(GIOPVersion giopVersion)
- throws IOException
- {
- Message msg = MessageBase.createMessageError(giopVersion);
- sendHelper(giopVersion, msg);
- }
-
- /**
- * Send a CancelRequest message. This does not lock the connection, so the
- * caller needs to ensure this method is called appropriately.
- * @exception IOException - could be due to abortive connection closure.
- */
- public void sendCancelRequest(GIOPVersion giopVersion, int requestId)
- throws IOException
- {
-
- Message msg = MessageBase.createCancelRequest(giopVersion, requestId);
- sendHelper(giopVersion, msg);
- }
-
- protected void sendHelper(GIOPVersion giopVersion, Message msg)
- throws IOException
- {
- // REVISIT: See comments in CDROutputObject constructor.
- CDROutputObject outputObject =
- new CDROutputObject((ORB)orb, null, giopVersion, this, msg,
- ORBConstants.STREAM_FORMAT_VERSION_1);
- msg.write(outputObject);
-
- outputObject.writeTo(this);
- }
-
- public void sendCancelRequestWithLock(GIOPVersion giopVersion,
- int requestId)
- throws IOException
- {
- writeLock();
- try {
- sendCancelRequest(giopVersion, requestId);
- } finally {
- writeUnlock();
- }
- }
-
- // Begin Code Base methods ---------------------------------------
- //
- // Set this connection's code base IOR. The IOR comes from the
- // SendingContext. This is an optional service context, but all
- // JavaSoft ORBs send it.
- //
- // The set and get methods don't need to be synchronized since the
- // first possible get would occur during reading a valuetype, and
- // that would be after the set.
-
- // Sets this connection's code base IOR. This is done after
- // getting the IOR out of the SendingContext service context.
- // Our ORBs always send this, but it's optional in CORBA.
-
- public final void setCodeBaseIOR(IOR ior) {
- codeBaseServerIOR = ior;
- }
-
- public final IOR getCodeBaseIOR() {
- return codeBaseServerIOR;
- }
-
- // Get a CodeBase stub to use in unmarshaling. The CachedCodeBase
- // won't connect to the remote codebase unless it's necessary.
- public final CodeBase getCodeBase() {
- return cachedCodeBase;
- }
-
- // End Code Base methods -----------------------------------------
-
- // Can be overridden in subclass for different options.
- protected void setSocketOptions(Socket socket)
- {
- }
-
- public String toString()
- {
- synchronized ( stateEvent ){
- return
- "BufferConnectionImpl[" + " "
- + getStateString( state ) + " "
- + shouldUseSelectThreadToWait() + " "
- + shouldUseWorkerThreadForEvent()
- + "]" ;
- }
- }
-
- // Must be public - used in encoding.
- public void dprint(String msg)
- {
- ORBUtility.dprint("SocketOrChannelConnectionImpl", msg);
- }
-
- protected void dprint(String msg, Throwable t)
- {
- dprint(msg);
- t.printStackTrace(System.out);
- }
-}
-
-// End of file.