- AugmentationIdentifier augmentationIdentifier = (AugmentationIdentifier) pathArgument;
-
- // No Qname in augmentation identifier
- writeQNameSet(augmentationIdentifier.getPossibleChildNames());
- break;
- default :
- throw new IllegalStateException("Unknown node identifier type is found : " + pathArgument.getClass().toString() );
- }
- }
-
- private void writeKeyValueMap(final Map<QName, Object> keyValueMap) throws IOException {
- if (keyValueMap != null && !keyValueMap.isEmpty()) {
- output.writeInt(keyValueMap.size());
-
- for (QName qName : keyValueMap.keySet()) {
- writeQName(qName);
- writeObject(keyValueMap.get(qName));
- }
- } else {
- output.writeInt(0);
- }
- }
-
- private void writeQNameSet(final Set<QName> children) throws IOException {
- // Write each child's qname separately, if list is empty send count as 0
- if (children != null && !children.isEmpty()) {
- output.writeInt(children.size());
- for (QName qName : children) {
- writeQName(qName);
- }
- } else {
- LOG.debug("augmentation node does not have any child");
- output.writeInt(0);
- }
- }
-
- private void writeObject(final Object value) throws IOException {
-
- byte type = ValueTypes.getSerializableType(value);
- // Write object type first
- output.writeByte(type);
-
- switch (type) {
- case ValueTypes.BOOL_TYPE:
- output.writeBoolean((Boolean) value);
- break;
- case ValueTypes.QNAME_TYPE:
- writeQName((QName) value);
- break;
- case ValueTypes.INT_TYPE:
- output.writeInt((Integer) value);
- break;
- case ValueTypes.BYTE_TYPE:
- output.writeByte((Byte) value);
- break;
- case ValueTypes.LONG_TYPE:
- output.writeLong((Long) value);
- break;
- case ValueTypes.SHORT_TYPE:
- output.writeShort((Short) value);
- break;
- case ValueTypes.BITS_TYPE:
- writeObjSet((Set<?>) value);
- break;
- case ValueTypes.BINARY_TYPE:
- byte[] bytes = (byte[]) value;
- output.writeInt(bytes.length);
- output.write(bytes);
- break;
- case ValueTypes.YANG_IDENTIFIER_TYPE:
- writeYangInstanceIdentifierInternal((YangInstanceIdentifier) value);
- break;
- case ValueTypes.NULL_TYPE :
- break;
- case ValueTypes.STRING_BYTES_TYPE:
- final byte[] valueBytes = value.toString().getBytes(StandardCharsets.UTF_8);
- output.writeInt(valueBytes.length);
- output.write(valueBytes);
- break;
- default:
- output.writeUTF(value.toString());
- break;
- }
- }