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