Use YANG-derived prefixes
[yangtools.git] / codec / yang-data-codec-xml / src / main / java / org / opendaylight / yangtools / yang / data / codec / xml / InstanceIdentifierXmlCodec.java
index 72d5c7fce3e22b8c0077eb704361fd9665ee5780..f803f5483a233920df2eae0942607e1310d08b0f 100644 (file)
@@ -19,9 +19,11 @@ import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
 final class InstanceIdentifierXmlCodec implements XmlCodec<YangInstanceIdentifier> {
     private final @NonNull XmlCodecFactory codecFactory;
     private final DataSchemaContextTree dataContextTree;
+    private final PreferredPrefixes pref;
 
-    InstanceIdentifierXmlCodec(final XmlCodecFactory codecFactory) {
+    InstanceIdentifierXmlCodec(final XmlCodecFactory codecFactory, final PreferredPrefixes pref) {
         this.codecFactory = requireNonNull(codecFactory);
+        this.pref = requireNonNull(pref);
         dataContextTree = DataSchemaContextTree.from(codecFactory.getEffectiveModelContext());
     }
 
@@ -38,7 +40,7 @@ final class InstanceIdentifierXmlCodec implements XmlCodec<YangInstanceIdentifie
 
     @Override
     public void writeValue(final XMLStreamWriter ctx, final YangInstanceIdentifier value) throws XMLStreamException {
-        final var serializer = new InstanceIdentifierSerializer(dataContextTree, ctx.getNamespaceContext());
+        final var serializer = new InstanceIdentifierSerializer(dataContextTree, pref, ctx.getNamespaceContext());
 
         final String str;
         try {
@@ -46,7 +48,7 @@ final class InstanceIdentifierXmlCodec implements XmlCodec<YangInstanceIdentifie
         } catch (IllegalArgumentException e) {
             throw new XMLStreamException("Failed to encode instance-identifier", e);
         }
-        for (var entry : serializer.getPrefixes()) {
+        for (var entry : serializer.emittedPrefixes()) {
             ctx.writeNamespace(entry.getValue(), entry.getKey().toString());
         }
         ctx.writeCharacters(str);