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=e3e29c79cd474986066cde18924bd955082e836b;hp=a2238d1a13da854c07df8278c697e8fddd15bdd2;hb=f43b01b81319959b1907e3e04537f5169e7f33d8;hpb=b5d0a1c60d3ff26cb4d7ecf45ee5fc0f95636c19 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 a2238d1a13..e3e29c79cd 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,34 +7,76 @@ */ package org.opendaylight.controller.config.yangjmxgenerator; -import org.opendaylight.yangtools.sal.binding.generator.spi.TypeProvider; -import org.opendaylight.yangtools.sal.binding.model.api.Type; +import org.opendaylight.mdsal.binding.generator.spi.TypeProvider; +import org.opendaylight.mdsal.binding.model.api.Type; +import org.opendaylight.mdsal.binding.model.util.BindingGeneratorUtil; 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; +import org.opendaylight.yangtools.yang.model.util.type.CompatUtils; public class TypeProviderWrapper { private final TypeProvider typeProvider; - public TypeProviderWrapper(TypeProvider typeProvider) { + public TypeProviderWrapper(final TypeProvider typeProvider) { this.typeProvider = typeProvider; } - public Type getType(LeafSchemaNode leaf) { - TypeDefinition type = leaf.getType(); + /** + * 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(final SchemaNode schemaNode) { + return convertToJavaName(schemaNode, true); + } + + public static String findJavaParameter(final SchemaNode schemaNode) { + return convertToJavaName(schemaNode, false); + } + + public static String convertToJavaName(final SchemaNode schemaNode, + final boolean capitalizeFirstLetter) { + for (final UnknownSchemaNode unknownNode : schemaNode.getUnknownSchemaNodes()) { + if (ConfigConstants.JAVA_NAME_PREFIX_EXTENSION_QNAME + .equals(unknownNode.getNodeType())) { + final String value = unknownNode.getNodeParameter(); + return convertToJavaName(value, capitalizeFirstLetter); + } + } + return convertToJavaName(schemaNode.getQName().getLocalName(), + capitalizeFirstLetter); + } + + public static String convertToJavaName(final String localName, + final boolean capitalizeFirstLetter) { + if (capitalizeFirstLetter) { + return BindingGeneratorUtil.parseToClassName(localName); + } else { + return BindingGeneratorUtil.parseToValidParamName(localName); + } + } + + public Type getType(final LeafSchemaNode leaf) { + final TypeDefinition type = CompatUtils.compatLeafType(leaf); return getType(leaf, type); } - public Type getType(SchemaNode leaf, TypeDefinition type) { + public String getDefault(final LeafSchemaNode node) { + return this.typeProvider.getTypeDefaultConstruction(node); + } + + public Type getType(final SchemaNode leaf, final TypeDefinition type) { Type javaType; try { - javaType = typeProvider.javaTypeForSchemaDefinitionType( + javaType = this.typeProvider.javaTypeForSchemaDefinitionType( type, leaf); - if (javaType == null) + if (javaType == null) { throw new IllegalArgumentException("Unknown type received for " + leaf.toString()); - } catch (IllegalArgumentException e) { + } + } catch (final IllegalArgumentException e) { throw new IllegalArgumentException("Error while resolving type of " + leaf, e); } @@ -42,22 +84,27 @@ public class TypeProviderWrapper { } // there is no getType in common interface - public Type getType(LeafListSchemaNode leaf) { + public Type getType(final LeafListSchemaNode leaf) { Type javaType; try { - javaType = typeProvider.javaTypeForSchemaDefinitionType( + javaType = this.typeProvider.javaTypeForSchemaDefinitionType( leaf.getType(), leaf); - if (javaType == null) + if (javaType == null) { throw new IllegalArgumentException( "Unknown type received for " + leaf.toString()); - } catch (IllegalArgumentException e) { + } + } catch (final IllegalArgumentException e) { throw new IllegalArgumentException("Error while resolving type of " + leaf, e); } return javaType; } - public String getJMXParamForBaseType(TypeDefinition baseType) { - return typeProvider.getConstructorPropertyName(baseType); + public String getJMXParamForBaseType(final TypeDefinition baseType) { + return this.typeProvider.getConstructorPropertyName(baseType); + } + + public String getJMXParamForUnionInnerType(final TypeDefinition unionInnerType) { + return this.typeProvider.getParamNameFromType(unionInnerType); } }