Final Report of the Core Revision 2.3 Task Force

The Core Revision 2.3 TF has resolved the following issues as described below. Each resolution includes details of text change that are to be applied to the existing chapters of CORBA Core.

The Portability Addendum section below contains resolutions of certain Portability related items that could not be resolved in the Portability RTF due to logistical problems and were moved to the Core RTF for finalizing their adoption.

A companion set of chapter drafts with the editing changes are being produced by Jishnu Mukerji, incorporating changes from this RTF and the other RTFs (Interop, Portability, OBV, IDL to Java and Java to IDL), that impact chapters 1 through 6, and 8. Changes from this RTF that impact chapter 13 will be editorially incorporated into that chapter by the editor of the Interop RTF (Tom Rutt). Changes from this RTF that impact Chapter 7 will be editorially incorporated into that chapter by the editor of the Portability RTF (Dan Frantz). The changes to the Time Service chapter will be editorially incorporated by Jishnu Mukerji

The new version of these document will be available by August 20, 1998. First drafts for review and comment will be available by August 10th.

Issue 116: Typecodes for recursive sequences (orb_revision)
Issue 128: ServerRequest::op_def() (orb_revision)
Issue 156: Apparent error in CORBA 2.0 Interoperability (orb_revision)
Issue 300: Recursive sequence TypeCodes (orb_revision)
Issue 396: 4.2.1 create_request Paragraph 8 - comment (orb_revision)
Issue 397: 4.2.2 add_arg Paragraph 5-comment (orb_revision)
Issue 399: 4.6 Context Object Operations, Para 2 - objection (orb_revision)
Issue 400: 4.3.1 sen3 - comment 23 - comment (orb_revision)
Issue 402: 4.6.2 set_on_value Paragraph 2 - objection (orb_revision)
Issue 403: 4.6.3 set_values (orb_revision)
Issue 404: 4.6.4 get_values Paragraph 2 - objection (orb_revision)
Issue 405: 4.6.4 get_values Paragraph 4 - objection (orb_revision)
Issue 406: 4.6.4 get_values Paragraph 5 - objection (orb_revision)
Issue 408: 4.6.5 delete_values Paragraph 3 - objection (orb_revision)
Issue 409: 4.6.7 delete Paragraph 4 - objection (orb_revision)
Issue 429: 6.5.4 Container Paragraph 10 - comment (orb_revision)
Issue 430: 6.5.4 Container Paragraph 11 - comment (orb_revision)
Issue 431: 6.5.4 Container Paragraph 12 - comment (orb_revision)
Issue 435: 6.5.6 Repository Paragraph 4 - comment (orb_revision)
Issue 437: 6.5.8 ConstantDef Interface Paragraph 2 - comment (orb_revision)
Issue 438: 6.5.10 StructDef Last paragraph - comment (orb_revision)
Issue 439: 6.5.11 UnionDef Last Paragraph - comment (orb_revision)
Issue 440: 6.5.20 AttributeDef Paragraph 2 - comment (orb_revision)
Issue 443: 6.6.1 OMG IDL Format Paragraph 5 - comment (orb_revision)
Issue 444: 6.6.4 Pragma Directives for RepositoryId Para 1 - objection (orb_revision)
Issue 446: 6.7.1 The TypeCode Interface All Paragraphs - objection (orb_revision)
Issue 447: 6.7.1 The Type Code Interface Paragraph 4 - comment (orb_revision)
Issue 472: Version in Contained and RepositoryId formats (orb_revision)
Issue 473: Version in Contained and RepositoryId formats (orb_revision)
Issue 545: Enums and enumerators (orb_revision)
Issue 568: inherit vs. include (orb_revision)
Issue 571: Question about IDL grammar (orb_revision)
Issue 595: Section 16.7: only C++ mapping defines string_free and string_dup (orb_revision)
Issue 596: request() should be added to IDL (section 17.13.2) (orb_revision)
Issue 604: Section 7.2: get_implementation function (orb_revision)
Issue 609: TCKind enum should be updated (orb_revision)
Issue 610: create_exception() is declared outside any interface scope (orb_revision)
Issue 611: Syntax for basic types must be updated (orb_revision)
Issue 623: Section 7.8: editorial (orb_revision)
Issue 624: Section 3.7.2: take new IDL type extensions into account (orb_revision)
Issue 641: Do identifiers and keywords clash if they differ in case? (orb_revision)
Issue 665: TypeCode equality (orb_revision)
Issue 666: Native types with respect to typecodes, DII, DSI,Interface Reposit. (orb_revision)
Issue 724: Non ASCII alphabetics in IDL identifiers (orb_revision)
Issue 725: Octet and enum constants (orb_revision)
Issue 726: Figure 2-2 in CORBA 2.0 and CORBA 2.1 (orb_revision)
Issue 753: Inheriting exceptions in IDL (orb_revision)
Issue 754: Minor bug in 2.1 spec (orb_revision)
Issue 776: CORBA 2.1 IR Structdef typo (orb_revision)
Issue 783: IDL types are ambiguous with inheritance (orb_revision)
Issue 884: Appendix B lists incorrect CORBA Components IDs (orb_revision)
Issue 903: Ambiguity in non_existent() specification (orb_revision)
Issue 910: #pragma processing (orb_revision)
Issue 912: Inheritance of Exceptions (orb_revision)
Issue 913: defined_in member of ModuleDescription for top-level module (orb_revision)
Issue 916: Resetting #pragma prefix? (orb_revision)
Issue 918: CORBA::Contained::describe() underspecified (orb_revision)
Issue 992: CORBA 2.2 - "native" and the interface repository (orb_revision)
Issue 999: #pragma prefix issue (orb_revision)
Issue 1054: Marshalling is_equivalent (orb_revision)
Issue 1066: Fixed point constant typo in 2.2 (orb_revision)
Issue 1067: Wide character and wide string literals (orb_revision)
Issue 1068: Fixed point constants issue (orb_revision)
Issue 1071: Type of fixed point quotients (orb_revision)
Issue 1074: Typo in type code section (13.3.4) (orb_revision)
Issue 1086: How to deal with object identity (orb_revision)
Issue 1087: IDl "module" construct - IDL files (orb_revision)
Issue 1088: ORB_init (orb_revision)
Issue 1091: Editorial issue, chapter 8 (orb_revision)
Issue 1094: Indentation on page 4-4 (orb_revision)
Issue 1146: Semantics and standard exceptions (orb_revision)
Issue 1241: / in prefix pragma? (orb_revision)
Issue 1258: Type code constants are not defined/mentioned in OBV spec (obv-rtf)
Issue 1394: Typos in IR IDL in spec (01) (orb_revision)
Issue 1395: Typos in IR IDL in Specification (02) (orb_revision)
Issue 1396: Typos in IR IDL in Specification (03) (orb_revision)
Issue 1397: Typos in IR IDL in Specification (04) (orb_revision)
Issue 1398: Typos in IR IDL in Specification (050 (orb_revision)
Issue 1422: Does the DII support the standard object operations? (orb_revision)
Issue 1541: Type code typos (as only one issue) (orb_revision)
Issue 1542: Type code operations under-specified (orb_revision)
Issue 1543: Type code parameter ordering (orb_revision)
Issue 1545: Type codes cannot describe all unions (orb_revision)
Issue 1612: Description of Wide String type (orb_revision)
Issue 1688: Illegal IDL in CosTime module (orb_revision)

Portability Addendum:

Issue 1408: POA destroy() is ill-defined
Issue 1409: Multiple threads calling destroy() once destroy() has begun
Issue 1428: Blocking POA Operations
Issue 1627: Problems with deactivate_object()
 

Issue 116: Typecodes for recursive sequences (orb_revision)

Click here for this issue's archive.
Source: International Business Machines (Mr. Hari H. Madduri, hari@austin.ibm.com)
Nature: Uncategorized
Severity:
Summary: In the interface for the create_recursive_sequence_tc ORB method, is this just a matter of creating a TypeCode with these two fields, or is there a parameter missing?
Resolution: No parameter is missing. you just create a TypeCode with TCKind set to tk_sequence and content type set to the type code of the member at the offset.  However, it would be useful to provide better explanation to reduce the chances of this question coming up again. Proposed text below
Revised Text:
Replace the text in section 8.7.3 that says:

The create_recursive_sequence_tc operation is used to create TypeCodes
describing recursive sequences. The result of this operation is used in
constructing other types, with the offset parameter determining which
enclosing TypeCode describes the elements of this sequence. For
instance, to construct a TypeCode for the following OMG IDL structure,
the offset used when creating its sequence TypeCode would be one:

struct foo {
    long value;
    sequence <foo> chain;
};

with:

The create_recursive_sequence_tc operation is used to create TypeCodes
describing recursive sequences that are members of structs or unions.
The result of this operation should be used as the typecode in the
StructMemberSeq or UnionMemberSeq arguments of the create_struct_tc or
create_union_tc operations.  The offset parameter specifies which
enclosing struct or union is the target of the recursion, with the value
one indicating the most immediate enclosing struct or union, and larger
values indicating successive enclosing struct or unions.  For example,
the offset would be one for the following IDL structure:

struct foo {
    long value;
    sequence <foo> chain;
};

Once the recursive sequence TypeCode has been properly embedded in its
enclosing TypeCodes, it will function as a normal sequence TypeCode.
Invoking operations on the recursive sequence TypeCode before it has
been embedded in the required number of enclosing TypeCodes will result
in undefined behavior.
 

Actions taken: Incorporate proposed text in 2.3 and close issue
September 13, 1996: Received issue

Issue 128: ServerRequest::op_def() (orb_revision)

Click here for this issue's archive.
Source: International Business Machines (Mr. Hari H. Madduri, hari@austin.ibm.com)
Nature: Uncategorized
Severity:
Summary: What is the purpose of the ServerRequest::op_def method? It is not described in the Chap. 5 discussion of ServerRequest or in 18.4.1.
Resolution: Operation op_def not found in Chapter 6 DSI of Rev 2.2
Revised Text:
Actions taken: Propose close no change.
September 23, 1996: Received issue


Issue 156: Apparent error in CORBA 2.0 Interoperability (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: in 13.5.6 "The DCE ESIOP", "Location Policy Component" there is for module IOP a list of 4 "const octet statements.. The BNF appears to suggest that this is invalid.
Resolution: Has been fixed in rev 2.2 or earlier. The const declarations have been cleverly changed to #defines.
Revised Text:
Actions taken: Propose close no change
October 8, 1996: received issue

Issue 300: Recursive sequence TypeCodes (orb_revision)

Click here for this issue's archive.
Source: IONA (Mr. Steve Vinoski, vinoski@iona.com)
Nature: Uncategorized
Severity:
Summary: Are they a new TypeCode kind (tk_kind) or are they of the tk_sequence TypeCode kind/
Resolution: subsumed by issue 116 resolution
Revised Text:
Actions to be taken: subsumed by issue 116, close issue.
October 29, 1996: received issue

Issue 396: 4.2.1 create_request Paragraph 8 - comment (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: This paragraph should be deleted, since it is not useful for an application programmer.
Resolution: Could not find PAragraph 8 in corresponding section 5.2.1 of Rev 2.2
Revised Text:
Actions taken: Propose close no change
November 26, 1996: received issue

Issue 397: 4.2.2 add_arg Paragraph 5-comment (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: X/Open believes there is no need to use different wording. They don't believe that it is useful to indicate that mixing of methods might be allowed someday
Resolution: In Section 5.2.2 Para 5 Rev 2.2 remove the word "currently" from the last sentence
Revised Text:
Actions taken: Propose to make this change in Rev 2.3 and close issue
November 26, 1996: received issue

Issue 399: 4.6 Context Object Operations, Para 2 - objection (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: Spec reads " Property names are stored preserving their case, however names cannot differ simply by their case." This sentence should be deleted.
Resolution: In section 5.6 Para 2 Rev 2.2 remove the last sentence.
Revised Text:
Actions taken: Propose to apply resolution as above and close issue in 2.3
November 26, 1996: received issue

Issue 400: 4.3.1 sen3 - comment 23 - comment (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: X/Open recommends that this para is being reworded to require that applications call get_response after a send. Spec could also be modified to detect errors if response is not required
Resolution: Section 5.3.1 sentence 3 seems to be OK. Don't see why this change should be made.
Revised Text:
Actions taken: Propose close no change
November 26, 1996: received issue

Issue 402: 4.6.2 set_on_value Paragraph 2 - objection (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: Text reads:"Currently, only string values are supported by the context object." Sentence should be deleted, since PIDL requires that a string be the value provided
Resolution: Remove last sentence of section 5.6.2 of Rev 2.2
Revised Text:
Actions taken: Propose apply resolution to rev 2.3 and close issue
November 26, 1996: received issue

Issue 403: 4.6.3 set_values (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: See comment on set_value in issue # 402
Resolution: Remove last sentence of section 5.6.3 of Rev 2.2
Revised Text:
Actions taken: Propose apply resolution to rev 2.3 and close issue
November 26, 1996: received issue

Issue 404: 4.6.4 get_values Paragraph 2 - objection (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: The error to be returned must be specified.. Since a status is not required to be returned, it's incorrect to say that error is returned. Exception is raised.
Resolution: add text to sections 5.6.4, 5.6.5 and 5.6.7 stating what exceptions are raised under what conditions
Revised Text:
    Section 5,6,4 get_values
       CORBA::BAD_PARAM    if attribute is an empty string.
       CORBA::BAD_CONTEXT  if no matching attributes were found.
       CORBA::NO_MEMORY    if dynamic memory allocation failed.

   Section 5.6.5 delete_values
       CORBA::BAD_PARAM    if attribute is an empty string.
       CORBA::BAD_CONTEXT  if no matching attributes to be deleted
                           were found.

    Section 5.6.7 delete
        CORBA::BAD_PARAM    if there are one or more child context objects and the
                                                    CTX_DELETE_DESCENDENT flag is not set

Actions to be taken: incorporate change in 2.3 and close issues 404, 406, 407, 408, 409
November 26, 1996: received issue

Issue 405: 4.6.4 get_values Paragraph 4 - objection (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: Text indicates that "Value scope names are implementation-specific." Items not necessary for portable development of applications are unspecified,undefined.
Resolution: Remove paragraph 4. Does not add any value to the spec.
Revised Text:
Actions taken: Incorporate change proposed above and close
November 26, 1996: received issue

Issue 406: 4.6.4 get_values Paragraph 5 - objection (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: Text reads " If the specified scope name is not found, an exception is returned." Error to be indicated must be specified. See objection for Paragraph 2.
Resolution: See resolution of 404
Revised Text:
Actions to be taken: close after incorporating changes described in resolution of 404
November 26, 1996: received issue

Issue 408: 4.6.5 delete_values Paragraph 3 - objection (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: This paragraph indicates that an exception is returned. See objection for 4.6.4 get_values Paragraph 2
Resolution: see resolution of 404
Revised Text:
Actions to be taken:  close after incorporating changes described in resolution of 404
November 26, 1996: received issue

Issue 409: 4.6.7 delete Paragraph 4 - objection (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: The exception to be returned is not specified. See objection for 4.6.4 get_values Paragraph 2.
Resolution:
Revised Text:
Actions to be taken:  close after incorporating changes described in resolution of 404
November 26, 1996: received issue

Issue 429: 6.5.4 Container Paragraph 10 - comment (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: This para and para 4 both describe a limiy_type argument. These should be described in the same way since they appear to have the same semantics
Resolution: In Section 8.5.4 Rev 2.2 remove the first two paragraphs titled "limit_type", and "exclude_inherited" from page 8-16. They merely repeat similar paragraphs in the previous page and serve no purpose.
Revised Text:
Actions taken: Incorporate resolution and close issue.
November 26, 1996: received issue

Issue 430: 6.5.4 Container Paragraph 11 - comment (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: Same as issue # 429 with respect to 6.5.4 Container Paragraph 5.
Resolution: In section 8.5.4 Rev 2.2 remove the first two paragraphs titled "limit_type", and "exclude_inherited" from page 8-16. They merely repeat similar paragraphs in the previous page and serve no purpose.
Revised Text:
Actions taken: Incorporate resolution and close issue.
November 26, 1996: received issue

Issue 431: 6.5.4 Container Paragraph 12 - comment (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: Para refers to the describe operation. This operation is part of the parent interface from which container interface is inherited.There should be a pointer to the parent interface
Resolution: Para doesn't exist in rev 2.2, so apparently was fixed in 2.2
Revised Text:
Actions taken: Close no change
November 26, 1996: received issue

Issue 435: 6.5.6 Repository Paragraph 4 - comment (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: This Para refers to a PrimitiveDef. There should be a pointer to where this is defined.
Resolution: In section 8.5.6 second para under Read Interface, add a cross reference to section 8.5.13 where PrimitiveDef is defined.
Revised Text:
Actions taken: Incorporate resolution and close issue
November 26, 1996: received issue

Issue 437: 6.5.8 ConstantDef Interface Paragraph 2 - comment (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: There should be a pointer to the list of simple types.
Resolution: Replace the phrase "simple type( ..... )" by the phrase "primitive types allowed in a constant declaration", and give reference back to Chapter 3, section 3.7 Constant Declaration".
Revised Text:
Actions taken: Incorporate reolution and close issue
November 26, 1996: received issue

Issue 438: 6.5.10 StructDef Last paragraph - comment (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: Para indicates that the type member is ignored and that it should be set to TC_void. If it is ignored, why should it be set to anything?
Resolution: Remove the phrase "is ignored" from the last sentence of section 8.5.9 rev 2.2
Revised Text:
Actions taken: Incorporate resolution and close issue
November 26, 1996: received issue

Issue 439: 6.5.11 UnionDef Last Paragraph - comment (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: This Para indicates that the type member is ignored and that it should be set to TC_void. If it is ignored, why should it be set to anything?
Resolution: Remove the phrase "is ignored" from the last sentence of section 8.5.9 rev 2.2.
While we are at it, make the same change in section 8.5.19, i.e. remove the phrase "is ignored" from the last sentence of the section.
Revised Text:
Actions taken:  Incorporate resolution and close issue
November 26, 1996: received issue

Issue 440: 6.5.20 AttributeDef Paragraph 2 - comment (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: What does the describe operation return for this interface?
Resolution: Add the sentence "The describe operation for an AttributeDef object returns an AttributeDescription." in a separate paragraph in the "Read Interface" subsection of section 8.5.20 of rev 2.2.
Revised Text:
Actions taken: Incorporate resolution and close issue
November 26, 1996: received issue

Issue 443: 6.6.1 OMG IDL Format Paragraph 5 - comment (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: The semantics of minor version number changes should be a requirement on conforming applications (objects).
Resolution: That's what the sections appears to say.
Revised Text:
Actions taken: Close no change
November 26, 1996: received issue

Issue 444: 6.6.4 Pragma Directives for RepositoryId Para 1 - objection (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: Conforming compilers should ignore pragmas that are not defined. in this spec, and that they do not explicitly support. Portable applications should only use pragmas defined in this spec.
Resolution: The proposal in the summary is unreasonably restrictive, and would disallow use of other pragmas in a conforming compiler. Therefore my inclination is to say thanks but no thanks. However, putting in a sentence or two of clarification would improve the situation. Proposed text follows:
Revised Text:
Append the following sentences to Para 1 of section 8.6.4

"Conforming IDL compilers may support additional non-standard pragmas,
but must not refuse to compile IDL source containing non-standard
pragmas that are not understood by the compiler."
 

Actions taken: Incorporate proposed text in 2.3 and close issue.
November 26, 1996: received issue

Issue 446: 6.7.1 The TypeCode Interface All Paragraphs - objection (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: PIDL for this interface describes the exceptions that might be raised, but the text doesn't define the conditions when all of those exceptions might occur. This must be addressed.
Resolution:
Revised Text:
Actions taken: Fixed in 2.2 close no change.
November 26, 1996: received issue

Issue 447: 6.7.1 The Type Code Interface Paragraph 4 - comment (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: Last sentence: It's not clear under which conditions this is permitted. It's permitted when a structure,union,enumeration or alias typecode wasn't obtained from Interface Repository.
Resolution:
Revised Text:
Actions taken: Fixed in 2.2 close no change
November 26, 1996: received issue

Issue 472: Version in Contained and RepositoryId formats (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: Contained has attributes: attribute RepositoryId; attribute VersionSpec version; Are these version numbers related to version attribute? What is relationship?
Resolution: The version number in the Repository Id goes into the VersionSpec attribute.
Revised Text:
Actions taken: Close no change
January 8, 1997: received issue

Issue 473: Version in Contained and RepositoryId formats (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: CORBA Core 6.6.1 OMG IDL format RepositoryIds include third component, DCE UUID format RepositoryIds include a third component (CORBA 6.6.2). Related to version attribute??
Resolution: The version number in the Repository Id goes into the VersionSpec attribute.
Revised Text:
Actions taken: Close no change
January 8, 1997: received issue

Issue 545: Enums and enumerators (orb_revision)

Click here for this issue's archive.
Source: Hewlett-Packard (Dr. Jishnu Mukerji, jis@fpk.hp.com)
Nature: Uncategorized
Severity:
Summary: Sec 3.13 says enumerators don't create a nested scope.Implication: 2 differnt enum types within same module can't have same enumerator names. Flag following example as an error
Resolution: The implication is correct and changing the current specification to anything else will cause very major breakage in at least the C and C++ language bindings. Propose close no change.
Revised Text:
Actions taken: Propose close no change
April 10, 1997: received issue

Issue 568: inherit vs. include (orb_revision)

Click here for this issue's archive.
Source: Xerox (Mr. Mike Spreitzer, spreitze@parc.xerox.com)
Nature: Uncategorized
Severity:
Summary: Ther is sense in which an interface "includes" operations it inherits from its base interface.Does it also "include" types, constants, and exceptions?
Resolution: This has been explained in quite some detail with examples in the revision to Chapter 3 recommended to the PTC at Orlando. I consider this to have been fixed in the revised chapter
Revised Text:
Actions taken: close issue with annotation fixed in Rev 2.2+
May 21, 1997: received issue

Issue 571: Question about IDL grammar (orb_revision)

Click here for this issue's archive.
Source: Object Management Group (Dr. Richard Mark Soley, soley@omg.org)
Nature: Uncategorized
Severity:
Summary: Is it a mistake, in IDL grammar as given in CORBA 2.0, revised July 1996, that is not one of s?
Resolution: subsumed by issue 725
Revised Text:
Actions taken: close - subsumed by issue 725
May 6, 1997: received issue

Issue 595: Section 16.7: only C++ mapping defines string_free and string_dup (orb_revision)

Click here for this issue's archive.
Source: Applied Testing and Technology (Mr. Stephen McNamara, stephen@aptest.ie)
Nature: Uncategorized
Severity:
Summary: Only the C++ mapping defines string_free and string_dup. Why are these methods not present in other language mappings? If they are generally applicable they should be added to the IDL
Resolution: They are C++ language specific helper functions, that is why they are in the C++ mapping section. They are not generally appicable functions.
Revised Text:
Actions taken: Propose close no change.
July 9, 1997: recived issue

Issue 596: request() should be added to IDL (section 17.13.2) (orb_revision)

Click here for this issue's archive.
Source: Applied Testing and Technology (Mr. Stephen McNamara, stephen@aptest.ie)
Nature: Uncategorized
Severity:
Summary: The Object C++ mapping has an _request() method that is not in the IDL. This method should be added to the IDL
Resolution: The Object::_request operation is an artifact of the C++ mapping and not generally applicable to other language mappings, hence it should not be added to the Object IDL.
Revised Text:
Actions taken: Close no change.
July 9, 1997: received issue
 

Issue 604: Section 7.2: get_implementation function (orb_revision)

Click here for this issue's archive.
Source: Applied Testing and Technology (Mr. Stephen McNamara, stephen@aptest.ie)
Nature: Uncategorized
Severity:
Summary: Why does Object have a get_implementation function instead of a readonly implementation attribute? (likewise for get_interface)
Resolution: 'cause that is the way they were specified. Changing them now would be too painfull
Revised Text:
Actions taken: Propose close no change
July 9, 1997: received issue
 

Issue 609: TCKind enum should be updated (orb_revision)

Click here for this issue's archive.
Source: Applied Testing and Technology (Mr. Stephen McNamara, stephen@aptest.ie)
Nature: Uncategorized
Severity:
Summary: Section 6.8: TCKind enum should be updated to include adopted IDL type extensions as follows: tk_longlong, tk_longdouble, tk_wstring, tk_wchar. Update DefinitionKind and PrimitiveKind enum
Resolution: Fixed in Rev 2.2
Revised Text:
Actions taken: Close, fixed in 2.2
July 9, 1997: received issue

Issue 610: create_exception() is declared outside any interface scope (orb_revision)

Click here for this issue's archive.
Source: Applied Testing and Technology (Mr. Stephen McNamara, stephen@aptest.ie)
Nature: Uncategorized
Severity:
Summary: Section 6.8: The create_exception() methos is declared outside any interface scope. It seems logical to move it to Container Interface along with other create_XXX() methods
Resolution: Fixed in 2.2
Revised Text:
Actions taken: Fixed in 2.2 Close
July 9, 1997: received issue

Issue 611: Syntax for basic types must be updated (orb_revision)

Click here for this issue's archive.
Source: Applied Testing and Technology (Mr. Stephen McNamara, stephen@aptest.ie)
Nature: Uncategorized
Severity:
Summary: Section 3.8.1: The syntax for basic types must be updated to include the adopted IDL type extensions.
Resolution: Fixed in 2.2
Revised Text:
Actions taken: Close Fixed in 2.2
July 9, 1997: received issue

Issue 623: Section 7.8: editorial (orb_revision)

Click here for this issue's archive.
Source: Applied Testing and Technology (Mr. Stephen McNamara, stephen@aptest.ie)
Nature: Uncategorized
Severity:
Summary: Section 7.8: ; is missing from definition of attribute policy_type
Resolution: Fixed in 2.2
Revised Text:
Actions taken: Close, Fixed in 2.2
July 9, 1997: received issue

Issue 624: Section 3.7.2: take new IDL type extensions into account (orb_revision)

Click here for this issue's archive.
Source: Applied Testing and Technology (Mr. Stephen McNamara, stephen@aptest.ie)
Nature: Uncategorized
Severity:
Summary: The section states that the <> operands must be in the range 0 to 32. Should be changed to 0 to 64 to take new IDL type extensions into account
Resolution: Fixed in 2.2
Revised Text:
Actions taken: Close, Fixed in 2.2
July 9, 1997: received issue

Issue 641: Do identifiers and keywords clash if they differ in case? (orb_revision)

Click here for this issue's archive.
Source: Object Management Group (Mr. Andrew Watson, andrew@omg.org)
Nature: Uncategorized
Severity:
Summary: Section 3.2.3 and 3.2.4: It's not said explicitly that an identifier may not differ from a keyword only in case since it differs only in case from a keyword
Resolution: Explained in detail in revised Chapter 3. See Chapter 3 in 2.2+
Revised Text:
Actions taken: Fixed in 2.2+, Close
July 30, 1997: received issue
 

Issue 665: TypeCode equality (orb_revision)

Click here for this issue's archive.
Source: IONA (Mr. Steve Vinoski, vinoski@iona.com)
Nature: Uncategorized
Severity:
Summary: TypeCode equality is not very well-specified or portable.
Resolution: Incorporate more complete specification as shown below:
 
Revised Text:
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

In section 3.8.2 following to the paragraph describing the any type:

An any logically contains a TypeCode (see 8.7) and a value that is
described by the TypeCode.  Each IDL language mapping provides
operations that allow programers to insert and access the TypeCode and
value contained in an any.

--------------------------------------------------------------------------------

Add the following operations to the TypeCode interface definition in
both sections 8.7 and 8.8, right after the equal operation:

    ...
    interface TypeCode {
        ...
        boolean equivalent(in TypeCode tc);
        TypeCode get_compact_typecode();
        ....
    };

--------------------------------------------------------------------------------

Add the following text to section 8.7 right after the description of the
equal operation:

The equivalent operation is used by the ORB when determining type
equivalence for values stored in an IDL any.  TypeCodes are considered
equivalent based on the following semantics:

a) if the result of the kind operation on either TypeCode is tk_alias,
recursively replace the TypeCode with the result of calling
content_type, until the kind is no longer tk_alias.

b) If results of the kind operation on each typecode differ, equivalent
returns false.

c)  If the id operation is valid for the TypeCode kind, equivalent
returns true if the results of id for both TypeCodes are non-empty
strings and both strings are equal.  If both ids are non-empty but are
not equal, then equivalent returns false.  If either or both id is an
empty string, or the TypeCode kind does not support the id operation,
equivalent will perform a structural comparison of the TypeCodes by
comparing the results of the other TypeCode operations in steps d
through g.  The structural comparison only calls operations that are
valid for the given TypeCode kind.  If any of these operations do not
return equal results, then equivalent returns false.  If all comparisons
are equal, equivalent returns true.

d)  The results of the name and member_name operations are ignored and
not compared.

e)  The results of the member_count, default_index, length, digits and scale operations are compared.

f)  The results of the member_label operation for each member index of a
union TypeCode are compared for equality.  Note that this means that
unions whose members are not defined in the same order are not
considered structurally equivalent.

g)  The results of the discriminator_type and member_type operations for each member index, and
the result of the content_type operation are compared by recursively
calling equivalent.

Applications that need to distinguish between a type and different
aliases of that type can supplement equivalent by directly invoking the
id operation and comparing the results.

The get_compact_typecode operation strips out all optional name & member
name fields, but it leaves all alias typecodes intact.

--------------------------------------------------------------------------------

Add the following operation to the Repository interface in section 8.5.6
as well as section 8.8, right after the lookup_id operation:

    interface Repository {
        ...
        TypeCode get_canonical_typecode(in TypeCode tc);
    };

--------------------------------------------------------------------------------

Add the following paragraph to section 8.8, right after the description
of the lookup_id operation:

The get_canonical_typecode operation looks up the TypeCode in the
Interface Repository and returns an equivalent TypeCode that includes
all repository ids, names, and member_names.  If the top level TypeCode
does not contain a RepositoryId, such as array and sequence TypeCodes,
or TypeCodes from older ORBs, or if it contains a RepositoryId that is not
found in the target Repository, then a new TypeCode is constructed by
recursively calling get_canonical_typecode on each member TypeCode of
the original TypeCode.

--------------------------------------------------------------------------------

Change the last paragraph of the description of the DynAny::assign
operation, section 7.2.3 to:

If an invalid DynAny object is passed (a DynAny with a typecode that is
not equivalent or doesn't contain a meaningful value), the Invalid
exception is returned.

--------------------------------------------------------------------------------

Change the last paragraph of the description of the DynAny::from_any
operation, section 7.2.3 to:

If an invalid any is passed (an any with a typecode that is not
equivalent, or hasn't been assigned a value) the Invalid exception is
returned.

--------------------------------------------------------------------------------

Add the following paragraph right after the third paragraph of
description of the "Accessing a value of some basic type in a DynAny
object" in section 7.2.3:

A type is consistent for inserting or extracting a value if its TypeCode
is equivalent to the TypeCode contained in the DynAny.

--------------------------------------------------------------------------------

Add the following paragraph to the description of the
DynAny::current_component operation in section 7.2.3, right after the
first paragraph:

The TypeCode of the component DynAny is the corresponding member_type or
component_type of the TypeCode of the parent DynAny.

--------------------------------------------------------------------------------
Actions to be taken: incorporate changes in 2.3 and close issue. 

August 11, 1997: received issue
May 12, 1998: issue moved from port-rtf to orb_revision

Issue 666: Native types with respect to typecodes, DII, DSI,Interface Reposit. (orb_revision)

Click here for this issue's archive.
Source: Floorboard Software (Mr. Jonathan Biggar, jon@floorboard.com)
Nature: Uncategorized
Severity:
Summary: The portability spec is silent on issue of native types with respect to typecodes, DII, DSI and Interface Repository. Issue should be addressed. (see archive for details)
Resolution: Proposed resolution is to add representation of native type in the IR. Details below as proposed by George Scott.

Here are the proposed extensions to allow native types in the IR.  Our
current position on DII/DSI with native types is
that it should not be allowed.

The proposed IR changes are as follows:
Revised Text:
A new definition kind is added called dk_Native:

        enum DefinitionKind {
                dk_none, dk_all,
                dk_Attribute, dk_Constant, dk_Exception, dk_Interface,
                dk_Module, dk_Operation, dk_Typedef,
                dk_Alias, dk_Struct, dk_Union, dk_Enum,
                dk_Primitive, dk_String, dk_Sequence, dk_Array,
                dk_Repository, dk_Wstring, dk_Fixed,
                // OBV dks go here
                dk_Native // value = 23 accomodating OBV changes
        };

A new create operation is added, called create_native:

module CORBA {
        ...
        interface NativeDef;
        interface Container: IRObject {
                ....

                NativeDef create_native(
                        in RepositoryId id,
                        in Identifier name,
                        in VersionSpec version
                );
                ...
        };
        ...
};

A new interface called NativeDef is also added, which defines
no additional operations.

module CORBA {
        ...

        interface NativeDef: TypedefDef {
        };
        ...
};
 
Additional changes to incorporate the tk_native typecode:

1. In section 8.7.1 add tk_native to the declaration of enum TCKind as the last tk.

2. Add tk_native to the list of tks in comment that apply to the id() and the name() operations in their IDL declaration.

3. In the fourth para following the IDL in Section 8.7.1, the para that begins "The id operation...", in the first sentence, replace the phrase "alias, and exception" by the phrase "alias, exception and native".

4. In the fifth para following the IDL in Section 8.7.1, the para that begins "The name operation...", in the first sentence, replace the phrase "alias, and exception" by the phrase "alias, exception and native".

5. In table 8-1 add the line:

    native        native-id            native-name

6. In Section 8.7.3, section 8.8, and section 4.1 append the following to the ORB interface IDL:
 
    TypeCode create_native_tc(
         in RepositoryId id,
         in Identifier name
       );

7. Add tk_native to table 13-2 and add associated text in Chapter 13.

Actions to be taken: Incorporate proposed text and close issue.
August 11, 1997: received issue
May 12, 1998: issue moved from port-rtf to orb_revision
 

Issue 724: Non ASCII alphabetics in IDL identifiers (orb_revision)

Click here for this issue's archive.
Source: DSTC (Mr. Michi Henning, michi@dstc.edu.au)
Nature: Uncategorized
Severity:
Summary: IDL identifiers can contain non-ASCII alphabetic characters. None of the language maappings deals with this. To fix this restrict IDL identifiers to ASCII characters, digits and underscore
Resolution: Since most of the implementation languages to which IDL is mapped do not accept non-ASCII characters in identifiers, and none of the language mappings for those languages deal with how non-ASCII characters get mapped to ASCII characters, it is time to recognize reality and restrict the alphabets in IDL identifiers to the ASCII subset 0f ISO 8859.1. The necessary changes in text are presented below
Revised Text: All revisions refer to base document Rev 2.2+ i.e. Rev 2.2 as modified by ptc/98-03-03

Section 3.2 last paragraph: Replace the paragraph with the following:

"OMG IDL uses the ASCII character set, except for string literals
 and character literals, which use the ISO Latin-1 (8859.1) character
 set. The ISO Latin-1 character set is divided into alphabetic characters (letters)
digits, graphic characters, the space (blank) character, and formatting characters.
Table 3-2 shows the ISO Latin-1 alphabetic characters; upper and lower case
equivalences are paired. The ASCII alphabetic characters
are shown in the left-hand column of Table 3-2."

Section 3.2.3: First Paragraph: replace by:

"An identifier is an arbitrarily long sequence of the ASCII alphabetic, digit, and underscore ("_") characters. The first character must be ASCII alphabetic. All characters are significant."

Section 3.2.3 bullet list: Remove the second bullet item.

Actions taken: Incorporate proposed changes and close issue
September 17, 1997: received issue

 

Issue 725: Octet and enum constants (orb_revision)

Click here for this issue's archive.
Source: DSTC (Mr. Michi Henning, michi@dstc.edu.au)
Nature: Uncategorized
Severity:
Summary: IDL should permit enum and octet constants.
Resolution:
The following changes add enum and octet constants to IDL:
Revised Text:
Page 3-11, production 13:

Add

        <const_type> ::=
                     |   <octet_type>
 
to the existing alternatives. There is no need to make a change
for enums here because <scoped_name> is already a legal alternative.
Similarly, we need not make a change to the productions for <const_exp>,
because <primary_expr> already permits a <scoped_name> as the value
of a constant.

Page 3-18:

Add the same <octet_type> alternative to the production for
<const_type>.

Section 3.7.2, page 3-20:

Change the first sentence to read:

        The <scoped_name> in the <const_type> production must be a
        previously defined name of an <integer_type>, <char_type>,
        <wide_char_type>, <boolean_type>, <floating_pt_type>,
        <fixed_pt_const_type>, <string_type>, <wide_string_type>,
        <octet_type>, or <enum_type> constant.

[ While we are at it, there is a typo in <wide_ char_type> -- there is
  an extraneous space here that needs to be deleted. ]

End of section 3.7.2:

Add the following text to the end of the section:

        An octet constant can be defined using an integer literal
        or an integer constant expression, for example:

        const octet O1 = 0x1;
        const long L = 3;
        const octet O2 = 5 + L;

        Values for an octet constant outside the range 0 - 255 shall
        cause a compile-time error.

        An enum constant can only be defined using a scoped name for the
        enumerator. The scoped name is resolved using the normal
        scope resolution rules (XREF). For example:

        enum Color { red, green, blue };
        const Color FAVOURITE_COLOR = red;

        module M {
                enum Size { small, medium, large };
        };
        const M::Size MYSIZE = M::medium;

        The constant name for the RHS of an enumerated constant definition
        must denote one of the enumerators defined for the enumerated
        type of the constant. For example:

        const Color col = red;    // is OK but
        const Color another = M::medium; // is an error
 
Actions to be taken: Incorporate change and close issue
September 17, 1997: received issue
 

Issue 726: Figure 2-2 in CORBA 2.0 and CORBA 2.1 (orb_revision)

Click here for this issue's archive.
Source: Object Management Group (Dr. Richard Mark Soley, soley@omg.org)
Nature: Uncategorized
Severity:
Summary: In the figure all the interfaces/skeletons/adaptors/stubs have either an Up-call or a Normal-call arrow or both with the exception of the Dynamic Skeleton which has neither
Resolution: Add an Up-Call Arrow to the Dynamic skeleton box.
Revised Text:
Actions taken: Incorporate resolution and close issue.
September 18, 1997: received issue

Issue 753: Inheriting exceptions in IDL (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized Issue
Severity: Significant
Summary: When writing IDL, why is it not possible to have an exception declaration inherit from another exception? It's possible to have an interface inherit another interface, so it seems logical to derive an exception class from an already declared exception area
Resolution: This has been rejected previously because it is difficult and too
cumbersome to map exceptions that allow multiple inheritence into
languages that do not support unrestricted multiple inheritence.

The fundamental reason why multiple inheritence can work for
interfaces, but not for exceptions is that interfaces are abstract, without any
visible data storage, but exceptions are concrete types with visible
data storage.  To allow multiple inheritence of exceptions when mapping to
a language like C, would require that the exception layout be explicitly
visible to the programmer, using a mechanism similar to C++ handling
of virtual base classes.  This solution would be very messy and make
programming with exceptions very difficult for those languages.
Revised Text:
Actions taken: Propose close issue with no change with the above explanation.
October 23, 1997: received issue

Issue 754: Minor bug in 2.1 spec (orb_revision)

Click here for this issue's archive.
Source: DSTC (Mr. Michi Henning, michi@dstc.edu.au)
Nature: Revision
Severity: Minor
Summary: The grammar mentions fixed point literals for constsnts on page 3-12. The corresponding section of the grammar on page 3-19 does not include as a valid constant initializer
Resolution:
Part 1:  Fix the grammar to prohibit anonymous fixed point parameter
declarations [Resolves 754]

Change Production 80 to remove <fixed_pt_type> as a valid parameter type:

<param_type_spec> ::= <base_type_spec>
        | <string_type>
        | <wide_string_type>
        | <fixed_pt_type>
        | <scoped_name>

Also add the missing production on page 3-19:

<fixed_pt_const_type> ::= "fixed"

Rational:

Leaving this in causes problems with the C++ binding in the same way
that the grammar from CORBA 1.1 and earlier had problems with
sequences and arrays as parameters.  This is also likely to cause
problems with the Ada binding, since each fixed point declaration is
mapped to a distinct Ada type.

Part 2:  Fix the grammar for fixed point constants [Resolves #1066]

Change the first paragraph of section 3.7.2 to read:

The <scoped_name> in the <const_type> production must be a previously
defined name of an <integer_type>, <char_type>, <wide_ char_type>,
<boolean_type>, <floating_pt_type>, <string_type>, or
<wide_string_type> constant.

Also, change the "3000.00" in the example of fixed point digits and
scale to "3000.00D".

Rational:

Fixed point constants are defined using the syntax "fixed", not
"fixed<d,s>", while fixed point types are defined using the later
syntax.  So there is no way for a <scoped_name> to refer to a
<fixed_pt_const_type>.

Part 3: Modify the paragraph at the top of 3-21 to read:

A quotient may have an arbitrary number of decimal places, denoted by
a scale of s inf . The computation proceeds pairwise, with the usual
rules for left-to-right association, operator precedence, and
parentheses. All intermediate computations should be performed using
double precision (i.e. 62 digit) arithmetic.  If an individual
computation between a pair of fixed-point literals actually generates
more than 31 significant digits, then a 31-digit result is retained as
follows:

Rational:  This change is to make sure that all IDL compilers
calculate the results of fixed-point constants the same way, so as not
to break interoperability.

Part 4: Reword the description of Fixed Type in section 3.8.3 to be:

The fixed data type represents a fixed-point decimal number of up to
31 significant digits. The scale factor is a non-negative integer less
than or equal to the total number of digits (note that constants with
effectively negative scale, such as 10000, are always permitted).

The fixed data type will be mapped to the native fixed point
capability of a programming language, if available.  If there is not a
native fixed point type, then the IDL mapping for that language will a
fixed point data type.  Applications that use the IDL fixed point type
across multiple programming languages must take in to account
differences between the languages in handling rounding, overflow, and
arithmetic precision.

Rational:

If these values of scale are not universally supported by language
bindings, then they are not portable, and so should not be supported
by IDL.

The Smalltalk, Ada, Cobol and Java languages already contain a native
fixed point facility.  To define a separate IDL fixed point capability
for these languages would be redundant and interfere with integrating
legacy code.
 

Revised Text:
1. Change Production 80 to remove <fixed_pt_type> as a valid parameter type:

<param_type_spec> ::= <base_type_spec>
        | <string_type>
        | <wide_string_type>
        | <fixed_pt_type>
        | <scoped_name>

Also add the missing production on page 3-19:

<fixed_pt_const_type> ::= "fixed"

2. Change the first paragraph of section 3.7.2 to read:

The <scoped_name> in the <const_type> production must be a previously
defined name of an <integer_type>, <char_type>, <wide_ char_type>,
<boolean_type>, <floating_pt_type>, <string_type>, or
<wide_string_type> constant.

Also, change the "3000.00" in the example of fixed point digits and
scale to "3000.00D".

3. Modify the paragraph at the top of 3-21 to read:

A quotient may have an arbitrary number of decimal places, denoted by
a scale of s inf . The computation proceeds pairwise, with the usual
rules for left-to-right association, operator precedence, and
parentheses. All intermediate computations should be performed using
double precision (i.e. 62 digit) arithmetic.  If an individual
computation between a pair of fixed-point literals actually generates
more than 31 significant digits, then a 31-digit result is retained as
follows:

4. Reword the description of Fixed Type in section 3.8.3 to be:

The fixed data type represents a fixed-point decimal number of up to
31 significant digits. The scale factor is a non-negative integer less
than or equal to the total number of digits (note that constants with
effectively negative scale, such as 10000, are always permitted).

The fixed data type will be mapped to the native fixed point
capability of a programming language, if available.  If there is not a
native fixed point type, then the IDL mapping for that language will a
fixed point data type.  Applications that use the IDL fixed point type
across multiple programming languages must take in to account
differences between the languages in handling rounding, overflow, and
arithmetic precision.

Actions to be taken: incorporate changes in 2.3 and close this issue and 1066.
October 21, 1997: received issue

Issue 776: CORBA 2.1 IR Structdef typo (orb_revision)

Click here for this issue's archive.
Source: DSTC (Dr. Stephen Crawley, crawley@dstc.edu.au)
Nature: Uncategorized Issue
Severity: Minor
Summary: "Read Interface" section of 7.5.10: The second sentence is a typo. The StructDef as a whole can "contain" structs, unions, and enums. However, the members attribute is a CORBA IDL data type not a subtype of Container, and hence cannot "contain" anything in the sense used elsewhere in the IR spec. The sentence should be deleted
Resolution: Remove the second sentence in section 8.5.10 of Rev 2.2
Revised Text:
Actions taken: Incorporate resolution in 2.3 and close issue
October 30, 1997: received issue

Issue 783: IDL types are ambiguous with inheritance (orb_revision)

Click here for this issue's archive.
Source: DSTC (Mr. Michi Henning, michi@dstc.edu.au)
Nature: Uncategorized Issue
Severity: Significant
Summary: What is the return type of parent(), short or long? The spec does not say whether the inherited ::y::y::z takes precedence, or whether it is ::x::z. The scope resolution rules don't mention how to resolve such an ambiguity. The spec should be updated to state that ::x::z takes precedence (IDL example in corresponding archive "issue783")
Resolution: Has been explained in example in revised Chapter 3 of Rev 2.2+
Revised Text:
Actions taken: Close noting that this has been explained in Revised Chapter 3.
November 25, 1997: received issue
January 5, 1998: issue moved from C++ to ORB Revision

Issue 884: Appendix B lists incorrect CORBA Components IDs (orb_revision)

Click here for this issue's archive.
Source: Humboldt-Universitaet (Mr. Martin von Loewis, loewis@informatik.hu-berlin.de)
Nature: Uncategorized Issue
Severity: Significant
Summary: 1. Appendix B lists the CORBA Component IDs. This listing is incorrect: Proposed resolution: Change Appendix B to correspond to the main text.
Resolution: Fixed in 2.2
Revised Text:
Actions taken: Close issue with above annotation.
January 7, 1998: received issue
 

Issue 903: Ambiguity in non_existent() specification (orb_revision)

Click here for this issue's archive.
Source: DSTC (Mr. Michi Henning, michi@dstc.edu.au)
Nature: Uncategorized Issue
Severity:
Summary: There is a minor ambiguity here. Consider the case where the ORB cannot make a reliable determination because the client-side run-time cannot reach the implementation repository or the server. In that case, most ORBs will raise a TRANSIENT or COMM_FAILURE exception. I can read the above words in the spec to mean that a compliant implementation of non_existent is allowed to hide the exception from me and return false instead. I suggest to amend the wording such that non_existent is obliged to propagate any exception other than OBJECT_NOT_EXIST back to the caller.
Resolution: Sugested text below
Revised Text: Section 4.2.5:

Insert the following para after para 1:

        Probing for object non-existence may require contacting
        the ORB that implements the target object. If an attempt
        to contact the target object fails and therefore, no reliable
        determination can be made, non_existent raises whatever exception
        was raised by the remote ORB to the application code. This is
        necessary to enable an application to distinguish between the
        true, false, and indeterminate cases.
 

Actions to be taken: incorporate revised text and close issue.
January 13, 1998: received issue
 
 

Issue 910: #pragma processing (orb_revision)

Click here for this issue's archive.
Source: DSTC (Mr. Michi Henning, michi@dstc.edu.au)
Nature: Uncategorized Issue
Severity:
Summary: On page 7-32, the 2.1 spec says about #pragma processing: An IDL compiler must either interpret these annotations as specified, or ignore them completely. I don't think this makes sense. If the prefix pragma isn't honored in one ORB, but used by another ORB, the repository IDs will disagree for types generated from the same IDL definition, but with different IDL compilers. This in turn means that interoperability is destroyed.
Resolution: See resolution of 999
Revised Text:
Actions to be taken: Incorporate changes as described in resolution of Issue 999 and close this issue
January 23, 1998: received issue
 

Issue 912: Inheritance of Exceptions (orb_revision)

Click here for this issue's archive.
Source: Harlequin (Mr. Neal Feinberg, nealf@harlequin.com)
Nature: Uncategorized Issue
Severity:
Summary: This is a request to add an optional extension to IDL which would permit an exception declaration to include a specification of the superexception or superexceptions for a given exception, exactly the same way superinterfaces may be specified when defining an interface.The advantage of this extension is that it (optionally) permits interface designers to organize exceptions into categories, which can help clarify the design of the exceptions.
Resolution: This has been rejected previously because it is difficult and too
cumbersome to map exceptions that allow multiple inheritence into
languages that do not support unrestricted multiple inheritence.

The fundamental reason why multiple inheritence can work for
interfaces, but not for exceptions is that interfaces are abstract, without any
visible data storage, but exceptions are concrete types with visible
data storage.  To allow multiple inheritence of exceptions when mapping to
a language like C, would require that the exception layout be explicitly
visible to the programmer, using a mechanism similar to C++ handling
of virtual base classes.  This solution would be very messy and make
programming with exceptions very difficult for those languages.
Revised Text:
Actions taken: Prpose close issue with above resolution and no change.
January 22, 1998: received issue

Issue 913: defined_in member of ModuleDescription for top-level module (orb_revision)

Click here for this issue's archive.
Source: Franz (Dr. Lewis Stiller, stiller@franz.com)
Nature: Uncategorized Issue
Severity:
Summary: What is the value member of what is returned by CORBA::Contained::describe when invoked on a CORBA::ModuleDef object corresponding to a top-level IDL module?
Resolution: Although it is not actually stated anywhere, it seems natural that the intended value of the defined_in member of the ModuleDescription struct is the RepositoryId of the object in which the given ModuleDef is defined, that is, the RepositoryId of the value of the defined_in attribute of the corresponding ModuleDef object.

However, a Container that is not a Contained, i.e. a Repository, does not have any id attribute and presumably, thus, has no RepositoryId. For instance, there is no way to get the RepositoryId of a Repository, if it had one (which I presume it does not). That is, id is an attribute of Contained, not of Container.

This problem occurs not only for ModuleDef, but also for InterfaceDef, TypeDef, ExceptionDef, ConstantDef, i.e. things that can be placed in the top level Repository.

Probably the simplest fix would be to declare that the repositoryID of the Repository is an empty
string and use that value for the  defined_in field of the Def structures.

Revised Text:
Add the following paragraph immediately following the first paragraph of section 8.5.6 pp 8-16

"Since Repository derives only from Container and not from Contained, it does not have a RopositoryId associated with it. By default it is deemed to have the RepositoryId "" (the empty string) for purposes of assigning a value to the defined_in field of the definition structure of ModuleDef, InterfaceDef, TypeDef, ExceptionDef and ConstantDef that are contained immediately in the Repository object".

Actions to be taken: Incorporate change in 2.3 and close issue
January 21, 1998: received issue

Issue 916: Resetting #pragma prefix? (orb_revision)

Click here for this issue's archive.
Source: DSTC (Mr. Michi Henning, michi@dstc.edu.au)
Nature: Uncategorized Issue
Severity:
Summary: the spec doesn't say how I can reset a repository ID prefix back to nothing after I have set it. Consider #pragma prefix "dstc.edu.au" interface foo {}; #pragam prefix "" // Attempt to reset prefix interface bar {}; This doesn't work with at least one ORB I have tried.
Resolution: See resolution of issue 999
Revised Text:
Actions taken: Incorporate changes as described in resolution of Issue 999 and close this issue
January 26, 1998: received issue
 

Issue 918: CORBA::Contained::describe() underspecified (orb_revision)

Click here for this issue's archive.
Source: DSTC (Dr. Stephen Crawley, crawley@dstc.edu.au)
Nature: Revision
Severity:
Summary: The describe() operation of the CORBA::Contained interface of the Interface Repository is under-specified in CORBA 2.1. (section 7.5.3 on page 7-12). The text should add that the 'kind' field of the returned Description struct should give the DefinitionKind for the "most derived" type of the object. Without this, the spec can be read as allowing describe() to return a kind of dk_Typedef, or even dk_all!
Resolution: incorporate the proposed clarification
Revised Text: In the last para of the Read Interface subsection of section 8.5.3 page 8-11 CORBA V2.2, insert the following sentence after the second sentence in this para:

" The 'kind' field of the returned Description struct shall give the DefinitionKind for the most derived type of the object."

Append after the last sentence of the same paragraph: "The kind field in this must contain dk_attribute and not the kind of any IRObject from which the attribute object is derived. For example returning dk_all would be an error."

Actions to be taken: incorporate proposed change in 2.3 and close issue.
January 25, 1998: received issue
 

Issue 992: CORBA 2.2 - "native" and the interface repository (orb_revision)

Click here for this issue's archive.
Nature: Uncategorized Issue
Severity: Significant
Summary: Whilst implementing the POA I noticed that there were no extensions to the Interface Repository or TypeCodes to handle native types. The nett result appears to be that there is no way to express some of the POA interfaces in the Interface Repository. Obviously the native interfaces themselvse can't be expressed, but nor can some of the IDL specified interfaces. e.g. ServantLocator has two operations (preinvoke and postinvoke) both of which have a Cookie listed as a parameter. There appears to be no way to generate a TypeCode for the Cookie (native) paramter and therefore no way to perform an InterfaceDef.create_operation to desribe either of preinvoke or postinvoke.
Resolution: effectively same as issue 666. See resolution of issue 666
Revised Text:
Actions taken: Close, issue same as 666
March 5, 1998: received issue

Issue 999: #pragma prefix issue (orb_revision)

Click here for this issue's archive.
Source: Floorboard Software (Mr. Jonathan Biggar, jon@floorboard.com)
Nature: Uncategorized Issue
Severity:
Summary: How does the scope of #pragma prefix interact with #include? Find details in the corresponding archive
Resolution: The following text changes describe the resolution. Since vote 3 the changes to 8.6 have been added and the sentence that restricted pragma IDs to a limited set of formats has been eased to state that the <id> in the ID pragma  must be a repository ID, without mentioning any specific formats.
Revised Text:

Add the following text at the end of the intro to section 8.6 (before
section 8.6.1:

  Since new repository ID formats may be added from time to time,
    compliant IDL compilers must accept any string value of the form
    "<format>:<string>" provided as the argument to the id pragma and
    use it as the repository ID.  The OMG maintains a registry of
    allocated format identifiers.  The <format> part of the ID may not
    contain a colon (:) character.

    The version and prefix pragmas only affect default repository IDs
    that are generated by the IDL compiler using the IDL format.

Change the last sentence of para 1 in section 8.6.4 to read:

        An IDL compiler must interpret these annotations as specified.

Add the following text at the end of "The ID Pragma":

        The <id> must be a repository ID of the form described in 8.6.

        If an attempt is made to assign a repository ID to the same
        IDL construct a second time, a compile-time diagnostic shall
        be emitted, regardless of whether the second ID is in conflict or not:

        interface A {};
        #pragma ID A "IDL:A:1.1"
        #pragma ID A "IDL:X:1.1"        // Compile-time error

        interface B {};
        #pragma ID B "IDL:BB:1.1"
        #pragma ID B "IDL:BB:1.1"       // Compile-time error

        It is also an error to apply an ID to a forward-declared interface
        and then later assign the same or a different ID to that interface.

Para 1 of 8.6.4 says:

        The pragma directives can be used with the OMG IDL, DCE UUID, and
        LOCAL formats.

Change this to:

        The prefix and version pragma directives only apply to IDL formats.

Replace the last sentence of the para following the first example of 8.6.4,
"The Prefix Pragma" with the following text:

        The specified prefix applies to RepositoryIds generated after
        the pragma until the end of the current scope is reached or
        another prefix pragma is encountered. An IDL file forms a scope
        for this purpose, so a prefix resets to the previous prefix
        at the end of the scope of an included file:

        // A.idl
        #pragma prefix "A"
        interface A {};

        // B.idl
        #pragma prefix "B"
        #include "A.idl"
        interface B {};

        The repository IDs for interfaces A and B in this case are:

        IDL:A/A:1.0
        IDL:B/B:1.0
 
        Similarly, a prefix in an including file does not affect the
        prefix of an included file:

        // C.idl
        interface C {};

        // D.idl
        #pragma prefix "D"
        #include "C.idl"
        interface D {};

        The repository IDs for interface C and D in this case are:

        IDL:C:1.0
        IDL:D/D:1.0

        If an included file does not contain a #pragma prefix, the
        current prefix implicitly resets to the empty prefix:

        // E.idl
        interface E {};

        // F.idl
        module M {
        #include <E.idl>
        };

        The repository IDs for module M and interface E in this case are:

        IDL:M:1.0
        IDL:E:1.0

        If a #include directive appears at non-global scope and the included
        file contains a prefix pragma, the included file's prefix takes
        precedence, for example:

        // A.idl
        #pragma prefix "A"
        interface A {};

        // B.idl
        #pragma prefix "B"
        module M {
        #include "A.idl"
        };

        The repository ID for module M and interface A in this case are:

        IDL:B/M:1.0
        IDL:A/A:1.0

        Attempts to assign a prefix to a forward-declared interface and
        a different prefix to that interface later result in a compile-time
        diagnostic:

        #pragma prefix "A"
        interface A;            // Forward decl.

        #pragma prefix "B"
        interface A;            // Compile-time error

        #pragma prefix "C"
        interface A {           // Compile-time error
                void op();
        };

        A prefix pragma of the form

        #pragma prefix ""

        resets the prefix to the empty string. For example:

        #pragma prefix "X"
        interface X {};
        #pragma prefix ""
        interface Y {};

        The repository IDs for interface X and Y in this case are:

        IDL:X/X:1.0
        IDL:Y:1.0

        If a specification contains both a prefix pragma and an ID or version
        pragma, the prefix pragma does not affect the repository ID for
        an ID pragma, but does affect the repository ID for a version pragma:

        #pragma prefix "A"
        interface A {};
        interface B {};
        interface C {};
        #pragma ID B "IDL:myB:1.0"
        #pragma version C 9.9

        The repository IDs for this specification are

        IDL:A/A:1.0
        IDL:myB:1.0
        IDL:A/C:9.9

        A #pragma prefix must appear before the beginning of an IDL
        definition. Placing a #pragma prefix elsewhere has undefined
        behavior, for example:

        interface Bar
        #pragma prefix "foo"    // Undefined behavior
        {
                // ...
        }

Add the following text to the end of "The Version Pragma" on page 8-33:
 
        If an attempt is made to change the version of a repository ID
        that was specifed with an ID pragma, a compliant compiler shall
        emit a diagnostic:

        interface A {};
        #pragma ID A "IDL:myA:1.1"
        #pragma version A 9.9           // Compile-time error

        If an attempt is made to assign a version to the same
        IDL construct a second time, a compile-time diagnostic shall
        be emitted, regardless of whether the second version is in
        conflict or not:

        interface A {};
        #pragma version A 1.1
        #pragma version A 2.2           // Compile-time error

        interface B {};
        #pragma version B 1.1
        #pragma version B 1.1           // Compile-time error

Action to be taken: Incorporate text as above and close issues 910, 916, 999

Issue 1054: Marshalling is_equivalent (orb_revision)

Click here for this issue's archive.
Source: Franz (Dr. Lewis Stiller, stiller@franz.com)
Nature: Uncategorized Issue
Severity:
Summary: CORBA 2.2 GIOP does not define a way to invoke is_equivalent on an object remotely
Resolution: is_equivalent is meant to be a local address-space
operation and is not meant to go on the wire. The spec actually has
some words to that effect in the section that shows the pseudo-IDL
for CORBA::Object.
Revised Text:
Actions taken: Propose close no change with above explanation
March 13, 1998: received issue
 

Issue 1066: Fixed point constant typo in 2.2 (orb_revision)

Click here for this issue's archive.
Source: DSTC (Mr. Michi Henning, michi@dstc.edu.au)
Nature: Uncategorized Issue
Severity:
Summary: Section 3.7.2 of CORBA 2.2 contains an error on page 3-20, last para: For example, 0123.450d is considered to be fixed<5.2> and 3000.00 is fixed<1,-3>. This is in conflict with section 3.2.5 on page 3-9, last para: A fixed-point decimal literal consists of an integer part, a decimal point, a fraction part and d or D. [ ... ] Either the integer part of the fraction part (but not both) may be missing; the decimal point (but not the letter d (or D)) may by missing. So, it seems that the "3000.00" on page 3-20 really should be "3000.00d" or "3000.00D".
Resolution: see resolution of 754
Revised Text:
Actions to be taken: incorporate resolution of 754 and close issue
March 18, 1998: received issue

 

Issue 1067: Wide character and wide string literals (orb_revision)

Click here for this issue's archive.
Source: DSTC (Mr. Michi Henning, michi@dstc.edu.au)
Nature: Uncategorized Issue
Severity:
Summary: Section 3.2.5 on page 3-9, 2nd para says: Wide character and wide string literals are specified exactly like character and string literals. All character and string literals, both wide and non-wide, may only be specified (portably) using the characters found in the ISO 8859-1 character set, that is interface, names, operation names, type names, etc., will continue to be limited to the ISO 8859-1 character set. - The first part says that wide character literals and wide string literals are to be specified exactly like character and string literals. This seems to be impossible - if they were exactly the same, there would be no point in having them... At any rate, the sentence seems to imply that I must restrict myself to ISO Latin-1 characters in wide literals. - The second part then says that wide literals are restricted to 8859-1, but that interface names (etc.) will continue to be limited to 8859-1. Now what is that supposed to mean? Interface names have always (and incorrectly) been limited to 8859-1. Nothing has changed. Am I to imply then that the sentence was meant to suggest that wide literals can actually contain wide characters other than 8859-1? This paragraph simply doesn't make sense as it stands.
Resolution: Several problems with this:

        1) The section about *character* literals talks about wide *string*
           literals, but the section about *string* literals says nothing
           about wide string literals.

           Character and wide character literals should be discussed in
           the section on character literals, and string and wide string
           literals should be discussed in the section on string literals.

        2) The last sentence doesn't make sense. It says that literals
           are limited to ISO 8859-1, but that identifiers are limited
           to ISO 8859-1.

           Also, with the identifier change to ASCII letters, digits, and
           underscores, this no longer applies.

        3) If wide character and string literals are exactly like normal
           literals, the tokenizer becomes context-sensitive. This is
           a Bad Thing (TM).

Here is the proposal:
Revised Text:
In section  3.2.5
Change the last para of "Character Literals" to read:

        Wide character literals have an L prefix, for example:

        const wchar C1 = L'X';

        Attempts to assign a wide character literal to a non-wide character
        constant or to assign a non-wide character literal to a wide
        character constant result in a compile-time diagnostic.

        Both wide and non-wide character literals must be specified using
        characters from the ISO 8859-1 character set.

Add the following text to the end of the "String Literals" section:

        Wide string literals have an L prefix, for example:

        const wstring S1 = L"Hello";

        Attempts to assign a wide string literal to a non-wide string
        constant or to assign a non-wide string literal to a wide
        string constant result in a compile-time diagnostic.

        Both wide and non-wide string literals must be specified using
        characters from the ISO 8859-1 character set.

        A wide string literal shall not contain the wide character with
        value zero.
 

Actions to be taken taken: Incorporate change and close issue.
March 18, 1998: received issue
 

Issue 1068: Fixed point constants issue (orb_revision)

Click here for this issue's archive.
Source: DSTC (Mr. Michi Henning, michi@dstc.edu.au)
Nature: Uncategorized Issue
Severity:
Summary: Page 3-20 of CORBA 2.2: A fixed-point literal has the apparent number of total and fractional digits, except that leading an trailing zeros are factored out, including non-significant zeros before the decimal point. For example, 0123.450d is considered to be fixed<5,2> and 3000.00 is fixed<1,-3>. Apart from the fact that 3000.00 is not a fixed point constant literal, I'm confused about something else... If 3000.00d is fixed<1,-3>, then 3000.0000d is also fixed<1,-3>. These rules result in 3000.00d being fixed<1,-3> BUT 3000.01d being fixed<6,2> This doesn't seem to make sense. If I bother to write the trailing zeros, surely I have a reason, namely, that I mean to use that scale. In other words, I think that 3000.00d should be fixed<6,2> and 3000.0000d should be fixed<8,4> Why are fractional trailing zeros thrown away but fractional trailing non-zeros retained?
Resolution:

The text is quite clear about the mechanism for assigning digits and
scale to fixed point constants.  This part of the text only addresses
how the IDL compiler evaluates arithmetic expressions involving fixed
point literals at compile time and is not intended to define how fixed
point arithmetic works in various programming languages at run time.
Revised Text:
Actions to be taken: close no change
March 18, 1998: received issue

Issue 1071: Type of fixed point quotients (orb_revision)

Click here for this issue's archive.
Source: DSTC (Mr. Michi Henning, michi@dstc.edu.au)
Nature: Uncategorized Issue
Severity: Significant
Summary: the 2.2 spec on page 3-20 defines the type of a fixed point division as: fixed<(d1-s1+s2) + Sinf, Sinf> I'm having a problem with this: The type of the result cannot be known at compile-time because it depends on the actual values. This differs from the add, subtract, and multiplication operators, where the result type can be determined statically. There is a C++ mapping problem too. The C++ mapping uses a template type for fixed point, where the digits and the scale are template parameters (i.e. must be compile-time constants).
Resolution:

The text is quite clear about the mechanism for assigning digits and
scale to fixed point constants.  This part of the text only addresses
how the IDL compiler evaluates arithmetic expressions involving fixed
point literals at compile time and is not intended to define how fixed
point arithmetic works in various programming languages at run time.
Revised Text:
Actions to be taken: close no change
March 19, 1998: received issue

Issue 1074: Typo in type code section (13.3.4) (orb_revision)

Click here for this issue's archive.
Source: DSTC (Mr. Michi Henning, michi@dstc.edu.au)
Nature: Uncategorized Issue
Severity:
Summary: On page 13-13, CORBA 2.2: A "simple" parameter list has a fixed number of fixed length entries, or a single parameter which is has its length encoded first. This should probably be ... single parameter which has is length encoded first.
Resolution: Change the second sentence of the second bullet on page 13-13 Rev 2.2 to read:
"A "simple" parameter list has a fixed number of fixed length entries, or a single parameter which has its length encoded first. Eliminate the last sentence in that bullet.
Revised Text:
Actions taken: Propose incorporation of resolution in 2.3 and closing issue.
March 19, 1998: received issue

Issue 1086: How to deal with object identity (orb_revision)

Click here for this issue's archive.
Source: Aviatis (Mr. Johannes Ernst, jernst@aviatis.com)
Nature: Uncategorized Issue
Severity:
Summary: I'm not quite sure where this should go, but there should be an explicit statement somewhere in the CORBA descriptions that states how to deal with object identity with respect to subscribe/unsubscribe schemes. The (language/CORBA/etc independent) pattern interface SomeSender { void addSomeListener( in SomeListener theListener ); void removeSomeListener( in SomeListener theListener ); ... } is very commonly found, and as far as I understand it (I might be wrong, but if so, it needs to be documented that this would be incorrect), SomeListener actually needs to implement a "is_identical( Object )" operation that would be called by the removeSomeListener() operation in order to find out which of the registered listeners should be removed.
Resolution: The semantics of CORBA::Obejct::is_equivalent() are well-understood.
If they are insufficient for your application (they may well be), it
is trivial to add whatever identifier is appropriate to get the required
identity. Since the notion of identity is application specific it would be inappropriate to include one notion of it as opposed to another in the core specification. So no change is required to the core specification.
Revised Text:
Actions taken: Close no change with explanation above and in the archive.
March 20, 1998: received issue

Issue 1087: IDl "module" construct - IDL files (orb_revision)

Click here for this issue's archive.
Source: Aviatis (Mr. Johannes Ernst, jernst@aviatis.com)
Nature: Uncategorized Issue
Severity:
Summary: It appears that the IDL concept of a module is tightly bound to the storage of IDL statements in files. In other words, it does not seem to be possible to distribute IDL statements in the same logical module across multiple files. Consequently, few people use the concept, and name collisions occur sooner or later when trying to integrate systems that have not been developed by only one group.
Resolution: IDL allows you to re-open modules, which means that you can have
different parts of the same module in different files.

The only restriction with most (all?) current IDL compilers is that
all of the IDL must be compiled at once. In practice, that's not
hard to achieve.

No change needed in specification.
Revised Text:
Actions taken: Close no change
March 20, 1998: received issue

Issue 1088: ORB_init (orb_revision)

Click here for this issue's archive.
Source: DSTC (Mr. Michi Henning, michi@dstc.edu.au)
Nature: Uncategorized Issue
Severity:
Summary: Page 4-9 of CORBA 2.2: ORBid strings other than the empty string are intended to be used to uniquely identify each ORB used within the same address space in a multi-ORB application. I don't believe this is possible, mainly because the language mappings do not permit multiple ORB run-time libraries to be linked into the same address space.
Resolution: As per the discussion in the archive it appears that no normative change in the spec is required.
Revised Text:
Actions to be taken: close no change
March 20, 1998: received issue

Issue 1091: Editorial issue, chapter 8 (orb_revision)

Click here for this issue's archive.
Source: Floorboard Software (Mr. Jonathan Biggar, jon@floorboard.com)
Nature: Revision
Severity: Minor
Summary: In the recap IDL at the end of chapter 8, there is a missing comma after the tk_except enumerator in the definition of TCKind.
Resolution: Make editorial fix and close issue
Revised Text:
Actions taken: Make editorial fix and close issue
March 21, 1998: received issue

Issue 1094: Indentation on page 4-4 (orb_revision)

Click here for this issue's archive.
Source: DSTC (Mr. Michi Henning, michi@dstc.edu.au)
Nature: Revision
Severity:
Summary: interface Object on page 4-4 shows: interface Object { ImplementationDef get_implementation(); InterfaceDef get_interface(); boolean is_nil(); Object duplicate(); void release(); boolean is_a(...); boolean non_existent(); boolean is_equivalent(...); unsigned long hash(...); <====== // ... }; The first four declarations use no indentation, the fifth declaration uses one indentation level, and the final four declarations use a different indentation level. This could be tidied up a bit.
Resolution: I intend to take a whack at Chapter 4 like we did on Chapter 3 in the last round. Among other things this will get fixed in that exercise and then we can close this issue.
Revised Text:
Actions taken: Make editorial fix and close issue
March 22, 1998: received issue

Issue 1146: Semantics and standard exceptions (orb_revision)

Click here for this issue's archive.
Source: DSTC (Mr. Michi Henning, michi@dstc.edu.au)
Nature: Uncategorized Issue
Severity:
Summary: The spec lists the standard exceptions in section 3.15.1. However, for many of these, there are no semantics specified anywhere. Instead, for the majority of standard exceptions, the *only* "semantics" are what is in the comments in section 3.15.1. We badly need an explanation of which standard exception indicates what error condition in the spec, otherwise we'll never get agreement on which exception means what...
Resolution: Add description of exceptions
Revised Text:
At the end of the list of exceptions (preceeding 3.15.2), add the following
text:

        The following provides explanations as to the conditions
        in which each exception is raised by an ORB. The list of conditions
        is not exhaustive because the number of possible failure conditions
        for a particular ORB is too large to enumerate as well as
        implementation-dependent.

The current text already explains OBJECT_NOT_EXIST and the transaction
exceptions. Add the following text to cover the remaining exceptions:

- UNKNOWN

  This exception is raised if an operation implementation throws
  a non-CORBA exception (such as an exception specific to the
  implementation's programming language), or if an operation raises
  a user exception that does not appear in the operation's raises
  expression. UNKNOWN is also raised if the server returns a system
  exception that is unknown to the client. (This can happen if the server
  uses a later version of CORBA than the client and new system exceptions
  have been added to the later version.)

- BAD_PARAM

  A parameter passed to a call is out of range or otherwise considered illegal.
  An ORB may raise this exception if null values or null pointers are passed
  to an operation (for language mappings where the concept of a null pointers
  or null values applies). BAD_PARAM can also be raised as a result of client
  generating requests with incorrect parameters using the DII.

- NO_MEMORY

  The ORB run time has run out of memory.

- IMP_LIMIT

  This exception indicates that an implementation limit was exceeded in the
  ORB run time. For example, an ORB may reach the maximum number of
  references it can can hold simultaneously in an address space, the size
  of a parameter may have exceeded the allowed maximum, or an ORB may
  impose a maximum on the number of clients or servers that can run
  simultaneously.

- COMM_FAILURE

  This exception is raised if communication is lost while an operation
  is in progress, after the request was sent by the client, but before
  the reply from the server has been returned to the client.

- INV_OBJREF

  This exception indicates that an object reference is internally
  malformed. For example, the repository ID may have incorrect syntax
  or the addressing information may be invalid. This exception is
  raised by ORB::string_to_object if the passed string does not decode
  correctly.

  An ORB may choose to detect calls via nil references (but is
  not obliged to do detect them). INV_OBJREF is used to indicate this.

- NO_PERMISSION

  An invocation failed because the caller has insufficient privileges.

- INTERNAL

  This exception indicates an interal failure in an ORB, for example,
  if an ORB has detected corruption of its internal data structures.

- MARSHAL

  A request or reply from the network is structurally invalid. This error
  typically indicates a bug in either the client-side or server-side run
  time. For example, if a reply from the server indicates that the message
  contains 1000 bytes, but the actual message is shorter or longer than
  1000 bytes, the ORB raises this exception. MARSHAL can also be caused
  by using the DII or DSI incorrectly, for example, if the type of the
  actual parameters sent does not agree with IDL signature of an operation.

- INITIALIZE

  An ORB has encountered a failure during its initialization, such as failure
  to acquire networking resources or detecting a configuration error.

- NO_IMPLEMENT

  This exception indicates that even though the operation that was invoked
  exists (it has an IDL definition), no implementation for that operation
  exists. NO_IMPLEMENT can, for example, be raised by an ORB if a client
  asks for an object's type definition from the interface repository, but
  no interface repository is provided by the ORB.

- BAD_TYPECODE

  The ORB has encounted a malformed type code (for example, a type code
  with an invalid TCKind value).

- BAD_OPERATION

  This indicates that an object reference denotes an existing object, but that
  the object does not support the operation that was invoked.

- NO_RESOURCES

  The ORB has encountered some general resource limitation. For example, the
  run time may have reached the maximum permissible number of open connections.

- NO_RESPONSE

  This exception is raised if a client attempts to retrieve the result of
  a deferred synchronous call, but the response for the request is not
  yet available.

- PERSIST_STORE

  This exception indicates a persistent storage failure, for example,
  failure to establish a database connection or corruption of a database.

- BAD_INV_ORDER

  This exception indicates that the caller has invoked operations in the
  wrong order. For example, it can be raised by an ORB if an application
  makes an ORB-related call without having correctly initialized the ORB
  first.

- TRANSIENT

  TRANSIENT indicates that the ORB attempted to reach an object
  and failed. It is not an indication that an object does not exist.
  Instead, it simply means that no further determination of an object's
  status was possible because it could not be reached.

- FREE_MEM

  The ORB failed in an attempt to free dynamic memory, for example because
  of heap corruption or memory segments being locked.

- INV_IDENT

  This exception indicates that an IDL identifier is syntactically invalid.
  It may be raised if, for example, an identifier passed to the interface
  repository does not conform to IDL identifier syntax, or if an illegal
  operation name is used with the DII.

- INV_FLAG

  An invalid flag was passed to an operation (for example, when creating
  a DII request).

- INTF_REPOS

  An ORB raises this exception if it cannot reach the interface repository,
  or some other failure relating to the interface repository is detected.

- BAD_CONTEXT

  An operation may raise this exception if a client invokes the operation
  but the passed context does not contain the context values required
  by the operation.

- OBJ_ADAPTER

  This exception typically indicates an administrative mismatch.
  For example, a server may have made an attempt to register itself
  with an implementation repository under a name that is already in
  use, or is unknown to the repository. OBJ_ADAPTER is also raised
  by the POA to indicate problems with application-supplied servant
  managers.

- DATA_CONVERSION

  This exception is raised if an ORB cannot convert the representation of
  data as marshaled into its native representation or vice-versa. For example,
  DATA_CONVERSION can be raised if wide character codeset conversion fails,
  or if an ORB cannot convert floating point values between different
  representations.
Actions to be taken: incorporate changes as above in 2.3 and close issue
April 16, 1998: received issue
June 25, 1998: moved from port-rtf to orb_revision

Issue 1241: / in prefix pragma? (orb_revision)

Click here for this issue's archive.
Source: DSTC (Mr. Michi Henning, michi@dstc.edu.au)
Nature: Uncategorized Issue
Severity:
Summary: currently, #pragma prefix is completely unconstrained and can contain any character. This includes potentially troublesome things such as space and '/', or non-printing characters. I would suggest to define a syntax for #pragma prefix. In particular, I think that '/' should be forbidden in a prefix. This is because otherwise, given a repository ID, I cannot work out where the prefix ends and the scoped name starts. In addition, things that cannot normally be part of file names or identifiers should probably be forbidden as well, otherwise we could get problems with things like the class path in Java.
Resolution: No need for such restrictions.
Revised Text:
Actions taken: Close no change
April 27, 1998: received issue
June 25, 1998: moved from port-rtf to orb_revision

Issue 1258: Type code constants are not defined/mentioned in OBV spec (obv-rtf)

Click here for this issue's archive.
Source: International Business Machines (Mr. Leo Uzcategui, leou@us.ibm.com)
Nature: Revision
Severity:
Summary: I don't understand why TypeCode constants, e.g. TC_CORBA_InterfaceDescription and TC_CORBA_FullInterfaceDescription, are not mentioned or defined in the OBV spec. The CORBA spec defines a set of predefined TypeCode constants for InterfaceDescription, OperationDescription, AttributeDescription, etc., named TC_CORBA_InterfaceDescription, ... (see section 8.7 TypeCodes in CORBA 2.2) It seems that new ones should be defined to be consistent, but then it may be my misunderstanding.
Resolution: Modify section 8.7.2 as shown below
Revised Text:
8.7.2 TypeCode Constants

Replace the first paragraph of 8.7.2 with:

For IDL type declarations, the IDL compiler produces (if asked) a declaration of a TypeCode
constant. See the language mapping rules for more information about the
names of the generated TypeCode constants.  TypeCode constants include
tk_alias definitions wherever an IDL typedef is referenced.  These
constants can be used with the dynamic invocation interface and other
routines that require TypeCodes.

The predefined TypeCode constants, named according to the C language
mapping, are:

TC_null
TC_void
TC_short
TC_long
TC_longlong
TC_ushort
TC_ulong
TC_ulonglong
TC_float
TC_double
TC_longdouble
TC_boolean
TC_char
TC_wchar
TC_octet
TC_any
TC_TypeCode
TC_Object = tk_objref { Object }
TC_string= tk_string { 0 } // unbounded
TC_wstring = tk_wstring{0} mmmmm/// unbounded
Actions to be taken: incorporate change in 2.3 and close
April 28, 1998: received issue

Issue 1394: Typos in IR IDL in spec (01) (orb_revision)

Click here for this issue's archive.
Source: Object Interface Systems (Mr. Victor Giddings, victor.giddings@ois.com)
Nature: Revision
Severity:
Summary: The following problems appear in the 2.2 spec (98-02-23) and the IDL summary extracted from it (98-03-01.idl). - Section 8.8 page 8-45: need forward declaration of ExceptionDef, i.e., "interface ExceptionDef" before use on page 8-47. There are a number of forward declarations in the middle of 8-45 that would seem to be the logical place for it.
Resolution: Fix and close
Revised Text:
Actions taken: Fix and close
May 20, 1998: received issue

Issue 1395: Typos in IR IDL in Specification (02) (orb_revision)

Click here for this issue's archive.
Source: Objective Interface Systems (Mr. Victor Giddings, victor.giddings@ois.com)
Nature: Revision
Severity:
Summary: - Section 8.8 page 8-47: need forward declarations of WstringDef and FixedDef before use on page 8-48. Again, it would seem that they were left out of the list of forward declarations on 8-47.
Resolution: Fix and close
Revised Text:
Actions taken: Fix and close
May 20, 1998: received issue

Issue 1396: Typos in IR IDL in Specification (03) (orb_revision)

Click here for this issue's archive.
Source: Objective Interface Systems (Mr. Victor Giddings, victor.giddings@ois.com)
Nature: Revision
Severity:
Summary: - Section 8.8 page 8-48: remove incorrect "};" between "create_array" and "create_fixed".
Resolution: Fix and close
Revised Text:
Actions taken: Fix and close
May 20, 1998: received issue

Issue 1397: Typos in IR IDL in Specification (04) (orb_revision)

Click here for this issue's archive.
Source: Objective Interface Systems (Mr. Victor Giddings, victor.giddings@ois.com)
Nature: Revision
Severity:
Summary: - Section 8.8 page 8-53: add "," after "tk_except" in definition of TCKind.
Resolution: Fix and close
Revised Text:
Actions taken: Fix and close
May 20, 1998: received issue

Issue 1398: Typos in IR IDL in Specification (050 (orb_revision)

Click here for this issue's archive.
Source: Objective Interface Systems (Mr. Victor Giddings, victor.giddings@ois.com)
Nature: Revision
Severity:
Summary: - Section 8.8 page 8-55: change "element type" to "element_type" in operation create_sequence_tc.
Resolution: Fix and close
Revised Text:
Actions taken: Fix and close
May 20, 1998: received issue
 

 

Issue 1422: Does the DII support the standard object operations? (orb_revision)

Click here for this issue's archive.
Source: Floorboard Software (Mr. Jonathan Biggar, jon@floorboard.com)
Nature: Uncategorized Issue
Severity:
Summary: There are two types of standard operations: ones that are transmitted over the wire, and ones that are not. Now it seems reasonable to support the over-the-wire operations via the DII, such as "is_a", "non_existent", "get_interface" and "get_implementation" (obsolete), but what about the ones that don't go over the wire: hash is_equivalent get_policy get_domain_managers I would guess that the DII should not support these operations, but the spec does not explicitly say that. So, should we add a statement to the DII part of the spec that an attempt to invoke these non-over-the-wire operations should raise BAD_OPERATION?
Resolution: non_existent, is_a, get_interface and get_implementation (deperecated) are allowed via DII, the others (hash, is_equivalent, get_domain_managers and get_policy are not.
Revised Text:
Append the following text to section 5.2.1 "create_request"

The implicit object reference operations non_existent, is_a, get_interface and (deprecated) get_implementation may be invoked using DII. No other implicit object reference operations may be invoked via DII.

To create a request for any one of these allowed implicit object reference operations, create_request must be passed the name of the operation with a "_" prepended, in the  parameter "operation". For example to create a DII request for "is_a", the name passed to create_request must be "_is_a". If the name of an implicit operation that is not ivocable through DII is passed to create_request with a "_" prepended, create_request shall raise a BAD_PARAM exception. For example if "_is_equivalent" is passed to create_request as the "operation" parameter will cause create_request to raise the BAD_PARAM exception.

Actions to be taken: Incorporate new text and close issue.
 

Issue 1541: Type code typos (as only one issue) (orb_revision)

Click here for this issue's archive.
Source: DSTC (Mr. Michi Henning, michi@dstc.edu.au)
Nature: Revision
Severity: Minor
Summary: There are a few typos in the spec for type codes. Page 8-40: A structure with N members results in a tk_struct TypeCode with 2N+1 parameters. This is no longer correct. Because of the Repository ID parameter that was added, this is now 2N+2. Similar fixes need to be applied to the text for unions (3N+3 parameters, not 3N+2), enumerations (N+2 parameters instead of N+1 as implied by the text), and aliases (they have three parameters, not two). The text for tk_objref also needs updating, because it states that it has one parameter instead of two. Also, Table 7-1 for tk_objref should be updated because it is internally inconsistent.
Resolution: The section in question is already deprecated and should simply be removed.
Revised Text:
This change would require removing:

 (1) From TypeCode PIDL on Page 8-37

// deprecated interface
 long param_count ();
 any parameter (in long index) raises (Bounds);

(2) remove the text begining with "The deprecated param_count and parameter operations..." at the top of page 8-39 and ending just before section 8.7.2 on page 8-40.

Actions to be taken taken: Fix and close in 2.3
June 24, 1998: received issue
 

Issue 1542: Type code operations under-specified (orb_revision)

Click here for this issue's archive.
Source: DSTC (Mr. Michi Henning, michi@dstc.edu.au)
Nature: Revision
Severity:
Summary: On page 8-38: Member_count [sic] returns the number of members constituting the type. This is a little ambiguous and easily confused with the number of parameters. For clarity, I would suggest to add a sentence to make this clearer, e.g. "For example, the member count of a structure with three members is three." This would help to avoid confusion with parameters (if I am not careful, I might think the number is six, because a the three members of a structure are described by six parameters, or I might think that the number is nine, because a three-member structure has a total of nine parameters). The origin for the index to the member_name operation is never defined. Presumably, indexes start at zero? If so, this must be stated.
Resolution: incorporate clarifying text below.
Revised Text:

1) In para 6 page 8-39 insert the following after the second sentence:
"For example, the member count of a structure with three members is three."

The second half of this issue namely origin of index is addressed in 1543.

Actions to be taken: incorporate proposed change in 2.3 and close
June 24, 1998: received issue

Issue 1543: Type code parameter ordering (orb_revision)

Click here for this issue's archive.
Source: DSTC (Mr. Michi Henning, michi@dstc.edu.au)
Nature: Revision
Severity:
Summary: the TypeCode pseudo interface makes no mention about the order of parameters for structured types. For example, given the IDL struct struct MyStruct { char c_mem; string s_mem; }; it is legal for member_name(0) to return "s_mem" and member_name(1) to return "c_mem" (provided member_type(0) returns a char type code and member_type(1) returns a string type code). The same comments apply to unions, exceptions, and enums, where the order in which members are presented is not necessarily the same order as in the IDL definition.
Resolution: It seems reasonable that the order in which members are presented should be the same as the order in which they appear in the IDL definition. Incorporate language clarifying this as described below.
Revised Text:
Insert a new paragraph immediately preceding the paragraph that begins "The member_count and member_name operations...." on page 8-39:

"The order in which members are presented in the intrface repository is the same as the order in which they appeared in the IDL specification, and this ordering determines the index value for each member. The first member has index value 0. For example for a structure definition:

    struct example {
        short    member1;
        short    member2;
        long     member3;
    };

    member1 has index = 0, member2 has index = 1, and member3 has index = 2."

Actions to be taken: incorporate proposed change in 2.3 and close
June 24, 1998: received issue

Issue 1545: Type codes cannot describe all unions (orb_revision)

Click here for this issue's archive.
Source: DSTC (Mr. Michi Henning, michi@dstc.edu.au)
Nature: Revision
Severity:
Summary: Fix this by stating that member_label returns an Any containing a *sequence* of labels if a single member has more than label. Add a typedef to the TypeCode pseudo-IDL: typedef sequence LabelSeq; A sequence of this type would be contained in the Any returned by member_label() if a member has multiple labels (this avoids changing the signature of member_label()). For the above union, the member_count() operation would return 2, not 5.
Resolution: Recommend that this be closed with no action, or with a clarification that union TypeCodes may have several members with the same member_name value with different member_labels.  This is the same way that union TypeCodes are marshalled and the same way that unions are represented in the Interface Repository.Jon sent me the reason, which I appear to have misplaced. So if he is on the teleconference we will discuss this otherwise not.
Revised Text:
Actions to be taken: close no change
June 24, 1998: received issue
 

Issue 1612: Description of Wide String type (orb_revision)

Click here for this issue's archive.
Source: Objective Interface Systems (Mr. Victor Giddings, victor.giddings@ois.com)
Nature: Revision
Severity:
Summary: Null termination is a marshalling and language mapping issue and should not appear as part of the semantic description of the IDL type. It should be completely valid for a language with a native wide string type to handle the varying length nature of the wide string with or without use of null termination and certainly without exposing it to the user. Therefore, the description of the wide string type in 3.8.3 should not mention null termination. Also the syntax should be included.
Resolution: should be fixed by incorporating the text as described below
Revised Text:  In section 3.8.3 replace the subsection titled "Wide Char String Type" by the following:

"Wstring

The wstring data type represents a sequence of wchar, except the
wide character null. The type wstring is similar to that of type string, except that
its element type is wchar instead of char. The actual length of a wstring is set at run-time
and, if the bounded form is used, must be less than or equal to the bound.

The syntax for defining a wstring is:

        <wide_string_type> ::= "wstring" "<" <positive_int_const> ">" | "wstring"
 "

Actions to be taken: Incorporate new text and close issue
June 29, 1998: received issue
 
 

Issue 1688: Illegal IDL in CosTime module (orb_revision)

Click here for this issue's archive.
Source: Objective Interface Systems (Mr. Bill Beckwith, bill.beckwith@ois.com)
Nature: Uncategorized Issue
Severity:
Summary: The IDL in module CosTime for the compare_time and time_to_interval operations is illegal. Reference http://www.omg.org/archives/experts/msg00890.html for further information.
Resolution: Fix the problem by changing the offending parameter types from "UTO" to "CosTime::UTO".
Revised Text: All references to formal/97-12-21.pdf
1. Change the second line from the top of page 14-9 from:

    "in UTO        uto"

to:

    "in CosTime::UTO        uto"

2. Change the 5th line on the same page from:

    "in UTO        uto"

to:

    "in CosTime::UTO        uto"

3.  On page 14-22 in the IDL declaration for interface UTO make the following changes:

    i. In declaration of operation compare_time change the type of the last parameter from "UTO" to "CosTime::UTO".

    ii. In declaration of the operation time_to_interval change the name of the parameter from "UTO" to "CosTime::UTO".

Actions to be taken: Incorporate changes in Time Service chapter and close issue.
 

Portability Addendum:

Issue 1408: POA destroy() is ill-defined

Nature: Revision
Summary: See issue 1409 below
Resolution: Accept changes proposed for issue 1409 and close issue.

Issue 1409: Multiple threads calling destroy() once destroy() has begun

Nature: Revision
Summary: POA destroy is not defined sufficiently enough to prevent multiple activations of the same POA name in the same process.  POA::destroy semantics are not defined for multiple threads calling destroy.
Resolution: Accepted for Corba RTF 2.3 and close issue.
Revision: The following text will replace the current describing the destroy operation in Section 9.3.8, Page 9-31.

This operation destroys the POA and all descendant POAs.  All
descendant POAs are destroyed (recursively) before the destruction of
the containing POA.  The POA so destroyed (that is, the POA with its
name) may be re-created later in the same process.  (This differs from
the POAManager::deactivate operation that does not allow a re-creation
of its associated POA in the same process.  After a deactivate,
re-creation is allowed only if the POA is later destroyed.)

When destroy is called the POA will behave as follows:

1. The POA will call destroy on all of its immediate descendants.

2. After all descendant POAs have been destroyed and their servants
   etherealized, the POA will continue to process requests until there
   are no requests executing in the POA.  The apparent destruction of
   the POA will occur only after all executing requests in the
   POA have completed. After destruction has become apparent, the POA
   may be recreated via either an AdapterActivator or a call to
   create_POA.

3. If the etherealize_objects parameter is TRUE, the POA has the RETAIN
   policy, and a servant manager is registered with the POA, the
   etherealize operation on the servant manager will be called for each
   active object in the Active Object Map.  The apparent destruction of
   the POA occurs before any calls to etherealize are made.  Thus, for
   example, an etherealize method that attempts to invoke operations
   on the POA will receive the OBJECT_NOT_EXIST exception.  Once
   apparent destruction has occurred, the POA behaves as if its
   POAManager is in the holding state until destruction is complete.
   Thus, for example, an invocation of create_POA() with the same
   name will block until POA destruction has finished.

{editorial note - below I have merged text from these two issues and
the relevant text from issue 1428 because they change the same text.
If one of these resolutions fails, we will need to edit the following
text)

The wait_for_completion parameter is handled as follows:

 - If wait_for_completion is TRUE and the current
   thread is not in an invocation context dispatched from some
   POA belonging to the same ORB as this POA,
   the destroy operation will return only after all active requests
   have completed and all invocations of etherealize have
   completed.

 - If wait_for_completion is TRUE and the current thread is in an
   invocation context dispatched from some POA belonging to the
   same ORB as this POA, then the BAD_INV_ORDER
   exception is thrown and POA destruction does not occur.

 - If wait_for_completion is FALSE, the destroy operation
   destroys the POA and its children but does not wait for active
   requests to complete nor for etherealization to occur.

If destroy is called multiple times before destruction is
complete (because there are active requests), the
etherealize_objects parameter will only apply to the first
call of destroy.  Subsequent calls with conflicting
etherealize_objects settings will use the value of the
etherealize_objects from the first call.  The wait_for_completion
parameter will be handled as defined above for each individual
call (some callers may choose to block, while others may not).
 

Issue 1428: Blocking POA Operations

Nature: Revision
Summary:  Several operations added to CORBA as part of the Portability submission provide blocking behavior which can result in deadlock in a large number of cases. These calls include POA::destroy, ORB::shutdown, POAManager::deactivate, POAManager::hold_requests, POAManager::discard_requests.
Resolution:  Accepted for Corba 2.3 RTF
Revision:  The following changes are proposed:

Replace the second sentence in the paragraph of section 4.9.4,
page 4-20, which begins with "If the wait_for_completion ..."
with the following:

"If the wait_for_completion parameter is TRUE and the current
thread is not in an invocation context dispatched by this ORB, this
operation blocks until all ORB processing (including request
processing and object deactivation or other operations associated
with object adapters) has completed.  If the wait_for_completion
parameter is TRUE and the current thread is in an invocation context
dispatched by this ORB, then the BAD_INV_ORDER exception is thrown."

Replace the phrase "If the parameter is TRUE" in the 2nd
paragraph, 2nd sentence of the hold_requests description in
Section 9.3.2, page 9-18, with the phrase "If the parameter
is TRUE and the current thread is not in an invocation context
dispatched by some POA belonging to the same ORB as this POA".
Add the sentence "If the parameter
is TRUE and the current thread is in an invocation context
dispatched by some POA belonging to the same ORB as this POA
then the BAD_INV_ORDER exception is raised and the state is not changed."

Replace the phrase "If the parameter is TRUE" in the 2nd
paragraph, 2nd sentence of the discard_requests description in
Section 9.3.2, page 9-18, with the phrase "If the parameter
is TRUE and the current thread is not in an invocation context
dispatched by some POA belonging to the same ORB as this POA".
Add the sentenence "If the parameter
is TRUE and the current thread is in an invocation context
dispatched by some POA belonging to the same ORB as this POA then
the BAD_INV_ORDER exception is raised
and the state is not changed." to the end of the paragraph.

Replace the phrase "If the parameter is TRUE" in the 3rd
paragraph, 2nd sentence of the deactivate description in
Section 9.3.2, page 9-18, with the phrase "If the parameter
is TRUE and the current thread is not in an invocation context
dispatched by some POA belonging to the same ORB as this POA".
Add the sentenence "If the parameter
is TRUE and the current thread is in an invocation context dispatched
by some POA belonging to the same ORB as this POA then the
BAD_INV_ORDER exception is raised and the
state is not changed." to the end of the paragraph.

(editorial note- I changed the text for POA::destroy in the
resolution of issues 1408 and 1409 above, so it is not shown
here but a similar change to the above is necessary.
I also felt that 1409 raised an issue which also affects
POAManager::deactivate, so the following change is also
proposed)

Add the following paragraph to the end of the description of
deactivate in section 9.3.2, page 9-19.

"If deactivate is called multiple times before destruction is
complete (because there are active requests), the
etherealize_objects parameter will only apply to the first
call of deactivate, subsequent calls with conflicting
etherealize_objects settings will use the value of the
etherealize_objects from the first call.  The wait_for_completion
parameter will be handled as defined above for each individual
call (some callers may choose to block, while others may not)."

Issue 1627: Problems with deactivate_object()

Nature: Revision
Summary: deactivate_object behavior is not defined when multiple concurrent active requests are executing in an object when it is deactivated.
Resolution: Accepted for Corba RTF 2.3
Revision: Replace the second paragraph describing deactivate_object on page 9-35, section 9.3.8 with the following:

This operation causes the ObjectId specified in the oid parameter
to be deactivated.  An ObjectId which has been deactivated continues
to process requests until there are no active requests for that
ObjectId.  A deactivated ObjectId is removed from the Active Object
Map when all requests executing for that ObjectId have completed. If a
servant manager is associated with the POA,
ServantActivator::etherealize will be invoked with the oid and the
associated servant after the ObjectId has been removed from the Active
Object Map.  Reactivation for the ObjectId blocks until etherealization
(if necessary) is complete.  This includes implicit activation (as
described in "etherealize" on page 9-23) and explicit activation via
POA::activate_object_with_id(). Once an ObjectId has been removed from
the Active Object Map and etherealized (if necessary) it may then be
reactivated through the usual mechanisms.

The operation does not wait for requests or etherealization to
complete and always returns immediately after deactivating the
ObjectId.
 



Jishnu Mukerji
Chair Core RTF 2.3