001: package demo.any;
002:
003: import org.omg.CORBA.Any;
004: import org.omg.CORBA.TCKind;
005: import org.omg.CORBA.StringSeqHelper;
006: import org.omg.CORBA.OctetSeqHelper;
007:
008: public class AnyServerImpl extends AnyServerPOA {
009: org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init();
010:
011: public AnyServerImpl() {
012: }
013:
014: public java.lang.String generic(Any a) {
015: String result = "<empty>";
016: try {
017: int kind = a.type().kind().value();
018:
019: switch (kind) {
020: case TCKind._tk_char:
021: result = "char: " + a.extract_char();
022: break;
023: case TCKind._tk_longlong:
024: result = "longlong: " + a.extract_longlong();
025: break;
026: case TCKind._tk_short:
027: result = "Short: " + a.extract_short();
028: break;
029: case TCKind._tk_double:
030: result = "Double: " + a.extract_double();
031: break;
032: case TCKind._tk_float:
033: result = "Float: " + a.extract_float();
034: break;
035: case TCKind._tk_string:
036: result = "String: " + a.extract_string();
037: break;
038: case TCKind._tk_wstring:
039: result = "WString: " + a.extract_wstring();
040: break;
041: case TCKind._tk_struct:
042: if (NodeHelper.type().equal(a.type())) {
043: StringBuffer sb = new StringBuffer();
044: Node t = NodeHelper.extract(a);
045: sb.append(" " + t.name);
046: do {
047: t = t.next[0];
048: sb.append(" " + t.name);
049: } while (t.next.length > 0);
050: result = sb.toString();
051: }
052: break;
053: case TCKind._tk_union:
054: Nums n = NumsHelper.extract(a);
055: switch (n.discriminator()) {
056: case 'l':
057: result = "Union: l " + n.l();
058: break;
059: case 'f':
060: result = "Union: f " + n.f();
061: break;
062: default:
063: result = "default: " + n.s();
064: }
065: break;
066: case TCKind._tk_objref:
067: System.out.println("Objectref.");
068: AnyServer s = AnyServerHelper
069: .narrow(a.extract_Object());
070: Any any = org.omg.CORBA.ORB.init().create_any();
071: any.insert_string("hallo");
072: result = s.generic(any);
073: break;
074: case TCKind._tk_any:
075: System.out.println("Any.");
076: Any inner_any = a.extract_any();
077: result = generic(inner_any);
078: break;
079: case TCKind._tk_alias:
080: System.out.print("Alias: ");
081: Any alias_any = a;
082: if (alias_any.type().equal(MyStringSeqHelper.type())) {
083: String[] stra = MyStringSeqHelper
084: .extract(alias_any);
085: for (int slen = 0; slen < stra.length; slen++)
086: result += stra[slen];
087: } else if (alias_any.type().equal(
088: myWStringHelper.type())) {
089: result = myWStringHelper.extract(alias_any);
090: } else if (alias_any.type()
091: .equal(OctetSeqHelper.type())) {
092: byte[] octets = OctetSeqHelper.extract(a);
093: result = "Octet Sequence: " + octets[0];
094: } else if (alias_any.type().equal(stringsHelper.type())) {
095: String[] str3 = stringsHelper.extract(a);
096: result = "Array: " + str3[1];
097: } else
098: System.out.println("Unknown alias, type kind: "
099: + alias_any.type().kind().value());
100:
101: break;
102: default:
103: System.out.println("Unknown, kind "
104: + a.type().kind().value());
105:
106: }
107: } catch (Exception e) {
108: e.printStackTrace();
109: }
110: System.out.println(result);
111: return result;
112: }
113: }
|