Problem:
Remove quotations in the table contained in the Contents chapter (page 3-1).
Solution:
Replace:
Section Title Page
"Platform Independent Model (PIM)" 3-1
"OMG IDL Platform Specific Model (PSM)" 3-45
With:
Section Title Page
Platform Independent Model (PIM) 3-1
OMG IDL Platform Specific Model (PSM) 3-45
Problem:
Footnote 2 is on wrong page.
Solution:
Move footnote 2 from page 3-3 to page 3-2
Problem:
In section 3.1.3.3, paragraph two, last sentence says 'They appear in grey on the schema.' Referring to the next figure, but no objects are in grey on that figure.
Solution:
Remove the sentence 'They appear in grey on the schema.' So that the paragraph looks as follows.
Replace:
Note that two objects that will be part of a DLRL model (namely ObjectRoot that is the
root for all the DLRL classes as well as ObjectHome that is the class responsible for
creating and managing all DLRL objects of a given class) are featured to show the
conceptual relations between the metamodel and the model. They appear in grey on the
schema.
With:
Note that two objects that will be part of a DLRL model (namely ObjectRoot that is the
root for all the DLRL classes as well as ObjectHome that is the class responsible for
creating and managing all DLRL objects of a given class) are featured to show the
conceptual relations between the metamodel and the model.
Problem:
The first sentence of section 3.1.5.1 should not say:
A DLRL class is associated with several DCPS Topic
But say
A DLRL class is associated with several DCPS Topics
IE topics should be made plural.
Solution:
Replace:
A DLRL class is associated with several DCPS Topic
With:
A DLRL class is associated with several DCPS Topics
Problem:
In figure 3-4 the CacheFactory shows an operation called 'find_cache', which should be 'find_cache_by_name'. The ObjectHome shows an operation called 'get_new_objects' which should be 'get_created_objects'
Solution:
Change operation name 'find_cache' in the CacheFactory class into 'find_cache_by_name'.
Change operation name 'get_new_objects' in the ObjectHome class into 'get_created_objects'.
Problem:
In the table in section 3.1.6.2 in the row regarding the Cache two typos need to be corrected regarding the location of the word 'first' in the sentence regarding attaching objects to the CacheAccess and the last bullet needs to be rewritten and be made more clear.
Solution:
Replace:
Class whose instance represents a set of objects that are locally available. Objects within a Cache can be read directly; however to be modified, they need to be attached first to a CacheAccess. Several Cache objects may be created but in this case, they must be fully isolated:
o A Publisher can only be attached to one Cache.
o A Subscriber can only be attached to one Cache.
o Only DLRL objects belonging to one Cache can be put in relation.
With:
Class whose instance represents a set of objects that are locally available. Objects within a Cache can be read directly; however to be modified, they first need to be attached to a CacheAccess. Several Cache objects may be created but in this case, they must be fully isolated:
o A Publisher can only be attached to one Cache.
o A Subscriber can only be attached to one Cache.
o A DLRL object can only have relationships with DLRL objects in the same Cache.
Problem:
The table in section 3.1.6.2 in the row regarding the ObjectListener talks about a 'peculiar' ObjectHome. This should say 'particuliar'.
Solution:
Replace:
Interface to be implemented by the application to be made aware of incoming updates on the objects belonging to one peculiar ObjectHome.
With:
Interface to be implemented by the application to be made aware of incoming updates on the objects belonging to one particuliar ObjectHome.
Problem:
On page 3-18 remove wrong quotation marks and the word identify in the explanation of the AlreadyExisting exception should be identity.
Replace:
o "DCPSError: if an unexpected error occured in the DCPS
o "BadHomeDefinition: if a registered ObjectHome has dependencies to other, unregistered ObjectHomes.
o "NotFound: if a reference is encountered to an object that has not (yet) been received by the DCPS.
o "AlreadyExisting: if a new object is created using an identify that is already in use by another object.
o "AlreadyDeleted - if an operation is invoked on an object that has already been deleted.
o "PreconditionNotMet - if a precondition for this operation has not (yet) been met.
o "NoSuchElement - if an attempt is made to retrieve a non-existing element from a Collection.
o "SQLError - if an SQL expression has bad syntax, addresses non-existing fields or is not consistent with its parameters.
With:
o DCPSError: if an unexpected error occured in the DCPS
o BadHomeDefinition: if a registered ObjectHome has dependencies to other, unregistered ObjectHomes.
o NotFound: if a reference is encountered to an object that has not (yet) been received by the DCPS.
o AlreadyExisting: if a new object is created using an identity that is already in use by another object.
o AlreadyDeleted - if an operation is invoked on an object that has already been deleted.
o PreconditionNotMet - if a precondition for this operation has not (yet) been met.
o NoSuchElement - if an attempt is made to retrieve a non-existing element from a Collection.
o SQLError - if an SQL expression has bad syntax, addresses non-existing fields or is not consistent with its parameters.
Problem:
The first sentence in section 3.1.6.3.2, CacheBase, should talk about Cache-like objects, not Cache objects. Various wrong quotation marks are used in the attribute and operation listings. Attributes and operation names are not in bold at the description as is common throughout the spec. A bullet is missing for the explanation of the kind attribute. A new line is missing before the sentence "It offers methods to:". And the word 'cache' in the explanation of CacheUsage should be CacheBase
Solution:
Replace:
CacheBase is the base class for all Cache classes. It contains the common functionality that supports Cache and CacheAccess.
With:
CacheBase is the base class for all Cache-like classes. It contains the common functionality that supports Cache and CacheAccess.
Replace:
The public attributes give:
o "The cache_usage indicates whether the cache is intended to support write operations (WRITE_ONLY or READ_WRITE) or not (READ_ONLY). This attribute is given at creation time and cannot be changed afterwards.
o "A list of (untyped) objects that are contained in this CacheBase. To obtain objects by type, see the get_objects method in the typed ObjectHome.
The kind describes whether a CacheBase instance represents a Cache or a CacheAccess.It offers methods to:
o "Refresh the contents of the Cache with respect to its origins (DCPS in case of a main Cache, Cache in case of a CacheAccess).
With:
The public attributes give:
o The cache_usage indicates whether the CacheBase is intended to support write operations (WRITE_ONLY or READ_WRITE) or not (READ_ONLY). This attribute is given at creation time and cannot be changed afterwards.
o A list of (untyped) objects that are contained in this CacheBase. If an error in DCPS occurred, a DCPSError is raised. To obtain objects by type, see the get_objects method in the typed ObjectHome.
o The kind describes whether a CacheBase instance represents a Cache or a CacheAccess.
It offers methods to:
o Refresh the contents of the CacheBase (refresh) with respect to its origins (DCPS in case of a main Cache, Cache in case of a CacheAccess).
Problem:
Several wrong quotation marks in section 3.1.6.3.3, CacheAccess, can be seen in the description of various operations.
Solution:
We propose to remove these quotation marks before operation descriptions of type_names, create_contract and delete_contract
Problem (1/2):
On page 3-29 in section 3.1.6.3.8 regarding the ObjectListener it incorrectly states the parameters of the operations as ObjectReference (which doesn't even exist anymore!), ObjectRoot and ObjectRoot. All these return type should be replaced with Undefined as the operations are generated in the typed ObjectListener class as typed operations.
Solution (1/2):
Replace the return types of the operation in the table with Undefined.
Problem (2/2):
On page 3-30 at the top it states that four operations are following, but only three operations are listed! There are only 3 operations!!
Solution (2/2):
Replace:
It is defined with four methods:
With:
It is defined with three methods:
Problem:
On page 3-29 in section 3.1.6.3.8 regarding the Selection it incorrectly states the types of the attributes 'members' and listener as ObjectRoot[] and SelectionListener respectivly. This should be replaced by <undefined>[] and <undefined>SelectionListener respectively.
The operation set_listener also wrongly specifies the return type and parameter type, both should be replaced by <undefined>SelectionListener.
Solution:
Obvious.
Problem:
In the table on page 3-31 regarding the SelectionCriterion it states the type of attribute kind as 'SelectionCriteria'. However this type does not exist anywhere! It should be CriterionKind. Also the attribute listing underneath the table is not conform the style used throughout the DLRL spec.
Solution:
Replace SelectionCriteria with CriterionKind in the table, make the style conform.
Problem:
In the table on page 3-32 in section 3.1.6.3.11 about the FilterCriterion is states that parameter 'an_object' has as type 'ObjectRoot' However this should be '<undefined>' as the method is properly generated in the 'FooFilter' class.
Solution:
Replace the parameter type of an_object with the word <undefined>.
Problem:
In the table on page 3-32 in section 3.1.6.3.12 regarding the QueryCriterion it states that the parameter names for the set_query (second param) and the set_parameters is 'arguments'. This is not consistent with the IDL PSM, which states 'parameters' as name. They should be made the same. The names in the table should be replaced with the name 'parameters'.
Solution:
Replace the parameter's name 'arguments' with 'parameters'.
Problem:
In section 3.1.6.3.3 CacheAccess, the table states that the operations 'the_object' parameter has as type ObjectRoot. However since these operations are generated in the derived class it should state '<undefined>' as type for the parameters.
Solution:
Obvious
Problem:
The first paragraph on page 3-33 in section 3.1.6.3.14 still talks about primary and secondary objects (or clones). In the last spec change primary objects where renamed to Cache objects and secondary objects(or clones) to CacheAccess objects. Note that cacheAccess object may be clones of cache objects, but that does not need to be the case.
The text should be revised. The text also talks about an ObjectReference, which no longer exists, that text should be removed.
Solution:
Replace:
ObjectRoot is the abstract root for any DLRL class. It brings all the properties that are needed for DLRL management. ObjectRoot are used to represent either objects that are in the Cache (also called primary objects) or clones that are attached to a CacheAccess (also called secondary objects). Secondary objects refer to a primary one with which they share the ObjectReference.
With:
ObjectRoot is the abstract root for any DLRL class. It brings all the properties that are needed for DLRL management. ObjectRoot are used to represent either objects that are in the Cache (also called cache objects) or objects that are attached to a CacheAccess (also called cacheaccess objects). Cacheaccess objects may be clones of cache objects, in that case they share the same OID.
Problem:
The table in section 3.1.6.3.19 regarding the intmap has an attribute defined called 'keys'. The type listed is 'string[]', but this should be 'integer[]', obviously.
Solution:
Obvious
Problem:
The text in section 3.1.6.2 states that any entity for which a generated class exists are indicated in italics. However when we look at the figure we see that this is not correct. The CacheBase class is incorrectly shown in italics, and the Selection class is incorrectly NOT shown in italics. The CacheListener should also not be in italics, as no class is generated for it, the same goes for the SelectionCriterion and the Collection. The ObjectHome however SHOULD be in italics.
Solution:
Make ObjectHome and Selection in italics
Make CacheBase, CacheListener, SelectionCriterion and collection not in italics.
Problem:
In section 3.2.1.2.2 Implied IDL on page 3-60. A white space is missing in the attribute definition of the selections attribute between the attribute name and attribute type.
Solution:
Replace:
readonly attribute FooSelectionSeqselections;
With:
readonly attribute FooSelectionSeq selections;
Problem:
In section 3.2.2.3.2.9 typo in section name ExtensionTable, it should be ExtensionTopic.
Solution:
Replace:
3.2.2.3.2.9 ExtensionTable
With:
3.2.2.3.2.9 ExtensionTopic
Problem:
In section 3.2.3.2 IDL Model description on page 3-69 and 3-70 a module DLRL is mentioned twice, which does not exist. Track inherits from DLRL::ObjectRoot, it should be module DDS::ObjectRoot, same goes for valuetype Radar on page 3-70
Solution:
Replace:
#include "dlrl.idl"
valuetype stringStrMap; // StrMap<string>
valuetype TrackList; // List<Track>
valuetype Radar;
valuetype Track : DLRL::ObjectRoot
{
public double x;
public double y;
public stringStrMap comments;
public long w;
public Radar a_radar;
};
valuetype Track3D : Track {
public double z;
};
valuetype Radar : DLRL::ObjectRoot {
public TrackList tracks;
};
With:
#include "dlrl.idl"
valuetype stringStrMap; // StrMap<string>
valuetype TrackList; // List<Track>
valuetype Radar;
valuetype Track : DDS::ObjectRoot {
public double x;
public double y;
public stringStrMap comments;
public long w;
public Radar a_radar;
}
;
valuetype Track3D : Track
{
public double z;
}
;
valuetype Radar : DDS::ObjectRoot
{
public TrackList tracks;
}
;
Problem:
In section 3.2.3.4 Underlying DCPS Data Model the RADAR-TOPIC table is completely missing.
Solution:
Add:
RADAR-TOPIC Topic to store all Radar objects, as well as the embedded attributes.
OID Field to store the oid identifier.
Problem:
Faulty quotation marks can be found in the method description in sections 3.1.6.3.16, 3.1.6.3.17, 3.1.6.3.18 and 3.1.6.3.19. For example it states:
o "remove - to remove the item with the highest index from the collection.
But it should be:
o remove - to remove the item with the highest index from the collection.
All quotation marks should be removed!
Solution:
Remove quotation marks in section 3.1.6.3.16 for operations:
- remove
- added_elements
- removed_elements
- modified_elements
- add
- put
- get
Remove quotation marks in section 3.1.6.3.17 for operations:
- add
- remove
- contains
- added_elements
- removed_elements
Remove quotation marks in section 3.1.6.3.18 for operations:
- keys
- remove
- added_elements
- removed_elements
- modified_elements
- put
- get
Remove quotation marks in section 3.1.6.3.19 for operations:
- keys
- remove
- added_elements
- removed_elements
- modified_elements
- put
- get