Method ORB.create_value_tc creates TypeCode but does not set variable TypeCode.concrete_base properly. Method concrete_base_type() of new created instance returns null instead of specified concrete base type. Example: ---------------------------------------------------------------------- import org.omg.CORBA.*; public class Tester { public static void main(String [] args) throws Exception { String name = "name"; String id = "id"; ORB orb = ORB.init(args, null); TypeCode concrete_base = orb.create_abstract_interface_tc(id,name); TypeCode tc = orb.create_value_tc(id, name, (short) 0, concrete_base, new ValueMember[0]); System.out.println("Expected: " + concrete_base); System.out.println("Returned: " + tc.concrete_base_type()); } } Result: Expected: com.sun.corba.se.impl.corba.TypeCodeImpl@80fa6f = abstractInterface name... Returned: null ------------------------------------------------------------------------- It seems, that the problem can be in com/sun/corba/se/impl/corba/TypeCodeImpl.java: .... public TypeCodeImpl(ORB orb, int creationKind, String id, String name, short type_modifier, TypeCode concrete_base, ValueMember[] members) { ... if (_concrete_base != null) { ^^^^^^^^^^ should it be concrete_base instead? _concrete_base = convertToNative(_orb, concrete_base); } ... Please note, that JCK test api/org_omg/CORBA/ORBTest (doTest25) will fail due to this bug (but only after fixing JCK bug #6239328). ###@###.### 2005-03-11 10:28:21 GMT
|