aboutsummaryrefslogtreecommitdiffstats
path: root/restconf-client/provider
diff options
context:
space:
mode:
authorVidyashree Rama <vidyashree.rama@huawei.com>2019-04-17 09:10:56 +0530
committerVidyashree Rama <vidyashree.rama@huawei.com>2019-04-17 09:55:39 +0000
commit0570deb66e8815ad78a486516ebe5273b3238e78 (patch)
tree6cb2645d1fee627b7bcf26c60a291130bad4aa1b /restconf-client/provider
parenta5fa2ea36c115aba01eb3328fd95a12dd654ed00 (diff)
Code refactoring in restconf client yang serialisers.
1. logging the exception when handling underscore in yang serialisers 2. Refactor code to not nest more than 3 if/for statements 3. Throw SvcLogicException instead of generic 4. Reduce switch case number of lines from 8 to at most 5 Issue-ID: CCSDK-1236 Change-Id: Ic02ba424c2d1748d071e38d25ae159f5d8bd6451 Signed-off-by: Vidyashree Rama <vidyashree.rama@huawei.com>
Diffstat (limited to 'restconf-client/provider')
-rw-r--r--restconf-client/provider/src/main/java/org/onap/ccsdk/sli/plugins/yangserializers/pnserializer/MdsalPropertiesNodeSerializer.java51
-rw-r--r--restconf-client/provider/src/main/java/org/onap/ccsdk/sli/plugins/yangserializers/pnserializer/MdsalPropertiesNodeUtils.java31
2 files changed, 58 insertions, 24 deletions
diff --git a/restconf-client/provider/src/main/java/org/onap/ccsdk/sli/plugins/yangserializers/pnserializer/MdsalPropertiesNodeSerializer.java b/restconf-client/provider/src/main/java/org/onap/ccsdk/sli/plugins/yangserializers/pnserializer/MdsalPropertiesNodeSerializer.java
index 759fe802..0eca40d0 100644
--- a/restconf-client/provider/src/main/java/org/onap/ccsdk/sli/plugins/yangserializers/pnserializer/MdsalPropertiesNodeSerializer.java
+++ b/restconf-client/provider/src/main/java/org/onap/ccsdk/sli/plugins/yangserializers/pnserializer/MdsalPropertiesNodeSerializer.java
@@ -29,6 +29,8 @@ import org.opendaylight.yangtools.yang.model.api.Module;
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;
@@ -52,6 +54,8 @@ import static org.onap.ccsdk.sli.plugins.yangserializers.pnserializer.NodeType.S
*/
public class MdsalPropertiesNodeSerializer extends PropertiesNodeSerializer<SchemaNode, SchemaContext> {
+ private static final Logger log = LoggerFactory.getLogger(
+ MdsalPropertiesNodeSerializer.class);
private SchemaNode curSchema;
private PropertiesNode node;
@@ -111,6 +115,8 @@ public class MdsalPropertiesNodeSerializer extends PropertiesNodeSerializer<Sche
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());
}
}
@@ -158,26 +164,45 @@ public class MdsalPropertiesNodeSerializer extends PropertiesNodeSerializer<Sche
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);
- node = node.endNode();
- curSchema = ((SchemaNode) node.appInfo());
+ addLeafNode(value, MULTI_INSTANCE_LEAF_NODE, localName,
+ ns, schema, name);
break;
default:
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());
+ }
}
diff --git a/restconf-client/provider/src/main/java/org/onap/ccsdk/sli/plugins/yangserializers/pnserializer/MdsalPropertiesNodeUtils.java b/restconf-client/provider/src/main/java/org/onap/ccsdk/sli/plugins/yangserializers/pnserializer/MdsalPropertiesNodeUtils.java
index d0b34f9b..2a3b1761 100644
--- a/restconf-client/provider/src/main/java/org/onap/ccsdk/sli/plugins/yangserializers/pnserializer/MdsalPropertiesNodeUtils.java
+++ b/restconf-client/provider/src/main/java/org/onap/ccsdk/sli/plugins/yangserializers/pnserializer/MdsalPropertiesNodeUtils.java
@@ -177,17 +177,20 @@ public final class MdsalPropertiesNodeUtils {
public static PropertiesNode getAugmentationNode(
AugmentationSchemaNode augSchema,
PropertiesNode parent, String name) {
- if (augSchema != null) {
- Collection<PropertiesNode> childsFromAugmentation = parent
- .augmentations().get(augSchema);
- if (!childsFromAugmentation.isEmpty()) {
- for (PropertiesNode pNode : childsFromAugmentation) {
- if (pNode.name().equals(name)) {
- return pNode;
- }
+ if (augSchema == null) {
+ return null;
+ }
+
+ Collection<PropertiesNode> childsFromAugmentation = parent
+ .augmentations().get(augSchema);
+ if (!childsFromAugmentation.isEmpty()) {
+ for (PropertiesNode pNode : childsFromAugmentation) {
+ if (pNode.name().equals(name)) {
+ return pNode;
}
}
}
+
return null;
}
@@ -218,10 +221,12 @@ public final class MdsalPropertiesNodeUtils {
* @param appInfo application info
* @param type node type
* @return new properties node
+ * @throws SvcLogicException exception while creating properties node
*/
public static PropertiesNode createNode(String name, Namespace namespace,
String uri, PropertiesNode parent,
- Object appInfo, NodeType type) {
+ Object appInfo, NodeType type)
+ throws SvcLogicException {
switch (type) {
case SINGLE_INSTANCE_NODE:
return new SingleInstanceNode(name, namespace, uri, parent, appInfo, type);
@@ -230,7 +235,7 @@ public final class MdsalPropertiesNodeUtils {
case MULTI_INSTANCE_LEAF_HOLDER_NODE:
return new LeafListHolderNode(name, namespace, uri, parent, appInfo, type);
default:
- throw new RuntimeException("Invalid node type");
+ throw new SvcLogicException("Invalid node type " + type);
}
}
@@ -265,6 +270,9 @@ public final class MdsalPropertiesNodeUtils {
return new SchemaPathHolder(id, uri1);
} catch (IllegalArgumentException | RestconfDocumentedException
| NullPointerException e) {
+ log.info("Exception while converting uri to instance identifier" +
+ " context. Process each node in uri to get instance identifier" +
+ " context " + e);
return processNodesAndAppendPath(uri, context);
}
}
@@ -294,6 +302,7 @@ public final class MdsalPropertiesNodeUtils {
try {
id = processIdentifier(uriParts[i], context, actPath);
} catch (IllegalArgumentException e) {
+ log.info(format(EXC_MSG, e));
id.setUri(actPath+ uriParts[i] + sec);
return id;
}
@@ -340,7 +349,7 @@ public final class MdsalPropertiesNodeUtils {
return new SchemaPathHolder(id, val);
} catch (IllegalArgumentException | RestconfDocumentedException |
NullPointerException e) {
- log.info(format(INFO_MSG, val));
+ log.info(format(INFO_MSG, val, e));
}
firstHalf.append(values[i]).append(UNDERSCORE);
secondHalf = secondHalf.replaceFirst(