import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import static org.onap.ccsdk.sli.plugins.yangserializers.pnserializer.MdsalPropertiesNodeUtils.DOT_REGEX;
import static org.onap.ccsdk.sli.plugins.yangserializers.pnserializer.MdsalPropertiesNodeUtils.SLASH;
import static org.onap.ccsdk.sli.plugins.yangserializers.pnserializer.MdsalPropertiesNodeUtils.getRevision;
import static org.onap.ccsdk.sli.plugins.yangserializers.pnserializer.MdsalPropertiesNodeUtils.getValueNamespace;
import static org.onap.ccsdk.sli.plugins.yangserializers.pnserializer.MdsalPropertiesNodeUtils.resolveName;
+import static org.onap.ccsdk.sli.plugins.yangserializers.pnserializer.NodeType.ANY_XML_NODE;
import static org.onap.ccsdk.sli.plugins.yangserializers.pnserializer.NodeType.MULTI_INSTANCE_LEAF_NODE;
import static org.onap.ccsdk.sli.plugins.yangserializers.pnserializer.NodeType.MULTI_INSTANCE_NODE;
import static org.onap.ccsdk.sli.plugins.yangserializers.pnserializer.NodeType.SINGLE_INSTANCE_LEAF_NODE;
*/
public class MdsalPropertiesNodeSerializer extends PropertiesNodeSerializer<SchemaNode, SchemaContext> {
+ private static final Logger log = LoggerFactory.getLogger(
+ MdsalPropertiesNodeSerializer.class);
private SchemaNode curSchema;
private PropertiesNode node;
paramMap = convertToValidParam(paramMap);
+ updateModNameReq(paramMap, rootUri);
+
for (Map.Entry<String, String> entry : paramMap.entrySet()) {
String[] names = entry.getKey().split("\\.");
for (int i = 0; i < names.length; i++) {
return node;
}
+ private void updateModNameReq(Map<String, String> paramMap,
+ String rootUri) {
+ String isReqStr = rootUri + "." + "isNonAppend";
+ String val = paramMap.get(isReqStr);
+ if (val != null && val.equals("true")) {
+ node.nonAppend(true);
+ }
+ }
+
/**
* Converts all the params in the svc logic context into a valid param by
* replacing the underscore in module name to colon at necessary places.
fixedParams.put(fixedUri, entry.getValue());
} catch (IllegalArgumentException | RestconfDocumentedException
| NullPointerException e) {
+ log.info("Exception while processing properties by replacing " +
+ "underscore with colon. Process the properties as it is." + e);
fixedParams.put(entry.getKey(), entry.getValue());
}
}
return;
}
- switch (getNodeType(index, length, name)) {
+ switch (getNodeType(index, length, name, schema)) {
case SINGLE_INSTANCE_NODE:
node = node.addChild(localName, ns,
SINGLE_INSTANCE_NODE, schema);
break;
case SINGLE_INSTANCE_LEAF_NODE:
- Namespace valNs = getValueNamespace(value, schemaCtx());
- value = getParsedValue(valNs, value);
- node = node.addChild(localName, ns, SINGLE_INSTANCE_LEAF_NODE,
- value, valNs, schema);
- node = node.endNode();
- curSchema = ((SchemaNode) node.appInfo());
+ addLeafNode(value, SINGLE_INSTANCE_LEAF_NODE, localName,
+ ns, schema, name);
break;
case MULTI_INSTANCE_LEAF_NODE:
- valNs = getValueNamespace(value, schemaCtx());
- value = getParsedValue(valNs, value);
- node = node.addChild(getIndex(name), localName, ns,
- MULTI_INSTANCE_LEAF_NODE, value,
- valNs, schema);
+ addLeafNode(value, MULTI_INSTANCE_LEAF_NODE, localName,
+ ns, schema, name);
+ break;
+
+ case ANY_XML_NODE:
+ node = node.addChild(localName, ns, ANY_XML_NODE,
+ value, null, schema);
node = node.endNode();
curSchema = ((SchemaNode) node.appInfo());
break;
throw new SvcLogicException("Invalid node type");
}
}
+
+ /**
+ * Adds leaf property node to the current node.
+ *
+ * @param value value of the leaf node
+ * @param type single instance or multi instance leaf node
+ * @param localName name of the leaf node
+ * @param ns namespace of the leaf node
+ * @param schema schema of the leaf node
+ * @param name name of the leaf in properties
+ * @throws SvcLogicException exception while adding leaf node
+ */
+ private void addLeafNode(String value, NodeType type,
+ String localName, Namespace ns,
+ SchemaNode schema, String name) throws SvcLogicException {
+ Namespace valNs = getValueNamespace(value, schemaCtx());
+ value = getParsedValue(valNs, value);
+ if (SINGLE_INSTANCE_LEAF_NODE == type) {
+ node = node.addChild(localName, ns, SINGLE_INSTANCE_LEAF_NODE,
+ value, valNs, schema);
+ } else {
+ node = node.addChild(getIndex(name), localName, ns,
+ MULTI_INSTANCE_LEAF_NODE, value,
+ valNs, schema);
+ }
+ node = node.endNode();
+ curSchema = ((SchemaNode) node.appInfo());
+ }
}