package org.opendaylight.controller.yang.model.util;\r
\r
import java.net.URI;\r
+import java.util.ArrayList;\r
import java.util.Date;\r
-import java.util.HashMap;\r
import java.util.HashSet;\r
import java.util.List;\r
-import java.util.Map;\r
import java.util.Set;\r
\r
import org.opendaylight.controller.yang.common.QName;\r
+import org.opendaylight.controller.yang.model.api.SchemaPath;\r
import org.opendaylight.controller.yang.model.api.TypeDefinition;\r
-import org.opendaylight.controller.yang.model.api.type.BinaryTypeDefinition;\r
-import org.opendaylight.controller.yang.model.api.type.BitsTypeDefinition;\r
-import org.opendaylight.controller.yang.model.api.type.BooleanTypeDefinition;\r
-import org.opendaylight.controller.yang.model.api.type.EmptyTypeDefinition;\r
-import org.opendaylight.controller.yang.model.api.type.InstanceIdentifierTypeDefinition;\r
\r
-public class YangTypesConverter {\r
-\r
- private static final Map<String, TypeDefinition<? extends TypeDefinition<?>>> baseYangTypeMap = new HashMap<String, TypeDefinition<? extends TypeDefinition<?>>>();\r
+public final class YangTypesConverter {\r
private static final Set<String> baseYangTypes = new HashSet<String>();\r
\r
- private static final TypeDefinition<BinaryTypeDefinition> BINARY = new BinaryType();\r
- private static final TypeDefinition<BitsTypeDefinition> BITS = new BitsType();\r
- private static final TypeDefinition<BooleanTypeDefinition> BOOLEAN_TYPE = new BooleanType();\r
- private static final TypeDefinition<EmptyTypeDefinition> EMPTY_TYPE = new EmptyType();\r
- private static final TypeDefinition<InstanceIdentifierTypeDefinition> INST_ID_TYPE = new InstanceIdentifier(\r
- null, true);\r
-\r
static {\r
- baseYangTypeMap.put("binary", BINARY);\r
- baseYangTypeMap.put("bits", BITS);\r
- baseYangTypeMap.put("boolean", BOOLEAN_TYPE);\r
- baseYangTypeMap.put("empty", EMPTY_TYPE);\r
- baseYangTypeMap.put("instance-identifier", INST_ID_TYPE);\r
-\r
baseYangTypes.add("binary");\r
baseYangTypes.add("bits");\r
baseYangTypes.add("boolean");\r
return baseYangTypes.contains(type);\r
}\r
\r
- public static TypeDefinition<?> javaTypeForBaseYangType(QName typeQName) {\r
- TypeDefinition<?> type = baseYangTypeMap.get(typeQName.getLocalName());\r
- return type;\r
- }\r
-\r
public static TypeDefinition<?> javaTypeForBaseYangType(\r
List<String> actualPath, URI namespace, Date revision,\r
String typeName) {\r
+ TypeDefinition<?> type = null;\r
\r
+ SchemaPath path = createSchemaPath(actualPath, namespace, revision, typeName);\r
if (typeName.startsWith("int")) {\r
- if (typeName.equals("int8")) {\r
- return new Int8(actualPath, namespace, revision);\r
- } else if (typeName.equals("int16")) {\r
- return new Int16(actualPath, namespace, revision);\r
- } else if (typeName.equals("int32")) {\r
- return new Int32(actualPath, namespace, revision);\r
- } else if (typeName.equals("int64")) {\r
- return new Int64(actualPath, namespace, revision);\r
+ if ("int8".equals(typeName)) {\r
+ type = new Int8(path);\r
+ } else if ("int16".equals(typeName)) {\r
+ type = new Int16(path);\r
+ } else if ("int32".equals(typeName)) {\r
+ type = new Int32(path);\r
+ } else if ("int64".equals(typeName)) {\r
+ type = new Int64(path);\r
}\r
} else if (typeName.startsWith("uint")) {\r
- if (typeName.equals("uint8")) {\r
- return new Uint8(actualPath, namespace, revision);\r
- } else if (typeName.equals("uint16")) {\r
- return new Uint16(actualPath, namespace, revision);\r
- } else if (typeName.equals("uint32")) {\r
- return new Uint32(actualPath, namespace, revision);\r
- } else if (typeName.equals("uint64")) {\r
- return new Uint64(actualPath, namespace, revision);\r
+ if ("uint8".equals(typeName)) {\r
+ type = new Uint8(path);\r
+ } else if ("uint16".equals(typeName)) {\r
+ type = new Uint16(path);\r
+ } else if ("uint32".equals(typeName)) {\r
+ type = new Uint32(path);\r
+ } else if ("uint64".equals(typeName)) {\r
+ type = new Uint64(path);\r
}\r
- } else if (typeName.equals("string")) {\r
- return new StringType(actualPath, namespace, revision);\r
+ } else if ("string".equals(typeName)) {\r
+ type = new StringType(path);\r
+ } else if("binary".equals(typeName)) {\r
+ type = new BinaryType(path);\r
+ } else if("boolean".equals(typeName)) {\r
+ type = new BooleanType(path);\r
+ } else if("empty".equals(typeName)) {\r
+ type = new EmptyType(path);\r
+ } else if("instance-identifier".equals(typeName)) {\r
+ type = new InstanceIdentifier(path, null, true);\r
}\r
\r
- TypeDefinition<?> type = baseYangTypeMap.get(typeName);\r
return type;\r
}\r
\r
+ private static SchemaPath createSchemaPath(List<String> actualPath, URI namespace, Date revision, String typeName) {\r
+ List<String> correctPath = new ArrayList<String>(actualPath);\r
+ // remove module name\r
+ correctPath.remove(0);\r
+\r
+ List<QName> path = new ArrayList<QName>();\r
+ for(String element : correctPath) {\r
+ path.add(new QName(namespace, revision, element));\r
+ }\r
+ // add type qname\r
+ QName typeQName = new QName(BaseTypes.BaseTypesNamespace, typeName);\r
+ path.add(typeQName);\r
+ return new SchemaPath(path, true);\r
+ }\r
+\r
}\r