Containers
!The ! token expands into a numeric token that belongs to the client. Tokens that belong to a given client are created via a special use of the + token. Essentially, a subcontainer created with + is assumed to belong to a caller (usually the one who created it), and the ! token will find it.
To create a subcontainer for another client, add the loginid of the client after the + token that creates it, as follows:
“agent.+jane”
Whatever number it creates, it will be matched by a request for “agent.!” by client jane.
| If several subcontainers have been created for the same user, the ! token seeks out the |
| highest numbered (most recently created) one. If no subcontainer has been created for |
| the client, the use of ! generates an exception. |
| To find another client’s subcontainer, add the loginid of the client after the ! token: |
| “containername.!loginid” |
null | The null token contains no characters. It matches the subcontainer most recently |
| created with the + token, regardless of who it was created for or who the caller is. This is |
| most generally useful in creating and filling a subcontainer in one method call. For |
| example, the following names given to SetValues: |
| “mydata.+” |
| “mydata..age“ |
| “mydata..height” |
| would create a new, numbered subcontainer in mydata, and within that same |
| subcontainer create age and height. If mydata.+ generated mydata.3, this would |
| generate mydata.3.age and mydata.3.height. |
Use of the null token should occur within the same method invocation as the use of the + token it relates to. Otherwise, some other application might use the + token within the same container and ADU, and change the meaning of the null token unexpectedly. However, if the intent is to add data to the most recently created subcontainer no matter who created it, the null token is appropriate.
*The * is permitted only within Assign methods and is described in “Monitoring Criteria: Wildcards,” on page 32.
Limitations of Container Syntax
The first token in a container name cannot be a special token.
When a * token has been used, special tokens other than * cannot be subsequently used.
Note that some methods do not permit some tokens. Most do not support * and some (GetValues and methods like it) do not (meaningfully) support +. For example, in the method invocation GetValues( “a.+.x”), the + token would be interpreted as “create the next number in the sequence,” which is not meaningful for the GetValues method, as the name being generated cannot exist yet and so cannot be read..