2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.controller.config.yangjmxgenerator;
10 import org.opendaylight.mdsal.binding.generator.spi.TypeProvider;
11 import org.opendaylight.mdsal.binding.model.api.Type;
12 import org.opendaylight.mdsal.binding.model.util.BindingGeneratorUtil;
13 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
14 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
15 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
16 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
17 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
18 import org.opendaylight.yangtools.yang.model.util.type.CompatUtils;
20 public class TypeProviderWrapper {
21 private final TypeProvider typeProvider;
23 public TypeProviderWrapper(final TypeProvider typeProvider) {
24 this.typeProvider = typeProvider;
28 * For input node, find if it contains config:java-name-prefix extension. If
29 * not found, convert local name of node converted to cammel case.
31 public static String findJavaNamePrefix(final SchemaNode schemaNode) {
32 return convertToJavaName(schemaNode, true);
35 public static String findJavaParameter(final SchemaNode schemaNode) {
36 return convertToJavaName(schemaNode, false);
39 public static String convertToJavaName(final SchemaNode schemaNode,
40 final boolean capitalizeFirstLetter) {
41 for (final UnknownSchemaNode unknownNode : schemaNode.getUnknownSchemaNodes()) {
42 if (ConfigConstants.JAVA_NAME_PREFIX_EXTENSION_QNAME
43 .equals(unknownNode.getNodeType())) {
44 final String value = unknownNode.getNodeParameter();
45 return convertToJavaName(value, capitalizeFirstLetter);
48 return convertToJavaName(schemaNode.getQName().getLocalName(),
49 capitalizeFirstLetter);
52 public static String convertToJavaName(final String localName,
53 final boolean capitalizeFirstLetter) {
54 if (capitalizeFirstLetter) {
55 return BindingGeneratorUtil.parseToClassName(localName);
57 return BindingGeneratorUtil.parseToValidParamName(localName);
61 public Type getType(final LeafSchemaNode leaf) {
62 final TypeDefinition<?> type = CompatUtils.compatLeafType(leaf);
63 return getType(leaf, type);
66 public String getDefault(final LeafSchemaNode node) {
67 return this.typeProvider.getTypeDefaultConstruction(node);
70 public Type getType(final SchemaNode leaf, final TypeDefinition<?> type) {
73 javaType = this.typeProvider.javaTypeForSchemaDefinitionType(
75 if (javaType == null) {
76 throw new IllegalArgumentException("Unknown type received for "
79 } catch (final IllegalArgumentException e) {
80 throw new IllegalArgumentException("Error while resolving type of "
86 // there is no getType in common interface
87 public Type getType(final LeafListSchemaNode leaf) {
90 javaType = this.typeProvider.javaTypeForSchemaDefinitionType(
91 leaf.getType(), leaf);
92 if (javaType == null) {
93 throw new IllegalArgumentException(
94 "Unknown type received for " + leaf.toString());
96 } catch (final IllegalArgumentException e) {
97 throw new IllegalArgumentException("Error while resolving type of "
103 public String getJMXParamForBaseType(final TypeDefinition<?> baseType) {
104 return this.typeProvider.getConstructorPropertyName(baseType);
107 public String getJMXParamForUnionInnerType(final TypeDefinition<?> unionInnerType) {
108 return this.typeProvider.getParamNameFromType(unionInnerType);