From 9dd381d10faa068ff59bea3b3fb23843d02f69f6 Mon Sep 17 00:00:00 2001 From: Maros Marsalek Date: Tue, 3 Dec 2013 16:37:43 +0100 Subject: [PATCH] Add support for BigDecimal to netconf mapping. Change-Id: Iffc1d679105899f0b66a5b62020dfedd17931b45 Signed-off-by: Maros Marsalek --- .../yang-test/src/main/yang/config-test-impl.yang | 6 ++++++ .../resolving/SimpleAttributeResolvingStrategy.java | 10 ++++++++++ .../confignetconfconnector/NetconfMappingTest.java | 6 ++++++ .../src/test/resources/netconfMessages/editConfig.xml | 4 ++++ 4 files changed, 26 insertions(+) diff --git a/opendaylight/config/yang-test/src/main/yang/config-test-impl.yang b/opendaylight/config/yang-test/src/main/yang/config-test-impl.yang index df636fd0ef..ba5021ea09 100644 --- a/opendaylight/config/yang-test/src/main/yang/config-test-impl.yang +++ b/opendaylight/config/yang-test/src/main/yang/config-test-impl.yang @@ -119,6 +119,12 @@ module config-test-impl { type tt:extend-enum; } + leaf sleep-factor { + type decimal64 { + fraction-digits 2; + } + } + container dto-c { leaf simple-arg { type uint32; diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/resolving/SimpleAttributeResolvingStrategy.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/resolving/SimpleAttributeResolvingStrategy.java index 3b881579f1..e1b8ecf17e 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/resolving/SimpleAttributeResolvingStrategy.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/resolving/SimpleAttributeResolvingStrategy.java @@ -16,6 +16,7 @@ import org.slf4j.LoggerFactory; import javax.management.openmbean.SimpleType; import java.lang.reflect.Method; +import java.math.BigDecimal; import java.math.BigInteger; import java.util.Date; import java.util.Map; @@ -65,6 +66,7 @@ final class SimpleAttributeResolvingStrategy extends AbstractAttributeResolvingS resolverPlugins.put(Date.class.getCanonicalName(), new DateResolver()); resolverPlugins.put(Character.class.getCanonicalName(), new CharResolver()); resolverPlugins.put(BigInteger.class.getCanonicalName(), new BigIntegerResolver()); + resolverPlugins.put(BigDecimal.class.getCanonicalName(), new BigDecimalResolver()); } static interface Resolver { @@ -106,6 +108,14 @@ final class SimpleAttributeResolvingStrategy extends AbstractAttributeResolvingS } } + static class BigDecimalResolver extends DefaultResolver { + + @Override + protected Object parseObject(Class type, String value) throws Exception { + return new BigDecimal(value); + } + } + static class CharResolver extends DefaultResolver { @Override diff --git a/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/NetconfMappingTest.java b/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/NetconfMappingTest.java index 73d39c6162..d91e38db33 100644 --- a/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/NetconfMappingTest.java +++ b/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/NetconfMappingTest.java @@ -137,6 +137,7 @@ public class NetconfMappingTest extends AbstractConfigTest { checkTypeConfigAttribute(response); checkTypedefs(response); checkEnum(response); + checkBigDecimal(response); edit("netconfMessages/editConfig_remove.xml"); @@ -162,6 +163,11 @@ public class NetconfMappingTest extends AbstractConfigTest { verifyNoMoreInteractions(netconfOperationRouter); } + private void checkBigDecimal(Element response) { + int size = response.getElementsByTagName("sleep-factor").getLength(); + assertEquals(1, size); + } + private void closeSession() throws NetconfDocumentedException, ParserConfigurationException, SAXException, IOException { DefaultCloseSession closeOp = new DefaultCloseSession(NETCONF_SESSION_ID); diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/editConfig.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/editConfig.xml index 2233b41a85..caa0094c4b 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/editConfig.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/editConfig.xml @@ -31,6 +31,10 @@ test1 + + 2.00 + + 1 -- 2.36.6