01: /*
02: * Copyright 2000-2003 Sun Microsystems, Inc. All Rights Reserved.
03: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
04: *
05: * This code is free software; you can redistribute it and/or modify it
06: * under the terms of the GNU General Public License version 2 only, as
07: * published by the Free Software Foundation. Sun designates this
08: * particular file as subject to the "Classpath" exception as provided
09: * by Sun in the LICENSE file that accompanied this code.
10: *
11: * This code is distributed in the hope that it will be useful, but WITHOUT
12: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14: * version 2 for more details (a copy is included in the LICENSE file that
15: * accompanied this code).
16: *
17: * You should have received a copy of the GNU General Public License version
18: * 2 along with this work; if not, write to the Free Software Foundation,
19: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20: *
21: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22: * CA 95054 USA or visit www.sun.com if you need additional information or
23: * have any questions.
24: */
25:
26: package com.sun.corba.se.impl.dynamicany;
27:
28: import org.omg.CORBA.TypeCode;
29: import org.omg.CORBA.TCKind;
30: import org.omg.CORBA.Any;
31: import org.omg.CORBA.TypeCodePackage.BadKind;
32: import org.omg.CORBA.TypeCodePackage.Bounds;
33: import org.omg.DynamicAny.*;
34: import org.omg.DynamicAny.DynAnyPackage.TypeMismatch;
35: import org.omg.DynamicAny.DynAnyPackage.InvalidValue;
36: import org.omg.DynamicAny.DynAnyFactoryPackage.InconsistentTypeCode;
37:
38: import com.sun.corba.se.spi.orb.ORB;
39: import com.sun.corba.se.spi.logging.CORBALogDomains;
40: import com.sun.corba.se.impl.logging.ORBUtilSystemException;
41:
42: public class DynStructImpl extends DynAnyComplexImpl implements
43: DynStruct {
44: //
45: // Constructors
46: //
47:
48: private DynStructImpl() {
49: this (null, (Any) null, false);
50: }
51:
52: protected DynStructImpl(ORB orb, Any any, boolean copyValue) {
53: // We can be sure that typeCode is of kind tk_struct
54: super (orb, any, copyValue);
55: // Initialize components lazily, on demand.
56: // This is an optimization in case the user is only interested in storing Anys.
57: }
58:
59: protected DynStructImpl(ORB orb, TypeCode typeCode) {
60: // We can be sure that typeCode is of kind tk_struct
61: super (orb, typeCode);
62: // For DynStruct, the operation sets the current position to -1
63: // for empty exceptions and to zero for all other TypeCodes.
64: // The members (if any) are (recursively) initialized to their default values.
65: index = 0;
66: }
67:
68: //
69: // Methods differing from DynValues
70: //
71:
72: public org.omg.DynamicAny.NameValuePair[] get_members() {
73: if (status == STATUS_DESTROYED) {
74: throw wrapper.dynAnyDestroyed();
75: }
76: checkInitComponents();
77: return nameValuePairs;
78: }
79:
80: public org.omg.DynamicAny.NameDynAnyPair[] get_members_as_dyn_any() {
81: if (status == STATUS_DESTROYED) {
82: throw wrapper.dynAnyDestroyed();
83: }
84: checkInitComponents();
85: return nameDynAnyPairs;
86: }
87: }
|