From: Ed Warnicke Date: Fri, 29 Nov 2013 11:18:20 +0000 (+0000) Subject: Merge "Add support for enums as configuration attributes in config and netconf subsys... X-Git-Tag: jenkins-controller-bulk-release-prepare-only-2-1~303 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=a8e8f161be05a865c5ae364b57e76521944c13cf;hp=bab3649670c33b3b12a49c59fc1c5cabcbcb924e;p=controller.git Merge "Add support for enums as configuration attributes in config and netconf subsystem." --- diff --git a/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/attribute/JavaAttribute.java b/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/attribute/JavaAttribute.java index 73c7e227be..325ca9ee06 100644 --- a/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/attribute/JavaAttribute.java +++ b/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/attribute/JavaAttribute.java @@ -121,15 +121,21 @@ public class JavaAttribute extends AbstractAttribute implements TypedAttribute { if (isArray()) { return getArrayType(); + } else if (isEnum(baseType)) { + return getSimpleType(baseType); } else if (isDerivedType(baseType)) { return getCompositeType(baseType, baseTypeDefinition); } - return getSimpleType(); + return getSimpleType(getType()); } - private OpenType getSimpleType() { - SimpleType simpleType = SimpleTypeResolver.getSimpleType(getType()); + private boolean isEnum(Type baseType) { + return baseType.getFullyQualifiedName().equals(Enum.class.getName()); + } + + private OpenType getSimpleType(Type type) { + SimpleType simpleType = SimpleTypeResolver.getSimpleType(type); return simpleType; } diff --git a/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/attribute/SimpleTypeResolver.java b/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/attribute/SimpleTypeResolver.java index 61ad74d7ee..87b55f3756 100644 --- a/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/attribute/SimpleTypeResolver.java +++ b/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/attribute/SimpleTypeResolver.java @@ -39,26 +39,21 @@ public class SimpleTypeResolver { return expectedSimpleType; } - private static final Map> JAVA_TYPE_TO_SIMPLE_TYPE = Maps - .newHashMap(); + private static final Map> JAVA_TYPE_TO_SIMPLE_TYPE = Maps.newHashMap(); static { // TODO add all - JAVA_TYPE_TO_SIMPLE_TYPE.put(Integer.class.getName(), - SimpleType.INTEGER); + JAVA_TYPE_TO_SIMPLE_TYPE.put(Integer.class.getName(), SimpleType.INTEGER); JAVA_TYPE_TO_SIMPLE_TYPE.put(int.class.getName(), SimpleType.INTEGER); JAVA_TYPE_TO_SIMPLE_TYPE.put(Short.class.getName(), SimpleType.SHORT); JAVA_TYPE_TO_SIMPLE_TYPE.put(short.class.getName(), SimpleType.SHORT); JAVA_TYPE_TO_SIMPLE_TYPE.put(Long.class.getName(), SimpleType.LONG); JAVA_TYPE_TO_SIMPLE_TYPE.put(long.class.getName(), SimpleType.LONG); JAVA_TYPE_TO_SIMPLE_TYPE.put(String.class.getName(), SimpleType.STRING); - JAVA_TYPE_TO_SIMPLE_TYPE.put(Boolean.class.getName(), - SimpleType.BOOLEAN); - JAVA_TYPE_TO_SIMPLE_TYPE.put(boolean.class.getName(), - SimpleType.BOOLEAN); - JAVA_TYPE_TO_SIMPLE_TYPE.put(BigInteger.class.getName(), - SimpleType.BIGINTEGER); - JAVA_TYPE_TO_SIMPLE_TYPE.put(BigDecimal.class.getName(), - SimpleType.BIGDECIMAL); + JAVA_TYPE_TO_SIMPLE_TYPE.put(Enum.class.getName(), SimpleType.STRING); + JAVA_TYPE_TO_SIMPLE_TYPE.put(Boolean.class.getName(), SimpleType.BOOLEAN); + JAVA_TYPE_TO_SIMPLE_TYPE.put(boolean.class.getName(), SimpleType.BOOLEAN); + JAVA_TYPE_TO_SIMPLE_TYPE.put(BigInteger.class.getName(), SimpleType.BIGINTEGER); + JAVA_TYPE_TO_SIMPLE_TYPE.put(BigDecimal.class.getName(), SimpleType.BIGDECIMAL); JAVA_TYPE_TO_SIMPLE_TYPE.put(Byte.class.getName(), SimpleType.BYTE); JAVA_TYPE_TO_SIMPLE_TYPE.put(byte.class.getName(), SimpleType.BYTE); JAVA_TYPE_TO_SIMPLE_TYPE.put(Date.class.getName(), SimpleType.DATE); 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 977aa6a87e..df636fd0ef 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 @@ -115,12 +115,10 @@ module config-test-impl { type tt:extend-twice; } -/* TODO Add support for enums - leaf extended-enum { type tt:extend-enum; } -*/ + container dto-c { leaf simple-arg { type uint32; 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 80b903b219..73d39c6162 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 @@ -132,10 +132,11 @@ public class NetconfMappingTest extends AbstractConfigTest { // check after edit commit(); Element response = getConfigRunning(); - System.err.println(XmlUtil.toString(response)); + checkBinaryLeafEdited(response); checkTypeConfigAttribute(response); checkTypedefs(response); + checkEnum(response); edit("netconfMessages/editConfig_remove.xml"); @@ -367,6 +368,26 @@ public class NetconfMappingTest extends AbstractConfigTest { assertEquals(1, children.getLength()); } + private void checkEnum(final Element response) { + XmlElement modulesElement = XmlElement.fromDomElement(response).getOnlyChildElement("data") + .getOnlyChildElement("modules"); + + String enumName = "extended-enum"; + String enumContent = "TWO"; + + for (XmlElement moduleElement : modulesElement.getChildElements("module")) { + String name = moduleElement.getOnlyChildElement("name").getTextContent(); + if(name.equals("test1")) { + XmlElement enumAttr = moduleElement.getOnlyChildElement(enumName); + assertEquals(enumContent, enumAttr.getTextContent()); + + return; + } + } + + fail("Enum attribute " + enumName + ":" + enumContent + " not present in " + XmlUtil.toString(response)); + } + private void checkTypeConfigAttribute(Element response) { XmlElement modulesElement = XmlElement.fromDomElement(response).getOnlyChildElement("data") 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 d44652bf13..2233b41a85 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/editConfig.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/editConfig.xml @@ -39,6 +39,10 @@ 1 + + TWO + + 44 8 1