Issue 1352: No portable way to obtain list of type safe repository IDs (obv-rtf) Source: (, ) Nature: Revision Severity: Summary: Summary: In Section 5.9.1 on p. 5-55 of orbos/98-01-18, the spec says "the sending context is responsible for listing the repository ID"s for all the base types to which it is safe to truncate the real type, going up (the derivation hierarchy) to, and including if appropriate the formal type". Currently, there is no portable way to obtain the list of type safe repository ID"s from within the marshaling engine in order to be marshaled on-the-wire properly. Resolution: Revised Text: Actions taken: May 15, 1998: received issue July 30, 1998: closed issue Discussion: End of Annotations:===== Return-Path: Sender: "Lenny Phan" Date: Thu, 14 May 1998 17:49:43 -0700 From: Lenny Phan Organization: Visigenic Software, Inc. To: issues@omg.org, obv-rtf@omg.org Subject: obv-rtf issues Issue #1: In Section 5.9.1 on p. 5-55 of orbos/98-01-18, the spec says "the sending context is responsible for listing the repository ID's for all the base types to which it is safe to truncate the real type, going up (the derivation hierarchy) to, and including if appropriate the formal type". Currently, there is no portable way to obtain the list of type safe repository ID's from within the marshaling engine in order to be marshaled on-the-wire properly. Proposal: Since the compilers have static knowledge of the safe types and the derivation hierarchy, the Value helpers can be augmented to include a static table of the type safe repository id's from which the marshaling code can query. For example if I have the following idl: value Base { string str; float fl; }; value Derived : safe Base { long l; }; interface Foo { void send(in Base b); } // Generated Helper for value Derived and Base public class BaseHelper { // standard helper methods .... // Static table of type safe id's private static java.lang.String[] _safe_ids = { "IDL:Example/Base:1.0", }; // method which marshaling code invokes for obtaing list of type safe id's public java.lang.String[] type_safe_ids() { return _safe_ids; } } public class DerivedHelper { // standard helper methods .... // Static table of type safe id's private static java.lang.String[] _safe_ids = { "IDL:Example/Derived:1.0", "IDL:Example/Base:1.0" }; // method which marshaling code invokes for obtaing list of type safe id's public java.lang.String[] type_safe_ids() { return _safe_ids; } }