package org.jacorb.demo.any; import org.omg.CORBA.Any; import org.omg.CORBA.TCKind; import org.omg.CORBA.StringSeqHelper; import org.omg.CORBA.OctetSeqHelper; public class AnyServerImpl extends AnyServerPOA { private boolean shutdown; private org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(); public java.lang.String generic(Any a) { String result = "<empty>"; try { int kind = a.type().kind().value(); switch( kind ) { case TCKind._tk_enum: Ordered o = OrderedHelper.extract (a); result = "Enum: " + o + " value = " + o.value(); break; case TCKind._tk_char: result = "char: " + a.extract_char(); break; case TCKind._tk_longlong: result = "longlong: " + a.extract_longlong(); break; case TCKind._tk_short: result ="Short: " + a.extract_short(); break; case TCKind._tk_double: result = "Double: " + a.extract_double(); break; case TCKind._tk_float: result = "Float: " + a.extract_float(); break; case TCKind._tk_string: result = "String: " + a.extract_string(); break; case TCKind._tk_wstring: result = "WString: " + a.extract_wstring(); break; case TCKind._tk_struct: if( NodeHelper.type().equivalent( a.type())) { StringBuffer sb = new StringBuffer(); Node t = NodeHelper.extract( a ); sb.append( " " + t.name ); do { t = t.next[0]; sb.append( " " + t.name ); } while( t.next.length > 0 ); result = sb.toString(); } break; case TCKind._tk_union: Nums n = NumsHelper.extract( a ); switch (n.discriminator() ) { case 'l' : result = "Union: l " + n.l(); break; case 'f' : result = "Union: f " + n.f(); break; default : result = "default: " + n.s(); } break; case TCKind._tk_objref: System.out.println("Objectref."); AnyServer s = AnyServerHelper.narrow(a.extract_Object()); Any any = org.omg.CORBA.ORB.init().create_any(); any.insert_string("hallo"); result = s.generic( any ); break; case TCKind._tk_any: System.out.println("Any."); Any inner_any = a.extract_any(); result = generic( inner_any ); break; case TCKind._tk_alias: System.out.print("Alias: "); Any alias_any = a; if( alias_any.type().equivalent( MyStringSeqHelper.type())) { String[] stra = MyStringSeqHelper.extract( alias_any ); for( int slen = 0; slen < stra.length; slen++ ) result += stra[slen]; } else if( alias_any.type().equivalent( myWStringHelper.type())) { result = myWStringHelper.extract( alias_any ); } else if( alias_any.type().equivalent( OctetSeqHelper.type())) { byte[] octets = OctetSeqHelper.extract( a ); result = "Octet Sequence: " + octets[0]; } else if( alias_any.type().equivalent( stringsHelper.type())) { String[] str3 = stringsHelper.extract( a ); result = "Array: " + str3[1]; } else System.out.println("Unknown alias, type kind: " + alias_any.type().kind().value() ); break; default: System.out.println("Unknown, kind " + a.type().kind().value()); } } catch ( Exception e ) { e.printStackTrace(); } System.out.println(result); return result; } public boolean getShutdown () { return shutdown; } public void shutdown () { shutdown = true; } }