import org.opendaylight.yangtools.yang.data.impl.SimpleNodeTOImpl;
import org.opendaylight.yangtools.yang.data.impl.codec.TypeDefinitionAwareCodec;
import org.opendaylight.yangtools.yang.data.impl.util.CompositeNodeBuilder;
-import org.opendaylight.yangtools.yang.model.api.*;
+import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
+import org.opendaylight.yangtools.yang.model.api.ChoiceNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
+import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.SchemaNode;
+import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
element.setAttribute("xmlns:" + prefix, value.getNamespace().toString());
element.setTextContent(prefix + ":" + value.getLocalName());
} else {
+ Object value = node.getValue();
logger.debug("Value of {}:{} is not instance of QName but is {}", baseType.getQName().getNamespace(), //
baseType.getQName().getLocalName(), //
- node.getValue().getClass());
- element.setTextContent(String.valueOf(node.getValue()));
+ node != null ? value.getClass() : "null");
+ if (value != null) {
+ element.setTextContent(String.valueOf(value));
+ }
}
} else {
if (node.getValue() != null) {
- try {
- String value = codecProvider.codecFor(baseType).serialize(node.getValue());
- element.setTextContent(value);
- } catch (ClassCastException e) {
+ final TypeDefinitionAwareCodec<Object, ?> codec = codecProvider.codecFor(baseType);
+ if (codec != null) {
+ try {
+ final String text = codec.serialize(node.getValue());
+ element.setTextContent(text);
+ } catch (ClassCastException e) {
+ logger.error("Provided node did not have type required by mapping. Using stream instead.", e);
+ element.setTextContent(String.valueOf(node.getValue()));
+ }
+ } else {
+ logger.error("Failed to find codec for {}, falling back to using stream", baseType);
element.setTextContent(String.valueOf(node.getValue()));
- logger.error("Provided node did not have type required by mapping. Using stream instead. {}", e);
}
}
}