Add attributes to nodes that can take attributes
[yangtools.git] / yang / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / schema / transform / dom / parser / DomNodeDispatcher.java
1 package org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.parser;
2
3 import org.opendaylight.yangtools.yang.data.api.schema.*;
4 import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlCodecProvider;
5 import org.opendaylight.yangtools.yang.data.impl.schema.transform.ToNormalizedNodeParser;
6 import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.NodeParserDispatcher;
7 import org.opendaylight.yangtools.yang.model.api.*;
8 import org.opendaylight.yangtools.yang.model.api.ChoiceNode;
9 import org.w3c.dom.Element;
10
11 public class DomNodeDispatcher extends NodeParserDispatcher.BaseNodeParserDispatcher<Element> {
12
13         private final ContainerNodeDomParser containerNodeDomParser;
14         private final LeafNodeDomParser leafNodeDomParser;
15         private final LeafSetNodeDomParser leafSetNodeDomParser;
16         private final MapNodeDomParser mapNodeDomParser;
17         private final ChoiceNodeDomParser choiceNodeDomParser;
18         private final AugmentationNodeDomParser augmentationNodeDomParser;
19
20         private static DomNodeDispatcher instance = null;
21
22         private DomNodeDispatcher(XmlCodecProvider codecProvider) {
23             leafNodeDomParser = new LeafNodeDomParser(codecProvider);
24             containerNodeDomParser = new ContainerNodeDomParser(codecProvider);
25             leafSetNodeDomParser = new LeafSetNodeDomParser(new LeafSetEntryNodeDomParser(codecProvider));
26             mapNodeDomParser = new MapNodeDomParser(new MapEntryNodeDomParser(codecProvider));
27             choiceNodeDomParser = new ChoiceNodeDomParser(codecProvider);
28             augmentationNodeDomParser = new AugmentationNodeDomParser(codecProvider);
29         }
30
31         @Override
32         protected ToNormalizedNodeParser<Element, ContainerNode, ContainerSchemaNode> getContainerNodeParser() {
33             return containerNodeDomParser;
34         }
35
36         @Override
37         protected ToNormalizedNodeParser<Element, LeafNode<?>, LeafSchemaNode> getLeafNodeParser() {
38             return leafNodeDomParser;
39         }
40
41         @Override
42         protected ToNormalizedNodeParser<Element, LeafSetNode<?>, LeafListSchemaNode> getLeafSetNodeParser() {
43             return leafSetNodeDomParser;
44         }
45
46         @Override
47         protected ToNormalizedNodeParser<Element, MapNode, ListSchemaNode> getMapNodeParser() {
48             return mapNodeDomParser;
49         }
50
51         @Override
52         protected ToNormalizedNodeParser<Element, org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode, ChoiceNode> getChoiceNodeParser() {
53             return choiceNodeDomParser;
54         }
55
56         @Override
57         protected ToNormalizedNodeParser<Element, AugmentationNode, AugmentationSchema> getAugmentationNodeParser() {
58             return augmentationNodeDomParser;
59         }
60
61         public static NodeParserDispatcher<Element> getInstance(XmlCodecProvider codecProvider) {
62             if (instance == null) {
63                 instance = new DomNodeDispatcher(codecProvider);
64             }
65             return instance;
66         }
67 }