Subject: Properties component selection (model and protocol)

From: "Joel M. Halpern" <[email-masked]>
Date: Tue, 21 Jun 2005 11:18:58 -0400

I have had several discussions (mostly with Jamal) about the details of the 
properties approach that was discussed on the list earlier.  I am going to 
add this to the model.
Please shout on the list if any of what follows seems a bad idea.

One pair of issues affects the protocol more than the model.
You may recall an earlier email that discussed the issue of using a flag in 
the path to indiciate taht one wanted property information instead of 
content information.  This introduced some odd ambiguities and confusion.
So instead it appears to make more sense to introduce two new protocol 
operations,
    GET-PROPERTIES, and SET-PROPERTIES
These will take paths and data as content just as GET and SET do.
And remove the ambiguity about the path reference flag.

Unfortunately, I then found a further complication.  Some properties are 
only a single value (in a structure, for inheritance).  However, some have 
more fields than that.  Array properties have several fields.  Alias 
properties have several fields, some writeable.  So this raises the issue 
of access to elements of the property structure.  We could declare for a 
read that one just gets the whole structure.  But we want to be able to 
write certain property information.
     Aside:
     We could decide to give up on using properties for aliases, and that 
would remove
     all current writeable properties.  But it is reasonable to expect them 
to return.
     In fact, I want to use them again for events.  So we need writeable 
properties.
For writing, it is clearly necessary to be able to indicate which field or 
fields within the property information one is trying to write.
So we need another path flag.  This flag is valid only within a 
GET-PROPERTY or SET-PROPERTY.  And is not valid on path information nested 
within a path that has used this flag.  The flag indicates that this path, 
and all nested paths within it are to be applied to the property 
information, not to the base path for selecting property information.  (I 
currently can not imagine needing such nesting, but prohibiting it seems wrong)
While this flag does have some special cases, they are at least clear.  And 
this allows for selecting components of proprty information.