2 * Copyright (c) 2019 PANTHEON.tech, s.r.o. 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.mdsal.binding.dom.codec.impl;
10 import static com.google.common.base.Verify.verify;
12 import javax.xml.transform.dom.DOMSource;
13 import org.opendaylight.mdsal.binding.loader.BindingClassLoader;
14 import org.opendaylight.yangtools.yang.binding.OpaqueData;
15 import org.opendaylight.yangtools.yang.binding.OpaqueObject;
16 import org.opendaylight.yangtools.yang.data.api.schema.AnyxmlNode;
17 import org.opendaylight.yangtools.yang.data.api.schema.DOMSourceAnyxmlNode;
18 import org.opendaylight.yangtools.yang.data.api.schema.ForeignDataNode;
19 import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
20 import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode;
22 final class AnyxmlCodecContext<T extends OpaqueObject<T>> extends AbstractOpaqueCodecContext<T> {
23 AnyxmlCodecContext(final AnyxmlSchemaNode schema, final String getterName, final Class<T> bindingClass,
24 final BindingClassLoader loader) {
25 super(schema, getterName, bindingClass, loader);
29 AnyxmlNode<?> serializedData(final OpaqueData<?> opaqueData) {
30 final var model = opaqueData.getObjectModel();
31 verify(DOMSource.class.isAssignableFrom(model), "Cannot just yet support object model %s", model);
32 return ImmutableNodes.newAnyxmlBuilder(DOMSource.class)
33 .withNodeIdentifier(getDomPathArgument())
34 .withValue((DOMSource) opaqueData.getData())
39 T deserialize(final ForeignDataNode<?> foreignData) {
40 // Streaming cannot support anything but DOMSource-based AnyxmlNodes.
41 verify(foreignData instanceof DOMSourceAnyxmlNode, "Variable node %s not supported yet", foreignData);
42 return super.deserialize(foreignData);