blob: 5e8321d61ed8ea1b54a349cd0bc5ec54644e7f23 [file] [log] [blame]
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +05301/*
2 * Copyright 2016-present Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.yangutils.translator.tojava.javamodel;
17
18import org.onosproject.yangutils.datamodel.YangType;
19import org.onosproject.yangutils.translator.exception.TranslatorException;
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +053020import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +053021import org.onosproject.yangutils.datamodel.javadatamodel.YangToJavaNamingConflictUtil;
22
23import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.getJavaDataType;
24import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.getJavaImportClass;
25import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.getJavaImportPackage;
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053026
27/**
28 * Represents java information corresponding to the YANG type.
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053029 *
30 * @param <T> generic parameter for YANG java type
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053031 */
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +053032public class YangJavaTypeTranslator<T>
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053033 extends YangType<T>
34 implements JavaQualifiedTypeResolver {
35
Bharat saraswal2d90b0c2016-08-04 02:00:03 +053036 private JavaQualifiedTypeInfoTranslator javaQualifiedAccess;
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053037
38 /**
39 * Create a YANG leaf object with java qualified access details.
40 */
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +053041 public YangJavaTypeTranslator() {
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053042 super();
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +053043 setJavaQualifiedInfo(new JavaQualifiedTypeInfoTranslator());
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053044 }
45
46 @Override
janani bdd1314f2016-05-19 17:39:50 +053047 public void updateJavaQualifiedInfo(YangToJavaNamingConflictUtil conflictResolver) {
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +053048 JavaQualifiedTypeInfoTranslator importInfo = getJavaQualifiedInfo();
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053049
50 /*
51 * Type is added as an attribute in the class.
52 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +053053 String className = getJavaImportClass(this, false, conflictResolver);
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053054 if (className != null) {
55 /*
56 * Corresponding to the attribute type a class needs to be imported,
57 * since it can be a derived type or a usage of wrapper classes.
58 */
59 importInfo.setClassInfo(className);
Bharat saraswal2d90b0c2016-08-04 02:00:03 +053060 String classPkg = getJavaImportPackage(this,
61 false, conflictResolver);
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053062 if (classPkg == null) {
63 throw new TranslatorException("import package cannot be null when the class is used");
64 }
65 importInfo.setPkgInfo(classPkg);
66 } else {
67 /*
68 * The attribute does not need a class to be imported, for example
69 * built in java types.
70 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +053071 String dataTypeName = getJavaDataType(this);
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053072 if (dataTypeName == null) {
73 throw new TranslatorException("not supported data type");
74 }
75 importInfo.setClassInfo(dataTypeName);
76 }
Bharat saraswalc0e04842016-05-12 13:16:57 +053077 setJavaQualifiedInfo(importInfo);
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053078 }
79
80 @Override
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +053081 public JavaQualifiedTypeInfoTranslator getJavaQualifiedInfo() {
Bharat saraswal2d90b0c2016-08-04 02:00:03 +053082 return javaQualifiedAccess;
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053083 }
84
85 @Override
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +053086 public void setJavaQualifiedInfo(JavaQualifiedTypeInfoTranslator typeInfo) {
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053087 javaQualifiedAccess = typeInfo;
88 }
89}