1 /* DynAny.java -- 2 Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc. 3 4 This file is part of GNU Classpath. 5 6 GNU Classpath is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 2, or (at your option) 9 any later version. 10 11 GNU Classpath is distributed in the hope that it will be useful, but 12 WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with GNU Classpath; see the file COPYING. If not, write to the 18 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19 02110-1301 USA. 20 21 Linking this library statically or dynamically with other modules is 22 making a combined work based on this library. Thus, the terms and 23 conditions of the GNU General Public License cover the whole 24 combination. 25 26 As a special exception, the copyright holders of this library give you 27 permission to link this library with independent modules to produce an 28 executable, regardless of the license terms of these independent 29 modules, and to copy and distribute the resulting executable under 30 terms of your choice, provided that you also meet, for each linked 31 independent module, the terms and conditions of the license of that 32 module. An independent module is a module which is not derived from 33 or based on this library. If you modify this library, you may extend 34 this exception to your version of the library, but you are not 35 obligated to do so. If you do not wish to do so, delete this 36 exception statement from your version. */ 37 38 39 package org.omg.CORBA; 40 41 import org.omg.CORBA.DynAnyPackage.Invalid; 42 import org.omg.CORBA.DynAnyPackage.InvalidValue; 43 import org.omg.CORBA.DynAnyPackage.TypeMismatch; 44 45 import java.io.Serializable; 46 47 /** 48 * The DynAny interface provides possibility to access the components of 49 * the CORBA object, stored inside the {@link Any}. The {@link Any} itself 50 * allows to read, write and pass as parameter the stored value without 51 * knowning its exact data type. The DynAny and derived classes additionally 52 * allows to access the members of the sequence, structure, union and get the 53 * data about enumeration, value type and CORBA <code>fixed</code> without 54 * knowing the exact type at the run time. The returned members are also 55 * wrapped into DynAny objects, allowing them to be the nested structures. 56 * 57 * @deprecated by {@link org.omg.DynamicAny.DynAny} 58 * 59 * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org) 60 */ 61 public interface DynAny 62 extends org.omg.CORBA.Object 63 { 64 /** 65 * Copy one DynAny into another. 66 * 67 * @param from the DynAny to copy from. 68 * @throws Invalid if the source DynAny is invalid. 69 */ assign(DynAny from)70 void assign(DynAny from) 71 throws Invalid; 72 73 /** 74 * Clones this DynAny. 75 */ copy()76 DynAny copy(); 77 78 /** 79 * Returns the focused component of this DynAny. The DynAny has the internal 80 * pointer (reference) that can point to one of its components. The returned 81 * DynAny can be used to get or set the value of the focused component. 82 * If the DynAny holds a primitive type with no components, this 83 * implementation returns <code>this</code>. 84 */ current_component()85 DynAny current_component(); 86 87 /** 88 * Destroys this DynAny, freeing the used resources. In java, resources 89 * are freed by the garbage collectors, so this method typically returns 90 * without action. 91 */ destroy()92 void destroy(); 93 94 /** 95 * Makes a DynAny from the {@link Any}. The passed {@link Any} becomes the 96 * enclosed instance of this DynAny, allowing to change/traverse the 97 * {@link Any} fields by the {@link DynAny} methods. 98 */ from_any(Any an_any)99 void from_any(Any an_any) 100 throws Invalid; 101 102 /** 103 * Retrieves the {@link Any}, stored inside this DynAny. 104 * 105 * @throws TypeMismatch if the typecode of the accessed Any 106 * is not the same as the typecode of this DynAny. 107 */ get_any()108 Any get_any() 109 throws TypeMismatch; 110 111 /** 112 * Extract the boolean value that is expected to be 113 * stored in this DynAny. 114 * 115 * @throws TypeMismatch if this DynAny holds the value of the 116 * different type. 117 */ get_boolean()118 boolean get_boolean() 119 throws TypeMismatch; 120 121 /** 122 * Extract the char value that is expected to be 123 * stored in this DynAny. 124 * 125 * @throws TypeMismatch if this DynAny holds the value of the 126 * different type. 127 */ get_char()128 char get_char() 129 throws TypeMismatch; 130 131 /** 132 * Extract the <code>double</code> value that is expected to be 133 * stored in this DynAny. 134 * 135 * @throws TypeMismatch if this DynAny holds the value of the 136 * different type. 137 */ get_double()138 double get_double() 139 throws TypeMismatch; 140 141 /** 142 * Extract the <code>float</code> value that is expected to be 143 * stored in this DynAny. 144 * 145 * @throws TypeMismatch if this DynAny holds the value of the 146 * different type. 147 */ get_float()148 float get_float() 149 throws TypeMismatch; 150 151 /** 152 * Extract the int (CORBA long) value that is expected to be 153 * stored in this DynAny. 154 * 155 * @throws TypeMismatch if this DynAny holds the value of the 156 * different type. 157 */ get_long()158 int get_long() 159 throws TypeMismatch; 160 161 /** 162 * Extract the long (CORBA long long) value that is expected to be 163 * stored in this DynAny. 164 * 165 * @throws TypeMismatch if this DynAny holds the value of the 166 * different type. 167 */ get_longlong()168 long get_longlong() 169 throws TypeMismatch; 170 171 /** 172 * Extract the byte (CORBA octet) value that is expected to be 173 * stored in this DynAny. 174 * 175 * @throws TypeMismatch if this DynAny holds the value of the 176 * different type. 177 */ get_octet()178 byte get_octet() 179 throws TypeMismatch; 180 181 /** 182 * Extract the CORBA object reference that is expected to be 183 * stored in this DynAny. 184 * 185 * @throws TypeMismatch if this DynAny holds the value of the 186 * different type. 187 */ get_reference()188 Object get_reference() 189 throws TypeMismatch; 190 191 /** 192 * Extract the <code>short</code> value that is expected to be 193 * stored in this DynAny. 194 * 195 * @throws TypeMismatch if this DynAny holds the value of the 196 * different type. 197 */ get_short()198 short get_short() 199 throws TypeMismatch; 200 201 /** 202 * Extract the string value that is expected to be 203 * stored in this DynAny. 204 * 205 * @throws TypeMismatch if this DynAny holds the value of the 206 * different type. 207 */ get_string()208 String get_string() 209 throws TypeMismatch; 210 211 /** 212 * Extract the {@link TypeCode} value that is expected to be 213 * stored in this DynAny. 214 * 215 * @throws TypeMismatch if this DynAny holds the value of the 216 * different type. 217 */ get_typecode()218 TypeCode get_typecode() 219 throws TypeMismatch; 220 221 /** 222 * Extract the unsigned int (CORBA ulong) value that is expected to be 223 * stored in this DynAny. 224 * 225 * @throws TypeMismatch if this DynAny holds the value of the 226 * different type. 227 */ get_ulong()228 int get_ulong() 229 throws TypeMismatch; 230 231 /** 232 * Extract the unsingel long (CORBA unsigned long long )value that 233 * is expected to be stored in this DynAny. 234 * 235 * @throws TypeMismatch if this DynAny holds the value of the 236 * different type. 237 */ get_ulonglong()238 long get_ulonglong() 239 throws TypeMismatch; 240 241 /** 242 * Extract the unsigned short value that is expected to be 243 * stored in this DynAny. 244 * 245 * @throws TypeMismatch if this DynAny holds the value of the 246 * different type. 247 */ get_ushort()248 short get_ushort() 249 throws TypeMismatch; 250 251 /** 252 * Extract the value that is expected to be 253 * stored in this DynAny. 254 * 255 * @throws TypeMismatch if this DynAny holds the value of the 256 * different type. 257 */ get_val()258 Serializable get_val() 259 throws TypeMismatch; 260 261 /** 262 * Extract the wide (usually UTF-16) character value that is expected to be 263 * stored in this DynAny. 264 * 265 * @throws TypeMismatch if this DynAny holds the value of the 266 * different type. 267 */ get_wchar()268 char get_wchar() 269 throws TypeMismatch; 270 271 /** 272 * Extract the wide (usually UFT-16) string that is expected to be 273 * stored in this DynAny. 274 * 275 * @throws TypeMismatch if this DynAny holds the value of the 276 * different type. 277 */ get_wstring()278 String get_wstring() 279 throws TypeMismatch; 280 281 /** 282 * Insert the {@link Any} value into the enclosed 283 * {@link Any} inside this DynAny. 284 * 285 * @param an_any the value being inserted. 286 * @throws InvalidValue if the value type does not match the 287 * typecode of the enclosed {@link Any}. 288 */ insert_any(Any an_any)289 void insert_any(Any an_any) 290 throws InvalidValue; 291 292 /** 293 * Insert the boolean value into the enclosed 294 * {@link Any} inside this DynAny 295 * @param a_x the value being inserted. 296 * @throws InvalidValue if the value type does not match the 297 * typecode of the enclosed {@link Any}. 298 */ insert_boolean(boolean a_x)299 void insert_boolean(boolean a_x) 300 throws InvalidValue; 301 302 /** 303 * Insert the char value into the enclosed 304 * {@link Any} inside this DynAny 305 * @param a_x the value being inserted. 306 * @throws InvalidValue if the value type does not match the 307 * typecode of the enclosed {@link Any}. 308 */ insert_char(char a_x)309 void insert_char(char a_x) 310 throws InvalidValue; 311 312 /** 313 * Insert the double value into the enclosed 314 * {@link Any} inside this DynAny 315 * @param a_x the value being inserted. 316 * @throws InvalidValue if the value type does not match the 317 * typecode of the enclosed {@link Any}. 318 */ insert_double(double a_x)319 void insert_double(double a_x) 320 throws InvalidValue; 321 322 /** 323 * Insert the float value into the enclosed 324 * {@link Any} inside this DynAny 325 * @param a_x the value being inserted. 326 * @throws InvalidValue if the value type does not match the 327 * typecode of the enclosed {@link Any}. 328 */ insert_float(float a_x)329 void insert_float(float a_x) 330 throws InvalidValue; 331 332 /** 333 * Insert the int (CORBA long) value into the enclosed 334 * {@link Any} inside this DynAny 335 * @param a_x the value being inserted. 336 * @throws InvalidValue if the value type does not match the 337 * typecode of the enclosed {@link Any}. 338 */ insert_long(int a_x)339 void insert_long(int a_x) 340 throws InvalidValue; 341 342 /** 343 * Insert the long (CORBA long long) value into the enclosed 344 * {@link Any} inside this DynAny 345 * @param a_x the value being inserted. 346 * @throws InvalidValue if the value type does not match the 347 * typecode of the enclosed {@link Any}. 348 */ insert_longlong(long a_x)349 void insert_longlong(long a_x) 350 throws InvalidValue; 351 352 /** 353 * Insert the byte (CORBA octet) value into the enclosed 354 * {@link Any} inside this DynAny 355 * @param a_x the value being inserted. 356 * @throws InvalidValue if the value type does not match the 357 * typecode of the enclosed {@link Any}. 358 */ insert_octet(byte a_x)359 void insert_octet(byte a_x) 360 throws InvalidValue; 361 362 /** 363 * Insert the object reference into the enclosed 364 * {@link Any} inside this DynAny 365 * @param a_x the value being inserted. 366 * @throws InvalidValue if the value type does not match the 367 * typecode of the enclosed {@link Any}. 368 */ insert_reference(Object a_x)369 void insert_reference(Object a_x) 370 throws InvalidValue; 371 372 /** 373 * Insert the <code>short</code> value into the enclosed 374 * {@link Any} inside this DynAny 375 * @param a_x the value being inserted. 376 * @throws InvalidValue if the value type does not match the 377 * typecode of the enclosed {@link Any}. 378 */ insert_short(short a_x)379 void insert_short(short a_x) 380 throws InvalidValue; 381 382 /** 383 * Insert the string value into the enclosed 384 * {@link Any} inside this DynAny 385 * @param a_x the value being inserted. 386 * @throws InvalidValue if the value type does not match the 387 * typecode of the enclosed {@link Any}. 388 */ insert_string(String a_x)389 void insert_string(String a_x) 390 throws InvalidValue; 391 392 /** 393 * Insert the {@link TypeCode} value into the enclosed 394 * {@link Any} inside this DynAny 395 * @param a_x the value being inserted. 396 * @throws InvalidValue if the value type does not match the 397 * typecode of the enclosed {@link Any}. 398 */ insert_typecode(TypeCode a_x)399 void insert_typecode(TypeCode a_x) 400 throws InvalidValue; 401 402 /** 403 * Insert the int (CORBA unsinged long) value into the enclosed 404 * {@link Any} inside this DynAny 405 * @param a_x the value being inserted. 406 * @throws InvalidValue if the value type does not match the 407 * typecode of the enclosed {@link Any}. 408 */ insert_ulong(int a_x)409 void insert_ulong(int a_x) 410 throws InvalidValue; 411 412 /** 413 * Insert the long (CORBA unsigned long long) value into the enclosed 414 * {@link Any} inside this DynAny 415 * @param a_x the value being inserted. 416 * @throws InvalidValue if the value type does not match the 417 * typecode of the enclosed {@link Any}. 418 */ insert_ulonglong(long a_x)419 void insert_ulonglong(long a_x) 420 throws InvalidValue; 421 422 /** 423 * Insert the short (CORBA unsigned short) value into the enclosed 424 * {@link Any} inside this DynAny 425 * @param a_x the value being inserted. 426 * @throws InvalidValue if the value type does not match the 427 * typecode of the enclosed {@link Any}. 428 */ insert_ushort(short a_x)429 void insert_ushort(short a_x) 430 throws InvalidValue; 431 432 /** 433 * Insert the value into the enclosed 434 * {@link Any} inside this DynAny 435 * @param a_x the value being inserted. 436 * @throws InvalidValue if the value type does not match the 437 * typecode of the enclosed {@link Any}. 438 */ insert_val(Serializable a_x)439 void insert_val(Serializable a_x) 440 throws InvalidValue; 441 442 /** 443 * Insert the wide char (usually UTF-16) value into the enclosed 444 * {@link Any} inside this DynAny 445 * @param a_x the value being inserted. 446 * @throws InvalidValue if the value type does not match the 447 * typecode of the enclosed {@link Any}. 448 */ insert_wchar(char a_x)449 void insert_wchar(char a_x) 450 throws InvalidValue; 451 452 /** 453 * Insert the wide string (usually UTF-16) into the enclosed 454 * {@link Any} inside this DynAny 455 * @param a_x the value being inserted. 456 * @throws InvalidValue if the value type does not match the 457 * typecode of the enclosed {@link Any}. 458 */ insert_wstring(String a_x)459 void insert_wstring(String a_x) 460 throws InvalidValue; 461 462 /** 463 * Advances the internal pointer, described in the {@link #current_component}, 464 * one position forward. 465 * 466 * @return true if the pointer now points to the new component, 467 * false if there are no more components of this DynAny holds 468 * a basic type that is not divided into components. 469 */ next()470 boolean next(); 471 472 /** 473 * Moves the internal pointer, described in the {@link #current_component}, 474 * to the first component. 475 */ rewind()476 void rewind(); 477 478 /** 479 * Moves the internal pointer, described in the {@link #current_component}, 480 * to the given position. 481 * 482 * @param p the number of the internal component on that the internal 483 * pointer must be focused. 484 * 485 * @return true on success or false if there is no component with the 486 * given number. If the DynAny holds the basic type, this method returs 487 * false p values other than 0. 488 */ seek(int p)489 boolean seek(int p); 490 491 /** 492 * Returns the enclosed {@link Any}. 493 * 494 * @return the enclosed {@link Any}. 495 */ to_any()496 Any to_any() 497 throws Invalid; 498 499 /** 500 * Returns the typecode of the object, inserted into this 501 * DynAny. 502 * 503 * @return the typecode of the inserted {@link Any} or null typecode 504 * if no {@link Any has been yet inserted}. 505 */ type()506 TypeCode type(); 507 } 508