Return-Path: Delivered-To: apmail-geronimo-scm-archive@www.apache.org Received: (qmail 88160 invoked from network); 28 Oct 2005 02:01:28 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 28 Oct 2005 02:01:28 -0000 Received: (qmail 40087 invoked by uid 500); 28 Oct 2005 02:01:24 -0000 Delivered-To: apmail-geronimo-scm-archive@geronimo.apache.org Received: (qmail 39980 invoked by uid 500); 28 Oct 2005 02:01:23 -0000 Mailing-List: contact scm-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list scm@geronimo.apache.org Received: (qmail 39448 invoked by uid 99); 28 Oct 2005 02:01:18 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 27 Oct 2005 19:01:18 -0700 X-ASF-Spam-Status: No, hits=-8.6 required=10.0 tests=ALL_TRUSTED,DRUGS_PAIN,INFO_TLD,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Thu, 27 Oct 2005 19:01:07 -0700 Received: (qmail 87616 invoked by uid 65534); 28 Oct 2005 02:00:48 -0000 Message-ID: <20051028020048.87614.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: svn commit: r329036 [6/7] - in /geronimo/trunk/sandbox/freeorb: ./ geronimo-orb/ geronimo-orb/src/ geronimo-orb/src/main/ geronimo-orb/src/main/java/ geronimo-orb/src/main/java/org/ geronimo-orb/src/main/java/org/apache/ geronimo-orb/src/main/java/org/... Date: Fri, 28 Oct 2005 02:00:22 -0000 To: scm@geronimo.apache.org From: adc@apache.org X-Mailer: svnmailer-1.0.5 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/InputStreamBase.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/InputStreamBase.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/InputStreamBase.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/InputStreamBase.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,278 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.io; + +import java.io.IOException; + +import org.omg.CORBA.Any; +import org.omg.CORBA.MARSHAL; +import org.omg.CORBA.ORB; +import org.omg.CORBA.SystemException; +import org.omg.CORBA.TypeCode; +import org.omg.CORBA_2_3.portable.ObjectImpl; + +import org.apache.geronimo.corba.AbstractORB; +import org.apache.geronimo.corba.ClientDelegate; +import org.apache.geronimo.corba.PlainObject; +import org.apache.geronimo.corba.ior.InternalIOR; +import org.apache.geronimo.corba.util.IntegerToObjectHashMap; +import org.apache.geronimo.corba.util.IntegerToObjectMap; + + +public abstract class InputStreamBase extends org.omg.CORBA_2_3.portable.InputStream { + + /** + * returns the logical current stream position + */ + public abstract int __stream_position(); + + /** + * Return our ORB implementation + */ + protected abstract AbstractORB __orb(); + + public ORB orb() { + return __orb(); + } + + private IntegerToObjectMap valueMap; + private CharConverter char_converter; + private CharConverter wchar_converter; + + IntegerToObjectMap __get_value_map() { + if (valueMap == null) { + valueMap = new IntegerToObjectHashMap(); + } + return valueMap; + } + + private void __register_value(int pos, Object value) { + __get_value_map().put(pos, value); + } + + private Object __lookup_value(int pos) { + return __get_value_map().get(pos); + } + + + public short read_ushort() { + return read_short(); + } + + public int read_ulong() { + return read_long(); + } + + public final long read_ulonglong() { + return read_longlong(); + } + + public final float read_float() { + return Float.intBitsToFloat(read_long()); + } + + public final double read_double() { + return Double.longBitsToDouble(read_longlong()); + } + + public final boolean read_boolean() { + return read_octet() == 0 ? false : true; + } + + public final char read_char() { + CharConverter converter = __get_char_converter(); + return converter.read_char(this); + } + + protected void __set_char_converter(CharConverter converter) { + this.char_converter = converter; + } + + protected void __set_wchar_converter(CharConverter converter) { + this.wchar_converter = converter; + } + + private CharConverter __get_char_converter() { + if (char_converter == null) { + char_converter = __orb().get_char_converter(getGIOPVersion()); + } + + return char_converter; + } + + public final char read_wchar() { + CharConverter converter = __get_wchar_converter(); + return converter.read_char(this); + } + + private CharConverter __get_wchar_converter() { + if (wchar_converter == null) { + wchar_converter = __orb().get_wchar_converter(getGIOPVersion()); + } + + return wchar_converter; + } + + public final String read_string() { + int tag = read_long(); + int tag_position = __stream_position() - 4; + if (tag == -1) { + int off = read_long(); + int pos = tag_position + off; + return (String) __lookup_value(pos); + } else { + int pos = tag_position; + CharConverter converter = __get_char_converter(); + String value = converter.read_string(this, tag); + __register_value(pos, value); + return value; + } + } + + + public final String read_wstring() { + int tag = read_long(); + int tag_position = __stream_position() - 4; + if (tag == -1) { + int off = read_long(); + int pos = tag_position + off; + return (String) __lookup_value(pos); + } else { + int pos = tag_position; + CharConverter converter = __get_wchar_converter(); + String value = converter.read_string(this, tag); + __register_value(pos, value); + return value; + } + } + + public final void read_boolean_array(boolean[] value, int offset, int length) { + for (int i = 0; i < length; i++) { + value[i + offset] = read_boolean(); + } + } + + public final void read_char_array(char[] value, int offset, int length) { + for (int i = 0; i < length; i++) { + value[i + offset] = read_char(); + } + } + + public final void read_wchar_array(char[] value, int offset, int length) { + for (int i = 0; i < length; i++) { + value[i + offset] = read_wchar(); + } + } + + public final void read_short_array(short[] value, int offset, int length) { + for (int i = 0; i < length; i++) { + value[i + offset] = read_short(); + } + } + + public final void read_ushort_array(short[] value, int offset, int length) { + read_short_array(value, offset, length); + } + + public final void read_long_array(int[] value, int offset, int length) { + for (int i = 0; i < length; i++) { + value[i + offset] = read_long(); + } + } + + public final void read_ulong_array(int[] value, int offset, int length) { + read_long_array(value, offset, length); + } + + public final void read_longlong_array(long[] value, int offset, int length) { + for (int i = 0; i < length; i++) { + value[i + offset] = read_longlong(); + } + } + + public final void read_ulonglong_array(long[] value, int offset, int length) { + read_longlong_array(value, offset, length); + } + + public final void read_float_array(float[] value, int offset, int length) { + for (int i = 0; i < length; i++) { + value[i + offset] = read_float(); + } + } + + public final void read_double_array(double[] value, int offset, int length) { + for (int i = 0; i < length; i++) { + value[i + offset] = read_double(); + } + } + + public final void read_any_array(org.omg.CORBA.Any[] value, int offset, + int length) + { + for (int i = 0; i < length; i++) { + value[i + offset] = read_any(); + } + } + + public final Any read_any() { + org.omg.CORBA.Any any = new org.freeorb.AnyImpl(__orb()); + any.read_value(this, read_TypeCode()); + return any; + } + + public final TypeCode read_TypeCode() { + return org.freeorb.TypeCodeUtil.read(this, this, new java.util.HashMap()); + } + + public void read_octet_array(byte[] data, int off, int len) { + for (int i = 0; i < len; i++) { + data[i + off] = read_octet(); + } + } + + public final org.omg.CORBA.Object read_Object() { + InternalIOR ior = InternalIOR.read(__orb(), this); + ClientDelegate del = new ClientDelegate(ior); + ObjectImpl result = new PlainObject(); + result._set_delegate(del); + return result; + } + + public EncapsulationInputStream __open_encapsulation() { + int len = read_long(); + byte[] data = new byte[len]; + read_octet_array(data, 0, len); + return new EncapsulationInputStream(__orb(), data); + } + + public void __close_encapsulation(EncapsulationInputStream encap) { + + } + + protected abstract GIOPVersion getGIOPVersion(); + + protected SystemException translate_exception(IOException e) { + SystemException result; + + result = new MARSHAL(e.getMessage()); + result.initCause(e); + + return result; + } + + +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/MessageHeader.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/MessageHeader.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/MessageHeader.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/MessageHeader.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,43 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.io; + + +public class MessageHeader { + + private int kind; + private int requestID; + private GIOPVersion version; + + public int getMessageKind() { + return kind; + } + + public int getRequestID() { + return requestID; + } + + public boolean getFragmentsFollow() { + // TODO Auto-generated method stub + return false; + } + + public GIOPVersion getGIOPVersion() { + return version; + } + +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/MinorCodes.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/MinorCodes.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/MinorCodes.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/MinorCodes.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,28 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.io; + +public abstract class MinorCodes { + + public static final int FREEORB_ID = 0x12345 << 12; + public static final int BAD_MAGIC = 1 | FREEORB_ID; + public static final int BAD_MAJOR = 2 | FREEORB_ID; + public static final int BAD_MINOR = 3 | FREEORB_ID; + public static final int END_OF_ENCAPSULATION = 4 | FREEORB_ID; + + +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/OutputStreamBase.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/OutputStreamBase.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/OutputStreamBase.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/OutputStreamBase.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,346 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.io; + +import java.io.IOException; +import java.io.Serializable; +import java.util.HashMap; + +import org.omg.CORBA.Any; +import org.omg.CORBA.LocalObject; +import org.omg.CORBA.NO_RESOURCES; +import org.omg.CORBA.ORB; +import org.omg.CORBA.Object; +import org.omg.CORBA.SystemException; +import org.omg.CORBA.TypeCode; +import org.omg.CORBA.portable.InputStream; +import org.omg.CORBA_2_3.portable.OutputStream; + +import org.apache.geronimo.corba.AbstractORB; +import org.apache.geronimo.corba.ClientDelegate; +import org.apache.geronimo.corba.TypeCodeUtil; + + +public abstract class OutputStreamBase extends OutputStream implements + org.omg.CORBA.DataOutputStream +{ + + private CharConverter char_writer; + + private CharConverter wchar_writer; + + private ValueWriter value_writer; + + public abstract AbstractORB __orb(); + + public ORB orb() { + return __orb(); + } + + public InputStream create_input_stream() { + throw new NO_RESOURCES(); + } + + public void write_boolean(boolean value) { + write_octet(value ? (byte) 1 : (byte) 0); + } + + public void write_char(char value) { + CharConverter char_converter = __get_char_converter(); + char_converter.write_char(this, value); + } + + private CharConverter __get_char_converter() { + if (char_writer == null) { + char_writer = __orb().get_char_converter(getGIOPVersion()); + } + return char_writer; + } + + private CharConverter __get_wchar_converter() { + if (wchar_writer == null) { + wchar_writer = __orb().get_char_converter(getGIOPVersion()); + } + return wchar_writer; + } + + private GIOPVersion getGIOPVersion() { + // TODO Auto-generated method stub + return null; + } + + public void write(int value) throws IOException { + try { + write_octet((byte) value); + } + catch (SystemException e) { + IOException ex = new IOException(); + ex.initCause(e); + throw ex; + } + } + + public void write_wchar(char value) { + CharConverter char_converter = __get_wchar_converter(); + char_converter.write_char(this, value); + } + + public void write_ushort(short value) { + write_short(value); + } + + public void write_ulong(int value) { + write_long(value); + } + + public void write_ulonglong(long value) { + write_longlong(value); + } + + public void write_float(float value) { + write_long(Float.floatToIntBits(value)); + } + + public void write_double(double value) { + write_longlong(Double.doubleToLongBits(value)); + } + + public void write_string(String value) { + __get_char_converter().write_string(this, value); + } + + public void write_wstring(String value) { + __get_wchar_converter().write_string(this, value); + } + + public void write_boolean_array(boolean[] value, int offset, int length) { + for (int i = 0; i < length; i++) { + write_boolean(value[offset + i]); + } + } + + public void write_char_array(char[] value, int offset, int length) { + for (int i = offset; i < offset + length; i++) { + write_char(value[i]); + } + } + + public void write_wchar_array(char[] value, int offset, int length) { + for (int i = offset; i < offset + length; i++) { + write_wchar(value[i]); + } + } + + public void write_octet_array(byte[] value, int offset, int length) { + try { + write(value, offset, length); + } + catch (IOException e) { + throw translate_exception(e); + } + } + + public void write_short_array(short[] value, int offset, int length) { + for (int i = offset; i < offset + length; i++) { + write_short(value[i]); + } + } + + public void write_ushort_array(short[] value, int offset, int length) { + write_short_array(value, offset, length); + } + + public void write_long_array(int[] value, int offset, int length) { + for (int i = offset; i < offset + length; i++) { + write_long(value[i]); + } + } + + public void write_ulong_array(int[] value, int offset, int length) { + write_long_array(value, offset, length); + } + + public void write_longlong_array(long[] value, int offset, int length) { + for (int i = offset; i < offset + length; i++) { + write_longlong(value[i]); + } + } + + public void write_ulonglong_array(long[] value, int offset, int length) { + write_longlong_array(value, offset, length); + } + + public void write_float_array(float[] value, int offset, int length) { + for (int i = offset; i < offset + length; i++) { + write_float(value[i]); + } + } + + public void write_double_array(double[] value, int offset, int length) { + for (int i = offset; i < offset + length; i++) { + write_double(value[i]); + } + } + + public void write_Object(Object value) { + if (value == null) { + // write null IOR + write_string(""); + write_ulong(0); + } else { + if (value instanceof LocalObject) + throw new org.omg.CORBA.MARSHAL("cannot marshal local object"); + + ClientDelegate delegate = (ClientDelegate) ((org.omg.CORBA.portable.ObjectImpl) value) + ._get_delegate(); + + delegate.getInternalIOR().write(this); + } + } + + public void write_TypeCode(TypeCode value) { + + if (value == null) { + throw new org.omg.CORBA.BAD_TYPECODE("null typecode"); + } + + try { + TypeCodeUtil.write(this, value, new HashMap()); + + } + catch (org.omg.CORBA.TypeCodePackage.BadKind ex) { + throw new org.omg.CORBA.BAD_TYPECODE(ex.getMessage()); + + } + catch (org.omg.CORBA.TypeCodePackage.Bounds ex) { + throw new org.omg.CORBA.BAD_TYPECODE(ex.getMessage()); + } + } + + public void write_any(Any value) { + write_TypeCode(value.type()); + value.write_value(this); + } + + protected SystemException translate_exception(IOException e) { + // TODO Auto-generated method stub + return null; + } + + public abstract int __stream_position(); + + // + // org.omg.CORBA_2_3.portable.OutputStream + // + + ValueWriter getValueWriter() { + if (value_writer == null) { + value_writer = new ValueWriter(this); + } + return value_writer; + } + + public void write_value(java.io.Serializable value) { + getValueWriter().writeValue(value, (String) null); + } + + public void write_value(java.io.Serializable value, String id) { + getValueWriter().writeValue(value, id); + } + + public void write_value(java.io.Serializable value, Class clz) { + getValueWriter().writeValue(value, (String) null); + } + + public void write_value(java.io.Serializable value, + org.omg.CORBA.portable.BoxedValueHelper helper) + { + getValueWriter().writeValue(value, helper); + } + + public void write_abstract_interface(java.lang.Object value) { + if (value == null) { + write_boolean(false); + write_long(0); + + } else if (value instanceof org.omg.CORBA.Object) { + write_boolean(true); + write_Object((org.omg.CORBA.Object) value); + + } else if (value instanceof java.io.Serializable) { + + // + // We select on Serializable first, since CORBA stubs are + // serializable, an that allows RMI/CORBA stubs to be + // passed around without requiring narrow. + // + + write_boolean(false); + write_value((Serializable) value); + + } else { + throw new org.omg.CORBA.MARSHAL("not a valid abstract object: " + + value.getClass().getName()); + } + } + + // + // DataOutputStream + // + + public String[] _truncatable_ids() { + throw new org.omg.CORBA.NO_IMPLEMENT(); + } + + public void write_Abstract(java.lang.Object value) { + write_abstract_interface(value); + } + + public void write_Value(java.io.Serializable value) { + write_value(value); + } + + public void write_any_array(org.omg.CORBA.Any[] anies, int off, int len) { + for (int i = 0; i < len; i++) { + write_any(anies[i + off]); + } + } + + // align output to the given size + public abstract void align(int i); + + public void __fatal(String string) { + __orb().fatal(string); + } + + public javax.rmi.CORBA.ValueHandler getValueHandler() { + return __orb().getValueHandler(); + } + + public EncapsulationOutputStream __open_encapsulation() { + return new EncapsulationOutputStream(__orb()); + } + + public void __close_encapsulation(EncapsulationOutputStream eout) { + try { + eout.writeTo(this); + } + catch (IOException e) { + throw translate_exception(e); + } + } +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/SSLClientConnectionFactory.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/SSLClientConnectionFactory.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/SSLClientConnectionFactory.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/SSLClientConnectionFactory.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,31 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.io; + +import org.apache.geronimo.corba.ior.IIOPTransportSpec; + + +public class SSLClientConnectionFactory extends TCPClientConnectionFactory + implements ClientConnectionFactory +{ + + public SSLClientConnectionFactory(IIOPTransportSpec transport) { + super(transport); + // TODO Auto-generated constructor stub + } + +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/TCPClientConnectionFactory.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/TCPClientConnectionFactory.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/TCPClientConnectionFactory.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/TCPClientConnectionFactory.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,40 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.io; + +import org.apache.geronimo.corba.ior.IIOPTransportSpec; + + +public class TCPClientConnectionFactory implements ClientConnectionFactory { + + private final IIOPTransportSpec transport; + + public TCPClientConnectionFactory(IIOPTransportSpec transport) { + this.transport = transport; + } + + public ClientConnection getConnection() { + // TODO Auto-generated method stub + return null; + } + + public IIOPTransportSpec getTransportSpec() { + return transport; + } + + +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/TLSClientConnectionFactory.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/TLSClientConnectionFactory.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/TLSClientConnectionFactory.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/TLSClientConnectionFactory.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,31 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.io; + +import org.apache.geronimo.corba.ior.IIOPTransportSpec; + + +public class TLSClientConnectionFactory extends SSLClientConnectionFactory + implements ClientConnectionFactory +{ + + public TLSClientConnectionFactory(IIOPTransportSpec transport) { + super(transport); + // TODO Auto-generated constructor stub + } + +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/ValueWriter.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/ValueWriter.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/ValueWriter.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/io/ValueWriter.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,510 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.io; + +import java.io.IOException; +import java.io.Serializable; +import java.util.HashMap; +import java.util.IdentityHashMap; +import java.util.Map; +import javax.rmi.CORBA.ValueHandler; + +import org.omg.CORBA.CustomMarshal; +import org.omg.CORBA.portable.BoxedValueHelper; +import org.omg.CORBA.portable.StreamableValue; +import org.omg.CORBA.portable.ValueBase; + +import org.apache.geronimo.corba.channel.MarkHandler; +import org.apache.geronimo.corba.channel.OutputChannelMarker; + + +/** + * This class is not done. + */ +public class ValueWriter { + + static final int TAG_VALUE = 0x7fffff00; + + static final int TAG_CODEBASE_PRESENT = 1; + + static final int TAG_SINGLE_ID_PRESENT = 2; + + static final int TAG_MULTI_ID_PRESENT = 6; + + static final int TAG_CHUNKED = 8; + + static String[] EMPTY_SARR = new String[0]; + + private boolean isSet(int value, int bits) { + return (value & bits) == bits; + } + + private Map instanceTable = new IdentityHashMap(); + + /** + * indirection table for value headers �15.3.4.3 + */ + private Map valueInfoTable = new HashMap(); + + private final OutputStreamBase out; + + private OutputChannelMarker chunkMark; + + private boolean currentValueIsChunked; + + private int chunkingLevel; + + private int startPosOfCurrentChunk; + + private int lastEndTagPos; + + private ValueHandler valueHandler; + + private int valueOfLastEndTag; + + public ValueWriter(OutputStreamBase out) { + this.out = out; + } + + static class IDArray implements Serializable { + + String[] ids; + + int hashCode; + + IDArray(String[] ids) { + this.ids = ids; + + hashCode = 0; + for (int i = 0; i < ids.length; i++) + hashCode ^= ids[i].hashCode(); + } + + public int hashCode() { + return hashCode; + } + + public boolean equals(Object other) { + + if (!(other instanceof IDArray) || other == null) + return false; + + return java.util.Arrays.equals(ids, ((IDArray) other).ids); + } + } + + public void writeValue(java.io.Serializable value, String repositoryID) { + if (value == null) { + out.write_long(0); + return; + } + + if (write_indirection(instanceTable, value)) { + return; + } + + boolean isStreamable = (value instanceof StreamableValue); + boolean isCustom = (value instanceof CustomMarshal); + + if (!(isStreamable || isCustom)) { + BoxedValueHelper helper = getHelper(value, null); + if (helper == null) { + writeRMIValue(value, repositoryID); + } else { + writeValue(value, helper); + } + return; + } + + ValueBase base = (ValueBase) value; + String[] ids = base._truncatable_ids(); + String valueID = ids[0]; + boolean isTruncatable = ids.length > 1; + + boolean sameType = false; // (valueID.equals (repositoryID)); + + boolean isChunked = (isCustom | (isTruncatable & !sameType)); + + int tag; + + if (!sameType || (chunkingLevel > 1 && isTruncatable)) { + + if (isTruncatable) { + tag = TAG_VALUE | TAG_MULTI_ID_PRESENT; + + } else { + tag = TAG_VALUE | TAG_SINGLE_ID_PRESENT; + + if (ids.length > 1) { + ids = new String[1]; + ids[0] = valueID; + } + } + } else { + tag = TAG_VALUE; + ids = EMPTY_SARR; + } + + // System.out.println ("write_value (1) "+repositoryID); + + int pos = startValue(tag, ids, null, isChunked); + instanceTable.put(value, new Integer(pos)); + + if (isStreamable) { + ((StreamableValue) value)._write(out); + } else { + ((CustomMarshal) value).marshal(out); + } + + endValue(); + } + + private void writeRMIValue(java.io.Serializable value, String id) { + + if (value instanceof java.lang.String) { + org.omg.CORBA.WStringValueHelper.write(out, (String) value); + return; + } + + if (valueHandler == null) { + valueHandler = out.getValueHandler(); + } + + // + // Needs writeReplace? + // + java.io.Serializable repValue = valueHandler.writeReplace(value); + + // + // Repeat base checks if value was replaced + // + if (value != repValue) { + if (repValue == null) { + out.write_long(0); + return; + } + + if (write_indirection(instanceTable, repValue)) { + return; + } + + value = repValue; + } + + // + // Get the class object for the value + // + Class clz = value.getClass(); + + // + // 0x7fffff00 + SINGLE_ID + // + int tag = TAG_VALUE | TAG_SINGLE_ID_PRESENT; + + String codebase = javax.rmi.CORBA.Util.getCodebase(clz); + if (codebase != null && codebase.length() != 0) + tag |= TAG_CODEBASE_PRESENT; + + // + // Determine the repository ID + // + String[] ids = new String[1]; + ids[0] = valueHandler.getRMIRepositoryID(clz); + + // + // Determine if chunked encoding is needed + // + // TODO: this was always true in Trifork codebase, find out why! + + boolean isChunked = valueHandler.isCustomMarshaled(clz); + + // System.out.println ("write_value (2) "+ids[0]); + + int pos = startValue(tag, ids, codebase, isChunked); + instanceTable.put(value, new Integer(pos)); + valueHandler.writeValue(out, value); + endValue(); + } + + public void writeValue(Serializable value, BoxedValueHelper helper) { + + if (value == null) { + out.write_long(0); + return; + } + + if (write_indirection(instanceTable, value)) { + return; + } + + if (helper == null) { + helper = getHelper(value, null); + } + + if (helper == null) + throw new org.omg.CORBA.MARSHAL("Can't locate helper"); + + String[] ids = new String[1]; + ids[0] = helper.get_id(); + int tag = TAG_VALUE | TAG_SINGLE_ID_PRESENT; + + // System.out.println ("write_value (3) "+ids[0]); + + int pos = startValue(tag, ids, null, false); + instanceTable.put(value, new Integer(pos)); + helper.write_value(out, value); + endValue(); + + } + + private int startValue(int tag, String[] ids, String codebase, + boolean forceChunk) + { + + currentValueIsChunked |= forceChunk; + + if (currentValueIsChunked) { + tag |= TAG_CHUNKED; + chunkingLevel += 1; + + // + // Since chunks cannot be nested, we need to finish off + // the previous chunk before we can start... + // + if ((chunkingLevel > 1) && (chunkMark != null)) + endChunk(); + + // TODO: understand why we need to write a chunk end here. + // the next thing written to the output stream is a value + // tag, and that should be fine as an chunk-end-marker + } + + out.write_long(tag); + int startPos = out.__stream_position() - 4; + + if (isSet(tag, TAG_CODEBASE_PRESENT)) { + write_value_metadata_string(codebase); + } + + if (isSet(tag, TAG_MULTI_ID_PRESENT)) { + + IDArray idlist = new IDArray(ids); + if (!write_indirection(valueInfoTable, idlist)) { + out.align(4); + valueInfoTable + .put(idlist, new Integer(out.__stream_position())); + out.write_long(ids.length); + + for (int i = 0; i < ids.length; i++) { + write_value_metadata_string(ids[i]); + } + } + + } else if (isSet(tag, TAG_SINGLE_ID_PRESENT)) { + + write_value_metadata_string(ids[0]); + } + + if (currentValueIsChunked) { + + // + // start the next chunk as soon as anything is written + // to the stream + // + lastEndTagPos = 0; + + startChunk(); + } + + return startPos; + } + + void endValue() { + + if (!currentValueIsChunked) + return; + + // + // We need to make sure no chunks are started in the middle of + // writing the end tag, and if we need to have a chunk here. + // + + if (false && lastEndTagPos > 0 && out.__stream_position() == lastEndTagPos + 4) { + + // if we just terminated the previous value (which must + // then have been nested inside the current value), then + // we simply step back one and write the new end tag. + + valueOfLastEndTag++; + + // + // TODO: figure a way to rewrite the last end-tag + buf.pos = lastEndTagPos; + + if (log.isDebugEnabled()) { + log.debug("rewriting endTag" + valueOfLastEndTag + + ", chunkingLevel=" + chunkingLevel); + } + + out.write_long(valueOfLastEndTag); + + } else { + + // end the current chunk + endChunk(); + + // + // Write the end tag and remember where it is + // + valueOfLastEndTag = -chunkingLevel; + + out.write_long(valueOfLastEndTag); + if (chunkingLevel > 1) + lastEndTagPos = out.__stream_position() - 4; + } + + // + // At the end of a chunked value, we must have ended the chunk + // inside the value, i.e., right after a value we must never + // be inside a chunk. + // + if (startPosOfCurrentChunk != 0) + out.__fatal("startPosOfCurrentChunk is " + startPosOfCurrentChunk + + "; there should be no chunk here!"); + + if (chunkingLevel == 1) { + currentValueIsChunked = false; + lastEndTagPos = 0; + valueOfLastEndTag = 0; + } + + chunkingLevel -= 1; + } + + private void write_value_metadata_string(String string) { + if (!write_indirection(valueInfoTable, string)) { + out.align(4); + valueInfoTable.put(string, new Integer(out.__stream_position())); + out.write_string(string); + } + } + + MarkHandler chunkHandler = new MarkHandler() { + public void bufferFull(OutputChannelMarker state) throws IOException { + + // end the chunk by writing the size at the start of the chunk. + // endChunk will call state.release() + endChunk(); + + // start a new chunk here // + // TODO: outer mark handler needs to be run first... + startChunk(); + } + }; + + private void startChunk() { + if (currentValueIsChunked == false) + out.__fatal("not chunked"); + + out.align(4); + chunkMark = out.mark(chunkHandler); + startPosOfCurrentChunk = out.__stream_position(); + out.write_long(0); + } + + private void endChunk() { + if (currentValueIsChunked == false) + out.__fatal("not chunked"); + + // compute chunk size + int size = out.__stream_position() - startPosOfCurrentChunk; + + // TODO: align chunk size? That which follows a chunk must + // be a 4-byte integer (chunk end marker) so we will do the + // alignment... + size += out.computeAlignment(size, 4); + + try { + chunkMark.putInt(0, size); + } + catch (IOException e) { + throw out.translate_exception(e); + } + + chunkMark.release(); + chunkMark = null; + } + + private boolean write_indirection(Map table, Serializable value) { + Integer pos = (Integer) table.get(value); + if (pos == null) { + return false; + } + + out.write_long(-1); + int off = pos.intValue() - out.__stream_position(); + out.write_long(off); + + return true; + } + + private BoxedValueHelper getHelper(Serializable value, + String id) + { + Class helper = null; + + // TODO: Cache this info somewhere (contextclassloader)? + + try { + String name = value.getClass().getName() + "Helper"; + Class c = Util.classForName(name); + if (BoxedValueHelper.class.isAssignableFrom(c)) + helper = c; + } + catch (ClassNotFoundException ex) { + // ignore // + } + + if (helper == null && id != null) { + try { + String name = Util.idToClassName(id) + "Helper"; + helper = Util.classForName(name); + } + catch (ClassNotFoundException ex) { + // ignore // + } + } + + if (helper != null) { + try { + return (BoxedValueHelper) helper.newInstance(); + } + catch (ClassCastException ex) { + // ignore // + } + catch (InstantiationException ex) { + // ignore // + } + catch (IllegalAccessException ex) { + // ignore // + } + } + + return null; + } + +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/AlternateIIOPComponent.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/AlternateIIOPComponent.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/AlternateIIOPComponent.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/AlternateIIOPComponent.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,86 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.ior; + +import java.net.InetAddress; +import java.net.UnknownHostException; + +import org.omg.CORBA.portable.OutputStream; +import org.omg.IIOP.Version; +import org.omg.IOP.TAG_ALTERNATE_IIOP_ADDRESS; + +import org.apache.geronimo.corba.AbstractORB; +import org.apache.geronimo.corba.io.EncapsulationInputStream; + + +public class AlternateIIOPComponent extends Component { + + private IIOPTransportSpec saddr; + private final AbstractORB orb; + private final String host; + private final int port; + private InetAddress addr; + + public AlternateIIOPComponent(AbstractORB orb, String host, int port) { + this.orb = orb; + this.host = host; + this.port = port; + } + + public int tag() { + return TAG_ALTERNATE_IIOP_ADDRESS.value; + } + + protected void write_content(OutputStream eo) { + eo.write_string(host); + eo.write_short((short) port); + } + + public IIOPTransportSpec getInetTransport() throws UnknownHostException { + if (saddr == null) { + saddr = new IIOPTransportSpec(getVersion(), getAddress(), getPort()); + } + return saddr; + } + + private Version getVersion() { + return orb.getIIOPVersion(); + } + + private InetAddress getAddress() throws UnknownHostException { + if (addr == null) { + addr = orb.getAddress(getHost()); + } + return addr; + } + + private String getHost() { + return host; + } + + private int getPort() { + return port; + } + + public static Component read(AbstractORB orb, byte[] data) { + EncapsulationInputStream in = new EncapsulationInputStream(orb, data); + String host = in.read_string(); + int port = in.read_short() & 0xffff; + return new AlternateIIOPComponent(orb, host, port); + } + +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/CodeSetsComponent.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/CodeSetsComponent.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/CodeSetsComponent.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/CodeSetsComponent.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,50 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.ior; + +import org.omg.CONV_FRAME.CodeSetComponentInfo; +import org.omg.CONV_FRAME.CodeSetComponentInfoHelper; +import org.omg.CORBA.portable.OutputStream; +import org.omg.CORBA_2_3.portable.InputStream; +import org.omg.IOP.TAG_CODE_SETS; + +import org.apache.geronimo.corba.AbstractORB; +import org.apache.geronimo.corba.io.EncapsulationInputStream; + + +public class CodeSetsComponent extends Component { + + private final CodeSetComponentInfo info; + + public CodeSetsComponent(CodeSetComponentInfo info) { + this.info = info; + } + + public int tag() { + return TAG_CODE_SETS.value; + } + + public static Component read(AbstractORB orb, byte[] data) { + InputStream eis = new EncapsulationInputStream(orb, data); + return new CodeSetsComponent(CodeSetComponentInfoHelper.read(eis)); + } + + protected void write_content(OutputStream eo) { + CodeSetComponentInfoHelper.write(eo, info); + } + +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/Component.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/Component.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/Component.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/Component.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,50 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.ior; + +import org.omg.CSIIOP.TAG_CSI_SEC_MECH_LIST; +import org.omg.IOP.TAG_ALTERNATE_IIOP_ADDRESS; +import org.omg.IOP.TAG_CODE_SETS; + +import org.apache.geronimo.corba.AbstractORB; + + +public abstract class Component extends TaggedValue { + + + public static Component read(AbstractORB orb, int tag, byte[] data) { + + switch (tag) { + case TAG_CODE_SETS.value: + return CodeSetsComponent.read(orb, data); + + case org.omg.IOP.TAG_ORB_TYPE.value: + return ORBTypeComponent.read(orb, data); + + case TAG_ALTERNATE_IIOP_ADDRESS.value: + return AlternateIIOPComponent.read(orb, data); + + case TAG_CSI_SEC_MECH_LIST.value: + return SecurityMechanismListComponent.read(orb, data); + + default: + return new UnknownComponent(tag, data); + } + } + + +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/CompoundSecurityMechanism.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/CompoundSecurityMechanism.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/CompoundSecurityMechanism.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/CompoundSecurityMechanism.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,70 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.ior; + +import java.net.InetAddress; + +import org.omg.CSIIOP.CompoundSecMech; +import org.omg.CSIIOP.TAG_TLS_SEC_TRANS; +import org.omg.IIOP.Version; +import org.omg.SSLIOP.TAG_SSL_SEC_TRANS; + +import org.apache.geronimo.corba.AbstractORB; + + +public class CompoundSecurityMechanism { + + private final CompoundSecMech mech; + + private final AbstractORB orb; + + private IIOPTransportSpec[] transport; + + public CompoundSecurityMechanism(AbstractORB orb, CompoundSecMech mech) { + this.orb = orb; + this.mech = mech; + } + + public int getTransportTag() { + return mech.transport_mech.tag; + } + + public IIOPTransportSpec[] getTransports(InetAddress profileAddress, Version version) { + if (transport == null) { + switch (getTransportTag()) { + case TAG_TLS_SEC_TRANS.value: { + transport = TLSSecureTransport.read(orb, + mech.transport_mech.component_data, this); + break; + } + case TAG_SSL_SEC_TRANS.value: { + if (profileAddress != null) { + transport = new IIOPTransportSpec[]{SSLSecureTransport.read( + orb, profileAddress, version, + mech.transport_mech.component_data, this)}; + break; + } + } + default: + transport = new IIOPTransportSpec[0]; + } + } + + return transport; + } + +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/GIOPTransportSpec.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/GIOPTransportSpec.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/GIOPTransportSpec.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/GIOPTransportSpec.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,25 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.ior; + +import org.apache.geronimo.corba.io.GIOPVersion; + + +public abstract class GIOPTransportSpec { + + abstract GIOPVersion getGIOPVersion(); +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/IIOPProfile.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/IIOPProfile.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/IIOPProfile.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/IIOPProfile.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,145 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.ior; + +import java.net.InetAddress; +import java.net.UnknownHostException; + +import org.omg.CORBA.portable.OutputStream; +import org.omg.IIOP.ProfileBody_1_0; +import org.omg.IIOP.ProfileBody_1_0Helper; +import org.omg.IIOP.Version; +import org.omg.IOP.TAG_INTERNET_IOP; +import org.omg.IOP.TaggedComponent; +import org.omg.IOP.TaggedComponentSeqHelper; + +import org.apache.geronimo.corba.AbstractORB; +import org.apache.geronimo.corba.io.EncapsulationInputStream; +import org.apache.geronimo.corba.io.EncapsulationOutputStream; + + +public class IIOPProfile extends Profile { + + byte[] bytes; + + ProfileBody_1_0 body; + TaggedComponent[] tagged_components; + Component[] components; + private final AbstractORB orb; + private IIOPTransportSpec saddr; + + IIOPProfile(AbstractORB orb) { + super(); + this.orb = orb; + } + + public int tag() { + return TAG_INTERNET_IOP.value; + } + + public Version getVersion() { + return body.iiop_version; + } + + public byte[] getObjectKey() { + return body.object_key; + } + + public int getComponentCount() { + if (tagged_components == null) { + return 0; + } else { + return tagged_components.length; + } + } + + public int getTag(int idx) { + return tagged_components[idx].tag; + } + + public TaggedComponent getTaggedComponent(int idx) { + return tagged_components[idx]; + } + + public Component getComponent(int idx) { + + if (components == null) { + components = new Component[getComponentCount()]; + } + + if (components[idx] == null) { + components[idx] = Component.read(orb, tagged_components[idx].tag, + tagged_components[idx].component_data); + } + + return components[idx]; + } + + + public static Profile read(AbstractORB orb, byte[] data) { + + EncapsulationInputStream ein = new EncapsulationInputStream(orb, data); + IIOPProfile result = new IIOPProfile(orb); + result.body = ProfileBody_1_0Helper.read(ein); + if (result.body.iiop_version.major == 1 + && result.body.iiop_version.minor >= 1) + { + result.tagged_components = TaggedComponentSeqHelper.read(ein); + } + + result.bytes = data; + return result; + } + + public IIOPTransportSpec getInetTransport() throws UnknownHostException { + if (saddr == null) { + saddr = new IIOPTransportSpec(getVersion(), getAddress(), getPort()); + } + return saddr; + } + + public InetAddress getAddress() throws UnknownHostException { + return orb.getAddress(body.host); + } + + public String getHost() { + return body.host; + } + + public int getPort() { + return (body.port & 0xffff); + } + + protected void write_content(OutputStream eo) { + ProfileBody_1_0Helper.write(eo, body); + if (body.iiop_version.major == 1 && body.iiop_version.minor > 0) { + TaggedComponentSeqHelper.write(eo, tagged_components); + } + } + + protected byte[] get_encapsulation_bytes() { + // TODO Auto-generated method stub + return null; + } + + protected void write_content(EncapsulationOutputStream eo) { + // TODO Auto-generated method stub + + } + + +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/IIOPTransportSpec.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/IIOPTransportSpec.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/IIOPTransportSpec.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/IIOPTransportSpec.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,110 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.ior; + +import java.net.InetAddress; +import java.net.InetSocketAddress; + +import org.omg.IIOP.Version; + +import org.apache.geronimo.corba.io.GIOPVersion; + + +public class IIOPTransportSpec extends GIOPTransportSpec { + + public static final String PROTO_TCP = "tcp"; + public static final String PROTO_SSL = "ssl"; + public static final String PROTO_TLS = "tls"; + + InetSocketAddress addr; + private CompoundSecurityMechanism securityMechanism; + private final Version version; + + IIOPTransportSpec(org.omg.IIOP.Version version, InetSocketAddress addr) { + this.version = version; + this.addr = addr; + } + + public IIOPTransportSpec(org.omg.IIOP.Version version, InetSocketAddress addr2, CompoundSecurityMechanism mechanism) { + this(version, addr2); + securityMechanism = mechanism; + } + + public IIOPTransportSpec(org.omg.IIOP.Version version, InetAddress address, int port) { + this(version, new InetSocketAddress(address, port)); + } + + public InetAddress getAddress() { + return addr.getAddress(); + } + + public boolean equals(Object other) { + if (other instanceof IIOPTransportSpec) { + IIOPTransportSpec io = (IIOPTransportSpec) other; + + if (!getAddress().equals(io.getAddress())) { + return false; + } + if (!protocol().equals(io.protocol())) { + return false; + } + if (getIIOPVersion().major != io.getIIOPVersion().major) { + return false; + } + if (getIIOPVersion().minor != io.getIIOPVersion().minor) { + return false; + } + + return true; + } + + return false; + } + + public int hashCode() { + return getAddress().hashCode() + protocol().hashCode() + getIIOPVersion().minor; + } + + public GIOPVersion getGIOPVersion() { + return GIOPVersion.get(getIIOPVersion()); + } + + private Version getIIOPVersion() { + return version; + } + + public String protocol() { + return PROTO_TCP; + } + + public void setSecurityMechanism(CompoundSecurityMechanism mech) { + this.securityMechanism = mech; + } + + public CompoundSecurityMechanism getSecurityMechanism() { + return securityMechanism; + } + + public int getPort() { + return addr.getPort(); + } + + public InetSocketAddress getSocketAddress() { + return addr; + } + +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/InetTransport.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/InetTransport.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/InetTransport.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/InetTransport.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,64 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.ior; + +import java.net.InetAddress; +import java.net.InetSocketAddress; + + +public class InetTransport { + + InetSocketAddress addr; + private CompoundSecurityMechanism securityMechanism; + + InetTransport(InetSocketAddress addr) { + this.addr = addr; + } + + public InetTransport(InetSocketAddress addr2, CompoundSecurityMechanism mechanism) { + this(addr2); + securityMechanism = mechanism; + } + + public InetTransport(InetAddress address, int port) { + this(new InetSocketAddress(address, port)); + } + + public InetAddress getAddress() { + return addr.getAddress(); + } + + public String protocol() { + return "tcp"; + } + + public void setSecurityMechanism(CompoundSecurityMechanism mech) { + this.securityMechanism = mech; + } + + public CompoundSecurityMechanism getSecurityMechanism() { + return securityMechanism; + } + + public int getPort() { + return addr.getPort(); + } + + public InetSocketAddress getSocketAddress() { + return addr; + } +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/InternalIOR.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/InternalIOR.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/InternalIOR.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/InternalIOR.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,95 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.ior; + +import org.omg.CORBA.NO_IMPLEMENT; +import org.omg.CORBA.Object; +import org.omg.CORBA.portable.Delegate; +import org.omg.CORBA.portable.OutputStream; +import org.omg.CORBA_2_3.portable.InputStream; +import org.omg.CORBA_2_3.portable.ObjectImpl; +import org.omg.IOP.IOR; +import org.omg.IOP.IORHelper; + +import org.apache.geronimo.corba.AbstractORB; +import org.apache.geronimo.corba.ClientDelegate; + + +public class InternalIOR { + + static final boolean DIRECT = true; + + IOR ior; + + Profile[] profiles; + + public final AbstractORB orb; + + public InternalIOR(AbstractORB orb, IOR ior) { + this.orb = orb; + this.ior = ior; + } + + public static InternalIOR read(AbstractORB orb, InputStream in) { + return new InternalIOR(orb, IORHelper.read(in)); + } + + public int getProfileCount() { + return ior.profiles.length; + } + + + public Profile getProfile(int idx) { + + if (profiles == null) { + profiles = new Profile[getProfileCount()]; + } + + if (profiles[idx] == null) { + profiles[idx] = Profile.read(orb, ior.profiles[idx].tag, + ior.profiles[idx].profile_data); + } + + return profiles[idx]; + } + + public static InternalIOR extract(Object forward) { + if (forward instanceof ObjectImpl) { + Delegate del = ((ObjectImpl) forward)._get_delegate(); + if (del instanceof ClientDelegate) { + return ((ClientDelegate) del).getInternalIOR(); + } + } + + // todo: better exception here? + throw new NO_IMPLEMENT(); + } + + public int profileTag(int i) { + return ior.profiles[i].tag; + } + + public String getType() { + return ior.type_id; + } + + public void write(OutputStream out) { + // TODO: reconstruct IOR if changed + IORHelper.write(out, ior); + } + +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/InternalServiceContextList.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/InternalServiceContextList.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/InternalServiceContextList.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/InternalServiceContextList.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,28 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.ior; + +import org.apache.geronimo.corba.io.OutputStreamBase; + + +public class InternalServiceContextList { + + public void write(OutputStreamBase out) { + out.write_long(0); + } + +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/InternalTargetAddress.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/InternalTargetAddress.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/InternalTargetAddress.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/InternalTargetAddress.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,84 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.ior; + +import org.omg.CORBA.OctetSeqHelper; +import org.omg.CORBA_2_3.portable.OutputStream; + +import org.apache.geronimo.corba.AbstractORB; + + +public abstract class InternalTargetAddress { + + private AbstractORB orb; + + static class ObjectKeyAddress extends InternalTargetAddress { + + byte[] key; + + public void writeObjectKey(OutputStream out) { + OctetSeqHelper.write(out, key); + } + + public void write(OutputStream out) { + out.write_short((short) 0); + writeObjectKey(out); + } + } + + static class ProfileAddress extends InternalTargetAddress { + + IIOPProfile key; + + public void writeObjectKey(OutputStream out) { + OctetSeqHelper.write(out, key.getObjectKey()); + } + + public void write(OutputStream out) { + out.write_short((short) 1); + key.write(out); + } + } + + static class IORAddressingInfoAddress extends InternalTargetAddress { + + InternalIOR ior; + int selected; + + public void writeObjectKey(OutputStream out) { + IIOPProfile profile = (IIOPProfile) ior.getProfile(selected); + OctetSeqHelper.write(out, profile.getObjectKey()); + } + + public void write(OutputStream out) { + out.write_short((short) 2); + out.write_long(selected); + ior.write(out); + } + } + + /** + * write just the object-key part of the target address (for GIOP 1.0 and 1.1) + */ + public abstract void writeObjectKey(OutputStream out); + + /** + * Write the full target address including discriminator + */ + public abstract void write(OutputStream out); + +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/MultiComponentProfile.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/MultiComponentProfile.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/MultiComponentProfile.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/MultiComponentProfile.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,95 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.ior; + +import org.omg.CORBA.portable.OutputStream; +import org.omg.IOP.TAG_MULTIPLE_COMPONENTS; +import org.omg.IOP.TaggedComponent; +import org.omg.IOP.TaggedComponentSeqHelper; + +import org.apache.geronimo.corba.AbstractORB; +import org.apache.geronimo.corba.io.EncapsulationInputStream; + + +public class MultiComponentProfile extends Profile { + + private TaggedComponent[] tagged_components; + + private Component[] components; + + private final AbstractORB orb; + + private byte[] data; + + public MultiComponentProfile(AbstractORB orb, byte[] data) { + this.orb = orb; + this.data = data; + } + + + public static Profile read(AbstractORB orb, byte[] data) { + + EncapsulationInputStream ein2 = new EncapsulationInputStream(orb, data); + MultiComponentProfile result = new MultiComponentProfile(orb, data); + result.tagged_components = TaggedComponentSeqHelper.read(ein2); + return result; + } + + public int tag() { + return TAG_MULTIPLE_COMPONENTS.value; + } + + int getComponentCount() { + if (tagged_components == null) { + return 0; + } else { + return tagged_components.length; + } + } + + public int getTag(int idx) { + return tagged_components[idx].tag; + } + + public TaggedComponent getTaggedComponent(int idx) { + return tagged_components[idx]; + } + + public Component getComponent(int idx) { + + if (components == null) { + components = new Component[getComponentCount()]; + } + + if (components[idx] == null) { + components[idx] = Component.read(orb, tagged_components[idx].tag, + tagged_components[idx].component_data); + } + + return components[idx]; + } + + protected void write_content(OutputStream eo) { + TaggedComponentSeqHelper.write(eo, tagged_components); + } + + + protected byte[] get_encapsulation_bytes() { + return data; + } + +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/ORBTypeComponent.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/ORBTypeComponent.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/ORBTypeComponent.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/ORBTypeComponent.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,49 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.ior; + + +import org.omg.CORBA.portable.InputStream; +import org.omg.CORBA.portable.OutputStream; +import org.omg.IOP.TAG_ORB_TYPE; + +import org.apache.geronimo.corba.AbstractORB; +import org.apache.geronimo.corba.io.EncapsulationInputStream; + + +public class ORBTypeComponent extends Component { + + private final int orbtype; + + public ORBTypeComponent(int orbtype) { + this.orbtype = orbtype; + } + + public int tag() { + return TAG_ORB_TYPE.value; + } + + public static Component read(AbstractORB orb, byte[] data) { + InputStream is = new EncapsulationInputStream(orb, data); + return new ORBTypeComponent(is.read_long()); + } + + protected void write_content(OutputStream eo) { + eo.write_long(orbtype); + } + +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/Profile.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/Profile.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/Profile.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/Profile.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,66 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.ior; + +import org.omg.CORBA.OctetSeqHelper; +import org.omg.CORBA.portable.OutputStream; +import org.omg.IOP.TAG_INTERNET_IOP; +import org.omg.IOP.TAG_MULTIPLE_COMPONENTS; +import org.omg.IOP.TaggedComponent; + +import org.apache.geronimo.corba.AbstractORB; + + +public abstract class Profile extends TaggedValue { + + public Profile() { + } + + /** + * write content including tag + */ + public void write(OutputStream out) { + out.write_long(tag()); + OctetSeqHelper.write(out, get_encapsulation_bytes()); + } + + protected abstract byte[] get_encapsulation_bytes(); + + public static Profile read(AbstractORB orb, int tag, byte[] data) { + + switch (tag) { + case TAG_INTERNET_IOP.value: + return IIOPProfile.read(orb, data); + + case TAG_MULTIPLE_COMPONENTS.value: + return MultiComponentProfile.read(orb, data); + + default: + return new UnknownProfile(tag, data); + } + } + + + abstract int getComponentCount(); + + public abstract int getTag(int idx); + + public abstract TaggedComponent getTaggedComponent(int idx); + + public abstract Component getComponent(int idx); + +} Added: geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/SSLSecureTransport.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/SSLSecureTransport.java?rev=329036&view=auto ============================================================================== --- geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/SSLSecureTransport.java (added) +++ geronimo/trunk/sandbox/freeorb/geronimo-orb/src/main/java/org/apache/geronimo/corba/ior/SSLSecureTransport.java Thu Oct 27 19:00:06 2005 @@ -0,0 +1,57 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.corba.ior; + +import java.net.InetAddress; +import java.net.InetSocketAddress; + +import org.omg.CORBA.portable.InputStream; +import org.omg.IIOP.Version; + +import org.apache.geronimo.corba.AbstractORB; +import org.apache.geronimo.corba.io.EncapsulationInputStream; + + +public class SSLSecureTransport extends SecureInetTransport { + + SSLSecureTransport(Version version, InetSocketAddress addr, short target_requires, + short target_supports, CompoundSecurityMechanism mechanism) + { + super(version, addr, target_requires, target_supports, mechanism); + // TODO Auto-generated constructor stub + } + + public static SecureInetTransport read(AbstractORB orb, InetAddress profile, + Version version, byte[] component_data, CompoundSecurityMechanism mechanism) + { + + InputStream is = new EncapsulationInputStream(orb, component_data); + org.omg.SSLIOP.SSL ssl = org.omg.SSLIOP.SSLHelper.read(is); + + InetSocketAddress addr = new InetSocketAddress(profile, ssl.port & 0xffff); + SSLSecureTransport trans = new SSLSecureTransport(version, addr, + ssl.target_requires, ssl.target_supports, mechanism); + + return trans; + + } + + public String protocol() { + return PROTO_SSL; + } + +}