BUG 1975 - yang unkeyed list is transformed to map node
[yangtools.git] / yang / yang-data-composite-node / src / main / java / org / opendaylight / yangtools / yang / data / composite / node / schema / cnsn / parser / CnSnToNormalizedNodeParserFactory.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.yangtools.yang.data.composite.node.schema.cnsn.parser;
9
10 import org.opendaylight.yangtools.yang.data.api.Node;
11 import org.opendaylight.yangtools.yang.data.api.schema.AnyXmlNode;
12 import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode;
13 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
14 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
15 import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode;
16 import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode;
17 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
18 import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
19 import org.opendaylight.yangtools.yang.data.api.schema.OrderedMapNode;
20 import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListEntryNode;
21 import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode;
22 import org.opendaylight.yangtools.yang.data.impl.schema.transform.ToNormalizedNodeParser;
23 import org.opendaylight.yangtools.yang.data.impl.schema.transform.ToNormalizedNodeParserFactory;
24 import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.NodeParserDispatcher;
25 import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
26 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
27 import org.opendaylight.yangtools.yang.model.api.ChoiceNode;
28 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
29 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
30 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
31 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
32
33 public class CnSnToNormalizedNodeParserFactory implements ToNormalizedNodeParserFactory<Node<?>> {
34
35     private final ContainerNodeCnSnParser containerNodeCnSnParser;
36     private final LeafNodeCnSnParser leafNodeCnSnParser;
37     private final LeafSetEntryNodeCnSnParser leafSetEntryNodeCnSnParser;
38     private final LeafSetNodeCnSnParser leafSetNodeCnSnParser;
39     private final MapNodeCnSnParser mapNodeCnSnParser;
40     private final MapEntryNodeCnSnParser mapEntryNodeCnSnParser;
41     private final UnkeyedListNodeCnSnParser unkeyedListNodeCnSnParser;
42     private final UnkeyedListEntryNodeCnSnParser unkeyedListEntryNodeCnSnParser;
43     private final ChoiceNodeCnSnParser choiceNodeCnSnParser;
44     private final AugmentationNodeCnSnParser augmentationNodeCnSnParser;
45     private final AnyXmlNodeCnSnParser anyXmlNodeCnSnParser;
46     private final OrderedListNodeCnSnParser orderedListNodeCnSnParser;
47
48     private CnSnToNormalizedNodeParserFactory() {
49         leafNodeCnSnParser = new LeafNodeCnSnParser();
50         leafSetEntryNodeCnSnParser = new LeafSetEntryNodeCnSnParser();
51         leafSetNodeCnSnParser = new LeafSetNodeCnSnParser(leafSetEntryNodeCnSnParser);
52         anyXmlNodeCnSnParser = new AnyXmlNodeCnSnParser();
53
54         final NodeParserDispatcher<Node<?>> dispatcher = new NodeParserDispatcher.BaseNodeParserDispatcher<Node<?>>(
55                 this) {
56
57         };
58
59         containerNodeCnSnParser = new ContainerNodeCnSnParser(dispatcher);
60         mapEntryNodeCnSnParser = new MapEntryNodeCnSnParser(dispatcher);
61         mapNodeCnSnParser = new MapNodeCnSnParser(mapEntryNodeCnSnParser);
62         orderedListNodeCnSnParser = new OrderedListNodeCnSnParser(mapEntryNodeCnSnParser);
63         unkeyedListEntryNodeCnSnParser = new UnkeyedListEntryNodeCnSnParser(dispatcher);
64         unkeyedListNodeCnSnParser = new UnkeyedListNodeCnSnParser(unkeyedListEntryNodeCnSnParser);
65         choiceNodeCnSnParser = new ChoiceNodeCnSnParser(dispatcher);
66         augmentationNodeCnSnParser = new AugmentationNodeCnSnParser(dispatcher);
67
68     }
69
70     public static CnSnToNormalizedNodeParserFactory getInstance() {
71         return new CnSnToNormalizedNodeParserFactory();
72     }
73
74     @Override
75     public ToNormalizedNodeParser<Node<?>, ContainerNode, ContainerSchemaNode> getContainerNodeParser() {
76         return containerNodeCnSnParser;
77     }
78
79     @Override
80     public ToNormalizedNodeParser<Node<?>, LeafNode<?>, LeafSchemaNode> getLeafNodeParser() {
81         return leafNodeCnSnParser;
82     }
83
84     @Override
85     public ToNormalizedNodeParser<Node<?>, LeafSetNode<?>, LeafListSchemaNode> getLeafSetNodeParser() {
86         return leafSetNodeCnSnParser;
87     }
88
89     @Override
90     public ToNormalizedNodeParser<Node<?>, MapNode, ListSchemaNode> getMapNodeParser() {
91         return mapNodeCnSnParser;
92     }
93
94     @Override
95     public ToNormalizedNodeParser<Node<?>, org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode, ChoiceNode> getChoiceNodeParser() {
96         return choiceNodeCnSnParser;
97     }
98
99     @Override
100     public ToNormalizedNodeParser<Node<?>, AugmentationNode, AugmentationSchema> getAugmentationNodeParser() {
101         return augmentationNodeCnSnParser;
102     }
103
104     @Override
105     public ToNormalizedNodeParser<Node<?>, LeafSetEntryNode<?>, LeafListSchemaNode> getLeafSetEntryNodeParser() {
106         return leafSetEntryNodeCnSnParser;
107     }
108
109     @Override
110     public ToNormalizedNodeParser<Node<?>, MapEntryNode, ListSchemaNode> getMapEntryNodeParser() {
111         return mapEntryNodeCnSnParser;
112     }
113
114     @Override
115     public ToNormalizedNodeParser<Node<?>, AnyXmlNode, AnyXmlSchemaNode> getAnyXmlNodeParser() {
116         return anyXmlNodeCnSnParser;
117     }
118
119     @Override
120     public ToNormalizedNodeParser<Node<?>, UnkeyedListNode, ListSchemaNode> getUnkeyedListNodeParser() {
121         return unkeyedListNodeCnSnParser;
122     }
123
124     @Override
125     public ToNormalizedNodeParser<Node<?>, UnkeyedListEntryNode, ListSchemaNode> getUnkeyedListEntryNodeParser() {
126         return unkeyedListEntryNodeCnSnParser;
127     }
128
129     @Override
130     public ToNormalizedNodeParser<Node<?>, OrderedMapNode, ListSchemaNode> getOrderedListNodeParser() {
131         return orderedListNodeCnSnParser;
132     }
133
134 }