+ private JSONObject processDataNodeContainer(DataNodeContainer dataNode, String moduleName, JSONObject models,
+ SchemaContext schemaContext) throws JSONException, IOException {
+ return processDataNodeContainer(dataNode, moduleName, models, (Boolean) null, schemaContext);
+ }
+
+ private JSONObject processDataNodeContainer(DataNodeContainer dataNode, String moduleName, JSONObject models,
+ Boolean isConfig, SchemaContext schemaContext) throws JSONException, IOException {
+ if (dataNode instanceof ListSchemaNode || dataNode instanceof ContainerSchemaNode) {
+ Preconditions.checkArgument(dataNode instanceof SchemaNode, "Data node should be also schema node");
+ Iterable<DataSchemaNode> containerChildren = dataNode.getChildNodes();
+ JSONObject properties = processChildren(containerChildren, ((SchemaNode) dataNode).getQName(), moduleName,
+ models, isConfig, schemaContext);
+
+ String nodeName = (BooleanUtils.isNotFalse(isConfig) ? OperationBuilder.CONFIG
+ : OperationBuilder.OPERATIONAL) + ((SchemaNode) dataNode).getQName().getLocalName();
+
+ JSONObject childSchema = getSchemaTemplate();
+ childSchema.put(TYPE_KEY, OBJECT_TYPE);
+ childSchema.put(PROPERTIES_KEY, properties);
+ childSchema.put("id", nodeName);
+ models.put(nodeName, childSchema);
+
+ if (BooleanUtils.isNotFalse(isConfig)) {
+ createConcreteModelForPost(models, ((SchemaNode) dataNode).getQName().getLocalName(),
+ createPropertiesForPost(dataNode));
+ }
+
+ JSONObject items = new JSONObject();
+ items.put(REF_KEY, nodeName);
+ JSONObject dataNodeProperties = new JSONObject();
+ dataNodeProperties.put(TYPE_KEY, dataNode instanceof ListSchemaNode ? ARRAY_TYPE : OBJECT_TYPE);
+ dataNodeProperties.put(ITEMS_KEY, items);
+
+ return dataNodeProperties;