X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-data-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fimpl%2Fcodec%2Fxml%2FXmlUtils.java;h=cfb8fc0897cd5b2f620f940bd8358b1ed94a2524;hb=052bd27d118a2addb3eae2253515890369a60182;hp=052c250099ebae4a69857d70eb6c174aaf6ee472;hpb=3ceb510f940578f729a4ca1aea84add9b61d633b;p=yangtools.git diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/XmlUtils.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/XmlUtils.java index 052c250099..cfb8fc0897 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/XmlUtils.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/XmlUtils.java @@ -8,24 +8,28 @@ package org.opendaylight.yangtools.yang.data.impl.codec.xml; import java.util.Map; - import javax.annotation.Nonnull; - import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeIdentifierWithPredicates; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeWithValue; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.PathArgument; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; +import org.opendaylight.yangtools.yang.data.impl.codec.TypeDefinitionAwareCodec; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; /** * Common XML-related utility methods, which are not specific to a particular * JAXP API. */ -final class XmlUtils { +public final class XmlUtils { + public static final XmlCodecProvider DEFAULT_XML_CODEC_PROVIDER = new XmlCodecProvider() { + @Override + public TypeDefinitionAwareCodec> codecFor(final TypeDefinition baseType) { + return TypeDefinitionAwareCodec.from(baseType); + } + }; private XmlUtils() { - } public static TypeDefinition resolveBaseTypeFrom(final @Nonnull TypeDefinition type) { @@ -36,20 +40,32 @@ final class XmlUtils { return superType; } - static String encodeIdentifier(final RandomPrefix prefixes, final InstanceIdentifier id) { + /** + * + * @deprecated Use {@link RandomPrefixInstanceIdentifierSerializer} instead. + */ + @Deprecated + static String encodeIdentifier(final RandomPrefix prefixes, final YangInstanceIdentifier id) { StringBuilder textContent = new StringBuilder(); for (PathArgument pathArgument : id.getPathArguments()) { textContent.append('/'); - textContent.append(prefixes.encodeQName(pathArgument.getNodeType())); + + final QName nt = pathArgument.getNodeType(); + textContent.append(prefixes.encodePrefix(nt.getNamespace())); + textContent.append(':'); + textContent.append(nt.getLocalName()); + if (pathArgument instanceof NodeIdentifierWithPredicates) { Map predicates = ((NodeIdentifierWithPredicates) pathArgument).getKeyValues(); - for (QName keyValue : predicates.keySet()) { - String predicateValue = String.valueOf(predicates.get(keyValue)); + for (Map.Entry entry : predicates.entrySet()) { + final QName key = entry.getKey(); textContent.append('['); - textContent.append(prefixes.encodeQName(keyValue)); + textContent.append(prefixes.encodePrefix(key.getNamespace())); + textContent.append(':'); + textContent.append(key.getLocalName()); textContent.append("='"); - textContent.append(predicateValue); + textContent.append(String.valueOf(entry.getValue())); textContent.append("']"); } } else if (pathArgument instanceof NodeWithValue) {