To start, a short question: Are multivalued attribute sets supported? i.e. if you have an attribute set with 4 integer attributes representing co-ordinates (lat degrees, lat minutes, long degrees, long minutes), and you allow the category to contain more than one set of coordinates, are you supposed to be able to set these programmatically with Web Services? I suspect that you cannot.
Now the details of why I ask: I've observed that the AttributeGroup object (effectively like .fData in a category definition) has a Values array with a DataValue object for each attribute in the category. Each DataValue (String, Boolean, Date, Integer, or Set) has a Values array. That Values array is typically a string, int, boolean, or date value array, but in the case of sets it is a set of RowValue Objects. Now here is where it gets interesting. The RowValue object contains a Values array laid out much like the AttributeGroup.Values, that is it contains a DataValue object for each attribute value (anyone who knows Oscript and the layout of the Category defintion and data structures should find this all eerily familiar). Now the problem is that If your set defaults to 1 value, you will only have one value to populate. Only if you have your attribute set *BY DEFAULT* have more than one value will the additional RowValues be available to populate.
I tried to work around this by cloning the original row value object, setting the attribute values inside of it, then appending it to my TableValue.Values array. I can see it establishing. When I do this, I get two rows for my attribute set, but for some reason, the second row is just a copy of the first (my initial cloning of the original row used the serialize and deserialize method to make a deep copy). I suspect that just cloning the object isn't enough because now your keys won't have the right row information in them.
Has anyone attempted to set multi-valued attribute sets in Web Services, or am I truly on the bleeding edge??
-Hugh