Merge "Bug 1235: Documented Notification services of MD-SAL"
[controller.git] / opendaylight / netconf / netconf-cli / src / main / java / org / opendaylight / controller / netconf / cli / writer / impl / CliOutputFromNormalizedNodeSerializerFactory.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.controller.netconf.cli.writer.impl;
9
10 import org.opendaylight.controller.netconf.cli.writer.OutFormatter;
11 import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode;
12 import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
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.codec.xml.XmlCodecProvider;
20 import org.opendaylight.yangtools.yang.data.impl.schema.transform.FromNormalizedNodeSerializer;
21 import org.opendaylight.yangtools.yang.data.impl.schema.transform.FromNormalizedNodeSerializerFactory;
22 import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.serializer.NodeSerializerDispatcher;
23 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
24 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
25 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
26 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
27 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
28
29 public final class CliOutputFromNormalizedNodeSerializerFactory implements FromNormalizedNodeSerializerFactory<String> {
30     private final ContainerNodeCliSerializer containerSerializer;
31     private final ChoiceNodeCliSerializer choiceSerializer;
32     private final AugmentationNodeCliSerializer augmentSerializer;
33     private final LeafNodeCliSerializer leafNodeSerializer;
34     private final LeafSetNodeCliSerializer leafSetSerializer;
35     private final MapNodeCliSerializer mapNodeSerializer;
36     private final LeafSetEntryNodeCliSerializer leafSetEntryNodeSerializer;
37     private final MapEntryNodeCliSerializer mapEntryNodeSerializer;
38     final NodeSerializerDispatcher<String> dispatcher = new NodeCliSerializerDispatcher(this);
39
40     private CliOutputFromNormalizedNodeSerializerFactory(final OutFormatter out, final XmlCodecProvider codecProvider) {
41
42         containerSerializer = new ContainerNodeCliSerializer(out, dispatcher);
43         choiceSerializer = new ChoiceNodeCliSerializer(out, dispatcher);
44         augmentSerializer = new AugmentationNodeCliSerializer(out, dispatcher);
45         leafNodeSerializer = new LeafNodeCliSerializer(out);
46
47         leafSetEntryNodeSerializer = new LeafSetEntryNodeCliSerializer(out);
48         leafSetSerializer = new LeafSetNodeCliSerializer(out, leafSetEntryNodeSerializer);
49
50         mapEntryNodeSerializer = new MapEntryNodeCliSerializer(out, dispatcher);
51         mapNodeSerializer = new MapNodeCliSerializer(out, mapEntryNodeSerializer);
52     }
53
54     public NodeSerializerDispatcher<String> getDispatcher() {
55         return dispatcher;
56     }
57
58     public static CliOutputFromNormalizedNodeSerializerFactory getInstance(final OutFormatter out,
59             final XmlCodecProvider codecProvider) {
60         return new CliOutputFromNormalizedNodeSerializerFactory(out, codecProvider);
61     }
62
63     @Override
64     public FromNormalizedNodeSerializer<String, AugmentationNode, AugmentationSchema> getAugmentationNodeSerializer() {
65         return augmentSerializer;
66     }
67
68     @Override
69     public FromNormalizedNodeSerializer<String, ChoiceNode, org.opendaylight.yangtools.yang.model.api.ChoiceNode> getChoiceNodeSerializer() {
70         return choiceSerializer;
71     }
72
73     @Override
74     public FromNormalizedNodeSerializer<String, ContainerNode, ContainerSchemaNode> getContainerNodeSerializer() {
75         return containerSerializer;
76     }
77
78     @Override
79     public FromNormalizedNodeSerializer<String, LeafNode<?>, LeafSchemaNode> getLeafNodeSerializer() {
80         return leafNodeSerializer;
81     }
82
83     @Override
84     public FromNormalizedNodeSerializer<String, LeafSetEntryNode<?>, LeafListSchemaNode> getLeafSetEntryNodeSerializer() {
85         return leafSetEntryNodeSerializer;
86     }
87
88     @Override
89     public FromNormalizedNodeSerializer<String, LeafSetNode<?>, LeafListSchemaNode> getLeafSetNodeSerializer() {
90         return leafSetSerializer;
91     }
92
93     @Override
94     public FromNormalizedNodeSerializer<String, MapEntryNode, ListSchemaNode> getMapEntryNodeSerializer() {
95         return mapEntryNodeSerializer;
96     }
97
98     @Override
99     public FromNormalizedNodeSerializer<String, MapNode, ListSchemaNode> getMapNodeSerializer() {
100         return mapNodeSerializer;
101     }
102
103 }