Speed up toString() for XML elements
[yangtools.git] / yang / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / codec / xml / XmlUtils.java
index dbdb6ff1b72909c4485bebdc11d1079f2d390ac7..d3acbe64400e2fe4192722147aa39426f6b7ac12 100644 (file)
@@ -7,56 +7,35 @@
  */
 package org.opendaylight.yangtools.yang.data.impl.codec.xml;
 
-import java.util.Map;
-
-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 javax.annotation.Nonnull;
+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<Object, ? extends TypeDefinition<?>> codecFor(final TypeDefinition<?> baseType) {
+            return TypeDefinitionAwareCodec.from(baseType);
+        }
+    };
 
     private XmlUtils() {
-
+        throw new UnsupportedOperationException();
     }
 
-    public static TypeDefinition<?> resolveBaseTypeFrom(final TypeDefinition<?> type) {
+    /**
+     * @deprecated This utility method is no longer needed: check type identity directly
+     */
+    @Deprecated
+    public static TypeDefinition<?> resolveBaseTypeFrom(final @Nonnull TypeDefinition<?> type) {
         TypeDefinition<?> superType = type;
         while (superType.getBaseType() != null) {
             superType = superType.getBaseType();
         }
         return superType;
     }
-
-    static String encodeIdentifier(final RandomPrefix prefixes, final InstanceIdentifier id) {
-        StringBuilder textContent = new StringBuilder();
-        for (PathArgument pathArgument : id.getPathArguments()) {
-            textContent.append('/');
-            textContent.append(prefixes.encodeQName(pathArgument.getNodeType()));
-            if (pathArgument instanceof NodeIdentifierWithPredicates) {
-                Map<QName, Object> predicates = ((NodeIdentifierWithPredicates) pathArgument).getKeyValues();
-
-                for (QName keyValue : predicates.keySet()) {
-                    String predicateValue = String.valueOf(predicates.get(keyValue));
-                    textContent.append('[');
-                    textContent.append(prefixes.encodeQName(keyValue));
-                    textContent.append("='");
-                    textContent.append(predicateValue);
-                    textContent.append("']");
-                }
-            } else if (pathArgument instanceof NodeWithValue) {
-                textContent.append("[.='");
-                textContent.append(((NodeWithValue) pathArgument).getValue());
-                textContent.append("']");
-            }
-        }
-
-        return textContent.toString();
-    }
 }