1 2 5 14 package org.jacorb.trading.db.simple.offers; 15 16 19 20 import java.io.*; 21 import java.util.*; 22 import org.omg.CORBA.*; 23 24 public class TypeCodeValue implements Serializable 25 { 26 private int m_kind; 29 private String m_id; 30 private String m_name; 31 private int m_length; 32 private TypeCodeValue m_content; 33 private java.lang.Object m_arg; 34 private transient TypeCode m_typeCode; 35 36 static final long serialVersionUID = -2067446388881696087L; 37 38 39 private TypeCodeValue() 40 { 41 } 42 43 44 public TypeCodeValue(TypeCode tc) 45 { 46 setValue(tc); 47 } 48 49 50 public TypeCode getValue() 51 { 52 TypeCode result = m_typeCode; 53 54 if (result == null) { 55 ORB orb = org.omg.CORBA.ORB.init(); 56 57 switch (m_kind) { 58 case TCKind._tk_null: 60 case TCKind._tk_void: 61 case TCKind._tk_short: 62 case TCKind._tk_ushort: 63 case TCKind._tk_long: 64 case TCKind._tk_ulong: 65 case TCKind._tk_float: 66 case TCKind._tk_double: 67 case TCKind._tk_boolean: 68 case TCKind._tk_char: 69 case TCKind._tk_octet: 70 case TCKind._tk_any: 71 case TCKind._tk_TypeCode: 72 case TCKind._tk_Principal: 73 result = orb.get_primitive_tc(TCKind.from_int(m_kind)); 74 break; 75 76 case TCKind._tk_string: 77 result = orb.create_string_tc(m_length); 78 break; 79 80 case TCKind._tk_sequence: 81 result = orb.create_sequence_tc(m_length, m_content.getValue()); 82 break; 83 84 case TCKind._tk_array: 85 result = orb.create_array_tc(m_length, m_content.getValue()); 86 break; 87 88 case TCKind._tk_alias: 89 result = orb.create_alias_tc(m_id, m_name, m_content.getValue()); 90 break; 91 92 case TCKind._tk_objref: 93 result = orb.create_interface_tc(m_id, m_name); 94 break; 95 96 case TCKind._tk_longlong: 97 case TCKind._tk_ulonglong: 98 case TCKind._tk_longdouble: 99 case TCKind._tk_wstring: 100 case TCKind._tk_wchar: 101 case TCKind._tk_fixed: 102 case TCKind._tk_except: 103 case TCKind._tk_struct: 104 case TCKind._tk_union: 105 throw new RuntimeException ("Unsupported type"); 106 107 default: 108 throw new RuntimeException ("Unexpected type"); 109 } 110 111 m_typeCode = result; 113 } 114 115 return result; 116 } 117 118 119 protected void setValue(TypeCode tc) 120 { 121 TCKind kind = tc.kind(); 122 123 m_kind = kind.value(); 125 m_id = null; 126 m_name = null; 127 m_length = 0; 128 m_content = null; 129 m_arg = null; 130 m_typeCode = tc; 131 132 133 try { 134 switch (kind.value()) { 135 case TCKind._tk_null: 137 case TCKind._tk_void: 138 case TCKind._tk_short: 139 case TCKind._tk_ushort: 140 case TCKind._tk_long: 141 case TCKind._tk_ulong: 142 case TCKind._tk_float: 143 case TCKind._tk_double: 144 case TCKind._tk_boolean: 145 case TCKind._tk_char: 146 case TCKind._tk_octet: 147 case TCKind._tk_any: 148 case TCKind._tk_TypeCode: 149 case TCKind._tk_Principal: 150 break; 152 153 case TCKind._tk_string: 154 m_length = tc.length(); 155 break; 156 157 case TCKind._tk_sequence: 158 m_length = tc.length(); 159 m_content = new TypeCodeValue(tc.content_type()); 160 break; 161 162 case TCKind._tk_array: 163 m_length = tc.length(); 164 m_content = new TypeCodeValue(tc.content_type()); 165 break; 166 167 case TCKind._tk_alias: 168 m_id = tc.id(); 169 m_name = tc.name(); 170 m_content = new TypeCodeValue(tc.content_type()); 171 break; 172 173 case TCKind._tk_objref: 174 m_id = tc.id(); 175 m_name = tc.name(); 176 break; 177 178 case TCKind._tk_longlong: 179 case TCKind._tk_ulonglong: 180 case TCKind._tk_longdouble: 181 case TCKind._tk_wstring: 182 case TCKind._tk_wchar: 183 case TCKind._tk_fixed: 184 case TCKind._tk_except: 185 case TCKind._tk_struct: 186 case TCKind._tk_union: 187 throw new RuntimeException ("Unsupported type"); 188 189 default: 190 throw new RuntimeException ("Unexpected type"); 191 } 192 } 193 catch (org.omg.CORBA.TypeCodePackage.BadKind e) { 194 throw new RuntimeException (e.getMessage()); 195 } 196 } 197 198 199 private void readObject(ObjectInputStream in) 200 throws IOException, ClassNotFoundException 201 { 202 in.defaultReadObject(); 203 m_typeCode = null; 204 } 205 206 207 305 } 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 | Popular Tags |