X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fconfig%2Fyang-jmx-generator%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyangjmxgenerator%2FTypeProviderWrapper.java;h=ac1992932fe6c348920470b0c9e93004a49c5bf9;hp=c43fead0fcd0f5aa7e281768e2da0020bf149918;hb=73dcd6419a9804de962edafa58fac490e6a270a7;hpb=576aa6018e48dfca8f223b7ac929139a32135201 diff --git a/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/TypeProviderWrapper.java b/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/TypeProviderWrapper.java index c43fead0fc..ac1992932f 100644 --- a/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/TypeProviderWrapper.java +++ b/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/TypeProviderWrapper.java @@ -7,12 +7,14 @@ */ package org.opendaylight.controller.config.yangjmxgenerator; +import org.opendaylight.yangtools.binding.generator.util.BindingGeneratorUtil; import org.opendaylight.yangtools.sal.binding.generator.spi.TypeProvider; import org.opendaylight.yangtools.sal.binding.model.api.Type; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; public class TypeProviderWrapper { private final TypeProvider typeProvider; @@ -21,6 +23,40 @@ public class TypeProviderWrapper { this.typeProvider = typeProvider; } + /** + * For input node, find if it contains config:java-name-prefix extension. If + * not found, convert local name of node converted to cammel case. + */ + public static String findJavaNamePrefix(SchemaNode schemaNode) { + return convertToJavaName(schemaNode, true); + } + + public static String findJavaParameter(SchemaNode schemaNode) { + return convertToJavaName(schemaNode, false); + } + + public static String convertToJavaName(SchemaNode schemaNode, + boolean capitalizeFirstLetter) { + for (UnknownSchemaNode unknownNode : schemaNode.getUnknownSchemaNodes()) { + if (ConfigConstants.JAVA_NAME_PREFIX_EXTENSION_QNAME + .equals(unknownNode.getNodeType())) { + String value = unknownNode.getNodeParameter(); + return convertToJavaName(value, capitalizeFirstLetter); + } + } + return convertToJavaName(schemaNode.getQName().getLocalName(), + capitalizeFirstLetter); + } + + public static String convertToJavaName(String localName, + boolean capitalizeFirstLetter) { + if (capitalizeFirstLetter) { + return BindingGeneratorUtil.parseToClassName(localName); + } else { + return BindingGeneratorUtil.parseToValidParamName(localName); + } + } + public Type getType(LeafSchemaNode leaf) { TypeDefinition type = leaf.getType(); return getType(leaf, type); @@ -35,9 +71,10 @@ public class TypeProviderWrapper { try { javaType = typeProvider.javaTypeForSchemaDefinitionType( type, leaf); - if (javaType == null) + if (javaType == null) { throw new IllegalArgumentException("Unknown type received for " + leaf.toString()); + } } catch (IllegalArgumentException e) { throw new IllegalArgumentException("Error while resolving type of " + leaf, e); @@ -51,9 +88,10 @@ public class TypeProviderWrapper { try { javaType = typeProvider.javaTypeForSchemaDefinitionType( leaf.getType(), leaf); - if (javaType == null) + if (javaType == null) { throw new IllegalArgumentException( "Unknown type received for " + leaf.toString()); + } } catch (IllegalArgumentException e) { throw new IllegalArgumentException("Error while resolving type of " + leaf, e);