2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.yangtools.yang.data.impl.codec.xml;
11 import java.util.Map.Entry;
12 import org.opendaylight.yangtools.yang.common.QName;
13 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
14 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
15 import org.w3c.dom.Element;
17 public final class InstanceIdentifierForXmlCodec {
18 private InstanceIdentifierForXmlCodec() {
19 throw new UnsupportedOperationException("Utility class");
22 public static YangInstanceIdentifier deserialize(final Element element, final SchemaContext schemaContext) {
23 final ElementInstanceIdentifierParser codec = new ElementInstanceIdentifierParser(schemaContext, element);
24 return codec.deserialize(element.getTextContent().trim());
27 public static Element serialize(final YangInstanceIdentifier id, final Element element, final SchemaContext context) {
28 final RandomPrefixInstanceIdentifierSerializer codec = new RandomPrefixInstanceIdentifierSerializer(context);
29 final String str = codec.serialize(id);
31 for (Entry<URI, String> e : codec.getPrefixes()) {
32 element.setAttribute("xmlns:" + e.getValue(), e.getKey().toString());
34 element.setTextContent(str);
38 private static String getIdAndPrefixAsStr(final String pathPart) {
39 int predicateStartIndex = pathPart.indexOf('[');
40 return predicateStartIndex == -1 ? pathPart : pathPart.substring(0, predicateStartIndex);
43 public static QName toIdentity(final String xPathArgument, final Element element, final SchemaContext schemaContext) {
44 final ElementIdentityrefParser codec = new ElementIdentityrefParser(schemaContext, element);
45 return codec.deserialize(getIdAndPrefixAsStr(xPathArgument).trim());