* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-
package org.opendaylight.controller.cluster.datastore.node.utils.stream;
import java.io.DataOutput;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.common.Revision;
/**
* NormalizedNodeOutputStreamWriter will be used by distributed datastore to send normalized node in
* then will call
* {@link #leafNode(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier, Object)} twice
* and then, {@link #endNode()} to end container node.
- * <p/>
- * Based on the each node, the node type is also written to the stream, that helps in reconstructing the object,
+ *
+ * <p>Based on the each node, the node type is also written to the stream, that helps in reconstructing the object,
* while reading.
*/
-final class NormalizedNodeOutputStreamWriter extends AbstractNormalizedNodeDataOutput {
- private final Map<String, Integer> stringCodeMap = new HashMap<>();
-
+class NormalizedNodeOutputStreamWriter extends SodiumNormalizedNodeOutputStreamWriter {
NormalizedNodeOutputStreamWriter(final DataOutput output) {
super(output);
}
-
- @Override
- protected short streamVersion() {
- return TokenTypes.LITHIUM_VERSION;
- }
-
- @Override
- protected void writeQName(final QName qname) throws IOException {
- writeString(qname.getLocalName());
- writeString(qname.getNamespace().toString());
- writeString(qname.getRevision().map(Revision::toString).orElse(null));
- }
-
- @Override
- protected void writeString(final String string) throws IOException {
- if (string != null) {
- final Integer value = stringCodeMap.get(string);
- if (value == null) {
- stringCodeMap.put(string, stringCodeMap.size());
- writeByte(TokenTypes.IS_STRING_VALUE);
- writeUTF(string);
- } else {
- writeByte(TokenTypes.IS_CODE_VALUE);
- writeInt(value);
- }
- } else {
- writeByte(TokenTypes.IS_NULL_VALUE);
- }
- }
}