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;
} else {
ret = doc.createElementNS(null, dataType.getLocalName());
}
- if (data instanceof AttributesContainer) {
+ if (data instanceof AttributesContainer && ((AttributesContainer) data).getAttributes() != null) {
for (Entry<QName, String> attribute : ((AttributesContainer) data).getAttributes().entrySet()) {
ret.setAttributeNS(attribute.getKey().getNamespace().toString(), attribute.getKey().getLocalName(),
attribute.getValue());
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);
}
}
}
XmlCodecProvider codecProvider) {
TypeDefinitionAwareCodec<Object, ? extends TypeDefinition<?>> codec = codecProvider.codecFor(schema.getType());
String text = xmlElement.getTextContent();
- Object value = codec.deserialize(text);
+ Object value;
+ if (codec != null) {
+ value = codec.deserialize(text);
+
+ } else {
+ value = xmlElement.getTextContent();
+ }
return new SimpleNodeTOImpl<Object>(schema.getQName(), null, value);
}
XmlCodecProvider codecProvider) {
TypeDefinitionAwareCodec<Object, ? extends TypeDefinition<?>> codec = codecProvider.codecFor(schema.getType());
String text = xmlElement.getTextContent();
- Object value = codec.deserialize(text);
+ Object value;
+ if (codec != null) {
+ value = codec.deserialize(text);
+
+ } else {
+ value = xmlElement.getTextContent();
+ }
return new SimpleNodeTOImpl<Object>(schema.getQName(), null, value);
}