blob: da611f7155fab30de0945abeefa6abcf8fd4441f [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.yoko.orb.DynamicAny;
import org.apache.yoko.orb.CORBA.Any;
import org.apache.yoko.orb.CORBA.InputStream;
import org.apache.yoko.orb.CORBA.OutputStream;
import org.apache.yoko.orb.CORBA.TypeCode;
final class DynEnum_impl extends DynAny_impl implements
org.omg.DynamicAny.DynEnum {
private int value_;
DynEnum_impl(org.omg.DynamicAny.DynAnyFactory factory,
org.apache.yoko.orb.OB.ORBInstance orbInstance,
org.omg.CORBA.TypeCode type) {
super(factory, orbInstance, type);
value_ = 0;
}
// ------------------------------------------------------------------
// Standard IDL to Java Mapping
// ------------------------------------------------------------------
public synchronized void assign(org.omg.DynamicAny.DynAny dyn_any)
throws org.omg.DynamicAny.DynAnyPackage.TypeMismatch {
if (destroyed_)
throw new org.omg.CORBA.OBJECT_NOT_EXIST();
if (this == dyn_any)
return;
if (!dyn_any.type().equivalent(type_))
throw new org.omg.DynamicAny.DynAnyPackage.TypeMismatch();
org.omg.DynamicAny.DynEnum dyn_enum = (org.omg.DynamicAny.DynEnum) dyn_any;
value_ = dyn_enum.get_as_ulong();
notifyParent();
}
public synchronized void from_any(org.omg.CORBA.Any value)
throws org.omg.DynamicAny.DynAnyPackage.TypeMismatch,
org.omg.DynamicAny.DynAnyPackage.InvalidValue {
if (destroyed_)
throw new org.omg.CORBA.OBJECT_NOT_EXIST();
Any val = null;
try {
val = (Any) value;
} catch (ClassCastException ex) {
val = new Any(value);
}
if (val.value() == null)
throw new org.omg.DynamicAny.DynAnyPackage.InvalidValue();
if (!val._OB_type().equivalent(type_))
throw new org.omg.DynamicAny.DynAnyPackage.TypeMismatch();
value_ = ((Integer) val.value()).intValue();
notifyParent();
}
public synchronized org.omg.CORBA.Any to_any() {
if (destroyed_)
throw new org.omg.CORBA.OBJECT_NOT_EXIST();
return new Any(orbInstance_, type_, new Integer(value_));
}
public synchronized org.omg.CORBA.Any to_any(DynValueWriter dynValueWriter) {
return to_any();
}
public synchronized boolean equal(org.omg.DynamicAny.DynAny dyn_any) {
if (destroyed_)
throw new org.omg.CORBA.OBJECT_NOT_EXIST();
if (this == dyn_any)
return true;
if (!dyn_any.type().equivalent(type_))
return false;
org.omg.DynamicAny.DynEnum dyn_enum = (org.omg.DynamicAny.DynEnum) dyn_any;
return (value_ == dyn_enum.get_as_ulong());
}
public synchronized org.omg.DynamicAny.DynAny copy() {
if (destroyed_)
throw new org.omg.CORBA.OBJECT_NOT_EXIST();
DynEnum_impl result = new DynEnum_impl(factory_, orbInstance_, type_);
result.value_ = value_;
return result;
}
public boolean seek(int index) {
return false;
}
public void rewind() {
// do nothing
}
public boolean next() {
return false;
}
public int component_count() {
return 0;
}
public org.omg.DynamicAny.DynAny current_component()
throws org.omg.DynamicAny.DynAnyPackage.TypeMismatch {
if (destroyed_)
throw new org.omg.CORBA.OBJECT_NOT_EXIST();
throw new org.omg.DynamicAny.DynAnyPackage.TypeMismatch();
}
public synchronized String get_as_string() {
String result = null;
try {
result = origType_.member_name(value_);
} catch (org.omg.CORBA.TypeCodePackage.BadKind ex) {
org.apache.yoko.orb.OB.Assert._OB_assert(ex);
} catch (org.omg.CORBA.TypeCodePackage.Bounds ex) {
org.apache.yoko.orb.OB.Assert._OB_assert(ex);
}
return result;
}
public synchronized void set_as_string(String value)
throws org.omg.DynamicAny.DynAnyPackage.InvalidValue {
try {
int count = origType_.member_count();
for (int i = 0; i < count; i++) {
if (value.equals(origType_.member_name(i))) {
value_ = i;
notifyParent();
return;
}
}
throw new org.omg.DynamicAny.DynAnyPackage.InvalidValue();
} catch (org.omg.CORBA.TypeCodePackage.BadKind ex) {
org.apache.yoko.orb.OB.Assert._OB_assert(ex);
} catch (org.omg.CORBA.TypeCodePackage.Bounds ex) {
org.apache.yoko.orb.OB.Assert._OB_assert(ex);
}
}
public synchronized int get_as_ulong() {
return value_;
}
public synchronized void set_as_ulong(int value)
throws org.omg.DynamicAny.DynAnyPackage.InvalidValue {
try {
if (value < 0 || value >= origType_.member_count())
throw new org.omg.DynamicAny.DynAnyPackage.InvalidValue();
value_ = value;
notifyParent();
} catch (org.omg.CORBA.TypeCodePackage.BadKind ex) {
org.apache.yoko.orb.OB.Assert._OB_assert(ex);
}
}
// ------------------------------------------------------------------
// Internal member implementations
// ------------------------------------------------------------------
synchronized void _OB_marshal(OutputStream out) {
out.write_ulong(value_);
}
synchronized void _OB_marshal(OutputStream out,
DynValueWriter dynValueWriter) {
_OB_marshal(out);
}
synchronized void _OB_unmarshal(InputStream in) {
value_ = in.read_ulong();
notifyParent();
}
synchronized Any _OB_currentAny() {
if (destroyed_)
throw new org.omg.CORBA.OBJECT_NOT_EXIST();
return null;
}
synchronized Any _OB_currentAnyValue() {
return null;
}
}