Fixed bug in Data store where multiple readers could overwrite
[controller.git] / opendaylight / md-sal / sal-binding-broker / src / main / java / org / opendaylight / controller / sal / binding / impl / util / YangSchemaUtils.java
1 package org.opendaylight.controller.sal.binding.impl.util;
2
3 import java.util.List;
4
5 import org.opendaylight.yangtools.yang.common.QName;
6 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
7 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
8 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
9
10 import com.google.common.base.Preconditions;
11
12 public class YangSchemaUtils {
13
14     public static final String AUGMENT_IDENTIFIER = "augment-identifier";
15
16
17     public YangSchemaUtils() {
18         throw new UnsupportedOperationException("Helper class. Instantiation is prohibited");
19     }
20
21
22     public static QName getAugmentationQName(AugmentationSchema augmentation) {
23         Preconditions.checkNotNull(augmentation, "Augmentation must not be null.");
24         QName identifier = getAugmentationIdentifier(augmentation);
25         if(identifier != null) {
26             return identifier;
27         }
28         for(DataSchemaNode child : augmentation.getChildNodes()) {
29             // FIXME: Return true name
30             return QName.create(child.getQName(), "foo_augment");
31         }
32         // FIXME: Allways return a qname with module namespace.
33         return null;
34     }
35
36     public static QName getAugmentationIdentifier(AugmentationSchema augmentation) {
37         for(UnknownSchemaNode extension : augmentation.getUnknownSchemaNodes()) {
38             if(AUGMENT_IDENTIFIER.equals(extension.getNodeType().getLocalName())) {
39                 return extension.getQName();
40             }
41         }
42         return null;
43     }
44 }