Composite node <-> normalized node serializer and deserializer
[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.impl.schema.transform.ToNormalizedNodeParser;
20 import org.opendaylight.yangtools.yang.data.impl.schema.transform.ToNormalizedNodeParserFactory;
21 import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.NodeParserDispatcher;
22 import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
23 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
24 import org.opendaylight.yangtools.yang.model.api.ChoiceNode;
25 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
26 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
27 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
28 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
29
30 public class CnSnToNormalizedNodeParserFactory implements ToNormalizedNodeParserFactory<Node<?>> {
31
32     private final ContainerNodeCnSnParser containerNodeCnSnParser;
33     private final LeafNodeCnSnParser leafNodeCnSnParser;
34     private final LeafSetEntryNodeCnSnParser leafSetEntryNodeCnSnParser;
35     private final LeafSetNodeCnSnParser leafSetNodeCnSnParser;
36     private final MapNodeCnSnParser mapNodeCnSnParser;
37     private final MapEntryNodeCnSnParser mapEntryNodeCnSnParser;
38     private final ChoiceNodeCnSnParser choiceNodeCnSnParser;
39     private final AugmentationNodeCnSnParser augmentationNodeCnSnParser;
40     private final AnyXmlNodeCnSnParser anyXmlNodeCnSnParser;
41
42     private CnSnToNormalizedNodeParserFactory() {
43         leafNodeCnSnParser = new LeafNodeCnSnParser();
44         leafSetEntryNodeCnSnParser = new LeafSetEntryNodeCnSnParser();
45         leafSetNodeCnSnParser = new LeafSetNodeCnSnParser(leafSetEntryNodeCnSnParser);
46         anyXmlNodeCnSnParser = new AnyXmlNodeCnSnParser();
47
48         final NodeParserDispatcher<Node<?>> dispatcher = new NodeParserDispatcher.BaseNodeParserDispatcher<Node<?>>(
49                 this) {
50
51         };
52
53         containerNodeCnSnParser = new ContainerNodeCnSnParser(dispatcher);
54         mapEntryNodeCnSnParser = new MapEntryNodeCnSnParser(dispatcher);
55         mapNodeCnSnParser = new MapNodeCnSnParser(mapEntryNodeCnSnParser);
56         choiceNodeCnSnParser = new ChoiceNodeCnSnParser(dispatcher);
57         augmentationNodeCnSnParser = new AugmentationNodeCnSnParser(dispatcher);
58
59     }
60
61     public static CnSnToNormalizedNodeParserFactory getInstance() {
62         return new CnSnToNormalizedNodeParserFactory();
63     }
64
65     @Override
66     public ToNormalizedNodeParser<Node<?>, ContainerNode, ContainerSchemaNode> getContainerNodeParser() {
67         return containerNodeCnSnParser;
68     }
69
70     @Override
71     public ToNormalizedNodeParser<Node<?>, LeafNode<?>, LeafSchemaNode> getLeafNodeParser() {
72         return leafNodeCnSnParser;
73     }
74
75     @Override
76     public ToNormalizedNodeParser<Node<?>, LeafSetNode<?>, LeafListSchemaNode> getLeafSetNodeParser() {
77         return leafSetNodeCnSnParser;
78     }
79
80     @Override
81     public ToNormalizedNodeParser<Node<?>, MapNode, ListSchemaNode> getMapNodeParser() {
82         return mapNodeCnSnParser;
83     }
84
85     @Override
86     public ToNormalizedNodeParser<Node<?>, org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode, ChoiceNode> getChoiceNodeParser() {
87         return choiceNodeCnSnParser;
88     }
89
90     @Override
91     public ToNormalizedNodeParser<Node<?>, AugmentationNode, AugmentationSchema> getAugmentationNodeParser() {
92         return augmentationNodeCnSnParser;
93     }
94
95     @Override
96     public ToNormalizedNodeParser<Node<?>, LeafSetEntryNode<?>, LeafListSchemaNode> getLeafSetEntryNodeParser() {
97         return leafSetEntryNodeCnSnParser;
98     }
99
100     @Override
101     public ToNormalizedNodeParser<Node<?>, MapEntryNode, ListSchemaNode> getMapEntryNodeParser() {
102         return mapEntryNodeCnSnParser;
103     }
104
105     @Override
106     public ToNormalizedNodeParser<Node<?>, AnyXmlNode, AnyXmlSchemaNode> getAnyXmlNodeParser() {
107         return anyXmlNodeCnSnParser;
108     }
109 }