private static final Logger LOG = LoggerFactory.getLogger(AbstractLithiumDataOutput.class);
private static final TransformerFactory TF = TransformerFactory.newInstance();
private static final ImmutableMap<Class<?>, Byte> KNOWN_TYPES = ImmutableMap.<Class<?>, Byte>builder()
- .put(String.class, ValueTypes.STRING_TYPE)
- .put(Byte.class, ValueTypes.BYTE_TYPE)
- .put(Integer.class, ValueTypes.INT_TYPE)
- .put(Long.class, ValueTypes.LONG_TYPE)
- .put(Boolean.class, ValueTypes.BOOL_TYPE)
- .put(QName.class, ValueTypes.QNAME_TYPE)
- .put(Short.class, ValueTypes.SHORT_TYPE)
- .put(BigInteger.class, ValueTypes.BIG_INTEGER_TYPE)
- .put(BigDecimal.class, ValueTypes.BIG_DECIMAL_TYPE)
- .put(byte[].class, ValueTypes.BINARY_TYPE)
- .put(Empty.class, ValueTypes.EMPTY_TYPE)
+ .put(String.class, LithiumValue.STRING_TYPE)
+ .put(Byte.class, LithiumValue.BYTE_TYPE)
+ .put(Integer.class, LithiumValue.INT_TYPE)
+ .put(Long.class, LithiumValue.LONG_TYPE)
+ .put(Boolean.class, LithiumValue.BOOL_TYPE)
+ .put(QName.class, LithiumValue.QNAME_TYPE)
+ .put(Short.class, LithiumValue.SHORT_TYPE)
+ .put(BigInteger.class, LithiumValue.BIG_INTEGER_TYPE)
+ .put(BigDecimal.class, LithiumValue.BIG_DECIMAL_TYPE)
+ .put(byte[].class, LithiumValue.BINARY_TYPE)
+ .put(Empty.class, LithiumValue.EMPTY_TYPE)
.build();
private final Map<String, Integer> stringCodeMap = new HashMap<>();
@Override
public final void startLeafNode(final NodeIdentifier name) throws IOException {
LOG.trace("Starting a new leaf node");
- startNode(name, NodeTypes.LEAF_NODE);
+ startNode(name, LithiumNode.LEAF_NODE);
inSimple = true;
}
@Override
public final void startLeafSet(final NodeIdentifier name, final int childSizeHint) throws IOException {
LOG.trace("Starting a new leaf set");
- commonStartLeafSet(name, NodeTypes.LEAF_SET);
+ commonStartLeafSet(name, LithiumNode.LEAF_SET);
}
@Override
public final void startOrderedLeafSet(final NodeIdentifier name, final int childSizeHint) throws IOException {
LOG.trace("Starting a new ordered leaf set");
- commonStartLeafSet(name, NodeTypes.ORDERED_LEAF_SET);
+ commonStartLeafSet(name, LithiumNode.ORDERED_LEAF_SET);
}
private void commonStartLeafSet(final NodeIdentifier name, final byte nodeType) throws IOException {
public final void startLeafSetEntryNode(final NodeWithValue<?> name) throws IOException {
LOG.trace("Starting a new leaf set entry node");
- output.writeByte(NodeTypes.LEAF_SET_ENTRY_NODE);
+ output.writeByte(LithiumNode.LEAF_SET_ENTRY_NODE);
// lastLeafSetQName is set if the parent LeafSetNode was previously written. Otherwise this is a
// stand alone LeafSetEntryNode so write out it's name here.
@Override
public final void startContainerNode(final NodeIdentifier name, final int childSizeHint) throws IOException {
LOG.trace("Starting a new container node");
- startNode(name, NodeTypes.CONTAINER_NODE);
+ startNode(name, LithiumNode.CONTAINER_NODE);
}
@Override
public final void startYangModeledAnyXmlNode(final NodeIdentifier name, final int childSizeHint)
throws IOException {
LOG.trace("Starting a new yang modeled anyXml node");
- startNode(name, NodeTypes.YANG_MODELED_ANY_XML_NODE);
+ startNode(name, LithiumNode.YANG_MODELED_ANY_XML_NODE);
}
@Override
public final void startUnkeyedList(final NodeIdentifier name, final int childSizeHint) throws IOException {
LOG.trace("Starting a new unkeyed list");
- startNode(name, NodeTypes.UNKEYED_LIST);
+ startNode(name, LithiumNode.UNKEYED_LIST);
}
@Override
public final void startUnkeyedListItem(final NodeIdentifier name, final int childSizeHint) throws IOException {
LOG.trace("Starting a new unkeyed list item");
- startNode(name, NodeTypes.UNKEYED_LIST_ITEM);
+ startNode(name, LithiumNode.UNKEYED_LIST_ITEM);
}
@Override
public final void startMapNode(final NodeIdentifier name, final int childSizeHint) throws IOException {
LOG.trace("Starting a new map node");
- startNode(name, NodeTypes.MAP_NODE);
+ startNode(name, LithiumNode.MAP_NODE);
}
@Override
public final void startMapEntryNode(final NodeIdentifierWithPredicates identifier, final int childSizeHint)
throws IOException {
LOG.trace("Starting a new map entry node");
- startNode(identifier, NodeTypes.MAP_ENTRY_NODE);
+ startNode(identifier, LithiumNode.MAP_ENTRY_NODE);
writeKeyValueMap(identifier.entrySet());
}
@Override
public final void startOrderedMapNode(final NodeIdentifier name, final int childSizeHint) throws IOException {
LOG.trace("Starting a new ordered map node");
- startNode(name, NodeTypes.ORDERED_MAP_NODE);
+ startNode(name, LithiumNode.ORDERED_MAP_NODE);
}
@Override
public final void startChoiceNode(final NodeIdentifier name, final int childSizeHint) throws IOException {
LOG.trace("Starting a new choice node");
- startNode(name, NodeTypes.CHOICE_NODE);
+ startNode(name, LithiumNode.CHOICE_NODE);
}
@Override
requireNonNull(identifier, "Node identifier should not be null");
LOG.trace("Starting a new augmentation node");
- output.writeByte(NodeTypes.AUGMENTATION_NODE);
+ output.writeByte(LithiumNode.AUGMENTATION_NODE);
writeAugmentationIdentifier(identifier);
}
@Override
public final void startAnyxmlNode(final NodeIdentifier name) throws IOException {
LOG.trace("Starting any xml node");
- startNode(name, NodeTypes.ANY_XML_NODE);
+ startNode(name, LithiumNode.ANY_XML_NODE);
inSimple = true;
}
LOG.trace("Ending the node");
if (!inSimple) {
lastLeafSetQName = null;
- output.writeByte(NodeTypes.END_NODE);
+ output.writeByte(LithiumNode.END_NODE);
}
inSimple = false;
}
@SuppressFBWarnings(value = "BC_UNCONFIRMED_CAST",
justification = "The casts in the switch clauses are indirectly confirmed via the determination of 'type'.")
final void writePathArgumentInternal(final PathArgument pathArgument) throws IOException {
- final byte type = PathArgumentTypes.getSerializablePathArgumentType(pathArgument);
+ final byte type = LithiumPathArgument.getSerializablePathArgumentType(pathArgument);
output.writeByte(type);
switch (type) {
- case PathArgumentTypes.NODE_IDENTIFIER:
+ case LithiumPathArgument.NODE_IDENTIFIER:
NodeIdentifier nodeIdentifier = (NodeIdentifier) pathArgument;
writeQNameInternal(nodeIdentifier.getNodeType());
break;
- case PathArgumentTypes.NODE_IDENTIFIER_WITH_PREDICATES:
+ case LithiumPathArgument.NODE_IDENTIFIER_WITH_PREDICATES:
NodeIdentifierWithPredicates nodeIdentifierWithPredicates =
(NodeIdentifierWithPredicates) pathArgument;
writeQNameInternal(nodeIdentifierWithPredicates.getNodeType());
writeKeyValueMap(nodeIdentifierWithPredicates.entrySet());
break;
- case PathArgumentTypes.NODE_IDENTIFIER_WITH_VALUE:
+ case LithiumPathArgument.NODE_IDENTIFIER_WITH_VALUE:
NodeWithValue<?> nodeWithValue = (NodeWithValue<?>) pathArgument;
writeQNameInternal(nodeWithValue.getNodeType());
writeObject(nodeWithValue.getValue());
break;
- case PathArgumentTypes.AUGMENTATION_IDENTIFIER:
+ case LithiumPathArgument.AUGMENTATION_IDENTIFIER:
// No Qname in augmentation identifier
writeAugmentationIdentifier((AugmentationIdentifier) pathArgument);
break;
if (revision.isPresent()) {
writeString(revision.get().toString());
} else {
- writeByte(TokenTypes.IS_NULL_VALUE);
+ writeByte(LithiumTokens.IS_NULL_VALUE);
}
}
output.writeByte(type);
switch (type) {
- case ValueTypes.BOOL_TYPE:
+ case LithiumValue.BOOL_TYPE:
output.writeBoolean((Boolean) value);
break;
- case ValueTypes.QNAME_TYPE:
+ case LithiumValue.QNAME_TYPE:
writeQNameInternal((QName) value);
break;
- case ValueTypes.INT_TYPE:
+ case LithiumValue.INT_TYPE:
output.writeInt((Integer) value);
break;
- case ValueTypes.BYTE_TYPE:
+ case LithiumValue.BYTE_TYPE:
output.writeByte((Byte) value);
break;
- case ValueTypes.LONG_TYPE:
+ case LithiumValue.LONG_TYPE:
output.writeLong((Long) value);
break;
- case ValueTypes.SHORT_TYPE:
+ case LithiumValue.SHORT_TYPE:
output.writeShort((Short) value);
break;
- case ValueTypes.BITS_TYPE:
+ case LithiumValue.BITS_TYPE:
writeObjSet((Set<?>) value);
break;
- case ValueTypes.BINARY_TYPE:
+ case LithiumValue.BINARY_TYPE:
byte[] bytes = (byte[]) value;
output.writeInt(bytes.length);
output.write(bytes);
break;
- case ValueTypes.YANG_IDENTIFIER_TYPE:
+ case LithiumValue.YANG_IDENTIFIER_TYPE:
writeYangInstanceIdentifierInternal((YangInstanceIdentifier) value);
break;
- case ValueTypes.EMPTY_TYPE:
+ case LithiumValue.EMPTY_TYPE:
break;
- case ValueTypes.STRING_BYTES_TYPE:
+ case LithiumValue.STRING_BYTES_TYPE:
final byte[] valueBytes = value.toString().getBytes(StandardCharsets.UTF_8);
output.writeInt(valueBytes.length);
output.write(valueBytes);
final Integer value = stringCodeMap.get(verifyNotNull(string));
if (value == null) {
stringCodeMap.put(string, stringCodeMap.size());
- writeByte(TokenTypes.IS_STRING_VALUE);
+ writeByte(LithiumTokens.IS_STRING_VALUE);
writeUTF(string);
} else {
- writeByte(TokenTypes.IS_CODE_VALUE);
+ writeByte(LithiumTokens.IS_CODE_VALUE);
writeInt(value);
}
}
static final byte getSerializableType(final Object node) {
final Byte type = KNOWN_TYPES.get(requireNonNull(node).getClass());
if (type != null) {
- if (type == ValueTypes.STRING_TYPE
- && ((String) node).length() >= ValueTypes.STRING_BYTES_LENGTH_THRESHOLD) {
- return ValueTypes.STRING_BYTES_TYPE;
+ if (type == LithiumValue.STRING_TYPE
+ && ((String) node).length() >= LithiumValue.STRING_BYTES_LENGTH_THRESHOLD) {
+ return LithiumValue.STRING_BYTES_TYPE;
}
return type;
}
if (node instanceof Set) {
- return ValueTypes.BITS_TYPE;
+ return LithiumValue.BITS_TYPE;
}
if (node instanceof YangInstanceIdentifier) {
- return ValueTypes.YANG_IDENTIFIER_TYPE;
+ return LithiumValue.YANG_IDENTIFIER_TYPE;
}
throw new IllegalArgumentException("Unknown value type " + node.getClass().getSimpleName());