X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-protocolbuffer-encoding%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fnode%2Futils%2FNodeIdentifierWithValueGenerator.java;h=b2ec5644d4b9d8c29803a69eeafc3a758d4c56ab;hb=516a4b2ea78179c9bd6ebb584862e8fc686ebf08;hp=fcde679bedab36d90715af74a269cad259bdf33a;hpb=de3e413b633b7555ae8f3fe2ec163dbb7dda5da8;p=controller.git diff --git a/opendaylight/md-sal/sal-protocolbuffer-encoding/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/NodeIdentifierWithValueGenerator.java b/opendaylight/md-sal/sal-protocolbuffer-encoding/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/NodeIdentifierWithValueGenerator.java index fcde679bed..b2ec5644d4 100644 --- a/opendaylight/md-sal/sal-protocolbuffer-encoding/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/NodeIdentifierWithValueGenerator.java +++ b/opendaylight/md-sal/sal-protocolbuffer-encoding/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/NodeIdentifierWithValueGenerator.java @@ -1,18 +1,23 @@ package org.opendaylight.controller.cluster.datastore.node.utils; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.data.impl.codec.TypeDefinitionAwareCodec; +import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; +import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; import java.util.regex.Matcher; import java.util.regex.Pattern; public class NodeIdentifierWithValueGenerator{ private final String id; - private static final Pattern pattern = Pattern.compile("(.*)\\Q[\\E(.*)\\Q]\\E"); + private final DataSchemaNode schemaNode; + private static final Pattern pattern = Pattern.compile("(.*)\\Q[\\E(.*)\\Q]\\E"); private final Matcher matcher; private final boolean doesMatch; - public NodeIdentifierWithValueGenerator(String id){ + public NodeIdentifierWithValueGenerator(String id, DataSchemaNode schemaNode){ this.id = id; + this.schemaNode = schemaNode; matcher = pattern.matcher(this.id); doesMatch = matcher.matches(); } @@ -26,6 +31,18 @@ public class NodeIdentifierWithValueGenerator{ final String value = matcher.group(2); return new YangInstanceIdentifier.NodeWithValue( - QNameFactory.create(name), value); + QNameFactory.create(name), getValue(value)); } + + private Object getValue(String value){ + if(schemaNode != null){ + if(schemaNode instanceof LeafListSchemaNode){ + return TypeDefinitionAwareCodec + .from(LeafListSchemaNode.class.cast(schemaNode).getType()).deserialize(value); + + } + } + return value; + } + }