Merge "Fix race conditions between config-manager and persister."
[controller.git] / opendaylight / config / yang-jmx-generator / src / main / java / org / opendaylight / controller / config / yangjmxgenerator / TypeProviderWrapper.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.controller.config.yangjmxgenerator;
9
10 import org.opendaylight.yangtools.sal.binding.generator.spi.TypeProvider;
11 import org.opendaylight.yangtools.sal.binding.model.api.Type;
12 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
13 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
14 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
15 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
16
17 public class TypeProviderWrapper {
18     private final TypeProvider typeProvider;
19
20     public TypeProviderWrapper(TypeProvider typeProvider) {
21         this.typeProvider = typeProvider;
22     }
23
24     public Type getType(LeafSchemaNode leaf) {
25         TypeDefinition<?> type = leaf.getType();
26         return getType(leaf, type);
27     }
28
29     public Type getType(SchemaNode leaf, TypeDefinition<?> type) {
30         Type javaType;
31         try {
32             javaType = typeProvider.javaTypeForSchemaDefinitionType(
33                     type, leaf);
34             if (javaType == null)
35                 throw new IllegalArgumentException("Unknown type received for "
36                         + leaf.toString());
37         } catch (IllegalArgumentException e) {
38             throw new IllegalArgumentException("Error while resolving type of "
39                     + leaf, e);
40         }
41         return javaType;
42     }
43
44     // there is no getType in common interface
45     public Type getType(LeafListSchemaNode leaf) {
46         Type javaType;
47         try {
48             javaType = typeProvider.javaTypeForSchemaDefinitionType(
49                     leaf.getType(), leaf);
50             if (javaType == null)
51                 throw new IllegalArgumentException(
52                         "Unknown type received for  " + leaf.toString());
53         } catch (IllegalArgumentException e) {
54             throw new IllegalArgumentException("Error while resolving type of "
55                     + leaf, e);
56         }
57         return javaType;
58     }
59
60     public String getJMXParamForBaseType(TypeDefinition<?> baseType) {
61         return typeProvider.getConstructorPropertyName(baseType);
62     }
63 }