Issue 10683: Clarify exceptions for add/put operations on List in section 3.1.6.3.16 (data-distribution-rtf) Source: PrismTech (Mr. Erik Hendriks, erik.hendriks(at)prismtech.com) Nature: Clarification Severity: Summary: Problem: The add/put operations on the List in section 3.1.6.3.16, the add/remove operations on the Set in section 3.1.6.3.17, the put operation in the StrMap in section 3.1.6.3.18 and the put operation in the IntMap in section 3.1.6.3.19 should mention they raise a PreconditionNotMet if: - The owner ObjectRoot of the Collection is not contained within a (writeable) CacheAccess - The owner ObjectRoot has not yet been registered (i.e. has no identity) - Value is NIL - In case the Collection represents a MultiRelation (instead of a MultiAttribute) o The target (to be added) ObjectRoot has not yet been registered (i.e. has no identity) o The target (to be added) ObjectRoot is contained within a different CacheAccess or no CacheAccess o The target (to be added) ObjectRoot has already been deleted (different then marked for deletion!) The put operation of the List should also state a PreconditionNotMet is raised if the index provided is smaller then 0 or larger then the length of the list. In the IDL description in section 3.2.1.2 on page 3-55, 3-56 add the raise clauses to the operations: For the list valuetype (also fix type of the first attribute of the List valuetype, operation put which takes an index, not a key as param) replace: void add( in ObjectRoot value ); void put( in long key, in ObjectRoot value ); with: void add( in ObjectRoot value ) raises (PreconditionNotMet); void put( in long index, in ObjectRoot value ) raises (PreconditionNotMet); For the Set valuetype: Replace: void add( ObjectRoot value ); void remove( ObjectRoot value ); With: void add(in ObjectRoot value ) raises (PreconditionNotMet); void remove(in ObjectRoot value ) raises (PreconditionNotMet); For the StrMap valuetype: Replace: void put( in string key, in ObjectRoot value ); With: void put( in string key, in ObjectRoot value ) raises(PreconditionNotMet); For the IntMap valuetype: Replace: void put( in long key, in ObjectRoot value ); With: void put( in long key, in ObjectRoot value ) raises (PreconditionNotMet); In section 3.2.1.2.2 Implied IDL on page 3-61 and 3-62 Replace for the FooList: void add( in Foo value ); void put( in long key, in Foo value ); With: void add( in Foo value ) raises (PreconditionNotMet); void put( in long index, in Foo value ) raises (PreconditionNotMet); Replace for the FooSet: void add( in Foo value ); void remove( in Foo value ); With: void add(in Foo value ) raises (PreconditionNotMet); void remove(in Foo value ) raises (PreconditionNotMet); Replace for the FooStrMap: void put( in string key, in Foo value ); With: void put( in string key, in Foo value ) raises(PreconditionNotMet); Replace for the FooIntMap: void put( in long key, in Foo value ); With: void put( in long key, in Foo value )raises(PreconditionNotMet); Solution: TBD Resolution: Revised Text: Actions taken: February 12, 2007: received issue Discussion: Clarify exceptions for the add/put operations on the List in section 3.1.6.3.16. Also for the add/remove operations on the Set in section 3.1.6.3.17. Also for the put operation in the StrMap in section 3.1.6.3.18. Also for the put operation in the IntMap in section 3.1.6.3.19 End of Annotations:===== iler: QUALCOMM Windows Eudora Version 7.0.1.0 Date: Mon, 12 Feb 2007 15:24:37 -0500 To: issues@omg.org, data-distribution-rtf@omg.org From: Juergen Boldt Subject: issue 10683 -- DDS RTF issue X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at omg.org This is issue # 10683 From: "Erik Hendriks" Clarify exceptions for add/put operations on List in section 3.1.6.3.16 Clarify exceptions for the add/put operations on the List in section 3.1.6.3.16. Also for the add/remove operations on the Set in section 3.1.6.3.17. Also for the put operation in the StrMap in section 3.1.6.3.18. Also for the put operation in the IntMap in section 3.1.6.3.19 Problem: The add/put operations on the List in section 3.1.6.3.16, the add/remove operations on the Set in section 3.1.6.3.17, the put operation in the StrMap in section 3.1.6.3.18 and the put operation in the IntMap in section 3.1.6.3.19 should mention they raise a PreconditionNotMet if: - The owner ObjectRoot of the Collection is not contained within a (writeable) CacheAccess - The owner ObjectRoot has not yet been registered (i.e. has no identity) - Value is NIL - In case the Collection represents a MultiRelation (instead of a MultiAttribute) o The target (to be added) ObjectRoot has not yet been registered (i.e. has no identity) o The target (to be added) ObjectRoot is contained within a different CacheAccess or no CacheAccess o The target (to be added) ObjectRoot has already been deleted (different then marked for deletion!) The put operation of the List should also state a PreconditionNotMet is raised if the index provided is smaller then 0 or larger then the length of the list. In the IDL description in section 3.2.1.2 on page 3-55, 3-56 add the raise clauses to the operations: For the list valuetype (also fix type of the first attribute of the List valuetype, operation put which takes an index, not a key as param) replace: void add( in ObjectRoot value ); void put( in long key, in ObjectRoot value ); with: void add( in ObjectRoot value ) raises (PreconditionNotMet); void put( in long index, in ObjectRoot value ) raises (PreconditionNotMet); For the Set valuetype: Replace: void add( ObjectRoot value ); void remove( ObjectRoot value ); With: void add(in ObjectRoot value ) raises (PreconditionNotMet); void remove(in ObjectRoot value ) raises (PreconditionNotMet); For the StrMap valuetype: Replace: void put( in string key, in ObjectRoot value ); With: void put( in string key, in ObjectRoot value ) raises(PreconditionNotMet); For the IntMap valuetype: Replace: void put( in long key, in ObjectRoot value ); With: void put( in long key, in ObjectRoot value ) raises (PreconditionNotMet); In section 3.2.1.2.2 Implied IDL on page 3-61 and 3-62 Replace for the FooList: void add( in Foo value ); void put( in long key, in Foo value ); With: void add( in Foo value ) raises (PreconditionNotMet); void put( in long index, in Foo value ) raises (PreconditionNotMet); Replace for the FooSet: void add( in Foo value ); void remove( in Foo value ); With: void add(in Foo value ) raises (PreconditionNotMet); void remove(in Foo value ) raises (PreconditionNotMet); Replace for the FooStrMap: void put( in string key, in Foo value ); With: void put( in string key, in Foo value ) raises(PreconditionNotMet); Replace for the FooIntMap: void put( in long key, in Foo value ); With: void put( in long key, in Foo value )raises(PreconditionNotMet); Solution: TBD Juergen Boldt Director, Member Services Object Management Group 140 Kendrick St Building A Suite 300 Needham, MA 02494 USA tel: +1 781 444 0404 x 132 fax: +1 781 444 0320 email: juergen@omg.org www.omg.org