Refactored base yang-java types.
[yangtools.git] / yang / yang-model-util / src / main / java / org / opendaylight / yangtools / yang / model / util / BaseTypes.java
1 /*\r
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 package org.opendaylight.yangtools.yang.model.util;\r
9 \r
10 import java.net.URI;\r
11 import java.util.ArrayList;\r
12 import java.util.Collections;\r
13 import java.util.Date;\r
14 import java.util.List;\r
15 \r
16 import org.opendaylight.yangtools.yang.common.QName;\r
17 import org.opendaylight.yangtools.yang.model.api.SchemaPath;\r
18 \r
19 public final class BaseTypes {\r
20 \r
21     private BaseTypes() {}\r
22 \r
23     public static final URI BaseTypesNamespace = URI\r
24             .create("urn:ietf:params:xml:ns:yang:1");\r
25 \r
26     /**\r
27      * Construct QName for Built-in base Yang type. The namespace for\r
28      * built-in base yang types is defined as: urn:ietf:params:xml:ns:yang:1\r
29      *\r
30      * @param typeName yang type name\r
31      * @return built-in base yang type QName.\r
32      */\r
33     public static final QName constructQName(final String typeName) {\r
34         return new QName(BaseTypesNamespace, typeName);\r
35     }\r
36 \r
37     /**\r
38      * Creates Schema Path from Qname.\r
39      *\r
40      * @param typeName yang type QName\r
41      * @return Schema Path from Qname.\r
42      */\r
43     public static final SchemaPath schemaPath(final QName typeName) {\r
44         List<QName> pathList = Collections.singletonList(typeName);\r
45         return new SchemaPath(pathList, true);\r
46     }\r
47 \r
48     /**\r
49      * Creates Schema Path from List of partial paths defined as Strings, module Namespace and\r
50      * module latest Revision Date.\r
51      *\r
52      * @param actualPath List of partial paths\r
53      * @param namespace Module Namespace\r
54      * @param revision Revision Date\r
55      * @return Schema Path\r
56      */\r
57     public static final SchemaPath schemaPath(final List<String> actualPath, final URI namespace, final Date revision) {\r
58         if (actualPath == null) {\r
59             throw new IllegalArgumentException("The actual path List MUST be specified.");\r
60         }\r
61         final List<QName> pathList = new ArrayList<QName>();\r
62         for (final String path : actualPath) {\r
63             final QName qname = new QName(namespace, revision, path);\r
64             if (qname != null) {\r
65                 pathList.add(qname);\r
66             }\r
67         }\r
68         return new SchemaPath(pathList, true);\r
69     }\r
70 }\r