4a5a9e89b9dd4b51ff7583d805082e584aa967b3
[yangtools.git] / data / yang-data-api / src / main / java / org / opendaylight / yangtools / yang / data / api / schema / stream / LoggingNormalizedNodeStreamWriter.java
1 /*
2  * Copyright (c) 2015 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.api.schema.stream;
9
10 import com.google.common.annotations.Beta;
11 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
12 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
13 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
14 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
15 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue;
16 import org.slf4j.Logger;
17 import org.slf4j.LoggerFactory;
18
19 /**
20  * A {@link NormalizedNodeStreamWriter} which logs the events into a {@link Logger}.
21  */
22 @Beta
23 public final class LoggingNormalizedNodeStreamWriter extends AbstractIndentingNormalizedNodeStreamWriter {
24     private static final Logger LOG = LoggerFactory.getLogger(LoggingNormalizedNodeStreamWriter.class);
25
26     public LoggingNormalizedNodeStreamWriter() {
27         // Default constructor
28     }
29
30     public LoggingNormalizedNodeStreamWriter(final int indentSize) {
31         super(indentSize);
32     }
33
34     @Override
35     public void flush() {
36         LOG.trace("<<FLUSH>>");
37     }
38
39     @Override
40     public void close() {
41         LOG.debug("<<END-OF-STREAM>>");
42     }
43
44     @Override
45     void enterUnkeyedListItem(final NodeIdentifier name, final String indent) {
46         LOG.debug("{}{}[](no key)", indent, name);
47     }
48
49     @Override
50     void enterUnkeyedList(final NodeIdentifier name, final String indent) {
51         LOG.debug("{}{}(no key)", indent, name);
52     }
53
54     @Override
55     void enterMapNode(final NodeIdentifier name, final String indent) {
56         LOG.debug("{}{}(key)", indent, name);
57     }
58
59     @Override
60     void enterMapEntryNode(final NodeIdentifierWithPredicates identifier, final String indent) {
61         LOG.debug("{}{}[](key)", indent, identifier);
62     }
63
64     @Override
65     void enterLeafSet(final NodeIdentifier name, final String indent) {
66         LOG.debug("{}{}(leaf-list)", indent, name);
67     }
68
69     @Override
70     void enterContainerNode(final NodeIdentifier name, final String indent) {
71         LOG.debug("{}{}(container)", indent, name);
72     }
73
74     @Override
75     void enterChoiceNode(final NodeIdentifier name, final String indent) {
76         LOG.debug("{}{}(choice)", indent, name);
77     }
78
79     @Override
80     void enterAugmentationNode(final AugmentationIdentifier identifier, final String indent) {
81         LOG.debug("{}{}(augmentation)", indent, identifier);
82     }
83
84     @Override
85     void enterLeafSetEntryNode(final NodeWithValue<?> name, final String indent) {
86         LOG.debug("{}{}(entry}", indent, name.getNodeType());
87     }
88
89     @Override
90     void enterLeafNode(final NodeIdentifier name, final String indent) {
91         LOG.debug("{}{}(leaf)", indent, name);
92     }
93
94     @Override
95     void enterAnyxmlNode(final NodeIdentifier name, final String indent) {
96         LOG.debug("{}{}(anyxml)", indent, name);
97     }
98
99     @Override
100     void enterAnydataNode(final NodeIdentifier name, final String indent) {
101         LOG.debug("{}{}(anydata)", indent, name);
102     }
103
104     @Override
105     void exitNode(final String indent) {
106         LOG.debug("{}(end)", indent);
107     }
108
109     @Override
110     @SuppressFBWarnings("SLF4J_SIGN_ONLY_FORMAT")
111     void scalarValue(final Object value, final String indent) {
112         LOG.debug("{}({})={}", indent, value.getClass().getSimpleName(), value);
113     }
114 }