To set a property value that takes a Java object that holds other Java objects, use the atg-rest-class-descriptor
control parameter to specify the Java class of the nested objects. For example, if you are setting a property value that takes a List of Sets, indicate the Java class of the Set using the atg-rest-class-descriptor
parameter. Then include the values for the nested Sets.
The name of the parameter inside the atg-rest-class-descriptor
matches the name of one of the actual values that you supply later in the input parameter.
The input structure for nested multiple value objects builds on the structure for input objects in general. See Object Values in Input.
The following example uses the atg-rest-class-descriptor
control parameter to specify that the value of the myListOfSets
property is a java.util.ArrayList
object. That ArrayList
object holds java.util.HashSet
objects. After the atg-rest-class-descriptor
, the example provides the values that are nested inside the myListOfSets
property.
{arg1 : { "atg-rest-class-type":"foo.class.WithNestedMultis", "atg-rest-class-descriptor": { "myListOfSets": { "container-class": "java.util.ArrayList", "element-class": "java.util.HashSet" } }, "myListOfSets": [["red","blue"],["green","yellow"]] } }
Here is the same object property value, encoded in XML.
<arg1> <atg-rest-class-type>foo.class.WithNestedMultis</atg-rest-class-type> <atg-rest-class-descriptor> <myListOfSets> <container-class>java.util.ArrayList</container-class> <element-class>java.util.HashSet</element-class> </myListOfSets> </atg-rest-class-descriptor> <myListOfSets> <element> <element>red</element> <element>blue</element> </element> <element> <element>green</element> <element>yellow</element> </element> </myListOfSets> </arg1>
Three or More Nested Levels
Include additional container-class
and element-class
parameters for each nested level of multiple value objects. The element-class
parameter of the parent object holds the additional container-class
and element-class
parameters.
For example:
"atg-rest-class-descriptor": { "myListOfSets": { "container-class": "java.util.ArrayList", "element-class": { "container-class": "java.util.HashSet", "element-class": "java.util.HashMap" } } }
Array Types
To specify an array type in the atg-rest-class-descriptor
control parameter, use the standard Java notation for arrays.
Array Type | Java Notation |
---|---|
String |
|
byte |
|
int |
|
Two-dimensional array of Strings |
|
Key Class Types for Map Values
Keys for Map object values must be Strings. No other class types are supported.