--- /dev/null
+/*
+ * Copyright (c) 2018 ZTE, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.mdsal.binding.javav2.dom.codec.impl;
+
+import com.google.common.annotations.Beta;
+import com.google.common.base.Preconditions;
+import javax.xml.transform.dom.DOMSource;
+import org.opendaylight.mdsal.binding.javav2.runtime.context.BindingRuntimeContext;
+import org.opendaylight.yangtools.concepts.Codec;
+import org.w3c.dom.Document;
+
+/**
+ * Codec for serialize/deserialize anyxml.
+ */
+@Beta
+public final class AnyxmlCodec implements Codec<DOMSource, Document> {
+
+ private final BindingRuntimeContext context;
+
+ /**
+ * Prepared binding runtime context for anyxml codec.
+ *
+ * @param context
+ * - binding runtime context
+ */
+ public AnyxmlCodec(final BindingRuntimeContext context) {
+ this.context = Preconditions.checkNotNull(context);
+ }
+
+ @Override
+ public Document deserialize(final DOMSource input) {
+ Preconditions.checkArgument(input != null, "Input must not be null.");
+ return (Document) input.getNode();
+ }
+
+ @Override
+ public DOMSource serialize(final Document input) {
+ Preconditions.checkArgument(input != null, "Input must not be null.");
+ return new DOMSource(input);
+ }
+}
import java.util.concurrent.Callable;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import javax.xml.transform.dom.DOMSource;
import org.opendaylight.mdsal.binding.javav2.dom.codec.api.BindingTreeCodec;
import org.opendaylight.mdsal.binding.javav2.dom.codec.api.BindingTreeNodeCodec;
+import org.opendaylight.mdsal.binding.javav2.dom.codec.impl.AnyxmlCodec;
import org.opendaylight.mdsal.binding.javav2.dom.codec.impl.BindingNormalizedNodeCodecRegistry;
import org.opendaylight.mdsal.binding.javav2.dom.codec.impl.IdentifiableItemCodec;
import org.opendaylight.mdsal.binding.javav2.dom.codec.impl.IdentityCodec;
import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.w3c.dom.Document;
/**
* Binding codec context for holding runtime part and codecs.
private final Codec<YangInstanceIdentifier, InstanceIdentifier<?>> instanceIdentifierCodec;
private final Codec<QName, Class<?>> identityCodec;
+ private final Codec<DOMSource, Document> anyxmlCodec;
private final BindingNormalizedNodeCodecRegistry registry;
private final BindingRuntimeContext context;
private final SchemaRootCodecContext<?> root;
this.context = Preconditions.checkNotNull(context, "Binding Runtime Context is required.");
this.root = SchemaRootCodecContext.create(this);
this.identityCodec = new IdentityCodec(context);
+ this.anyxmlCodec = new AnyxmlCodec(context);
this.instanceIdentifierCodec = new InstanceIdentifierCodec(this);
this.registry = Preconditions.checkNotNull(registry);
}
return identityCodec;
}
+ /**
+ * Get anyxml codec.
+ *
+ * @return anyxml codec
+ */
+ public Codec<DOMSource, Document> getAnyxmlCodec() {
+ return anyxmlCodec;
+ }
+
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public TreeNodeSerializer getEventStreamSerializer(final Class<?> type) {