X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-dom-codec%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fbinding%2Fdata%2Fcodec%2Fimpl%2FLeafNodeCodecContext.java;fp=binding%2Fmdsal-binding-dom-codec%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fbinding%2Fdata%2Fcodec%2Fimpl%2FLeafNodeCodecContext.java;h=40c706e354a5b0c5c226dd4cd46dc90f7d329c0e;hb=23affad7068d382b58f93a67042c983868c6701d;hp=7bc317d7162df2f7381ffea033d36e462c46f506;hpb=57bb7dc4ef48870c89bf824a868fc566c3790879;p=mdsal.git diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/LeafNodeCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/LeafNodeCodecContext.java index 7bc317d716..40c706e354 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/LeafNodeCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/LeafNodeCodecContext.java @@ -10,6 +10,8 @@ package org.opendaylight.yangtools.binding.data.codec.impl; import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collection; @@ -21,7 +23,6 @@ import org.opendaylight.yangtools.concepts.Codec; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument; -import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode; @@ -30,9 +31,9 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.impl.codec.TypeDefinitionAwareCodec; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; +import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition; final class LeafNodeCodecContext extends NodeCodecContext implements NodeContextSupplier { @@ -56,21 +57,31 @@ final class LeafNodeCodecContext extends NodeCodecContext< Object defaultValue = ((LeafSchemaNode) schema).getDefault(); TypeDefinition type = ((LeafSchemaNode) schema).getType(); if (defaultValue != null) { - if (type instanceof IdentityrefTypeDefinition) { - return qnameDomValueFromString(codec, schema, defaultValue); - } return domValueFromString(codec, type, defaultValue); - } else { + } + else { while (type.getBaseType() != null && type.getDefaultValue() == null) { type = type.getBaseType(); } defaultValue = type.getDefaultValue(); if (defaultValue != null) { - if (type instanceof IdentityrefTypeDefinition) { - return qnameDomValueFromString(codec, schema, defaultValue); + if (defaultValue instanceof Boolean) { + return codec.deserialize(defaultValue); } + if (defaultValue instanceof IdentitySchemaNode) { + defaultValue = ((IdentitySchemaNode) defaultValue).getQName(); + return codec.deserialize(defaultValue); + } + + if (defaultValue instanceof ImmutableList) { + return codec.deserialize(ImmutableSet.copyOf((ImmutableList) defaultValue)); + } + + if (defaultValue instanceof List) { + return codec.deserialize(defaultValue); + } return domValueFromString(codec, type, defaultValue); } } @@ -78,12 +89,6 @@ final class LeafNodeCodecContext extends NodeCodecContext< return null; } - private static Object qnameDomValueFromString(final Codec codec, final DataSchemaNode schema, - final Object defaultValue) { - Object qname = QName.create(schema.getQName(), (String) defaultValue); - return codec.deserialize(qname); - } - private static Object domValueFromString(final Codec codec, final TypeDefinition type, Object defaultValue) { TypeDefinitionAwareCodec typeDefAwareCodec = TypeDefinitionAwareCodec.from(type);